Unpacking Trojan

borekaenxd97

Blue Tim Emektar
24 Nis 2020
218
342
Ey Türk Gençliği!

Öncelikle herkese merhabalar ve iyi okumalar. Bugünkü konumda zararlımızın unpacking edilmesi ve unpacking sonrası analiz işlemini gerçekleştireceğiz.



Zararlımızın uzantısının TrIDNET aracıyla verdiği çıktıyı görüntüleyebiliriz. %100 çalıştırılabilir (executable) bir dosya.
wk600ry.jpg

Zararlımızı incelemek üzere DiE’ya atalım:


Şimdi yukarıdaki resimden şöyle bir bilgilendirme sağlamak istiyorum:
Zlib archive ile çıkarımımız şu yönde olmalıdır (sol ayağında ağrı hisseden bir hastanın hangi ayağına öncelik verirsiniz bir doktor olarak ?) --> Python
Aynı zamanda Console64 ise .NET e atıfta bulunur(refer). Console64,console ise Python masaüstü konsol uygulamasına.

Fakat biz yinede sağ ayağına bakıp garantili davranalım. Zararlı yazılımda riskten kaçınma şansımız varsa sonuna kadar kullanalım.
dnSpy ile açmaya çalışalım:
dnSpy bir hata ayıklayıcı ve .NET derleme düzenleyicisidir. Kullanılabilir herhangi bir kaynak kodunuz olmasa bile, derlemeleri düzenlemek ve hatalarını ayıklamak için kullanabilirsiniz.

Bir sonuca varamadık.

Die aracında Image_File_Header kısmındaki görüntülediğimiz isimleri dnSpyda da görüntüleyebiliriz:

Yani araçlar arası bağlantıları kurup, birisinde gözümüzden kaçanı diğerinde kurabiliriz. (Burada paketlenmiş bir zararlı üzerinden ilerlediğimiz için işimize çok yaramadı fakat aklımızda bir yer etmesi iyidir)

wk600ry.jpg

Şimdi .NET üzerinden bir yere varamadık yani dnSpyda

C/C++ Compiler olmadığı için sadece görmeniz açısından gösterdim.

C++ derleyicisi için ne yapabiliriz ? Yardımımıza .NET Reflector yetişiyor.


NOT: .NET Reflector .NET Framework ile oluşturulmuş yazılımlar için bir sınıf tarayıcı, kod çözücü ve statik analiz aracıdır. MSDN (Microsoft Developer Network) Magazine bunu geliştiriciler için On Olması Gereken Yardımcı Programdan birisi olarak adlandırmaktadır.

Assembly gibi bir CLI bileşeninin içeriğini incelemek, gezinmek, aramak, analiz etmek ve göz atmak için kullanılabilir ve ikili bilgileri insan tarafından okunabilir bir forma çevirir. Varsayılan olarak Reflector, CLI derlemelerinin C#, Visual Basic .NET, C++/CLI[3] ve Common Intermediate Language ve F#'a (alfa sürümü) ayrıştırılmasına izin verir. Reflector ayrıca, ara dil yöntemlerinin detayına inerek başka hangi yöntemleri aradıklarını görmek için kullanılabilecek bir "Çağrı Ağacı" içerir. Meta verileri, kaynakları ve XML belgelerini gösterecektir. .NET Reflector, .NET geliştiricileri tarafından kod kitaplıklarının iç işleyişini anlamak, aynı derlemenin iki sürümü arasındaki farkları ve bir CLI uygulamasının çeşitli bölümlerinin birbirleriyle nasıl etkileşime girdiğini göstermek için kullanılabilir.

Gördüğümüz üzere server sekmesi kırmızı ünlem şeklinde, yani bunu .NET Reflector ile de açamayacağımız anlamına geliyor. (server.exe .NET modülü değildir)

.NET Reflector’ün desteklediği diller

Risk faktörünü devreden çıkardığımıza göre bunun derleyicisinin Python olduğu yolunda ilerleyebiliriz.

(Yani sol ayağının rahatsız olduğunu bildiğimiz hastanın sağ ayağında bir sorun yokmuş)


Şimdi ise .exe zararlımızı exeden çıkaracağız, ardından ise kullanacağımız 2 adet aracımız var.

1-) .exe dosyamızdan çıkaracağımız
pyinstxtractor: PyInstaller Çıkarıcı(PyInstaller Extractor), PyInstaller tarafından oluşturulan Windows yürütülebilir dosyasının içeriğini çıkarmak için bir Python betiğidir. Yürütülebilir dosyanın içinde bulunan pyz dosyasının (genellikle pyc dosyaları) içeriği de ayıklanır.
Bir Python bayt kodu kod çözücünün onu tanıması için pyc dosyalarının başlığı otomatik olarak sabitlenir. Komut dosyası hem Python 2.x hem de 3.x üzerinde çalışabilir.
Araç GitHub Bağlantısı:
GitHub - extremecoders-re/pyinstxtractor: PyInstaller Extractor


2-) Sonrasında unpacking işlemini gerçekleştirmek için kullanacağımız pyc2bytecode: Tüm python sürümlerinde (Python 3.10.* dahil) derlenmiş python bayt kodu(.pyc) dosyalarını parçalarına ayırıp analiz ederek tersine mühendislerin Python ikili dosyalarını incelemelerine yardımcı olan bir Python Bayt Kodu Çözücü.
Araç Github Bağlantısı:
GitHub - knight0x07/pyc2bytecode: A Python Bytecode Disassembler helping reverse engineers in dissecting Python binaries by disassembling and analyzing the compiled python byte-code(.pyc) files across all python versions (including Python 3.10.*)


Bir klasör açalım Den adında ve yukarıda verdiğim araçların git linklerinden .zip olarak indirip bu klasöre çıkartalım. Ayrıca server.exe zararlımızı da bu klasöre taşıyalım.


py pyinstxtractor.py “server.exe” komutu ile .exe zararlımızı .exe formattan server.pyc formatına çevirelim:

Komutundan sonra Den

Server.exemiz yukarıda verilen dosya içerisinde (Masaüstü\Den\server.exe_extracted\server.pyc olarak) server.pyc dosyamız oluşturuluyor.

wk600ry.jpg

Server.exe_extracted dizinine giriyoruz ve

Server.pyc yi görüntülüyoruz, ek olarak sonraki aracımız olan pyc2bytecode u da bu dizine kesip yapıştıralım.

wk600ry.jpg

Komut satırında C:\Users\thres\OneDrive\Masaüstü\Den\server.exe_extracted dizinine gelelim

ve şu kodu çalıştıralım:
py pyc2bytecode.py -p server.pyc > D:\masmavi.txt


NOT: Burada > şeklinde yapmamın sebebi (Linux içerisinde de echo ile yazılan ya da bir txt dosyasından başka bir text dosyasına yazma, yeni txt oluşturma ile aynıdır) oluşturulacak olan txt dosyasını D dizini altında masmavi.txt olarak çıktı olmasını istiyorum. Bu yüzden ..... işleminin > ile istediğim dizine istediğim dosya adıyla oluşturulması için kullanılan komut.
-o ile output dizinini de belirtebilirdik örneğin kullanım şekli:

Fakat onun yerine D ye masmavi.txt şeklinde çıkarttık.

Şimdi gelelim .txt dosyamıza

RAT zararlımız 4444 portu üzerinde 127.0.0.1 (localhost) üzerine çalıştırılıyor.

Socket RAT’ta bağlantı için kullanılır

İstemci bekleniyor diyor, arından bağlantının BAŞARILI bir şekilde kurulduğunu görüyoruz.

Burada çalıştırılabilecek komutları (help) görüntülüyoruz. Yana doğru uzayıp gidiyor. Ben diğerlerine nazaran daha önemli, göze çarpanlara değineceğim. Örneğin disableUAC (Kullanıcı hesabı denetimi ayarları)

Varsayılan olarak değişikliklerde uyar olarak gelir fakat bunu devre dışı bırakmak(disable)

NOT: Örneğin burada varsayılandan önerilmeyen en aşağıdakine çekmek için bile bizden onay isteyecektir. Yani UAC(User Account Kontrol - Kullanıcı Hesabı Kontrolü) kontrolleri açtığımız txt dosyasında bile izin istemesinden, indirilen zararlıyı açarken izin istememesine kadar ayarlayabiliriz. Önemli bir işleve sahiptir.

wk600ry.jpg

Göreceğiniz üzere ne Windows öneriyor ne de mantıklı geliyor. Fakat rat bunu devre dışı bırakıyor yani işlerini istediği gibi yaparken kendine bir engel çıksın istemez.

Mesaj gönderebilir

Sistem bilgisi öğrenme

Görev listesi ve bilgisayar saatini öğrenebilir

Bilgisayarı kapatma

Keylogger (tuş kaydedici) başlatma ve bitirme

Ekran kayıttan tutun, webcam anlık görüntüsüne kadar işlemler gerçekleştirilebilir.

Shell alma ve istemciye gönderilen komutların ENCODE edilme işlemi var.

Bir anahtar oluşturma(create key) işlemi var fakat nerede ne oluşturduğunu bilemiyoruz

wk600ry.jpg

Bir

Yukarıda bahsettiğimiz disableUAC işlemi var

Bir mesaj gönderme işlevi var

Sistem bilgisi ve yerel saati öğrenme işlemleri görüyoruz

Birde indirme işlemi görüyoruz

File is downloaded yani indirilmek istenen dosyanın indirildiğini belirten bir işlem

Disable-devre dışı fare işlemi görüyoruz

Dosya gönderildi, taskmgr(görev yöneticisi üzerinde etkinleştirme-devre dışı bırakma) işlemleri yapılmış

Burası da kapatıldığı yer.

Konumun sonuna gelmiş bulunmaktayım. Unpacking adına faydalı bir konu hazırlayabildiysem ne mutlu. Umarım okurken merak uyandırabilmişimdir.

Ayrıca txt dosyasına ulaşmanız için bağlantı adresini buraya bırakıyorum. Açıp inceleyebilirsiniz:

Konumu hazırlarken analizime katkıda bulunan Saygıdeğer ve Değerli @Maveraün Nehr Hocama teşekkürler.

 
Son düzenleme:

connec

Uzman üye
5 Nis 2022
1,100
1,040
1283
Şans eseri discordda yapım aşamasını izleme imkanı buldum. Kolay bir iş değil gerçekten elinize emeğinize sağlık.
 

xxtra

Yeni üye
27 Haz 2022
47
43
Konu yine çok sığ. Bu foruma analiz raporu okumak için gelmiştim ancak burada ciddi eksik görüyorum eskilere hiç inmeyeceğim bu sebeple... Özellikle yetkili arkadaşlardan seçtim analiz raporlarını forumda belli bir yere gelmiş insanların tecrübeli olduğunu düşünerek. Konuları çok sığ geçiyorsunuz arkadaşlar mesela arkadaş önce .NET olduğundan şüphelendi dosyanın???? neden bunu yaptın? neden boşa zaman kaybettin? x32dbg üzerinde açıp string avına çıksan direkt göreceksin dosyanın py2exe işlemine sokulduğunu...
 

Maveraün Nehr

Blue Team Expert
25 Haz 2021
975
1,861
41.303921, -81.901693
Konu yine çok sığ. Bu foruma analiz raporu okumak için gelmiştim ancak burada ciddi eksik görüyorum eskilere hiç inmeyeceğim bu sebeple... Özellikle yetkili arkadaşlardan seçtim analiz raporlarını forumda belli bir yere gelmiş insanların tecrübeli olduğunu düşünerek. Konuları çok sığ geçiyorsunuz arkadaşlar mesela arkadaş önce .NET olduğundan şüphelendi dosyanın???? neden bunu yaptın? neden boşa zaman kaybettin? x32dbg üzerinde açıp string avına çıksan direkt göreceksin dosyanın py2exe işlemine sokulduğunu...
Güzel bilgi teşekkürler bunu dikkate alacağız. NET olduğundan şüphelenmedi DİE analizinde C++ çıkınca .NET Reflektör programında MC++ seçeneğini seçmeyi denedi bir nevi deneme yanılma
 

xxtra

Yeni üye
27 Haz 2022
47
43
Güzel bilgi teşekkürler bunu dikkate alacağız. NET olduğundan şüphelenmedi DİE analizinde C++ çıkınca .NET Reflektör programında MC++ seçeneğini seçmeyi denedi bir nevi deneme yanılma
hmm ne dediğinden hiçbir şey anlamadım .NET Reflector programında öyle bir seçenek yok üstelik konuda .NET Reflector'un desteklediği diller diye bir kısım yazmış arkadaş orada büyük saçmalamış o kısmı düzenleyin isterseniz XML kütüphanesini ss alıp koymuş oraya :( İşte deneme yanılma yapmayın diye bu şekilde söylüyorum. Hızlı olmanız gereken bir ortamla karşılaştığınız zaman (CTF veya zararlı vakası) deneme yanılmaya ayıracak vaktiniz olmayacak
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.