CS Situational Awareness BOF
1.0.0
这个仓库有两个目的。首先,它提供了一组在信标对象文件 (BOF) 中实现的基本态势感知命令。这允许您在开始执行可能更具侵入性的命令之前对主机执行一些检查。
其更大的目标是为其他人提供代码示例和工作流程,以开始制作更多 BOF。这是此处发布的博客文章的配套文档:https://www.trustedsec.com/blog/a-developers-introduction-to-beacon-object-files/
如果您想使用与此存储库相同的工作流程,则基本步骤如下:
实际上,这可以压缩到帮助程序脚本中,但并未为此目的采取这些步骤。
命令 | 用法 | 笔记 |
---|---|---|
adcs_枚举 | adcs_枚举 | 使用 Win32 函数枚举 AD 中的 CA 和模板 |
adcs_enum_com | adcs_enum_com | 使用 ICertConfig COM 对象枚举 AD 中的 CA 和模板 |
adcs_enum_com2 | adcs_enum_com2 | 使用 IX509PolicyServerListManager COM 对象枚举 AD 中的 CA 和模板 |
adv_audit_policies | adv_audit_policies | 检索高级安全审核策略 |
ARP | ARP | 列出 ARP 表 |
钙盐 | cacls [文件路径] | 列出用户对指定文件的权限,支持通配符 |
目录 | dir [目录] [/s] | 列出目录中的文件。与 CobaltStrike ls 命令不同,支持通配符(例如“C:WindowsS*”) |
驱动程序签名 | 驱动程序签名 | 枚举已安装的服务 Imagepaths 以根据已知 AV/EDR 供应商检查签名证书 |
枚举过滤器驱动程序 | enum_filter_driver [选择:计算机] | 枚举过滤器驱动程序 |
枚举本地会话 | 枚举本地会话 | 枚举本地和通过 RDP 当前连接的用户会话 |
环境 | 环境 | 列出进程环境变量 |
查找加载模块 | findLoadedModule [模块部分] [opt:procnamepart] | 查找 *modulepart* 加载到哪些进程,可以选择仅搜索 *procnamepart* |
获取密码策略 | get_password_policy [主机名] | 获取目标服务器或域的配置密码策略和锁定 |
ip配置 | ip配置 | 列出 IPv4 地址、主机名和 DNS 服务器 |
LDAP搜索 | ldapsearch [查询] [选择:属性] [选择:结果限制] [选择:DC 主机名或 IP] [选择:可分辨名称] | 执行 LDAP 搜索(注意:如果您想要对象的所有属性 + base64 编码的 ACL,请指定 *,ntsecuritydescriptor 作为属性参数,然后可以使用 BOFHound 解决此问题。可能会破坏分页,尽管在测试期间一切看起来都很好。) |
列表域名 | 列表域名 | 列出 DNS 缓存条目。尝试查询并解决每个问题 |
列表_防火墙_规则 | 列表_防火墙_规则 | 列出 Windows 防火墙规则 |
列表模块 | listmods [选项:pid] | 列出进程模块 (DLL)。如果 PID 为空,则目标当前进程。补充 driversigs 以确定我们的进程是否是由 AV/EDR 注入的 |
列表管道 | 列表管道 | 列出命名管道 |
语言环境 | 语言环境 | 列出系统区域设置语言、区域设置 ID、日期、时间和国家/地区 |
网络组列表 | netGroupList [选项:域] | 列出默认或指定域中的组 |
网络组列表成员 | netGroupListMembers [组名] [选项:域] | 列出默认或指定域中的组成员 |
网络本地组列表 | netLocalGroupList [选项:服务器] | 列出本地或指定计算机中的本地组 |
网络本地组列表成员 | netLocalGroupListMembers [组名] [选项:服务器] | 列出本地或指定计算机中的本地组 |
网络本地组列表成员2 | netLocalGroupListMembers2 [选择:组名] [选择:服务器] | 支持 BOFHound 的netLocalGroupListMembers 修改版本 |
网络登录 | netloggedon [主机名] | 返回登录本地或远程计算机的用户 |
网络登录2 | netloggedon2 [选项:主机名] | 支持 BOFHound 的netloggedon 修改版本 |
网络会话 | netsession [选择:计算机] | 枚举本地或指定计算机上的会话 |
网络会话2 | netsession2 [opt:计算机] [opt:解析方法] [opt:dns 服务器] | 支持BOFHound的netsession 修改版本 |
网络共享 | 网络共享 [主机名] | 列出本地或远程计算机上的共享 |
网络统计 | 网络统计 | TCP 和 UDP IPv4 列出端口 |
网络时间 | 网络时间 [主机名] | 在远程计算机上显示时间 |
网络启动时间 | netuptime [主机名] | 返回有关本地或远程计算机上的启动时间的信息 |
网络用户 | netuser [用户名] [选项:域] | 获取有关特定用户的信息。如果指定了域名,则从域中提取 |
netuse_add | netuse_add [共享名] [opt:用户名] [opt:密码] [opt:/DEVICE:设备名] [opt:/PERSIST] [opt:/REQUIREPRIVACY] | 将新连接绑定到远程计算机 |
netuse_删除 | netuse_delete [设备||共享名] [opt:/PERSIST] [opt:/FORCE] | 删除绑定的设备/共享名] |
网络使用列表 | netuse_list [选择:目标] | 列出所有绑定的共享资源或目标本地资源的信息 |
网视 | 网视 | 列出当前域中可访问的计算机 |
查询 | nslookup [主机名] [opt:dns 服务器] [opt: 记录类型] | 进行 DNS 查询。 DNS服务器是您要查询的服务器(不指定或默认为0) 记录类型类似于 A、AAAA 或 ANY。由于观察到崩溃,某些情况受到限制 |
探测 | 探测[主机][端口] | 检查特定端口是否开放 |
回归 | regsession [选项:主机名] | 通过枚举 HKEY_USERS 返回登录的用户 SID。 BOF猎犬兼容 |
注册查询 | [opt:主机名] [hive] [路径] [opt:要查询的值] | 查询注册表值或枚举单个键 |
reg_query_recursive | [opt:主机名] [配置单元] [路径] | 递归枚举从路径开始的键 |
资源 | 资源 | 列出主硬盘上的内存使用情况和可用磁盘空间 |
路线打印 | 路线打印 | 列出 IPv4 路由 |
sc_枚举 | sc_enum [选择:服务器] | 枚举 qc、查询、qfailure 和 qtriggers 信息的服务 |
质量控制 | sc_qc [服务名称] [选项:服务器] | BOF 中 sc 质量控制的实施 |
sc_q描述 | sc_qdescription [服务名称] [选项:服务器] | BOF 中的 sc qdescription 实现 |
sc_qfailure | sc_qfailure [服务名称] [opt:服务器] | 查询服务的故障情况 |
sc_qtriggerinfo | sc_qtriggerinfo [服务名称] [opt:服务器] | 查询服务的触发条件 |
sc_查询 | sc_query [opt: 服务名称] [opt: 服务器] | BOF中的sc查询实现 |
施塔斯特森姆 | schtasksenum [选项:服务器] | 枚举本地或远程计算机上的计划任务 |
schtasksquery | schtasksquery [选项:服务器] [任务路径] | 查询本地或远程计算机上的给定任务 |
任务列表 | 任务列表 [选择:服务器] | 列出正在运行的进程,包括 PID、PPID 和 ComandLine(使用 wmi) |
正常运行时间 | 正常运行时间 | 列出系统启动时间以及已经运行了多长时间 |
维塞努姆 | vssenum [主机名] [opt:共享名] | 枚举某些 Server 2012+ 服务器上的卷影副本 |
瓦阿米 | 瓦阿米 | 列出 whoami /全部 |
窗口列表 | 窗口列表 [选择:全部] | 列出当前用户会话中可见的窗口 |
wmi_查询 | wmi_query 查询 [选择:服务器] [选择:命名空间] | 运行 wmi 查询并以 CSV 格式显示结果 |
请注意,当 CS 具有内置 reg query(v) 命令时,包含 reg_query 的原因是因为该命令可以针对远程计算机,并且能够递归枚举整个密钥。
大多数这些命令的功能代码取自 Reactos 项目或 MSDN 上托管的代码示例。 driversigs 代码库来自 https://gist.github.com/jthuraisamy/4c4c751df09f83d3620013f5d370d3b9
感谢贡献者下面列出的所有贡献者。你们每个人都为这个存储库贡献了一些有意义的东西,并与我和我的审查流程打交道。我感谢你们每一个人的教导和帮助,使这个 BOF 存储库成为最好的!
该项目中提供了预编译的 BOF,并使用通常从 Brew 安装的最新版本的 Mingw-w64 进行编译。
这些 BOF 是在编写时考虑到对 Windows Vista+ 的支持。如果您需要在那些旧系统上使用主要的 BOF 集,则会创建一个名为 winxp_2003 的新分支。该分支将保持在较少支持的状态。它将发挥作用,但不会随着我们可能添加的每个新推送/功能而更新。