
Plateforme d'attaque basée sur Ansible pour déployer et gérer un environnement standardisé de tests de pénétration Linux avec installation automatisée d'outils, suivi des versions et accès SSH/VNC.
ThreatBox est une plateforme d'attaque standard et contrôlée basée sur Linux. J'utilise une version de celle-ci depuis des années. Elle a commencé comme un ensemble de scripts, a vécu comme une machine virtuelle roulante, a existé en tant que code pour construire une ISO Linux, et a maintenant été convertie en un ensemble de playbooks Ansible. Pourquoi Ansible ? Pourquoi pas ? Cela semblait être la prochaine évolution naturelle pour la configuration des plateformes d'attaque standard.
Ce projet utilise des playbooks et des rôles Ansible pour effectuer la configuration post-déploiement sur une cible Linux (testé sur Ubuntu 18.04).
Le projet est conçu pour être utilisé comme un processus de démarrage dans la création, la gestion et l'utilisation d'une plateforme d'attaque standard pour le red teaming ou les tests de pénétration.
Les détails sur le concept d'une plateforme d'attaque standard se trouvent dans le livre Red Team Development and Operations - A practical guide, écrit par Joe Vest et James Tubberville. Guide Red Team

ansible_port dans threatbox.ymlpipenv shell dans le répertoire du projet pour y accéder. Voir https://realpython.com/pipenv-guide/ pour les conseils d'utilisation de pipenvLa liste suivante met en évidence les composants clés de ce projet.
| Fichier/Répertoire | Description | Utilisation |
|---|---|---|
| host | Fichier hosts Ansible | Mettre à jour avec les adresses IP des systèmes Ansible cibles |
| group_vars/threatbox.yml | variables communes | variable utilisée pour le projet. mettre à jour si nécessaire. |
| threatbox_playbox.yml | Playbook Ansible principal | Mettre à jour si nécessaire pour ajouter des rôles ou fonctionnalités supplémentaires |
| roles/common | Configuration commune de la plateforme OS | Configurer les paramètres OS communs (par exemple définir la version en arrière-plan ou dans la build) |
| roles/. | autres rôles spécifiques pour configurer ou déployer des outils | ajouter ou modifier des rôles dans roles/ |
Provisionner une ou plusieurs cibles.
Note : Ce projet a été testé sur Ubuntu 18.04 déployé sur DigitalOcean
hosts.sample vers hostshosts avec les adresses IP de vos systèmes ciblesgroup_vars\threatbox.yml.sample vers group_vars\threatbox.ymlgroup_vars\threatbox.yml avec les variables mises à jour que vous souhaitez utiliser
# 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
Note : Envisagez d'utiliser Mitogen pour Ansible afin d'obtenir une amélioration significative des performances. 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
Note : Le port SSH peut être défini sur un port non standard lors de l'installation. Cette valeur est définie dans le fichier group_vars/threatbox.yml
threatboxip=10.10.10.10
sshport=52222
ssh -p $sshport -i ~/.ssh/threatbox_id_rsa root@$threatboxip
Note : VNC est configuré mais n'est pas autorisé sur le réseau. Vous devez utiliser un tunnel SSH pour y accéder.
threatboxip=10.10.10.10
sshport=52222
ssh -p $sshport -i ~/.ssh/threatbox_id_rsa -L 5901:localhost:5901 root@$threatboxip
Ce projet utilise des rôles ansbile. Ces rôles peuvent ne pas suivre exactement le style Ansible. Ils ont été conçus pour être utilisés dans le cadre de ce projet et utilisent un seul fichier 'variable' pour contrôler le projet. Les rôles peuvent facilement être utilisés dans d'autres projets avec des ajustements mineurs.
Commandes personnalisées ThreatBox 
Catégories d'outils 
Suivi de tous les outils installés ![]()
Journalisation automatique du terminal 
Les options de terminal personnalisées offrent plus de contexte 
Version claire du terminal
Pipenv maintient les projets Python indépendants 
Exemple de SilentTrinity fonctionnant dans un environnement pipenv 