Şubat 2020’de, PipeMon adını verdiğimiz yeni, modüler bir arka kapı keşfettik. Yazdırma İşlemcisi işlevine sahip olan bu arka kapı, Winnti Group tarafından Güney Kore ve Tayvan’daki MMO (Devasa Çok Oyunculu Çevrimiçi) oyunları geliştiren çeşitli oyun şirketlerine karşı kullanıldı. Bu şirketlerin geliştirdiği oyunlar, popüler oyun oynama platformlarında yer alıyor ve eş zamanlı oynayan binlerce oyuncuya sahip.
Olaylardan en az birinde, kötü amaçlı yazılım operatörleri bir kurbanın derleme sisteminin gizliliğini tehlikeye attı. Bu da, saldırganların oyun yürütülebilir dosyalarına truva atı yerleştirmelerine olanak veren bir zincir saldırısına neden olabilecekti. Başka bir olayda ise oyun sunucularının gizliliği tehlikeye atıldı. Bu kez saldırganlar, finansal kazanç elde etmek için oyun içi para birimlerini manipüle edebileceklerdi.
2012’den beri faaliyet gösteren Winnti Group, sonradan daha fazla kurbanın gizliliğini tehlikeye atmak için kullanılacak olan truva atı yerleştirilmiş yazılımların (CCIeaner, ASUS LiveUpdate ve birden fazla video oyunu) dağıtımına neden olmuş, yazılım sektörüne karşı yapılan yüksek profilli zincir saldırılardan sorumludur. ESET araştırmacıları yakın zamanda, ShadowPad ve Winnti kötü amaçlı yazılımları aracılığıyla Winnti Group’un Hong Kong’daki birkaç üniversiteyi hedef alan bir kampanyasını keşfetti.
“Winnti Group” adlandırması hakkında: Kaspersky bu saldırganları ilk kez 2013 yılında bu adla tanımladığından, “Winnti Group” adını tutmayı tercih ettik.Winnti de bir kötü amaçlı yazılım ailesi olduğundan, saldırıların sorumlularından bahsederken her zaman “Winnti Group” yazıyoruz. 2013’te Winnti’nin, Winnti Group tarafından kullanılan pek çok kötü amaçlı yazılım ailesinden yalnızca biri olduğu ortaya koyulmuştur.
Winnti Group ile ilişkilendirme
Bu saldırıyı Winnti Group ile ilişkilendirmemizin ardında birden çok gösterge bulunuyor. PipeMon tarafından kullanılan C&C etki alanlarının bazıları, önceki saldırılarda Winnti kötü amaçlı yazılımı tarafından kullanıldı. Bunlardan Winnti Group’un cephanesi hakkındaki teknik incelememizde bahsettik.Bunun yanı sıra, sonradan PipeMon ile gizliliği tehlikeye atılmış bazı şirketlerde de 2019’da Winnti kötü amaçlı yazılımına rastlandı.
Bu saldırıda Winnti kötü amaçlı yazılımının yanı sıra, Winnti Group’un diğer kurbanlarında tespit edilen ve grubun kullandığı meşhur bir çalıntı sertifika (Wemade 10) ile imzalanmış özel bir AceHash (kimlik bilgisi toplayıcısı) ikili dosyasına da rastlandı.
PipeMon yükleyicisini, modülleri ve ek araçları imzalamakta kullanılan sertifika, Winnti Group tarafından 2018’in sonlarında yapılan bir zincir saldırıda gizliliği tehlikeye atılan bir şirketle ilişkilidir ve muhtemelen bu sırada çalınmıştır.
İlginç bir şekilde, PipeMon modülleri %SYSTEM32%\spool\prtprocs\x64\ yoluna yüklenir ve bu yol, truva atı yerleştirilmiş CCleaner’ın ikinci aşamasını çıkarmak için kullanılmıştır.
Bunun yanı sıra, daha sonradan asıl yazılımın gizliliğini tehlikeye atmak için bir şirketin derleme ortamının gizliliğini tehlikeye atmak, Winnti Group’un bilinen çalışma yöntemlerinden biridir.
Hedeflenen şirketler
Bu saldırıda hedeflenen şirketler, Güney Kore ve Tayvan’daki MMO oyunları üreten oyun geliştiricileridir. Olaylardan en az birinde saldırganlar, şirketin yapı düzenleme sunucusunun gizliliğini tehlikeye atabildi ve bu sayede otomatik yapı sistemlerinin denetimini ele geçirdiler. Bu durum, saldırganların tercih ettikleri herhangi bir kodu oyun yürütülebilir dosyalarına dahil edebilmesini sağladı.
ESET, etkilenen şirketlere ulaştı ve gizlilik açığını iyileştirmek için gereken bilgileri sağladı.
Teknik analiz
Hedeflenen şirketlerde PipeMon’un iki farklı varyantına rastlandı. Yalnızca ilk aşamadaki, PipeMon’un yüklenip kalıcı hale getirilmesinden sorumlu olan daha yeni varyantı tanımlayabildik.
İlk aşama
PipeMon’un ilk aşaması, başlatıcısının .rsrc bölümüne eklenmiş, parola korumalı bir RARSFX yürütülebilir dosyasını içerir. Başlatıcı, RARSFX’i GetTempPath tarafından döndürülen dizindeki rastgele oluşturulmuş, sekiz karakterli ASCII dizesiyle adlandırılan bir dizinde setupO.exe dosyasına yazar. Aşağıda gösterildiği gibi, RARSFX diske yazıldıktan sonra, bağımsız bir değişkendeki şifre çözme parolasını sağlayarak CreateProcess ile yürütülür.
setup0.exe -p*|T/PMR{|T2^J*
Parolanın her örnekte farklı olduğunu unutmayın.
Daha sonra RARSFX’in içeriği %TMP%\RarSFXO dizinine ayıklanır ve şu dosyaları içerir:
- CrLnc.dat - Şifrelenmiş yük
- Duser.dll - UAC atlama için kullanılır
- osksupport.dll - UAC atlama için kullanılır
- PrintDialog.dll - Kötü amaçlı yazdırma işlemcisinin başlatılması için kullanılır
- PrintDialog.exe - PrintDialog.dll’yi yüklemek için kullanılan geçerli Windows yürütülebilir dosyası
- setup.dll - Yükleme DLL’si
- setup.exe - Asıl yürütülebilir dosya
Klasör adı çakışması durumunda, çakışma önlenene kadar RarSFXO dizesinin sonundaki sayı artırılır. Yükleyiciye bağlı olarak, bu dosyaların hepsi arşivde bulunmayabilir.
Ayıklandıktan sonra, setup.exe bağımsız değişkenler olmadan yürütülür. Bunun tek amacı, LoadLibraryA kullanılarak setup.dll’yi yüklemektir. Setup.dll yüklendikten sonra, -x:n (n’nin tamsayı olduğu) biçiminde bir bağımsız değişken sağlanıp sağlanmadığını denetler. İşlemin modu, n’nin varlığına bağlı olarak değişiklik gösterir. Desteklenen bağımsız değişkenler ve bunlara karşılık gelen davranışlar Tablo 1’de gösterilmiştir. Setup.exe, RARSFX tarafından bağımsız değişkenler olmadan yürütülür ve artırılmış ayrıcalıklarla çalışıp çalışmadığını denetler. Artırılmış ayrıcalıklarla çalışmıyorsa ve Windows sürümü Windows 7 derleme 7601’dan daha eskiyse kimliğe bürünme belirteci kullanarak bu ayrıcalıkları elde etmeyi dener. Aksi takdirde, yük yükleyicisinin şunlardan birine yüklenmesine olanak veren farklı UAC atlama tekniklerini dener:
- C:\Windows\System32\spool\prtprocs\x64\DEment.dll
- C:\Windows\System32\spool\prtprocs\x64\EntAppsvc.dll
- C:\Windows\System32\spool\prtprocs\x64\Interactive.dll
Buna, değişkeni dikkate alarak karar verir.
Komut satırı bağımsız değişken değeri | Davranış |
-x:0 | Yük yükleyicisini yükleme |
-x:l | Geçerli işlem için |
-x:2 | Geçerli işlem için |
Tablo 1: setup.exe desteklenen bağımsız değişkenleri ve bunlara karşılık gelen davranışlar.
Bu yükleyici, yukarıdaki konuma yazmadan önce yükleyicinin şifresini çözecek olan setup.dll’nin içinde depolanıp şifrelenir.
Windows Yazdırma İşlemcileri’ni kullanarak kalıcılık sağlama
Kötü amaçlı DLL’nin bırakılacağı konum rastgele seçilmemiştir. Bu yol, Windows Yazdırma İşlemcileri’nin yerleştirildiği yoldur ve setup.dll kötü amaçlı DLL yükleyicisini, aşağıdaki kayıt defteri anahtarını kaydederek Yazdırma İşlemcisi’ne bir alternatif olarak kaydeder:
HKLM\SYSTEM\ControlSet0 01\Control\Print\Environments\Windows x64\Print Processors\PrintFiiterPipelineSvc\Driver - DEment.dll
veya
HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows x64\Print Processors\lltdsvcl\Driver - EntAppsvc.dll
Buna, değişkeni dikkate alarak karar verir. PrintFiiterPipelineSvc’deki yazım hatasına dikkat edin. (Herhangi bir ad kullanılabileceğinden, Yazdırma İşlemcisi’nin yüklenmesini etkilemez.)
Yazdırma İşlemcisi kaydedildikten sonra, PipeMon yazdırma sahtekarlık hizmetini (spoolsv.exe) yeniden başlatır. Sonuç olarak, sahtekarlık hizmeti başlatıldığında kötü amaçlı yazdırma işlemi yüklenir. Yazdırma Sahtekarlığı hizmetinin sistem sıfırlamalarında kalıcılığının sağlanması için bilgisayar her başlatıldığında başladığını unutmayın.
Bu teknik, Yazdırma İzleyicisi kalıcılığı tekniğine (örneğin DePriMon tarafından kullanılan) oldukça benzer ve bildiğimiz kadarıyla önceden belgelenmemiştir.
Ayrıca, RARSFX’ten ayıklanan şifrelenmiş yük dosyası CrLnc.dat, yükleyiciye bağlı olarak aşağıdaki yolda bulunan kayıt defterine yazılır:
- HKLM\SOFTWARE\Microsoft\Print\Components\DC2 0FD7E-4BIB-4B88-817 2-61F0BED7D9E8
- HKLM\SOFTWARE\Microsoft\Print\Components\A6 6F35-4164-45FF-9CB4-69ACAA10E52D
Daha sonra bu şifrelenmiş kayıt defteri yükü yüklenir, şifresi çözülür ve önceden kaydedilmiş Yazdırma İşlemcisi kitaplığı tarafından yürütülür. PipeMon aşamalarının ve kalıcılığının tamamı Şekil 1’de gösterilmiştir.
PipeMon
Modüller arası iletişimde birden çok ada sahip kanallar kullandığından ve PDB yoluna göre, geliştiricisi tarafından kullanılan Visual Studio projesinin adı “İzleyici” olduğundan, bu yeni implant PipeMon’a isim verdik.
Önceden bahsettiğimiz gibi, iki farklı PipeMon değişkeni bulunuyor. İlk değişkeni düşündüğümüzde, kullanılan kalıcılık tekniğinden emin olmadığımızdan yükleyiciyi alamadık. Ancak PipeMon’un bu ilk değişkeninin Yazdırma İşlemcisi dizininde de yer aldığını düşünürsek, aynı kalıcılık mekanizmasının kullanılmış olma olasılığı yüksektir.
Özgün değişken
PipeMon, her modülün IntelLoader adlı bir işlevi dışarı aktaran tek bir DLL olduğu ve yansıtmalı yükleme tekniği kullanılarak yüklenen bir modüler arka kapıdır. Her modül, Tablo 2’de gösterilen farklı işlevsellikler sergiler.
Asıl modülleri (ManagerMain ve GuardClient) yüklemekten sorumlu yükleyici Win32CmdDll.dll’dir ve Yazdırma İşlemcileri dizininde yer alır. Modüller, aşağıdaki gibi zararsız görünen adlara sahip dosyalarla aynı konumda bulunan diskte depolanıp şifrelenir:
- banner.bmp
- certificate.cert
- License.hwp
- JSONDIU7c9djE
- D8JNCKS0DJE
- BOSDFUWEkNCj.logN
Hwp’nin, Güney Kore’de oldukça popüler olan Hangul Office’in sunduğu Hangul Word Processor tarafından kullanılan bir uzantı olduğunu göz önünde bulundurun.
Modüller RC4 şifrelidir ve şifre çözme anahtarı Com! 123Qasdz her modülde sabit kodlanmıştır. Win32CmDII; ManagerMain ve GuardClient modüllerinin şifresini çözüp bunları yerleştirir. ManagerMain modülü, Communication modülünün şifresinin çözmekten ve bu modülü yerleştirmekten sorumludur. GuardClient modülü ise Communication modülünün çalışmasını ve gerekirse yeniden yüklenmesini sağlar. PipeMon’un nasıl çalıştığına ilişkin bir genel bakış, Şekil 2’de gösterilmiştir.
Win32CmDII ilk olarak, ManagerMain ve GuardClient modüllerini lsass.exe, wininit.exe veya lsm.exe adıyla bir işleme yerleştirmeyi dener. Bu işlem başarısız olursa spoolsv.exe, ekrn.exe (ESET), avp.exe (Kaspersky) veya dllhost adlı işlemleri dışlayarak kayıtlı Windows hizmetleri işlemlerinden birine yerleştirmeyi dener. Her şey başarısız olursa son seçenek olarak taskhost.exe, taskhostw.exe veya explorer.exe işlemlerini kullanmayı dener.
Communication modülünü yerleştirme işlemi adayları, yerel adres olarak 0. 0. 0. 0 ile TCP bağlantı tablosunda yer almalıdır veya YEREL HİZMET belirtecine sahip KURULMUŞ bir bağlantı olmalıdır. Bu koşullar genellikle, Communication modülünden gelen trafiğin göze çarpmaması ve güvenlik duvarında güvenli listeye alınması için modülü zaten ağ üzerinden iletişim kuran bir işleme gizlemek amacıyla kullanılır. Önceki gereksinimleri karşılayan bir işlem yoksa Communication modülünü explorer.exe işlemine yerleştirmeyi dener. Windows Mağazası Uygulamaları’na ait işlemler ve egui.exe (ESET) ile avpui.exe (Kaspersky) adlı işlemler seçim sırasında yoksayılır.
Modül Adı | Açıklama | PDB Yolu |
Win32CmdDII | ManagerMain ve GuardClient modüllerinin şifresini çözüp bunları yükler | S:\Monitor\Monitor_RAW\Laun |
GuardClient | Belirli aralıklarla Communication modülünün çalışıp çalışmadığını denetler veya çalışmıyorsa modülü yükler | S:\Monitor\Monitor_RAW\Clien t\x64\Release\GuardClient.pdb |
ManagerMain | Yürütüldüğünde Communication modülünü yükler, adlandırılmış kanal aracılığıyla Communication modülüne geçirilen şifrelenmiş C&C etki alanını içerir. | S:\Monitor\Monitor_RAW\Clien t\x64\Release\ManagerMain.pd b |
Communication modülünden alınan verilere göre birkaç tane komut yürütebilir (çoğunlukla sistem bilgileri toplama, yükleri yerleştirme) |
| |
Communication | Adlandırılmış kanallar aracılığıyla C&C sunucusu ve tek modüller arasındaki iletişimi yönetmekten sorumludur. | S:\Monitor\Monitor_RAW\Clien |
Tablo 2. PipeMon modül açıklamaları ve ilgili PDB yolu
Ek modüller, özel komutlar (aşağıya bakın) kullanılarak isteğe bağlı olarak yüklenebilir, ancak ne yazık ki bunlardan herhangi birisi keşfedilememiştir. Bu modüllerin adları, modüllerle iletişim kurmak için kullanılan adlandırılmış kanallar temel alınarak yapılan bilgiye dayalı tahminlerdir:
- Screen
- Route
- CMD
- InCmd
- File
Modüller arası iletişim
Modüller arası iletişim adlandırılmış kanallar aracılığıyla, her tek modülün arasındaki iletişim kanalı başına adlandırılmış iki kanal (biri göndermek, diğeri almak için) kullanılarak gerçekleştirilir. Tablo 3’te iletişim kanalları ve bunlara karşılık gelen adlandırılmış kanallar listelenmiştir.
İletişim kanalı | Adlandırılmış kanal |
Communication, Screen | \\.\pipe\ScreenPipeRead%CNC_DEFIN |
Communication, Route | \\.\pipe\RoutePipeWriite%B64_TIME |
Communication, ManagerMain | \\.\pipe\MainPipeWrite%B64_TIMEST |
GuardClient, ManagerMain | \\.\pipe\MainHeatPipeRead%B64_TIMESTAMP% |
Communication, InCmd | \\.\pipe\InCmdPipeWrite%B64_TIMES |
Communication, File | \\.\pipe\FilePipeRead%B64_TIMESTA |
GuardClient, Communication | \\.\pipe\ComHeatPipeRead%B64_TIMESTAMP% |
Communication, CMD |
Tablo 3. PipeMon iletişim kanalı ve ilgili adlandırılmış kanalları
%CNC_DEFINED% dizesi C&C sunucusundan alınır. %B64_TIMESTAMP% değişkenleri ise Tablo 4’te gösterilenler gibi base64 kodlu zaman damgalarıdır.
%BASE64 TIMESTAMP% | Kodu çözülmüş zaman damgası |
"MjAxOTAyMjgxMDElMzc=" | "20190228101537" |
"MjAxOTAlMjEyMzU2MjQ=" | "20190521235624" |
"MjAxOTExMj ExMj E2Mj Y=" | "20191121121626" |
Tablo 4. Adlandırılmış kanallarla kullanılan zaman damgaları örneği
Komut ve Kontrol İletişimi
Communication modülü, Winnti cephanesi hakkındaki teknik incelememizde ele alınmış olan PortReuse arka kapısına benzer şekilde, adlandırılmış kanallar aracılığıyla C&C sunucusu ve diğer modüller arasında kurulan iletişimi yönetmekten sorumludur.
C&C adresi ManagerMain modülünde sabit kodlanmıştır ve RC4 ile sabit kodlu anahtar Com!213Qasdz kullanılarak şifrelenmiştir.Adlandırılmış bir kanal üzerinden Communication modülüne gönderilir.
Her yüklü modül için ayrı bir iletişim kanalı oluşturulur. Kullanılan iletişim protokolü TCP üzerinden TLS’tir. İletişim, HP-Socket kitaplığı ile sağlanır. Tüm iletiler, sabit kodlu anahtar kullanılarak RC4 şifreli hale getirilir. Aktarılan iletinin boyutu 4 KB veya daha fazlaysa zlib’in Deflate uygulaması kullanılarak da sıkıştırılır.
C&C sunucusuyla iletişimi başlatmak için öncelikle şu bilgileri içeren bir işaret iletisi gönderilir:
- İşletim sistemi sürümü
- bağlı ağ bağdaştırıcılarının %B64_TIMESTAMP% ile birleştirilmiş fiziksel adresleri
- kurbanın yerel IP adresi
- arka kapı sürümü/saldırı kimliği; aşağıdaki değerleri gözlemledik:
- "1.1.1.4beat"
- "1.1.1.4Bata"
- "1.1.1.5"
- Kurbanın bilgisayar adı
Kurbanın makinesi hakkındaki bilgiler ManagerMain modülü tarafından toplanıp adlandırılmış kanal aracılığıyla Communication modülüne gönderilir. Arka kapı sürümü, Communication modülünde düz metin olarak sabit kodlanmıştır.
İşaret iletisinin biçimi Şekil 3’te, desteklenen komutlar Tablo 5’te gösterilir.
Komut türü | Komut bağımsız değişkeni | Açıklama |
0x02 | 0x03 | File modülünü yükleme |
0x03 | 0x03 | CMD modülünü yükleme |
0x03 | 0x0B | InCmd modülünü yükleme |
0x04 | 0x02 | Route modülü için Queue komutu |
0x04 | 0x03 | Route modülünü yükleme |
0x05 | * | Kurbanın RDP bilgilerini C&C sunucusuna gönderme |
0x06 | 0x05 | İşletim sistemi, CPU, PC ve saat dilimi bilgilerini C&C sunucusuna gönderme |
0x06 | 0x06 | Ağ bilgilerini C&C sunucusuna gönderme |
0x06 | 0x07 | Disk sürücüsü bilgilerini C&C sunucusuna gönderme |
0x07 | * | Çalışan işlemler hakkındaki bilgileri C&C sunucusuna gönderme |
0x09 | * | DLL yerleştirme |
0x0C | 0x15 | “InCmd” kanallarının adlarını ve olayları C&C sunucusuna gönderme |
0x0C | 0x16 | “Route” kanalının adını C&C sunucusuna gönderme |
0x0C | 0x17 | “File” kanallarının adlarını C&C sunucusuna gönderme |
Tablo 5. Komutların listesi
Güncelleştirilmiş değişken
Önceden bahsedildiği üzere saldırganlar, yukarıda tanımlanan ilk aşama için alabildiğimiz PipeMon’un güncelleştirilmiş bir sürümünü de kullanır. Özgün değişkene hayli benzer bir mimari sergilemesine rağmen, kodunun sıfırdan yeniden yazılmış olması mümkündür.
Modül ve dizelerin şifresini çözmek için kullanılan RC4 kodu, 0x75E8EEAF anahtarına sahip basit bir XOR ile değiştirildi ve tüm sabit kodlanmış dizeler kaldırıldı. Modüller arası iletişim için kullanılan adlandırılmış kanallar, açık adlar yerine rastgele değerler kullanılarak ve \\ biçimine uyacak şekilde adlandırılır. \pipe\%rand% değerindeki %rand% öğesi, 31 karakterden oluşan ve yalnızca alfabetik karakterler içeren sözde rastgele oluşturulmuş bir dizedir.
Burada yalnızca asıl yükleyici (ör. Yazdırma İşlemcisi olarak yüklenen kötü amaçlı DLL) diskte tek bir dosya olarak depolanır. Modüller ise yükleyici (CrLnc.dat dosyasından) tarafından kayıt defterinde depolanır ve Tablo 6’da açıklanmıştır:
Modül adı | Açıklama |
CoreLnc.dll | Kötü amaçlı Yazdırma İşlemcisi tarafından yüklenir. Yalnızca .data bölümünde ekli olan Core.dll modülünün yüklenmesinden sorumludur. |
Core.dll | .data bölümünde ekli olan Net.dll modülünü yükler. C&C sunucusundan gelen komutları ve adlandırılmış kanallar aracılığıyla tek modüller ile C&C sunucusu arasında kurulan iletişimi ele alır |
Tablo 6. Güncelleştirilmiş modüller
Net.dll Yeni Communication modülü. Ağ oluşturmayı ele alır.
Modül yerleştirme artık dışarı aktarma işlevine sahip yansıtmalı yükleme tekniği kullanarak gerçekleştirilmez. Bunun yerine, özel bir yükleyici kabuk kodu kullanılır ve yüklenecek olan modülle birlikte yerleştirilir.
C&C ileti biçimi de değiştirilmiştir ve Şekil 4’te gösterilir.
Arka kapının yapılandırması ilginç bir şekilde yükleyici DLL’ye eklenmiş ve burada şifrelenmiştir. Yapılandırmada şunlar yer alır:
- Kayıt defteri değerinin adı
- Saldırı tanımlayıcısı
- C&C IP adresleri veya etki alanları
- Yapılandırmada “#” ile işaretlenmiş ikinci bir C&C etki alanının kullanılmaya başlama zamanına karşılık gelen zaman damgası (FILETIME biçiminde).
Yükleyici DLL’ye eklenmiş bir yapılandırma dökümünün örneği Şekil 5’te gösterilmiştir. Çeşitli yükleyici DLL’lerden ayıklanmış yapılandırmalar Tablo 7’de gösterilir.
Yükleyici SHA-1 | Saldırı Kimliği | Zararlı iş yükü kayıt defteri adı | C&C IP/dom |
6c97039605f93ccflafccbab8174d26a43f91b20 | KOR2 | DC20FD7E-4B1B- | 154.223.2 ssl2.dyn-#client.c |
97da4f938166007ce365c29eld685alb850c5bb0 | KOR | DC20FD7E-4B1B- | 203.86.23 tracker.c #client.c |
7ca43f3612db0891b2c4c8ccabl543f581d0dl0c | korl | DC20FD7E-4B1B- | 203.86.23 www2.dyn. (#nmn.nhnc |
b02ad3e8blcf0b78ad9239374d535a0ac57bf27e | twl | A66F35-4164-45FF-9CB4-69ACAA10E52D | ssl.lcres |
Tablo 7. Çeşitli yükleyicilerden ayıklanmış yapılandırma
Çalınmış kod imzalı sertifika
PipeMon modül ve yükleyicilerinin tamamı, muhtemelen Winnti Group’un önceki saldırılarından birinde çalınmış olan aynı geçerli kod imzalama sertifikasıyla imzalanmıştır.
Gizliliği tehlikeye atılmış şirketlerden bazılarında, bu sertifikayla imzalanmış bir bağlantı geri döndürücüsü olan HTRan’ın Enigma paketli bir sürümünü bulduk ve bu, telemetrimize göre geçmişte Winnti kötü amaçlı yazılımı ile gizliliği tehlikeye atılmış birden fazla kurbana karşı kullanılmış. Bunun yanı sıra bir örnek paylaşım platformunda, bu sertifika ile imzalanmış WinEggDrop bağlantı noktası tarayıcısı, Netcat ve Mimikatz gibi, saldırganların kullanmış olabileceği başka araçlara rastladık.
Ayrıca, PipeMon ile gizliliği tehlikeye atılmış bazı makinelerde önceki teknik incelememizde ele aldığımız ve Winnti Group tarafından sıkça kullanılan çalıntı bir Wemade 10 sertifikasıyla imzalanmış özel bir AceHash yapısı da bulunmuştur.
Sonuç
Tekrar belirtmek gerekirse Winnti Group, muhtemelen önceki bir saldırıda çalınmış ve PortReuse arka kapısıyla bazı benzerliklere sahip bir kod imzalama sertifikasıyla imzalanmış yeni bir modüler arka kapıyı kullanarak Asya’daki oyun sektörünü hedef almış. Bu yeni implant, saldırganların muhtemelen önceki saldırılar sırasında çalınan kod imzalama sertifikalarını kullanmaya devam ettiğini ve yalnızca en iyi arka kapıları olan ShadowPad ve Winnti kötü amaçlı yazılımına güvenmeden, birden çok açık kaynaklı projeyi kullanarak hâlâ etkin bir şekilde yeni araçlar geliştirdiklerini gösteriyor.
Winnti Group’un yeni etkinliklerini takip etmeye devam edeceğiz ve blogumuzda ilgili bilgileri yayımlayacağız. Sorularınız için threatintel@eset.com adresinden bizimle iletişim kurun. IoC’leri de GitHub depomuzda bulabilirsiniz.
Tehlike Göstergeleri
ESET algılama adları
Win64/PipeMon.A
Win64/PipeMon.B
Win64/PipeMon.C
Win64/PipeMon.D
Dosya adları
100.exe
103.exe
Slack.exe
setup.exe
%SYSTEM32%\spool\prtprocs\x64\DEment.dll
%SYSTEM32%\spool\prtprocs\x64\EntAppsvc.dll
%SYSTEM32%\spool\prtprocs\x64\Interactive.dll
%SYSTEM32%\spool\prtprocs\x64\banner.bmp
%SYSTEM32%\spool\prtprocs\x64\certificate.cert
%SYSTEM32%\spool\prtprocs\x64\banner.bmp
%SYSTEM32%\spool\prtprocs\x64\License.hwp
%SYSTEM32%\spool\prtprocs\x64\D8JNCKS0DJE
%SYSTEM32%\spool\prtprocs\x64\B0SDFUWEkNCj.log
%SYSTEM32%\spool\prtprocs\x64\K9ds0fhNCisdjf
%SYSTEM32%\spool\prtprocs\x64\JSONDIU7c9djE
%SYSTEM32%\spool\prtprocs\x64\NTFSSSE.log
AceHash64.exe
mz64x.exe
Adlandırılmış kanallar
\\.\pipe\ScreenPipeRead%CNC_DEFINED%
\\.\pipe\ScreenPipeWrite%CNC_DEFINED%
\\.\pipe\RoutePipeWriite%B64_TIMESTAMP%
\\.\pipe\MainPipeWrite%B64_TIMESTAMP%
\\.\pipe\MainPipeRead%B64_TIMESTAMP%
\\.\pipe\MainHeatPipeRead%B64_TIMESTAMP%
\\.\pipe\InCmdPipeWrite%B64_TIMESTAMP%
\\.\pipe\InCmdPipeRead%B64_TIMESTAMP%
\\.\pipe\FilePipeRead%B64_TIMESTAMP%
\\.\pipe\FilePipeWrite%B64_TIMESTAMP%
\\.\pipe\ComHeatPipeRead%B64_TIMESTAMP%
\\.\pipe\CMDPipeRead
\\.\pipe\CMDPipeWrite
Kayıt Defteri
HKLM\SYSTEM\ControlSet0 01\Control\Print\Environments\Windows x64\Print
Processors\PrintFiiterPipelineSvc\Driver - DEment.dll
HKLM\SYSTEM\CurrentControlSet\Control\Print\Environments\Windows
x64\Print Processors\lltdsvcl\Driver - EntAppsvc.dll
HKLM\SOFTWARE\Microsoft\Print\Components\DC2 0FD7E-4BIB-4B88-817 2-
61F0BED7D9E8
Örnekler
İlk Aşama
4B90E2E2D1DEA7889DC15059E11E11353FA621A6
C7A9DCD4F9B2F26F50E8DD7F96352AEC7C4123FE
3508EB2857E279E0165DE5AD7BBF811422959158
729D526E75462AA8D33A1493B5A77CB28DD654BC
5663AF9295F171FDD41A6D819094A5196920AA4B
PipeMon
23789B2C9F831E385B22942DBC22F085D62B48C7
53C5AE2655808365F1030E1E06982A7A6141E47F
E422CC1D7B2958A59F44EE6D1B4E10B524893E9D
5BB96743FEB1C3375A6E2660B8397C68BEF4AAC2
78F4ACD69DC8F9477CAB9C732C91A92374ADCACD
B56D8F826FA8E073E6AD1B99B433EAF7501F129E
534CD47EB38FEE7093D24BAC66C2CF8DF24C7D03
PipeMon şifrelenmiş ikili dosyaları
168101B9B3B512583B3CE6531CFCE6E5FB581409
C887B35EA883F8622F7C48EC9D0427AFE833BF46
44D0A2A43ECC8619DE8DB99C1465DB4E3C8FF995
E17972F1A3C667EEBB155A228278AA3B5F89F560
C03BE8BB8D03BE24A6C5CF2ED14EDFCEFA8E8429
2B0481C61F367A99987B7EC0ADE4B6995425151C
Ek araçlar
WinEggDrop
AF9C220D177B0B54A790C6CC135824E7C829B681
Mimikatz
4A240EDEF042AE3CE47E8E42C2395DB43190909D
FD4567BB77F40E62FD11BEBF32F4C9AC00A58D53
Netcat
751A9CBFFEC28B22105CDCAF073A371DE255F176
HTran
48230228B69D764F71A7BF8C08C85436B503109E
AceHash
D24BBB898A4A301870CAB85F836090B0FC968163
Kod imzalama sertifikası SHA-1 parmak izleri
745EAC99E03232763F98FB6099F575DFC7BDFAA3
2830DE648BF0A521320036B96CE0D82BEF05994C
Etki Alanları
n8.ahnlabinc[.]com
owa.ahnlabinc[.]com
ssl2.ahnlabinc[.]com
www2.dyn.tracker[.]com
ssl2.dyn-tracker[.]com
client.gnisoft[.]com
nmn.nhndesk[.]com
MITRE ATT&CK teknikleri
Taktik | Kimlik | Ad | Açıklama |
Kararlılık | T1013 | Bağlantı Noktası İzleyicisi | PipeMon, Yazdırma İşlemcilerini temel alan Bağlantı Noktası İzleyicisi’ne benzer bir kalıcı teknik kullanır. |
Ayrıcalık Artırma | T1134 | Erişim Belirteci Manipülasyonu | PipeMon yükleyicisi, kimliğe bürünme belirteci kullanarak yönetici ayrıcalıkları elde etmeye çalışır. |
| T1088 | Kullanıcı Hesabı Denetimini Atlama | PipeMon yükleyicisi, yükü yüklemek için UAC atlama tekniklerini kullanır. |
| T1502 | Üst PID Sahtekarlığı | PipeMon yükleyicisi, ayrıcalıkları artırmak için |
|
|
| Üst PID sahtekarlığını kullanır. |
Savunmadan Kaçınma | T1116 | Kod İmzalama | PipeMon, yükleyicisi ve ek araçları çalıntı kod imzalama sertifikalarıyla imzalanmıştır. |
| T1027 | Dosyaları veya Bilgileri Karartma | PipeMon modülleri diskte şifreli bir şekilde depolanır. |
| T1112 | Kayıt Defterini Değiştirme | PipeMon yükleyicisi, PipeMon’u Yazdırma İşlemcisi olarak yüklemek için kayıt defterini değiştirir. |
| T1055 | İşlem Yerleştirme | PipeMon, yansıtmalı yükleme kullanarak modüllerini çeşitli işlemlere yerleştirir. |
Keşfetme | T1057 | Süreç Keşfetme | PipeMon, uygun bir yerleştirme hedefi bulmak için çalışmakta olan işlemleri sürekli yineler. |
| T1063 | Güvenlik Yazılımı bulma | PipeMon, ESET ve Kaspersky yazılımlarının olup olmadığını denetler. |
Toplama | T1113 | Ekran Görüntüsü Alma | PipeMon modüllerden biri muhtemelen ekran görüntüsü yakalayıcısıdır. |
Komuta ve Kontrol | T1043 | Sık Kullanılan Bağlantı Noktaları | PipeMon |
| T1095 | Özel Komut ve Denetim Protokolü | PipeMon Communication modülü TCP üzerinden TLS temelli özel bir protokol kullanır. |
| T1032 | Standart Kriptografik Protokol | PipeMon |
| T1008 | Yedek Kanallar | Güncelleştirilmiş PipeMon sürümü, belirli bir tarihe ulaşıldığında geri dönüş kanalı kullanır. |