OmniScan — Многофункциональный сканер уязвимостей
OmniScan — это легковесный, многодвигательный сканер уязвимостей на Python, разработанный для операций Red Team и исследований в области безопасности. Он объединяет облегчённый движок Nuclei (Lite) и движок Afrog, предоставляя мощные возможности сбора активов и управления результатами.
Основные возможности
1. Поддержка нескольких движков
- Движок Nuclei Lite (встроенный):
- Реализация ядра Nuclei на чистом Python, не требует окружения Go.
- Повышенная безопасность: использует
simpleeval вместо eval и выполняет DSL-выражения в изолированной среде для предотвращения выполнения вредоносных шаблонов.
- Умная генерация переменных: автоматически распознаёт и заполняет неопределённые переменные шаблонов (например,
{{lang-file}} → etc/passwd), поддерживает интеллектуальный фаззинг.
- Глубокая совместимость:
- Поддерживает большинство вспомогательных функций Nuclei (включая
hmac, gzip, reverse, rand_base и др.).
- Поддерживает логику
flow и req-condition.
- Поддерживает сохранение сессий
cookie-reuse и управление перенаправлениями redirects.
- Интеллектуальная фильтрация ложных срабатываний:
- Smart FP Reduction: для страниц с кодом 200 OK интеллектуально выявляет и отсеивает ложные срабатывания, соответствующие только коду состояния, но не ключевым словам (эвристика строгого режима).
- Определение WAF: автоматически распознаёт страницы блокировки WAF (403/429), избегая ложных срабатываний.
- Обнаружение OOB-взаимодействий (улучшено):
- Встроенный клиент
Interactsh для автоматической обработки уязвимостей без прямого отклика (например, Blind RCE, SSRF).
- Correlation ID: для каждого запроса генерируется уникальный идентификатор, обеспечивающий точное сопоставление OOB-взаимодействий и исключающий ложные срабатывания.
- Адаптивное ожидание: автоматическая регулировка времени ожидания OOB-обнаружения для баланса скорости и точности.
- Движок Afrog: интеграция сканера Afrog для дополнительных возможностей обнаружения уязвимостей.
- Официальный движок Nuclei: поддержка вызова установленного в системе двоичного файла Nuclei.
- Движок XRay: поддержка вызова XRay для веб-сканирования.
2. Система плагинов (Новое)
- Расширение через плагины Python: позволяет пользователям писать скрипты Python в качестве плагинов сканирования для обработки сложной логики.
- Визуальный прогресс: встроенный прогресс-бар
tqdm для отображения хода сканирования каждого плагина на каждой цели в реальном времени.
- Простота использования: достаточно унаследоваться от класса
BasePlugin и реализовать метод check(url).
- Бесшовная интеграция: результаты сканирования плагинов автоматически попадают в общий отчёт и управляются вместе с результатами Nuclei.
- Целевое сканирование: поддержка указания одного или нескольких файлов плагинов для специализированной проверки.
- Примеры плагинов:
git_config.py: обнаружение утечки .git/config
spring_boot.py: обнаружение Spring Boot Actuator
ds_store.py: обнаружение утечки .DS_Store
phpinfo.py: обнаружение страницы phpinfo()
backup_files.py: обнаружение распространённых файлов резервных копий (.bak, .zip и т.д.)
swagger_ui.py: обнаружение документации Swagger UI
3. Сбор активов
- Поиск в FOFA: интеграция с API FOFA, поддержка массового поиска активов по синтаксису (например,
country="CN").
- Поиск в Shodan: интеграция с API Shodan, поддержка поиска активов по ключевым словам.
- Одиночная цель: поддержка прямого указания одного URL для быстрого сканирования.
- Загрузка локальных целей: поддержка массовой загрузки списка URL из текстового файла.
- Умная проверка активности: автоматическая HTTP-проверка активности перед сканированием, отсеивание неактивных целей.
- Нормализация URL: автоматическое дополнение протокола (http/https) и удаление дубликатов.
4. Высокопроизводительная асинхронная архитектура и поддержка массовых шаблонов
- Использует Python
asyncio и aiohttp.
- Оптимизация памяти (НОВОЕ):
- Ленивая загрузка: файлы шаблонов загружаются по мере необходимости, без единовременной загрузки всех файлов.
- Пакетная обработка: поддержка массового сканирования десятков миллионов POC-шаблонов (по умолчанию 5000 за один пакет), окончательное решение проблемы переполнения памяти (OOM) при крупномасштабном сканировании.
- Автоматическая сборка мусора: автоматическое освобождение памяти после каждого пакета.
- Мониторинг прогресса в реальном времени: отображение подробной информации о прогрессе по пакетам и процентах.
- Система LogFilter: автоматическое подавление некритичных ошибок (например, "Illegal cookie name") для чистоты вывода.
5. Управление результатами
- Сохранение результатов в реальном времени:
- Каждая обнаруженная уязвимость немедленно записывается в базу данных SQLite и CSV-файл, предотвращая потерю данных при прерывании программы.
- После завершения сканирования каждой цели автоматически обновляется сводная статистика.
- Отчёты в нескольких форматах: генерация отчётов в форматах JSON, CSV и HTML в реальном времени.
- База данных SQLite: встроенная БД SQLite с автоматическим удалением дубликатов результатов (на основе ID шаблона + цели + URL).
- Подробная сводка:
- Во время сканирования в реальном времени выводятся сводки уязвимостей для каждой цели (включая количество находок в текущем пакете и общее количество накопленных находок).
- Прогресс-бар показывает общее количество накопленных уязвимостей за всё сканирование.
- После завершения сканирования предоставляется глобальная статистика уязвимостей.
6. Обнаружение OOB (внеполосных) взаимодействий
- Полностью автоматическое замкнутое обнаружение: автоматическая обработка уязвимостей без прямого отклика, таких как Blind RCE, SSRF, Blind SQLi.
- Встроенный клиент Interactsh:
- Автоматическая загрузка и управление двоичным файлом
interactsh-client. (Я уже загрузил interactsh-client.zip, вы можете просто распаковать его в этот каталог.)
- Автоматическое получение URL полезной нагрузки OOB (например,
xxx.oast.pro).
- Мониторинг журналов DNS/HTTP/SMTP в реальном времени.
- Нулевая конфигурация: сканер автоматически заменяет
{{interactsh-url}} в шаблонах на полученную в реальном времени полезную нагрузку.
Быстрый старт
Требования к окружению
- Python 3.8+
- Linux / macOS / Windows
Установка
-
Клонирование репозитория:
git clone https://github.com/d3ckx1/OmniScan.git
cd omniscan
-
Установка зависимостей:
pip3 install -r requirements.txt
-
Настройка инструментов (опционально):
- Если используется
Afrog или XRay, убедитесь, что соответствующие исполняемые файлы находятся в корневом каталоге проекта или в системном PATH.
- Настройте
config.yml (опционально) для задания API-ключей и параметров сканирования.
Примеры использования
1. Сканирование одной цели
Сканирование одного URL:
python3 omniscan.py -u http://example.com --tool lite -T ./templates/cve/
2. Сбор активов и сканирование (FOFA)
Поиск активов через FOFA и сканирование с помощью Nuclei Lite:
python3 omniscan.py -f 'app="SpringBoot"' --tool lite -T ./templates/spring-boot/
3. Пакетное сканирование из локального файла
Чтение целей из urls.txt и сканирование:
python3 omniscan.py -l urls.txt --tool lite -T ./templates/cve/