trustedsec/CS-Remote-OPs-BOF
GitHub: trustedsec/CS-Remote-OPs-BOF
为 Cobalt Strike 提供远程攻击操作的 Beacon Object File 工具集,涵盖 Active Directory 攻击、凭据窃取、服务管理、进程操作等红队常用能力。
Stars: 1122 | Forks: 171
# 远程操作 BOF
本仓库作为我们之前发布的 [SA](https://github.com/trustedsec/CS-Situational-Awareness-BOF) 仓库的补充。我们最初的立场是不发布修改其他系统的工具,仅提供开箱即用的信息收集工具。
随着时间的推移,我们看到许多其他公开的安全公司发布了他们的攻击性工具,我们现在认为发布一部分攻击性工具是合适的。
这个仓库中没有什么特别的东西,只是 BOF 形式的基本 Microsoft Windows 操作。这些原语可用于各种操作。
## 注入 BOF
我们决定包含我们在进行 EDR 检测测试时使用的注入 BOF。这些 BOF 按原样提供,不提供支持(src/Injection 和 Injection/* 下的所有内容)。
欢迎您使用这些代码,但与此相关的问题将被关闭且不予审查。
## 可用的远程操作命令
|命令|用法|备注|
|-------|-----|-----|
|adcs_request| adcs_request [CA] [OPT:TEMPLATE] [OPT:SUBJECT] [OPT:ALTNAME] [OPT:INSTALL] [OPT:MACHINE] [OPT:ADD_APP_POLICY] [OPT:DNS] | 请求注册证书|
|adcs_request_on_behalf| adcs_request_on_behalf [TEMPLATE] [REQUESTER] [ENROLLMENT_AGENT.pfx] [Download_Name] | 代表其他用户请求注册证书|
|adduser| adduser [USERNAME] [PASSWORD] [SERVER] | 将指定用户添加到机器|
|addusertogroup| addusertogroup [USERNAME] [GROUPNAME] [SERVER] [DOMAIN] | 将指定用户添加到组|
|ask_mfa | ask_mfa [NUMBER] | 显示带有指定号码的虚假 Microsoft Authenticator 批准对话框。 |
|chromeKey| chromeKey | 解密提供的 Base64 编码 Chrome 密钥|
|disableuser| disableuser [USERNAME] [DOMAIN] | 禁用指定用户账户|
|enableuser| enableuser [USERNAME] [DOMAIN] | 启用并解锁指定用户账户|
|get_azure_token| get_azure_token [CLIENT ID] [SCOPE] [BROWSER] [OPT:HINT] [OPT:BROWSER PATH] | 尝试使用保存的登录信息完成针对 Azure 的 OAuth 代码流程授权 |
|get_priv| get_priv [Privledge Name] | 激活指定的令牌权限,主要供非 Cobalt Strike 用户使用|
|ghost_task| ghost_task [HOSTNAME/LOCALHOST] [OPERATION] [TASKANME] [PROGRAM] [ARGUMENT] [USERNAME] [SCHEDULETYPE] [TIME/SECOND] [DAY] | 添加/删除 ghost 任务。 |
|global_unprotect| global_unprotect | 定位并解密 GlobalProtect 配置文件,转换自:[GlobalUnProtect](https://github.com/rotarydrone/GlobalUnProtect/tree/409d64b097e0a928a5545051e40e1566e9c26bd0)|
|lastpass | lastpass [NUMBER OF PIDs] [PID],[PID],[PID],[PID] ... | 在 Chrome、Brave 内存中搜索 LastPass 密码和数据|
|make_token_cert| make_token_cert [.PFX LOCAL PATH] [OPT:PFX PASSWORD]| 使用 .pfx 文件的 altname 模拟用户 |
|office_tokens| office_tokens [PID] | 从任何 Office 进程中收集 Office JWT Tokens|
|procdump| procdump [PID] [FILEOUT] | 将指定进程转储到指定的输出文件|
|ProcessDestroy| ProcessDestroy [PID] [OPT:HANDLEID] | 关闭进程中的句柄|
|ProcessListHandles| ProcessListHandles [PID] | 列出指定进程中所有打开的句柄|
|reg_delete| reg_delete [OPT:HOSTNAME] [HIVE] [REGPATH] [OPT:REGVALUE] | 删除注册表键|
|reg_save| reg_save [HIVE] [REGPATH] [FILEOUT] | 将注册表配置单元保存到磁盘|
|reg_set| reg_set [OPT:HOSTNAME] [HIVE] [KEY] [VALUE] [TYPE] [DATA] | 设置/创建注册表键|
|sc_config| sc_config [SVCNAME] [BINPATH] [ERRORMODE] [STARTMODE] [OPT:HOSTNAME] | 配置现有服务|
|sc_create| sc_create [SVCNAME] [DISPLAYNAME] [BINPATH] [DESCRIPTION] [ERRORMODE] [STARTMODE] [OPT:TYPE] [OPT:HOSTNAME] | 创建新服务|
|sc_delete| sc_delete [SVCNAME] [OPT:HOSTNAME] | 删除现有服务|
|sc_description| sc_description [SVCNAME] [DESCRIPTION] [OPT:HOSTNAME] | 修改现有服务的描述|
|sc_failure| sc_failure [SVCNAME] [RESETPERIOD] [REBOOTMESSAGE] [COMMAND] [NUMACTIONS] [ACTIONS] [OPT:HOSTNAME] | 配置现有服务失败时的操作|
|sc_start| sc_start [SVCNAME] [OPT:HOSTNAME] | 启动现有服务|
|sc_stop| sc_stop [SVCNAME] [OPT:HOSTNAME] | 停止现有服务|
|schtaskscreate| schtaskscreate [OPT:HOSTNAME] [USERNAME] [PASSWORD] [TASKPATH] [USERMODE] [FORCEMODE] | 创建新的计划任务(通过 xml 定义)|
|schtasksdelete| schtasksdelete [OPT:HOSTNAME] [TASKNAME] [TYPE] | 删除现有的计划任务|
|schtasksrun| schtasksrun [OPT:HOSTNAME] [TASKNAME] | 启动计划任务|
|schtasksstop| schtasksstop [OPT:HOSTNAME] [TASKNAME] | 停止正在运行的计划任务|
|setuserpass| setuserpass [USERNAME] [PASSWORD] [DOMAIN] | 设置用户密码|
|shspawnas| shspawnas [DOMAIN] [USERNAME] [PASSWORD] [OPT:SHELLCODEFILE] | 一种将代码注入新生成进程中的错误尝试|
|shutdown| shutdown [HOSTNAME] \"[MESSAGE]\" [TIME] [CLOSEAPPS] [REBOOT] | 关闭或重启本地或远程计算机,带有或不带有警告/消息
|slackKey | slackKey | 尝试从 "%APPDATA%\Slack\Local State" 获取 slack 密钥 |
|slack_cookie| slack_cookie [PID] | 从 Slack 进程中收集 Slack 认证 cookie|
|suspendresume | suspendresume [0\|1] [PID] | 使用 1 挂起进程,使用 0 恢复进程|
|unexpireuser| unexpireuser [USERNAME] [DOMAIN] | 将用户账户设置为永不过期|
## 贡献
本仓库旨在用于单一任务的 Windows 原语。也就是说,即使需要多次调用,创建计划任务也是合适的。
一个尝试预先生成植入物并使用此仓库中的 BOF 进行自动移动的命令会很棒。但不适合直接提交到本仓库。
### 代码规范
* 您的代码在使用默认 Makefile 编译时应无错误
* 任何用于解析函数的新 BOF 定义将放置在 src/common/bofdefs.h 中
* 代码将使用默认 Makefile 编译在一起(单个 entry.c 文件)
* 代码同样应与现有工具链 (mingw) 兼容
* 代码将用 C 语言编写。这是为了标准化,也是我对验证代码的个人信心。
### 作为贡献者您可以期待什么
收到 Pull Request 后,它将接受深入的代码审查和测试。
测试完成后,我们将根据发现进行零轮或多轮变更请求,直到代码中没有问题。届时它将被接受进入仓库,您的 GitHub 用户名将被添加到我们的致谢名单中。如果您不希望被添加或希望使用其他标识,请告诉我。
## 想了解更多?
如果您发现这些 Beacon Object Files 很有帮助,并想按照类似的风格编写自己的 BOF,我们邀请您查看我们的 [Beacon Object File (BOF) 开发](https://learn.trustedsec.com/courses/cd84409a-36af-4507-be2c-ca7ad1e9fd2d) 课程。
该课程简要概述了 Beacon Object Files 的历史,然后深入探讨了各种挑战问题,旨在教您如何在开发自己的 Beacon Object Files 时利用各种 Windows 技术。
标签:Active Directory, ADCS 攻击, Beacon Object Files, BOF, Chrome 解密, Cobalt Strike, CTF学习, EDR 规避, Gophish, MFA 绕过, Plaso, Raspberry Pi, SCP, SSH蜜罐, TrustedSec, Windows 远程操作, 代理, 内存执行, 内网渗透, 协议分析, 客户端加密, 开源安全工具, 攻击诱捕, 无文件攻击, 权限提升, 横向移动, 欺骗防御, 渗透测试插件, 用户克隆, 社工钓鱼, 端点可见性, 编程规范, 证书窃取, 足迹探测, 进程注入, 逆向工程平台