I mars 2019 laddades ett nytt prov av macOS-skadlig programvara från cybergruppen OceanLotus upp till VirusTotal, en populär skanningstjänst online. Den körbara bakdörrsfilen har samma möjligheter som den tidigare versionen av macOS skadlig programvara som vi studerade, men dess struktur har förändrats och det har blivit svårare att upptäcka. Tyvärr kunde vi inte hitta en droppare associerad med detta prov, så vi känner ännu inte till infektionsvektorn.
Vi publicerade nyligen
Analys
De följande tre delarna beskriver analysen av ett prov med en SHA-1-hash E615632C9998E4D3E5ACD8851864ED09B02C77D2
. Filen kallas ficklampa, ESETs antivirusprodukter upptäcker det som OSX/OceanLotus.D.
Anti-debugging och sandlådeskydd
Som alla macOS OceanLotus-binärfiler är provet paketerat med UPX, men de flesta verktyg för paketerares identifiering känner inte igen det som sådant. Detta beror förmodligen på att de mestadels innehåller en signatur beroende på närvaron av "UPX"-strängen, dessutom är Mach-O-signaturer mindre vanliga och uppdateras inte lika ofta. Denna funktion gör statisk detektering svår. Intressant nog, efter uppackning är ingångspunkten i början av avsnittet __cfstring
i segmentet .TEXT
. Det här avsnittet har flaggattribut som visas i bilden nedan.
Figur 1. MACH-O __cfstring sektionsattribut
Som visas i figur 2, kodplatserna i avsnittet __cfstring
låter dig lura några demonteringsverktyg genom att visa kod som strängar.
Figur 2. Bakdörrskod upptäckt av IDA som data
När den väl har körts skapar binären en tråd som en anti-debugger vars enda syfte är att kontinuerligt kontrollera förekomsten av en debugger. För detta flöde:
— Försöker koppla ur valfri debugger, ringer ptrace
с PT_DENY_ATTACH
som en begäran parameter
- Kontrollerar om några exklusiva portar är öppna genom att anropa en funktion task_get_exception_ports
- Kontrollerar om debuggern är ansluten, som visas i figuren nedan, genom att kontrollera närvaron av flaggan P_TRACED
i den pågående processen
Figur 3. Kontrollera felsökningsanslutningen med sysctl-funktionen
Om vakthunden upptäcker närvaron av en debugger anropas funktionen exit
. Dessutom kontrollerar provet sedan miljön genom att köra två kommandon:
ioreg -l | grep -e "Manufacturer" и sysctl hw.model
Provet kontrollerar sedan returvärdet mot en hårdkodad lista med strängar från kända virtualiseringssystem: acle, vmware, virtualbox eller paralleller. Slutligen kontrollerar nästa kommando om maskinen är en av följande "MBP", "MBA", "MB", "MM", "IM", "MP" och "XS". Dessa är systemmodellkoder, till exempel betyder "MBP" MacBook Pro, "MBA" betyder MacBook Air, etc.
system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}
Grundläggande tillägg
Även om bakdörrskommandona inte har ändrats sedan Trend Micros forskning, märkte vi några andra ändringar. C&C-servrarna som används i detta exempel är ganska nya och skapades den 22.10.2018/XNUMX/XNUMX.
- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com
Resursens URL har ändrats till /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35
.
Det första paketet som skickas till C&C-servern innehåller mer information om värddatorn, inklusive all data som samlas in av kommandona i tabellen nedan.
Utöver denna konfigurationsändring använder inte provet något bibliotek för nätverksfiltrering gFjMXBgyXWULmVVVzyxy
, fylld med nollor. Varje fil dekrypteras och sparas som /tmp/store
, och ett försök att ladda det som ett bibliotek görs med funktionen dlopen
, extraherar bakdörren exporterade funktioner Boriry
и ChadylonV
, som tydligen är ansvariga för nätverkskommunikation med servern. Vi har inte dropparen eller andra filer från provets ursprungliga plats, så vi kan inte analysera det här biblioteket. Dessutom, eftersom komponenten är krypterad, kommer en YARA-regel baserad på dessa strängar inte att matcha filen som finns på disken.
Som beskrivs i artikeln ovan skapar det Klient ID. Detta ID är MD5-hash för returvärdet för ett av följande kommandon:
- 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}'
(skaffa MAC-adress)
- okänt team ("x1ex72x0a
"), som används i tidigare exempel
Innan hashing läggs en "0" eller "1" till returvärdet för att indikera root-privilegier. Detta Klient ID lagras i /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex
, om koden körs som root eller i ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML i alla andra fall. Filen döljs vanligtvis med funktionen touch –t
med ett slumpmässigt värde.
Avkodning av strängar
Som med tidigare alternativ är strängarna krypterade med AES-256-CBC (hexadecimal nyckel: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92
utfylld med nollor och IV fylld med nollor) genom funktionen
Att känna till funktionsprototypen Avkryptera, hittar skriptet alla korsreferenser till den här funktionen, alla argument, dekrypterar sedan data och placerar vanlig text i en kommentar på korsreferensadressen. För att skriptet ska fungera korrekt måste det ställas in på det anpassade alfabetet som används av avkodningsfunktionen base64, och en global variabel måste definieras som innehåller nyckelns längd (i detta fall ett DWORD, se figur 4).
Figur 4. Definition av den globala variabeln key_len
I fönstret Funktion kan du högerklicka på dekrypteringsfunktionen och klicka på "Extrahera och dekryptera argument." Skriptet ska placera de dekrypterade raderna i kommentarer, som visas i figur 5.
Bild 5. Den dekrypterade texten placeras i kommentarerna
På så sätt placeras de dekrypterade strängarna bekvämt tillsammans i IDA-fönstret xrefs för denna funktion som visas i figur 6.
Figur 6. Xrefs till f_decrypt funktion
Det slutliga manuset finns på
Utgång
Som redan nämnts förbättrar och uppdaterar OceanLotus ständigt sin verktygslåda. Den här gången har cybergruppen förbättrat skadlig programvara för att fungera med Mac-användare. Koden har inte förändrats mycket, men eftersom många Mac-användare ignorerar säkerhetsprodukter är det av underordnad betydelse att skydda skadlig programvara från upptäckt.
ESET-produkter upptäckte redan den här filen vid tidpunkten för forskningen. Eftersom nätverksbiblioteket som används för C&C-kommunikation nu är krypterat på disk, är det exakta nätverksprotokollet som angriparna använder ännu inte känt.
Indikatorer på kompromiss
Indikatorer för kompromiss samt MITER ATT&CK-attribut finns också tillgängliga på
Källa: will.com