这是一个自定义的 .NET 程序集,用于执行一系列态势感知活动。目前包含以下功能集:
我在编写此工具时并不知道 GhostPack 正在开发中;最终我们几乎同时发布了各自的工具。实际上,GhostPack 现在的功能要丰富得多。我已移除 PrivescCheck 功能,因为 SharpUp 涵盖了其所有功能甚至更多。
关键在于,这一切均使用纯 .NET 实现——因此无需 PowerShell。
它通过命令行参数配置和控制,适用于 Beacon 的 execute-assembly 指令。
此模块从主机获取多种信息。请注意,输出内容可能会非常多。它将显示:
命令行为需传递动词 'basic',后接所需的具体检查项。如果第二个参数为 'all',则将执行所有检查。
| 检查项 | 描述 |
|---|---|
| env | 显示所有环境变量。 |
| info | 显示主机 IP 地址及操作系统主/次版本标识符。 |
| mru | 搜索多个“最近使用”列表,当前包括运行框历史记录以及所有版本 Word、Excel、PowerPoint、Access、Publisher 和 Visio 的 Office 文件和路径 MRU。同时显示特殊“最近”文件夹的位置。 |
| favourites | 显示收藏夹文件夹中存储的 URL(即用户的书签)。目前不支持子文件夹;后续需要修复。 |
| mappeddrives | 显示用户会话中的网络映射驱动器,有助于快速查找中央文件共享和主目录。若已被映射,则很可能包含有用数据。 |
| installedapplications | 列出已安装的应用程序,包括以管理员身份安装(本地机器)和当前用户安装的应用程序,两者在注册表中位于不同位置。 |
| onedrive | 显示 OneDrive 相关信息(包括已同步的团队站点/租户)。 |
请注意,若使用 'all',将自动包含一个 'proxycheck http://www.google.com'。详见 proxycheck 部分。
执行所有基本检查:beacon> execute-assembly /tmp/Reconerator.exe 或 beacon> execute-assembly /tmp/Reconerator.exe basic all
仅执行 MRU 枚举:beacon> execute-assembly /tmp/Reconerator.exe basic mru
仅列出映射驱动器:beacon> execute-assembly /tmp/Reconerator.exe basic mappeddrives
相对安全。此操作查询系统注册表,不太可能被监控。
此功能允许执行 LDAP 查询。通过示例解释最为直观。
以下命令将在域 'dc=stufus,dc=lan' 上显示所有用户,域控制器为 W2K8DC:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "objectClass=user" 0
以下命令将在域 'dc=stufus,dc=lan' 上最多显示 5 个用户,域控制器为 W2K8DC:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "objectClass=user" 5
以下命令将在域 'dc=stufus,dc=lan' 上显示域管理员组的所有成员,域控制器为 W2K8DC:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2K8DC/dc=stufus,dc=lan" "(&(objectClass=group)(cn=Domain Admins))" 0
以下命令将在域 'dc=stufus,dc=lan' 上显示域管理员或企业管理员组的所有成员,域控制器为 W2012DC:
beacon> execute-assembly /tmp/Reconerator.exe ldap "LDAP://W2012DC/dc=stufus,dc=lan" "(&(objectClass=group)(|(cn=Enterprise Admins)(cn=Domain Admins)))" 0
此操作会产生到指定域控制器的网络流量。明确说明,它使用 LDAP(而非 RPC 或类似协议)。
使用主机的 DNS 服务器执行 DNS 查询。
beacon> execute-assembly /tmp/Reconerator.exe resolvehost www.google.com
此操作会产生到域控制器的 DNS 查询,但由于合法 DNS 请求数量庞大,不太可能触发警报。
此功能允许与 Windows 搜索(原 Windows 索引服务)交互,可快速搜索感兴趣的文件和文件夹(及其内容)。电子邮件通常已被索引,但网络文件夹未被索引,因此对于远程存储的用户主目录可能不完美。不过,它的速度非常快。
Windows 搜索的接口类似于 SQL;该实现允许你实际上指定 'WHERE' 子句的内容。通过示例解释最易懂,如需了解所有可能的条件,请查阅 MSDN。
查找所有被索引且某处包含单词 'password' 的内容(即搜索文件和电子邮件的内容):
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "CONTAINS('password')"
查找所有被索引且路径或文件名中包含 'stufus' 的内容:
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "System.ItemPathDisplay LIKE '%stufus%'"
查找所有被索引且文件名中包含 'stufus' 或内容包含 'secret' 的内容:
beacon> execute-assembly /tmp/Reconerator.exe indexsearch "System.ItemName LIKE '%stufus%' OR CONTAINS('secret')"
据我所知,没有内容会将其标记为可疑。
返回访问给定 URL 时将使用的代理服务器。用于应对不同 URL 可能使用不同代理或存在各种复杂排除规则的情况。将感兴趣的 URL 作为参数传递。
注意,如果指定了 'basic all'(见上文),会自动包含对 http://www.google.com 的代理检查,假设大多数组织对所有非内部互联网访问使用一个出站代理。
显示访问 www.google.com 时将使用的代理服务器:
beacon> execute-assembly /tmp/Reconerator.exe proxycheck www.google.com
显示访问 https://www.mwrinfosecurity.com 时将使用的代理服务器:
beacon> execute-assembly /tmp/Reconerator.exe proxycheck https://www.mwrinfosecurity.com
这是一个本地且合法的操作;据我所知,没有内容会将其标记为可疑。
此功能将探测多个权限提升向量并报告是否可能利用。目前只有一个检查项。
与上述 BASIC 模块类似,可以在命令行中指定 privesccheck all 以尝试所有检查,或根据需要指定特定检查。
命令行为需传递动词 'privesccheck',后接所需的具体检查项。如果第二个参数为 'all',则将执行所有检查。
| 检查项 | 描述 |
|---|---|
| alwaysinstallelevated | 确定 'AlwaysInstallElevated' 键是否设置为 1。若已设置,则任何 MSI 文件都将以本地管理员身份运行。 |
| 检查项 | 备注 |
|---|---|
| alwaysinstallelevated | 这是本地注册表查询;不太可能被标记为恶意。 |
尝试所有权限提升检查:
beacon> execute-assembly /tmp/Reconerator.exe privesccheck all
仅检查 AlwaysInstallElevated 注册表键是否已设置:
beacon> execute-assembly /tmp/Reconerator.exe privesccheck alwaysinstallelevated
在 Visual Studio 2019 中编译。当前目标为 .NET v4。如需更改,可以在编译选项中进行调整。