SOC Prime Bias: Critico

22 May 2026 06:29 UTC

NG0002 prende di mira il mondo accademico cinese con esche istituzionali armate

Author Photo
SOC Prime Team linkedin icon Segui
NG0002 prende di mira il mondo accademico cinese con esche istituzionali armate
shield icon

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

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 (chiamata evil.dll) che viene caricata da un processo host dall’aspetto benigno (rundll32.exe). Il DllMain chiama immediatamente CreateToolhelp32Snapshot seguito da Process32First per 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 da rundll32.exe, l’evento di creazione del processo registrato da Sysmon contiene i campi ApiSetName per 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 5

    Lo 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