# 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 ![image](https://hackmd.io/_uploads/Bk4VQU2sxx.png) kita langsung cus ke bagian messages dan melihat secara lebih detail. di sini tentu saja kita akan mengekstrak messages yang ada di tabel ![image](https://hackmd.io/_uploads/rJNd7L2see.png) setelah melakukan dekripsi pesan dengan Base64 kita mendapatkan pesan berikut. ![image](https://hackmd.io/_uploads/HkAyVU2sgl.png) 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. ![image](https://hackmd.io/_uploads/S15P4L3iel.png) hmm... setelah saya input sepertinya `ncs{n0t-this_chAt}` bukanlah flag sebenarnya. sepertinya kita perlu mencari lagi dengan XOR ![image](https://hackmd.io/_uploads/BJ9JSI2oxl.png) 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}==