V červnu 2023 Bitdefender Labs zveřejnily výzkumnou studii o špionážní operaci ve východní Asii. Tato operace probíhala přinejmenším od začátku roku 2022 a vykazovala vysokou úroveň sofistikovanosti , typickou pro státem podporované skupiny. I přes použití různých metod se nám nepodařilo přiřadit tyto útoky konkrétnímu aktérovi, ale cíl odpovídá zájmům subjektů působících na území Číny.
Nejzajímavějším objevem tohoto výzkumu je nová verze malwaru, kterou jsme pojmenovali RDStealer. Tento serverový implantát sleduje příchozí připojení protokolu RDP (Remote Desktop Protocol) s povoleným mapováním klientských jednotek. Připojující se klienti RDP jsou infikováni backdoorem Logutil (další přizpůsobený malware) a dochází k exfiltraci citlivých dat (například přihlašovacích údajů nebo soukromých klíčů).
Siderloading DLL (přečtěte si náš technický výklad) se v posledních letech stal jednou z nejrozšířenějších stealth technik. Úroveň maskování, pozorovaná v této kampani, však překonává vše, čeho jsme byli doposud svědky. V rámci útoku sideloading je zřetězených více knihoven DLL, vybraná umístění dobře splývají se systémem a samotný proces sideloadingu je iniciován prostřednictvím chytrého využití subsystému WMI.
Ukázky malwaru RDStealer i Logutil jsou napsány v programovacím jazyce Go. Jazyk Go je známý svou silnou podporou různých platforem, což autorům malwaru umožňuje vytvářet škodlivý kód, který lze spustit ve více operačních systémech. Při analýze domén, spojených s tímto útokem, jsme skutečně zaznamenali odkazy na systém Linux, ale také ESXi, což naznačuje, že backdoor Logutil je multiplatformní nástroj.
Ačkoli je koncept této metody útoku teoreticky znám již delší dobu, jedná se o první konkrétní případ malwaru, který ji využívá. Vzhledem k tomu, že tuto metodu lze s minimálními nebo žádnými úpravami přizpůsobit pro útoky na různé počítačové platformy koncových uživatelů (EUC), a vzhledem k tomu, že během pandemie COVID-19 došlo k většímu rozšíření těchto řešení, sdílíme tento výzkum, abychom zvýšili povědomí veřejnosti.
Toto je souhrnná verze studie špionážní operace RedClouds. Plné znění výzkumu Exposing RDStealer - Deep Dive into a Targeted Cyber-Attack Against East-Asia Infrastructure obsahuje další podrobnosti, včetně úplného seznamu indikátorů kompromitace a dalších technických poznatků.
Anatomie útoku
Na základě našeho výzkumu, který zahrnoval analýzu pasivních informací DNS, vzorků VirusTotal a objevených artefaktů, jsme zjistili, že tento útočník je aktivní nejméně od roku 2020. Zpočátku se útočník spoléhal na snadno dostupné nástroje, jako je AsyncRat nebo Cobalt Strike. Od konce roku 2021, nebo začátku roku 2022, však přešel k používání malwaru vyvinutého na zakázku. Tento přechod k vlastnímu malwaru odpovídá rostoucímu trendu pozorovanému u jiných aktérů hrozeb, kteří upravili své taktiky a úhybné manévry poté, co se rozšířily detekční nástroje (jako EDR nebo XDR).
Hlavním cílem útoku byla zřejmě krádež přístupových údajů a exfiltrace dat. V rámci únikové taktiky použili útočníci složky, u nichž je menší podezření, že obsahují malware, a které jsou často vyloučeny ze skenování bezpečnostními řešeními:
%WinDir%\System32\
%WinDir%\System32\wbem\
%WinDir%\security\database\
%PROGRAM_FILES%\f-secure\psb\diagnostics
%PROGRAM_FILES_x86%\dell\commandupdate\
%PROGRAM_FILES%\dell\md storage software\md configuration utility\
Umístění %PROGRAM_FILES% a %PROGRAM_FILES_x86% jsou pravděpodobně vybrána tak, aby napodobovala legální software. I když není možné určit, zda byl název složky zvolen náhodně, po prozkoumání soupisu hardwaru jsme potvrdili, že infikované počítače byly skutečně vyrobeny společností Dell.
Škodlivý software byl objeven také v další složce %WinDir%\security\database, která slouží jako úložný prostor pro bezpečnostní databáze v systému Windows. Společnost Microsoft poskytla pokyny, jak vyloučit konkrétní soubory v tomto umístění ze skenování bezpečnostními programy zabezpečení koncových bodů. Útočníci pravděpodobně předpokládali, že někteří administrátoři, nebo bezpečnostní řešení, se rozhodnou vyloučit celou složku místo toho, aby zavedli přesnější a podrobnější výjimky.
RDStealer
První analyzovaný specializovaný malware se zaměřuje na shromažďování dat, včetně zachycování obsahu schránky a funkce keyloggingu. Zajímavější nám však přišla schopnost sledovat příchozí připojení RDP a kompromitovat vzdálený počítač, pokud je povoleno mapování diskových jednotek klienta.
Mapování klientské jednotky (CDM) je jedním z virtuálních kanálů, implementovaných jako součást protokolu RDP, který umožňuje přenos dat mezi klientem RDP a serverem RDP (dalšími příklady virtuálních kanálů jsou schránka nebo přesměrování zvuku).
CDM je konkrétně zodpovědný za zobrazení lokálních jednotek klientského počítače (počítače, ze kterého je relace RDP zahájena) v rámci relace vzdálené plochy.
Tato funkce umožňuje uživatelům přistupovat k souborům a přenášet je mezi jejich lokálním počítačem a vzdáleným serverem nebo pracovní plochou, ke které jsou připojeni prostřednictvím protokolu RDP (ale i jiných protokolů). Tuto funkci často používají administrátoři k přenosu souborů mezi vzdáleným serverem a svou pracovní stanicí správce.
Mapování klientských jednotek však často používají i běžní koncoví uživatelé v prostředích EUC (End-user Computing), a to jak pro virtuální plochy, tak pro virtualizaci aplikací. V případě použití EUC nemají koncoví uživatelé nad touto funkcí obvykle přímou kontrolu, protože je konfigurována centrálně prostřednictvím politik. Aby tato funkce fungovala, musí být povolena jak na straně serveru, tak na straně klienta, ale běžnou praxí je, že klienti (decentralizovaní) ji mají trvale povolenou, zatímco konfigurace je spravována výhradně na straně serveru (centralizovaná). Na tomto místě je dobré připomenout, že nulová důvěryhodnost se netýká pouze sítí nebo autentifikace, ale jedná se o komplexnější princip - servery umístěné ve vnitřní síti nemusí být nutně důvěryhodnější než klienti připojující se vzdáleně.
Ačkoli nám chybí konkrétní podrobnosti o vektoru infekce a nemůžeme s konečnou platností potvrdit, zda byl napadený systém využit pro administrátorský přístup nebo pro běžnou interakci s uživateli, je důležité poznamenat, že tato technika je použitelná v obou případech. Dále je třeba zmínit, že jiná řešení, využívající mapování diskových jednotek klientů, mohou být také náchylná ke zranitelnostem, pokud využívají tsclient pro přesměrování z hostitele na klienta. Dokonce i řešení, která nespoléhají na tsclient, ale používají vlastní implementaci virtuálních kanálů, mohou být cílem útoku s minimálními úpravami kódu.
Na kompromitovaných počítačích byl nástroj RDStealer umístěn v souboru "%PROGRAM_FILES%\dell\md storage software\md configuration utility\modular disk service daemon.exe". Nástroj RDStealer je napsán v jazyce Go a po analýze kódu jsme identifikovali následující balíčky (knihovny kódu):
název balíčku | popis |
cli | Implementuje zachycování obsahu schránky pomocí rozhraní API systému Windows, například OpenClipboard a GetClipboardData; |
key | Implementuje zaznamenávání stisknutých kláves spolu s názvem okna; |
main | Funguje jako orchestrátor a používá moduly balíčků k nastavení perzistence a spuštění procedury pro sběr dat, pokud jsou splněny určité podmínky; |
modules | Implementuje různé funkce používané ke shromažďování a ukládání dat pro další exfiltraci; |
utils | Implementuje funkce šifrování a dešifrování, manipulaci s atributy souborů a funkci logování. |
Po spuštění začne hlavní funkce shromažďovat data schránky a stisky kláves z hostitelského počítače. Tato data se pravidelně ukládají do souboru protokolu C:\users\public\log.log ve formě zašifrovaných řetězců. Po zahájení sběru dat vytvoří RDStealer nekonečnou smyčku, která volá funkci diskMounted. Funkce diskMounted pravidelně kontroluje dostupnost připojení tsclient a jednoho z disků C, D, E, F, G nebo H. Tato sdílení jsou vytvořena automaticky, když je povoleno CDM, a reprezentují jednotlivé disky připojeného klienta RDP.
Po detekci jedné z těchto akcí se spustí následující funkce:
main.notifyMaster - Oznámí command & control (C2) serveru, že je klient připojen.
Main.DiskEnum - Spustí exfiltraci dat z připojeného klienta RDP.
main.writePersist - Nasazuje backdoor Logutil do připojeného klienta RDP.
notifyMaster - C2 communication
Funkce notifyMaster odesílá požadavek GET na jiný server ve stejné síti, který byl určen jako proxy server pro komunikaci s C2 infrastrukturou útočníků.
Adresa URL, na kterou je tento požadavek odeslán, má tvar https://<Adresa proxy serveru>:7443/pdr.php?name=<Host>&ip=<Adresa IP hostitele>. Toto upozornění slouží útočníkům jako signál, že jeden z napadených hostitelů RDP se pokusil exfiltrovat data z připojeného klienta, a ta jsou nyní připravena k manuálnímu stažení.
DiskEnum - Exfiltrace dat
Funkce DiskEnum hledá na připojeném klientovi RDP všechny cenné informace pro exfiltraci dat.
Prvním cílem je několik velmi specifických složek, včetně mRemoteNG (multiprotokolový správce vzdálených připojení), KeePass (správce hesel) a historie z prohlížeče Google Chrome. Pokud je některá z těchto složek nalezena, je vytvořen archiv ZIP a uložen v hostitelském počítači RDP jako C:\Users\Public\Documents\<ID><timestamp>.dat.
Lokace | ID |
\\tsclient\c\users\<user>\appdata\roaming\mremoteng | mre |
\\tsclient\c\users\<user>\appdata\roaming\keepass | keyp |
\\tsclient\c\users\<user>\appdata\local\\Google\Chrome\User Data\Default\History | chro |
To poukazuje na skutečnost, že útočníci aktivně vyhledávají přístupové údaje a uložená připojení k jiným systémům. Tento trend je patrný i v dalším kroku, kdy je klient skenován na soubory s určitými příponami v následujících umístěních: %AppData%, %LocalAppData%, Desktop, Documents, Downloads, %ProgramFiles% a %ProgramFiles(x86)%.
Soubory | ID | Detaily |
.kdb, .kdbx | kdb | Databáze hesel KeePass |
confCons.xml | mre | připojení mRemoteNG |
.rdg | rdg | Připojení Remote Desktop Connection Manager |
id_rsa | idrsa | Privátní klíče SSH |
.xsh | xsh | Připojení NetSarang Xshell |
.tlp, .bscp | tlp | Bitvise SSH Client |
.mxtsessions | mxts | Připojení MobaXterm |
Všechny umístěné soubory jsou uloženy v ZIP archivu na hostiteli RDP v následujícím místě: C:\Users\Public\Documents\<ID><timestamp>.dat.
Po dokončení exfiltrace dat ze vzdálené jednotky C začne nástroj RDStealer prověřovat písmena jednotek D, E, F, G a H, ale s trochu jiným přístupem. Místo prohledávání konkrétních umístění začne prohledávat všechny složky s následujícími výjimkami:
windows, datareporting, libreoffice, node_modules, all user, default user, user data, .rust, download, desktop, document, assembly, .git, microsoft, winsxs, en-us, mui, .net, dotnet, visual, cache, recycle, systemapp, driverstore, catroot, package, prefetch, installer, fonts, cursors |
Protože může tato rekurzivní kontrola trvat dlouho, existuje mechanismus, který omezuje její spuštění pouze jednou týdně. Soubor users\public\Videos\vcache.dat se po dokončení exfiltrace dat změní, a naposledy změněná data se porovnají s aktuálním časem, aby se určilo, zda je čas na další prověření systému. Stojí za zmínku, že tato funkce nefunguje tak, jak bylo zamýšleno - umístění tohoto souboru není platné, protože je definován jako řetězec bez písmene jednotky nebo umístění sdílené složky. Je velmi pravděpodobné, že útočníci zamýšleli vytvořit tento soubor v kompromitovaném klientovi RDP (umístění \\tsclient\c).
WritePersist - Downstream compromise
Funkce WritePersist je zodpovědná za nasazení backdooru Logutil do připojeného RDP klienta.
Nejprve získá seznam uživatelů z \\tsclient\c\users. Pro domovský adresář každého uživatele jsou z napadeného hostitele RDP do připojeného RDP klienta přeneseny následující škodlivé soubory.
Zdroj | Cílová destinace |
C:\Users\Public\Downloads\t1lnk.dat | \\tsclient\c\users\<user>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\t1lnk.dat.lnk |
C:\Users\Public\Downloads\msengine.exe | \\tsclient\c\Users\Public\Documents\msengine.exe |
C:\Users\Public\Downloads\Event.dll | \\tsclient\c\Users\Public\Documents\Event.dll |
C:\Users\Public\Downloads\event.sdb | \\tsclient\c\Users\Public\Documents\event.sdb |
C:\Users\Public\Documents\n.dat | \\tsclient\c\windows\system32\wbem\NCObjAPI.dll |
C:\Users\Public\Documents\w.dat | \\tsclient\c\windows\system32\wbem\WBEMWork.dll |
U prvních 4 souborů jsme na postižených počítačích nenašli žádné vzorky, ale zdá se, že t1lnk.dat.lnk byl při startu spouštěčem perzistence.
Poslední dva soubory jsou zavaděč a backdoor Logutil. Jak popíšeme v následující části, Logutil je iniciován chytrým využitím subsystému WMI, což naznačuje i název funkce, která tento backdoor nasazuje - WorkWithWbem (WMI je implementace WBEM od Microsoftu).
Logutil
Backdoor Logutil, napsaný v jazyce Go, implementuje typické funkce, které jsou nezbytné pro udržování přístupu do sítě oběti, jako je stahování/odesílání souborů a spouštění příkazů.
To, co činí Logutil obzvláště zajímavým, je rozsah, v jakém využívá techniky sideloadingu DLL pro obcházení detekcí, ve spojení s využitím WMI jako spouštěče pro aktivaci.
Zaznamenali jsme kombinaci pasivních (samostatné binární soubory) a aktivních (předinstalované binární soubory) zneužití DLL sideloading (pro pochopení rozdílu si přečtěte náš výklad o DLL sideloading). Některé ukázky se spoléhaly na tradičnější DLL sideloading - naplánovanou úlohu spustí spustitelný soubor, který načte knihovnu. Zajímavější variantou však bylo zneužití služby Windows Management Instrumentation (Winmgmt), které vedlo ke spuštění škodlivé binární knihovny bithostw.dll (=Logutil).
K dosažení tohoto cíle umístili útočníci škodlivý loader s názvem ncobjapi.dll do složky %WinDir%\System32\wbem. Tento podvodný implantát napodobuje legitimní knihovnu ncobjapi.dll, která se nachází v nadřazené složce %WinDir%\System32, tím, že exportuje stejné funkce a zprostředkovává volání původní knihovny. Protože podsložka \wbem je kontrolována na existenci této knihovny před System32, je škodlivá knihovna načtena jako první.
Tento implantát je velmi účinný pro vytvoření perzistence v systému. Může být spuštěn buď službou WMI (automaticky spuštěnou s několika akcemi obnovení), nebo prostřednictvím hostitelského procesu WMI. Často je spuštěno více instancí hostitelského procesu WMI (WmiPrvSE.exe) a existuje více způsobů spuštění tohoto procesu (včetně rozhraní DCOM pro vzdálená volání WMI). Knihovna ncobjapi.dll byla již dříve zneužita jinými útočníky, například skupinou Lazarus nebo operátory RadRat, ale v tomto případě je pouze součástí řetězce sideloadingu. Skutečným payloadem (načteno loaderem ncobjapi.dll) je bithostw.dll (Logutil).
Logutil může komunikovat s C2 infrastrukturou přímo nebo prostřednictvím jiného proxy serveru ve stejné síti. Příkazy z C2 se získávají prostřednictvím požadavku HTTP GET na adrese https://<host:port>/info. Níže je uveden seznam příkazů, které lze získat ze vzdáleného serveru C2:
příkaz | parametr | detaily |
set | <key>=<val> | Nastaví hodnotu (<val>) proměnné prostředí (<key>) v napadeném systému. |
load | <Dll path> nebo <base64 fileless string> | Knihovna DLL, která má být do paměti reflexivně načtena. |
c | <command> | Provede příkaz se zachycením výstupu (pomocí objektu shell) |
s | <command> | Spustí příkaz bez zachycení výstupu (pomocí objektu shell) |
t | <filepath1>,<filepath2> | Touch operace, která nastaví atributy prvního souboru na druhý soubor. |
d1 | <hex encoded data> | Zavolá CryptUnprotectData na přijatá data a odešle výsledek zpět. |
fu | | Nahrává soubor po částech do počítače oběti. |
fd | | Stáhne soubor od pořítače oběti po částech |
idle | | Spí po delší dobu; doba spánku začíná na 6 sekundách a pokaždé se prodlužuje o náhodnou celočíselnou hodnotu mezi 0 a 4; |
sleep | <int> | Spí po určený počet sekund |
ls | <path> | Provede rekurzivní výpis složky |
info | | Odešle informace o implantátu, jako je doba, po kterou běží, a přiřazené id. |
exit | | Exit |
Závěr
Kybernetičtí zločinci neustále inovují a zkoumají nové metody, jak zvýšit spolehlivost a utajení svých záškodnických aktivit. Tento útok slouží jako důkaz rostoucí sofistikovanosti moderních kybernetických útoků, ale také podtrhuje skutečnost, že útočníci mohou využít své nově nabyté dovednosti ke zneužití starších, široce rozšířených technologií. Celý text tohoto průzkumu, který zveřejnila Bitdefender Labs, obsahuje další podrobnosti, včetně úplného seznamu indikátorů kompromitace a dalších technických poznatků.
Nejlepší ochranou proti moderním útokům zůstává i nadále architektura typu "defense-in-depth". Tento přístup zahrnuje použití více vrstev překrývajících se bezpečnostních opatření navržených tak, aby poskytovaly ochranu před různorodými hrozbami.
Prvním krokem k přijetí mnohovrstevné strategie je osvojení si možností prevence. Snažte se omezit exponovanou plochu útoku a minimalizovat počet vstupních bodů, které mohou útočníci využít. Identifikujte a odstraňujte slabá místa implementací záplat a implementací řešení pro řízení rizik dříve, než je budou moci využít útočníci. Zvažte dopad napadení hostitele VDI nebo RDS na připojující se klienty, a pokud je to nutné, zkontrolujte a aktualizujte politiky přístupu.
Ačkoli se tento případ zaměřuje na přesměrování jednotky klienta, všechny virtuální kanály jsou schopny přenášet data a mohou být potenciálně zneužity. Automatizované ochranné kontroly by měly být nasazeny na všechny potenciální vstupní body vystavené útočníkům (včetně notebooků pro práci z domova nebo pracovníků na cestách). Patří sem antivirový program nové generace, ale také bezproblémově integrovaná ochrana reputace IP/URL/domény a ochrana proti dosud neznámým hrozbám. Díky tomu můžete odhalit a zablokovat většinu bezpečnostních incidentů dříve, než stihnou napáchat škody.
I přes veškerou vaši snahu se může stát, že moderní hrozby proniknou přes vaše kontroly prevence a ochrany. Zde přicházejí ke slovu vaše detekční schopnosti. Ať už tyto funkce získáte jako produkt (EDR/XDR), nebo jako službu, cílem je minimalizovat dobu, po kterou zůstávají útočníci neodhaleni.
A konečně, aby všechny tyto funkce účinně snižovaly bezpečnostní rizika, je třeba udržovat schopnosti reakce ve všech těchto oblastech. Ať už jde o aplikaci záplat před tím, než mohou být zranitelnosti zneužity, vyšetřování potenciálního bezpečnostního incidentu nebo kontrolu škod po narušení bezpečnosti, bezpečnostní operace hrají klíčovou roli při snižování bezpečnostních rizik.
Použití více vrstev zabezpečení vytváří navzájem se překrývající bariéry, které musí útočník překonat, což může snížit pravděpodobnost úspěšných útoků, omezit rozsah útoku, pokud k němu dojde, a poskytnout včasné varování před potenciálními hrozbami. V konečném důsledku tak lze zabránit tomu, aby se bezpečnostní incidenty staly narušením bezpečnosti.
Rádi bychom poděkovali Victoru Vrabie, Cristině Vatamanu, Alexandru Maximciuc a Clay Blankinship za pomoc při sestavování tohoto dokumentu.
Comments