Ö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.
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)
Ş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
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.*)
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.
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.
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.
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
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.
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.
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.
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.
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
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:
masmavi.txt dosyasını indir - download
masmavi.txt dosyasını indir, download. Dosya.tc .Dosya Upload. Dosya Paylaş. Dosya Yükle
s6.dosya.tc
Konumu hazırlarken analizime katkıda bulunan Saygıdeğer ve Değerli @Maveraün Nehr Hocama teşekkürler.
Son düzenleme: