
Отслеживание семейства не связанных между собой IoT-ботнетов, использующих CVE-2021-35394 в качестве вектора доставки — находки, взаимосвязи, методология.
Этот репозиторий существует потому, что один эксплойт делает эти ботнеты видимыми для пассивного сенсора — а не потому, что они связаны друг с другом. CVE-2021-35394 (инъекция команд в Realtek SDK, UDP/9034) — это критерий входа: семейство попадает в область рассмотрения, потому что была зафиксирована попытка эксплуатации этого эксплойта против наблюдаемой сети. Как только семейство попадает в область рассмотрения, отслеживание следует за собственной инфраструктурой и поведением этого семейства настолько далеко, насколько до них можно дотянуться — staging- серверы, скрипты-дропперы, другие образцы — даже если ни одна из этих активностей сама по себе не является данной CVE. Уязвимость — это дверь, за которой наблюдают, а не утверждение о том, что за ней находится.
На данный момент результаты охватывают шесть независимых по коду семейств, использующих этот единственный эксплойт: Condi, cling, goonbakk (он же lucy_meow), RondoDox и два пока безымянных (отслеживаются как «семейство D» и «семейство E» до принятия решения об именовании — см. NAMING.md).
METHODOLOGY.md смещение наблюдения — прочитать до выводов
HANDOFF.md состояние непрерывности сессии
analysis/<family>/ запись RE-справки, один документ на семейство
analysis/comparison.md межсемейная диаграмма, трёхуровневая достоверность
samples/manifest.csv сгенерированный индекс локальной коллекции (только хеши)
samples/README.md соглашения манифеста + что он показывает сам по себе
tools/inventory.py перегенерирует манифест из каталога коллекции
Два слоя, намеренно разделённые. analysis/ — это то, что делают
бинарники, написано вручную по Ghidra. samples/ — это то, что
содержит коллекция, сгенерировано сканированием её — заголовки, хеши,
build ID, происхождение. Второй дёшево поддерживать в актуальном
состоянии (python tools/inventory.py), и он ловит то, что не может
первый: какие отдаваемые имена являются одной и той же сборкой, какие
«образцы» вообще не бинарники, какая программа Ghidra соответствует
какому отдаваемому файлу. Результаты, вытекающие из инвентаря,
переносятся в соответствующий документ analysis/, а не остаются в CSV.
Добавление семейства — это каталог в analysis/ и, как только его
staging-хост атрибутирован на основе доказательств, строка в
FAMILY_BY_HOST в tools/inventory.py плюс строка в таблице
атрибуции в samples/README.md.
METHODOLOGY.md — в этот набор данных встроено реальное смещение
наблюдения (вектор эксплойта, который мы видим, — только UDP и не требует
слушателя; все остальные векторы, используемые этими семействами, требуют
завершённого TCP-рукопожатия, чего до сих пор ничто на стороне коллекции
не обеспечивало). Прочитайте это до того, как делать выводы из чего-либо
ещё в этом репозитории.
goonbakk — основное, lucy_meow — псевдоним
(одно семейство — идентичные ChaCha20 ключ/nonce/счётчик-особенность и
таблица конфигурации). Для «семейства D» и «семейства E» всё ещё нужны
настоящие имена (последнее уже богато охарактеризовано: Go, дерево
модулей Botnet/, C2 на :9111, на диске sysd) — проверьте, называет
ли отчёт Akamai семейство E, прежде чем придумывать своё.docs/families/<family>.md — прозаический обзор на семейство
(возможности, IOC, псевдонимы), слой, на который ссылается analysis/hunts/ — запросы Security Onion / NSM, поддерживаемые в
работоспособном виде, а не цитируемые в прозеiocs/ — машиночитаемые сетевые/хостовые индикаторы на семейство.
Частично поглощено samples/manifest.csv для файловых индикаторов;
пробел — это C2-эндпоинты и отпечаток delivery-китаУстоявшееся, не пересматривать (полный список см. в HANDOFF.md):
образцы — только хеши — никакой функциональный вредоносный код не
попадает в историю git, это обеспечивается .gitignore; никакой
«линии Mirai» в качестве организующего принципа; CVE-2021-35394 — это
критерий входа, а не область рассмотрения.
yara/ — правила обнаруженияanalysis/comparison.md покрывает половину этого,
касающуюся кода/возможностей