ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

自动化渗透测试——用AI构建自动化渗透测试流程

自动化渗透测试——用AI构建自动化渗透测试流程 用AI构建自动化渗透测试流程小团队的Red Team方案分类AI安全、渗透测试、自动化、红队写在前面渗透测试是检验安全防护效果的重要手段但专业渗透测试服务价格不菲基层单位往往几年才做一次。随着 AI 工具的成熟我尝试搭建了一套半自动化的渗透测试流程在授权范围内定期自测发现了很多平时忽略的安全问题。本文分享方案设计。声明本文所有内容仅适用于已获授权的安全测试。未经授权的渗透测试是违法行为。一、为什么需要自动化渗透测试传统渗透测试的局限成本高一次专业渗透测试通常 3-10 万元频率低因为贵通常一年做一次甚至更久覆盖面有限人工测试时间内能覆盖的范围有限依赖个人能力不同测试人员水平差异大AI辅助的优势成本低API 调用费用可忽略频率高可以每周甚至每天跑覆盖面广AI 可以同时处理大量目标标准化每次测试流程一致结果可对比二、自动化渗透测试框架架构┌────────────────────────────────────────────────────┐ │ 渗透测试编排引擎 │ │ │ │ ┌─────────┐ ┌──────────┐ ┌─────────┐ │ │ │ 信息收集 │ -│ 漏洞发现 │ -│ 漏洞验证 │ │ │ │ (Recon) │ │ (Scan) │ │ (Exploit)│ │ │ └─────────┘ └──────────┘ └─────────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌─────────────────────────────────────────────┐ │ │ │ AI 分析与决策层 │ │ │ │ - 结果研判 │ │ │ │ - 下一步建议 │ │ │ │ - 误报过滤 │ │ │ │ - 报告生成 │ │ │ └─────────────────────────────────────────────┘ │ └────────────────────────────────────────────────────┘三、阶段一智能信息收集3.1 多维度信息收集classReconPhase:信息收集阶段def__init__(self,target_scope:Dict):self.scopetarget_scope# 授权范围self.results{}defrun(self)-Dict:执行信息收集self.results{domains:self._enumerate_domains(),subdomains:self._enumerate_subdomains(),ports:self._port_scan(),services:self._service_detection(),web_apps:self._web_app_fingerprint(),technologies:self._tech_stack_detection(),}# AI 汇总分析returnself._ai_summarize()def_enumerate_subdomains(self)-List[str]:子域名枚举importsubprocess# 使用 subfinder 等工具resultsubprocess.run([subfinder,-d,self.scope[domain],-silent],capture_outputTrue,textTrue)subdomainsresult.stdout.strip().split(\n)# 验证存活的子域名alive[]forsubinsubdomains:ifself._is_alive(sub):alive.append(sub)returnalivedef_port_scan(self)-List[Dict]:端口扫描importsubprocess resultsubprocess.run([nmap,-sS,-sV,--top-ports,1000,-oX,-,self.scope[ip_range]],capture_outputTrue,textTrue)returnparse_nmap_xml(result.stdout)3.2 AI辅助信息汇总def_ai_summarize(self)-Dict:AI汇总分析信息收集结果promptf 你是一名渗透测试工程师正在分析信息收集阶段的结果。 目标范围{json.dumps(self.scope,ensure_asciiFalse)}收集到的信息{json.dumps(self.results,ensure_asciiFalse,indent2)}请分析 1. **攻击面评估** - 暴露的服务清单 - 每个服务的风险等级 - 可能存在的攻击路径 2. **高价值目标** - 哪些系统最可能存在漏洞 - 哪些系统一旦被攻破影响最大 - 建议优先测试的目标 3. **下一步行动建议** - 对每个高价值目标建议用什么方法测试 - 需要补充收集的信息 - 可能的安全控制绕过点 4. **风险评估** - 整体攻击面评分1-10 - 最紧急的 3 个安全问题 returncall_llm(prompt)四、阶段二漏洞发现4.1 自动化漏洞扫描classVulnerabilityScan:漏洞扫描阶段def__init__(self,recon_results:Dict):self.targetsrecon_resultsdefrun(self)-List[Dict]:vulnerabilities[]fortargetinself.targets[web_apps]:# Web 应用扫描vulnsself._web_scan(target)vulnerabilities.extend(vulns)forserviceinself.targets[services]:# 服务漏洞扫描vulnsself._service_scan(service)vulnerabilities.extend(vulns)# AI 去重和误报过滤returnself._ai_filter_false_positives(vulnerabilities)def_web_scan(self,target:Dict)-List[Dict]:Web应用漏洞扫描importsubprocess# 使用 nuclei 进行模板扫描resultsubprocess.run([nuclei,-u,target[url],-t,cves/,-t,vulnerabilities/,-json,-silent],capture_outputTrue,textTrue)vulns[]forlineinresult.stdout.strip().split(\n):ifline:vulns.append(parse_nuclei_json(line))returnvulnsdef_ai_filter_false_positives(self,vulns:List[Dict])-List[Dict]:AI过滤误报promptf 你是一名渗透测试专家。以下是自动化扫描发现的安全漏洞请判断哪些是真实漏洞哪些可能是误报。 发现的漏洞{json.dumps(vulns,ensure_asciiFalse,indent2)}请对每个漏洞评估 1. 真实性真实漏洞/可能误报/确定误报 2. 理由为什么这么判断 3. 验证建议如何确认这个漏洞是真实的 4. 优先级高/中/低 只保留真实漏洞和可能误报的条目去掉确定误报的。 resultcall_llm(prompt)returnresult五、阶段三漏洞验证PoC生成defai_generate_poc(vulnerability:Dict,target:Dict)-Dict: AI辅助生成漏洞验证方案 promptf 你是一名渗透测试工程师。需要验证以下漏洞是否真实存在。 漏洞信息{json.dumps(vulnerability,ensure_asciiFalse,indent2)}目标信息{json.dumps(target,ensure_asciiFalse,indent2)}请生成一个安全的验证方案 1. **验证方法** - 具体的验证步骤 - 需要使用的工具 - 预期的验证结果 2. **安全验证命令** - 只使用无害的验证方式如时间盲注的sleep、DNSLog等 - 不要执行破坏性操作 - 不要尝试获取敏感数据 3. **验证脚本** - 生成一个Python验证脚本 - 脚本应包含超时和错误处理 - 输出清晰的验证结果 4. **风险评估** - 验证过程对目标的影响 - 需要注意的事项 returncall_llm(prompt)实际验证脚本示例defverify_sqli(target_url:str,param:str)-Dict:验证SQL注入漏洞无害方式importrequestsimporttime results{vulnerable:False,evidence:[]}# 时间盲注验证使用 SLEEP 函数# 正常请求starttime.time()requests.get(f{target_url}?{param}1)normal_timetime.time()-start# 注入 SLEEPstarttime.time()requests.get(f{target_url}?{param}1 AND SLEEP(5)--)inject_timetime.time()-startifinject_time-normal_time4:results[vulnerable]Trueresults[evidence].append(f时间差异正常{normal_time:.2f}s vs 注入{inject_time:.2f}s)returnresults六、阶段四AI生成测试报告defgenerate_pentest_report(scope:Dict,recon:Dict,vulnerabilities:List[Dict],verified:List[Dict],)-str:生成渗透测试报告promptf 你是一名渗透测试报告撰写专家。请根据以下测试结果生成一份正式的渗透测试报告。 测试范围 {json.dumps(scope,ensure_asciiFalse,indent2)} 信息收集结果 {json.dumps(recon,ensure_asciiFalse,indent2)} 发现的漏洞 {json.dumps(vulnerabilities,ensure_asciiFalse,indent2)} 已验证的漏洞 {json.dumps(verified,ensure_asciiFalse,indent2)}报告结构 1. **执行摘要** - 测试时间、范围、方法 - 总体安全评估 - 关键发现管理层关注的内容 2. **测试详情** - 信息收集结果 - 发现的漏洞清单表格形式 - 每个漏洞的详细描述 3. **漏洞详情**对每个已验证漏洞 - 漏洞名称和编号 - 风险等级 - 影响描述 - 复现步骤 - 修复建议 - 参考链接 4. **安全建议** - 短期修复1周内 - 中期改进1个月内 - 长期规划3个月内 5. **附录** - 工具清单 - 测试时间线 returncall_llm(prompt)七、安全与合规必须遵守的红线书面授权所有测试必须有书面授权明确范围和时间窗口不得破坏不执行任何可能导致服务中断的操作不得窃取数据不下载、不查看真实业务数据及时清理测试结束后清理所有测试痕迹结果保密测试报告仅限安全团队和管理层查看AI 使用的限制# AI 安全策略禁止生成的内容PROHIBITED_ACTIONS[生成恶意软件,生成持久化后门,执行数据窃取,执行拒绝服务攻击,绕过法律授权范围,攻击非授权目标,]defsafety_check(ai_output:str)-bool:检查AI输出是否违反安全策略forprohibitedinPROHIBITED_ACTIONS:ifprohibitedinai_output.lower():returnFalsereturnTrue八、实际效果我在单位内网用这套流程做了3轮自测轮次发现漏洞数已验证修复完成新发现类型第1轮231515弱口令、信息泄露、过时组件第2轮1288配置不当、缺失安全头第3轮533逻辑漏洞、权限提升关键收获第1轮发现的15个真实漏洞中有6个是传统漏扫工具没报但 AI 分析判断存在的。包括一个暴露了内部网络拓扑的调试接口和一个允许未授权访问的管理页面。九、结语自动化渗透测试不是要替代专业渗透测试团队而是作为日常安全自查的补充。它的价值在于高频、低成本、广覆盖——能在专业测试的间隔期内持续发现问题。对于基层单位一套自动化渗透测试流程的成本几乎为零开源工具 少量 API 费用但发现的问题可能比几年一次的专业测试更有价值因为它能及时发现新暴露的风险。
返回列表