Osmedeus - это фреймворк, позволяющий автоматизировать этап разведки при проведении тестирований на проникновение, также подходящий для выстраивания Vulerability management. Основной подход, которому следовали разработчики при создании инструмента, - не заменить все имеющиеся утилиты, а наоборот объединить их для максимальной эффективности и гибкости настроек.
Структура Osmedeus
Состоит из двух компонентов:
Core Engine (написан на Go, отвечает за обработку сложной логики и позволяет оптимизировать процесс работы);
Workflow (набор YAML файлов, которые будут выполняться в заданном порядке);
Соответственно, как мы видим на изображении, workflow состоит из определенных модулей, которые могут запускаться последовательно или параллельно, а также использовать в качестве входных данных вывод с предыдущих этапов сканирований.
Workflow
Default
Прежде, чем переходить к созданию собственного рабочего процесса, изучим, что нам уже доступно для использования после стандартной установки, сделать это можно при помощи команды osmedeus worflow list
:
Всего представлено 10 workflow для различных целей: поиск поддоменов, определение открытых портов, выявление уязвимостей и пр.
Более подробно узнать о каждом workflow можно непосредственно в директории их расположения ~/osmedeus-base/worflow/
. В YAML-файле каждого рабочего процесса будет храниться информация об используемых модулях, порядке их запуска, а также различные дополнительные параметры. Например, содержимое cidr.yaml (определяет workflow c одноименным названием - CIDR):
Модули
Содержимое же дефолтных модулей расположено в ~/osmedeus-base/workflow/default-modules
, в них можно найти конкретные шаги по запуску утилит. Выглядит это примерно так:
steps: # all the steps will run in serial
- commands: # unix command and it will be run in parallel
- "unix command 1 here"
- "unix command 2 here"
Итого, мы определили - flow состоит из нескольких модулей и определяет порядок их запуска. Модуль - составная часть flow, определяет steps для запуска утилит и иных команд. Steps - это самая "маленькая" часть (атом Osmedeus), из которой выстраивается модуль, и определяющая конкретную команду.
Сканирование
Запускать сканирование можно используя workflow целиком либо при помощи любого из модулей самостоятельно.
Например, выполним анализ репозитория OWASP Juice Shop с использованием модуля repo-scan
:
Работа модуля завершена успешно, по результатам сформировано 3 отчета, каждая соответствует используемой утилите, - gitleaks, trufflehog, semgrep.
Информацию о результатах сканирований можно транслировать в различные системы, что особенно удобно при настроенных регулярных сканированиях, выполняющихся по расписанию:
Бот/канал в Telegram;
Почта/Slack/Discord и пр. (например, при помощи консольного инструмента Notify от ProjectDiscovery);
ASPM-системы, например, DefectDojo (сделать это можно при помощи обычного cURL запроса, размещенного в отдельный шаг модуля либо определенного в отдельном модуле, созданного для экспорта данных);
Заключение
В заключение, Osmedeus является мощным многофункциональным инструментом, который позволяет использовать его для решения задач в моменте и по расписанию cron'а, а также гибко кастомизировать под решение различных задач.
В следующей части рассмотрим, как написать свой собственный модуль и подробнее остановимся на используемых для этого методах.