V březnu 2019 byl do VirusTotal, oblíbené online skenovací služby, nahrán nový vzorek malwaru macOS od kybernetické skupiny OceanLotus. Spustitelný soubor backdoor má stejné možnosti jako předchozí verze malwaru macOS, který jsme studovali, ale jeho struktura se změnila a bylo obtížnější jej odhalit. Bohužel se nám nepodařilo najít kapátko spojené s tímto vzorkem, takže dosud neznáme vektor infekce.
Nedávno jsme zveřejnili
Analýza
Další tři části popisují analýzu vzorku s hash SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2
. Soubor se nazývá na baterku, antivirové produkty ESET jej detekují jako OSX/OceanLotus.D.
Ochrana proti ladění a sandboxu
Stejně jako všechny binární soubory macOS OceanLotus je vzorek zabalen s UPX, ale většina nástrojů pro identifikaci balíčků jej jako takový nerozpozná. Je to pravděpodobně proto, že většinou obsahují podpis závislý na přítomnosti řetězce „UPX“, navíc podpisy Mach-O jsou méně časté a nejsou tak často aktualizovány. Tato funkce ztěžuje detekci statické elektřiny. Zajímavé je, že po vybalení je vstupní bod na začátku sekce __cfstring
v segmentu .TEXT
. Tato sekce má atributy vlajky, jak je znázorněno na obrázku níže.
Obrázek 1. Atributy sekce MACH-O __cfstring
Jak je znázorněno na obrázku 2, umístění kódu v sekci __cfstring
umožňuje oklamat některé nástroje pro demontáž zobrazením kódu jako řetězců.
Obrázek 2. Kód zadních vrátek detekovaný IDA jako data
Jakmile je binární program spuštěn, vytvoří vlákno jako anti-debugger, jehož jediným účelem je neustále kontrolovat přítomnost debuggeru. Pro tento tok:
— Pokusí se odpojit jakýkoli debugger, volá ptrace
с PT_DENY_ATTACH
jako parametr požadavku
- Voláním funkce kontroluje, zda jsou otevřené některé exkluzivní porty task_get_exception_ports
- Zkontroluje, zda je připojen ladicí program, jak je znázorněno na obrázku níže, kontrolou přítomnosti příznaku P_TRACED
v aktuálním procesu
Obrázek 3. Kontrola připojení debuggeru pomocí funkce sysctl
Pokud hlídací pes detekuje přítomnost debuggeru, je funkce volána exit
. Kromě toho ukázka zkontroluje prostředí spuštěním dvou příkazů:
ioreg -l | grep -e "Manufacturer" и sysctl hw.model
Ukázka poté zkontroluje návratovou hodnotu proti pevně zakódovanému seznamu řetězců ze známých virtualizačních systémů: acle, vmware, VirtualBox nebo paralely. Nakonec další příkaz zkontroluje, zda je stroj jedním z následujících „MBP“, „MBA“, „MB“, „MM“, „IM“, „MP“ a „XS“. Jedná se o kódy systémových modelů, například „MBP“ znamená MacBook Pro, „MBA“ znamená MacBook Air atd.
system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}
Hlavní doplňky
Zatímco příkazy zadních vrátek se od výzkumu Trend Micro nezměnily, všimli jsme si několika dalších úprav. Servery C&C použité v tomto vzorku jsou poměrně nové a byly vytvořeny 22.10.2018. XNUMX. XNUMX.
- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com
Adresa URL zdroje se změnila na /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35
.
První paket odeslaný na server C&C obsahuje více informací o hostitelském počítači, včetně všech dat shromážděných příkazy v tabulce níže.
Kromě této změny konfigurace ukázka nepoužívá knihovnu pro filtrování sítě gFjMXBgyXWULmVVVzyxy
, doplněné nulami. Každý soubor je dešifrován a uložen jako /tmp/store
a pomocí funkce se provede pokus o načtení jako knihovny dlopen
, backdoor extrahuje exportované funkce Boriry
и ChadylonV
, které jsou zřejmě zodpovědné za síťovou komunikaci se serverem. Nemáme kapátko ani jiné soubory z původního umístění ukázky, takže tuto knihovnu nemůžeme analyzovat. Navíc, protože je komponenta zašifrována, nebude pravidlo YARA založené na těchto řetězcích odpovídat souboru nalezenému na disku.
Jak je popsáno ve výše uvedeném článku, vytváří clientID. Toto ID je MD5 hash návratové hodnoty jednoho z následujících příkazů:
- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformSerialNumber/ { split($0, line, """); printf("%s", line[4]); }'
- ioreg -rd1 -c IOPlatformExpertDevice | awk '/IOPlatformUUID/ { split($0, line, """); printf("%s", line[4]); }'
- ifconfig en0 | awk '/ether /{print $2}'
(získat MAC adresu)
- neznámý tým ("x1ex72x0a
"), který je použit v předchozích ukázkách
Před hashováním je k vrácené hodnotě přidána "0" nebo "1", která označuje oprávnění root. Tento clientID uloženy v /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex
, pokud je kód spuštěn jako root nebo ve všech ostatních případech v ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML. Soubor je obvykle skryt pomocí funkce touch –t
s náhodnou hodnotou.
Dekódovací řetězce
Stejně jako u předchozích možností jsou řetězce šifrovány pomocí AES-256-CBC (hexadecimální klíč: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92
doplněné nulami a IV vyplněné nulami) prostřednictvím funkce
Znát funkční prototyp dešifrovat, skript najde všechny křížové odkazy na tuto funkci, všechny argumenty, poté dešifruje data a umístí prostý text do komentáře na adresu křížového odkazu. Aby skript fungoval správně, musí být nastaven na vlastní abecedu používanou dekódovací funkcí base64 a musí být definována globální proměnná obsahující délku klíče (v tomto případě DWORD, viz obrázek 4).
Obrázek 4. Definice globální proměnné key_len
V okně Funkce můžete kliknout pravým tlačítkem na funkci dešifrování a kliknout na „Extrahovat a dešifrovat argumenty“. Skript by měl umístit dešifrované řádky do komentářů, jak je znázorněno na obrázku 5.
Obrázek 5. Dešifrovaný text je umístěn v komentářích
Tímto způsobem jsou dešifrované řetězce pohodlně umístěny společně v okně IDA externí reference pro tuto funkci, jak je znázorněno na obrázku 6.
Obrázek 6. Xrefs funkce f_decrypt
Finální skript najdete na
Výkon
Jak již bylo zmíněno, OceanLotus neustále vylepšuje a aktualizuje svou sadu nástrojů. Tentokrát kybernetická skupina vylepšila malware pro práci s uživateli počítačů Mac. Kód se příliš nezměnil, ale protože mnoho uživatelů Maců bezpečnostní produkty ignoruje, je ochrana malwaru před detekcí druhořadá.
Produkty ESET tento soubor již v době výzkumu detekovaly. Vzhledem k tomu, že síťová knihovna používaná pro komunikaci C&C je nyní na disku šifrována, není zatím znám přesný síťový protokol, který útočníci použili.
Ukazatele kompromisu
Ukazatele kompromisu a také atributy MITER ATT&CK jsou k dispozici na
Zdroj: www.habr.com