CyberBattleSim `samples` 模块详细分析

CyberBattleSim samples 模块详细分析

samples 模块包含了 CyberBattleSim 的各种网络环境示例,用于创建不同类型的网络拓扑和漏洞场景。下面我将详细分析每个文件和类,以及它们之间的关联。

1. active_directory 目录

1.1 generate_ad.py

这个文件用于生成随机的 Active Directory 网络环境。

主要函数
create_network_from_smb_traffic
  • 参数
    • n_clients:客户端工作站数量
    • n_servers:服务器数量
    • n_users:用户数量
  • 处理逻辑
    • 创建一个有向图表示网络
    • 添加工作站、共享和域控制器节点
    • 配置防火墙规则
    • 为节点添加漏洞和属性
  • 主要作用:生成一个模拟 Active Directory 网络的图结构
default_vulnerabilities
  • 参数:无
  • 处理逻辑:创建默认漏洞库,包括:
    • FindDomainControllers:查找域控制器
    • EnumerateFileShares:枚举文件共享
    • ProbeAdmin:探测管理员权限
    • ScanForCreds:扫描凭证
  • 主要作用:定义 AD 环境中的基本漏洞
breach_vulnerabilities
  • 参数lib:现有漏洞库
  • 处理逻辑:添加入侵漏洞,如 AuthorizationSpoofAndCrack
  • 主要作用:定义初始入侵点的漏洞
admin_vulnerabilities
  • 参数lib:现有漏洞库
  • 处理逻辑:添加管理员相关漏洞
  • 主要作用:定义管理员节点的漏洞
dc_vulnerabilities
  • 参数lib:现有漏洞库
  • 处理逻辑:添加域控制器相关漏洞,如 DumpNTDS
  • 主要作用:定义域控制器节点的漏洞
new_random_environment
  • 参数seed:随机种子
  • 处理逻辑
    • 设置随机种子
    • 生成随机网络
    • 创建环境对象
  • 主要作用:生成随机 AD 环境

1.2 tiny_ad.py

这个文件定义了一个小型的 Active Directory 网络环境。

主要函数和变量
default_vulnerabilities
  • 处理逻辑:创建默认漏洞库
  • 主要作用:与 generate_ad.py 类似,但更简化
breach_vulnerabilities
  • 处理逻辑:添加入侵漏洞
  • 主要作用:定义初始入侵点的漏洞
admin_vulnerabilities
  • 处理逻辑:添加管理员相关漏洞
  • 主要作用:定义管理员节点的漏洞
dc_vulnerabilities
  • 处理逻辑:添加域控制器相关漏洞
  • 主要作用:定义域控制器节点的漏洞
nodes
  • 类型:字典
  • 内容:定义网络中的节点,包括域控制器和工作站
  • 主要作用:构建小型 AD 网络的节点集合
new_environment
  • 处理逻辑:创建环境对象
  • 主要作用:生成小型 AD 环境

2. chainpattern 目录

2.1 chainpattern.py

这个文件定义了一个链式网络模式,节点按照特定模式连接。

主要函数
prefix
  • 参数
    • x:索引
    • name:名称
  • 处理逻辑:将索引和名称组合成节点 ID
  • 主要作用:生成唯一的节点标识符
rdp_password 和 ssh_password
  • 参数index:链接索引
  • 处理逻辑:生成特定格式的密码
  • 主要作用:为链中的节点生成密码
current 和 next
  • 参数name:节点名称
  • 处理逻辑:生成当前或下一个链接的节点 ID
  • 主要作用:简化链式节点的引用
create_network_chain_link
  • 参数n:链接索引
  • 处理逻辑:创建一对 Linux 和 Windows 节点,形成链的一环
  • 主要作用:生成链式网络的一个环节
create_chain_network
  • 参数size:链的大小
  • 处理逻辑
    • 创建起始节点和终止节点
    • 添加中间链接
  • 主要作用:生成完整的链式网络
new_environment
  • 参数size:链的大小
  • 处理逻辑:创建环境对象
  • 主要作用:生成链式网络环境

3. toyctf 目录

3.1 toy_ctf.py

这个文件定义了一个玩具 CTF(Capture The Flag)环境。

主要变量
nodes
  • 类型:字典
  • 内容:定义网络中的节点,包括网站、GitHub 项目、Azure 存储等
  • 主要作用:构建 CTF 环境的节点集合
global_vulnerability_library
  • 类型:字典
  • 内容:全局漏洞库
  • 主要作用:存储环境中的漏洞
new_environment
  • 处理逻辑:创建环境对象
  • 主要作用:生成 CTF 环境

3.2 tinytoy.py

这个文件定义了一个更小的玩具环境。

主要变量
nodes
  • 类型:字典
  • 内容:定义网络中的节点,包括网站和客户端
  • 主要作用:构建微型环境的节点集合
new_environment
  • 处理逻辑:创建环境对象
  • 主要作用:生成微型环境

4. simple 目录

4.1 simpleenv.py

这个文件提供了一个简单的环境创建示例。

主要函数
main
  • 处理逻辑
    • 创建简单图或随机图
    • 分配随机标签
    • 创建环境对象
    • 序列化和保存环境
  • 主要作用:演示如何创建和保存环境

文件之间的关联

1. 环境创建模式

所有 sample 文件都遵循相似的模式:

  1. 定义节点和漏洞
  2. 创建网络结构
  3. 提供 new_environment() 函数返回环境对象

这种一致性使得不同环境可以通过相同的接口创建和使用。

2. 环境复杂度层次

文件之间形成了复杂度递增的层次:

  • tinytoy.py:最简单的环境,只有几个节点
  • tiny_ad.py:小型 Active Directory 环境
  • toy_ctf.py:更复杂的 CTF 环境
  • generate_ad.py:可配置的随机 AD 环境
  • chainpattern.py:可扩展的链式网络环境

3. 模块化设计

每个文件都是模块化设计的:

  • 漏洞定义函数可以组合使用
  • 节点创建逻辑可以被参数化
  • 环境创建与网络定义分离

类之间的关联

虽然 samples 模块主要使用函数而非类,但我们可以分析其中的数据结构关联:

1. 节点与漏洞关联

  • 节点(NodeInfo)包含漏洞字典
  • 漏洞(VulnerabilityInfo)可能引用其他节点或凭证

2. 网络与环境关联

  • 网络(由节点字典表示)是环境(Environment)的一部分
  • 环境还包含漏洞库和标识符

3. 凭证与服务关联

  • 服务(ListeningService)定义允许的凭证
  • 漏洞可能泄露这些凭证

具体例子:攻击路径分析

tiny_ad.py 为例,我们可以分析一个完整的攻击路径:

  1. 攻击者从 workstation_0 开始(入侵点)
  2. 利用 AuthorizationSpoofAndCrack 漏洞获取 workstation_1 的凭证
  3. 连接到 workstation_1,该节点具有管理员权限
  4. 利用 ProbeAdmin 漏洞确认管理员权限
  5. 利用 ScanForCreds 漏洞获取域控制器凭证
  6. 连接到 domain_controller_1
  7. 利用 DumpNTDS 漏洞获取所有用户凭证

这个攻击路径展示了如何通过一系列漏洞利用和横向移动来完成网络渗透。

另一个例子:链式网络攻击

chainpattern.py 为例:

  1. 攻击者从 start 节点开始
  2. 利用 ScanExplorerRecentFiles 获取第一个 Linux 节点的 SSH 密码
  3. 连接到 Linux 节点
  4. 利用 ScanBashHistory 发现下一个 Windows 节点
  5. 利用 CrackKeepPassX 获取 Windows 节点的 RDP 密码
  6. 连接到 Windows 节点
  7. 利用 ScanExplorerRecentFiles 发现下一个 Linux 节点
  8. 利用 CrackKeepPass 获取下一个 Linux 节点的 SSH 密码
  9. 重复这个过程,直到到达最终节点获取 FLAG

这个例子展示了如何通过链式网络进行渗透,每个节点都提供了到下一个节点的线索和凭证。

总结来说,samples 模块提供了多种网络环境模板,从简单到复杂,用于测试和评估不同的攻击策略和防御机制。这些环境模拟了现实世界中的网络结构和漏洞,为 CyberBattleSim 提供了丰富的测试场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值