想象一下:你刚搬进一栋大宅子,听邻居说这一带最近有小偷出没。为了让全家睡得安稳,你决定请一位“业内顶尖的友好窃贼”来检验自家的大门、窗户和保险柜。这位窃贼和普通小偷最大的区别在于——他是来帮你找漏洞的,而不是来偷东西的。他会先和你签合同,约定哪些房间能碰、什么时候来;然后像散步的街坊一样在房子周围踩点;接着研究这栋房子的布局,琢磨最可能的突破口;再去逐一检查每一扇窗、每一把锁;真的试着撬开其中一两扇;进屋后还不忘探查一圈并擦掉指纹;最后交给你一份“哪里不安全、怎么修”的详细报告。 这套“友好窃贼”的标准作业流程,正是网络安全领域大名鼎鼎的 PTES——渗透测试执行标准(Penetration Testing Execution Standard)。它把一次专业的安全评估拆成七个阶段:前期交互、情报收集、威胁建模、漏洞分析、漏洞利用、后渗透和报告编写。渗透测试,就是模拟攻击者真实入侵系统,在授权范围内发现并利用漏洞,最终帮助组织评估安全风险、修复薄弱点的过程。学完这篇文章,你就能读懂专业渗透测试报告,也看清了黑客攻击路线的每一步在做什么。

岗位关联

理解渗透测试方法论,能让你在构建 AI 产品时主动评估数据与模型服务的安全边界,在安全测试、应急响应与合规审计中建立专业可信的全局视角。

目录
  1. 可视化演示
  2. 一、前期交互——先签合同,再谈“偷东西”
  3. 二、情报收集——像个普通街坊一样踩点
  4. 三、威胁建模——在动手前画一张“小偷路线图”
  5. 四、漏洞分析——挨个摇晃每扇门窗
  6. 五、漏洞利用——动手撬开那把锁
  7. 六、后渗透——进屋之后别急着走
  8. 七、报告编写——把发现变成一张“体检单”
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

一、前期交互——先签合同,再谈“偷东西”

友好窃贼绝不会二话不说就翻墙。真正专业的做法,是先约你在书房见面,把“什么时候来、能碰哪些房间、哪些抽屉绝对不能动、能不能搞坏门锁”一条条写进合同。你担心他偷走传家宝,他担心你事后报警——这份合同,就是双方共同的护身符。

在渗透测试中,这个“签合同”的环节叫前期交互(Pre-engagement),是整个流程的第一阶段,决定测试的合法性、边界与成败基调。没有授权的渗透测试就是犯罪,而有了授权,同样的行为就变成了合法的安全评估。

前期交互的交付物是测试授权书与规则约定(Rules of Engagement),核心要素包括:测试范围(哪些 IP、域名、系统允许被测试)、时间窗口(允许在什么时间测试、能否进行可能中断业务的攻击)、应急联系人(发现问题时第一时间通知谁)、禁止事项(不得访问的数据类型、不得触碰的第三方系统)以及退出条件。这份文件会一直伴随后续所有阶段,越界一个命令,都可能让整个项目失去法律保护。

就像友好窃贼在合同上签字那一刻,才真正戴上“安全顾问”的徽章——前期交互的要义,就是以白纸黑字划清边界,让后面的每一步都走得心安理得。

Sscope=Tassets∩Aauth\displaystyle S_{scope} = T_{assets} \cap A_{auth}
通俗说明:你能合法测试的目标,等于“你想测的东西”和“合同允许你测的东西”两者的交集。超出交集的部分,一个数据包都不能发。
  1. 目标资产集合 $T_{assets}$接案方整理出的待评估资产清单,比如某公司对外提供服务的 Web 服务器、办公区终端等。
    TassetsT_{assets}
  2. 授权边界集合 $A_{auth}$合同里明确允许触碰的范围,如“仅测试 10.0.0.0/24 网段,禁止访问财务系统”。
    AauthA_{auth}
  3. 交集运算 $\cap$取两者的共同部分,剩下的才属于可实际动手测试的合法范围。
    Sscope=Tassets∩AauthS_{scope} = T_{assets} \cap A_{auth}

二、情报收集——像个普通街坊一样踩点

合同签好后的第二周,你发现小区里多了个穿运动服、牵条狗的人。他对房子毫无恶意,只是路过时瞟一眼围栏高度,在垃圾箱旁边驻足片刻,和门口保安闲聊两句,还顺手在手机地图上标注了这栋楼的物业信息。这就是友好窃贼的踩点:在动手之前,把目标摸得一清二楚。

渗透测试的第二个阶段——情报收集(Intelligence Gathering),就是用同样的思路尽可能多地获取目标系统的信息。收集到的信息越充分,后续的攻击面刻画和漏洞分析就越精准。情报收集分为被动与主动两派。

被动收集(Passive Recon)不直接触碰目标系统,通过搜索引擎、Whois 域名注册信息、证书透明度日志、社交平台等开源渠道获取情报,也就是常说的 OSINT 开源情报。主动收集(Active Recon)则直接与目标交互,真正“敲一敲门”,常见手段包括:Ping 扫描判断主机是否存活、端口扫描(如用 Nmap 扫描 1-1024 端口)识别开放服务、服务指纹识别判断操作系统与中间件版本。

牵狗散步的人从不多看目标一眼,却已把围墙、保安换岗时间和快递单上的公司名都记进小本本。情报收集的魅力正是这种“无声胜有声”的信息积累——越是安静,掌握的东西越多。

Nprobe=Hhosts×Pports\displaystyle N_{probe} = H_{hosts} \times P_{ports}
通俗说明:这次踩点一共要发出多少次“试探性敲门”,取决于有多少台在线的主机、每台又敲多少个端口。探测越猛,暴露越早。
  1. 存活主机数 $H_{hosts}$通过 ping 或 SYN 包探明“有多少台设备真的在线”,离线主机不值得继续投入探测。
    HhostsH_{hosts}
  2. 扫描端口数 $P_{ports}$对每台主机检查哪些 TCP/UDP 端口处于开放状态,开放端口像敞开的窗户,暗示着背后运行的服务。
    PportsP_{ports}
  3. 探测总量 $N_{probe}$二者相乘得到本次情报收集的探测规模,它直接决定扫描耗时与触发的报警数量。
    Nprobe=Hhosts×PportsN_{probe} = H_{hosts} \times P_{ports}

三、威胁建模——在动手前画一张“小偷路线图”

踩点结束后,友好窃贼窝在咖啡馆里铺开一张小区地图,圈出三五个可能的入口:后门锁芯旧、车库窗户常年不关、摄像头正对大门但有盲区。他在心里盘算:哪个入口最省事、被发现的概率最低、能偷到的东西最值钱。这就是在行动之前,先把“偷法”想清楚。

渗透测试的第三阶段——威胁建模(Threat Modeling),要求测试者站在攻击者视角,识别目标的关键资产,分析系统的攻击面,再为不同的攻击路径排出优先级。它回答的核心问题是:“这台系统最怕谁来打、打哪里最疼?”

威胁建模的具体步骤包括:识别关键资产(如核心数据库、支付接口、管理员账号);绘制数据流与信任边界,明确哪些输入不可信;枚举攻击面(Attack Surface),比如对外开放的端口、上传文件的表单、可解析的域名;最后对每条攻击路径按利用难度、影响范围打分排序。经典的建模方法包括 STRIDE 威胁分类和攻击树(Attack Tree)。

拿着路线图的窃贼,不会傻到去撞最亮灯柱下那扇门;同样,威胁建模让测试者把有限的精力聚焦在“划得来”的目标上,确保每一分钟攻击尝试都花在刀刃上。

Risk=Probability×Impact\displaystyle Risk = Probability \times Impact
通俗说明:风险是“这条路被走的可能性”乘以“走通了造成的损失”。门常年不关的“概率”当然比撬保险柜高,但保险柜一旦被撬,损失可能大得多。
  1. 攻击概率 $Probability$这条路径被成功利用的可能性,取决于暴露程度与攻击难度。
    ProbabilityProbability
  2. 潜在影响 $Impact$一旦得手会造成多大损失,比如读到数据库明文密码,远比读到一个日志文件严重。
    ImpactImpact
  3. 风险值 $Risk$两者相乘得到风险量级,排序后决定先打哪个目标、投入多少精力。
    Risk=Probability×ImpactRisk = Probability \times Impact

四、漏洞分析——挨个摇晃每扇门窗

路线图定好之后,友好窃贼开始围着目标建筑物转悠,挨个摇晃窗户、拽拉门把手、检查锁孔是否生锈。他随身带了一套小工具:先用探针快速划过所有门窗,再对几个可疑的锁孔反复试验,确认哪些“一推就开”。

对应到渗透测试,这就是漏洞分析(Vulnerability Analysis)阶段——在情报收集的基础上,系统性地发现目标系统中可被利用的安全弱点。漏洞是资产本身存在的缺陷(开着的端口、过期未打补丁的软件、弱密码),与“是否有人利用”无关。

漏洞分析通常分两步走。第一步自动化扫描:用 Nessus、OpenVAS、AWVS 等扫描器批量检测目标系统,比对漏洞库,识别出带 CVE 编号的已知漏洞。第二步手工验证:扫描器报出的结果常常有大量误报和“理论上可利用”的漏洞,测试者要通过构造请求、查看上下文、复现条件来确认漏洞真实存在且可触发。最后综合可信度与危害,对漏洞进行分类评级。

探针划过门窗是一台扫描器的工作,而真正撬动锁孔验证“一推就开”的,是测试者的细致与经验。漏洞分析阶段最忌讳“扫描器报什么就信什么”——手工验证永远是可靠性的最后一道防线。

CVSSbase=min⁡(10,  0.6×Eexp+0.4×Iimp)\displaystyle CVSS_{base} = \min(10,\; 0.6 \times E_{exp} + 0.4 \times I_{imp})
通俗说明:CVSS 通用漏洞评分系统,用 0-10 分量化漏洞的严重程度。分越高越危险,比如“无需认证就能远程执行命令”的漏洞,远高于“需要物理接触才能利用”的漏洞。
  1. 可利用性 $E_{exp}$反映攻击者利用该漏洞的难度,综合攻击向量(远程还是本地)、攻击复杂度、是否需要权限与用户交互等子项。
    EexpE_{exp}
  2. 影响 $I_{imp}$漏洞一旦被利用,对机密性、完整性、可用性造成的破坏程度——数据被偷、被篡改、还是服务瘫痪。
    IimpI_{imp}
  3. 加权与封顶 $\min(10, 0.6E + 0.4I)$两个维度按权重合成后,超过 10 分按 10 分计,最终映射到严重/高危/中危/低危四个档次。
    min⁡(10,  0.6×Eexp+0.4×Iimp)\min(10,\; 0.6 \times E_{exp} + 0.4 \times I_{imp})

五、漏洞利用——动手撬开那把锁

门窗都检查完毕,友好窃贼终于要动手了。他从工具包里掏出一把开锁枪,对准那扇“锁芯旧”的后门,“咔哒”一声门开了。不过他的全套装备可不止一把枪——工具箱里还有各种撬棍、万能钥匙,对应不同的锁型。

渗透测试的第五阶段——漏洞利用(Exploitation),就是利用漏洞分析阶段确认的弱点,真正进入目标系统获取访问权限。这一步往往是最受关注的“高光时刻”,但也是最依赖前置积累的一步:没有前面细致的收集与分析,盲目发送攻击载荷的命中率极低。

漏洞利用阶段最著名的武器库是 Metasploit 框架——一个集漏洞利用、载荷生成、辅助模块于一体的开源渗透平台。借助 msfconsole,测试者通过 search 查找与目标版本匹配的 exploit 模块,用 set payload 配置攻击成功后的执行载荷(比如反向 Meterpreter shell),再 exploit 发送攻击。利用成功后通常还要进行权限提升(Privilege Escalation),从普通 Web 用户权限提升到 root/System 管理员权限,以获得更大的控制权。

开锁枪对着旧锁芯响起的“咔哒”声虽然动听,但真正决定成功的,是之前踩点画图时的情报与判断。漏洞利用不是玄学,而是充分准备后的精准一击。

Win=(expmatch=1)∧(payloadfit=1)\displaystyle Win = \left( exp_{match} = 1 \right) \wedge \left( payload_{fit} = 1 \right)
通俗说明:一次漏洞利用要成功,必须同时满足两个条件:攻击模块和目标版本精准匹配,且载荷能在目标环境中正常执行——就像你要用对钥匙,还要用对开门的方向。
  1. 版本匹配 $exp_{match}$exploit 模块针对特定软件版本设计,目标已打补丁时,即使存在同类漏洞也无法被该模块利用,所以必须先核对版本号。
    expmatch=1exp_{match} = 1
  2. 载荷适配 $payload_{fit}$payload 是漏洞利用成功后执行的代码,需与目标架构(x86/ARM)、操作系统、网络环境兼容,例如反向连接是否能打通回连通道。
    payloadfit=1payload_{fit} = 1
  3. 逻辑与 $\wedge$两个条件缺一不可,任何一方为 0 则整个利用尝试失败——这也解释了为什么利用成功的“确定性”远低于想象。
    Win=(expmatch=1)∧(payloadfit=1)Win = (exp_{match} = 1) \wedge (payload_{fit} = 1)

六、后渗透——进屋之后别急着走

后门开了,友好窃贼却没有大摇大摆地拿东西就走。他先是轻手轻脚地逛了一圈,记住保险柜的位置,顺手在门框内侧贴了个只有自己能识别的记号,离开前还用手套把碰过的门把手都擦了一遍。对专业贼来说,“进来”只是开始,“安全地待在屋里”和“不留痕迹地离开”同样重要。

对应渗透测试的第六阶段——后渗透(Post-Exploitation),指成功获得目标系统访问权限后,在系统内部进行的一切活动。这一阶段的目标包括:验证攻击影响的真实范围、挖掘更深层的数据、模拟攻击者“长期潜伏”的能力。

后渗透的典型工作内容有三类:一是权限维持,通过计划任务、开机自启动服务、WebShell 后门等方式建立持久化机制,确保重启系统或漏洞修复后依然能回来;二是敏感数据收集,定位密码哈希、配置文件、数据库内容等高价值数据,验证机密性损失程度;三是痕迹清理,删除日志、清理命令历史、移除临时文件,防止安全团队通过取证溯源发现入侵路径。

门框上的记号、擦净的门把手,让这个窃贼来无影去无踪。后渗透阶段正是用同样的“细心”回答安全团队最关心的问题:如果真有贼进来了,他能否不被发现地住下、带走什么、又留下多少线索?

Cclean=SremovedStotal×100%\displaystyle C_{clean} = \frac{S_{removed}}{S_{total}} \times 100\%
通俗说明:痕迹清理的成功率取决于“留下多少证据”被抹掉。清理得越干净,模拟的真实攻击者给防守方留下的溯源线索就越少,也就越贴近真实的高级攻击场景。
  1. 已产生的痕迹 $S_{total}$攻击者在系统里创建的工具文件、修改的日志、执行的命令、建立的连接都算“痕迹”。
    StotalS_{total}
  2. 已清理的痕迹 $S_{removed}$被删除或篡改的记录数量——注意删除日志本身也会留下新痕迹,所以清理是门手艺活。
    SremovedS_{removed}
  3. 百分比 $C_{clean}$清理率越高,攻击路径越难被还原;专业测试通常追求“不影响系统运行前提下的最大清理”。
    Cclean=SremovedStotal×100%C_{clean} = \frac{S_{removed}}{S_{total}} \times 100\%

七、报告编写——把发现变成一张“体检单”

几天后,友好窃贼带着一沓文档敲开你的门。他没有炫耀自己撬了多少把锁,而是摊开一份清单:哪扇窗的插销老化、哪个保险柜的密码锁有设计缺陷、你放在抽屉里的备用钥匙放在了众所周知的“隐蔽”位置。每一条后面,都跟着一句“怎么修”。

渗透测试的最后阶段——报告编写(Reporting),是整个项目的价值所在。前面六阶段做得再深入,如果报告无法让不同角色的读者看懂并行动起来,测试就失去了意义。报告既要给管理层讲清楚“我们有多危险”,也要给工程师写明白“具体改哪里”。

一份完整渗透测试报告通常包含:执行摘要(Executive Summary)——用非技术语言概述整体风险水平、统计图表与最关键发现;测试范围与方法说明,注明授权范围内的目标与使用的工具;漏洞详情——按严重程度排序的漏洞清单,每条包含漏洞描述、复现步骤、涉及资产、CVSS 评分;以及修复建议,按优先级给出补丁升级、配置加固、架构调整等具体措施。

友好窃贼交到你手里的不是“战利品”,而是一份能让你安心入睡的行动清单。报告编写的哲学就是:漏洞的价值不在于被发现,而在于被修复。

Priorityfix=∑i=1V(Severityi×Exposurei)\displaystyle Priority_{fix} = \sum_{i=1}^{V} \left( Severity_{i} \times Exposure_{i} \right)
通俗说明:修复优先级不是简单按漏洞评分排队,而是综合“漏洞有多严重”与“这个资产暴露程度有多高”——一个藏在保险柜里的低危漏洞,优先级可能高于一个暴露在公网的中危漏洞。
  1. 每个漏洞的严重度 $Severity_i$沿用 CVSS 评分与危害类型,衡量漏洞单点造成破坏的上限。
    SeverityiSeverity_i
  2. 资产暴露度 $Exposure_i$该漏洞所在的资产是否面向公网、是否承载核心业务,暴露面越大的资产越需要优先处理。
    ExposureiExposure_i
  3. 求和 $\sum$对报告中的全部漏洞逐项加权求和,得到整体修复工作量与优先级的量化视图,指导安全团队的排期。
    ∑i=1V(Severityi×Exposurei)\sum_{i=1}^{V} (Severity_i \times Exposure_i)

AI 应用场景

场景一:金融机构季度渗透测试与安全巡检

阶段:漏洞分析与风险评估

解决的问题:传统人工渗透测试依赖资深专家经验,项目周期长、成本高、覆盖范围有限。AI 辅助的自动化漏洞扫描与攻击路径推理可以快速圈定高危目标,人工再对重点漏洞做深度验证,大幅提升整体效率。

具体案例:某银行每季度对网上银行系统进行渗透测试。测试团队先用自动化工具对 200 多个业务域名做批量扫描与指纹识别,汇总出待验证清单;随后安全专家聚焦高危漏洞(如未修复的远程代码执行漏洞、存在弱口令的运维后台),手工验证并复现利用链,最终在季度报告中给出修复优先级。

场景二:新系统上线前的 DevSecOps 安全评估

阶段:情报收集与威胁建模

解决的问题:传统上线前安全检查在项目末期才介入,发现问题时返工成本极高。通过把渗透测试的早期阶段嵌入到开发流水线中,可以在每次构建时自动收集资产信息、分析攻击面。

具体案例:一家互联网公司在新版本 App 发布前,安全团队在 CI/CD 流水线中插入自动化安全评估环节。代码合并触发后,自动化工具对预发布环境执行端口扫描与服务指纹识别,威胁建模模块根据改动代码自动生成攻击面清单,高风险项会直接阻塞发布,并把问题单同步给对应研发。

场景三:等保合规与攻防演练前的“摸底”

阶段:漏洞利用与后渗透验证

解决的问题:合规测评和红蓝对抗前,组织需要先摸清自己的真实防御水位。按 PTES 全流程跑一次“全真演练”,可以提前暴露核心系统的可利用漏洞与数据泄露路径。

具体案例:某政务单位为了迎接等保 2.0 测评,邀请第三方渗透团队按标准流程做一次深度检测。团队先从公开信息收集目标资产、绘制网络拓扑与攻击面,再对关键服务器进行漏洞利用与权限提升,最终在后渗透阶段验证了核心数据是否可被窃取,为后续安全整改提供了第一手证据。

Python 演示

python36 行
import socketfrom concurrent.futures import ThreadPoolExecutor  def tcp_check(host, port, timeout=0.5):    """尝试与目标端口建立 TCP 连接, 判断端口是否开放"""    try:        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)        sock.settimeout(timeout)        result = sock.connect_ex((host, port))        sock.close()        return result == 0    except socket.error:        return False  def scan_range(host, start=1, end=1024):    """对目标主机扫描指定端口范围, 返回开放端口列表"""    print("[*] 目标: {} 端口范围: {}-{}".format(host, start, end))    open_ports = []    with ThreadPoolExecutor(max_workers=100) as pool:        futures = {pool.submit(tcp_check, host, p): p                   for p in range(start, end + 1)}        for future in futures:            port = futures[future]            if future.result():                open_ports.append(port)                print("[+] 开放端口: {}".format(port))    if not open_ports:        print("[-] 未发现开放端口")    return open_ports  if __name__ == "__main__":    target = "127.0.0.1"  # 演示用本机地址, 请只扫描已授权的目标    scan_range(target, 1, 1024)
目的:实现情报收集阶段的主动端口扫描,用并发连接探测目标主机上开放的 TCP 端口,快速摸清“哪扇窗户没关”。
  1. result = sock.connect_ex((host, port))核心探测逻辑:connect_ex 返回 0 表示端口开放,返回其他值则关闭或不可达。
  2. sock.settimeout(timeout)设置超时时间,避免扫描卡在无响应的主机上浪费时间。
  3. with ThreadPoolExecutor(max_workers=100) as pool:创建 100 个线程的线程池,让几百个端口的探测并行执行。
  4. futures = {pool.submit(tcp_check, host, p): p for p in range(start, end + 1)}把每个端口封装成一个异步任务提交给线程池,并记录端口号便于取回结果。
  5. if future.result():逐个取回探测结果,为 True 就把端口加入开放列表并打印。
  6. scan_range(target, 1, 1024)程序入口,针对授权目标扫描 1-1024 号常用端口,覆盖绝大多数常见服务。

常见误区

误区我以为渗透测试就是把 Nessus 或 OpenVAS 装好扫一遍,扫描报告出来就完工了,剩下的全是工具的事。

正解扫描器只能完成漏洞分析阶段的一部分工作。扫描结果充满误报,也判断不了哪些漏洞真正可被利用、能造成多大危害。真正的渗透测试要在情报收集、威胁建模之后,对高危漏洞做手工验证,再进入漏洞利用与后渗透,最后落到报告。就像探针划过所有门窗不等于真的试着撬锁——扫描器说“可能”,渗透测试要的是“确认”。

为何常见:工具厂商的宣传让扫描器看起来“一键全自动”,加上很多人只见过扫描器的输出,误以为输出即结果。

误区渗透测试不就是要真实攻击吗?所以我可以用破坏性工具猛打,把系统打崩也算有本事。

正解专业渗透测试必须在不造成业务中断的前提下进行。所有破坏性操作(格式化、拒绝服务攻击、删除数据)都要在前期交互的规则约定中明确限制,并提前做好回滚与应急方案。能“打进系统拿权限”是本事,“打了之后业务照常运转”才是专业。友好窃贼的目标是检验门锁,而不是拆掉你的房子。

为何常见:电影和 CTF 比赛里的攻击往往不计后果,导致初学者把“破坏力”误当成“渗透能力”。

误区漏洞利用成功、弹出 shell 的那一刻,渗透就结束了,剩下就是写报告说系统沦陷了。

正解拿 shell 只是起点。后渗透阶段要验证权限提升到多高、能横向移动到哪些主机、能窃取到什么级别的数据,还要评估权限维持的可行性,这些才是安全风险等级的重要依据。如果只报告“能进去”,客户无法知道真正的损失面有多大,就像窃贼只告诉你“后门能开”,却不告诉你保险柜也被搬空了。

为何常见:初学者以“弹出 shell”为练习目标,容易把利用成功当终点;实际工作中风险由影响范围决定,而不是由击破点决定。

误区报告嘛,把漏洞复现步骤、抓包数据、命令记录堆上去,写得越厚越专业。

正解一份报告要服务两类读者:管理层关心风险量级、业务影响与投入产出,工程师关心复现步骤与修复方案。只有技术细节没有执行摘要的报告,管理层看不懂也做不了决策;只有结论没有证据的报告,工程师又无法修复。好报告像体检单——既有“你的指标超标”的结论,也有“哪项超标、怎么调”的明细。

为何常见:技术人习惯从自己的视角输出,忽略了报告是跨角色沟通的桥梁。

面试题

Q1. PTES 渗透测试执行标准将整个过程划分为几个阶段?

单选题 · easy

  • A.五个阶段
  • B.六个阶段
  • C.七个阶段← 正确答案
  • D.八个阶段

答案:C。PTES 标准把一次渗透测试拆成七个阶段:前期交互、情报收集、威胁建模、漏洞分析、漏洞利用、后渗透和报告编写。就像友好窃贼要先签合同、再踩点、画路线图、试锁、撬锁、进屋收拾、最后交报告,一共七步,缺一不可。

Q2. 前期交互阶段最重要的交付物是什么?

单选题 · easy

  • A.漏洞扫描报告
  • B.测试授权文件← 正确答案
  • C.攻击载荷模块
  • D.后门程序代码

答案:B。前期交互的核心是测试授权书与规则约定,它定义了测试范围、时间窗口和禁止事项,是整个项目合法性的基石。没有它,渗透测试就不是“友好窃贼帮忙看门”,而是“真小偷犯罪”。

Q3. CVSS 通用漏洞评分系统的主要作用是什么?

单选题 · easy

  • A.量化漏洞严重等级← 正确答案
  • B.计算网络带宽大小
  • C.生成攻击载荷代码
  • D.识别目标操作系统

答案:A。CVSS 用 0-10 分量化漏洞的严重程度,综合可利用性与影响两大维度,最终映射到严重、高危、中危、低危四个档次。它是漏洞分析阶段给漏洞“贴价格标签”的标准尺子,帮助团队决定先修谁。

Q4. 下列哪一项属于被动信息收集手段?

单选题 · mid

  • A.使用 Nmap 扫描端口
  • B.直接连接目标服务
  • C.查询证书透明度日志← 正确答案
  • D.发送探测数据包

答案:C。被动收集不直接触碰目标系统,通过证书透明度日志、Whois、搜索引擎等公开渠道获取信息,就像踩点时远远观望。而 Nmap 扫描、直接连接服务和发送探测包都要与目标交互,属于主动收集。

Q5. 威胁建模中的风险计算公式为 Risk = P × I,其中 I 表示?

单选题 · mid

  • A.攻击发生概率
  • B.潜在影响程度← 正确答案
  • C.漏洞严重评分
  • D.资产暴露范围

答案:B。在 Risk = Probability × Impact 中,P 是攻击路径被利用的概率,I 是攻击成功后的潜在影响。两者相乘得到风险量级,用于给各条攻击路径排序。就像友好窃贼判断“哪个入口最划算”,既要看能不能进去,也要看进去能拿到什么。

Q6. 漏洞分析阶段中,手工验证的主要目的是什么?

单选题 · mid

  • A.提高扫描器执行速度
  • B.消除扫描器的误报← 正确答案
  • C.增加流量传输隐蔽性
  • D.自动生成漏洞修复补丁

答案:B。扫描器批量检测后会产生大量误报和“理论上可利用”的结果,手工验证通过构造请求、复现条件来确认漏洞真实可触发。就像探针划过所有门窗后,还要亲手摇晃可疑的锁孔,确认哪些“一推就开”。

Q7. 在渗透测试流程中,权限提升通常发生在哪个阶段?

单选题 · mid

  • A.情报收集阶段
  • B.漏洞利用阶段← 正确答案
  • C.威胁建模阶段
  • D.报告编写阶段

答案:B。漏洞利用阶段在成功进入系统后,通常还要从普通用户权限提升到 root/System 管理员权限,以获得更大的控制权。这就好比友好窃贼翻窗进屋后,还要找到主卧的钥匙才能打开保险柜。

Q8. 后渗透阶段通常包含哪些典型工作内容?

多选题 · hard

  • A.建立权限维持机制← 正确答案
  • B.收集敏感数据文件← 正确答案
  • C.清理攻击者痕迹← 正确答案
  • D.编写漏洞修复代码

答案:ABC。后渗透阶段的核心任务是权限维持(确保以后还能回来)、敏感数据收集(验证机密性损失)和痕迹清理(防止被溯源),对应友好窃贼贴记号、看保险柜、擦门把手。编写漏洞修复代码是客户方工程师的工作,不属于渗透测试者的职责范围。

Q9. 一份完整渗透测试报告应包含哪些组成部分?

多选题 · hard

  • A.执行摘要与风险统计← 正确答案
  • B.漏洞详情与复现步骤← 正确答案
  • C.修复建议与优先排序← 正确答案
  • D.攻击者的个人技术笔记

答案:ABC。专业报告既要给管理层看执行摘要与风险统计,也要给工程师看漏洞详情、复现步骤和修复建议,缺一不可。攻击者的个人笔记是零散的过程记录,没有经过整理和验证,不能直接作为交付物。

Q10. 关于 PTES 各阶段之间的关系,下列说法正确的是?

多选题 · extreme

  • A.情报收集质量影响利用成功率← 正确答案
  • B.漏洞分析可以跳过手工验证
  • C.后渗透结果影响风险定级← 正确答案
  • D.报告编写可以省略执行摘要

答案:AC。情报收集越充分,威胁建模和漏洞利用的命中率越高,所以 A 正确;后渗透验证了权限提升范围、数据泄露程度,直接决定风险的最终定级,所以 C 正确。漏洞分析的扫描结果必须经手工验证去误报,B 错误;报告的执行摘要是管理层决策的核心入口,不可省略,D 错误。七个阶段像友好窃贼的作业链,前一步的质量决定后一步的上限。