ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus

In questo post vi racconteremo come il gruppo informatico OceanLotus (APT32 e APT-C-00) ha recentemente utilizzato uno degli exploit pubblicamente disponibili per CVE-2017-11882, vulnerabilità legate alla corruzione della memoria in Microsoft Office e come il malware del gruppo riesce a persistere sui sistemi compromessi senza lasciare traccia. Successivamente descriveremo come, dall’inizio del 2019, il gruppo utilizza archivi autoestraenti per eseguire il codice.

OceanLotus è specializzata nello spionaggio informatico, con obiettivi prioritari i paesi del sud-est asiatico. Gli aggressori falsificano documenti che attirano l'attenzione delle potenziali vittime per convincerle a eseguire la backdoor e stanno anche lavorando allo sviluppo di strumenti. I metodi utilizzati per creare honeypot variano a seconda degli attacchi, dai file a doppia estensione, agli archivi autoestraenti, ai documenti con macro, agli exploit noti.

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus

Utilizzando un exploit in Microsoft Equation Editor

A metà del 2018, OceanLotus ha condotto una campagna sfruttando la vulnerabilità CVE-2017-11882. Uno dei documenti dannosi del cyber gruppo è stato analizzato dagli specialisti del 360 Threat Intelligence Center (ricerca in cinese), inclusa una descrizione dettagliata dell'exploit. Il post seguente contiene una panoramica di tale documento dannoso.

La prima fase

documento FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) è simile a quello menzionato nello studio sopra. È interessante perché si rivolge ad un'utenza interessata alla politica cambogiana (CNRP - Partito di Soccorso Nazionale della Cambogia, sciolto a fine 2017). Nonostante l'estensione .doc, il documento è in formato RTF (vedi immagine sotto), contiene codice spazzatura ed è anche distorto.

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 1. "Spazzatura" in RTF

Anche se sono presenti elementi confusi, Word apre correttamente il file RTF. Come puoi vedere nella Figura 2, è presente una struttura EQNOLEFILEHDR all'offset 0xC00, seguita da un'intestazione MTEF e quindi da una voce MTEF (Figura 3) per il carattere.

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 2. Valori di immissione FONT

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 3. Formato di registrazione FONT

Possibile traboccamento nel campo Nome, poiché le sue dimensioni non vengono controllate prima della copia. Un nome troppo lungo attiva una vulnerabilità. Come puoi vedere dal contenuto del file RTF (offset 0xC26 nella Figura 2), il buffer è riempito con shellcode seguito da un comando fittizio (0x90) e l'indirizzo del mittente 0x402114. L'indirizzo è un elemento di dialogo in EQNEDT32.exe, indicando le istruzioni RET. Ciò fa sì che l'EIP punti all'inizio del campo Nomecontenente lo shellcode.

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 4. Inizio dello shellcode dell'exploit

indirizzo 0x45BD3C memorizza una variabile che viene dereferenziata finché non raggiunge un puntatore alla struttura attualmente caricata MTEFData. Il resto dello shellcode è qui.

Lo scopo dello shellcode è eseguire la seconda parte di shellcode incorporata nel documento aperto. Lo shellcode originale tenta innanzitutto di trovare il descrittore di file del documento aperto eseguendo un'iterazione su tutti i descrittori di sistema (NtQuerySystemInformation con un argomento SystemExtendedHandleInformation) e controllando se corrispondono PID descrittore e PID processo WinWord e se il documento è stato aperto con una maschera di accesso - 0x12019F.

Per confermare che è stato trovato l'handle corretto (e non l'handle di un altro documento aperto), viene visualizzato il contenuto del file utilizzando la funzione CreateFileMapping, e lo shellcode controlla se gli ultimi quattro byte del documento corrispondono a "yyyy"(Metodo di caccia alle uova). Una volta trovata una corrispondenza, il documento viene copiato in una cartella temporanea (GetTempPath) come ole.dll. Successivamente vengono letti gli ultimi 12 byte del documento.

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 5. Indicatori di fine documento

Valore a 32 bit tra i marcatori AABBCCDD и yyyy è l'offset del successivo shellcode. Si chiama utilizzando la funzione CreateThread. Estratto lo stesso shellcode utilizzato in precedenza dal gruppo OceanLotus. Script di emulazione Python, che abbiamo rilasciato a marzo 2018, funziona ancora per la discarica di secondo stadio.

La seconda fase

Rimozione dei componenti

I nomi di file e directory vengono scelti dinamicamente. Il codice seleziona casualmente il nome dell'eseguibile o del file DLL in C:Windowssystem32. Quindi effettua una richiesta alle sue risorse e recupera il campo FileDescription da utilizzare come nome della cartella. Se non funziona, il codice seleziona casualmente il nome di una cartella dalle directory %ProgramFiles% o C:Windows (da GetWindowsDirectoryW). Evita di utilizzare un nome che potrebbe entrare in conflitto con i file esistenti e garantisce che non contenga le seguenti parole: windows, Microsoft, desktop, system, system32 o syswow64. Se la directory esiste già, al nome viene aggiunto "NLS_{6 caratteri}".

risorsa 0x102 viene analizzato e i file vengono scaricati %ProgramFiles% o %AppData%, in una cartella selezionata casualmente. Ora di creazione modificata per avere gli stessi valori di kernel32.dll.

Ad esempio, ecco la cartella e l'elenco dei file creati selezionando l'eseguibile C:Windowssystem32TCPSVCS.exe come fonte di dati.

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 6. Estrazione di vari componenti

Struttura delle risorse 0x102 in un contagocce è piuttosto complesso. In poche parole contiene:
— Nomi dei file
— Dimensioni e contenuto del file
— Formato di compressione (COMPRESSION_FORMAT_LZNT1, utilizzato dalla funzione RtlDecompressBuffer)

Il primo file viene reimpostato come TCPSVCS.exe, il che è legittimo AcroTranscoder.exe (secondo FileDescription, SHA-1: 2896738693A8F36CC7AD83EF1FA46F82F32BE5A3).

Potresti aver notato che alcuni file DLL sono più grandi di 11 MB. Questo perché all'interno del file eseguibile viene inserito un grande buffer contiguo di dati casuali. È possibile che questo sia un modo per evitare il rilevamento da parte di alcuni prodotti di sicurezza.

Garantire la persistenza

risorsa 0x101 nel dropper contiene due numeri interi a 32 bit che specificano come deve essere fornita la persistenza. Il valore del primo specifica come persisterà il malware senza diritti di amministratore.

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Tabella 1. Meccanismo di persistenza senza diritti di amministratore

Il valore del secondo numero intero specifica in che modo il malware dovrebbe raggiungere la persistenza durante l'esecuzione con diritti di amministratore.

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Tabella 2. Meccanismo di persistenza con diritti di amministratore

Il nome del servizio è il nome del file senza estensione; il nome visualizzato è il nome della cartella, ma se esiste già, viene aggiunta la stringa “Revision 1” (il numero aumenta finché non viene trovato un nome non utilizzato). Gli operatori si sono assicurati che la persistenza nel servizio fosse solida: in caso di guasto, il servizio dovrebbe essere riavviato dopo 1 secondo. Poi il valore WOW64 La chiave di registro del nuovo servizio è impostata su 4, a indicare che si tratta di un servizio a 32 bit.

Un'attività pianificata viene creata tramite diverse interfacce COM: ITaskScheduler, ITask, ITaskTrigger, IPersistFile и ITaskScheduler. In sostanza, il malware crea un'attività nascosta, imposta le informazioni sull'account insieme alle informazioni dell'utente o dell'amministratore corrente, quindi imposta il trigger.

Si tratta di un'attività giornaliera con una durata di 24 ore e intervalli tra due esecuzioni di 10 minuti, il che significa che verrà eseguita ininterrottamente.

Un po' dannoso

Nel nostro esempio, il file eseguibile TCPSVCS.exe (AcroTranscoder.exe) è un software legittimo che carica DLL che vengono reimpostate insieme ad esso. In questo caso è interessante Flash Video Extension.dll.

La sua funzione DLLMain chiama semplicemente un'altra funzione. Sono presenti alcuni predicati fuzzy:

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 7. Predicati fuzzy

Dopo questi controlli fuorvianti, il codice ottiene una sezione .text файла TCPSVCS.exe, cambia la sua difesa in PAGE_EXECUTE_READWRITE e lo riscrive aggiungendo istruzioni fittizie:

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 8. Sequenza di istruzioni

Alla fine all'indirizzo della funzione FLVCore::Uninitialize(void), esportato Flash Video Extension.dll, vengono aggiunte le istruzioni CALL. Ciò significa che dopo il caricamento della DLL dannosa, quando il runtime chiama WinMain в TCPSVCS.exe, il puntatore dell'istruzione punterà a NOP, causando FLVCore::Uninitialize(void), prossima fase.

La funzione crea semplicemente un mutex a partire da {181C8480-A975-411C-AB0A-630DB8B0A221}seguito dal nome utente corrente. Quindi legge il file *.db3 scaricato, che contiene codice indipendente dalla posizione, e utilizza CreateThread per eseguire il contenuto.

Il contenuto del file *.db3 è lo shellcode utilizzato tipicamente dal gruppo OceanLotus. Abbiamo nuovamente decompresso con successo il suo payload utilizzando lo script dell'emulatore che abbiamo pubblicato su GitHub.

Lo script estrae la fase finale. Questo componente è una backdoor, che abbiamo già analizzato precedente studio OceanLotus. Ciò può essere determinato dal GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} file binario. La configurazione del malware è ancora crittografata nella risorsa PE. Ha più o meno la stessa configurazione, ma i server C&C sono diversi dai precedenti:

- andreagahuvrauvin[.]com
- byronorenstein[.]com
- stienollmache[.]xyz

Il team di OceanLotus dimostra ancora una volta una combinazione di diverse tecniche per evitare il rilevamento. Sono tornati con un diagramma “raffinato” del processo di infezione. Scegliendo nomi casuali e riempiendo gli eseguibili con dati casuali, riducono il numero di IoC affidabili (basati su hash e nomi di file). Inoltre, grazie al caricamento di DLL di terze parti, gli aggressori devono solo rimuovere il file binario legittimo AcroTranscoder.

Archivi autoestraenti

Dopo i file RTF, il gruppo è passato agli archivi autoestraenti (SFX) con icone di documenti comuni per confondere ulteriormente l'utente. Threatbook ha scritto a riguardo (collegamento in cinese). All'avvio, i file RAR autoestraenti vengono rilasciati e vengono eseguite DLL con estensione .ocx, il cui payload finale è stato precedentemente documentato {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Da metà gennaio 2019, OceanLotus riutilizza questa tecnica, modificando però nel tempo alcune configurazioni. In questa sezione parleremo della tecnica e dei cambiamenti.

Creare un'esca

documento THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) è stato trovato per la prima volta nel 2018. Questo file SFX è stato creato saggiamente - nella descrizione (Informazioni sulla versione) dice che questa è un'immagine JPEG. Lo script SFX è simile al seguente:

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 9. Comandi SFX

Il malware si ripristina {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), nonché un'immagine 2018 thich thong lac.jpg.

L'immagine esca è simile alla seguente:

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 10. Immagine esca

Potresti aver notato che le prime due righe nello script SFX chiamano due volte il file OCX, ma questo non è un errore.

{9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (ShLd.dll)

Il flusso di controllo di un file OCX è molto simile a quello di altri componenti di OceanLotus: molte sequenze di comandi JZ/JNZ и PUSH/RET, in alternanza con il codice spazzatura.

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 11. Codice offuscato

Dopo aver filtrato il codice spazzatura, esporta DllRegisterServer, chiamato regsvr32.exe, assomiglia a questo:

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 12. Codice installatore di base

Insomma, alla prima chiamata DllRegisterServer l'esportazione imposta il valore del registro HKCUSOFTWAREClassesCLSID{E08A0F4B-1F65-4D4D-9A09-BD4625B9C5A1}Model per l'offset crittografato nella DLL (0x10001DE0).

Quando la funzione viene chiamata una seconda volta, legge lo stesso valore ed viene eseguita a quell'indirizzo. Da qui vengono lette ed eseguite la risorsa e molte azioni nella RAM.

Lo shellcode è lo stesso caricatore PE utilizzato nelle precedenti campagne OceanLotus. Può essere emulato utilizzando la nostra sceneggiatura. Alla fine si resetta db293b825dcc419ba7dc2c49fa2757ee.dll, lo carica in memoria ed esegue DllEntry.

La DLL estrae il contenuto della sua risorsa, lo decrittografa (AES-256-CBC) e lo decomprime (LZMA). La risorsa ha un formato specifico facile da decompilare.

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 13. Struttura di configurazione del programma di installazione (KaitaiStruct Visualizer)

La configurazione è specificata esplicitamente: a seconda del livello di privilegio verranno scritti i dati binari %appdata%IntellogsBackgroundUploadTask.cpl o %windir%System32BackgroundUploadTask.cpl (o SysWOW64 per sistemi a 64 bit).

Un'ulteriore persistenza è garantita creando un'attività con il nome BackgroundUploadTask[junk].jobDove [junk] rappresenta un insieme di byte 0x9D и 0xA0.

Nome dell'applicazione dell'attività %windir%System32control.exee il valore del parametro è il percorso del file binario scaricato. L'attività nascosta viene eseguita ogni giorno.

Strutturalmente, un file CPL è una DLL con un nome interno ac8e06de0a6c4483af9837d96504127e.dll, che esporta una funzione CPlApplet. Questo file decrittografa la sua unica risorsa {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, quindi carica questa DLL e chiama la sua unica esportazione DllEntry.

File di configurazione della backdoor

La configurazione della backdoor è crittografata e incorporata nelle sue risorse. La struttura del file di configurazione è molto simile alla precedente.

ESET: nuovi schemi di consegna backdoor per il gruppo informatico OceanLotus
Figura 14. Struttura di configurazione della backdoor (Visualizzatore KaitaiStruct)

Sebbene la struttura sia simile, molti dei valori dei campi sono stati aggiornati rispetto a quelli mostrati in il nostro vecchio rapporto.

Il primo elemento dell'array binario contiene una DLL (HttpProv.dll MD5: 2559738D1BD4A999126F900C7357B759), identificato da Tencent. Ma poiché il nome dell'esportazione è stato rimosso dal file binario, gli hash non corrispondono.

Ricerca aggiuntiva

Durante la raccolta dei campioni, abbiamo notato alcune caratteristiche. L’esemplare appena descritto è apparso intorno a luglio 2018, mentre altri simili sono comparsi tra metà gennaio e inizio febbraio 2019. L'archivio SFX è stato utilizzato come vettore di infezione, rilasciando un documento esca legittimo e un file OSX dannoso.

Anche se OceanLotus utilizza timestamp falsi, abbiamo notato che i timestamp dei file SFX e OCX sono sempre gli stessi (0x57B0C36A (08/14/2016, 7:15 UTC) e 0x498BE80F (02/06/2009 @ 7:34 UTC) rispettivamente). Ciò probabilmente indica che gli autori hanno una sorta di “designer” che utilizza gli stessi modelli e ne modifica semplicemente alcune caratteristiche.

Tra i documenti che abbiamo studiato dall’inizio del 2018 ci sono vari nomi che indicano i Paesi di interesse degli attentatori:

- Le nuove informazioni di contatto di Cambogia Media (Nuovo).xls.exe
— 李建香 (个人简历).exe (falso documento pdf di un CV)
— feedback, Rally negli Stati Uniti dal 28 al 29 luglio 2018.exe

Da quando è stata scoperta la backdoor {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll e dopo la pubblicazione della sua analisi da parte di diversi ricercatori, abbiamo osservato alcuni cambiamenti nei dati di configurazione del malware.

Innanzitutto, gli autori hanno iniziato a rimuovere i nomi dalle DLL di supporto (DNSprov.dll e due versioni HttpProv.dll). Gli operatori hanno quindi interrotto il confezionamento della terza DLL (la seconda versione HttpProv.dll), scegliendo di incorporarne solo uno.

In secondo luogo, molti campi di configurazione delle backdoor sono stati modificati, probabilmente per eludere il rilevamento man mano che molti IoC diventavano disponibili. I campi importanti modificati dagli autori includono:

  • Chiave di registro AppX modificata (vedi IoC)
  • stringa di codifica mutex ("def", "abc", "ghi")
  • numero di porta

Infine, tutte le nuove versioni analizzate presentano nuovi C&C elencati nella sezione IoC.

risultati

OceanLotus continua a svilupparsi. Il gruppo informatico si concentra sul perfezionamento e sull'espansione degli strumenti e delle esche. Gli autori mascherano i payload dannosi utilizzando documenti accattivanti il ​​cui argomento è rilevante per le vittime designate. Sviluppano nuovi schemi e utilizzano anche strumenti disponibili al pubblico, come l'exploit Equation Editor. Inoltre, stanno migliorando gli strumenti per ridurre il numero di artefatti rimasti sui computer delle vittime, riducendo così la possibilità di rilevamento da parte del software antivirus.

Indicatori di compromesso

Sono disponibili indicatori di compromesso e attributi MITRE ATT&CK su Welivesecurity и su GitHub.

Fonte: habr.com

Aggiungi un commento