文章总结: HexStrike是一个开源渗透测试工具,其核心创新是IntelligentDecisionEngine(IDE),这是一个将安全专家经验规则化、系统化的专家系统。IDE包含三大知识库(工具效能矩阵、技术栈签名库和攻击模式库)和四大核心算法(目标分析、工具选择、参数优化和攻击链生成),通过将专家经验融入大模型驱动的自动化框架,显著提升渗透测试效率。这种方法解决了大模型知识多经验少的问题,让AI能够继承专家经验,为渗透测试发展提供了重要方向。
综合评分: 89
文章分类: 渗透测试,安全工具,AI安全,WEB安全,红队
HexStrike代理:让大模型继承专家经验,显著提升渗透测试效率
原创
孙志敏
AI与安全
2025年11月11日 07:50
北京
作为备受关注的开源渗透测试工具,HexStrike以测试的高效率著称。
HexStrike 是一个以 MCP 为底座的自动化攻防框架,既能驱动 150+ 安全工具,也内置 12 个面向不同场景的智能代理。表面看,它和“模型直连工具”的常见范式并无二致;但在实际部署中,你会发现一个耐人寻味的细节:Kali 服务端的 hexstrike_server.py 并未直连大模型,却承载着“IntelligentDecisionEngine(智能决策引擎)”这一关键代理。为什么要在模型之外,再放一个决策引擎?
研究一下代码你就会发现,这是它真正的精妙之处,也是它效率提升的根源。
01
智能决策引擎介绍
IntelligentDecisionEngine (简称IDE)是 HexStrike AI 的核心智能组件,它不是一个基于大模型的 AI 系统,而是将安全专家经验规则化、系统化的专家系统。相比让大模型直接决策,它通过固化多年渗透测试经验,提供更准确、更高效、更可预测的工具选择和参数优化。
它主要包括三大知识库和四个核心算法组成。知识库告诉模型它懂什么,算法告诉模型怎么做。这些知识库和算法,均是经验积累,非AI选择。
三大知识库
知识库1:工具效能矩阵(Tool Effectiveness Matrix)
它对每个工具做了打分排名,用于工具选择的优先级使用。大体如下面的样子
{
TargetType.WEB_APPLICATION: {
"nuclei": 0.95, # 对 Web 应用高效(漏洞模板 5000+)
"wpscan": 0.95, # WordPress 专用(检出率高)
"sqlmap": 0.9, # SQL 注入检测(自动化程度高)
"gobuster": 0.9, # 目录爆破(速度快、误报少)
"nikto": 0.85, # 综合扫描(覆盖面广但误报多)
...
},
TargetType.BINARY_FILE: {
"ghidra": 0.95, # 反编译(NSA 级工具)
"angr": 0.88, # 符号执行(学术界标准)
"pwntools": 0.9, # 漏洞利用(CTF 标配)
...
}
}
评分依据就是专家经验,共覆盖6大目标类型的150多个工具,对工具选择进行排序,决定工具使用优先级。按此方法,新手选择工具的准确率接近专家,可避免LLM选择过时工具。
知识库2:技术栈签名库(Technology Signatures)
用于快速识别一些关键应用,根据关键应用,更有助于工具选择和有针对性的策略决策:
{
"headers": { #根据Headers直接快速确定应用类型
"NGINX": ["nginx", "Nginx"],
"PHP": ["PHP", "X-Powered-By: PHP"],
"WORDPRESS": ["WordPress"]
},
"content": {
"WORDPRESS": ["wp-content", "wp-includes"], # HTML 源码特征
"REACT": ["__REACT_DEVTOOLS"], # JS 运行时特征
"DJANGO": ["csrfmiddlewaretoken"] # 表单特征
},
"ports": {
"NODEJS": [3000, 8000, 8080], # 常见端口分布
"TOMCAT": [8080, 8443]
}
}
知识库3:攻击模式库(Attack Patterns)
精华中的精华:15 种预定义的专家级攻击策略
# Bug Bounty Reconnaissance Pattern(赏金猎人的侦察 SOP)
"bug_bounty_reconnaissance": [
{"tool": "amass", "priority": 1}, # 子域名枚举(被动+主动)
{"tool": "subfinder", "priority": 2}, # 快速子域名发现
{"tool": "httpx", "priority": 3}, # 存活检测+技术识别
{"tool": "katana", "priority": 4}, # 深度爬虫(JS 渲染)
{"tool": "gau", "priority": 5}, # 历史 URL(Web Archive)
{"tool": "paramspider", "priority": 7},# 参数提取
{"tool": "arjun", "priority": 8} # 隐藏参数挖掘
]
# CTF Pwn Challenge Pattern(二进制利用标准流程)
"ctf_pwn_challenge": [
{"tool": "pwninit", "priority": 1}, # 环境初始化
{"tool": "checksec", "priority": 2}, # 保护机制检查
{"tool": "ghidra", "priority": 3}, # 静态分析
{"tool": "ropper", "priority": 4}, # ROP gadget 搜索
{"tool": "angr", "priority": 5}, # 符号执行
{"tool": "one-gadget", "priority": 6} # libc 利用
]
专家经验体现:
– 顺序性:每个步骤的 priority 反映了实际渗透测试的执行顺序
– 依赖性:后续步骤依赖前面的输出(如 httpx 检测存活 → katana 爬取存活站点)
– 完整性:覆盖侦察 → 扫描 → 利用的完整攻击链
时间节省:
- 新手从零规划攻击策略:2-4 小时
- 使用攻击模式库:< 1 分钟(自动生成)
四大核心算法
算法1:目标分析(analyze_target)
输入:任意目标(URL / IP / 文件路径)
输出:结构化的目标画像(TargetProfile)
TargetProfile {
target: "https://example.com",
target_type: WEB_APPLICATION, # 自动分类
technologies: [WORDPRESS, PHP, NGINX], # 技术栈识别
attack_surface_score: 7.5, # 攻击面量化(0-10)
risk_level: "high", # 风险分级
confidence_score: 0.85 # 置信度
}
专家经验体现:
# 攻击面评分公式(专家经验量化)
score = base_score[target_type] # Web=7.0, Network=8.0
+ len(technologies) × 0.5 # 技术栈复杂度
+ len(open_ports) × 0.3 # 暴露端口数
+ (1.5 if cms_detected else 0) # CMS 加权(漏洞库丰富)
# 风险分级(专家阈值)
if score >= 8.0: risk = "critical" # 需要立即响应
elif score >= 6.0: risk = "high" # 高优先级
elif score >= 4.0: risk = "medium" # 常规处理
比 LLM 优势:
- LLM 无法量化”攻击面”(需要安全专业知识)
- LLM 的风险评估标准不一致
- IntelligentDecisionEngine 的评分有明确的业务含义
算法2:工具选择(select_optimal_tools)
决策树:
输入:profile, objective
↓
if objective == "quick":
选 Top 3 高效能工具
例:["nuclei", "dalfox", "wpscan"]
↓
elif objective == "comprehensive":
选所有效能 > 0.7 的工具(15-20 个)
↓
elif objective == "stealth":
选被动工具(amass, subfinder, httpx)
↓
技术栈增强:
if WORDPRESS detected:
强制添加 wpscan(专用工具优先)
专家策略:
– 效能阈值 0.7:低于此值的工具误报率高或执行时间长,不值得运行
– 快速模式 Top 3:基于二八定律,3 个最佳工具覆盖 80% 的漏洞
– 隐身模式:只用被动工具,避免触发 IDS/IPS(专家的规避技巧)
算法3:参数优化(optimize_parameters)
示例:Nmap 参数优化
# 基于目标类型的专家配置
if target_type == WEB_APPLICATION:
scan_type = "-sV -sC" # 版本+脚本扫描
ports = "80,443,8080,8443" # Web 常见端口
elif target_type == NETWORK_HOST:
scan_type = "-sS -O" # TCP SYN + OS 检测
additional_args = "--top-ports 1000" # 扫描 Top 1000
# 基于上下文的动态调整
if context.get("stealth"):
additional_args += " -T2" # 慢速扫描(专家规避技巧)
else:
additional_args += " -T4" # 快速扫描
技术栈感知优化(Gobuster 示例):
if PHP in technologies:
extensions = "php,html,txt,bak,inc" # PHP 常见扩展名
elif DOTNET in technologies:
extensions = "asp,aspx,asmx,ashx" # .NET 特有扩展
elif JAVA in technologies:
extensions = "jsp,jspx,do,action" # Java 框架特征
专家经验价值:
– 效率提升:精确扫描减少 70% 的无效请求
– 检出率提升:针对性扫描提高 40% 的文件发现率
– 规避检测:专家级的 stealth 参数(时间窗口、用户代理伪装)
算法4:攻击链生成(create_attack_chain)
输出示例:
AttackChain {
steps: [
Step1: nmap -sV -sC example.com -p 80,443
→ 成功率 64%, 耗时 2min
Step2: httpx -probe -tech-detect
→ 成功率 68%, 耗时 1min
Step3: katana -depth 3 -js-crawl
→ 成功率 70%, 耗时 3min
Step4: nuclei -severity critical,high
→ 成功率 75%, 耗时 3min
],
success_probability: 0.24, # 复合概率 = 64% × 68% × 70% × 75%
estimated_time: 540s # 总时间 = 2 + 1 + 3 + 3 = 9min
}
专家经验:
– 成功率预测:基于历史统计数据(如 nuclei 对 Web 应用成功率 75%)
– 时间估算:基于工具基准测试(nmap 全端口扫描约 10min)
– 依赖管理:Step2 依赖 Step1 的端口信息(隐式建模)
业务价值:
- 向客户报价时提供准确的时间成本
- 管理层可量化评估测试方案的可行性
- 自动过滤成功率 < 10% 的低效攻击链
02
智能决策引擎的调用过程
IDE通过MCP暴露了一些接口,可以由模型直接调用。略显奇怪的是,MCP同时暴露了150多个工具调用,也就是说,同一个扫描,模型可以直接调用nmap来扫,也可以使用analyze_target_intelligence来分析目标并用后序的select_recommended_tools来扫描,当然后边的方法会快一些,效果也会好一些。
至于模型怎么选,取决于模型,也取决于提示词,目前未看到确切的一定可以使用IDE的方法,需要自己逐步实践掌握。
# 1. analyze_target_intelligence()
# 调用路径: MCP -> /api/intelligence/analyze-target -> decision_engine.analyze_target()
@mcp.tool()
def analyze_target_intelligence(target: str) -> Dict[str, Any]:
"""分析目标的AI智能画像"""
result = hexstrike_client.safe_post("api/intelligence/analyze-target", {"target": target})
# 2. select_recommended_tools()
# 调用路径: MCP -> /api/intelligence/select-tools -> decision_engine.select_optimal_tools()
@mcp.tool()
def select_recommended_tools(target: str, objective: str = "comprehensive"):
"""AI智能推荐安全工具"""
result = hexstrike_client.safe_post("api/intelligence/select-tools", {...})
# 3. optimize_tool_parameters()
# 调用路径: MCP -> /api/intelligence/optimize-parameters -> decision_engine.optimize_parameters()
@mcp.tool()
def optimize_tool_parameters(target: str, tool: str, context: dict = {}):
"""AI优化工具参数"""
result = hexstrike_client.safe_post("api/intelligence/optimize-parameters", {...})
# 4. create_intelligent_attack_chain()
# 调用路径: MCP -> /api/intelligence/create-attack-chain -> decision_engine.create_attack_chain()
@mcp.tool()
def create_intelligent_attack_chain(target: str, objective: str = "comprehensive"):
"""AI生成攻击链"""
result = hexstrike_client.safe_post("api/intelligence/create-attack-chain", {...})
# 5. intelligent_smart_scan() -
# 调用路径: MCP -> /api/intelligence/smart-scan -> 综合调用上述所有引擎功能
@mcp.tool()
def intelligent_smart_scan(target: str, objective: str = "comprehensive", max_tools: int = 5):
"""AI全自动智能扫描"""
result = hexstrike_client.safe_post("api/intelligence/smart-scan", {...})
03
总结
从目前我们对大模型的理解,它是个知识比较多,经验比较少的系统。说它知识比较多,是因为它可以读到所有的手册和应用方法,这些都是公开资料。说它经验比较少,是因为经验,尤其是专家经验,被记录和公开的很少,大模型的训练没有这部分内容,而大模型在实践中,并没有实时学习的能力,也无法补充这部分内容。
所以,在很多领域,大模型在具体实践上,是弱于专家的,渗透测试领域尤其如此。HexstrikeAI此次体现的方法,就是把专家经验让大模型用起来,是一个很大的进步。基于此的效率提升也非常明显,这也是渗透测试发展的一个重要方向。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:AI与安全 孙志敏《HexStrike代理:让大模型继承专家经验,显著提升渗透测试效率》