ThreatBox 是一个基于 Linux 的标准化受控攻击平台。我使用该平台的某个版本已有多年。它最初是一系列脚本的集合,后来演变为一个滚动的虚拟机,再后来变成用于构建 Linux ISO 的代码,现在则已转换为一套 Ansible 剧本。为什么用 Ansible?为什么不呢?这似乎是标准攻击平台配置的下一步自然演进。
本项目使用 Ansible 剧本和角色来对 Linux 目标机(已在 Ubuntu 18.04 上测试)进行部署后配置。
该项目旨在作为创建、管理和使用标准攻击平台(用于红队或渗透测试)的启动流程。
关于标准攻击平台概念的详细说明可在《Red Team Development and Operations - A practical guide》一书中找到,作者为 Joe Vest 和 James Tubberville。Red Team Guide

threatbox.yml 中的 ansible_port 变量指定的 SSH 端口pipenv shell 访问。pipenv 使用指南请参见 https://realpython.com/pipenv-guide/以下列表突出显示了本项目的关键组件。
| 文件/目录 | 描述 | 用途 |
|---|---|---|
| host | Ansible hosts 文件 | 更新为目标 Ansible 系统的 IP 地址 |
| group_vars/threatbox.yml | 通用变量 | 本项目使用的变量,根据需要进行更新 |
| threatbox_playbox.yml | 主要 Ansible 剧本 | 根据需要更新以添加其他角色或功能 |
| roles/common | 通用 OS 平台配置 | 设置通用 OS 设置(例如在背景或构建中设置版本) |
| roles/. | 其他用于配置或部署工具的特定角色 | 在 roles/ 中添加或修改角色 |
配置一个或多个目标机。
注意:本项目已在 DigitalOcean 上部署的 Ubuntu 18.04 上测试。
hosts.sample 复制为 hostshosts,填入目标系统的 IP 地址group_vars\threatbox.yml.sample 复制为 group_vars\threatbox.ymlgroup_vars\threatbox.yml,更新要使用的变量
# OSX 相关问题 https://github.com/ansible/ansible/issues/32499
if [[ "$(uname)" == "Darwin" ]]
then
export OBJC_DISABLE_INITIALIZE_FORK_SAFETY=yes;
fi
# Ansible 日志
rm ./ansible.log
export ANSIBLE_LOG_PATH="ansible.log"
# Ansible 调试
export ANSIBLE_DEBUG=False
# 执行剧本
ansible-playbook -e ansible_python_interpreter=/usr/bin/python3 -i hosts threatbox_playbook.yml
注意:考虑为 Ansible 使用 Mitogen 以获得显著性能提升。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 的风格。它们被设计为作为本项目的一部分使用,并通过单一的“变量”文件来控制项目。这些角色稍作调整便可轻松用于其他项目。
ThreatBox 自定义命令 
工具分类 
所有已安装工具的跟踪 ![]()
自动终端日志记录 
自定义终端选项提供更多上下文 
终端精简版
Pipenv 保持 Python 项目的独立性 
示例:在 pipenv 环境中运行的 SilentTrinity 