Для распределения задач, автоматически выполняемых в назначенное время или интервал, применяется планировщик cron. С помощью Docker настроим его для целей разведки.

Введение

Чтобы скрипт cron.sh выполнялся ежеминутно, добавляем в файл crontab эту строку (https://crontab.guru/  —  сайт для расчета времени в cron):

* * * * * export $(xargs < /app/.env); /app/cron.sh >> /app/log/cron.log 2>&1

Этой строкой экспортируются указанные в файле .env переменные среды́, а также запускается скрипт cron.sh для перенаправления вывода в файл cron.log каталога /app/log.

Чтобы указать местоположение файла среды и создать необходимые каталоги и файлы, добавляем в файл docker-compose.yml следующее:

version: "3.9"
services:
recon:
build: .
env_file:
- .env
volumes:
- ./recon:/app/recon
- ./log:/app/log

Теперь нужен Dockerfile:

FROM ubuntu:22.04
# Установка всего необходимого
RUN apt-get update && apt-get install -y \
curl \
unzip \
dnsutils \
cron
RUN mkdir /app/
WORKDIR /app/
COPY ./ /app/

RUN mkdir -p /app/log/
RUN touch /app/log/cron.log

RUN cp /app/cronjob /etc/cron.d/cronjob
RUN chmod 644 /etc/cron.d/cronjob
RUN crontab /etc/cron.d/cronjob

RUN chmod +x /app/recon.sh

# Создание точки входа для cron
CMD ["cron", "-f"]

Запускаем cron, а командой tail отслеживаем лог-файл:

docker-compose up -d
tail -n0 -f ./log/cron.log

Вот и все. Планировщик готов к запуску с Docker. Остается настроить переменные среды́ в файле .env, создать необходимые скрипты и файлы. В дальнейшем можно сделать скрипт разведки с открытым исходным кодом. А пока рассмотрим примеры.

  • Инструменты для захвата поддоменов, такие как MX Takeover
  • Автоматизация сканирования WordPress

Это инструмент сканирования WordPress для обнаружения любых потенциальных уязвимостей и слабых мест систем, запускается в планировщике cron на регулярной основе.

  • Перечисление поддоменов

Cron настраивается для запуска на регулярной основе инструмента перечисления поддоменов, такого как Findomain, чтобы следить за поддоменами целевой организации и потенциально обнаруживать новые поверхности атаки.

  • Отслеживание сети

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

  • Отслеживание срока действия SSL-сертификата

Сроки действия SSL-сертификатов на целевых доменах проверяются с помощью таких инструментов, как SSLScan. Cron настраивается на регулярное выполнение таких проверок с уведомлением о любых событиях, касающихся истечения срока действия сертификата.

  • Автоматическое сканирование в Burp Suite

В cron такие сканирования настраиваются на регулярной основе, так что безопасность приложения отслеживается с течением времени.

  • Периодические проверки на наличие конфиденциальных данных

Проверки на наличие незащищенных конфиденциальных данных выполняются периодически. Cron настраивается на запуск grep или truffleHog (инструмент для выявления конфиденциальных данных в гит-репозиториях). С ними потенциальные цели не останутся незамеченными.

Скоро многие инструменты будут автоматизированы в cron. Уже готовится релиз скрипта разведки на Github. Больше внимания в нем уделяется тестированию на проникновение через интернет, а не через сеть.

Читайте также:

Читайте нас в TelegramVK и Дзен


Перевод статьи Adam J Sturge: Scheduling Recon Scripts with Docker

Предыдущая статья4 альтернативы Pandas: ускоренное выполнение анализа данных
Следующая статьяКак преобразовать сгенерированные ИИ изображения в полигональные сетки