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
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.
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.
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
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.
In più di stu cambiamentu di cunfigurazione, a mostra ùn usa micca una biblioteca per u filtru di a rete gFjMXBgyXWULmVVVzyxy
, imbottitu cù zeri. Ogni schedariu hè decriptatu è salvatu cum'è /tmp/store
, è un tentativu di carricà cum'è una biblioteca hè fatta cù a funzione 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 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
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).
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.
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.
Figura 6. Xrefs à a funzione f_decrypt
U script finali pò esse truvatu à
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
Source: www.habr.com