ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus

Nel post parleremo di come il gruppo di cybercriminali OceanLotus (APT32 e APT-C-00) abbia recentemente utilizzato una delle vulnerabilità pubbliche per CVE-2017-11882, una vulnerabilità di corruzione della memoria in Microsoft Office, e di come il malware del gruppo garantisca persistenza nei sistemi compromessi, senza lasciare tracce. Inoltre descriveremo come, dall'inizio del 2019, il gruppo abbia utilizzato archivi auto-estraenti per eseguire codice.

OceanLotus si specializza nella cyber-spionaggio, con obiettivi prioritari nei paesi del Sud-est asiatico. Gli attaccanti falsificano documenti che attraggono l'attenzione delle potenziali vittime, per convincerle ad eseguire il backdoor, e lavorano anche allo sviluppo di strumenti. I metodi utilizzati per creare esche variano in diversi attacchi: da file con "doppi estensioni", archivi auto-estraenti, documenti con macro a exploit noti.

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus

Utilizzo dell'exploit nell'editor di Equation di Microsoft

Nel mezzo del 2018, OceanLotus ha condotto una campagna sfruttando la vulnerabilità CVE-2017-11882. Uno dei documenti malevoli del gruppo di cybercriminali è stato analizzato dagli specialisti del 360 Threat Intelligence Center (ricerca in cinese), incluso una descrizione dettagliata dell'exploit. Nel post qui sotto - una panoramica di un simile documento malevolo.

Prima fase

Documento FW Report on demonstration of former CNRP in Republic of Korea.doc (SHA-1: D1357B284C951470066AAA7A8228190B88A5C7C3) è simile a quello menzionato nella ricerca precedente. È interessante poiché è mirato a utenti interessati alla politica cambogiana (CNRP - Partito di salvezza nazionale della Cambogia, sciolto alla fine del 2017). Nonostante l'estensione .doc, il documento ha un formato RTF (vedi figura sotto), contiene codice spazzatura ed è distorto.

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 1. "Spazzatura" in RTF

Nonostante la presenza di elementi distorti, Word apre con successo questo file RTF. Come si può vedere dalla figura 2, qui è presente la struttura EQNOLEFILEHDR con uno spostamento di 0xC00, seguita dall'intestazione MTEF e poi dall'entry MTEF (figura 3) per il font.

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 2. Valori dell'entry FONT

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 3. Formato dell'entry FONT

Possibile overflow nel campo name, poiché la sua dimensione non viene verificata prima della copia. Un nome troppo lungo attiva la vulnerabilità. Come si può vedere dal contenuto del file RTF (spostamento 0xC26 nella figura 2), il buffer è riempito con shell code, seguito da un comando fittizio (0x90) e un indirizzo di ritorno 0x402114. L'indirizzo è un elemento di dialogo in EQNEDT32.exe, che indica l'istruzione RET. Ciò fa sì che l'EIP punti all'inizio del campo name, contenente codice shell.

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 4. Inizio del codice shell dell'exploit

Indirizzo 0x45BD3C memorizza una variabile che viene dereferenziata fino a raggiungere il puntatore alla struttura attualmente caricata MTEFData. Qui si trova il resto del codice shell.

Lo scopo del codice shell è eseguire il secondo frammento di codice shell, incorporato nel documento aperto. Inizialmente, il codice shell originale tenta di trovare il descrittore del file del documento aperto, esaminando tutti i descrittori del sistema (NtQuerySystemInformation con argomento SystemExtendedHandleInformation) e controllando se corrispondono a PID del descrittore e PID processo WinWord e se il documento è stato aperto con la maschera di accesso – 0x12019F.

Per confermare il rilevamento del corretto descrittore (e non di un descrittore di un altro documento aperto), il contenuto del file è mappato tramite la funzione CreateFileMapping, e il codice shell verifica se gli ultimi quattro byte del documento corrispondono a «yyyy» (metodo Egg Hunting). Una volta individuata una corrispondenza, il documento viene copiato in una cartella temporanea (GetTempPath) come ole.dll. Quindi, vengono letti gli ultimi 12 byte del documento.

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 5. Marcatori di fine documento

Un valore a 32 bit tra i marcatori AABBCCDD e yyyy è l'offset del prossimo codice shell. Viene richiamato tramite la funzione CreateThread. Viene estratto lo stesso codice shell utilizzato in precedenza dal gruppo OceanLotus. Lo script di emulazione Python, rilasciato nel marzo 2018, funziona ancora per il dump della seconda fase.

Seconda fase

Estrazione dei componenti

I nomi dei file e delle cartelle vengono scelti dinamicamente. Il codice seleziona casualmente un nome di file eseguibile o DLL in C:Windowssystem32. Successivamente, effettua una richiesta alle proprie risorse e estrae il campo FileDescription per utilizzarlo come nome della cartella. Se non funziona, il codice sceglie casualmente un nome di cartella da %ProgramFiles% o C:Windows (da GetWindowsDirectoryW). Evita di utilizzare nomi che potrebbero entrare in conflitto con file esistenti e si assicura che non contenga le seguenti parole: windows, Microsoft, desktop, system, system32 o syswow64. Se la cartella esiste già, aggiunge «NLS_{6 caratteri}» al nome.

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

Ad esempio, ecco una cartella e un elenco di file creati selezionando un file eseguibile C:Windowssystem32TCPSVCS.exe come sorgente dati.

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 6. Estrazione di diversi componenti

Struttura della risorsa 0x102 nel dropper è abbastanza complessa. In poche parole, contiene:
— Nomi dei file
— Dimensioni e contenuto dei file
— Formato di compressione (COMPRESSION_FORMAT_LZNT1, utilizzato dalla funzione RtlDecompressBuffer)

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

Potresti aver notato che le dimensioni di alcuni file DLL superano gli 11 MB. Questo è dovuto al fatto che un grande buffer continuo di dati casuali viene posizionato all'interno del file eseguibile. Non si può escludere che questo sia un modo per evitare il rilevamento da parte di alcuni prodotti di sicurezza.

Garanzia di persistenza

La risorsa 0x101 nel dropper contiene due numeri interi a 32 bit, che determinano come garantire la persistenza. Il valore del primo indica come il malware manterrà la persistenza senza privilegi di amministratore.

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Tabella 1. Meccanismo di persistenza senza privilegi di amministratore

Il valore del secondo numero intero indica come il malware deve garantire la persistenza lavorando con privilegi di amministratore.

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Tabella 2. Meccanismo di persistenza con privilegi di amministratore

Il nome del servizio è il nome del file senza estensione; il nome visualizzato è il nome della cartella, ma se esiste già, ad esso viene aggiunta la stringa “Revision 1” (il numero aumenta fino a quando non viene trovato un nome inutilizzato). Gli operatori hanno fatto in modo che la persistenza tramite servizio fosse stabile: in caso di fallimento, il servizio deve essere riavviato dopo 1 secondo. Successivamente, al nuovo valore della chiave di registro del servizio viene assegnato il valore 4, il che indica che si tratta di un servizio a 32 bit. Un'attività pianificata viene creata tramite alcune interfacce COM: ITaskScheduler

ITask ITaskTrigger, IPersistFile, . Fondamentalmente, il malware crea un'attività nascosta, imposta le informazioni sull'account insieme alle informazioni sull'utente corrente o sull'amministratore e quindi stabilisce un trigger., È un'attività giornaliera della durata di 24 ore e con intervalli di 10 minuti tra due esecuzioni, il che significa che verrà eseguita continuamente. e ITaskTrigger. Essenzialmente, il malware crea un'attività nascosta, imposta le informazioni sull'account insieme alle informazioni sull'utente corrente o sull'amministratore e quindi imposta un trigger.

È un'attività giornaliera con una durata di 24 ore e intervalli di esecuzione di 10 minuti, il che significa che verrà eseguita continuamente.

Bit malevolo

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

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

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 7. Predicati sfocati

Dopo queste verifiche fuorvianti, il codice ottiene la sezione .text del file TCPSVCS.exe, cambia la sua protezione su PAGE_EXECUTE_READWRITE e la sovrascrive, aggiungendo istruzioni fittizie:

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 8. Sequenza di istruzioni

Alla fine, all'indirizzo della funzione FLVCore::Uninitialize(void), esportata Flash Video Extension.dll, viene aggiunta un'istruzione CALL. Questo significa che dopo il caricamento della DLL malevola, quando l'ambiente di esecuzione chiama WinMain in TCPSVCS.exe, il puntatore dell'istruzione punterà a NOP, causando FLVCore::Uninitialize(void), il passo successivo.

La funzione crea semplicemente un mutex che inizia con {181C8480-A975-411C-AB0A-630DB8B0A221}, seguito dall'attuale nome utente. Poi legge il file ripristinato con estensione *.db3, che contiene codice indipendente dalla posizione, e utilizza CreateThread per eseguire il contenuto.

Il contenuto del file *.db3 è codice shell che viene solitamente utilizzato dal gruppo OceanLotus. Abbiamo nuovamente estratto con successo il suo payload utilizzando uno script emulator. su GitHub.

Lo script estrae la fase finale. Questo componente è un backdoor che abbiamo già analizzato in una precedente indagine su OceanLotus.. Questo può essere identificato dal GUID {A96B020F-0000-466F-A96D-A91BBF8EAC96} del file binario. La configurazione del malware è ancora crittografata nelle risorse PE. Ha una configurazione simile, ma i server C&C sono diversi dai precedenti:

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

Il gruppo OceanLotus dimostra nuovamente una combinazione di diverse tecniche per evitare il rilevamento. Sono tornati con uno schema ‘ritoccato’ del processo di infezione. Scegliendo nomi casuali e riempiendo i file eseguibili con dati casuali, riducono il numero di IoC affidabili (basati su hash e nomi dei file). Inoltre, grazie all'uso di DLL caricate da terze parti, gli attaccanti devono solo eliminare il binario legittimo AcroTranscoder.

Archivi autoestraenti

Dopo i file RTF, il gruppo è passato a archivi autoestraenti (SFX) con icone comuni di documenti, per confondere ulteriormente l'utente. Di ciò ha parlato Threatbook (link in cinese). Dopo l'avvio vengono estratti i file RAR autoestraenti e vengono eseguiti i DLL con estensione .ocx, il cui payload finale era stato precedentemente documentato {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll. Dalla metà di gennaio 2019 OceanLotus riutilizza questa tecnica, ma nel tempo modifica alcune configurazioni. In questa sezione parleremo della tecnica e delle modifiche.

Creazione dell'esca

Documento THICH-THONG-LAC-HANH-THAP-THIEN-VIET-NAM (1).EXE (SHA-1: AC10F5B1D5ECAB22B7B418D6E98FA18E32BBDEAB) trovato per la prima volta nel 2018. Questo file SFX è stato creato con intelligenza – nella descrizione (Version Info) si afferma che si tratta di un'immagine JPEG. Lo script SFX appare come segue:

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 9. Comandi SFX

Il malware estrae {9ec60ada-a200-4159-b310-8071892ed0c3}.ocx (SHA-1: EFAC23B0E6395B1178BCF7086F72344B24C04DCC), così come l'immagine 2018 thich thong lac.jpg.

L'immagine-esca appare come segue:

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 10. Immagine-esca

Potresti aver notato che le prime due righe dello script SFX chiamano due volte il file OCX, ma non si tratta di un errore.

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

Il flusso di controllo del file OCX è molto simile ad altri componenti di OceanLotus – molte sequenze di comandi JZ/JNZ e PUSH/RET, alternate con codice spazzatura.

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 11. Codice offuscato

Dopo la filtrazione del codice spazzatura, l'esportazione DllRegisterServer, chiamata da regsvr32.exe, si presenta nel seguente modo:

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 12. Codice principale dell'installatore

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

Quando la funzione viene chiamata per la seconda volta, legge lo stesso valore ed esegue l'operazione a quell'indirizzo. Da qui legge ed esegue la risorsa e molte azioni in memoria volatile.

Il codice shell è lo stesso loader PE utilizzato nelle campagne precedenti di OceanLotus. Può essere emulato mediante il nostro script. In definitiva, estrae db293b825dcc419ba7dc2c49fa2757ee.dll, lo carica in memoria e lo esegue DllEntry.

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

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 13. Struttura di configurazione dell'installatore (KaitaiStruct Visualizer)

La configurazione è esplicitamente definita – a seconda del livello di privilegi, i dati binari verranno scritti in %appdata%IntellogsBackgroundUploadTask.cpl o %windir%System32BackgroundUploadTask.cpl (o SysWOW64 per sistemi a 64 bit).

Successivamente, la persistenza è garantita dalla creazione di un'attività con il nome BackgroundUploadTask[junk].job, dove [junk] è un insieme di byte 0x9D e 0xA0.

Nome dell'applicazione del compito %windir%System32control.exe, e il valore del parametro è il percorso del file binario caricato. Il compito nascosto viene eseguito ogni giorno.

Costruttivamente, il file CPL è una DLL con un nome interno ac8e06de0a6c4483af9837d96504127e.dll, che esporta la funzione CPlApplet. Questo file decodifica la sua unica risorsa {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll, quindi carica questa DLL e ne chiama il suo unico export DllEntry.

File di configurazione del backdoor

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

ESET: nuove modalità di consegna del backdoor del gruppo cyber OceanLotus
Figura 14. Struttura della configurazione del backdoor (KaitaiStruct Visualizer)

Nonostante la struttura simile, i valori di molti campi sono stati aggiornati rispetto ai dati forniti in vecchio rapporto.

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

Ulteriori ricerche

Raccogliendo campioni, abbiamo notato alcune caratteristiche. Il campione appena descritto è emerso intorno a luglio 2018, e altri simili a esso sono apparsi molto recentemente, a metà gennaio - inizio febbraio 2019. Come vettore di infezione è stato utilizzato un archivio SFX, che scarica un documento legittimo di trappola e un file malicioso OCX.

Nonostante OceanLotus utilizzi timestamp falsi, abbiamo notato che i timestamp dei file SFX e OCX sono sempre gli stessi (0x57B0C36A (14/08/2016 @ 19:15 UTC) e 0x498BE80F (06/02/2009 @ 07:34 UTC) rispettivamente). Probabilmente, ciò indica che gli autori hanno un qualche "costruttore" che utilizza gli stessi modelli e cambia semplicemente alcune caratteristiche.

Tra i documenti che abbiamo esaminato dall'inizio del 2018, abbiamo trovato vari titoli che indicano paesi di interesse per gli attaccanti:

— The New Contact Information Of Cambodia Media(New).xls.exe
— 李建香 (个人简历).exe (falso documento PDF di un CV)
— feedback, Rally in USA from July 28-29, 2018.exe

Dalla scoperta del backdoor {A96B020F-0000-466F-A96D-A91BBF8EAC96}.dll e dalla pubblicazione della sua analisi da parte di diversi ricercatori abbiamo osservato alcune modifiche nei dati di configurazione del malware.

Innanzitutto, gli autori hanno iniziato a rimuovere i nomi dalle DLL ausiliarie (DNSprov.dll e due versioni HttpProv.dll). Poi gli operatori hanno smesso di imballare la terza DLL (seconda versione HttpProv.dll), scegliendo di incorporare solo uno.

In secondo luogo, molti campi di configurazione del backdoor sono stati modificati, probabilmente per evitare il rilevamento, poiché molti IoC sono diventati disponibili. Tra i campi importanti modificati dagli autori ci sono:

  • modificata la sezione del registro AppX (vedere gli IoC)
  • stringa di codifica del mutex ("def", "abc", "ghi")
  • numero di porta

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

Conclusioni

OceanLotus continua a evolversi. Il gruppo cyber è focalizzato sul perfezionamento e sull'espansione degli strumenti e delle trappole. Gli autori mascherano i payload dannosi utilizzando documenti accattivanti, il cui tema è rilevante per le vittime presunte. Sviluppano nuovi schemi e utilizzano anche strumenti pubblicamente disponibili, come l'exploit Equation Editor. Inoltre, migliorano gli strumenti per ridurre il numero di artefatti che rimangono sui computer delle vittime, riducendo così la possibilità di rilevamento da parte dei software antivirus.

Indicatori di compromissione

Indicatori di compromissione e attributi MITRE ATT&CK disponibili su Welivesecurity e su GitHub.

Fonte: habr.com

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster