
Tracciamento della famiglia di botnet IoT non correlate che condividono CVE-2021-35394 come vettore di distribuzione — risultati, relazioni, metodologia.
Questo repo esiste perché un exploit rende per caso questi botnet visibili a un sensore passivo — non perché siano correlati tra loro. CVE-2021-35394 (command injection nel Realtek SDK, UDP/9034) è il criterio di ingresso: una famiglia rientra nello scope perché è stato osservato un tentativo di sfruttare questo exploit contro una rete monitorata. Una volta che una famiglia è nello scope, il tracciamento segue l'infrastruttura e il comportamento propri di quella famiglia fin dove è possibile arrivare — server di staging, script dropper, altri campioni — anche laddove nessuna di queste attività sia di per sé riconducibile a questa CVE. La vulnerabilità è la porta sorvegliata, non un'affermazione su ciò che c'è dietro.
I risultati finora coprono sei famiglie indipendenti a livello di codice che condividono questo unico exploit: Condi, cling, goonbakk (nota anche come lucy_meow), RondoDox, e due ancora senza nome (tracciate come "family D" e "family E" in attesa di una decisione sul nome — vedi NAMING.md).
METHODOLOGY.md observation bias — read before drawing conclusions
HANDOFF.md session-continuity state
analysis/<family>/ RE reference record, one doc per family
analysis/comparison.md cross-family diagram, three-tier confidence
samples/manifest.csv generated index of the local collection (hashes only)
samples/README.md manifest conventions + what it shows on its own
tools/inventory.py regenerates the manifest from a collection directory
Due livelli, deliberatamente separati. analysis/ è ciò che fanno i
binari, scritto a mano da Ghidra. samples/ è ciò che contiene la
collezione, generato scansionandola — header, hash, build ID,
provenienza. Il secondo è economico da mantenere aggiornato (python tools/inventory.py) e cattura cose che il primo non può: quali nomi
serviti sono lo stesso build, quali "campioni" non sono affatto
binari, quale programma Ghidra corrisponde a quale file servito. I
risultati che emergono dall'inventario vengono promossi nel documento
analysis/ pertinente invece di restare nel CSV.
Aggiungere una famiglia significa creare una directory sotto
analysis/ e, una volta che il suo host di staging è attribuito su
base probatoria, una riga nel FAMILY_BY_HOST di
tools/inventory.py più una riga nella tabella di attribuzione in
samples/README.md.
METHODOLOGY.md — questo dataset ha un reale bias di osservazione
incorporato (il vettore di exploit che possiamo vedere è solo UDP e non
richiede un listener; ogni altro vettore usato da queste famiglie
richiede un handshake TCP completato, che nulla dal lato della
collezione ha fornito fino ad ora). Leggilo prima di trarre
conclusioni da qualsiasi altra cosa in questo repo.
goonbakk è il nome primario,
lucy_meow un alias (stessa famiglia — identici ChaCha20
key/nonce/counter-quirk e tabella di configurazione). Servono ancora
nomi reali per "family D" e "family E" (quest'ultima già ampiamente
caratterizzata: Go, albero di moduli Botnet/, C2 su :9111, sysd
su disco) — verifica se il report di Akamai nomina la E prima di
inventarne uno.docs/families/<family>.md — panoramica in prosa per famiglia
(capacità, IOC, alias), il livello a cui analysis/ si collegahunts/ — query Security Onion / NSM, mantenute eseguibili invece
che citate in prosaiocs/ — indicatori di rete/host leggibili da macchina per
famiglia. In parte assorbito da samples/manifest.csv per gli
indicatori di file; il gap sono gli endpoint C2 e il fingerprint
del delivery-kitStabilito, non rimettere in discussione (vedi HANDOFF.md per la lista
completa): i campioni sono solo hash — nessun malware funzionante
entra nella cronologia git, imposto da .gitignore; nessuna "linea di
discendenza Mirai" come principio organizzativo; CVE-2021-35394 è il
criterio di ingresso, non lo scope.
yara/ — regole di detectionanalysis/comparison.md copre la metà
codice/capacità di questo