Osmedeus — инструмент наступательной безопасности

Osmedeus — это фреймворк, позволяющий автоматизировать этап разведки при проведении тестирований на проникновение, также подходящий для выстраивания Vulerability management. Основной подход, которому следовали разработчики при создании инструмента, — не заменить все имеющиеся утилиты, а наоборот объединить их для максимальной эффективности и гибкости настроек.

Структура Osmedeus

Состоит из двух компонентов:

  • Core Engine (написан на Go, отвечает за обработку сложной логики и позволяет оптимизировать процесс работы);

  • Workflow (набор YAML файлов, которые будут выполняться в заданном порядке);

e55e8c6c4cfd5b945a984b619e2b996e.png

Соответственно, как мы видим на изображении, workflow состоит из определенных модулей, которые могут запускаться последовательно или параллельно, а также использовать в качестве входных данных вывод с предыдущих этапов сканирований.

Workflow

Default

Прежде, чем переходить к созданию собственного рабочего процесса, изучим, что нам уже доступно для использования после стандартной установки, сделать это можно при помощи команды osmedeus worflow list:

Default Workflow

Default Workflow

Всего представлено 10 workflow для различных целей: поиск поддоменов, определение открытых портов, выявление уязвимостей и пр.

Более подробно узнать о каждом workflow можно непосредственно в директории их расположения ~/osmedeus-base/worflow/. В YAML-файле каждого рабочего процесса будет храниться информация об используемых модулях, порядке их запуска, а также различные дополнительные параметры. Например, содержимое cidr.yaml (определяет workflow c одноименным названием — CIDR):

5c105d190b5d1cef956f167e37d02d4c.png

Модули

Содержимое же дефолтных модулей расположено в ~/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:

0100507a8a7ac7e6822b9911457c0bad.png

Работа модуля завершена успешно, по результатам сформировано 3 отчета, каждая соответствует используемой утилите, — gitleaks, trufflehog, semgrep.

Информацию о результатах сканирований можно транслировать в различные системы, что особенно удобно при настроенных регулярных сканированиях, выполняющихся по расписанию:

  • Бот/канал в Telegram;

  • Почта/Slack/Discord и пр. (например, при помощи консольного инструмента Notify от ProjectDiscovery);

  • ASPM-системы, например, DefectDojo (сделать это можно при помощи обычного cURL запроса, размещенного в отдельный шаг модуля либо определенного в отдельном модуле, созданного для экспорта данных);

Заключение

В заключение, Osmedeus является мощным многофункциональным инструментом, который позволяет использовать его для решения задач в моменте и по расписанию cron’а, а также гибко кастомизировать под решение различных задач.

В следующей части рассмотрим, как написать свой собственный модуль и подробнее остановимся на используемых для этого методах.

© Habrahabr.ru