OceanLotus: aghjurnamentu di malware per macOS

In marzu 2019, una nova mostra di malware macOS da u cibergruppu OceanLotus hè stata caricata in VirusTotal, un popular serviziu di scansione in linea. U schedariu eseguibile backdoor hà e stesse capacità cum'è a versione precedente di u malware macOS chì avemu studiatu, ma a so struttura hà cambiatu è hè diventatu più difficiuli di detectà. Sfurtunatamente, ùn avemu micca pussutu truvà un dropper assuciatu cù questu campione, cusì ùn cunnosci micca ancu u vettore di l'infezzione.

Avemu publicatu recentemente post nantu à OceanLotus è cumu l'operatori cercanu di furnisce a persistenza, accelerà l'esecuzione di codice, è minimizzà l'impronta in i sistemi Windows. Hè cunnisciutu ancu chì stu gruppu ciberneticu hà ancu un cumpunente per macOS. Questu post detalla i cambiamenti in a versione più nova di u malware per macOS in paragunà cù a versione precedente (descrittu da Trend Micro), è descrive ancu cumu pudete automatizà a decryption di strings durante l'analisi cù l'API IDA Hex-Rays.

OceanLotus: aghjurnamentu di malware per macOS

Analisi

I trè parti seguenti descrizanu l'analisi di una mostra cù un hash SHA-1 E615632C9998E4D3E5ACD8851864ED09B02C77D2. U schedariu hè chjamatu torcia, I prudutti antivirus ESET u rilevanu cum'è OSX/OceanLotus.D.

Prutezzione anti-debugging è sandbox

Cum'è tutti i binari macOS OceanLotus, l'esemplariu hè imballatu cù UPX, ma a maiò parte di l'arnesi d'identificazione di i pacchetti ùn anu micca ricunnisciutu cum'è tali. Questu hè prubabilmente perchè cuntenenu soprattuttu una firma dipendente da a presenza di a stringa "UPX", in più, e signature Mach-O sò menu cumuni è ùn sò micca aghjurnati più spessu. Sta funzione rende difficiule a rilevazione statica. Curiosamente, dopu à unpacking, u puntu di entrata hè à u principiu di a sezione __cfstring in u segmentu .TEXT. Questa sezione hà attributi di bandiera cum'è mostra in l'imaghjini sottu.

OceanLotus: aghjurnamentu di malware per macOS
Figura 1. Attributi di a sezione MACH-O __cfstring

Comu mostra in Figura 2, i lochi di codice in a sezione __cfstring permette di ingannà certi arnesi di disassemblamentu affissendu codice cum'è stringhe.

OceanLotus: aghjurnamentu di malware per macOS
Figura 2. Backdoor codice detectatu da IDA cum'è dati

Una volta eseguitu, u binariu crea un filu cum'è un anti-debugger chì u solu scopu hè di verificà continuamente a presenza di un debugger. Per questu flussu:

- Prova à sbloccare qualsiasi debugger, chjamendu ptrace с PT_DENY_ATTACH cum'è un paràmetru di dumanda
- Verificate se alcuni porti esclusivi sò aperti chjamendu una funzione task_get_exception_ports
- Verifica se u debugger hè cunnessu, cum'è mostra in a figura sottu, cuntrollà a presenza di a bandiera P_TRACED in u prucessu attuale

OceanLotus: aghjurnamentu di malware per macOS
Figura 3. Verificate a cunnessione di debugger cù a funzione sysctl

Se u watchdog detecta a presenza di un debugger, a funzione hè chjamata exit. Inoltre, u sample verifica poi l'ambiente eseguendu dui cumandamenti:

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

L'esempiu poi cuntrolla u valore di ritornu contr'à una lista codificata di stringhe da i sistemi di virtualizazione cunnisciuti: aculu, vmware, virtualbox o parallelli. Infine, u prossimu cumanda verifica se a macchina hè unu di i seguenti "MBP", "MBA", "MB", "MM", "IM", "MP" è "XS". Quessi sò codici di mudelli di sistema, per esempiu, "MBP" significa MacBook Pro, "MBA" significa MacBook Air, etc.

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

Addizzioni basi

Mentre i cumandamenti di backdoor ùn anu micca cambiatu dapoi a ricerca di Trend Micro, avemu nutatu alcune altre mudificazioni. I servitori C&C utilizati in questa mostra sò abbastanza novi è sò stati creati u 22.10.2018/XNUMX/XNUMX.

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

L'URL di a risorsa hè cambiatu in /dp/B074WC4NHW/ref=gbps_img_m-9_62c3_750e6b35.
U primu pacchettu mandatu à u servitore C&C cuntene più infurmazione nantu à a macchina d'ospiti, cumprese tutte e dati raccolti da i cumandamenti in a tabella sottu.

OceanLotus: aghjurnamentu di malware per macOS

In più di stu cambiamentu di cunfigurazione, a mostra ùn usa micca una biblioteca per u filtru di a rete libcurl, ma una biblioteca esterna. Per truvà lu, u backdoor prova à decifrare ogni fugliale in u cartulare attuale usendu AES-256-CBC cù a chjave gFjMXBgyXWULmVVVzyxy, imbottitu cù zeri. Ogni schedariu hè decriptatu è salvatu cum'è /tmp/store, è un tentativu di carricà cum'è una biblioteca hè fatta cù a funzione acquapen. Quandu un tentativu di decryption risultatu in una chjama successu dlopen, u backdoor extracts funzioni esportati Boriry и ChadylonV, chì sò apparentemente rispunsevuli di a cumunicazione di a rete cù u servitore. Ùn avemu micca u dropper o altri schedari da u locu originale di u sample, cusì ùn pudemu micca analizà sta biblioteca. Inoltre, postu chì u cumpunente hè criptatu, una regula YARA basata nantu à sti strings ùn currisponde micca à u schedariu truvatu in u discu.

Cum'è discrittu in l'articulu sopra, crea ID client. Questu ID hè l'hash MD5 di u valore di ritornu di unu di i seguenti cumandamenti:

- 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}' (ottene l'indirizzu MAC)
- squadra scunnisciuta ("x1ex72x0a"), chì hè utilizatu in esemplari precedenti

Prima di l'hashing, un "0" o "1" hè aghjuntu à u valore di ritornu per indicà i privilegi di root. Questu ID client conservatu in /Library/Storage/File System/HFS/25cf5d02-e50b-4288-870a-528d56c3cf6e/pivtoken.appex, se u còdice hè esercitu cum'è root o in ~/Library/SmartCardsServices/Technology/PlugIns/drivers/snippets.ecgML in tutti l'altri casi. U schedariu hè generalmente oculatu cù a funzione _chflags, u so timestamp hè cambiatu cù u cumandimu touch –t cù un valore aleatoriu.

Decodifica di stringhe

Cum'è cù l'opzioni precedenti, e stringhe sò criptate cù AES-256-CBC (chjave esadecimale: 9D7274AD7BCEF0DED29BDBB428C251DF8B350B92 padded with zeros, and IV full with zeros) attraversu a funzione CCCrypt. A chjave hà cambiatu da e versioni precedenti, ma postu chì u gruppu usa sempre u stessu algoritmu di criptografia di stringa, a decifrazione pò esse automatizata. In più di questu post, pubblichemu un script IDA chì usa l'API Hex-Rays per decifrare e corde presenti in u schedariu binariu. Stu script pò aiutà cù l'analisi futura di OceanLotus è l'analisi di i campioni esistenti chì ùn avemu micca ancu pussutu ottene. U script hè basatu annantu à un metudu universale per riceve argumenti passati à una funzione. Inoltre, cerca l'assignazioni di parametri. U metudu pò esse reutilizatu per ottene una lista di argumenti di funzione è poi passà à u callback.

Sapendu u prototipu di funzione decifrà, u script trova tutte e referenze incruciate à sta funzione, tutti l'argumenti, poi decripta i dati è mette u testu chjaru in un cumentu à l'indirizzu di riferimentu incruciatu. Per u script per travaglià currettamente, deve esse stabilitu à l'alfabetu persunalizatu utilizatu da a funzione di decodificazione base64, è deve esse definita una variabile globale chì cuntene a durata di a chjave (in questu casu un DWORD, vede a Figura 4).

OceanLotus: aghjurnamentu di malware per macOS
Figura 4. Definizione di a variabile globale key_len

In a finestra Funzione, pudete cliccà cù u dirittu right in a funzione di decifrazione è cliccate "Extract and decrypt arguments". U script deve mette e linee decriptate in cumenti, cum'è mostra in Figura 5.

OceanLotus: aghjurnamentu di malware per macOS
Figura 5. U testu decriptatu hè postu in i cumenti

In questu modu, e corde decriptate sò cunvene inseme in a finestra IDA xrifs per sta funzione cum'è mostra in Figura 6.

OceanLotus: aghjurnamentu di malware per macOS
Figura 6. Xrefs à a funzione f_decrypt

U script finali pò esse truvatu à Github repository.

cunchiusioni

Cum'è digià dettu, OceanLotus hè in constantemente migliurà è aghjurnà u so toolkit. Sta volta, u gruppu ciberneticu hà migliuratu u malware per travaglià cù l'utilizatori di Mac. U codice ùn hà micca cambiatu assai, ma postu chì parechji utilizatori Mac ignoranu i prudutti di sicurità, a prutezzione di u malware da a rilevazione hè d'impurtanza secundaria.

I prudutti ESET anu digià rilevatu stu schedariu à u mumentu di a ricerca. Perchè a biblioteca di a rete utilizata per a cumunicazione C&C hè avà criptata nantu à u discu, u protokollu di rete esattu utilizatu da l'attaccanti ùn hè micca cunnisciutu.

Indicatori di cumprumissu

L'indicatori di cumprumissu è l'attributi MITRE ATT&CK sò ancu dispunibili GitHub.

Source: www.habr.com

Add a comment