
Платформа атак на основе Ansible для развертывания и управления стандартизированной средой тестирования на проникновение Linux с автоматической установкой инструментов, отслеживанием версий и доступом по SSH/VNC.
ThreatBox — это стандартная и контролируемая платформа для атак на базе Linux. Я использую её версию уже много лет. Всё начиналось как набор скриптов, затем жило как виртуальная машина с rolling-обновлениями, потом превратилось в код для сборки ISO-образа Linux, а теперь преобразовано в набор Ansible-плейбуков. Почему Ansible? А почему бы и нет? Это казалось следующим естественным шагом в эволюции конфигурации стандартных платформ для атак.
Этот проект использует Ansible-плейбуки и роли для выполнения пост-развёртывающей конфигурации на целевой системе Linux (протестировано на Ubuntu 18.04).
Проект предназначен для использования в качестве стартового процесса при создании, управлении и использовании стандартной платформы атак для red teaming или пентестинга.
Подробнее о концепции стандартной платформы атак можно прочитать в книге «Red Team Development and Operations — A practical guide» авторов Джо Веста и Джеймса Таббервилля. Red Team Guide

ansible_port в threatbox.ymlpipenv shell в каталоге проекта для доступа. См. https://realpython.com/pipenv-guide/ для руководства по использованию pipenvВ следующем списке выделены ключевые компоненты этого проекта.
| Файл/Каталог | Описание | Использование |
|---|---|---|
| host | Ansible-файл хостов | Обновите IP-адресами целевых Ansible-систем |
| group_vars/threatbox.yml | Общие переменные | Переменные, используемые для проекта. Обновляйте по необходимости. |
| threatbox_playbox.yml | Основной Ansible-плейбук | Обновляйте для добавления дополнительных ролей или функций |
| roles/common | Общая конфигурация платформы ОС | Настройка общих параметров ОС (например, установка версии на фоне или сборка) |
| roles/. | Другие специфические роли для настройки или развёртывания инструментов | Добавляйте или изменяйте роли в каталоге roles/ |
Разверните одну или несколько целевых систем.
Примечание: Этот проект протестирован на Ubuntu 18.04, развёрнутой в Digitalocean
hosts.sample в hostshosts, указав IP-адреса ваших целевых системgroup_vars\threatbox.yml.sample в group_vars\threatbox.ymlgroup_vars\threatbox.yml, обновив переменные по вашему желанию
# OSX issue https://github.com/ansible/ansible/issues/32499
if [[ "$(uname)" == "Darwin" ]]
then
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=yes;
fi
# Ansible Logging
rm ./ansible.log
export ANSIBLE_LOG_PATH="ansible.log"
# Ansible Debugging
export ANSIBLE_DEBUG=False
# Execute playbook
ansible-playbook -e ansible_python_interpreter=/usr/bin/python3 -i hosts threatbox_playbook.yml
Примечание: Рассмотрите возможность использования Mitogen для Ansible, чтобы получить значительный прирост производительности. https://mitogen.networkgenomics.com/ansible_detailed.html
[defaults]
host_key_checking = False
pipelining = True
forks = 100
timeout = 600
stdout_callback = yaml
bin_ansible_callbacks = True
callback_whitelist = profile_roles, profile_tasks, timer
#mitogen
strategy_plugins = ~/Documents/mitogen-0.2.9/ansible_mitogen/plugins/strategy
strategy = mitogen_linear
Примечание: Во время настройки SSH может быть установлен на нестандартный порт. Это значение задаётся в файле group_vars/threatbox.yml
threatboxip=10.10.10.10
sshport=52222
ssh -p $sshport -i ~/.ssh/threatbox_id_rsa root@$threatboxip
Примечание: VNC настроен, но не разрешён через сеть. Для доступа необходимо использовать SSH-туннель.
threatboxip=10.10.10.10
sshport=52222
ssh -p $sshport -i ~/.ssh/threatbox_id_rsa -L 5901:localhost:5901 root@$threatboxip
В этом проекте используются Ansible-роли. Эти роли могут не полностью соответствовать стилю Ansible. Они были разработаны для использования в рамках этого проекта и используют один файл 'variable' для управления проектом. Роли могут быть легко использованы в других проектах с небольшими доработками.
Пользовательские команды ThreatBox 
Категории инструментов 
Отслеживание всех установленных инструментов ![]()
Автоматическое журналирование терминала 
Пользовательские опции терминала для большего контекста 
Светлая версия терминала
Pipenv сохраняет независимость Python-проектов 
Пример SilentTrinity, работающего в среде pipenv 