Článek přečtěte do 10 min.

Útočníci vždy najdou kreativní způsoby, jak obejít obranné prvky a dosáhnout svých cílů. To lze provést pomocí packerů, šifrovačů a zmatku kódu. Jedním z nejlepších způsobů, jak se vyhnout detekci a také maximalizovat kompatibilitu, je použití vlastních funkcí operačního systému. V souvislosti s hrozbami ransomwaru je pozoruhodným příkladem využití exportovaných funkcí přítomných v kryptografické knihovně DLL ADVAPI32.dll, jako jsou CryptAcquireContextACryptEncrypt a CryptDecrypt. Tímto způsobem se mohou protivníci ujistit, že malware může běžet a simulovat normální chování v různých verzích operačního systému, které tuto knihovnu DLL podporují.

I když se to zdá být dostatečně chytré, při nedávném zásahu reakce na incident upoutala naši pozornost další chytrá technika: použití nativní funkce BitLocker k šifrování celých svazků a krádež dešifrovacího klíče. Původním účelem nástroje BitLocker je řešit rizika krádeže dat nebo vystavení ze ztracených, odcizených nebo nesprávně vyřazených zařízení. Nicméně aktéři hrozeb zjistili, že tento mechanismus lze s velkým efektem znovu použít pro škodlivé účely.

V tomto incidentu byli útočníci schopni nasadit a spustit pokročilý skript VBS, který využil BitLocker k neoprávněnému šifrování souborů. Tento skript a jeho upravené verze jsme viděli v Mexiku, Indonésii a Jordánsku. V níže uvedených částech podrobně analyzujeme škodlivý kód získaný během našeho úsilí o reakci na incidenty a poskytujeme tipy pro zmírnění tohoto druhu hrozby.

Není to poprvé, co jsme viděli BitLocker použitý k šifrování disků a vyžadování výkupného. Dříve útočníci používali tento nástroj společnosti Microsoft k šifrování kritických systémů poté, co k nim přistoupili a ovládli je. V tomto případě však protivník podnikl další kroky, aby maximalizoval škody způsobené útokem a zabránil účinné reakci na incident.

Analýza VBScript

Jedním zajímavým faktem je, že útočníci se neobtěžovali oblafnout většinu kódu, jak to obvykle dělají aktéři hrozeb. Nejpravděpodobnějším vysvětlením je, že již měli plnou kontrolu nad cílovým systémem, když byl skript spuštěn. Je uložen v adresáři C:\ProgramData\Microsoft\Windows\Templates\ jako Disk.vbs. Jeho první řádky obsahují funkci, která převádí řetězec na jeho binární reprezentaci pomocí objektu ADODB.Stream. Tato funkce se později používá pro kódování dat zaslaných v požadavku HTTP POST.

Funkce Stream_StringToBinary

Funkce Stream_StringToBinary

Prvním krokem hlavní funkce skriptu je použití Windows Management Instrumentation (WMI) k dotazování na informace o operačním systému pomocí třídy Win32_OperatingSystem. U každého objektu ve výsledcích dotazu skript zkontroluje, zda se aktuální doména liší od cílové. Pokud ano, skript se automaticky dokončí. Poté zkontroluje, zda název operačního systému obsahuje „xp“, „2000“, „2003“ nebo „vista“, a pokud se verze Windows shoduje s některou z nich, skript se automaticky dokončí a sám se smaže.

Počáteční podmínky pro provedení

Počáteční podmínky pro provedení

Poté skript nadále spoléhá na WMI při dotazování na informace o OS. Poté provede operace změny velikosti disku, které se mohou lišit podle výsledku kontroly verze OS. Tyto operace se provádějí pouze na pevných discích (DriveType = 3).

V souborovém systému obvykle existují následující typy jednotek:

Pravděpodobným důvodem, proč se malware nepokouší provádět stejné operace na síťových jednotkách (DriveType = 4), je vyhnout se spouštění nástrojů pro detekci v síti.

Chcete-li změnit velikost místních jednotek v systému Windows Server 2008 nebo 2012, skript zkontroluje primární spouštěcí oddíl a uloží tyto informace.

Uloží index různých oddílů a poté pomocí diskpart provede následující akce:

  • Zmenšete velikost každého nespouštěcího oddílu o 100 MB. Tím se vytvoří 100 MB v nepřiděleném prostoru v každém oddílu kromě spouštěcího svazku;
  • Rozdělte nepřidělené místo na nové primární oddíly o velikosti 100 MB;
  • Naformátujte oddíly pomocí volby override, která v případě potřeby vynutí nejprve odpojení svazku a každému přiřadí systém souborů a písmeno jednotky;
  • Aktivujte oddíly;
  • Pokud byla procedura zmenšení úspěšná, uložte „ok“ jako proměnnou, aby skript mohl pokračovat.

Operace změny velikosti disku prováděné skriptem v systému Windows Server 2008 a 2012

Operace změny velikosti disku prováděné skriptem v systému Windows Server 2008 a 2012

Pokud je operace úspěšná, kód použije nástroj bcdboot a písmeno jednotky uložené dříve jako spouštěcí svazek k přeinstalaci spouštěcích souborů na nové primární oddíly.

Přeinstalujte spouštěcí soubory

Přeinstalujte spouštěcí soubory

Operace zmenšení oddílu pro jiné verze OS jsou podobné, ale z důvodů kompatibility jsou implementovány s jiným kódem. Níže uvedený příklad ukazuje proces aplikovaný na Windows verze 7, 8 a 8.1.

Operace změny velikosti disku v systému Windows verze 7, 8 nebo 8.1

Operace změny velikosti disku v systému Windows verze 7, 8 nebo 8.1

V systému Windows 2008 nebo 7 po dokončení procedury zmenšování oddílu proměnná matchedDrives uloží písmena jednotek oddělená čárkami, ale pouze v případě, že systém souborů je NFTS, exFAT, FAT32, ReFS nebo FAT. Kód byl upraven pro tisk příkladu:

proměnná data matchedDrives

proměnná data matchedDrives

Skript poté přidá následující položky registru:

  • fDenyTSConnections = 1: zakáže připojení RDP;
  • scforceoption = 1: vynucuje ověření pomocí čipové karty;
  • UseAdvancedStartup = 1: vyžaduje použití kódu PIN BitLocker pro ověření před spuštěním;
  • EnableBDEWithNoTPM = 1: umožňuje BitLocker bez kompatibilního čipu TPM;
  • UseTPM = 2: umožňuje použití TPM, pokud je k dispozici;
  • UseTPMPIN = 2: umožňuje použití spouštěcího PIN s TPM, pokud je k dispozici;
  • UseTPMKey = 2: umožňuje použití spouštěcího klíče s TPM, pokud je k dispozici;
  • UseTPMKeyPIN = 2: umožňuje použití spouštěcího klíče a PIN s TPM, pokud je k dispozici;
  • EnableNonTPM = 1: umožňuje BitLocker bez kompatibilního čipu TPM, vyžaduje heslo nebo spouštěcí klíč na USB flash disku;
  • UsePartialEncryptionKey = 2: vyžaduje použití spouštěcího klíče s TPM;
  • UsePIN = 2: vyžaduje použití spouštěcího PIN s TPM.

Pokud skript zjistí chybu, restartuje systém.

Úpravy registru

Úpravy registru

Dynamickou analýzou malwaru můžeme potvrdit provedené změny registru:

Je zajímavé, že tyto operace provádí několik funkcí, z nichž každá je navržena pro jinou verzi Windows. V některých podmínkách kontroluje, zda jsou nástroje BitLocker Drive Encryption aktivní prostřednictvím ID 266 nástrojů pro správu vzdáleného serveru. Malware poté zkontroluje, zda je spuštěna služba BitLocker Drive Encryption Service (BDESVC). Pokud ne, spustí službu.

Ověření BDESVC

Ověření BDESVC

Skript také změní štítek nových spouštěcích oddílů na e-mail útočníka, jak je znázorněno na obrázcích níže, takže je oběť může kontaktovat.

Úprava štítku pohonu

Úprava štítku pohonu

E-mail útočníka jako štítek disku

E-mail útočníka jako štítek disku

Poté malware deaktivuje chrániče používané k zabezpečení šifrovacího klíče BitLockeru a odstraní je. Způsob odstranění se může lišit v závislosti na verzi operačního systému. Ve scénáři Windows Server 2008 nebo Windows 7 je toho dosaženo prostřednictvím funkcí VBS, po kterých skript používá PowerShell k vynucení odstranění chráničů.

Po dokončení mazání umožňuje použití číselného hesla jako ochrany a funkce šifrování.

Vymazání chráničů

Vymazání chráničů

Důvodem pro odstranění výchozích chráničů je vyhnout se obnovení klíčů uživatelem, jako v příkladu níže.

Obnova klíčů BitLocker

Obnova klíčů BitLocker

Jako další krok vygeneruje malware 64znakový šifrovací klíč pomocí náhodného vynásobení a nahrazení následujících prvků:

  • Proměnná s čísly 0–9;
  • Slavný pangram „Rychlá hnědá liška skáče přes líného psa“ v malých a velkých písmenech, který obsahuje každé písmeno anglické abecedy;
  • Speciální znaky.

Náhodnost tohoto hesla je zajištěna semenem vytvořeným z různých prvků postiženého systému, jako je použitá paměť a statistiky sítě. Později jsou tyto informace odeslány útočníkovi. Testovali jsme logiku generování klíčů v našem prostředí a s mírnou úpravou skriptu jsme byli schopni vidět vygenerované heslo.

Proces generování klíčů

Proces generování klíčů

Kód poté převede dříve vygenerovaný šifrovací klíč na zabezpečený řetězec – možnost PowerShell, která zabraňuje vytvoření objektu typu řetězec v paměti – a efektivně povolí BitLocker na jednotkách.

Skript poté vytvoří objekt požadavku HTTP POST pomocí následujících možností:

  • Použijte WinHTTP verze 5.1.
  • Přijměte francouzský jazyk.
  • Ignorovat chyby SSL (httpRequest.Option(4) = 13056 à WinHttpRequestOption_SslErrorIgnoreFlags).
  • Zakázat přesměrování (httpRequest.Option(6) = false à WinHttpRequestOption_EnableRedirects).

Útočníci použili doménu trycloudflare.com, aby zatemnili jejich skutečnou adresu. Tato doména je legitimní, patří CloudFlare a používá se k poskytování rychlých tunelů pro vývojáře. Subdoména nakonfigurovaná útočníky byla skotská-dohoda-laundry-další.

Žádost o vytvoření

Žádost o vytvoření

Malware také obsahuje informace o stroji a vygenerované heslo jako užitečné zatížení pro požadavek POST, jak je znázorněno na obrázku níže.

Informace, které mají být zaslány v požadavku POST

Informace, které mají být zaslány v požadavku POST

Skript také obsahuje smyčku, která se pokusí pětkrát odeslat informaci útočníkovi, pokud dojde k chybě.

Opakujte postup

Opakujte postup

S některými vylepšeními se nám podařilo vytisknout data odesílaná útočníkovi, jak je znázorněno na obrázku níže. Všimněte si, že data zahrnují název počítače, verzi systému Windows, dotčené jednotky a řetězec hesla. V důsledku toho bude IP adresa oběti také zaznamenána na serveru útočníka, což jim umožní sledovat každou oběť.

Informace k odeslání

Informace k odeslání

Po odstranění chráničů BitLocker a konfiguraci šifrování disku skript projde následujícími kroky, aby zakryl stopy.

Ověří, zda je název hostitele cílem tohoto malwaru, a poté odstraní soubory:

  • \Policies\{31B2F340-016D-11D2-945F-00C04FB984F9}\MACHINE\Preferences\ScheduledTasks\ScheduledTasks.xml
  • \scripts\Login.vbs
  • \scripts\Disk.vbs
  • C:\ProgramData\Microsoft\Windows\Templates\Disk.vbs

Smazat operace

Smazat operace

Skript poté vymaže protokoly prostředí Windows PowerShell a Microsoft-Windows-PowerShell/Operational pomocí wevtutil. Zapne systémový firewall a odstraní všechna jeho pravidla. Odstraní také úlohy VolumeInit a VolumeCheck. Nakonec malware provede nucené vypnutí.

Po vypnutí se oběti zobrazí obrazovka BitLocker. Pokud se uživatel pokusí použít možnosti obnovení, neuvidí nic než zprávu „Ve vašem počítači nejsou žádné další možnosti obnovení nástroje BitLocker“.

Obrazovka obnovení nástroje BitLocker

Obrazovka obnovení nástroje BitLocker

Taktiky, techniky a postupy

Analýza ukázala, že tento aktér hrozby má rozsáhlé znalosti jazyka VBScript a vnitřních částí Windows a nástrojů, jako je WMI, diskpart a bcdboot. Níže jsou uvedeny TTP identifikované pro tento scénář.

Taktika Technika ID
Provedení Interpret příkazů a skriptů: Visual Basic T1059.005
Provedení Windows Management Instrumentation T1047
Provedení Interpret příkazů a skriptů: PowerShell T1059.001
Dopad Data zašifrována pro dopad T1486
Dopad Vypnutí/restart systému T1529
Obranný únik Vymazat protokoly událostí systému Windows T1070.001
Obranný únik Upravit registr T1112
Obranný únik Zakázat nebo upravit bránu firewall systému T1562.004
Exfiltrace Exfiltrace přes webovou službu T1041

Artefakty a digitální forenzní

Vzhledem k tomu, že místní činnost skriptu zahrnuje čištění jeho stop, vymazání některých protokolů a úloh vytvořených pro provedení a nakonec zašifrování celého disku, nebylo snadné získat forenzní artefakty k identifikaci škodlivých aktivit a nalezení příležitostí pro dešifrování.

Naštěstí byl část obsahu skriptů a provedených příkazů zaregistrován a zaznamenán službou třetí strany a ty byly shromážděny pro analýzu. To nám umožnilo získat zabezpečené řetězce, na které byly šifrovací klíče převedeny, z některých postižených systémů.

Získané bezpečné řetězce

Získané bezpečné řetězce

Jinde jsme se pokusili shromáždit síťové protokoly, kde byly uloženy požadavky POST na C2. Nejběžnější konfigurace pro protokolování webové aktivity však zahrnuje požadavky GET, ale bohužel ne POST.

Nakonec jsme získali požadavky POST, ale to bylo velmi náročné. Případ poskytuje ospravedlnění pro protokolování provozu POST a zajištění toho, že veškerá kritická systémová aktivita je předávána do centrálního úložiště s dostatečným prostorem pro ukládání dat po doporučenou dobu uchovávání (šest nebo více měsíců), aby se zabránilo ztrátě důkazů poté, co útočníci odstraní všechny jejich stopy z jednotlivé systémy.

A konečně, některé systémy v infrastruktuře zákazníka zůstaly nešifrované a byly zpočátku považovány za neovlivněné. Později jsme však zjistili, že ve skutečnosti byly ovlivněny, ale BitLocker nebyl v těchto systémech nakonfigurován. To nám umožnilo získat samotný scénář, analyzovat jeho chování a shromáždit další důkazy.

Zotavení

I když jsme mohli získat některé přístupové fráze a pevné hodnoty implementované aktérem hrozby k vytvoření šifrovacích klíčů, skript obsahuje některé proměnné hodnoty a ty se liší pro každý jednotlivý postižený systém, což ztěžuje proces dešifrování.

Síťové informace shromážděné pro použití v seedu

Síťové informace shromážděné pro použití v seedu

Zmírnění

Společnostem se doporučuje používat BitLocker nebo jiné šifrovací nástroje (jako je VeraCrypt) k ochraně podnikových tajemství. Je však třeba učinit několik opatření, aby se zabránilo zneužití útočníky.

  • Použijte robustní, správně nakonfigurované řešení EPP k detekci hrozeb, které se snaží zneužít BitLocker;
  • Implementujte řízenou detekci a odezvu (MDR) k proaktivnímu vyhledávání hrozeb;
  • Pokud je povolen BitLocker, ujistěte se, že používáte silné heslo a mějte klíče pro obnovení uložené na bezpečném místě;
  • Ujistěte se, že uživatelé mají pouze minimální oprávnění. Tímto způsobem nemohou povolit funkce šifrování nebo změnit klíče registru samy o sobě;
  • Povolit protokolování a monitorování síťového provozu. Nakonfigurujte protokolování požadavků GET i POST. V případě infekce mohou požadavky zaslané do domény útočníka obsahovat hesla nebo klíče;
  • Monitorujte události spojené se spouštěním VBS a PowerShell a ukládejte protokolované skripty a příkazy do externího úložiště s aktivitou, kterou lze lokálně odstranit;
  • Provádějte zálohy často, ukládejte je offline a testujte je.

Pokud potřebujete pomoc s vyšetřováním ransomwarového útoku a obnovou zašifrovaných dat, kontaktujte nás na gert@kaspersky.com .

Závěr

Naše reakce na incidenty a analýza malwaru jsou důkazem toho, že útočníci neustále zdokonalují svou taktiku, aby se vyhnuli detekci. V tomto incidentu jsme pozorovali zneužití nativní funkce BitLocker k neoprávněnému šifrování dat. Skript VBS ukazuje, že zákeřný aktér zapojený do tohoto útoku výborně rozumí vnitřním prvkům systému Windows. Přestože analýza skriptů nebyla vůbec složitá, tento druh hrozby je obtížné odhalit, protože jedinečné řetězce uvnitř artefaktu lze snadno upravit tak, aby obcházely pravidla YARA. Proto je nejlepší detekční metodou ve scénářích, jako jsou tyto, behaviorální analýza, která koreluje různé akce prováděné aplikací k dosažení verdiktu.

Produkty Kaspersky detekují hrozbu popsanou v tomto článku s následujícími verdikty:

  • Trojan.VBS.SAgent.gen;
  • Trojan-Ransom.VBS.BitLock.gen;
  • Trojan.Win32.Generic.

Zdroj: Kaspersky