Nuovo Whitepaper: Le Varianti di BPFDoor Si Nascondono in Bella Vista
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
Rapid7 Labs ha identificato sette nuove varianti BPFDoor che abusano dei Berkeley Packet Filters a livello del kernel per mantenere un accesso di backdoor furtivo in ambienti telecom. Le nuove famiglie, httpShell e icmpShell, utilizzano tunneling ICMP e HTTP stateless con formati di pacchetti “magici” e campi IP nascosti per stabilire un comando e controllo con un’impronta osservabile minima. Il rapporto spiega come gli impianti mirano a rimanere quasi invisibili attraverso mascheramento dei processi, pulizia dei file descriptor, timestomping e comunicazioni ICMP criptate.
Indagine
I ricercatori hanno analizzato quasi 300 campioni ed estratto nuovi tratti del bytecode BPF, nuovi marcatori di “magic byte” e nomi di processi specifici per varianti come hpasmlited e cmathreshd. La convalida in laboratorio in Docker ha riprodotto il tunneling PTY guidato da ICMP, lo scambio di payload criptato con RC4 e un comportamento di routing in cui un flag –1 restituisce il traffico all’indirizzo di origine del pacchetto. Il team ha anche scoperto infrastruttura di supporto, inclusi domini che si spacciano per servizi NTP-su-SSL utilizzati per mescolare traffico di staging e controllo.
Mitigazione
Dare priorità alla telemetria che espone abusi adiacenti al kernel: monitorare la creazione di socket AF_PACKET, rilevare l’aggancio di filtri BPF e cacciare anomalie di protocollo legate a queste varianti, inclusa la sequenza ICMP 1234 e un codice ICMP non valido 1. Segnalare demoni sospetti con percorsi eseguibili mancanti, nomi di servizi falsificati o caratteristiche di runtime incoerenti con i processi di sistema legittimi. Rapid7 consiglia di eseguire lo script di triage rapid7_bpfdoor_check.sh e aggiornare le regole YARA/Suricata con le nuove firme dei magic-byte documentate.
Risposta
Se vengono trovati indicatori, isolare il sistema, interrompere il processo sospetto dell’impianto e bloccare i domini e gli intervalli IP associati. Catturare artefatti di memoria e disco per conservare lo stato BPF e le prove di runtime, quindi utilizzare rapid7_bpfdoor_check.sh per identificare filtri BPF attivi e artefatti di mutex a zero byte correlati. Infine, aggiornare i rilevamenti con le firme pubblicate e continuare a monitorare la ricomparsa degli stessi marcatori di pacchetto, nomi di processo e comportamenti di aggancio del filtro.
Flusso di Attacco
Rilevamenti
Possibile Servizio DNS Dinamico Contattato (via dns)
Visualizza
IOC (HashSha256) per rilevare: Nuovo Whitepaper: Le Varianti Stealthy BPFDoor sono un Ago Che Sembra un Pagliaio
Visualizza
Rilevamento di Varianti BPFDoor tramite Anomalie di Processo [Creazione Processo Linux]
Visualizza
Rilevamento di Pacchetti Magici BPFDoor e Anomalie ICMP [Firewall]
Visualizza
Esecuzione della Simulazione
Pre-requisito: Il controllo preliminare di Telemetria e Baseline deve essere superato.
Narrativa & Comandi dell’Attacco
- Crea uno script Bash malevolo nel percorso raramente monitorato
/var/run/user/0. - Rendi lo script eseguibile e poi elimina il file tenendolo aperto, risultando in un inode eliminato che il kernel registra come parte della riga di comando quando il processo continua a funzionare.
- Esegui il descrittore di file pendente, causando l’esecuzione del processo da un inode eliminato e generando esattamente la telemetria per cui la regola Sigma è stata progettata.
- Verifica che la riga di comando del processo nei registri di audit contenga la stringa “inode eliminato”, soddisfacendo
selezione3. - Evita le stringhe di mascheramento escluse (
hpasmlited,cmathreshd) per garantire che la regola si attivi.
Script di Test di Regressione
#!/usr/bin/env bash
# -------------------------------------------------
# Test di esecuzione da inode eliminato in stile BPFDoor
# -------------------------------------------------
# 1. Prepara un payload malevolo (innocuo)
PAYLOAD="/var/run/user/0/malicious.sh"
echo -e "#!/usr/bin/env bashnsleep 60" > "$PAYLOAD"
chmod +x "$PAYLOAD"
# 2. Apri il descrittore di file (mantieni il file aperto)
exec 3<"$PAYLOAD"
# 3. Elimina il file dal filesystem – inode rimane aperto tramite FD 3
rm -f "$PAYLOAD"
# 4. Esegui lo script tramite il suo descrittore di file pendente.
# Il symlink /proc/self/fd/3 punta all'inodice ora eliminato.
bash /proc/self/fd/3 &
# 5. Dai al processo un momento per avviarsi ed essere registrato
sleep 5
# 6. Pulisci: chiudi il descrittore di file
exec 3<&-
echo "Simulazione completata – verifica avvisi nel SIEM."
Comandi di Pulizia
#!/usr/bin/env bash
# -------------------------------------------------
# Pulizia dopo la simulazione BPFDoor
# -------------------------------------------------
# Termina eventuali processi sleep residui avviati dallo script
pkill -f "sleep 60"
# Assicurati che non ci siano file rimasti nella directory target
rm -f /var/run/user/0/malicious.sh
echo "Pulizia completata."
Fine del Rapporto