🛡️ 第二章 针对网络的攻击
📄 一句话概括

抓包(捕获数据包)本身不难,难的是抓下来之后能看出什么——而在九成以上流量都已加密的 2026 年,能读的内容越来越少,能看的"行为"越来越重要。

📝 本节和前面几节的关系

这里要先把一个方向说清楚:监视与分析本身是一个中性手段。2-1 讲的窃听是攻击者用它;这一节讲的是防守方用它来了解自己的网络。同一件事,看谁在做、做在谁的网络上。

它承接 应当在哪里防御 里的"要有可见性",也是 外部入侵的检测和防御 的数据来源——检测设备吃的就是这个东西。

一、捕获数据包在做什么

网络上的数据是一小段一小段传的,每一小段叫一个数据包。捕获数据包就是:把经过某一处的数据包复制一份存下来,形成一个文件,之后再慢慢分析。

要做这件事,需要三个条件:

  1. 一个位置——你得站在数据经过的地方。常见做法是把交换机的某个端口设成镜像口(把所有流量复制一份给它),或者用分光器在链路上复制。
  2. 一个权限——抓包需要能"看到别人的数据包",这在操作系统里是特权操作。
  3. 一个工具——记录用的工具(命令行下最常用的是 tcpdump)和分析用的工具(图形界面最常用的是 Wireshark)。

保存下来的文件一般叫 pcap 文件。

二、"抓"和"分析"是两件不同的事

这一点值得单独强调,因为很多人以为"抓到了就完了"。

现实里最常见的失败模式是:抓了一大堆文件,没有人看。磁盘塞满了,出事的时候才发现里面全是要不了的东西——该抓的没抓,不该留的留了一堆。

所以"分析"这一半要靠两件事支撑:

  1. 有明确的问题——你在查什么?"为什么今天上午十点网站变慢"和"有没有人在往外面传数据"需要抓的东西完全不同。
  2. 有几个"正常"的参照——没有基线,你看到什么都觉得正常。基线是分析的起点,不是抓包。

三、能看见什么,取决于加不加密

这是本节的核心。抓包抓到的永远是原始字节,但"能不能读懂"完全取决于传输方式。三种典型情况:

情况 能看到 看不到
明文传输 全部:网址、表单、Cookie、正文 ——
一般加密 通信双方地址、端口、时间、数据量;域名(通常是可见的) 内容全部
更强加密(含域名加密) 只剩地址、端口、时间、数据量 内容,以及你要访问的是哪个网站

所以今天的现实是:抓包的主要价值,从"读内容"转移到了"看行为"。

那"看行为"能看出什么?几条最实用的:

一句话:看不到"说了什么",但能看到"谁在什么时间、用什么方式、跟谁说了多少"。 这已经足够支撑很多判断。

四、动手 Demo:十类流量,抓下来各能看见什么

items = [
    ("HTTP 明文网页", "全部可见(网址、表单、正文)", 1),
    ("HTTPS / TLS 1.3", "只见地址与端口;域名(SNI)通常仍可见", 0),
    ("QUIC / HTTP3", "只见地址与端口;域名默认也被加密", 0),
    ("明文 DNS(53 端口)", "你查了哪些域名,一览无余", 1),
    ("加密 DNS(DoH / DoT)", "只剩目的 IP,看不到域名", 0),
    ("明文 FTP / Telnet", "连口令都是明文", 1),
    ("明文 SMTP 邮件", "邮件内容与收件人可见", 1),
    ("SSH 远程登录", "只见流量大小与时间节奏", 0),
    ("内网明文共享(SMB)", "文件名与内容可见", 1),
    ("内网加密共享", "只见谁在跟谁连", 0),
]

实跑输出:

  流量类型                      从抓到的包里能看到什么                                   看得见内容
  ------------------------------------------------------------------------------------------
  HTTP 明文网页                 全部可见(网址、表单、正文)                                  是
  HTTPS / TLS 1.3           只见地址与端口;域名(SNI)通常仍可见                            否
  QUIC / HTTP3              只见地址与端口;域名默认也被加密                                否
  明文 DNS(53 端口)             你查了哪些域名,一览无余                                    是
  加密 DNS(DoH / DoT)         只剩目的 IP,看不到域名                                   否
  明文 FTP / Telnet           连口令都是明文                                         是
  明文 SMTP 邮件                邮件内容与收件人可见                                      是
  SSH 远程登录                  只见流量大小与时间节奏                                     否
  内网明文共享(SMB)               文件名与内容可见                                        是
  内网加密共享                    只见谁在跟谁连                                         否

  十类里只有 5 类能看到内容,其余 5 类只能看到【谁在跟谁说话】。

  ① 这就是今天的真实处境:抓包这件事本身还做得到,
     但因为 94.65% 的网页请求和 98.9% 的人产生的流量都已加密,
     靠【读内容】来判断威胁越来越不现实。
  ② 密码学给不出答案的时候,就只能看【行为】:
     连接频率、目标分布、传输体量、时间规律、证书是否异常。
     新一代网络检测响应就是走这条路——不解密,从元数据里找异常。
  ③ 剩下真正能读的那几类,恰恰是家里和小企业最常留着的:
     明文 DNS、明文共享、明文 FTP。
     把这几样换成加密版本,比多买一台检测设备划算得多。
  ④ 提醒一句边界:抓包要在【你自己有权管的网络】里做。
     抓别人的链路,性质就从取证变成非法获取数据了(见 2-4)。

读这个输出:最值得看的是"看得见内容"这一列——十类里只剩五类。再注意后三条:可读的那几类(明文 DNS、明文共享、明文 FTP)恰恰是日常最没被当回事的。从中能得到一个反直觉的结论:把这些换成加密版本,既保护了自己,也让攻击者更难藏在明文里——而这一步的成本远低于买检测设备。

五、监视与分析的三个实用要点

  1. 抓什么比抓多少重要。 先想清楚要回答什么问题,再决定抓哪一段、留多久、留多大。全量长期保存既贵又没人看。
  2. 要有基线。 同一台机器、同一时段、正常情况下的连接数和数据量是多少?没有基线,异常看起来和正常一样。
  3. 合法边界必须清楚。 抓包要在你自己有权管理的网络里做。抓别人的链路,性质就从"取证"变成"非法获取计算机信息系统数据"了(对照 2-4)。在企业环境里,这件事通常还需要在制度上写清楚(告知、授权、留存期限)。

六、⚠️ 2026 现状

30 秒实验

做一次"看得见自己"的小实验:

  1. 看你家的网络里哪些设备在主动往外连——登录路由器后台,找"流量统计"或"连接数"这类页面。你会发现有很多连接是你不认识的程序发起的(智能电视、摄像头、扫地机器人都在往外连)。
  2. 再看 DNS:如果你会一点技术,把路由器的 DNS 改成明文查看一次(或用 nslookup 查询几个陌生域名),体会一下"域名解析能暴露多少事"——你访问的每一个网站名字,都会在那条明文链路上一一出现。

这一节要带走的一句是:抓包的价值不在"抓到了",而在"看得出"——而当内容看不见的时候,行为就是唯一还写得完的那本账。

常见误区

  1. 错误:抓包能抓到所有东西,所以只要一直抓就行了。——纠正:抓得到"字节",不等于读得出"意思"。 加密之后,抓到的绝大部分是读不懂的内容,能用的只是地址、端口、时间、大小、证书这些元数据。同时长期全量留存既昂贵又几乎没人分析。正确做法是带着问题抓、按需留存、以行为为分析主线。

  2. 错误:我自己的网,想怎么抓就怎么抓。——纠正:要区分两种情形。在自己有权管理的设备和网络里做,且事先有制度安排(告知、授权、留存期限),属于正常运维。去抓不属于自己的链路(比如蹭别人的 WiFi 抓包、在公司里越权抓同事的通信),性质就可能落到"非法获取计算机信息系统数据"上了(对照 2-4)。技术能力和合法性是两件事。

  3. 错误:加密了,抓包就没用了。——纠正:恰恰相反,加密让"基于内容"的检测失效,反而抬高了"基于行为"的检测的价值。 通过元数据能看出很多:异常的连接频率、异常的目标地区、异常的数据量、证书异常、周期性心跳。在内容不可读的时代,这些"形态信号"反而更难被攻击者伪装——因为伪装内容容易,伪装形态很难。

  4. 错误:检测要靠"抓全量",所以存储越多越好。——纠正:方向和成本都要算。 一方面,全量留存的成本高昂而利用率极低(有数据说约 80% 的日志从来没有人查过);另一方面,时间尺度已经压到分钟级——等你从海量历史数据里翻出来,事情早就结束了。务实的方向是:关键位置留全、非关键位置只留摘要;实时看行为、事后才翻明细。

自测三问(点开对答案) 1. 为什么"域名解析"在今天的检测里反而变得更有价值? —— 因为**内容已经读不到了,而解析这一环暴露的是"意图"**。恶意程序要联系它的服务器,通常得先解析一个域名——**这个动作在加密流量里往往是可观察的**(除非用了加密的域名解析)。所以"哪台机器在解析一个从来没解析过的、可疑的域名"就成了一个高价值信号。**内容看不见的时候,"它想找谁"就成了最有信息量的一件事。** 2. 为什么说"抓一大堆积起来"是最常见的失败模式? —— 因为它同时浪费了**存储**和**人的注意力**——**抓下来的东西没人看,等于没抓**;而真正需要的那一刻,你会发现关键的那一段**没在留存范围里**。根本原因是抓包前**没有明确的问题**。正确的顺序是:**先想清楚要回答什么,再决定抓哪里、抓多久、留多少**;同时要有一份"正常长什么样"的基线,否则异常摆在眼前也认不出来。 3. 加密普及之后,抓包分析的重心发生了什么转移? —— 从**读取内容**("说了什么")转移到**观察形态**("谁在什么时间、用什么方式、跟谁说了多少")。可用的信号包括:连接频率与周期性、目标地址与地区分布、传输体量、协议类型、证书信息与异常。这个转移的深层含义是:**在读不到内容的情况下,判断依据从"这句话是不是恶意的"变成了"这个行为像不像正常的"**——**而后者的门槛更高,更需要基线。**

相关笔记