- Mesaj
- 9
- Beğeni
- 5
- Puan
- 3
- Ticaret Puanı
- 0
Selamlar arkadaşlar,
HardMT2 sunucusunun dosyaları arasında bulunan granny2_d.dll dosyasını tersine mühendislik yöntemleriyle analiz ettim.
Dosya içerisinde gizlenmiş, verilerinizi çalan spyware/stealer kodları tespit edilmiştir. Fonksiyonlar ve yaptıkları işler doğrudan koddaki akışıyla aşağıdadır:
1. Sisteme Kayıt Adımı (Enrollment) - Fonksiyon: sub_1001CB20
Oyunu açtığınızda arka planda şu işlemleri gerçekleştirir:
GetComputerNameA ile bilgisayar adınızı çeker.
GetAdaptersInfo API'si ile ağ kartınızın fiziksel MAC adresini alır.
Elde ettiği MAC, IP ve Bilgisayar Adı bilgilerini
2. Klavye ve Pano Takibi (Keylogger) - Fonksiyon: sub_10014D90
Sürekli bir döngü içerisinde GetAsyncKeyState ve GetKeyState API'lerini çağırarak bastığınız her tuşu anlık olarak izler ve bellekte depolar.
GetClipboardData API'sini kullanarak kopyaladığınız (Ctrl+C yaptığınız) metinleri/şifreleri panodan çeker.
Toplanan klavye kayıtlarını WinINet API'lerini (HttpSendRequestA) kullanarak
3. Arka Planda Ekran Görüntüsü Alma - Fonksiyon: sub_10020060
Haberiniz olmadan ekran görüntünüzü yakalamak için şu akışı izler:
GetSystemMetrics (76, 77, 78, 79 parametreleriyle) çağrılarak ekranınızın çözünürlük sınırları öğrenilir.
GetDC(nullptr) ile tüm masaüstünün ekran görüntüsü bağlamı yakalanır.
BitBlt API'si ile ekranın o anki görüntüsü bellekte açılan geçici bir alana kopyalanır.
GdipCreateBitmapFromHBITMAP ve GdipSaveImageToStream API'leri kullanılarak bu ekran görüntüsü JPEG formatına sıkıştırılır ve bir bellek akışına (IStream) yazılır.
4. Ekran Görüntüsü ve Discord Bilgisi Sızdırma - Fonksiyon: sub_10020570
sub_10020060 fonksiyonunun belleğe sıkıştırdığı JPEG verisini alır.
Bilgisayarınızdaki Discord istemcisinin verilerini tarayarak kullanıcı adınızı (discord_usernames) ve Discord hesap ID'nizi (discord_ids) çeker.
WinINet kütüphanesinin internet bağlantı API'leri (InternetConnectA, HttpOpenRequestA, HttpSendRequestA) aracılığıyla hem JPEG ekran görüntüsünü hem de Discord hesap bilgilerinizi tek bir HTTP POST isteğiyle
5. Şifreli Stringleri Çözme Mantığı (XOR Algoritması)
Analizi zorlaştırmak adına tüm kritik adresler XOR ile şifrelenmiştir. Her karakterin sırasına (indeksine) göre dinamik bir anahtar üretilir ve karakter bu anahtarla XOR'lanır. Formül şu şekildedir:
Orijinal Karakter = Şifreli_Karakter XOR Anahtar
Kullanılan Anahtar Formülleri:
C2 Sunucu Adresi için (
IP Sorgu Adresi için (
Bu basit formülü CyberChef veya herhangi bir programlama dilinde kullanarak DLL içerisindeki tüm şifreli stringleri saniyeler içinde çözebilirsiniz.
Kanıt Linkleri (Web Archive):
İncelemek istiyen arkadaşlar sunucuyu indirebilirler veya direkt DLL üzerindne bakmak istiyenler için :
Dllmain tetiklenmesi: Oyun istemcisi (metin2client.bin) çalıştırıldığında granny2_d. Dll yüklenir ve dllmain tetiklenir.
Kopya oluşturma: Dllmain arka planda hemen sub_100030b0 (startrundll32host) fonksiyonunu çağırır. Bu fonksiyon, kendisini windows'un geçici klasörüne (%temp%) kopyalar.
Rundll32 ile çalıştırma: Ardından createprocessa apı'si ile meşru windows süreci olan rundll32.exe üzerinden kopyaladığı dll'i şu komutla çalıştırır:
rundll32.exe "%temp%\granny2_d. Dll",_dllhostentry@16
Oyun kapansa bile kapanmaz, bu işlem oyunun dışında bağımsız yeni bir windows süreci olarak başlatıldığı için, oyunu kapatsanız dahi cASUS yazılım arka planda çalışmaya devam eder.
Kapanmayı engelleyen kod kanıtı (dllhostentry):
While ( 1 )
Sleep(60000); // süreci sürekli ayakta tutar, bilgisayar kapanana kadar veri sızdırır.
Öncelikle konuda bulunan webarşiv aracılığıyla sunucunun patcher ile indirdiği .lz dosyasını (bunu değişeceklerini bildiğimiz için yedeklemiştik) indirerek paylaştıgım .py aracılığıyla kolaylıkla .DLL çevirebilirisiniz ve analizlerinizi bunun üzerinden de yapabilirsiniz.Böylelikle bizden bağımsız gerçekten oyunun indirdiği DLL'yi analiz ederekte karara varabilirsiniz ya da dosya.co ile paylaştıgım dll ile de bakabilirisiniz bu tamamen sizin kararınızdır.
.lz yi dll çevirmeye üşenen arkadaşlar için :
HardMT2 sunucusunun dosyaları arasında bulunan granny2_d.dll dosyasını tersine mühendislik yöntemleriyle analiz ettim.
Dosya içerisinde gizlenmiş, verilerinizi çalan spyware/stealer kodları tespit edilmiştir. Fonksiyonlar ve yaptıkları işler doğrudan koddaki akışıyla aşağıdadır:
1. Sisteme Kayıt Adımı (Enrollment) - Fonksiyon: sub_1001CB20
Oyunu açtığınızda arka planda şu işlemleri gerçekleştirir:
GetComputerNameA ile bilgisayar adınızı çeker.
GetAdaptersInfo API'si ile ağ kartınızın fiziksel MAC adresini alır.
Linkleri görebilmek için
giriş yap veya kayıt ol.
adresine istek atarak dış IP adresinizi sorgular.Elde ettiği MAC, IP ve Bilgisayar Adı bilgilerini
Linkleri görebilmek için
giriş yap veya kayıt ol.
adresine POST isteğiyle gönderir. Gelen yanıtta sunucu izni doğrulanırsa casus modülleri aktif edilir.2. Klavye ve Pano Takibi (Keylogger) - Fonksiyon: sub_10014D90
Sürekli bir döngü içerisinde GetAsyncKeyState ve GetKeyState API'lerini çağırarak bastığınız her tuşu anlık olarak izler ve bellekte depolar.
GetClipboardData API'sini kullanarak kopyaladığınız (Ctrl+C yaptığınız) metinleri/şifreleri panodan çeker.
Toplanan klavye kayıtlarını WinINet API'lerini (HttpSendRequestA) kullanarak
Linkleri görebilmek için
giriş yap veya kayıt ol.
adresine sızdırır.3. Arka Planda Ekran Görüntüsü Alma - Fonksiyon: sub_10020060
Haberiniz olmadan ekran görüntünüzü yakalamak için şu akışı izler:
GetSystemMetrics (76, 77, 78, 79 parametreleriyle) çağrılarak ekranınızın çözünürlük sınırları öğrenilir.
GetDC(nullptr) ile tüm masaüstünün ekran görüntüsü bağlamı yakalanır.
BitBlt API'si ile ekranın o anki görüntüsü bellekte açılan geçici bir alana kopyalanır.
GdipCreateBitmapFromHBITMAP ve GdipSaveImageToStream API'leri kullanılarak bu ekran görüntüsü JPEG formatına sıkıştırılır ve bir bellek akışına (IStream) yazılır.
4. Ekran Görüntüsü ve Discord Bilgisi Sızdırma - Fonksiyon: sub_10020570
sub_10020060 fonksiyonunun belleğe sıkıştırdığı JPEG verisini alır.
Bilgisayarınızdaki Discord istemcisinin verilerini tarayarak kullanıcı adınızı (discord_usernames) ve Discord hesap ID'nizi (discord_ids) çeker.
WinINet kütüphanesinin internet bağlantı API'leri (InternetConnectA, HttpOpenRequestA, HttpSendRequestA) aracılığıyla hem JPEG ekran görüntüsünü hem de Discord hesap bilgilerinizi tek bir HTTP POST isteğiyle
Linkleri görebilmek için
giriş yap veya kayıt ol.
adresine yükler.5. Şifreli Stringleri Çözme Mantığı (XOR Algoritması)
Analizi zorlaştırmak adına tüm kritik adresler XOR ile şifrelenmiştir. Her karakterin sırasına (indeksine) göre dinamik bir anahtar üretilir ve karakter bu anahtarla XOR'lanır. Formül şu şekildedir:
Orijinal Karakter = Şifreli_Karakter XOR Anahtar
Kullanılan Anahtar Formülleri:
C2 Sunucu Adresi için (
Linkleri görebilmek için
giriş yap veya kayıt ol.
): Anahtar = (Karakter_İndeksi % 58) + 52IP Sorgu Adresi için (
Linkleri görebilmek için
giriş yap veya kayıt ol.
): Anahtar = (Karakter_İndeksi % 49) + 53Bu basit formülü CyberChef veya herhangi bir programlama dilinde kullanarak DLL içerisindeki tüm şifreli stringleri saniyeler içinde çözebilirsiniz.
Kanıt Linkleri (Web Archive):
Linkleri görebilmek için
giriş yap veya kayıt ol.
Linkleri görebilmek için
giriş yap veya kayıt ol.
Linkleri görebilmek için
giriş yap veya kayıt ol.
Linkleri görebilmek için
giriş yap veya kayıt ol.
Linkleri görebilmek için
giriş yap veya kayıt ol.
Linkleri görebilmek için
giriş yap veya kayıt ol.
Linkleri görebilmek için
giriş yap veya kayıt ol.
Linkleri görebilmek için
giriş yap veya kayıt ol.
İncelemek istiyen arkadaşlar sunucuyu indirebilirler veya direkt DLL üzerindne bakmak istiyenler için :
Linkleri görebilmek için
giriş yap veya kayıt ol.
Dllmain tetiklenmesi: Oyun istemcisi (metin2client.bin) çalıştırıldığında granny2_d. Dll yüklenir ve dllmain tetiklenir.
Kopya oluşturma: Dllmain arka planda hemen sub_100030b0 (startrundll32host) fonksiyonunu çağırır. Bu fonksiyon, kendisini windows'un geçici klasörüne (%temp%) kopyalar.
Rundll32 ile çalıştırma: Ardından createprocessa apı'si ile meşru windows süreci olan rundll32.exe üzerinden kopyaladığı dll'i şu komutla çalıştırır:
rundll32.exe "%temp%\granny2_d. Dll",_dllhostentry@16
Oyun kapansa bile kapanmaz, bu işlem oyunun dışında bağımsız yeni bir windows süreci olarak başlatıldığı için, oyunu kapatsanız dahi cASUS yazılım arka planda çalışmaya devam eder.
Kapanmayı engelleyen kod kanıtı (dllhostentry):
While ( 1 )
Sleep(60000); // süreci sürekli ayakta tutar, bilgisayar kapanana kadar veri sızdırır.
Öncelikle konuda bulunan webarşiv aracılığıyla sunucunun patcher ile indirdiği .lz dosyasını (bunu değişeceklerini bildiğimiz için yedeklemiştik) indirerek paylaştıgım .py aracılığıyla kolaylıkla .DLL çevirebilirisiniz ve analizlerinizi bunun üzerinden de yapabilirsiniz.Böylelikle bizden bağımsız gerçekten oyunun indirdiği DLL'yi analiz ederekte karara varabilirsiniz ya da dosya.co ile paylaştıgım dll ile de bakabilirisiniz bu tamamen sizin kararınızdır.
.lz yi dll çevirmeye üşenen arkadaşlar için :
Linkleri görebilmek için
giriş yap veya kayıt ol.
Son düzenleme:

