一个用于红队活动的中心枢纽,有助于记录保存、态势感知和汇报。 Stepping Stones 为团队提供了一个基于 Web 的界面,用于记录活动并生成报告片段。 该界面的设计足够快捷,可在整个任务过程中使用,而不仅仅是在汇报阶段。
Stepping Stones 是一个 Python Django 应用程序,要运行本地副本,请执行以下操作:
python -m venv .venv.venv\Scripts\activate,或在 *nix 系统上运行 source .venv/bin/activatepip install -r requirements.txtpython manage.py makemigrations background_taskpython manage.py migratepython manage.py runserver 和 python manage.py process_taskspython manage.py check --deploy 获取加固建议,然后遵循类似以下指南:
https://docs.djangoproject.com/en/6.0/howto/deployment/在团队服务器上——在防火墙中打一个洞,以允许 Stepping Stones 连接,例如:
sudo ufw allow proto tcp from 172.31.16.0/20 to any port 50050如果您运行的是本地副本,当 git 中的代码已更新并且您想要使用新功能时:
sudo service ssbot stopsudo service steppingstones stoprm -rf /tmp/stepping-stones-main; unzip /tmp/stepping-stones-main.zip && cp -R /tmp/stepping-stones-main/* /opt/steppingstones.venv\Scripts\activate,或在 *nix 系统上运行 source .venv/bin/activatepip install -r requirements.txtpython manage.py makemigrations background_taskpython manage.py migrate。
python manage.py makemigrations,请立即停止并联系 Stepping Stones 开发人员——让所有用户使用同一组迁移脚本非常重要,这些脚本应通过开发人员进行协调。sudo service ssbot restartsudo service steppingstones restartjournalctl -u steppingstones如果您将同一实例用于不同的任务,并希望归档旧数据后重新开始,您可以:
mv db.sqlite3 db.sqlite.OLD_CLIENT_NAME系统使用 SQLite。请定期备份服务器根目录中的 db.sqlite3 文件,或通过 Web UI 进行备份,以保护您的宝贵数据。
每个已配置的 webhook URL 都将在关键事件发生时收到一份小型 JSON 文档。 JSON 文档的结构始终如下:
{
"type": "notification type",
"message": "Human readable message"
}
type 字段可以是以下值之一:
new beacon(一个之前未见过的 beacon 已连接到受监控的 Team Server)respawned beacon(一个之前见过的 beacon 已连接到受监控的 Team Server)returned beacon(一个被明确监控以等待重新连接的 beacon 刚刚重新连接)要使用这些通知,您可以基于以下蓝图创建一个 https://make.com 场景:
{"name":"Webhook to iOS","flow":[{"id":1,"module":"gateway:CustomWebHook","version":1,"parameters":{"hook":129792,"maxResults":1},"mapper":{},"metadata":{"designer":{"x":-386,"y":-129},"restore":{"parameters":{"hook":{"data":{"editable":"true"},"label":"My webhook"}}},"parameters":[{"name":"hook","type":"hook:gateway-webhook","label":"Webhook","required":true},{"name":"maxResults","type":"number","label":"Maximum number of results"}],"interface":[{"name":"type","type":"text"},{"name":"message","type":"text"}]}},{"id":8,"module":"ios:SendNotification","version":1,"parameters":{"device":171760},"mapper":{"body":"{{1.message}}","title":"{{1.type}}","action":"","priority":10,"collapsible":false},"metadata":{"designer":{"x":-31,"y":-128},"restore":{"expect":{"action":{"label":"Default"},"priority":{"label":"Deliver immediately"}},"parameters":{"device":{"data":{"editable":"undefined"},"label":"Personal Phone"}}},"parameters":[{"name":"device","type":"device:apn","label":"Device","required":true}],"expect":[{"name":"title","type":"text","label":"Title","required":true},{"name":"body","type":"text","label":"Body"},{"name":"action","type":"select","label":"Action","validate":{"enum":["open_url"]}},{"name":"priority","type":"select","label":"Priority","required":true,"validate":{"enum":[10,5]}},{"name":"collapsible","type":"boolean","label":"Collapse push notifications","required":true}]}}],"metadata":{"instant":true,"version":1,"scenario":{"roundtrips":1,"maxErrors":3,"autoCommit":true,"autoCommitTriggerLast":true,"sequential":false,"confidential":false,"dataloss":false,"dlq":false},"designer":{"orphans":[]},"zone":"eu1.make.com"}}
通过创建一个空白场景,并使用 Web UI 底部中央的“...”(更多)菜单下的“Import Blueprint”(导入蓝图)功能,即可导入上述蓝图。
随后还需要两个步骤:
Webhook 可以通过 Stepping Stones webhook 页面上的一个按钮进行测试。
Stepping Stones 利用 Django 的模型级权限系统,可以限制用户创建、编辑、查看和删除每种类型的数据模型。
权限组可以在 /admin 控制台中找到,这些组将一组权限分配给组内任何成员,例如适合客户蓝队的权限。
现有权限组如下:
| 角色 | 描述 |
|---|---|
| Client Blue Team - Read Only | 可以读取事件和文件页面 |
| Client Blue Team - Limited Write | 与 Client Blue Team - Read Only 相同,并具有对事件结果和检测字段的写入权限 |
在安装过程中创建的用户会被赋予 "superuser"(超级用户)状态,因此隐式拥有所有可能的权限。 但是,通过管理控制台手动创建用户时,请确保他们未被标记为 "staff"(员工)或 "superuser"(超级用户),这样他们一开始就没有任何隐含权限,因此只能通过加入权限组来获得权限。
用户时区可以通过 /admin 门户进行修改。报告中的时间有意以 UTC 输出,以便蓝队更容易进行关联。
Stepping Stones 显示的日期格式应与 Web 浏览器的区域设置一致。例如,浏览器配置为美国区域设置的用户,将在 Web UI 和报告片段中以 MM/DD/YYYY 格式查看日期。
如果其他工具的日志被格式化为基于 JSON 的定制 EventStream 格式,Stepping Stones 即可摄取这些日志。该格式在 SteppingStones 的 Web 界面中有详细说明,包括架构和示例数据。
一旦 Stepping Stones 摄取了 EventStream 日志,就可以将特定的相关条目克隆为事件,用于生成报告。
集成 Cobalt Strike 的首选方法是通过 SSBot。这需要在 /opt/cobaltstrike 或 c:\tools\cobaltstrike 中放置一份已获许可的 Cobalt Strike 副本,该副本将用于联系 Web 界面中配置的任何(已启用的)团队服务器。
集成之后:
如果 SSBot 未按预期工作,还可以使用以下额外的 CLI 命令:
.\manage.py reset_cs_data [-s SERVER] - 将重置从指定团队服务器解析的任何数据;如果未提供名称,则重置所有数据。这不会影响从 CS 日志派生的数据,例如手动克隆的事件或凭据。.\manage.py parse_log_tar <file name> - 将解析从团队服务器打包并获取的 logs 目录内容。注意:这不包含 SSBot 可访问的所有数据,因此不是首选的摄取技术通过 Web UI 配置的 Neo4j 服务器将用于:
owned 状态。可以通过插件扩展 Stepping Stones 的功能。更多文档可在此处获取。