
Seguimiento de la familia de botnets IoT no relacionadas que comparten CVE-2021-35394 como vector de entrega — hallazgos, relaciones, metodología.
Este repositorio existe porque un exploit en particular hace que estas botnets sean visibles para un sensor pasivo — no porque estén relacionadas entre sí. CVE-2021-35394 (inyección de comandos del SDK de Realtek, UDP/9034) es el criterio de entrada: una familia está en alcance porque se observó intentando este exploit contra una red monitorizada. Una vez que una familia está en alcance, el seguimiento sigue la infraestructura y el comportamiento propios de esa familia hasta donde se pueda llegar — servidores de staging, scripts dropper, otras muestras — incluso cuando nada de esa actividad sea en sí misma este CVE. La vulnerabilidad es la puerta que se vigila, no una afirmación sobre lo que hay detrás de ella.
Los hallazgos hasta ahora cubren seis familias independientes a nivel de código que comparten este único exploit: Condi, cling, goonbakk (también conocido como lucy_meow), RondoDox, y dos aún sin nombre (registradas como "familia D" y "familia E" a la espera de una decisión de nomenclatura — véase NAMING.md).
METHODOLOGY.md sesgo de observación — leer antes de sacar conclusiones
HANDOFF.md estado de continuidad de sesión
analysis/<family>/ registro de referencia de RE, un documento por familia
analysis/comparison.md diagrama entre familias, confianza en tres niveles
samples/manifest.csv índice generado de la colección local (solo hashes)
samples/README.md convenciones del manifiesto + lo que muestra por sí solo
tools/inventory.py regenera el manifiesto desde un directorio de colección
Dos capas, deliberadamente separadas. analysis/ es lo que hacen los binarios,
escrito a mano a partir de Ghidra. samples/ es lo que contiene la colección,
generado escaneándola — cabeceras, hashes, build IDs,
procedencia. La segunda es barata de mantener actualizada (python tools/inventory.py) y detecta cosas que la primera no puede: qué nombres servidos son el mismo build, qué "muestras" no son binarios en absoluto, qué
programa de Ghidra corresponde a qué archivo servido. Los hallazgos que se derivan
del inventario se promueven al documento correspondiente de analysis/
en lugar de quedarse en el CSV.
Añadir una familia es un directorio bajo analysis/ y, una vez que su host de staging
se atribuye con evidencia, una línea en FAMILY_BY_HOST de tools/inventory.py
más una fila en la tabla de atribución en
samples/README.md.
METHODOLOGY.md — este conjunto de datos tiene un sesgo de observación real incorporado
(el vector de exploit que podemos ver es solo UDP y no necesita un listener;
todos los demás vectores que usan estas familias necesitan un handshake TCP completado,
que nada del lado de la colección proporcionó hasta ahora). Léelo
antes de sacar conclusiones de cualquier otra cosa en este repositorio.
goonbakk es el principal, lucy_meow un alias
(misma familia — idéntica clave/nonce/peculiaridad de contador de ChaCha20 y tabla de configuración). Aún se necesitan nombres reales para "familia D" y "familia E" (esta
última ya ricamente caracterizada: Go, árbol de módulos Botnet/, C2
en :9111, sysd en disco) — comprobar si el informe de Akamai nombra a E
antes de inventar uno.docs/families/<family>.md — resumen en prosa por familia
(capacidades, IOCs, alias), la capa a la que analysis/ enlaza hacia arribahunts/ — consultas de Security Onion / NSM, mantenidas ejecutables en lugar de
citadas en prosaiocs/ — indicadores de red/host legibles por máquina por familia.
Parcialmente subsumido por samples/manifest.csv para indicadores de archivos; la
brecha son los endpoints de C2 y la huella del kit de entregayara/ — reglas de detecciónanalysis/comparison.md cubre la mitad de código/capacidad de estoResuelto, no reabrir el debate (véase HANDOFF.md para la lista completa):
las muestras son solo hashes — ningún malware funcional entra en el historial
de git, aplicado por .gitignore; no "linaje Mirai" como principio
organizador; CVE-2021-35394 es el criterio de entrada, no el alcance.