网络流量基础:TCP/IP协议栈回顾、HTTP/HTTPS协议基础、DNS协议基础

做网络行为分析,说白了就是跟流量打交道。你连流量长什么样都不清楚,那后面分析C2通信就无从谈起。这一节我带大家快速过一遍TCP/IP协议栈、HTTP/HTTPS和DNS这三个最基础的东西。嗯,都是老生常谈的内容,但我会结合实战中的坑来讲。

TCP/IP协议栈:四层模型与数据封装

我个人习惯把TCP/IP协议栈分成四层来看:应用层、传输层、网络层、网络接口层。每一层各司其职,数据在发送端从上往下层层封装,在接收端从下往上层层解封装。

核心要点:数据封装过程就是每一层给上层数据加上自己的头部信息。应用层数据 → 传输层加TCP/UDP头 → 网络层加IP头 → 网络接口层加帧头和帧尾。

我在分析恶意流量时,经常需要逐层拆包。举个例子,有一次我追踪一个远控木马,它在TCP载荷里藏了加密的C2指令。如果不理解TCP头里的序列号和确认号,你根本不知道哪些包属于同一会话。

这里我画了一张图,帮你把四层模型和数据封装的关系理清楚:

TCP/IP 四层模型与数据封装过程 应用层 HTTP / DNS / FTP 数据 数据 传输层 TCP 头(源端口、目的端口、序列号) 数据段 网络层 IP 头(源IP、目的IP、协议号) 数据包 网络接口层 帧头(MAC地址) + 数据 + 帧尾 数据帧 封装方向:应用层 → 传输层 → 网络层 → 网络接口层(发送端) 解封装方向:网络接口层 → 网络层 → 传输层 → 应用层(接收端)

HTTP/HTTPS协议基础

HTTP协议,你每天都在用。但作为安全分析人员,你得看到它背后的东西。HTTP是明文传输的,请求和响应都有固定的格式。

HTTP请求结构

一个典型的HTTP请求包含三部分:请求行、请求头、请求体。我截取一个真实C2通信中的HTTP请求给你们看看:

POST /api/checkin HTTP/1.1
Host: 192.168.1.100:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Content-Type: application/x-www-form-urlencoded
Content-Length: 48

id=beacon_001&key=3a5f8c2d1e4b7a9f0c6d3e8b2a1f4c7d

注意看User-Agent和请求体里的参数。很多C2框架会伪造User-Agent,但伪造得不够彻底。我曾经分析过一个样本,它的User-Agent写的是Chrome,但实际请求频率和正常浏览器完全不一样——每5秒发一次心跳包,这明显不对劲。

HTTPS与TLS握手

HTTPS就是在HTTP外面套了一层TLS加密。你想想看,如果C2通信走HTTPS,那流量内容就全加密了,我们怎么分析?

其实还是有办法的。TLS握手阶段有几个关键信息是明文的:

  • Server Name Indication (SNI):客户端告诉服务器它要访问哪个域名,这个字段是明文的
  • 证书信息:服务器返回的证书,包括颁发者、有效期、公钥等
  • TLS版本和密码套件:双方协商的加密参数

实战技巧:我在追踪一个APT组织时,发现它们的C2服务器使用了自签名证书,而且证书里的Common Name写的是一个随机字符串。正常业务很少这么干,这就是一个很强的检测特征。

DNS协议基础

DNS协议,说白了就是域名到IP地址的翻译服务。但它在C2通信中扮演的角色远不止于此。

DNS查询类型

查询类型 作用 C2场景
A记录 域名 → IPv4地址 最常用,C2域名解析到服务器IP
AAAA记录 域名 → IPv6地址 部分C2使用IPv6逃避检测
TXT记录 存储文本信息 曾见过C2用TXT记录下发加密指令
CNAME记录 域名别名 C2使用CDN或跳板域名时常见

DNS协议本身是UDP传输,端口53。但你知道吗?有些C2框架会利用DNS隧道来传输数据。它们把数据编码到DNS查询的域名里,或者藏在TXT记录的响应里。

注意:DNS隧道流量有几个特征:查询频率异常高、域名长度异常长(超过30个字符)、子域名层级多(超过5级)。我遇到过最夸张的一个案例,一个域名有12级子域名,每级都是Base32编码的字符。这种流量在正常网络里几乎不会出现。

协议特征与C2检测的关联

好了,上面讲了三个协议的基础。现在我把它们串起来,说说怎么用这些知识做C2检测。

我个人总结了一个简单的判断框架:

  1. 看流量行为:C2通信通常有规律的心跳包,比如每60秒一次。正常用户不会这么规律地访问同一个URL。
  2. 看协议异常:比如HTTP请求头顺序不对、User-Agent和实际操作系统不匹配、TLS证书自签名且有效期异常长。
  3. 看DNS异常:大量解析失败的域名查询、域名长度异常、查询时间集中在非工作时间。

一句话总结:TCP/IP协议栈是流量的骨架,HTTP/HTTPS是C2最常用的伪装外衣,DNS是C2的备用通道和隐蔽隧道。把这三个协议吃透了,你就能看懂大部分C2通信的底层逻辑。