OceanLotus: Malware Update fir macOS

Am Mäerz 2019 gouf eng nei Probe vu macOS Malware vun der Cybergrupp OceanLotus op VirusTotal eropgelueden, e populäre Online Scannen Service. D'Backdoor ausführbar Datei huet déiselwecht Fäegkeeten wéi déi fréier Versioun vun der macOS Malware déi mir studéiert hunn, awer seng Struktur huet geännert an et ass méi schwéier ze entdecken. Leider konnte mir keen Dropper fannen, deen mat dëser Probe assoziéiert ass, sou datt mir den Infektiounsvektor nach net kennen.

Mir publizéiert kuerzem Post iwwer OceanLotus a wéi d'Betreiber probéieren d'Persistenz ze bidden, d'Code-Ausféierung ze beschleunegen an de Foussofdrock op Windows Systemer ze minimiséieren. Et ass och bekannt datt dës Cyber ​​​​Grupp och e Komponent fir macOS huet. Dëse Post detailléiert d'Ännerungen an der neier Versioun vun der Malware fir macOS am Verglach mat der viregter Versioun (beschriwwen vun Trend Micro), a beschreift och wéi Dir d'Entschlësselung vu Strings während der Analyse mat der IDA Hex-Rays API automatiséiert.

OceanLotus: Malware Update fir macOS

Analyse

Déi nächst dräi Deeler beschreiwen d'Analyse vun enger Probe mat engem SHA-1 Hash E615632C9998E4D3E5ACD8851864ED09B02C77D2. De Fichier gëtt genannt flashlighted, ESET Antivirus Produkter erkennen et als OSX/OceanLotus.D.

Anti-Debugging a Sandbox Schutz

Wéi all macOS OceanLotus Binären ass d'Probe mat UPX verpackt, awer déi meescht Packager Identifikatiounsinstrumenter erkennen se net als solch. Dëst ass méiglecherweis well se meeschtens eng Ënnerschrëft enthalen ofhängeg vun der Präsenz vum "UPX" String, zousätzlech sinn Mach-O Ënnerschrëfte manner heefeg a ginn net sou dacks aktualiséiert. Dës Fonktioun mécht statesch Detektioun schwéier. Interessanterweis ass no der Auspackung den Entréespunkt um Ufank vun der Sektioun __cfstring am Segment .TEXT. Dës Sektioun huet Fändel Attributer wéi am Bild ënnendrënner gewisen.

OceanLotus: Malware Update fir macOS
Figur 1. MACH-O __cfstring Rubrik Attributer

Wéi an der Figur 2 gewisen, de Code Plaze an der Rubrik __cfstring erlaabt Iech e puer Demontage Tools ze trickéieren andeems Dir Code als Saiten affichéiert.

OceanLotus: Malware Update fir macOS
Figur 2. Backdoor Code vun IDA als Daten entdeckt

Eemol ausgefouert, erstellt de Binär e Fuedem als Anti-Debugger deem säin eenzegen Zweck ass kontinuéierlech no der Präsenz vun engem Debugger ze kontrolléieren. Fir dëse Flow:

- Probéiert all Debugger unhaken, rufft ptrace с PT_DENY_ATTACH als Ufro Parameter
- Iwwerpréift ob e puer exklusiv Häfen oppe sinn andeems Dir eng Funktioun rufft task_get_exception_ports
- Kontrolléiert ob den Debugger ugeschloss ass, wéi an der Figur hei ënnendrënner, andeems Dir d'Präsenz vum Fändel iwwerpréift P_TRACED am aktuelle Prozess

OceanLotus: Malware Update fir macOS
Figur 3. Iwwerpréift der Debugger Verbindung mat der sysctl Funktioun

Wann de Watchdog d'Präsenz vun engem Debugger erkennt, gëtt d'Funktioun genannt exit. Zousätzlech kontrolléiert d'Probe dann d'Ëmfeld andeems se zwee Kommandoen lafen:

ioreg -l | grep -e "Manufacturer" и sysctl hw.model

D'Probe kontrolléiert dann de Retourwäert géint eng haart kodéiert Lëscht vu Strings vu bekannte Virtualiséierungssystemer: ackel, vmware, virtualbox oder Parallelen. Endlech kontrolléiert de nächste Kommando ob d'Maschinn ee vun de folgende "MBP", "MBA", "MB", "MM", "IM", "MP" an "XS" ass. Dëst sinn System Modell Coden, zum Beispill, "MBP" heescht MacBook Pro, "MBA" heescht MacBook Air, etc.

system_profiler SPHardwareDataType 2>/dev/null | awk '/Boot ROM Version/ {split($0, line, ":");printf("%s", line[2]);}

Main Ergänzunge

Wärend d'Backdoor Kommandoen zënter dem Trend Micro seng Fuerschung net geännert hunn, hu mir e puer aner Ännerungen gemierkt. D'C&C Serveren, déi an dëser Probe benotzt ginn, sinn zimlech nei a goufen den 22.10.2018 erstallt.

- daff.faybilodeau[.]com
- sarc.onteagleroad[.]com
- au.charlineopkesston[.]com

D'Ressource URL huet geännert op /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
Den éischte Paket, deen un den C&C Server geschéckt gëtt, enthält méi Informatioun iwwer d'Hostmaschinn, inklusiv all d'Donnéeën, déi vun de Kommandoen an der Tabell hei drënner gesammelt ginn.

OceanLotus: Malware Update fir macOS

Zousätzlech zu dëser Konfiguratiounsännerung benotzt d'Probe keng Bibliothéik fir Netzwierkfilter libcurl, mee eng extern Bibliothéik. Fir et ze fannen, probéiert d'Backdoor all Datei am aktuellen Verzeechnes ze entschlësselen mat AES-256-CBC mam Schlëssel gFjMXBgyXWULmVVVzyxy, mat Nullen gepolstert. All Datei gëtt dekryptéiert a gespäichert als /tmp/store, an e Versuch et als Bibliothéik ze lueden gëtt mat der Funktioun gemaach dlopen. Wann en Entschlësselungsversuch zu engem erfollegräichen Uruff resultéiert dlopen, d'Backdoor extrahéiert exportéiert Funktiounen Boriry и ChadylonV, déi anscheinend fir d'Netzkommunikatioun mam Server verantwortlech sinn. Mir hunn net den Dropper oder aner Dateie vun der ursprénglecher Plaz vun der Probe, also kënne mir dës Bibliothéik net parséieren. Ausserdeem, well d'Komponente verschlësselt ass, passt eng YARA Regel baséiert op dëse Saiten net mat der Datei déi op der Disk fonnt gëtt.

Wéi am uewe genannten Artikel beschriwwen, erstellt et clientID. Dës ID ass den MD5 Hash vum Retourwäert vun engem vun de folgende Kommandoen:

- 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}' (kréien MAC Adress)
- onbekannt Team ("x1ex72x0a"), déi a fréiere Proben benotzt gëtt

Virum Hashing gëtt e "0" oder "1" zum Retourwäert bäigefüügt fir Root Privilegien unzeweisen. Dëst clientID gespäichert an /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, wann de Code als Root oder an ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML an all anere Fäll leeft. D'Datei ass normalerweis verstoppt mat der Funktioun _chflags, säin Zäitstempel gëtt mam Kommando geännert touch –t mat engem zoufälleg Wäert.

Decodéieren Strings

Wéi mat fréiere Optiounen sinn d'Strings verschlësselt mat AES-256-CBC (hexadezimal Schlëssel: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 mat Nullen padded, an IV mat Nullen gefëllt) duerch d'Funktioun CCCrypt. De Schlëssel huet aus fréiere Versioune geännert, awer well de Grupp nach ëmmer deeselwechte String-Verschlësselungsalgorithmus benotzt, kann d'Entschlësselung automatiséiert ginn. Zousätzlech zu dësem Post verëffentleche mir en IDA Skript deen den Hex-Rays API benotzt fir d'Strings ze entschlësselen, déi an der binärer Datei präsent sinn. Dëst Skript kann mat zukünfteg Analyse vun OceanLotus an Analyse vun bestehend Echantillon hëllefen, datt mir nach net konnt kréien. De Skript baséiert op enger universeller Method fir Argumenter ze kréien, déi un eng Funktioun weiderginn. Zousätzlech kuckt et Parameter Uerderen. D'Method ka weiderbenotzt ginn fir eng Lëscht vu Funktiounsargumenter ze kréien an se dann un den Callback weiderginn.

Wësse vun der Funktioun Prototyp decrypt, fënnt de Skript all Kräizreferenzen op dës Funktioun, all Argumenter, entschlësselt dann d'Donnéeën a setzt Kloertext an engem Kommentar op der Kräizreferenzadress. Fir datt de Skript richteg funktionnéiert, muss et op dat personaliséiert Alfabet gesat ginn, dat vun der Base64-Dekodéierungsfunktioun benotzt gëtt, an eng global Variabel muss definéiert ginn, déi d'Längt vum Schlëssel enthält (an dësem Fall en DWORD, kuckt Bild 4).

OceanLotus: Malware Update fir macOS
Figur 4. Definitioun vun der globaler Variabel key_len

An der Funktiounsfenster kënnt Dir op d'Entschlësselungsfunktioun klickt a klickt op "Argumenter extrahéieren an entschlësselen." De Skript soll déi entschlësselte Linnen an de Kommentarer setzen, wéi an der Figur 5.

OceanLotus: Malware Update fir macOS
Figur 5. Den entschlësselten Text gëtt an de Kommentarer gesat

Op dës Manéier ginn déi entschlësselte Saiten bequem an der IDA Fënster zesummegesat xref fir dës Funktioun wéi an der Figur 6 gewisen.

OceanLotus: Malware Update fir macOS
Figur 6. Xrefs zu f_decrypt Funktioun

D'Finale Schrëft kann op fonnt ginn Github - Repository.

Konklusioun

Wéi scho gesot, OceanLotus verbessert an aktualiséiert seng Toolkit konstant. Dës Kéier huet d'Cybergrupp d'Malware verbessert fir mat Mac Benotzer ze schaffen. De Code huet net vill geännert, awer well vill Mac Benotzer d'Sécherheetsprodukter ignoréieren, ass de Schutz vu Malware virun der Detektioun vu sekundärer Wichtegkeet.

ESET Produkter hunn dës Datei schonn zu der Zäit vun der Fuerschung entdeckt. Well d'Netzbibliothéik, déi fir C&C Kommunikatioun benotzt gëtt, elo op Disk verschlësselt ass, ass de genaue Netzwierkprotokoll, deen vun den Ugräifer benotzt gëtt, nach net bekannt.

Indikatoren vum Kompromëss

Indicateuren vun Kompromëss souwéi MITER ATT & CK Attributer sinn och sinn op GitHub.

Source: will.com

Setzt e Commentaire