-
-
[原创]面向 CTF / 流量分析 / 信息收集的网络基础总览
-
发表于: 6小时前 122
-
哎,老师说要开会,给同学讲点什么,那就随便讲讲
本篇文章是总结梳理性的,提了很多东东,不知道的请自行了解。(懒得写那么详细了,这已经是让ai扩写过一遍然后我再改改的)
我blog上的这篇文章: 如果图加载不出来可以去我blog看
欢迎各位大佬补充指正!
0x00 前言
这篇文章试图做的,就是把这些知识串成一张图。它不追求教材式的严格穷尽,而是从 基础且必备 的部分出发,尽量覆盖到 CTF、流量分析、信息收集与现实网络环境 中最常见、最有用的知识。
0x01 做流量分析
第一步:看时间线
谁先开始通信?什么时候发生 DNS?什么时候建连?什么时候断开?
第二步:看通信双方
哪些 IP 最活跃?哪些端口最关键?哪些主机像客户端,哪些像服务端?
第三步:按层看
是 Ethernet、ARP、IPv4、IPv6,还是 WLAN?是 TCP、UDP、ICMP 还是 QUIC?应用层是 DNS、HTTP、TLS、Modbus 还是别的?
第四步:找异常
有没有 ARP 欺骗痕迹?有没有奇怪的 DNS 查询?有没有异常证书 SAN?有没有很怪的 User-Agent?有没有大量随机子域?有没有反常的指纹?
第五步:重组与提取
Follow TCP Stream导出对象看证书看 SNI / Host看 DNS 历史看是否存在文件、凭据、隧道数据或隐藏载荷
0x02 网络分层
很多人一提网络分层就想到 OSI 七层模型,然后开始背:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。背完以后,实际看包时还是一脸茫然。
真正有用的不是死背层名,而是理解:每一层都在解决一个不同的问题。
更贴近实际的思路,是用一个简化版的 TCP/IP 视角去理解:
- 链路层 / 二层:在当前链路上怎么把数据发出去典型协议:Ethernet、ARP、WLAN
- 网络层 / 三层:跨网络之后,最终要去哪里典型协议:IPv4、IPv6、ICMP
- 传输层 / 四层:到了主机之后,交给哪个服务,怎么保证传输典型协议:TCP、UDP
- 应用层:这个连接到底在干什么典型协议:DNS、HTTP、TLS、SSH、SMTP、Modbus 等
传统上四层常见的是 TCP 和 UDP;而像 QUIC 这类现代协议虽然基于 UDP 承载,但承担了更多高层连接控制能力,已经不太适合用老式分层直觉去硬套。
0x03 封装与解封装
想看懂抓包,必须先理解 封装。

当应用程序要发送一段数据时,这段数据不是直接原样发上网,而是会一层层加头部:
- 应用层生成内容
- 传输层加上 TCP/UDP 头
- 网络层加上 IP 头
- 链路层加上 Ethernet 或 WLAN 头
- 然后从网卡发出去
接收方收到后,再反过来一层层拆掉,这就是 解封装。
0x04 二层
1. 以太网与 Ethernet 帧
在有线局域网里,最典型的链路层协议就是 以太网。在以太网中,数据以“帧”的形式传输。一个常见的 Ethernet 帧里,最重要的字段包括:
- 目的 MAC
- 源 MAC
- EtherType
- 负载
EtherType 用来告诉接收方:负载里装的是什么。常见值包括:
0x0800:IPv40x0806:ARP0x86DD:IPv6
2. MAC 地址
MAC 地址是链路层地址,通常和网卡相关。它的主要作用不是“全球唯一标识某台机器”,而是帮助局域网中的设备完成“这一跳投递”。
交换机在转发以太网帧时,主要看的就是 MAC 地址。因此,在同一个二层网络里,真正决定帧发给谁的是目的 MAC,而不是 IP。
这就是为什么包里最先看到的是一串 MAC 地址因为数据要先走当前链路这一跳,链路层先于网络层发生作用。
Q:为什么不能直接用 MAC 作为 IP
这是一个很经典的问题。直觉上看,既然网卡有 MAC,为什么互联网不直接拿 MAC 做地址?
因为 MAC 只在当前链路这一跳有意义。一个包经过路由器后,链路层头部通常会被重写,源 MAC 和目的 MAC 都可能变化。所以 MAC 不是一个能端到端保持稳定的地址。
而 IP 是逻辑地址,能够分层、聚合、划分网段,适合大规模路由。互联网之所以能扩展,就是因为 IP 可以按前缀聚合,而不是为全球每一个终端维持一条扁平记录。
MAC 用来解决本地链路上的一跳投递,IP 用来解决跨网络的逻辑寻址。
0x05 ARP
应用程序通常知道自己要访问的目标是一个 IP 地址,但链路层发帧时需要的是 MAC。这就需要一个“翻译器”,把 IP 翻译成当前链路上的 MAC,这个协议就是 ARP。
ARP 的过程很直观:
- 已知目标 IP
- 不知道对应的 MAC
- 在局域网里广播问:谁是这个 IP?
- 目标主机回复自己的 MAC
- 发送方将结果缓存进 ARP 表
因为发送方还不知道目标 MAC,所以请求通常要广播;而目标主机已经知道请求者是谁,因此回复通常可以单播返回。ARP 解析的不一定是“最终目标”的 MAC,而是“下一跳”的 MAC。
ARP 欺骗与中间人
ARP 没有强认证机制,所以它天然容易被欺骗。攻击者可以伪造 ARP 应答,告诉受害者“我是网关”,再告诉网关“我是受害者”,于是双方流量都先经过攻击者,实现中间人。
这就是经典的 ARP 欺骗 / ARP 劫持。它的典型效果包括:
- 明文流量嗅探
- 局域网内中间人攻击
- 流量篡改
- 断网或劫持
对于流量分析来说,识别 ARP 异常也很重要,比如:
- 同一个 IP 对应多个不同 MAC
- 某主机频繁发送 ARP 响应
- 网关的 ARP 映射突然变化
0x06 WLAN、无线接入与 AP
1. WLAN 是什么
WLAN 可以理解为无线局域网,最常见的实现就是 Wi-Fi。它本质上仍然是局域网接入的一种方式,只是链路层不再通过网线和交换机,而是通过无线信道和接入点通信。
在有线网络里,你可以把线插进交换机;在无线网络里,终端通常通过 AP,也就是 Access Point,接入网络。
所以 AP 的角色可以简单理解为:无线终端和局域网/上层网络之间的桥梁。
2. 无线连接历程

- 发现附近无线网络
- 选择 SSID
- 认证与关联
- 密钥协商
- 获得链路接入
- 再通过 DHCP 获取 IP、网关、DNS
即使是无线网络,真正完成“接入互联网”也仍然离不开前面讲的那些基础:链路层接入、IP 配置、路由、DNS、TCP/UDP 等。
3. 无线网络和抓包
如果你在做无线相关分析,会遇到更复杂的二层/管理帧问题。如果有兴趣可以自行了解,这里只做提及。
- 无线网络有自己的一套链路层机制
- AP、SSID、认证、关联这些都是无线接入中的基础概念
- 无线接入之后,后续 IP、DNS、HTTP 等问题和有线网络并没有本质不同
无线环境下,抓到的未必只是普通数据帧,还可能包含 Beacon、Probe、Authentication、Association 等管理帧;因此无线抓包和有线抓包在观察对象上并不完全等价。
0x07 三层
如果说二层解决的是“当前链路上的这一跳”,那么三层,也就是 网络层,解决的就是“跨网络之后最终去哪”。
0x08 IPv4
IPv4 使用 32 位地址,通常写成点分十进制,例如:
192.168.1.10
IPv4 地址由 网络部分 + 主机部分组成,通过子网掩码进行划分。
例如:
IP: 192.168.1.10
Mask: 255.255.255.0
表示:
- 网络:
192.168.1.0/24 - 主机:
10
IPv4 的核心作用是实现:
- 逻辑寻址
- 网络分层
- 路由转发
- 路由聚合
这也是互联网能够进行大规模路由的基础。
1. 特殊地址与私有地址
IPv4 中有一些具有特殊用途的地址:
| 地址 | 作用 |
|---|---|
127.0.0.1 |
回环地址(本机) |
0.0.0.0 |
未指定地址 |
255.255.255.255 |
本地广播 |
169.254.0.0/16 |
链路本地地址(APIPA) |
还有三段 RFC1918 私有地址,只在内网使用:
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
此外,还有两点可以了解一下
网络地址 192.168.1.0
可用主机 192.168.1.1 - 192.168.1.254
广播地址 192.168.1.255
这些地址在以下场景中非常常见:
- SSRF 内网探测
- 内网横向移动
- ACL / WAF 绕过
- 抓包分析
- 云环境元数据访问
tips:在云环境中,还经常会遇到
169.254.169.254这样的元数据服务地址。
2. 子网掩码与 CIDR
IPv4 网络通过 **子网掩码(Subnet Mask)**划分网络与主机部分。
例如:
IP: 192.168.1.10
Mask: 255.255.255.0
掩码 255.255.255.0 的二进制为:
11111111.11111111.11111111.00000000
前 24 位表示网络部分,因此也可以写成:
192.168.1.10/24
这种表示方式称为 CIDR(Classless Inter-Domain Routing)。
常见 CIDR:
| CIDR | 掩码 |
|---|---|
/8 |
255.0.0.0 |
/16 |
255.255.0.0 |
/24 |
255.255.255.0 |
3. 实例:判断是否同一网段
例如两个地址:
192.168.1.10/24
192.168.1.25/24
计算网络地址:
192.168.1.10 & 255.255.255.0 = 192.168.1.0
192.168.1.25 & 255.255.255.0 = 192.168.1.0
因此它们 在同一网段,可以直接通信。
而如果是:
192.168.1.10/24
192.168.2.10/24
网络地址:
192.168.1.0
192.168.2.0
则 不在同一网段,需要通过网关转发。
0x09 IPv6
IPv6 通常被简单概括为“地址空间更大”,但在实际网络和安全场景中,它的变化远不止这一点。
IPv6 使用 128 位地址,常见表示形式为十六进制,例如:
2001:db8::1
tips:IPv6 地址允许省略前导 0,并使用 :: 压缩连续的 0,但同一个地址中 :: 只能出现一次。
在 DNS 中,IPv6 地址通过 AAAA 记录解析。
IPv6 中也存在一些常见的特殊地址和地址范围:
::1:回环地址(IPv6 loopback)fe80::/10:链路本地地址(Link-local)fc00::/7:ULA(Unique Local Address,类似 IPv4 私有地址)
与 IPv4 不同,IPv6 在邻居发现和网络通信上也做了一些重要变化:
- 使用 NDP(Neighbor Discovery Protocol) 代替 ARP
- 不再使用传统广播(Broadcast)
- 大量机制依赖 多播(Multicast)
在 CTF 和实际安全研究中,IPv6 的价值往往来自 被忽视的网络路径。例如:
- 许多访问控制规则只过滤 IPv4
- 部分安全设备默认只检测 IPv4 流量
- 一些应用在处理 IPv6 表示形式时存在解析问题
- IPv6 地址格式复杂,容易导致白名单或黑名单绕过
因此即使在以 IPv4 为主的环境中,IPv6 也经常成为 意外的访问入口或绕过路径。
tips:利用 IPv6 链路本地地址 (fe80:: ) 进行绕过过滤器的横向移动
0x0A 路由表

主机发一个 IP 包之前,通常不是立刻开始 ARP,而是先查自己的 路由表。
路由表决定了:
- 哪些网段是直连的
- 哪些流量需要交给网关
- 应该走哪个网卡
- 找不到时是否走默认路由
顺序一般是:
- 目标是一个 IP
- 先查路由表
- 决定下一跳
- 再 ARP 找下一跳的 MAC
- 最后发帧出去
以下问题你在细致学习了路由表可能就会理解:
- 为什么访问外网时发给的是网关 MAC
- 为什么同一个目标在不同机器上走不同路径
- 为什么 VPN 一开,很多流量突然走另一张表
- 为什么 Docker、虚拟机、多网卡环境很容易出现奇怪网络行为
0x0B DHCP、默认网关
一台设备刚接入网络时,它并不知道自己的网络配置,例如:
- IP 地址
- 子网掩码
- 默认网关
- DNS 服务器
如果这些信息都手动配置,在大规模网络中几乎无法管理。因此网络中通常部署 DHCP(Dynamic Host Configuration Protocol) 来自动分配这些参数。
DHCP 的作用不仅仅是分配一个 IP 地址,它还可以通过 DHCP Option 一并下发多种网络配置,例如:
- IP 地址(Option 50)
- 子网掩码(Option 1)
- 默认网关(Option 3)
- DNS 服务器(Option 6)
- 租约时间(Lease Time)
- 域名、NTP 等其他配置
当设备接入网络时,DHCP 通常会经历 DORA 四步过程:

- Discover
客户端刚接入网络时没有 IP,因此会向局域网发送 广播包:
DHCP Discover
Source IP: 0.0.0.0
Destination: 255.255.255.255
用于寻找 DHCP 服务器。
- Offer
DHCP 服务器收到 Discover 后,会返回一个 DHCP Offer,其中包含:
- 分配的 IP 地址
- 子网掩码
- 默认网关
- DNS
- 租约时间
- Request
客户端收到多个 Offer 时,会选择其中一个,并发送 DHCP Request 表示确认使用该地址。
- ACK
DHCP 服务器返回 DHCP ACK,租约正式生效,客户端开始使用该 IP。
默认网关的作用
DHCP 中下发的 默认网关(Default Gateway),通常是当前网络的 三层出口设备。
当主机访问 非本地网段 时,数据包会发送给默认网关,由网关负责继续转发。
例如:
主机IP 192.168.1.10
掩码 255.255.255.0
网关 192.168.1.1
当访问:
192.168.1.50 → 同网段,直接通信
8.8.8.8 → 发给默认网关 192.168.1.1
在抓包中,DHCP 通常出现在:
- 设备刚接入网络
- 网络重新获取地址
- 租约过期续租
因此 DHCP 流量常常可以帮助判断 设备上线时间、网络拓扑和网关位置。
0x0C 三层设备与网络设备
一些常见的设备
- 网卡:负责收发当前链路上的帧
- 交换机:主要在二层根据 MAC 转发
- 路由器:主要在三层根据 IP 和路由表转发
- AP:无线接入点,负责终端接入 WLAN
- 网关:在主机视角里,通常是通往其他网络的下一跳
- 防火墙:在转发基础上增加访问控制和状态判断
tips:交换机会根据收到帧的源 MAC 学习“这个 MAC 在哪个端口后面”,形成 MAC 地址表,再据此转发。
0x0D ICMP
很多人只知道 ping 使用 ICMP,因此会把 ICMP 当作“网络是否连通的检测工具”。实际上,ICMP(Internet Control Message Protocol)是 IP 协议族中的控制与错误报告协议,用于在网络通信出现问题时,让主机或路由器返回状态信息。
ICMP 报文通常由 路由器或目标主机自动生成,用于告知发送方当前网络发生了什么情况。
常见的 ICMP 类型包括:
| 类型 | 作用 |
|---|---|
| Echo Request / Echo Reply | 用于 ping,检测目标主机是否存活 |
| Destination Unreachable | 目标不可达,例如网络不可达、端口不可达 |
| Time Exceeded | TTL 超时 |
| Redirect | 路由重定向 |
| Parameter Problem | IP 报文参数错误 |
例如:
当使用 ping 发送请求时,流程实际上是:
发送方 → ICMP Echo Request → 目标主机
目标主机 → ICMP Echo Reply → 发送方
如果目标不存在或无法到达,则可能返回:
ICMP Destination Unreachable
除了 IPv4 中的 ICMP,IPv6 中还有 ICMPv6,邻居发现、路径 MTU 探测等很多机制也依赖它。
TTL 与 ICMP

ICMP 还与 路径探测工具 traceroute 密切相关。
IP 数据包在网络中转发时,每经过一台路由器都会让 TTL(Time To Live)减 1。当 TTL 变为 0 时,路由器会丢弃该数据包,并返回:
ICMP Time Exceeded
traceroute 正是利用这一机制:
- 发送 TTL=1 的数据包 → 第一跳路由器返回 ICMP Time Exceeded
- 发送 TTL=2 的数据包 → 第二跳路由器返回 ICMP
- 不断递增 TTL → 逐步发现完整路径
因此 traceroute 可以显示:
客户端 → 路由器A → 路由器B → 路由器C → 目标
tips:Windows (tracert):默认使用 ICMP Echo Request。Linux/Unix (traceroute):默认使用 UDP 高端口
CTF 相关
在抓包或网络流量分析题中,ICMP 往往提供非常关键的信息,例如:
1. 主机探测
通过 ICMP Echo Request 判断主机是否存活,抓包时会看到大量 ICMP Echo 请求。
2. 端口状态判断
当向关闭端口发送 UDP 时,目标主机通常返回:
ICMP Destination Unreachable (Port Unreachable)
这也是 UDP 扫描的依据之一。
3. 网络路径问题
如果抓包中大量出现:
ICMP Time Exceeded
可能说明:
- TTL 设置异常
- 路由环路
- traceroute 探测行为
4. 隐蔽通信
ICMP 还可能被用于:
- ICMP Tunnel
- ICMP C2
- 数据隐写
例如攻击者把数据放在 ICMP payload 中进行通信,从而绕过部分防火墙策略。
0x0E NAT
在现实网络中,大量设备使用的是 私有地址(RFC1918):
10.0.0.0/8
172.16.0.0/12
192.168.0.0/16
这些地址 不会在公网进行路由,因此内网主机无法直接在互联网被访问。
为了解决这个问题,网络边界设备通常会使用 NAT(Network Address Translation),也就是 网络地址转换。
NAT 的核心行为是:
当数据包经过边界设备时,修改 IP 地址,必要时同时修改端口。
因此 NAT 本质上是一种 地址与连接的转换机制。

一个典型的 NAT 例子
假设内网主机:
192.168.1.10
访问公网服务器:
8.8.8.8:53
经过路由器 NAT 后,数据包会变成:
Source IP: 203.0.113.5
Source Port: 45000
Destination: 8.8.8.8:53
其中:
203.0.113.5
是路由器的公网地址。
路由器会在内部维护一张 NAT 会话表:
192.168.1.10:52341 ↔ 203.0.113.5:45000
当服务器返回数据时,路由器再根据这张表把流量转回内网主机。
常见 NAT 类型
常见的 NAT 形式包括:
1. SNAT(Source NAT)
修改 源地址,通常用于内网访问公网。
2. DNAT(Destination NAT)
修改 目标地址,常用于端口映射。
例如:
公网 203.0.113.5:80
↓
内网 192.168.1.10:80
3. PAT(Port Address Translation)
同时转换地址和端口,也叫 NAPT。
这是家庭路由器最常见的模式。
NAT 在实际环境中的普遍存在
NAT 几乎存在于所有网络环境中,例如:
- 家庭路由器
- 企业网络出口
- 云服务器 VPC
- Docker 网络
- 虚拟机 NAT 网络
理解 NAT 对网络安全非常重要,因为很多网络现象都与它有关,例如:
- 为什么外网只能看到 一个公网出口地址
- 为什么 内网服务默认无法从公网访问
- 为什么需要 端口映射(Port Forwarding)
- 为什么 反弹 shell 无法直接访问内网主机
- 为什么某些服务在 容器内监听,但外部无法访问
很多网络排障问题,本质上都是 NAT 转换或端口映射配置问题。
0x0F 端口与五元组

IP 地址只能定位到一台主机,但一台主机上往往运行着多个网络服务,例如 Web 服务、数据库服务、SSH 等。如果只有 IP 地址,操作系统无法知道数据包应该交给哪个应用程序处理。
因此在传输层引入了 端口(Port) 的概念。
可以用一个简单的类比理解:
- IP 地址:一栋楼的地址
- 端口号:楼里的房间号
当数据包到达主机时,操作系统会根据 端口号 将数据交给对应的进程。
端口号是一个 16 位整数,范围为:
0 - 65535
常见服务端口
在网络排障、渗透测试和 CTF 中,记住一些常见端口非常有帮助:
| 端口 | 服务 |
|---|---|
| 20 / 21 | FTP |
| 22 | SSH |
| 23 | Telnet |
| 25 | SMTP |
| 53 | DNS |
| 67 / 68 | DHCP |
| 80 | HTTP |
| 110 | POP3 |
| 123 | NTP |
| 143 | IMAP |
| 161 | SNMP |
| 443 | HTTPS |
| 445 | SMB |
| 3306 | MySQL |
| 3389 | RDP |
| 5432 | PostgreSQL |
| 6379 | Redis |
| 8080 | 常见 Web 服务 |
但需要注意:
端口只是约定,并不是绝对规则。
任何服务都可以运行在任意端口上。例如:
HTTP → 8080
HTTP → 8000
HTTP → 5000
因此在抓包或分析流量时,不能只根据端口判断协议,还需要结合:
- 报文内容
- 协议特征
- TLS 指纹
- 流量行为
Q:端口 0是什么捏?
五元组
在网络流量分析中,一个连接通常用 五元组(Five Tuple) 来唯一标识:
源IP
源端口
目的IP
目的端口
协议
例如:
192.168.1.10:52341 → 8.8.8.8:53 UDP
完整的五元组可以写成:
192.168.1.10
52341
8.8.8.8
53
UDP
五元组的意义在于,它可以 唯一标识一条网络会话。
许多网络机制实际上都依赖五元组,例如:
- NAT 会话表
- 防火墙状态跟踪
- NetFlow / 流量统计
- Wireshark 会话重组
netstat/ss本地连接查看
例如在 NAT 中,路由器会记录类似这样的映射关系:
192.168.1.10:52341 → 203.0.113.5:45000
通过五元组,设备才能正确地将返回流量送回对应主机。
0x10 TCP
TCP(Transmission Control Protocol)是互联网中最常见的传输层协议之一,大量应用协议都运行在 TCP 之上,例如:
- HTTP / HTTPS
- SSH
- SMTP
- MySQL
- FTP
TCP 连接机制
TCP 是互联网中最常见的传输层协议,它通过 三次握手建立连接、四次挥手关闭连接,并依赖一系列标志位(如 SYN、ACK、FIN、RST、PSH)来管理连接状态。
在抓包分析中,还经常会遇到一些典型现象,例如 连接重置(RST)、TCP 重传、乱序(Out-of-Order)、MSS/MTU 协商 以及 IP 分片 等,这些都是 TCP 在真实网络环境中的正常行为或常见问题。
这些机制属于网络分析的基础知识,在流量分析、故障排查和安全研究中都非常重要,建议读者自行进一步了解其工作原理(懒得加了)。

Q:Fast Open 与 Window Scaling是什么捏?
0x11 UDP
与 TCP 不同,UDP(User Datagram Protocol)是一种 无连接的传输层协议。
UDP 在发送数据之前 不需要建立连接,也不会保证数据一定到达,因此它的协议设计非常简单:
- 不保证可靠传输
- 不保证顺序
- 不进行重传
- 没有拥塞控制
UDP 只负责把数据包发送出去,因此它的开销非常小、延迟低。
这使得 UDP 非常适合 实时性要求高的场景,例如:
- DNS 查询
- NTP 时间同步
- 实时音视频
- 在线游戏
- 流媒体传输
UDP 的报文结构也非常简单,仅包含四个字段:
Source Port
Destination Port
Length
Checksum
在抓包或流量分析中,UDP 通常表现为 一次请求对应一次响应,例如常见的 DNS 查询。
需要注意的是,由于 UDP 不维护连接状态,因此在很多网络设备中:
- 不存在 TCP 那样的会话管理
- 也不会有三次握手或连接关闭过程
在安全研究中,UDP 也经常出现在以下场景:
- DNS 流量分析
- UDP 扫描
- 放大攻击(Amplification Attack)
- QUIC / HTTP3 等新协议
tips:UDP 协议本身不建立像 TCP 那样的连接状态,但网络设备或应用程序仍可能基于五元组维护短时会话状态。
0x12 应用层协议、外围情报与流量特征
DNS
人类习惯记域名,网络层只认 IP。所以访问网站时,通常要先经过 DNS。

常见记录类型
最基础的这些建议记住:
- A:IPv4 地址
- AAAA:IPv6 地址
- CNAME:别名
- MX:邮件服务器
- NS:权威 DNS
- TXT:文本记录
UDP DNS、TCP DNS 与 DoH
传统 DNS 查询通常走 UDP 53,因为请求短、开销小。但 DNS 也可以走 TCP,比如响应太大或区域传送时。
现代网络里还很值得提的是 DoH,也就是 DNS over HTTPS。它把 DNS 查询放进 HTTPS 中,使传统基于端口 53 的检测变得不那么充分。
DNS 分区解析
现实中,同一个域名可能对不同来源返回不同结果。这叫分区解析,也常叫 split-horizon DNS。
它可能按:
- 内外网
- 地域
- 运营商
- 业务环境
返回不同记录。
这对实战和 CTF 都很有意义。因为同一个域名在你的环境和目标环境里不一定长得一样。
DNS 欺骗与 DNS 隧道
DNS 很常被用于攻击和隐蔽通信。
DNS 欺骗可能让受害者把域名解析到错误 IP。DNS 隧道则可以把数据编码到查询名里,通过大量 DNS 请求响应传递信息。
抓包中看到以下特征时应提高警惕:
- 超长、随机的子域名
- 高频 DNS 请求
- 大量 TXT 记录
- 异常活跃的 53 端口流量
Q:DNS Rebinding是什么捏
域名、Whois、证书透明度
网络分析和信息收集并不只看包本身,外围信息也很重要。
Whois
Whois 可以查询域名注册相关信息,例如:
- 注册商
- 创建时间
- 到期时间
- Name Server
- 部分组织信息
现代域名注册信息很多已因隐私和注册政策变化而变得不完整,因此 Whois 的信息价值不如早年稳定,但仍可作为基础线索之一。
证书与 CT 日志
TLS 证书里常常包含:
- 颁发者
- 有效期
- 指纹
- SAN 域名列表
而现代公开证书会被记录到 CT(Certificate Transparency) 日志中。这使得 CT 日志成了一个很强的子域情报来源。
也就是说,子域枚举不一定只能爆破,很多时候可以直接从 CT 里捞到。
HTTP、HTTPS、TLS
HTTP
HTTP 是明文应用层协议。在抓包中如果没有加密,你可以直接看到:
- 方法
- 路径
- Host
- Cookie
- User-Agent
- 表单内容
- 返回内容
这也是很多经典 CTF 流量题直接藏 flag 的地方。
HTTPS 与 TLS
HTTPS 本质是 HTTP over TLS。HTTP 内容被放在 TLS 之内,不能直接看明文,但 TLS 握手阶段仍可能泄露很多信息。
tips:现在TLS 1.3是主要的,不过已经有ECH这种连SNI一起加密的噢~
Host 与 SNI
同一个 IP 可以承载多个站点。HTTP 通过 Host 区分站点,HTTPS 里 TLS 握手阶段常借助 SNI 指出目标域名。
所以在流量分析中,即使内容加密了,往往仍能看到访问的域名或至少看到相关线索。
证书体系、吊销与“现代 HTTPS”基础
今天说 SSL,很多时候实际上是在说 TLS。理解现代证书体系,至少应该知道:
- 客户端信任根证书
- 根证书签发中间证书
- 中间证书签发站点证书
- 客户端验证证书链、域名、有效期和用途
此外,还存在吊销机制,比如:
- CRL
- OCSP
在基础场景里,不需要把证书体系讲到非常底层,但至少要让读者明白:HTTPS 不是“加密一下就完了”,而是一整套身份信任体系。
流量指纹
现代网络越来越多地使用加密,但这并不意味着流量分析失去价值。相反,分析重点从“看明文”转向了“看特征”。
TCP 指纹
不同系统和工具生成 TCP 包时会有细微差异,比如:
- 初始 TTL
- 窗口大小
- MSS
- TCP options 顺序
TLS 指纹
TLS ClientHello 中的版本、扩展、套件组合也能构成指纹,例如 JA (已经到JA4了呜呜呜)一类思路。这有助于判断流量更像:
- 正常浏览器
- 某个脚本库
- 自动化工具
- 恶意样本
网页特征与行为特征
即使不看内容,很多网页流量也有很强的行为特征:
- 请求资源顺序
- 常见静态路径
- User-Agent 风格
- Cookie 模式
- API 请求节奏
- WebSocket 长连接
代理、反向代理、VPN、隧道与 IPsec
现实中的客户端和服务器,很少是“直接裸连”的。中间往往夹着很多层。
本地代理与正向代理
本地代理常用于抓包、调试、转发。正向代理则代表客户端去访问外部资源,客户端明确知道代理存在。
反向代理
反向代理代表服务器接收请求。Nginx、CDN、负载均衡都属于常见反向代理场景。这意味着你看到的前端机器不一定是真实后端。
VPN 与隧道
VPN 的核心是在公共网络上建立逻辑上的专用通道。它会影响:
- 路由
- 出口 IP
- DNS
- 网络可见性
隧道则是更宽泛的概念,把一种协议包进另一种通道里传输。DNS 隧道、SSH 隧道、HTTP 隧道等都属于这个范畴。
IPsec
IPsec 是网络层安全协议族,常用于 VPN。知道它的存在就足以帮助建立“网络层也能加密保护”的意识。
0x13 扩展视野
QUIC
现代网络里,一个越来越重要的协议是 QUIC。它运行在 UDP 之上,却实现了很多传统上由 TCP + TLS 共同提供的能力。HTTP/3 就基于 QUIC。
这意味着一个分析观念必须更新:
看到 UDP,不代表它只是简单小报文。
有时候你看到的可能是:
- 浏览器与网站的现代加密通信
- 更快的握手
- 多路复用
- 新一代 Web 流量
对 CTF 来说,知道 QUIC 的存在至少能帮助你避免用过时的直觉误判流量。
AS 与 BGP
互联网由许多自治系统构成,每个自治系统有 ASN。自治系统之间交换路由信息主要依赖 BGP。这说明互联网并不是一个单中心控制的大网,而是很多网络彼此连接形成的体系。
ISIS / OSPF
这些更多是自治系统内部的路由协议。
工控协议
除了 Web、DNS、邮件、SSH 这些大众协议,现实网络中还有大量行业协议。比如工控领域常见的 Modbus。
0x14 结语
网络基础是为了在看到真实流量时,知道数据到底在做什么。
你需要明白:
- 二层在解决本地链路上的投递
- 三层在解决跨网络寻址
- 四层在解决服务定位和传输机制
- 应用层在承载具体业务
- 无线接入并没有绕过这些层,而只是换了一种接入方式
- 域名、证书、Whois、CT 日志会泄露外围情报
- 代理、CDN、VPN、隧道、NAT 会改变你看到的表象
- 加密并没有让分析失效,只是把重点从“内容”转向“特征”
当这些东西真正串起来以后,你再看一份流量,就不会只看到一堆十六进制和缩写。你会知道:
它从哪个链路出去,为什么发给这个 MAC,为什么要先问 DNS,为什么走这个网关,为什么建立这个端口的 TCP 连接,为什么虽然是 HTTPS 但仍能看出域名,为什么证书会暴露子域,为什么这个 UDP 看起来像现代浏览器,为什么这个流量很像代理、很像隧道、很像中间人。
这才是网络基础最有价值的地方。它不是一堆零散名词,而是一张解释现实通信行为的地图。
文中部分图片来自网络,部分为自行绘制或 AI 生成,仅作学习交流使用;如有疏漏或侵权问题,请联系处理。