
Модульный оркестратор сканирования безопасности, который объединяет специализированные агенты для обнаружения уязвимостей, разведки и идентификации в сетях, веб-приложениях, мобильных приложениях и API.
[](https://badge.fury.io/py/ostorlab) [](https://pepy.tech/project/ostorlab) [](https://blog.ostorlab.co/) [](https://twitter.com/ostorlabsec) # OXO Scan Orchestration Engine OXO — это фреймворк для сканирования безопасности, созданный с упором на модульность, масштабируемость и простоту. Он имеет открытый исходный код и поддерживается компанией [Ostorlab](https://ostorlab.co). OXO Engine объединяет специализированные инструменты для совместной работы по поиску уязвимостей и выполнению таких действий, как разведка, перечисление и фингерпринтинг. * [Документация](https://oxo.ostorlab.co/docs) * [Магазин агентов](https://oxo.ostorlab.co/store) * [Руководство по CLI](https://oxo.ostorlab.co/docs/manual) * [Примеры](https://oxo.ostorlab.co/tutorials/examples)  # Ключевые возможности * **Модульность и масштабируемость**: легко объединяйте несколько специализированных агентов для проведения комплексных сканирований. * **Широкая поддержка активов**: сканируйте что угодно — от IP-адресов и доменов до мобильных приложений (Android, iOS, HarmonyOS) и схем API. * **Магазин агентов**: доступ к растущей библиотеке社区 и официальных агентов для популярных инструментов безопасности. * **Расширяемость**: встроенная поддержка создания и публикации собственных агентов с использованием простого фреймворка на Python. * **API First**: включает GraphQL API для лёгкой интеграции в CI/CD-конвейеры и другие автоматизированные рабочие процессы. # Требования Для локального запуска сканирований требуется Docker. Чтобы установить Docker, следуйте этим [инструкциям](https://docs.docker.com/get-docker/). # Установка OXO поставляется как Python-пакет на PyPI. Чтобы установить его, просто выполните следующую команду, если у вас уже установлен `pip`. ```shell pip install -U ostorlab ``` # Начало работы OXO поставляется с магазином, в котором представлены десятки агентов: от агентов сетевого сканирования, таких как Nmap, Nuclei или Tsunami, веб-сканеров, таких как ZAP, инструментов веб-фингерпринтинга, таких как WhatWeb и Wappalyzer, инструментов брутфорса DNS, таких как Subfinder и Dnsx, сканирования файлов на вредоносное ПО, такого как VirusTotal, и многого другого. Чтобы запустить любой из этих инструментов в комбинации, просто выполните следующую команду: > OXO CLI доступен с помощью команд `oxo` или `ostorlab`. ```shell oxo scan run --install --agent agent/ostorlab/nmap --agent agent/ostorlab/tsunami --agent agent/ostorlab/nuclei ip 8.8.8.8 ``` Эта команда загрузит и установит следующие агенты сканирования: * [agent/ostorlab/nmap](https://oxo.ostorlab.co/store/agent/ostorlab/nmap) * [agent/ostorlab/tsunami](https://oxo.ostorlab.co/store/agent/ostorlab/tsunami) * [agent/ostorlab/nuclei](https://oxo.ostorlab.co/store/agent/ostorlab/nuclei) Она просканирует целевой IP-адрес `8.8.8.8`. Агенты поставляются в виде стандартных Docker-образов. # Управление сканированием Чтобы проверить статус сканирования, выполните: ```shell oxo scan list ``` После завершения сканирования, чтобы получить доступ к результатам сканирования, выполните: ```shell oxo vulnz list --scan-id <scan-id> oxo vulnz describe --vuln-id <vuln-id> ``` Чтобы остановить запущенное сканирование, выполните: ```shell oxo scan stop --scan-id <scan-id> ``` # Docker-образ Чтобы запустить `oxo` в контейнере, вы можете использовать публично доступный образ и выполнить следующую команду: ```shell docker run -v /var/run/docker.sock:/var/run/docker.sock ostorlab/oxo:latest scan run --install --agent agent/ostorlab/nmap ip 8.8.8.8 ``` Примечания: * Команда начинается сразу с `scan run`, потому что в образе `ostorlab/oxo` в качестве `entrypoint` указан `oxo`. * Важно смонтировать Docker-сокет, чтобы OXO мог создавать агентов на хост-машине. # Логи On-Prem сканера При запуске OXO в качестве on-prem сканера используйте `--persist-logs`, чтобы записывать логи сканера на диск: ```shell oxo scanner --scanner-id <scanner-uuid> --persist-logs ``` По умолчанию логи записываются в `~/.ostorlab/scanner.log`. Чтобы выбрать другой файл: ```shell oxo scanner --scanner-id <scanner-uuid> --persist-logs --log-file /var/log/ostorlab/scanner.log ``` Чтобы изменить уровень детализации сохраняемых логов: ```shell oxo scanner --scanner-id <scanner-uuid> --persist-logs --log-level DEBUG ``` # Активы OXO поддерживает сканирование нескольких типов активов, что обеспечивает комплексное покрытие безопасности для разных платформ и протоколов. | Категория | Актив | Описание | |----------|-------|-------------| | **Сеть** | `ip` | IP-адрес или диапазон IP-адресов (v4 и v6). | | | `domain-name` | Доменное имя. | | **Веб** | `link` | Веб-ссылка, принимающая URL, метод, заголовки и тело запроса. | | | `api-schema` | Схема API (OpenAPI, GraphQL и т. д.). | | **Мобильные** | `android-apk` / `android-aab` | Пакетные файлы Android (.APK, .AAB). | | | `android-store` | Android-приложение в Google Play Store. | | | `ios-ipa` | Пакетный файл iOS (.IPA). | | | `ios-store` | iOS-приложение в Apple App Store. | | | `ios-testflight` | iOS-приложение в TestFlight. | | | `harmonyos-apk` / `harmonyos-hap` | Пакетные файлы HarmonyOS. | | **Другое** | `file` | Универсальный файл. | | | `phone-number` | Номер телефона. | | | `agent` | Мета-сканирование агента. | # Магазин OXO перечисляет всех агентов в публичном магазине, где вы можете искать, а также публиковать своих собственных агентов.  # Опубликуйте своего первого агента Чтобы написать своего первого агента, вы можете ознакомиться с полным руководством [здесь](https://oxo.ostorlab.co/tutorials/write_an_agent). Шаги в основном следующие: * Клонируйте шаблонного агента со всеми уже настроенными файлами. * Измените файл `template_agent.py`, добавив свою логику. * Измените `Dockerfile`, добавив любые дополнительные шаги сборки. * Измените `ostorlab.yaml`, добавив селекторы, документацию, образ и лицензию. * Опубликуйте его в магазине. После того как вы написали своего агента, вы можете опубликовать его в магазине, чтобы другие могли им воспользоваться и найти его. Магазин возьмёт на себя сборку агента и автоматически подхватит новые релизы из вашего Git-репозитория.  ## Идеи для агентов, которые стоит создать Реализации популярных инструментов, таких как: * ~~[semgrep](https://github.com/returntocorp/semgrep) для сканирования исходного кода.~~ * [nbtscan](http://www.unixwiz.net/tools/nbtscan.html): сканирует открытые серверы имён NetBIOS в сети вашей цели. * [onesixtyone](https://github.com/trailofbits/onesixtyone): быстрый сканер для поиска публично доступных SNMP-сервисов. * [Retire.js](http://retirejs.github.io/retire.js/): сканер, обнаруживающий использование JavaScript-библиотек с известными уязвимостями. * ~~[snallygaster](https://github.com/hannob/snallygaster): находит утечки файлов и другие проблемы безопасности на HTTP-серверах.~~ * ~~[testssl.sh](https://testssl.sh/): выявляет различные слабости TLS/SSL, включая Heartbleed, CRIME и ROBOT.~~ * ~~[TruffleHog](https://github.com/trufflesecurity/truffleHog): ищет в Git-репозиториях строки с высокой энтропией~~ и секреты, глубоко исследуя историю коммитов. * [cve-bin-tool](https://github.com/intel/cve-bin-tool): сканирует бинарные файлы на наличие уязвимых компонентов. * [XSStrike](https://github.com/s0md3v/XSStrike): сканер XSS-уязвимостей в веб-приложениях с генеративными полезными нагрузками. * ~~[Subjack](https://github.com/haccer/subjack): инструмент сканирования на захват поддоменов.~~ * [DnsReaper](https://github.com/punk-security/dnsReaper): инструмент сканирования на захват поддоменов. * [Gitleaks](https://github.com/gitleaks/gitleaks): SAST-инструмент для обнаружения и предотвращения жёстко закодированных секретов. * [ffuf](https://github.com/ffuf/ffuf): быстрый веб-фаззер, написанный на Go. * [Gobuster](https://github.com/OJ/gobuster): инструмент, используемый для брутфорса URI, DNS-поддоменов и многого другого. ## Благодарности Как проект с открытым исходным кодом в быстро развивающейся области, мы всегда открыты для вклада — будь то новая функция, улучшенная инфраструктура или лучшая документация. См. [CONTRIBUTING.md](https://github.com/ostorlab/oxo/blob/main/CONTRIBUTING.md), чтобы начать. Мы хотели бы поблагодарить следующих участников за помощь в том, чтобы сделать OXO лучшим инструментом: * [@jamu85](https://github.com/jamu85) * [@ju-c](https://github.com/ju-c) * [@distortedsignal](https://github.com/distortedsignal)