Selamlar, bu yazıda MalwareNinja CTF’inde “Ninja Seviye Ölçme Yerleştirme Sınavı” kategorisinde yayınlanan NSÖYS adlı sorunun çözümünü yazacağım.
Soru yayınlandıktan birkaç dakika sonra flagi alarak fb attık yanlış hatırlamıyorsam soruyu bizimle beraber 2 takım çözmüştü. Harika bir ctf’ti özellikle pyarmor içermeyen bazı sorular çok eğlenceli ve öğreticiydi çözerken öğrendim :D
Göz Gezdirelim
Sorumuz bir exe dosyası halinde içerisinde bir de “Samples” klasörü bulundurarak geldi.
EXE Dosyası Analiz
Dosyayı DIE (Detect It Easy) ile tarattığımızda olduğu bilgisi geliyor.
Daha detaylı analiz için x32dbg üzerinde başlatıp stringlerine bakacağım.
burdan dosyanın aslında pyInstaller ile packlenmiş bir py dosyası olduğunu söyleyebiliriz.
bunun için hemen “pyinstxtractor” kullanacağım.
Şimdi extracted klasörüne gidip “question.pyc” dosyasını uncompyle6 kullanarak pyc to py işlemine sokalım.
ehehehehh pyarmor. Pyarmor unpack için yazılmış harika yazılar var bunları EN ve TR olarak en aşağıda bulabilirsiniz ancak ben mantığını çözemedim yarışma esnasında kullanacağım diğer taktik bana daha kolay geldi açıkçası… Ama mutlaka buna vakit ayıracağım
Çözelim
Pyarmor var. Bunu unpack edemiyorum dolayısıyla runtime string dumplayacağım şimdi buna bakalım. Dosyayı açtığımız zaman bize Samples klasöründe bulunan zararlılar hakkında sorular soruyor ve en sonunda da 10 sorudan kaç doğru yaptığımızı söylüyor eğer 10/10 yapamadıysak flag döndürmüyor.
HxD ‘yi açıp memory modunda Ninja_SBS.exe ‘yi seçiyorum.
Modülüm yüklendikten sonra CTRL+F kombinasyonu ile “You Failed” stringini aratıyorum.
ehehehe You Failed stringinin hemen altında YOU WIN stringini ve flagi görebiliyorum :
“48 49 47 48 5f 53 4b 49 4c 4c 45 44 5f 55 4c 54 49 4d 41 54 45 5f 50 52 4f 5f 4e 49 4e 4a 41 5f 50 4c 55 53”
Hex to String işlemine sokalım
“HIGH_SKILLED_ULTIMATE_PRO_NINJA_PLUS”
flag : malwareninja{HIGH_SKILLED_ULTIMATE_PRO_NINJA_PLUS}
— Unpacking PyArmor
https://anal.school/2020/07/30/Unpacking-pyarmor-Soder-CTF/ https://devilinside.me/blogs/unpacking-pyarmor