
Plataforma de ataque baseada em Ansible para implantar e gerenciar um ambiente padronizado de testes de penetração Linux com instalação automatizada de ferramentas, rastreamento de versões e acesso SSH/VNC.
ThreatBox é uma plataforma de ataque padrão e controlada baseada em Linux. Eu uso uma versão disso há anos. Começou como uma coleção de scripts, viveu como uma máquina virtual contínua, existiu como código para construir uma ISO Linux, e agora foi convertida em um conjunto de playbooks Ansible. Por que Ansible? Por que não? Esta pareceu ser a próxima evolução natural na configuração de plataformas de ataque padrão.
Este projeto utiliza playbooks e roles do Ansible para realizar a configuração pós-implantação em um alvo Linux (testado no Ubuntu 18.04).
O projeto foi projetado para ser usado como um processo inicial na criação, gerenciamento e uso de uma plataforma de ataque padrão para operações de red team ou teste de penetração.
Detalhes sobre o conceito de uma Plataforma de Ataque Padrão podem ser encontrados no livro Red Team Development and Operations - A practical guide, escrito por Joe Vest e James Tubberville. Guia Red Team

ansible_port em threatbox.ymlpipenv shell no diretório do projeto para acessar. Veja https://realpython.com/pipenv-guide/ para orientação de uso do pipenvA lista a seguir destaca os principais componentes deste projeto.
| Arquivo/Diretório | Descrição | Uso |
|---|---|---|
| host | Arquivo de hosts do Ansible | Atualizar com os endereços IP dos sistemas alvo do Ansible |
| group_vars/threatbox.yml | Variáveis comuns | Variável usada para o projeto. Atualizar conforme necessário. |
| threatbox_playbox.yml | Playbook Ansible principal | Atualizar conforme necessário para adicionar roles ou recursos adicionais |
| roles/common | Configuração comum da plataforma OS | Configurar configurações comuns do SO (ex.: definir versão no fundo ou construir) |
| roles/. | Outras roles específicas para configurar ou implantar ferramentas | Adicionar ou modificar roles em roles/ |
Provisione um ou mais alvos.
Nota: Este projeto foi testado no Ubuntu 18.04 implantado no Digitalocean
hosts.sample para hostshosts com o(s) IP(s) do(s) seu(s) sistema(s) alvogroup_vars\threatbox.yml.sample para group_vars\threatbox.ymlgroup_vars\threatbox.yml com as variáveis atualizadas que você deseja usar
# Problema do OSX https://github.com/ansible/ansible/issues/32499
if [[ "$(uname)" == "Darwin" ]]
then
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=yes;
fi
# Logging do Ansible
rm ./ansible.log
export ANSIBLE_LOG_PATH="ansible.log"
# Depuração do Ansible
export ANSIBLE_DEBUG=False
# Executar playbook
ansible-playbook -e ansible_python_interpreter=/usr/bin/python3 -i hosts threatbox_playbook.yml
Nota: Considere usar Mitogen para Ansible para obter um ganho significativo de desempenho. 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
Nota: O SSH pode estar configurado para uma porta não padrão durante a configuração. Esse valor é definido no arquivo group_vars/threatbox.yml
threatboxip=10.10.10.10
sshport=52222
ssh -p $sshport -i ~/.ssh/threatbox_id_rsa root@$threatboxip
Nota: O VNC está configurado, mas não é permitido através da rede. Você deve usar um túnel SSH para acessá-lo.
threatboxip=10.10.10.10
sshport=52222
ssh -p $sshport -i ~/.ssh/threatbox_id_rsa -L 5901:localhost:5901 root@$threatboxip
Este projeto utiliza roles do Ansible. Essas roles podem não seguir exatamente o estilo do Ansible. Elas foram projetadas para serem usadas como parte deste projeto e usam um único arquivo de 'variáveis' para controlar o projeto. As roles podem ser facilmente usadas em outros projetos com pequenos ajustes.
Comandos personalizados do ThreatBox 
Categorias de Ferramentas 
Rastreamento de todas as ferramentas instaladas ![]()
Registro automático do terminal 
Opções de terminal personalizadas fornecem mais contexto 
Versão clara do terminal
Pipenv mantém projetos Python independentes 
Exemplo do SilentTrinity sendo executado no ambiente pipenv 