Hardmt2 client'ında aktif keylogger, ekran izleme?

  • Konuyu açan Konuyu açan PekerAHMED
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 26
  • Gösterim Gösterim 994

PekerAHMED

Yeni Üye
Üye
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.
adresine istek atarak dış IP adresinizi sorgular.
Elde ettiği MAC, IP ve Bilgisayar Adı bilgilerini 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 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 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 ( ): Anahtar = (Karakter_İndeksi % 58) + 52
IP Sorgu Adresi için ( ): Anahtar = (Karakter_İndeksi % 49) + 53
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 :
 
Son düzenleme:
çoğu anti-cheat donuna kadar bilgileri alıyor kardeşim haberin olsun
 
Sanırım haklısın ama bu granny2_d.dll dosyası neredeyse tüm pvp sunucularında mevcut. Bu olay bu dosyanın bulunduğu tüm sunucular için mi geçerli ?

VirusTotal Sonucu:
 
çoğu anti-cheat donuna kadar bilgileri alıyor kardeşim haberin olsun
Metin2 piyasasındaki korumaların nerdeyse hepsini biliyorum ve bunu özellikle ekran görüntüsünü hatta harici ekranı dahil alıp sunucusuna aktaran bi koruma görmedim.Kaldı ki bu oyunun koruması olan rascal ile bağlantılı bir olay da değil ,bana bir tane koruma örneği verirsen gözden geçirmek isterim merak ettim.
 
Metin2 piyasasındaki korumaların nerdeyse hepsini biliyorum ve bunu özellikle ekran görüntüsünü hatta harici ekranı dahil alıp sunucusuna aktaran bi koruma görmedim.Kaldı ki bu oyunun koruması olan rascal ile bağlantılı bir olay da değil ,bana bir tane koruma örneği verirsen gözden geçirmek isterim merak ettim.
Aynı dosyayı arkadaşım tarattığında tertemiz çıkıyor ama bende böyle çıkıyor. Bunun sebebi nedir peki?
 
Aynı dosyayı arkadaşım tarattığında tertemiz çıkıyor ama bende böyle çıkıyor. Bunun sebebi nedir peki?
Biz bu konuyu başka bi forumda dün yayınladık fakat dünden beri hiçbir şekilde onaydan geçmedi o arada değişen değişti ki umarım bunun dahilinde değillerdir.Elimizde gerekli tüm kanıtlar mevcut.
 
Biz bu konuyu başka bi forumda dün yayınladık fakat dünden beri hiçbir şekilde onaydan geçmedi o arada değişen değişti ki umarım bunun dahilinde değillerdir.Elimizde gerekli tüm kanıtlar mevcut.
Ek olarak ben tarattığımda dosya adı granny2.9.dll olarak çıkıyor virustotalde ama arkadaşımda granny2.d.dll olarak çıkıyor.
 
Biz bu konuyu başka bi forumda dün yayınladık fakat dünden beri hiçbir şekilde onaydan geçmedi o arada değişen değişti ki umarım bunun dahilinde değillerdir.Elimizde gerekli tüm kanıtlar mevcut.
Bir de bu olay sadece hardmt2 için mi geçerli aynı incelemeyi farklı bir sunucu içinde yaptınız mı? Dediğim gibi çünkü aynı dosya neredeyse her sunucu klasörünün içinde mevcut.
 
Ek olarak ben tarattığımda dosya adı granny2.9.dll olarak çıkıyor virustotalde ama arkadaşımda granny2.d.dll olarak çıkıyor.
Oyunu patcher üzerinden güncelleyip tarattıysanız temiz çıkması normal dediğim olay yaşandı , konuda bulunan webarşiv bağlantılarından granny2_d.dll.lz dosyasını indirip lz decompress yaparak oluşan dll'yi incelemeniz gerekiyor.Decompress ile uğraşmam diyorsanız sıkıştırılmamış halini gönderebilirim.
 
Oyunu patcher üzerinden güncelleyip tarattıysanız temiz çıkması normal dediğim olay yaşandı , konuda bulunan webarşiv bağlantılarından granny2_d.dll.lz dosyasını indirip lz decompress yaparak oluşan dll'yi incelemeniz gerekiyor.Decompress ile uğraşmam diyorsanız sıkıştırılmamış halini gönderebilirim.
Ben henüz yapmadım ama hem patch öncesi hem patch sonrası birer defa daha yapayım bakalım sonuç değişecek mi
 
Patch atmadan önce bir kez daha denedim ve VirusTotal sonucu değişmedi. Daha sonra patch güncellemesi yaptım ve aynı dosyayı VirusTotale yükledim ve sonuç tertemiz :)
 
Patch atmadan önce bir kez daha denedim ve VirusTotal sonucu değişmedi. Daha sonra patch güncellemesi yaptım ve aynı dosyayı VirusTotale yükledim ve sonuç tertemiz :)
granny2.dll'yi taratıyorsan zaten temiz çıkar.Biz durumu tahmin edip zaten çoktan webarşiv üzerinden yedekledik.Konuya ek olarak .lz'yi decompres edip .DLL'ye çevirebileceğin bir python betiği paylaşıyorum ordan .dll'yi çıkartkarak tekrar taratabilirsin.

Ek olarak anlamamış olan arkadaşlara kısaca anlatmak isterim ;

Adamlar virüslü DLL'in adını granny2_d.dll yapıyor, oyun da bunu orijinal sanıp açılışta direkt çalıştırıyor (buna DLL Hijacking deniyor).DLL'in içine hem orijinal granny kodlarını hem de virüs kodunu aynı anda koyabiliyorlar (DLL Proxying). Yani oyun çalışırken animasyonları yine oynatır ama arka planda virüsü bilgisayara çoktan yedirir.
 
Metin2 piyasasındaki korumaların nerdeyse hepsini biliyorum ve bunu özellikle ekran görüntüsünü hatta harici ekranı dahil alıp sunucusuna aktaran bi koruma görmedim.Kaldı ki bu oyunun koruması olan rascal ile bağlantılı bir olay da değil ,bana bir tane koruma örneği verirsen gözden geçirmek isterim merak ettim.
rascal falan almıyor ama çoğu servere özel koruma sistemleri ekran görüntüsü, discord bilgileri, çalışan uygulama bilgilerini falan alıyor.

rascal şirket kafasında olabilir ama maalesef server sahipleri bu kafada değil
 
Discord bilgileri vs. çekiyor ama gerekmedikçe kullanmıyor diye biliyorum
ya servere gidiyor bilgiler. server sahibi istediği gibi bakabiliyor, tr de python dosyalarını çeken gördüm ben ki yabancı serverlerde cpp çekende vardı. yani geliştiriciye göre değişiyor durum.

kaspersky açıkken çoğu servere giremiyorum ben :muha:
 
ya servere gidiyor bilgiler. server sahibi istediği gibi bakabiliyor, tr de python dosyalarını çeken gördüm ben ki yabancı serverlerde cpp çekende vardı. yani geliştiriciye göre değişiyor durum.

kaspersky açıkken çoğu servere giremiyorum ben :muha:
Her şeyin bir noktaya kadar normalleştirilebildiğini biliyorum ve katılmasam da anlıyabiliyorum (discord ismi ,id'si , mac , ip vb hwid fingerprint olarak alıyoruz diyebilirler bahane olarak ) ama burdaki durum çok başka.Ekran görüntüleri , kopyalanan yazılar dahil her şeyin alınması normalleştiriliemez.Yine de umrumda değil ben bu sunucuyu oynarım diyen arkadaşlara tabii bir şey diyecek değilim :)
 
Geri
Üst