# NCS CTF 2025
**Nama Tim: SatashiLab**
**Ketua: Muhammad Sayyid Tsabit Anfaresi**
---
### Soal 1 (easy)
**Judul**
*Seorang tokoh nasional meninggalkan pesan yang disandikan*
**Deskripsi:**
:::info
Seorang tokoh nasional meninggalkan pesan yang disandikan menggunakan metode Vigenère Cipher. Berikut adalah pesan yang ditemukan:
`tcj{mhmgnxuw_kkbrhjsgae}`
Kunci yang digunakan untuk mengenkripsi pesan adalah: Lambang Negara
:::
**Langkah**
Oke, untuk challenge kali ini kita disediakan sebuah pesan dengan enkripsi Vigenère Cipher dengan kunci 'Lambang Negara'
sebelum itu mari kita perhatikan terlebih dahulu bahwa, `Lambang Negara` di sini berarti sebuah `hint` bukan kunci sebenarnya.
Dari eksplorasi informasi umum dugaan saya jatuh kepada:
- `garuda`
- `pancasila`
Kemudian kita membuka [cyberchef](https://cyberchef.org) untuk melakukan dekripsi pesan menggunakan Vigenère Cipher dengan kata kunci `garuda`
**flag ditemukan:** ==ncs{semangat_kebangsaan}==
---
### Soal 2 (easy)
**Judul**
*Looking for something*
**Dekripsi**
:::info
Silahkan Download file berikut :
https://drive.google.com/file/d/19tg1lHIdYFaj9f6jMMLpb4PFxpqQERNr/view?usp=sharing
:::
**Langkah**
Setelah kita mengunduh file yang disediakan kita akan mendapatkan file dengan nama `SoalMem.7zip`.
Dengan melakukan ekstraksi file `.7zip` tadi kita akan menemukan file yang bernama `memdump.mem`.
Pada tahap ini saya mulai berpikir sepertinya ini adalah soal *digital forensics* maka yang perlu saya lakukan terlebih dahulu adalah menjalankan perintah `file`
```bash!
file memdump.mem
##Output
memdump.mem: data
```
hmm okeh... sepertinya hanya kumpulan data saja.
Dengan sedikit *googling*, saya menemukan penjelasan mengenai file ekstension `.mem` ini. Ini adalah file memory RAM 😨😨!
Waw sepertinya ini hal baru bagi saya. jadi saya melakukan eksplorasi lagi bagaimana cara menganalisis file ini.
Dan pencarian saya berakhir dengan tools bernama ==Volatility==. Mulailah kita ekskusi file ini untuk dianalisis.
>[!Important]
>Volatility tersedia dalam bentuk volatility2 dan volatility3 di sini saya menggunakan volatility3. untuk lebih lanjut mengenai volatility bisa baca referensi [blog](https://https://blog.onfvp.com/post/volatility-cheatsheet/) ini untuk mengetahui perbedaan antara volatility2 dan volatility3
Hal pertama yang kita lakukan adalah mencari info terkait file
```bash!
python3 vol.py -f ~/sharedFolder/memdump.mem windows.info
```
menjalankan perintah di atas kita mendapatkan bahwa ini adalah memory dump RAM dari OS Windows.
```
Volatility 3 Framework 2.27.0
Progress: 100.00 PDB scanning finished
Variable Value
Kernel Base 0xf800b8c00000
DTB 0x1ae000
Symbols file:///home/user/volatility3/volatility3/symbols/windows/ntkrnlmp.pdb/E6426A07C26E66F8EB8594621A7B273B-1.json.xz
Is64Bit True
IsPAE False
layer_name 0 WindowsIntel32e
memory_layer 1 FileLayer
KdVersionBlock 0xf800b9a0a860
Major/Minor 15.26100
MachineType 34404
KeNumberProcessors 12
SystemTime 2025-09-18 13:46:32+00:00
NtSystemRoot C:\WINDOWS
NtProductType NtProductWinNt
NtMajorVersion 10
NtMinorVersion 0
PE MajorOperatingSystemVersion 10
PE MinorOperatingSystemVersion 0
PE Machine 34404
PE TimeDateStamp Fri Mar 9 22:53:21 2085
```
setelah itu kita akan melihat list proses yang telah dijalankan di file tsb dengan menjalankan perintah
```bash!
python3 vol.py -f ~/sharedFolder/memdump.mem windows.pslist
```
dan taraa!! ini dia hasilnya
```
PID PPID ImageFileName Offset(V) Threads Handles SessionId Wow64 CreateTime ExitTime File output
4 0 System 0xc1889f4d3040 272 - N/A False 2025-09-18 13:33:13.000000 UTC N/A Disabled
188 4 Secure System 0xc1889f58e080 0 - N/A False 2025-09-18 13:33:10.000000 UTC N/A Disabled
232 4 Registry 0xc1889f5aa080 4 - N/A False 2025-09-18 13:33:10.000000 UTC N/A Disabled
<---SNIP!--->
7328 8012 powershell.exe 0xc188b3d4c080 11 - 1 False 2025-09-18 13:33:54.000000 UTC N/A Disabled
<---SNIP!--->
8800 8012 FTK Imager.exe 0xc188b95b90c0 22 - 1 False 2025-09-18 13:46:19.000000 UTC N/A Disabled
10356 1080 svchost.exe 0xc188b746f080 26 - 0 False 2025-09-18 13:46:41.000000 UTC N/A Disabled
12464 1080 svchost.exe 0xc188b864a080 12 - 0 False 2025-09-18 13:46:41.000000 UTC N/A Disabled
```
di sini saya tertarik dengan proses ==powershell.exe== dengan ==PID 7328== karena ada kemungkinan penggunaan perintah powershell.
lalu kita jalankah analisis lanjutan mengenai proses tersebut dengan perintah
```
python3 vol.py -f ~/sharedFolder/memdump.mem windows.dlllist --pid 7328
```
oke dari hasil output perintah di atas kita bisa menemukan beberapa hal menarik seperti dijalankannya `amsi.dll` yang menandakan ada aktivitas *Anti-Malware Interface* yang artinya ada kemungkinan sebuah Malware menjalankan sesuatu.
kita lakukan analisis lanjutan dengan perintah
```
python3 vol.py -f ~/sharedFolder/memdump.mem windows.malfind --pid 7328
```
untuk mencari apakah ada malware yang terdeteksi di memory dan benar saja ada *footprinting* yang menandakan malware melakukan read and write di proses `powershell.exe`
```
PID Process Start VPN End VPN Tag Protection CommitCharge PrivateMemory File output Notes Hexdump Disasm
/home/user/volatility3/volatility3/framework/deprecation.py:105: FutureWarning: This plugin (volatility3.plugins.windows.malfind.Malfind) has been renamed and will be removed in the first release after 2026-06-07. Please ensure all method calls to this plugin are replaced with calls to volatility3.plugins.windows.malware.malfind.Malfind
warnings.warn(
7328 powershell.exe 0x2296eaf0000 0x2296eb51fff VadS PAGE_EXECUTE_READWRITE 2 1 Disabled N/A
00 00 00 00 00 00 00 00 90 78 6d 6e 29 02 00 00 .........xmn)...
90 78 6d 6e 29 02 00 00 00 00 6d 6e 29 02 00 00 .xmn).....mn)...
80 10 af 6e 29 02 00 00 00 20 af 6e 29 02 00 00 ...n).... .n)...
00 20 b5 6e 29 02 00 00 01 00 00 00 00 00 00 00 . .n)........... 00 00 00 00 00 00 00 00 90 78 6d 6e 29 02 00 00 90 78 6d 6e 29 02 00 00 00 00 6d 6e 29 02 00 00 80 10 af 6e 29 02 00 00 00 20 af 6e 29 02 00 00 00 20 b5 6e 29 02 00 00 01 00 00 00 00 00 00 00
7328 powershell.exe 0x7ff5b6b40000 0x7ff5b6bdffff VadS PAGE_EXECUTE_READWRITE 2 1 Disabled N/A
d8 ff ff ff ff ff ff ff 08 00 00 00 00 00 00 00 ................
01 00 00 00 00 00 00 00 00 02 0e 03 38 00 00 00 ............8...
68 01 04 08 0c 00 00 00 b0 0b f3 8e fa 7f 00 00 h...............
00 10 ee 8e fa 7f 00 00 08 53 05 8f fa 7f 00 00 .........S...... d8 ff ff ff ff ff ff ff 08 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 02 0e 03 38 00 00 00 68 01 04 08 0c 00 00 00 b0 0b f3 8e fa 7f 00 00 00 10 ee 8e fa 7f 00 00 08 53 05 8f fa 7f 00 00
7328 powershell.exe 0x7ff5b6b30000 0x7ff5b6b3ffff VadS PAGE_EXECUTE_READWRITE 1 1 Disabled N/A
00 00 00 00 00 00 00 00 78 0d 00 00 00 00 00 00 ........x.......
0c 00 00 00 49 c7 c2 00 00 00 00 48 b8 10 ec eb ....I......H....
90 fa 7f 00 00 ff e0 49 c7 c2 01 00 00 00 48 b8 .......I......H.
10 ec eb 90 fa 7f 00 00 ff e0 49 c7 c2 02 00 00 ..........I..... 00 00 00 00 00 00 00 00 78 0d 00 00 00 00 00 00 0c 00 00 00 49 c7 c2 00 00 00 00 48 b8 10 ec eb 90 fa 7f 00 00 ff e0 49 c7 c2 01 00 00 00 48 b8 10 ec eb 90 fa 7f 00 00 ff e0 49 c7 c2 02 00 00
```
mari kita dumping memory hasil temuan kita dengan cara
```
python3 vol.py -f ~/sharedFolder/memdump.mem -o ~/sharedFolder/7328_memdump/ windows.memmap --dump --pid 7328
```
setelah itu kita bisa menggunakan perintah `strings` dan `grep` untuk mencari flag nya
```
strings ~/sharedFolder/7328_memdump/pid.7328.dmp | grep "ncs{"
```
**flag ditemukan**: ==ncs{nusantara_memory_2025_real}==
---
### Soal 3 (Easy)
**Judul**
*Jangan Iseng Baca Chat*
**Deskripsi:**
:::info
Aku tertarik untuk melihat chat teman, siapa tau ada flag di sana
file
:::
**Langkah**
Setelah mengunduh file database kita bisa melihat bahwa ini adalah file database SQLite. Oleh karena itu saya mulai membuka DB Browser SQLite.
setelah itu kita bisa melihat di struktur ada dua tabel

kita langsung cus ke bagian messages dan melihat secara lebih detail. di sini tentu saja kita akan mengekstrak messages yang ada di tabel

setelah melakukan dekripsi pesan dengan Base64 kita mendapatkan pesan berikut.

sepertinya masih ada string yang menarik. kita coba untuk memisahkan nya terlebih dahulu.
```
me3JSrECt+rKpxcEWXVuo2FAjDr1NcXtDNqh5VwSVSf47ameaHvH47zmKVBnRKEphw==TtoDPEj54cMmiF1HO011OUmAcMOVU7BkjHXaa9x2p1mrGhMrA2nJhIrFGE/Tu5p01CM9p+11rOTxZbrjCSEDoajyBM45XlURJPcmuiO9OFvuWX6sOagLN7EOxqN9IpqJ5Wk=Uvo6noeBzccc492sEb/p8hjfSc2c8TbgGnxFKfPCYVRJjdxETCcf/Y0=bmNze24wdC10aDFzX2NoQXR9PUDdiclejecRkd94M8cvHp8nsLW569O2im7cbZlh7f8MLbqTaGhoLCExORETDm8tCh0xMy5vc3t1dj9oaGg=+lIPmi6mOreftNpyTSJHVyqVbeKHjfCwM5ZSPNTV7/0yu5IATygHKEtn4CJH9/bxGuD+AAE3NDG6fg==bmNze24wdC10aDFzX2NoQXR9bmNze24wdC10aDFzX2NoQXR9bmNze24wdC10aDFzX2NoQXR9
```
setelah itu kita gunakan Base64 kembali untuk memecahkan pesan terenkripsi ini.
dan ini kita menemukan sesuatu di sini.

hmm... setelah saya input sepertinya `ncs{n0t-this_chAt}` bukanlah flag sebenarnya. sepertinya kita perlu mencari lagi dengan XOR

tapi sepertinya kita harus melakukan brute-forcing terhadapa key di sini. hmm... mari kita coba dengan list HEX terlebih dahulu
dan walaa... kita mendapatkan pada saat di 0x42 sebagai key
**flag ditemukan:** ==ncs{SQL-oH_sql-1974}==