
Ansible-basierte Angriffsplattform zur Bereitstellung und Verwaltung einer standardisierten Linux-Penetrationstest-Umgebung mit automatisierter Tool-Installation, Versionsverfolgung und SSH-/VNC-Zugriff.
ThreatBox ist eine standardisierte und kontrollierte Linux-basierte Angriffsplattform. Ich habe eine Version davon seit Jahren verwendet. Es begann als Sammlung von Skripten, lebte als rollende virtuelle Maschine, existierte als Code zum Erstellen eines Linux-ISO und wurde nun in eine Reihe von Ansible-Playbooks umgewandelt. Warum Ansible? Warum nicht? Dies schien die nächste natürliche Weiterentwicklung der Konfiguration von Standard-Angriffsplattformen zu sein.
Dieses Projekt verwendet Ansible-Playbooks und -Rollen, um die Konfiguration nach der Bereitstellung auf einem Linux-Zielsystem durchzuführen (getestet auf Ubuntu 18.04).
Das Projekt ist als Startprozess für die Erstellung, Verwaltung und Nutzung einer Standard-Angriffsplattform für Red Teaming oder Penetrationstests konzipiert.
Details zum Konzept einer Standard-Angriffsplattform finden Sie im Buch Red Team Development and Operations - A practical guide, geschrieben von Joe Vest und James Tubberville. Red Team Guide

ansible_port in threatbox.yml verwendet wird.pipenv shell im Projektverzeichnis, um darauf zuzugreifen. Siehe https://realpython.com/pipenv-guide/ für Anleitungen zur Nutzung von Pipenv.Die folgende Liste hebt die wichtigsten Komponenten dieses Projekts hervor.
| Datei/Verzeichnis | Beschreibung | Verwendung |
|---|---|---|
| host | Ansible-Hosts-Datei | Mit IP-Adressen der Ziel-Ansible-Systeme aktualisieren |
| group_vars/threatbox.yml | Allgemeine Variablen | Für das Projekt verwendete Variable. Nach Bedarf aktualisieren. |
| threatbox_playbox.yml | Primäres Ansible-Playbook | Nach Bedarf aktualisieren, um zusätzliche Rollen oder Funktionen hinzuzufügen |
| roles/common | Allgemeine Betriebssystem-Plattformkonfiguration | Einrichtung allgemeiner Betriebssystemeinstellungen (z.B. Version im Hintergrund oder Build setzen) |
| roles/. | Andere spezifische Rollen zum Konfigurieren oder Bereitstellen von Werkzeugen | Rollen in roles/ hinzufügen oder ändern |
Stellen Sie ein oder mehrere Ziele bereit.
Hinweis: Dieses Projekt wurde auf Ubuntu 18.04 getestet, das in Digitalocean bereitgestellt wurde
hosts.sample nach hostshosts mit den IP(s) Ihrer Zielsystemegroup_vars\threatbox.yml.sample nach group_vars\threatbox.ymlgroup_vars\threatbox.yml mit den gewünschten aktualisierten Variablen
# 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
Hinweis: Erwägen Sie die Verwendung von Mitogen für Ansible, um eine deutliche Leistungssteigerung zu erzielen. 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
Hinweis: SSH kann während der Einrichtung auf einen nicht standardmäßigen Port gesetzt werden. Dieser Wert wird in den Dateien group_vars/threatbox.yml festgelegt.
threatboxip=10.10.10.10
sshport=52222
ssh -p $sshport -i ~/.ssh/threatbox_id_rsa root@$threatboxip
Hinweis: VNC ist eingerichtet, aber nicht über das Netzwerk erlaubt. Sie müssen einen SSH-Tunnel verwenden, um darauf zuzugreifen.
threatboxip=10.10.10.10
sshport=52222
ssh -p $sshport -i ~/.ssh/threatbox_id_rsa -L 5901:localhost:5901 root@$threatboxip
Dieses Projekt verwendet Ansible-Rollen. Diese Rollen folgen möglicherweise nicht exakt dem Ansible-Stil. Sie wurden entwickelt, um als Teil dieses Projekts verwendet zu werden, und verwenden eine einzige 'Variable'-Datei zur Steuerung des Projekts. Die Rollen können mit geringfügigen Anpassungen leicht in anderen Projekten verwendet werden.
ThreatBox-Benutzerdefinierte Befehle 
Werkzeugkategorien 
Verfolgung aller installierten Werkzeuge ![]()
Automatische Terminalprotokollierung 
Benutzerdefinierte Terminaloptionen bieten mehr Kontext 
Helle Version des Terminals
Pipenv hält Python-Projekte unabhängig 
Beispiel von SilentTrinity, das in der Pipenv-Umgebung läuft 