【免费下载链接】Decepticon
Autonomous Hacking Agent for Red Team
本指南以 Decepticon 仓库内技能库 packages/decepticon/decepticon/skills/standard/exploit/crypto/SKILL.md 为核心骨架,系统讲解红队与渗透测试场景下"未知密文/编码 → 识别 → 解码 → 破解 → 汇入知识图谱"的完整作业流程。你将掌握 Ciphey/Ares 自动破解、hashid 哈希类型识别、CyberChef 配方链、hashcat/john 模式速查、多层编码展开工作流,以及如何将解码结果以
kg_add_node的形式沉淀进 Decepticon 的 engagement 知识图谱,供后续轮次的 Agent 复用。
0. 技能定位:从 frontmatter 看适用场景
该技能文件的 YAML frontmatter 定义了它在 Decepticon 技能库中的身份与触发条件:
name: crypto-decode description: Cipher detection + automated decryption via Ciphey, Cyberchef recipes, hashcat hash-ID, format conversion, common encoding chains. metadata: when_to_use: "cipher decrypt decode base64 hex caesar rot vigenere xor unknown encoding identify ciphey hashid" mitre_attack: T1140 subdomain: cryptanalysiswhen_to_use是技能调度器的关键词触发器:只要任务上下文中出现cipher、decrypt、decode、base64、hex、caesar、rot、vigenere、xor、unknown encoding、identify、ciphey、hashid等词汇,该技能就会被召回。这与 Decepticon 的技能注册机制一致——skills_registry.py 将每个SKILL.md解析为SkillRecord(id、slug、name、description、source五元组),其中slug取自尾目录或文件名(本技能即crypto),description直接取自 frontmatter。mitre_attack: T1140对应 MITRE ATT&CK 的Deobfuscate/Decode Files or Information,即"去混淆/解码文件或信息"技术。按照 docs/skill-schema.md 的规范,metadata.subdomain必须存在于subdomains.yaml,且cryptanalysis会被别名映射到规范名credential-access——从侧面说明解码成果通常服务于凭据与敏感信息获取链路。- 适用对象:CTF flag、数据库泄漏字段、HTTP 流量中捕获的 token、被编码的 payload、移动端逆向出的字符串、固件中的硬编码密钥等一切"看起来像乱码但可能藏着明文"的东西。
核心原则一句话:先识别密文类别,再选择对应工具,绝不在识别前盲目爆破。
1. 第一步永远是识别(Identify FIRST)
拿到未知密文后,按三类场景分别处置。
1.1 未知文本 → 自动化破解器
对于完全不知道编码/加密方式的文本,直接交给 A* 搜索式自动解码器:
# Ciphey — 原版(Python 实现,维护节奏放缓) ciphey -t "$CIPHERTEXT" # Ares — Rust 重写版(更快,当前主力) ares -t "$CIPHERTEXT"两者的工作机理相同:用A* 搜索算法在 16+ 个解码器之间进行状态空间搜索,解码器覆盖 base64、base85、hex、Caesar、ROT-N、Atbash、Vigenere、XOR(已知明文)、URL 编码、binary、morse、brainfuck、esolang、leetspeak 等;同时内置BERT 明文检测器判断"什么时候该停"——即解码结果是否已经是自然语言明文,避免无限套娃解码。典型用法是先用ares(快)拿结果,失败再回退ciphey,这与下文第 6 节 Decepticon 集成的封装骨架完全对应。
1.2 哈希 → 先识别类型再选择破解模式
哈希与可逆编码不同,目标是"识别哈希族 → 匹配 hashcat 模式 → 离线爆破":
hashid -m '$2a$12$....' # bcrypt 12 rounds hashid -m '5f4dcc3b5aa765d61d8327deb882cf99' # MD5 hash-identifierhashid -m会直接输出"该哈希在 hashcat 中的 mode 编号",省去手工对照;hash-identifier则是另一个启发式识别工具,适合脚本化管道。识别结果直接映射到本文第 4 节的 hashcat 模式速查表。
1.3 特定格式的快速校验
手头有明确格式线索时,用三行命令快速验证:
# JWT:三段式,base64url,解码前两段看 header/payload echo $TOKEN | cut -d. -f1-2 | tr '_-' '/+' | base64 -d 2>/dev/null # Hex → 字节 echo "$HEX" | xxd -r -p # Base64 → 字节(兼容 URL-safe 变体) echo "$B64" | tr '_-' '/+' | base64 -d 2>/dev/null # 多层编码(逐层解开) echo "$BLOB" | base64 -d | base64 -d | xxd -r -p注意 JWT 与 Hex/Base64 属于"可逆编码"层,与真正的加密(AES 等)是不同层次的问题——这也是本文档将 JWT 单列为交叉引用的原因(见第 8 节)。
2. 古典密码特征速查表
识别阶段最重要的依据是特征指纹。下表来自技能文档,是肉眼/正则快速归类密文的核心参考:
| Cipher | Signature(特征签名) |
|---|---|
| Base64 | [A-Za-z0-9+/=]+,长度是 4 的倍数 |
| Base32 | [A-Z2-7=]+ |
| Hex | [0-9a-fA-F]+,偶数长度 |
| Caesar/ROT | 仅 A-Z + 空格,适合频率分析攻击 |
| Vigenere | 仅 A-Z,存在按密钥长度周期重复的 bigram(IC 值偏离均匀分布) |
| Substitution | 仅 A-Z,IC(重合指数)≈ 0.066(英文文本特征) |
| Vernam/OTP | 字节呈随机分布,无任何统计信号 |
| XOR fixed-key | 字节与可打印模式 XOR 后呈规律(文件头泄漏是突破口) |
| Hill | 分组小、基于矩阵运算 |
实际作业中的快速判别经验:
- 看到
/、+、=结尾且长度为 4 的倍数 → 先按 Base64 解; - 全是大写字母+数字且是 2-7 字母表 → Base32;
- 纯 0-9a-f 偶数长度 → Hex;
- 纯字母且保留空格 → 直接上频率攻击(Caesar/ROT/替换);
- 解出一层后仍是乱码 → 大概率是多层编码(见第 5 节展开工作流)。
3. CyberChef 配方库:把 GUI 工作流变成可复用的 recipe
CyberChef(GCHQ 开源的"网络厨具")是解码解码的 GUI 主力,但其核心价值在于配方(recipe)可以导出为 JSON,并以编程方式链式执行。常用配方链:
# 常见链 "From Base64 / Magic / To Hex" "From Hex / XOR (Brute) / Magic" "AES Decrypt(KEY) / From Hex / Strings"其中Magic操作是 CyberChef 的自动嗅探模块,等效于 Ciphey 的"识别并尝试";XOR (Brute)提供暴力密钥搜索;Strings用于在解密后的二进制里抽取可打印字符串。CLI 场景可使用社区移植的cyberchef-cli在终端直接执行 recipe JSON。
实战建议:把高频配方固化成 JSON 文件存进工作区,作为团队的可复用资产;对单条密文先用Magic自动尝试,失败再手写配方逐步展开。
4. 哈希破解快速参考:hashcat 模式速查表
这是全文档最常被回查的表格。hashcat 通过-m指定哈希类型,识别环节(hashid -m)的输出直接落到这里:
| Mode | Hash type |
|---|---|
| 0 | MD5 |
| 100 | SHA-1 |
| 1400 | SHA-256 |
| 1700 | SHA-512 |
| 1000 | NTLM |
| 13100 | Kerberos TGS-REP (etype 23) |
| 19700 | Kerberos TGS-REP (etype 18) |
| 18200 | Kerberos AS-REP |
| 16500 | JWT (HS256) |
| 3200 | bcrypt |
| 7400 | sha256crypt$5$ |
| 1800 | sha512crypt$6$ |
| 22000 | WPA-EAPOL+PMKID |
| 7100 | macOS v10.8+ (PBKDF2-SHA512) |
| 8200 | 1Password Cloud Keychain |
配套执行命令(规则文件加速低强度口令命中):
hashcat -m <mode> hashes.txt rockyou.txt -r best64.rule john --format=<format> hashes.txt --wordlist=rockyou.txt两点值得展开:
- **模式 16500(JWT HS256)**与 Decepticon 的 web/jwt 技能 直接联动——弱 HMAC 密钥的 JWT 可以用
hashcat -m 16500 jwt.txt rockyou.txt离线爆破,服务账号常见弱密钥为dev/secret/changeme/公司名等模式。 - **Kerberos 三件套(13100/19700/18200)**对应 AD 域的 Kerberoasting / AS-REP Roasting / DCSync 产物,即 ad/dcsync 技能 中
secretsdump.py导出的 NT hash 后续破解环节。跨技能引用关系见第 8 节。
5. Token / Blob 展开工作流:未知令牌的完整处置顺序
对 HTTP 流量中捕获的"神秘 token",不要上来就猜,按固定流水线执行:
1. ciphey/ares → 揭示最外层编码 2. 若结果是结构化数据(JSON / proto3 / msgpack)→ 解析 3. 若仍是编码 → 重复步骤 1(逐层展开) 4. 查找 HMAC / 签名后缀 → 识别对称密钥候选 5. 若疑似对称加密 → 用常见密钥尝试 AES-CBC/GCM (应用名、"secret"、其他渠道暴露的环境变量等)三个工程要点:
- 循环有界:步骤 3 必须设置最大展开层数(如 5 层),防止对"纯随机字节"无限套娃——因为 OTP/真随机数据没有任何统计信号,A* 搜索会在 BERT 检测器处自然停止;
- 签名优先:步骤 4 的价值在于区分"编码"与"MAC/签名"。
MD5(secret || message)这类弱 MAC 构造在 web/crypto 技能 中有 hash-length extension 的完整解法(hashpump工具); - 密钥来源枚举:步骤 5 的常见密钥候选来自工程上下文——应用名、
secret、.env中暴露的变量,与 web/crypto 技能"Step 0 — Key Discovery"中grep -rn 'AES_KEY\|SECRET_KEY'的源码级密钥发现流程互为补充。
6. Decepticon 集成:封装为工具并沉淀进知识图谱
技能文档给出了将解码能力包装成 Decepticon 工具的骨架:
# decepticon/tools/crypto/decode.py — skeleton def crypto_decode(ciphertext: str, hint: str = None, timeout: int = 30) -> dict: """Try ares first (fast), fallback to ciphey, return best decode.""" import subprocess cmd = ["ares", "-t", ciphertext] if hint: cmd += ["--language", hint] r = subprocess.run(cmd, timeout=timeout, capture_output=True, text=True) return { "tool": "ares", "output": r.stdout, "confidence": _parse_ares_confidence(r.stdout), }设计要点(源码佐证):
- 先快后慢的降级策略:
cmd = ["ares", "-t", ...]默认走 Rust 版 Ares(快),失败再回退 Ciphey(慢但解码器更全)——这与when_to_use中ciphey hashid的触发词保持一致; hint参数:--language <hint>传入语言提示,帮助 A* 搜索与 BERT 明文检测器更快收敛;timeout=30:subprocess 硬超时,避免解码器卡死在无信号输入上。
6.1 分类成功 → 提升到知识图谱
解码成功后,将结果作为artifact节点写入 engagement 知识图谱:
kg_add_node(kind="artifact", label=f"decoded:{hash}", props={"plaintext": result, "encoding_chain": chain})kg_add_node是 Decepticon 内置的图工具,实现在 tools/research/tools.py:
kind受NodeKind枚举校验:artifact、host、vulnerability、credential、crown_jewel等均为合法 kind,传入未知 kind 会返回错误并附合法列表;- upsert 语义 + 确定性
key:graph.upsert_node(Node.make(...))按 props 中的确定性key(如decoded:<sha256>)去重,同一密文重复解码不会产生重复节点; - 跨轮次持久化:图存储在 engagement 内持久化,本轮的
decoded:...节点可被下一轮 fresh-context 的 Agent 通过kg_query/kg_neighbors直接查询,这是"解码成果资产化"的关键——因此技能文档特意要求把encoding_chain(编码链)写入 props,方便后续复用整条解码链路; - 配套
kg_add_edge:可与vulnerability、credential、crown_jewel等节点连线(如extracts、compromises),把"解码出 API key"提升为"凭证获取"的图路径——这与 ad/dcsync 技能 中kg_add_node(kind="credential", ...)+kg_add_edge(..., kind="extracts")的提权模式完全一致。
6.2 技能如何被 Agent 加载
Decepticon 的 Agent 通过load_skill工具读取技能正文(见 tools/skills.py):技能目录在打包后经importlib.resources注册为虚拟/skills/路径树,skills_registry.py提供按完整路径、尾 slug(crypto→/skills/standard/exploit/crypto/SKILL.md)或模糊匹配三种解析方式,且对..穿越、反斜杠、非注册路径做硬性拒绝。也就是说,Agent 只需说"加载 crypto 技能"即可命中本 playbook,而无需触碰底层文件系统。
7. 严重性分级:解码之后怎么定性
解码本身不是漏洞,严重性取决于解码出的内容:
| Decoded content | Severity |
|---|---|
| Plaintext password | Critical(取决于用户角色) |
| API key / private key | Critical |
| Internal hostname / IP | Medium |
| Session token | High-Critical |
| Encryption key | Critical |
定性后应联动知识图谱写入:kg_add_node(kind="credential", ...)、kg_add_node(kind="vulnerability", ..., props={"severity": "critical"}),并生成证据链(原始 blob、解码链、明文样本、严重性结论),供报告环节引用。
8. 交叉引用:同一密码学战场上的三个技能
本技能(crypto-decode,subdomaincryptanalysis,MITRE T1140)专注未知密文的识别与解码,与仓库内另外两个密码学相关技能互补而非重复:
| 技能文件 | 主题 | 与本技能的分工 |
|---|---|---|
| exploit/web/crypto/SKILL.md | Web Crypto Exploitation:padding oracle(Vaudenay)、AES-CBC 位翻转/IV 操作、AES-ECB 模式攻击、HMAC bypass、hash-length extension、JWT alg confusion | 本技能负责"把 blob 解码出来";web/crypto 负责"攻击应用对密码学原语的使用错误",其 Step 0 的源码密钥发现与本技能第 5 步"常见密钥尝试"直接衔接 |
| exploit/web/jwt/SKILL.md | JWT 攻击:alg confusion、kid 注入、JWKS spoofing、弱 HMAC 密钥破解、签名剥离 | 不同层次:本技能只做 JWT 的 base64url 解码与格式识别(cut -d. -f1-2 \| tr '_-' '/+' \| base64 -d);JWT 的算法级攻击看 jwt 技能 |
| ad/dcsync/SKILL.md 及 ad/SKILL.md | AD 哈希:Kerberoasting、AS-REP Roasting、DCSync | 本技能提供 hashcat 模式速查(13100/19700/18200/3200 等)与破解命令;AD 技能负责从域控提取哈希的流程,两边在"破解 NT hash / Kerberos 票据"处汇合 |
9. 已知典型场景(Known Exemplars)
技能文档沉淀了四类高频实战场景,均可用本 playbook 覆盖:
- CTF flag:约 90% 的 flag 只是 base64、hex 或 rot-N 的单一/多层包装,
ares -t秒解; - 移动端逆向:API key 常以 "base64 再 XOR" 的形式硬编码在二进制字符串中,先用本技能解开外层编码,再用 reversing/strings 工具 辅助定位;
- IoT 固件:AES-CBC + 硬编码密钥常见,配合 ghidra 反编译找到密钥后,用本技能第 5 步的对称解密流程(或 web/crypto 技能的离线解密脚本)恢复明文;
- 钓鱼邮件混淆:嵌套编码链(base64→quoted-printable→rot)是邮件混淆的常见套路,第 5 节的"逐层展开工作流"正是为此设计。
结语
Crypto / Decode Playbook 的价值在于把"识别 → 解码 → 破解 → 资产化"四个环节固化为可复用的方法论:识别层用特征签名速查表与hashid兜底,解码层用ares/ciphey与 CyberChef recipe 链,破解层用 hashcat 模式表,最终通过kg_add_node把每个decoded:<hash>节点写进 engagement 知识图谱,让解码成果跨轮次复用。实战中请始终遵守两条纪律:先识别再动手(避免盲爆破),有界循环(给所有自动化解码器与网络攻击脚本设置超时与请求预算,相关纪律可进一步参考 web/crypto 技能的 Anti-Patterns 章节)。
【免费下载链接】Decepticon
Autonomous Hacking Agent for Red Team
相关推荐
Ciphey(Rust 版)自动化解密引擎实战指南:无需密钥识别编码、破解哈希与明文检测
Ciphey(Rust 版)自动化解密引擎实战指南:无需密钥识别编码、破解哈希与明文检测 导读 :Ciphey(Rust 版)是一款"无需知道密钥或密码、自动完
CLI网络安全crypto-js客户端加密:前端敏感数据保护
crypto js客户端加密:前端敏感数据保护 在当今Web应用中,用户密码、支付信息等敏感数据在前端传输和存储时面临诸多安全风险。据OWASP安全报告显示,约
密码学告别加密报错:crypto-js调试实战指南
告别加密报错:crypto js调试实战指南 crypto js是一个流行的JavaScript加密标准库,提供了AES、MD5、SHA等多种加密算法实现。尽管
密码学
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考