Am MĂ€erz 2019 gouf e neie Malware-Beispill op VirusTotal eropgelueden, e populĂ€re Online-Scan-Service, macOS OceanLotus Cybergrupp. DĂ©i ausfĂŒhrbar Backdoor-Datei huet dĂ©iselwecht Funktiounen wĂ©i dĂ©i viregt Versioun vun der Malware, op dĂ©i mir eis studĂ©iert hunn. macOS, awer seng Struktur huet sech geĂ€nnert an et ass mĂ©i schwĂ©ier ze entdecken ginn. Leider konnten mir den DrĂ«pse net fannen, deen mat dĂ«ser Prouf verbonnen ass, dofir kennen mir nach net den Infektiounsvektor.
Mir publizĂ©iert kuerzem a wĂ©i d'Betreiber probĂ©ieren, d'Persistenz ze garantĂ©ieren, d'CodeausfĂ©ierung ze beschleunegen an d'Spuere vun der PrĂ€senz a Systemer ze minimisĂ©ieren. WindowsEt ass och bekannt, datt dĂ«s Cybergrupp och eng Komponent huet fir macOSDĂ«se Beitrag beschreift d'Ănnerungen an der leschter Versioun vun der Malware fir macOS am Verglach mat der viregter Versioun (), a beschreift och wĂ©i Dir d'EntschlĂ«sselung vu Strings wĂ€hrend der Analyse mat der IDA Hex-Rays API automatisĂ©iert.

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 jiddereen macOS- OceanLotus BinÀrdateien, d'Prouf ass mat UPX gepackt, awer déi meescht Packer-Identifikatiounsinstrumenter erkennen et net als solch. Dëst ass wahrscheinlech well se meeschtens eng Signatur enthalen, déi vun der PrÀsenz vun der "UPX"-String ofhÀngeg ass. Ausserdeem si Mach-O-Signaturen manner heefeg a ginn manner dacks aktualiséiert. Dës Funktioun mécht d'statesch Detektioun schwéier. Interessanterweis ass den Ufankspunkt nom Auspacken um Ufank vun der Sektioun. __cfstring am Segment .TEXT. Dës Sektioun huet FÀndel Attributer wéi am Bild ënnendrënner gewisen.

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.

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

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.

ZousÀtzlech zu dëser KonfiguratiounsÀnnerung benotzt d'Probe keng Bibliothéik fir Netzwierkfilter , 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 . 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 , 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 . 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).

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.

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.

Figur 6. Xrefs zu f_decrypt Funktioun
D'Finale Schrëft kann op fonnt ginn .
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 .
Source: will.com
