NG0002 prende di mira il mondo accademico cinese con esche istituzionali armate
Detection stack
- AIDR
- Alert
- ETL
- Query
Sintesi
Un attore di minacce tracciato come UNG0002 ha lanciato una campagna di spear-phishing contro università cinesi utilizzando un archivio ZIP malevolo camuffato da annuncio ufficiale sui test di fitness. All’interno dell’archivio vi era un file LNK a doppia estensione che eseguiva un VBScript, che poi usava Bandizip per caricare una DLL maligna. Quella DLL eseguiva controlli anti-analisi, decrittava un payload SFX in memoria, e infine distribuiva un beacon di Cobalt Strike per l’attività di comando e controllo. L’operazione combinava tecniche di living-off-the-land con infrastrutture ospitate su Alibaba Cloud per sostenere l’intrusione.
Indagine
Seqrite Labs ha esaminato l’email di phishing, l’allegato e l’intera catena di payload, rilevando che explorer.exe è stato usato per lanciare lo script VBS e Bandizip.exe è stato abusato per ospitare la DLL maligna. Gli analisti hanno documentato ampi controlli anti-debugging progettati per eludere gli ambienti di analisi e mappato l’intero flusso di esecuzione dall’esca iniziale alla distribuzione finale del beacon. Hanno anche identificato l’infrastruttura legata alla campagna, incluso l’indirizzo IP 60.205.186.162 e il dominio lysander.asia, e collegato l’attività a precedenti operazioni UNG0002. Ulteriori arricchimenti hanno mostrato che il server di comando e controllo era ospitato su Alibaba Cloud e usava record MX correlati a Feishu, supportando ulteriormente l’attribuzione a un attore di minacce basato in Cina.
Mitigazione
Non Specificato
Risposta
Non Specificato
"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#e6e6e6 classDef process fill:#ffdd99 classDef malware fill:#ff9999 classDef network fill:#c2c2f0 %% Nodes u2013 Actions (Techniques) action_initial_access["<b>Azione</b> – <b>T1566.001 Allegato Spearphishing</b><br/>Email con ZIP malevolo inviata al bersaglio"] class action_initial_access action action_user_execution["<b>Azione</b> – <b>T1204.002 Esecuzione Utente</b><br/>L’utente apre il file LNK pensando che sia un PDF"] class action_user_execution action action_masquerading["<b>Azione</b> – <b>T1036 Mascheramento</b><br/>LNK è a doppia estensione e appare come un PDF"] class action_masquerading action action_permission_hijack["<b>Azione</b> – <b>T1574.005 Debolezza nei Permessi del File Installer Eseguibile</b><br/>Explorer.exe è usato per lanciare uno script VBS nascosto"] class action_permission_hijack action action_vbscript["<b>Azione</b> – <b>T1059.005 Visual Basic</b><br/>VBS apre il PDF esca e avvia Bandizip"] class action_vbscript action action_lol["<b>Azione</b> – <b>T1218 Living off the Land</b><br/>Bandizip, un archiviatore legittimo, viene abusato"] class action_lol action action_hidden_files["<b>Azione</b> – <b>T1564.001 File e Directory Nascosti</b><br/>Payload posizionato in cartelle di tipo macOS"] class action_hidden_files action action_dll_side_loading["<b>Azione</b> – <b>T1574.008 Intercettazione del Percorso attraverso Illegittimo Ordine di Ricerca</b> / <b>T1574.002 Caricamento di DLL Malevole</b><br/>Bandizip carica ark.x64.dll malevolo"] class action_dll_side_loading action action_obfuscation["<b>Azione</b> – <b>T1027 File o Informazioni Offuscati</b><br/>La DLL contiene stringhe criptate e payload SFX criptato"] class action_obfuscation action action_anti_analysis["<b>Azione</b> – <b>T1497 Evasione da Virtualizzazione/Sandbox</b> / <b>T1497.001 Controlli di Sistema</b> / <b>T1497.002 Controlli di Attività Utente</b> / <b>T1622 Evasione del Debugger</b><br/>La DLL verifica la presenza di debugger, strumenti di analisi e artefatti di sandbox"] class action_anti_analysis action action_process_discovery["<b>Azione</b> – <b>T1057 Scoperta Processi</b><br/>Viene enumerato i processi in esecuzione per localizzare le utilità di analisi"] class action_process_discovery action action_reflective_loading["<b>Azione</b> – <b>T1620 Caricamento Riflessivo del Codice</b><br/>Payload SFX decriptato viene caricato direttamente in memoria"] class action_reflective_loading action action_c2["<b>Azione</b> – <b>T1071.001 Protocollo Livello Applicazione: Web Protocols</b><br/>Il payload in memoria stabilisce un beacon HTTPS Cobalt Strike"] class action_c2 action %% Nodes u2013 Files / Artifacts file_zip["<b>File</b> – malicious.zip<br/>Contiene il LNK malevolo"] class file_zip file file_lnk["<b>File</b> – u5e38u5ddeu5927u5b662026u5e74u300au56fdu5bb6u5b66u751fu4f53u8d28u5065u5eb7u6807u51c6u300bu6d4bu8bd5u901au77e5.pdf.lnk"] class file_lnk file file_vbs["<b>File</b> – chromedo.vbs<br/>Script Visual Basic eseguito da explorer"] class file_vbs file tool_bandizip["<b>Strumento</b> – Bandizip.exe<br/>Archiviatore legittimo abusato per caricare una DLL malevola"] class tool_bandizip tool file_dll["<b>File</b> – ark.x64.dll<br/>DLL malevola caricata via sideu2011loading"] class file_dll file malware_cobalt_strike["<b>Malware</b> – Cobaltu202fStrike beacon<br/>Fornisce accesso remoto"] class malware_cobalt_strike malware %% Nodes u2013 Processes process_explorer["<b>Processo</b> – explorer.exe"] class process_explorer process process_chromedo["<b>Processo</b> – chromedo (VBS host)"] class process_chromedo process %% Nodes u2013 Network network_c2["<b>Rete</b> – Server C2 60.205.186.162 (lysander.asia) tramite HTTPS"] class network_c2 network %% Connections u2013 Attack Flow file_zip –>|contiene| file_lnk file_lnk –>|richiama| process_explorer process_explorer –>|avvia| file_vbs file_vbs –>|esegue| tool_bandizip tool_bandizip –>|carica| file_dll file_dll –>|abilita| action_obfuscation file_dll –>|esegue| action_anti_analysis file_dll –>|attiva| action_process_discovery file_dll –>|supporta| action_reflective_loading action_reflective_loading –>|carica| malware_cobalt_strike malware_cobalt_strike –>|comunica con| network_c2 %% Linking actions to show sequence action_initial_access –>|porta a| action_user_execution action_user_execution –>|combinato con| action_masquerading action_masquerading –>|abilita| action_permission_hijack action_permission_hijack –>|attiva| action_vbscript action_vbscript –>|usa| action_lol action_lol –>|crea| action_hidden_files action_hidden_files –>|facilita| action_dll_side_loading action_dll_side_loading –>|include| action_obfuscation action_obfuscation –>|copre| action_anti_analysis action_anti_analysis –>|alimenta| action_process_discovery action_process_discovery –>|precede| action_reflective_loading action_reflective_loading –>|abilita| action_c2 action_c2 –>|stabilisce beacon con| malware_cobalt_strike %% Class assignments class action_initial_access action class action_user_execution action class action_masquerading action class action_permission_hijack action class action_vbscript action class action_lol action class action_hidden_files action class action_dll_side_loading action class action_obfuscation action class action_anti_analysis action class action_process_discovery action class action_reflective_loading action class action_c2 action class file_zip file class file_lnk file class file_vbs file class file_dll file class tool_bandizip tool class process_explorer process class process_chromedo process class malware_cobalt_strike malware class network_c2 network "
Flusso di Attacco
Rilevamenti
Possibile File LNK Malevolo con Doppia Estensione (tramite cmdline)
Visualizza
LOLBAS WScript / CScript (tramite process_creation)
Visualizza
Indicatori di Compromissione (HashSha256) per rilevare: Operazione Dragon Whistle: UNG0002 prende di mira il mondo accademico cinese tramite un’esca istituzionale armata
Visualizza
Indicatori di Compromissione (SourceIP) per rilevare: Operazione Dragon Whistle: UNG0002 prende di mira il mondo accademico cinese tramite un’esca istituzionale armata
Visualizza
Indicatori di Compromissione (DestinationIP) per rilevare: Operazione Dragon Whistle: UNG0002 prende di mira il mondo accademico cinese tramite un’esca istituzionale armata
Visualizza
Rilevamento della Comunicazione C2 tramite IP e Dominio Maligno Conosciuto [Windows Network Connection]
Visualizza
Enumerazione del Processo UNG0002 e Rilevamento Anti-Debugging [Windows Sysmon]
Visualizza
Rilevamento di LNK che abusa di explorer.exe e Bandizip.exe per l’esecuzione di VBScript malevolo [Windows Process Creation]
Visualizza
Esecuzione Simulazione
Prerequisito: La verifica preliminare del Telemetria & Baseline deve essere superata.
Razionale: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta attesa dalla logica di rilevamento.
-
Narrazione dell’Attacco & Comandi:
Un aggressore consegna una DLL malevola (chiamataevil.dll) che viene caricata da un processo host dall’aspetto benigno (rundll32.exe). IlDllMainchiama immediatamenteCreateToolhelp32Snapshotseguito daProcess32Firstper enumerare tutti i processi in esecuzione. Il ciclo di enumerazione controlla ogni nome di processo per la presenza di un debugger ("dbg"sottostringa) ed esce se trovato – una classica tecnica di evasione del debugger tecnica (T1622). Poiché la DLL è caricata darundll32.exe, l’evento di creazione del processo registrato da Sysmon contiene icampi ApiSetNameper le due API native, soddisfacendo la regola di rilevamento. -
Script di test regressivo:
# ------------------------------------------------- # Step 1: Creare il sorgente C per la DLL malevola # ------------------------------------------------- $dllSource = @" #include <windows.h> #include <tlhelp32.h> BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) { if (ul_reason_for_call == DLL_PROCESS_ATTACH) { HANDLE hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (hSnap == INVALID_HANDLE_VALUE) return FALSE; PROCESSENTRY32 pe = {0}; pe.dwSize = sizeof(PROCESSENTRY32); if (Process32First(hSnap, &pe)) { do { // Semplice controllo anti‑debug – cerca "dbg" nel nome del processo if (wcsstr(pe.szExeFile, L"dbg")) { // Debugger rilevato; esce dal ciclo break; } } while (Process32Next(hSnap, &pe)); } CloseHandle(hSnap); } return TRUE; } "@ $srcPath = "$env:Tempevil.c" $dllPath = "$env:Tempevil.dll" $srcPath | Out-File -Encoding ascii -FilePath $srcPath -Force Set-Content -Path $srcPath -Value $dllSource # ------------------------------------------------- # Step 2: Compilare la DLL con Visual C++ (cl.exe) # ------------------------------------------------- # Assicurati che Visual Studio Build Tools sia installato e l'ambiente sia impostato. # Esempio utilizzando il Prompt dei comandi per sviluppatori: # cl.exe /LD /O2 /MD evil.c /link /OUT:evil.dll # Per l'automazione all'interno di PowerShell, invoca gli strumenti di creazione MSVC: $vcvars = "${env:ProgramFiles(x86)}Microsoft Visual Studio2019BuildToolsVCAuxiliaryBuildvcvars64.bat" & cmd /c "`"$vcvars`" && cl.exe /LD /O2 /MD `"$srcPath`" /link /OUT:`"$dllPath`"" ` | Out-Null if (-Not (Test-Path $dllPath)) { Write-Error "Compilazione della DLL fallita." exit 1 } # ------------------------------------------------- # Step 3: Esegui la DLL malevola tramite rundll32.exe # ------------------------------------------------- $rundll = "$env:SystemRootSystem32rundll32.exe" & $rundll $dllPath,EntryPoint # ------------------------------------------------- # Step 4: Pausa per consentire a Sysmon di registrare l'evento # ------------------------------------------------- Start-Sleep -Seconds 5Lo script compila una DLL minima che esegue le chiamate API mirate e poi la carica con
rundll32.exe. Il breve intervallo assicura che Sysmon abbia tempo per registrare l’evento di creazione del processo. -
Comandi di Pulizia:
# Rimuovere i file compilati Remove-Item -Force -ErrorAction SilentlyContinue $env:Tempevil.c Remove-Item -Force -ErrorAction SilentlyContinue $env:Tempevil.dll # Opzionale: Riavviare Sysmon per cancellare eventuali handler bloccati (non richiesto nella maggior parte dei casi) Stop-Service -Name Sysmon -Force Start-Service -Name Sysmon