
Проект инженерии от исследования CVE до сигнатур обнаружения: внешнее масштабируемое снятие отпечатков бэкдора vsftpd 2.3.4 (CVE-2011-2523) с проверенной обработкой ложных срабатываний/пропусков - написан на Python
Проект по созданию сигнатур обнаружения для CVE: исследование раскрытой уязвимости, построение отпечатка для её внешней идентификации и проверка качества обнаружения на реальных лабораторных целях.
Большинство портфолио по исследованию уязвимостей останавливаются на «Я эксплуатировал X». Этот проект построен вокруг другого вопроса, более близкого к тому, что на самом деле представляет собой инженерия обнаружения:
Как только CVE раскрыт, как надёжно определить — извне, в масштабе, без эксплуатации — какие активы, выходящие в интернет, на самом деле работают с уязвимой технологией?
Этот репозиторий документирует полный рабочий процесс для одного реального CVE: CVE-2011-2523, бэкдора в vsftpd 2.3.4. Он проходит путь от исследования уязвимости через разработку отпечатка, написание скрипта обнаружения и проверку на живых лабораторных целях — намеренно построенный как обнаружение, а не эксплуатация.
Раскрытие CVE → Исследование и анализ версий → Разработка отпечатка
→ Скрипт обнаружения → Проверка (анализ TP/FP/FN) → Вывод доказательств
220. Этот баннер является поверхностью отпечатка — для его чтения не требуется аутентификация или эксплуатация.fingerprint_vsftpd_cve_2011_2523.py подключается, захватывает баннер, сопоставляет его с известной уязвимой сигнатурой с помощью регулярного выражения и классифицирует результат.undetermined, а не даёт ложноотрицательный результат).Переименуйте ваши файлы скриншотов в соответствии с указанными или обновите эти пути после загрузки в
/screenshots.
| Скрипт сканирования | Вывод проверки |
|---|---|
| Script | Output |
Дополнительные детали запуска:
Detail Detail Detail Detail
# Одиночная цель
python3 fingerprint_vsftpd_cve_2011_2523.py --target 192.168.56.101
# Пакетный режим — несколько хостов, вывод доказательств в JSON
python3 fingerprint_vsftpd_cve_2011_2523.py --targets-file targets.json \
--output evidence/vsftpd_fingerprint_findings.json
Пример вывода:
{
"scan_type": "vsftpd_2.3.4_backdoor_fingerprint",
"cve": "CVE-2011-2523",
"total_targets": 1,
"vulnerable_count": 1,
"findings": [
{
"host": "192.168.56.101",
"port": 21,
"banner": "220 (vsFTPd 2.3.4)",
"verdict": "vulnerable",
"reason": "Banner matches known vulnerable signature (vsftpd 2.3.4)"
}
]
}
Это тройное разделение — ключевой контроль качества обнаружения в проекте: наивный детектор сворачивает «не удалось проверить» и «проверено и чисто» в один и тот же результат, а именно так ложноотрицательные результаты прячутся в производственной логике обнаружения.
.
├── fingerprint_vsftpd_cve_2011_2523.py
├── docs/
│ └── CVE-RESEARCH.md
├── evidence/
│ └── vsftpd_fingerprint_findings.json
├── screenshots/
│ └── (скриншоты скрипта и проверки)
└── README.md
Инженер по кибербезопасности | Инженер по обнаружению | Исследователь уязвимостей | Фиолетовая команда | SIEM | Корпоративная безопасность
Сосредоточен на конвейере от исследования к обнаружению: от раскрытого CVE до работающего, проверенного отпечатка, способного идентифицировать уязвимые технологии извне и в масштабе — построенный на практической работе в наступательных и оборонительных лабораториях, а не на теории.
https://www.linkedin.com/in/bassey-solomon-henry/
GitHub
https://github.com/solomonhenry-afk/Bassey-Solomon-Henry
«Уязвимость не является реальным риском, пока вы не сможете доказать в масштабе, какие системы на самом деле её содержат. Исследование говорит вам, что возможно — инженерия обнаружения говорит вам, что истинно.»
Если этот проект оказался полезным, подумайте о том, чтобы поставить звёздочку репозиторию.
| Основная функция | Где это находится в этом репозитории |
|---|
| Исследование недавно раскрытых CVE и рекомендаций | docs/CVE-RESEARCH.md — предыстория CVE-2011-2523, затронутые версии, временная шкала раскрытия |
| Разработка технологических отпечатков и сигнатур обнаружения | fingerprint_vsftpd_cve_2011_2523.py — сигнатура сопоставления версий на основе баннера |
| Создание масштабируемой логики обнаружения | Пакетный режим (--targets-file) для сканирования нескольких хостов за один запуск |
| Проверка обнаружений с помощью реальных активов | Запущен и проверен на живых лабораторных целях (Metasploitable2 + контроль с закрытым портом) |
| Снижение ложноположительных / ложноотрицательных результатов | Логика вердикта с тремя состояниями (vulnerable / not_vulnerable / undetermined) вместо булева значения — закрытый/фильтрованный порт никогда молча не сливается в «not vulnerable» |
| Написание скриптов на Python для исследования и проверки | Весь скрипт обнаружения + вывод доказательств в JSON, без ручных шагов |
| Основы HTTP/HTTPS, сетей | Взаимодействие с сервисом на уровне сырого TCP/сокета, разбор баннеров |
| Ориентация на инфраструктуру, выходящую в интернет | Предназначен для внешнего неаутентифицированного сканирования — без учётных данных, без эксплуатации, без прерывания сервиса |
| Тестовый случай | Тип цели | Ожидаемый вердикт | Результат |
|---|
| Заведомо уязвимый хост | Metasploitable2 (vsftpd 2.3.4) | vulnerable | Подтверждено |
| Закрытый/фильтрованный порт | Не слушающий порт | undetermined (не молчаливый ложноотрицательный) | Подтверждено |
| Сервис не vsftpd | Другой FTP-баннер | not_applicable | Подтверждено |