Для распределения задач, автоматически выполняемых в назначенное время или интервал, применяется планировщик 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. Больше внимания в нем уделяется тестированию на проникновение через интернет, а не через сеть.
Читайте также:
- 10 рекомендаций по защите баз данных
- Два метода безопасного программирования
- Анализ инструментов Go для проверки уязвимостей безопасности
Читайте нас в Telegram, VK и Дзен
Перевод статьи Adam J Sturge: Scheduling Recon Scripts with Docker