Caccia a Lazarus: All’interno dell’Infrastruttura di Comando e Controllo dell’Intervista Contagiosa
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
Red Asgard ha riportato un compromesso nella catena di fornitura legato a un progetto di criptovaluta promosso tramite Upwork, in cui gli operatori di Lazarus hanno inserito codice malevolo nel flusso di lavoro/costruzione. La catena sfrutta l’auto-esecuzione dei task di VSCode, una backdoor Node.js implementata tramite il costruttore Function, e la consegna di payload mediante cookie per recuperare JavaScript malevolo dall’infrastruttura di comando e controllo ospitata da Vercel. Lo stack C2 è suddiviso in domini Vercel di primo stadio e server Windows dedicati di secondo stadio, che forniscono una backdoor Python fortemente offuscata con funzionalità di mining XMRig. La campagna utilizza anche dead drop su Pastebin, un protocollo binario personalizzato e una rigida compartimentazione delle credenziali per complicare l’analisi e la rimozione.
Indagine
I ricercatori hanno enumerato tre domini Vercel che espongono endpoint autenticati con token e hanno identificato cinque sistemi C2 dedicati in esecuzione Express.js on porta 1244. Hanno anche documentato una tecnica a tempo di oracle utilizzata per dedurre o enumerare i token della campagna attivi. Il reverse engineering di un payload offuscato a 64 strati ha rivelato infine un componente infettato che persiste tramite la collocazione nella cartella di Avvio e la creazione di compiti pianificati. Ulteriori risultati includevano credenziali MongoDB hard-coded, circa 1000 URL dead drop su Pastebin e listener di protocollo binario Z238 personalizzato su più porte.
Mitigazione
Blocca le comunicazioni in uscita verso i domini Vercel identificati e limita l’uscita alle porte 1244, 1249 e 22411–22412. Monitora la creazione di Windows Update Script.pyw nei percorsi di Avvio, compiti pianificati denominati “Runtime Broker” e esecuzioni sospette di msedge.exe coerenti con la mascheratura del miner. Rileva processi Node.js che invocano Function.constructor e attività HTTP POST anomale verso endpoint /keys. Riduci l’esposizione disabilitando i task di auto-esecuzione di VSCode e rivedi gli script dei pacchetti prima di eseguire npm install o i passaggi di costruzione in repository non attendibili.
Risposta
Se vengono osservati indicatori, isola il sistema interessato, termina i processi sospetti e conserva la memoria e i reperti su disco per la revisione forense. Revoca eventuali credenziali MongoDB esposte e ruota tutti i segreti service-account pertinenti. Effettua un inventario di account e accessi per identificare gli utenti interessati, quindi reimposta le credenziali e invalida le sessioni/token attivi. Notifica ai responsabili interni e coordina con le forze dell’ordine se ci sono prove di furto di criptovalute o compromessi del portafoglio.
“graph TB %% Class definitions classDef technique fill:#cce5ff classDef artifact fill:#e2f7d6 %% Step 1 u2013 Phishing via Service tech_phishing[“<b>Tecnica</b> – <b>T1566.003 Phishing: Spearphishing via Service</b><br/><b>Descrizione</b>: L’attaccante si è fatto passare per un freelancer su Upwork e ha pubblicato un finto colloquio di lavoro per consegnare un repository di codice maligno.”] class tech_phishing technique artifact_upwork[“<b>Artefatto</b> – <b>Nome</b>: Annuncio di Lavoro Falso su Upwork<br/><b>Scopo</b>: Attirare la vittima a scaricare un repository malevolo.”] class artifact_upwork artifact tech_phishing u002du002d>|consegna| artifact_upwork %% Step 2 u2013 Supply Chain Compromise tech_supplychain[“<b>Tecnica</b> – <b>T1195.001 Supply Chain Compromise: Compromissione delle Dipendenze Software e degli Strumenti di Sviluppo</b><br/><b>Descrizione</b>: Maligno VSCode <code>tasks.json</code> e codice JavaScript iniettato nel repository.”] class tech_supplychain technique artifact_tasksjson[“<b>Artefatto</b> – <b>Nome</b>: VSCode <code>tasks.json</code><br/><b>Contenuto</b>: Definizione di attività malevola che invoca il costruttore di funzioni JavaScript e <code>getCookie()</code>.”] class artifact_tasksjson artifact artifact_upwork u002du002d>|contiene| artifact_tasksjson artifact_tasksjson u002du002d>|abilita| tech_supplychain %% Step 3 u2013 User Execution tech_userexec[“<b>Tecnica</b> – <b>T1204.002 User Execution: File Maligno</b><br/><b>Descrizione</b>: La vittima ha aperto la cartella del progetto in VSCode, attivando l’autoesecuzione dei compiti maligni.”] class tech_userexec technique artifact_tasksjson u002du002d>|innescato da| tech_userexec %% Step 4 u2013 JavaScript Execution tech_jsexec[“<b>Tecnica</b> – <b>T1059.007 Interprete di Comandi e Scripting: JavaScript</b><br/><b>Descrizione</b>: JavaScript eseguito tramite i compiti di VSCode e costruttore di funzioni per scaricare payload aggiuntivi.”] class tech_jsexec technique tech_userexec u002du002d>|porta a| tech_jsexec %% Step 5 u2013 Python Backdoor tech_python[“<b>Tecnica</b> – <b>T1059.006 Interprete di Comandi e Scripting: Python</b><br/><b>Descrizione</b>: Backdoor Python pesantemente offuscato (<code>bro_*.js</code>) scaricato ed eseguito sull’host della vittima.”] class tech_python technique artifact_python_backdoor[“<b>Artefatto</b> – <b>Nome</b>: Backdoor Python Offuscato (<code>bro_*.js</code>)<br/><b>Caratteristiche</b>: Codifica e decodifica a più livelli.”] class artifact_python_backdoor artifact tech_jsexec u002du002d>|scarica| artifact_python_backdoor artifact_python_backdoor u002du002d>|esegue| tech_python %% Step 6 u2013 Startup Persistence tech_startup[“<b>Tecnica</b> – <b>T1037.005 Script di Inizializzazione di Boot o Logon: Elementi di Avvio</b><br/><b>Descrizione</b>: Persistenza attraverso il posizionamento di <code>Windows Update Script.pyw</code> nella cartella di Avvio.”] class tech_startup technique artifact_startup_script[“<b>Artefatto</b> – <b>Nome</b>: <code>Windows Update Script.pyw</code><br/><b>Posizione</b>: Cartella di avvio”] class artifact_startup_script artifact tech_python u002du002d>|crea| artifact_startup_script artifact_startup_script u002du002d>|abilita| tech_startup %% Step 7 u2013 Scheduled Task tech_schedtask[“<b>Tecnica</b> – <b>T1053 Attività/Processo Pianificato</b><br/><b>Descrizione</b>: Attività pianificata chiamata u201cRuntime Brokeru201d creata per avviarsi al login.”] class tech_schedtask technique artifact_schedtask[“<b>Artefatto</b> – <b>Nome</b>: Attività Pianificata u201cRuntime Brokeru201d<br/><b>Attivatore</b>: All’accesso dell’utente”] class artifact_schedtask artifact tech_startup u002du002d>|aggiunge| artifact_schedtask artifact_schedtask u002du002d>|esegue| tech_schedtask %% Step 8 u2013 Credential Harvesting from Browsers tech_credbrowser[“<b>Tecnica</b> – <b>T1555.003 Credenziali da Archivi di Password: Credenziali da Browser Web</b><br/><b>Descrizione</b>: Malware ha raccolto dati di profilo del browser e credenziali memorizzate.”] class tech_credbrowser technique artifact_browser_data[“<b>Artefatto</b> – <b>Dati</b>: Password e cookie estratti dal browser”] class artifact_browser_data artifact tech_schedtask u002du002d>|raccoglie| tech_credbrowser tech_credbrowser u002du002d>|memorizza| artifact_browser_data %% Step 9 u2013 Steal Web Session Cookie tech_stealcookie[“<b>Tecnica</b> – <b>T1539 Rubare il Cookie di Sessione Web</b><br/><b>Descrizione</b>: La funzione <code>getCookie()</code> ha recuperato i cookie di sessione dal browser della vittima.”] class tech_stealcookie technique artifact_getcookie[“<b>Artefatto</b> – <b>Dati</b>: Cookie di sessione catturati dai browser”] class artifact_getcookie artifact tech_credbrowser u002du002d>|abilita| tech_stealcookie tech_stealcookie u002du002d>|produce| artifact_getcookie %% Step 10 u2013 Use Alternate Authentication Material tech_altauth[“<b>Tecnica</b> – <b>T1550.004 Utilizzare Materiale di Autenticazione Alternativo: Cookie di Sessione Web</b><br/><b>Descrizione</b>: I cookie raccolti sono stati poi utilizzati per dirottare sessioni web autenticate.”] class tech_altauth technique artifact_getcookie u002du002d>|utilizzato da| tech_altauth %% Step 11 u2013 Masquerading tech_masquerade[“<b>Tecnica</b> – <b>T1036.003 Mascheramento: Rinomina delle Utilità Legittime</b><br/><b>Descrizione</b>: I binari maligni sono stati rinominati in u201cRuntime Broker.exeu201d e u201cmsedge.exeu201d.”] class tech_masquerade technique artifact_renamed_bins[“<b>Artefatto</b> – <b>File</b>: <code>Runtime Broker.exe</code>, <code>msedge.exe</code> (maligno)”] class artifact_renamed_bins artifact tech_altauth u002du002d>|consegna| artifact_renamed_bins artifact_renamed_bins u002du002d>|utilizzato in| tech_masquerade %% Step 12 u2013 Impair Defenses tech_impairdefense[“<b>Tecnica</b> – <b>T1562 Compromissione delle Difese</b><br/><b>Descrizione</b>: Aggiunte esclusioni di Windows Defender tramite PowerShell per evitare il rilevamento.”] class tech_impairdefense technique artifact_defender_exclusion[“<b>Artefatto</b> – <b>Comando</b>: Script PowerShell che aggiunge percorsi di esclusione a Defender”] class artifact_defender_exclusion artifact tech_masquerade u002du002d>|esegue| artifact_defender_exclusion artifact_defender_exclusion u002du002d>|abilita| tech_impairdefense %% Step 13 u2013 Obfuscated Files tech_obfuscation[“<b>Tecnica</b> – <b>T1027 File o Informazioni Offuscate</b><br/><b>Descrizione</b>: Il payload ha utilizzato 64 livelli di offuscamento nidificati (Base85, XOR, zlib, Base64 invertito).”] class tech_obfuscation technique tech_impairdefense u002du002d>|protegge| tech_obfuscation %% Step 14 u2013 Hide Artifacts tech_hideartifacts[“<b>Tecnica</b> – <b>T1564.012 Nascondi Artefatti: Esclusioni di File/Percorso</b><br/><b>Descrizione</b>: Esclusioni di Defender e file nascosti usati per nascondere artefatti malevoli.”] class tech_hideartifacts technique tech_obfuscation u002du002d>|facilita| tech_hideartifacts %% Step 15 u2013 Deadu2011Drop Resolver tech_dead_drop[“<b>Tecnica</b> – <b>T1102.001 Web Service: Dead Drop Resolver</b><br/><b>Descrizione</b>: Il malware ha recuperato comandi da una rete di ~1000 account Pastebin come dead-drop.”] class tech_dead_drop technique artifact_pastebin[“<b>Artefatto</b> – <b>Servizio</b>: Account resolver dead-drop su Pastebin”] class artifact_pastebin artifact tech_hideartifacts u002du002d>|recupera| artifact_pastebin artifact_pastebin u002du002d>|fornisce comandi a| tech_dead_drop %% Step 16 u2013 Exfiltration Over FTP tech_exfilftp[“<b>Tecnica</b> – <b>T1048.003 Esfiltrazione Tramite Protocollo Alternativo: Protocollo Non-C2 Non Cifrato</b><br/><b>Descrizione</b>: Dati raccolti esfiltrati via FTP sulla porta 21.”] class tech_exfilftp technique artifact_ftp[“<b>Artefatto</b> – <b>Protocollo</b>: FTP (porta 21) utilizzato per il trasferimento dati”] class artifact_ftp artifact tech_dead_drop u002du002d>|invia dati tramite| tech_exfilftp tech_exfilftp u002du002d>|utilizza| artifact_ftp %% Step 17 u2013 Resource Hijacking (Monero Mining) tech_resourcehijack[“<b>Tecnica</b> – <b>T1496.001 Appropriazione di Risorse: Appropriazione di Calcolo</b><br/><b>Descrizione</b>: Monero miner XMRig distribuito, camuffato da u201cmsedge.exeu201d, per monetizzare gli host infetti.”] class tech_resourcehijack technique artifact_xmrig[“<b>Artefatto</b> – <b>File</b>: Binario miner XMRig chiamato <code>msedge.exe</code>”] class artifact_xmrig artifact tech_exfilftp u002du002d>|fornisce risorse per| tech_resourcehijack tech_resourcehijack u002du002d>|esegue| artifact_xmrig %% Step 18 u2013 Browser Information Discovery tech_browserdisc[“<b>Tecnica</b> – <b>T1217 Scoperta di Informazioni del Browser</b><br/><b>Descrizione</b>: L’attaccante ha enumerato le informazioni del browser per individuare credenziali e dati di sessione aggiuntivi.”] class tech_browserdisc technique artifact_browser_info[“<b>Artefatto</b> – <b>Dati</b>: Versione del browser, percorsi del profilo, estensioni installate”] class artifact_browser_info artifact tech_resourcehijack u002du002d>|raccoglie| tech_browserdisc tech_browserdisc u002du002d>|raccoglie| artifact_browser_info “
Flusso d’Attacco
Rilevamenti
Possibile Infiltrazione / Esfiltrazione Dati / C2 tramite Servizi / Strumenti di Terze Parti (tramite dns)
Visualizza
Modifiche Sospette alle Preferenze di Windows Defender (tramite powershell)
Visualizza
Binari / Script Sospetti nella Posizione di Autostart (tramite file_event)
Visualizza
File nascosto creato su host Linux (via file_event)
Visualizza
Possibile infiltrazione/esfiltrazione di dati/C2 tramite servizi/strumenti di terze parti (via proxy)
Visualizza
IOC (Email) da rilevare: Hunting Lazarus: All’interno dell’infrastruttura C2 di Contagious Interview
Visualizza
IOC (DestinationIP) da rilevare: Hunting Lazarus: All’interno dell’infrastruttura C2 di Contagious Interview
Visualizza
IOC (SourceIP) da rilevare: Hunting Lazarus: All’interno dell’infrastruttura C2 di Contagious Interview
Visualizza
IOC (HashSha256) da rilevare: Hunting Lazarus: All’interno dell’infrastruttura C2 di Contagious Interview
Visualizza
Funzione getCookie sospetta che scarica JavaScript malevolo dal dominio Vercel [Evento File Windows]
Visualizza
Uso sospetto di Function.constructor in errorHandler.js per RCE su backend [Evento File Windows]
Visualizza
Mascheramento di processi malevoli come RuntimeBroker e XMRig Miner come msedge.exe [Creazione Processo Windows]
Visualizza
Configurazione di Auto-Execuzione malevola in VSCode [Evento File Windows]
Visualizza
Esecuzione della Simulazione
Prerequisito: il Telemetry & Baseline Pre‑flight Check deve essere stato superato.
Narrativa dell’Attacco & Comandi
L’avversario copia il legittimo RuntimeBroker.exe binario in una posizione non standard (%TEMP%) per mascherarsi come un processo affidabile evitando il rilevamento basato su percorsi di sistema noti. Eseguendo la copia, l’evento di creazione del processo contiene il nome dell’immagine attesa ma un percorso che non supera il controllo di contenimento ‘System32’, soddisfacendo selection_runtime.
Script di Test di Regressione
# -----------------------------------------------
# TC-20260114-A1B2C – Simulazione di Mascheramento
# -----------------------------------------------
# 1. Definire i percorsi
$src = "$env:SystemRootSystem32RuntimeBroker.exe"
$dest = "$env:TEMPRuntimeBroker.exe"
# 2. Copiare il binario legittimo in una directory non di sistema
Copy-Item -Path $src -Destination $dest -Force
# 3. Eseguire il binario copiato (questo dovrebbe attivare la regola Sigma)
Start-Process -FilePath $dest -WindowStyle Hidden
# 4. OPZIONALE: Simulare lo scenario di mascheramento msedge (miner)
# (Copiare un qualsiasi eseguibile benigno, rinominarlo come msedge.exe, collocarlo in %LOCALAPPDATA%MicrosoftWindowsApplications)
$minerSrc = "$env:SystemRootSystem32notepad.exe"
$minerDest = "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe"
Copy-Item -Path $minerSrc -Destination $minerDest -Force
Start-Process -FilePath $minerDest -WindowStyle Hidden
# -----------------------------------------------
Comandi di Ripulitura
# Rimuovere le copie malevoli
Remove-Item -Path "$env:TEMPRuntimeBroker.exe" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe" -Force -ErrorAction SilentlyContinue