本节摘要:拒绝服务(DoS/DDoS)用海量流量或畸形请求耗尽目标资源,破坏可用性;中间人攻击(MITM)潜伏在通信双方之间截获或篡改数据,破坏机密性与完整性。两者是第 2 章里仅有的不以"入侵系统"为前提的手法——一个从外面压垮你,一个从中间架桥骗你。本节拆解两者的运作机理、典型工具特征与防御对应。承接 2.1 节的感染链视角,本节把镜头转向"不进门也能伤人"的两个展品。
前两节看过的手法都要先"进去":恶意软件要落地,注入要提交载荷。本节的两种攻击打破这个预期。拒绝服务压根不打算进门——它的全部目的就是让门堵死,正常客人进不来;中间人攻击甚至不攻击你任何一方的机器,它只是在你们的通话线路中间架了一座桥。理解这两种"非入侵"形态的攻击,是理解"边界之外也有战场"的第一课。
DoS(Denial of Service):单一来源发起的拒绝服务。目标是耗尽对方的三类资源之一:带宽(把管道塞满)、连接(占满并发队列)、计算(用昂贵的请求吃光处理器)。单点 DoS 在今天更多出现在理论里——一台机器对现代服务的压制力有限。
DDoS(Distributed DoS):分布式版本。攻击者控制成千上万台失陷设备(肉鸡/僵尸网络)同时发包,单点防御彻底失效。DDoS 的经济学很有意思:租一次攻击按小时计价,比防守方买清洗带宽便宜几个数量级——攻防成本不对称到这个程度,决定了它是最常见的勒索载体之一。
按攻击层分类更贴近工程:耗带宽的洪水类(UDP 反射放大、ICMP 洪水)打在网络层;耗连接的(SYN 洪水)卡在协议握手;耗计算的(HTTP 慢速攻击、重资源接口轰炸)顶到应用层。层次越高,单包的破坏效率越高,识别难度也越大——应用层攻击的请求看起来和正常用户一模一样。
一个 SYN 洪水的最小示意,三行命令就能看到握手的异常堆积:
$ netstat -an | grep SYN_RECV | wc -l 41273 # 半连接队列被塞爆, 正常用户握手失败 $ tcpdump -nn 'tcp[tcpflags] & tcp-syn != 0 and tcp[tcpflags] & tcp-ack == 0' | head 02:11:03.771203 IP 198.51.100.7.43211 > 10.0.0.8.443: Flags [S], seq 889912 02:11:03.771301 IP 198.51.100.7.43211 > 10.0.0.8.443: Flags [S], seq 889912 # 同源同序号重发, 且永不来第三次握手 → 典型 SYN 洪水特征
SYN 洪水的原理值得记住:TCP 三次握手要求服务端收到 SYN 后为半连接分配资源等待,攻击者发 SYN 却永远不回最后的 ACK,资源就空耗到超时。这个"用协议规则的善意换攻击资源"的思路,在后面 2.3 节的注入攻击里还会再见到。

中间人攻击的精髓是"双方都没撒谎,只是都在跟第三个人说话"。攻击者要架桥,先要让流量经过自己,常见路径有三条:
局域网 ARP 欺骗:局域网里主机靠 ARP 协议把 IP 地址解析成物理地址,而这个解析没有任何验证。攻击者持续向网关和受害者互发伪造 ARP 应答,让双方都把对方地址指向自己的网卡——流量自然全经过它。同网段攻击,门槛最低。
恶意 Wi-Fi 热点:架一个与咖啡店同名同密码的热点,等用户连上来。所有流量天然经过攻击者,这就是"免费 Wi-Fi 风险"的技术本质。
DNS 劫持:把域名解析指向攻击者控制的服务器。用户访问的"银行网站"在 DNS 层就已经是假的了,5.2 节的 DNSSEC 就是冲着这个来的。
流量过来之后,攻击者有三种玩法,烈度递增:只窃听(被动记录明文内容);转发加录制(加密流量也先录下来,等将来密钥泄露再解);篡改(往下载的安装包里塞私货、往转账请求里改收款账号)。第三种对完整性的破坏最隐蔽——双方看到的都是"正常的"服务,只是内容被调了包。
一个 HTTPS 降级攻击的现场:攻击者在握手阶段干扰协商,让双方以为对方不支持加密,退回明文通信:
正常协商: 客户端 → 服务器: 我支持 TLS 1.3/1.2 服务器 → 客户端: 用 TLS 1.3 被架桥后: 客户端 → 攻击者(伪称服务器): 我支持 TLS 1.3/1.2 攻击者 → 服务器(伪称客户端): 我只支持明文 # 谎报能力 服务器 → 攻击者: 好的, 用明文 # 降级达成 结果: 全部业务数据以明文在攻击者面前流过
DoS 防御的本质是架构,不是设备。 单点再强也扛不住分布式洪峰,可行的组合拳是:任播架构把流量分散到全球节点、上游运营商清洗中心在流量到达前拦截、关键服务保留弹性带宽。容量规划要说实话——你的业务能承受的攻击流量上限,取决于架构里最细的那根管子。
MITM 防御的核心是身份校验,不是加密本身。 加密只保证"第三方看不懂",不保证"对面是真身"。证书校验(第 4 章 PKI)、证书钉扎、HSTS 强制加密——这些机制把"我在跟谁说话"变成密码学可验证的问题。企业内网还要防内鬼架桥:交换机端口安全、动态 ARP 检测,把 ARP 欺骗在接入层掐死。
⚠️ 常见坑:内网信任即裸奔。很多团队默认"内网流量不需要加密",ARP 欺骗恰恰只在内网有效。零信任思想(第 5 章 5.3 节)的核心主张之一就是内网不天然可信——访客 Wi-Fi 和生产网段之间如果只隔一个 VLAN 配置错误,边界防御做得再漂亮也是白搭。
💡 关键直觉:拒绝服务攻击里受害者收到的包"内容完全合法",中间人攻击里双方的每一步都"符合协议"——这两种攻击的可怕之处都在于不违反规则,只利用规则。凡是靠规则善意运转的机制,都要问一句:有人不守善意会怎样。
值班视角把两件展品的特征信号浓缩成一页速查:
| 观察到的现象 | 可能是谁 | 第一动作 |
|---|---|---|
| 带宽曲线打满,来源分散全球 | DDoS 洪水 | 联系上游清洗,勿徒手封 IP |
| 半连接队列暴涨, SYN 重发密集 | SYN 洪水 | 开启 SYN cookie,限速源地址 |
| 页面能 ping 通但响应极慢,连接数正常 | 慢速应用层攻击 | 看并发时长分布,调超时与并发上限 |
| 同网段出现 IP 冲突告警 | ARP 欺骗 | 启用动态 ARP 检测,定位接入端口 |
| 用户反映"网站证书警告"集中爆发 | 疑似中间人/劫持 | 立即比对证书指纹,查解析与路由 |
| 员工连了同名陌生 Wi-Fi 后账号异常 | 恶意热点 | 强制下线改密,全站核对 TLS 生效 |
表里所有"第一动作"都指向同一个原则:先恢复可观测,再谈处置。DDoS 场景里最贵的失误是慌乱中把正常用户一并封掉;中间人场景里最贵的失误是只改密码不查信道——信道还在攻击者手里,新密码等于亲手递过去。1.1 节的尺子在这里再次生效:拒绝服务主要砍 A,中间人主要砍 C 与 I,动作自然分岔。
还有一个值得写进值班手册的细节:两类攻击都可能出现"试探波"。真正的洪峰或架桥之前,常有低强度探测(小流量测试、零星 ARP 扫描)。把试探波当噪音忽略,就浪费了最便宜的预警;把试探波记录进基线,洪峰来时判断时间能快一个量级。