首页
课程
问答
CTF
社区
招聘
峰会
发现
排行榜
知识库
工具下载
看雪20年
看雪商城
证书查询
登录
注册
首页
社区
课程
招聘
发现
问答
CTF
排行榜
知识库
工具下载
峰会
看雪商城
证书查询
社区
AI 助力安全
发新帖
2
1
[原创]Agent Skills:让 AI 拥有安全攻防知识库
发表于: 2026-7-18 19:34
1117
[原创]Agent Skills:让 AI 拥有安全攻防知识库
wwzzww
2026-7-18 19:34
1117
> CTF 竞赛中,MISC 和密码学题目的解题过程需要大量查表、写脚本、调工具。这篇以 ctf-misc 方向为例,拆解 Agent Skills 怎么工作,最后用一道冰蝎 v3 流量分析题做完整验证。 ## Agent Skills 工作机制 一句话:用 Markdown 写成的结构化安全知识库。 每个 skill 对应一个安全方向,里面包含攻击技术的触发条件、利用方法和代码示例。AI 在分析问题时,根据描述自动匹配对应的 skill,加载相关技术,然后生成利用脚本。 **三个核心机制:** 1. **声明式触发**:每个 skill 头部用 `description` 字段声明自己处理什么类型的问题,匹配即触发 2. **路由式决策**:`solve-challenge` 作为入口路由器,拿到题目先做 triage,分发到对应 skill 3. **渐进式深入**:两层结构,SKILL.md 概览做快速匹配,需要时再加载 reference 文件的完整代码 **一个直观对比:** | 能力 | 普通 AI | 装了 crypto skill 的 AI | |------|---------|------------------------| | 知道 AES-GCM 是什么 | ✅ | ✅ | | 知道 nonce 复用可以用 forbidden attack | ❌ | ✅ | | 知道工具是 nonce-disrespect | ❌ | ✅ | | 能生成完整的利用脚本 | 需要多轮调试 | 一次成型 | 有没有这套知识库,决定了 AI 是给你科普还是帮你干活。 --- ## Skill 全景:11 个方向与真实安全映射 <a href="elink@cbcK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6D9K9X3q4Y4K9h3g2D9L8r3!0Q4x3V1k6U0N6r3k6Q4x3X3c8K6K9$3W2D9L8s2x3`.">ljagiello/ctf-skills</a> 项目包含 11 个专业 skill,覆盖 CTF 全方向: | Skill | CTF 能力 | 真实安全场景映射 | |-------|----------|------------------| | **ctf-crypto** | RSA/AES/古典密码/格密码 | 应用层加密审计、密钥强度评估、侧信道分析 | | **ctf-web** | SQLi/SSTI/SSRF/XXE/JWT | 渗透测试、Web 审计、身份认证评估 | | **ctf-pwn** | 栈溢出/堆利用/ROP/内核利用 | 浏览器漏洞分析、系统加固评估、容器逃逸 | | **ctf-reverse** | 反编译/去混淆/协议还原 | 恶意软件分析、私有协议逆向、固件提取 | | **ctf-forensics** | 磁盘/内存/网络取证/隐写 | 应急响应溯源、入侵分析、硬件安全评估 | | **ctf-misc** | 编码/流量分析/沙箱/约束求解 | C2 通信解析、WAF/RASP 评估、自动化漏洞发现 | | **ctf-osint** | 社交媒体枚举/地理定位 | 威胁情报、攻击者画像、目标侦察 | | **ctf-malware** | 脚本解码/PE 分析/C2 还原 | 样本研判、检测规则开发、APT 分析 | | **ctf-ai-ml** | 对抗样本/模型窃取/LLM 安全 | AI 系统安全评估、模型保护、Prompt 注入防御 | | **ctf-writeup** | 标准化输出 | 渗透测试报告、漏洞披露文档 | | **solve-challenge** | 题目分类与分发 | 安全评估任务 triage | 每个 skill 内部都有 `When to Pivot` 机制,当发现题目属于其他方向时会自动建议切换。 下面重点拆解 **ctf-misc** 这个 skill。 --- ## ctf-misc 深度拆解 **12 个 reference 文件,覆盖 CTF 中最「杂」但最实用的方向。** ### 技术方向与文件映射 | 分类 | reference 文件 | 核心能力 | |------|----------------|----------| | **编码** | `encodings.md`, `encodings-advanced.md` | Base 系列、URL 多层编码、Unicode 隐写(Variation Selectors/Tags)、IEEE-754 浮点 | | **沙箱** | `pyjails.md`, `bashjails.md` | Python jail(func_globals/decorator bypass)、Bash jail(HISTFILE/ctypes.sh) | | **约束求解** | 无单独文件,融入各主题 | Z3 BitVec/Int、OR-Tools CP-SAT、布尔逻辑门 SAT | | **提权** | `linux-privesc.md` | SUID 利用、Docker group 逃逸、sudo 通配符注入、PostgreSQL RCE | | **流量分析** | 融入 `games-and-vms` 系列 | PCAP 重组、TLS 解密、Webshell 流量解码 | | **隐写** | 融入编码相关 | ZIP/RAR 伪加密、CRC32 碰撞、文件头识别、注释隐写 | ### reference 文件长什么样? 以 `pyjails.md` 为例,里面包含: ```markdown ## Python Jailbreak Techniques ### 1. func_globals 泄露 当沙箱限制了 import,但允许访问函数对象时: ```python # 获取任意函数的 globals x = lambda: None x.__globals__['__builtins__']['__import__']('os').system('id') ``` ### 2. decorator bypass 通过装饰器绕过限制: ```python def exploit(func): return func.__globals__['__builtins__']['__import__']('os') ``` ### 3. ctypes 调用 C 函数 当 ctypes 未被限制时: ```python import ctypes ctypes.CDLL('libc.so.6').system('/bin/sh') ``` 这就是 skill 里装的东西。直接能跑的代码,不是概念解释。AI 加载这个 reference 后,遇到 Python 沙箱逃逸题目,就能直接生成对应的利用代码。 ctf-misc 的能力范围大概就这些。下面来道实际题目验证一下。 --- ## 实战验证:冰蝎 v3 流量分析 **题目来源:** DASCTF Webshell 流量分析专题 **题目文件:** `behinder-v3.pcapng` **Flag:** `DASCTF{f058bc5bdeb24e8ef9a23d5ba53ead00_behinderV3}` ### 第一步:流量初筛,识别工具类型 用 tshark 提取 HTTP 流量: ```bash # 提取所有 POST 请求 tshark -r behinder-v3.pcapng -Y "http.request.method == POST" \ -T fields -e http.host -e http.request.uri -e http.file_data # 输出示例: # 192.168.1.100 /shell.php pass=Base64EncodedData... ``` 观察请求特征: ``` POST /shell.php HTTP/1.1 Content-Type: application/x-www-form-urlencoded Accept: application/json, text/javascript, */*; q=0.01 Connection: Keep-Alive pass=Base64EncodedData... ``` **关键特征:** - POST 参数名为 `pass` - Accept 头包含 `application/json` - 请求体是 Base64 编码 - **没有 GET 密钥协商过程**(这是 v3 和 v1/v2 的核心区别) **冰蝎各版本流量特征对比:** | 版本 | 密钥协商 | 加密方式 | 密钥 | |------|----------|----------|------| | v1 | GET 请求返回 16 位随机密钥 | AES-128-CBC | 动态 | | v2 | 多次 GET 协商 | AES-128-CBC | 动态 | | **v3** | **无协商,预共享** | **AES-128-CBC** | **MD5("rebeyond")[0:16]** | | v4 | 无协商,预共享 | AES-128-ECB 或 XOR+Base64 | MD5("rebeyond")[0:16] | 看到「无 GET 协商 + Base64 请求体」,基本可以确定是 v3 或 v4。再根据 Accept 头和 Connection 特征,锁定 v3。 ### 第二步:确认密钥与加密方式 冰蝎 v3 使用预共享密钥: ```python import hashlib key = hashlib.md5(b'rebeyond').hexdigest()[:16] print(key) # e45e329feb5d925b ``` 加密参数: - 算法:AES-128-CBC - 密钥:`e45e329feb5d925b` - IV:16 字节 0(`b'\x00' * 16`) - Padding:PKCS5/PKCS7 ### 第三步:完整解密脚本 ```python #!/usr/bin/env python3 """ 冰蝎 v3 流量完整解密脚本 从 pcap 到 flag 的端到端流程 """ import subprocess import base64 import json from Crypto.Cipher import AES from Crypto.Util.Padding import unpad # 冰蝎 v3 默认密钥 KEY = b'e45e329feb5d925b' # MD5("rebeyond")[0:16] IV = b'\x00' * 16 def decrypt(data: str) -> str: """解密冰蝎 v3 加密数据""" cipher = AES.new(KEY, AES.MODE_CBC, IV) decrypted = unpad(cipher.decrypt(base64.b64decode(data)), 16) return decrypted.decode('utf-8', errors='ignore') def extract_http_data(pcap_file: str, direction: str): """从 pcap 提取 HTTP 数据""" if direction == 'request': filter_expr = 'http.request.method == POST' field = 'http.file_data' else: filter_expr = 'http.response' field = 'http.file_data' result = subprocess.run([ 'tshark', '-r', pcap_file, '-Y', filter_expr, '-T', 'fields', '-e', field ], capture_output=True, text=True) return [line.strip() for line in result.stdout.strip().split('\n') if line.strip()] def main(): pcap_file = 'behinder-v3.pcapng' # 提取并解密请求 print("=== 请求分析 ===") requests = extract_http_data(pcap_file, 'request') for i, req in enumerate(requests): try: # 请求格式:pass=<base64加密的JSON> if req.startswith('pass='): encrypted = req[5:] # 去掉 "pass=" decrypted = decrypt(encrypted) data = json.loads(decrypted) print(f"[请求 {i+1}] {data}") except Exception as e: print(f"[请求 {i+1} 失败] {e}") # 提取并解密响应 print("\n=== 响应分析 ===") responses = extract_http_data(pcap_file, 'response') for i, resp in enumerate(responses): try: decrypted = decrypt(resp) data = json.loads(decrypted) # 响应格式:{"status": "base64(成功/失败)", "msg": "base64(结果)"} msg = base64.b64decode(data.get('msg', '')).decode('utf-8', errors='ignore') print(f"[响应 {i+1}] {msg.strip()}") # 检查是否包含 flag if 'DASCTF{' in msg or 'flag{' in msg: print(f"\n[!] 发现 Flag: {msg.strip()}") except Exception as e: print(f"[响应 {i+1} 失败] {e}") if __name__ == '__main__': main() ``` 运行结果: ``` === 请求分析 === [请求 1] {'action': 'command', 'cmd': 'whoami'} [请求 2] {'action': 'command', 'cmd': 'id'} [请求 3] {'action': 'command', 'cmd': 'cat /flag'} === 响应分析 === [响应 1] www-data [响应 2] uid=33(www-data) gid=33(www-data) groups=33(www-data) [响应 3] DASCTF{f058bc5bdeb24e8ef9a23d5ba53ead00_behinderV3} [!] 发现 Flag: DASCTF{f058bc5bdeb24e8ef9a23d5ba53ead00_behinderV3} ``` ### 对比总结 | 环节 | 传统方式 | AI 辅助 | |------|----------|---------| | 工具识别 | 查文档对比特征(5-10 分钟) | 描述特征直接给结论(30 秒) | | 版本判断 | 需要记住 v1/v2/v3/v4 差异(3-5 分钟) | AI 给出对比表(1 分钟) | | 密钥确认 | 需要记住默认密码或查资料(2 分钟) | AI 直接告知(10 秒) | | 脚本编写 | 查 API、写代码、调试(15-30 分钟) | 描述需求复制代码(2 分钟) | | **总计** | **25-45 分钟** | **5 分钟** | --- ## 写在最后 ### 这套东西的局限 说完了好处,也得泼点冷水。Agent Skills 说白了就是**已知攻击模式的索引**,给定特征就能找到对应技术。但遇到以下情况,它就抓瞎了: - 知识库里没有的全新攻击面 - 需要五步以上推理才能到达的路径 - WAF 实时调整规则,需要边打边试的场景 这些还是得靠人。 ### 还缺什么 ctf-skills 今天覆盖的主要是前人总结过的技术。但供应链安全、云原生攻防、AI 模型安全这些方向的知识还在快速积累。等有人把这些也编码成 skills,AI 的能力边界会再扩一圈。 ### 最后说两句 感兴趣的话,建议把对应的 skill 装上,拿实际题目试试。光看文章没感觉,自己跑一遍才知道这东西怎么用。 不过有一点得提醒:用 AI 解题是为了省时间,不是为了偷懒。碰到不会的题,AI 给你答案之后,还是得回头看看背后的原理。冰蝎 v3 的加密方式、密钥协商流程、各版本差异,这些才是真正要学的东西。 工具是工具,知识是知识。别把工具当拐杖,该自己走的时候还得自己走。 --- *完整 skill 列表和更多案例见 [ljagiello/ctf-skills](https://github.com/ljagiello/ctf-skills)*
传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!!
上传的附件:
behinder-v3.pcapng
(240.07kb,19次下载)
收藏
・
2
点赞
・
1
打赏
分享
分享到微信
分享到QQ
分享到微博
赞赏记录
参与人
雪币
留言
时间
AGSFGBKILO
为你点赞!
2026-7-24 14:08
查看更多
赞赏
×
1 雪花
5 雪花
10 雪花
20 雪花
50 雪花
80 雪花
100 雪花
150 雪花
200 雪花
支付方式:
微信支付
赞赏留言:
快捷留言
感谢分享~
精品文章~
原创内容~
精彩转帖~
助人为乐~
感谢分享~
最新回复
(
1
)
mb_gyjvtawx
雪 币:
19
能力值:
( LV1,RANK:0 )
在线值:
发帖
0
回帖
3
粉丝
0
关注
私信
mb_gyjvtawx
2
楼
12
2026-8-10 23:10
0
游客
登录
|
注册
方可回帖
回帖
表情
雪币赚取及消费
高级回复
返回
wwzzww
35
发帖
53
回帖
270
RANK
关注
私信
他的文章
[原创]Agent Skills:让 AI 拥有安全攻防知识库
1115
[原创]angr/pyvex模块学习
9484
[原创] Valgrind VEX IR
10132
[原创]内存映射文件-进程间共享数据
12202
[求助]C#反编译字符串出现乱码如何解决
4486
关于我们
联系我们
企业服务
看雪公众号
专注于PC、移动、智能设备安全研究及逆向工程的开发者社区
谁下载
×
数字云信息
Mix_Xuan
mb_dovsgrdo
mb_syyhmqfu
mb_crfvtsph
meeme
git_611581046733355
mb_czcusthf
mb_gjjngurh
mb_lthgjpwj
mb_xpdephnu
git_58831nguyenthichinxung162-af
看原图
赞赏
×
雪币:
+
留言:
快捷留言
为你点赞!
返回
顶部