渗透测试视角:TCP/IP 协议栈核心知识
🔥与OSI的区别:OSI是理论模型(7层),TCP/IP是实际应用模型(4层)。渗透测试中,99%的网络攻击发生在TCP/IP的应用层和传输层,而内网横向移动则高度依赖网络层和网络接口层。
一、TCP/IP 四层模型总览
| 层级 | 对应OSI层 | 核心协议 | 渗透测试关注度 |
|---|---|---|---|
| 4. 应用层 | L7+L6+L5 | HTTP, HTTPS, DNS, FTP, SSH, SMB, SMTP | ⭐⭐⭐⭐⭐ (最密集) |
| 3. 传输层 | L4 | TCP, UDP | ⭐⭐⭐⭐⭐ (端口扫描) |
| 2. 网络层 | L3 | IP, ICMP, ARP* | ⭐⭐⭐⭐ (路由探测) |
| 1. 网络接口层 | L2+L1 | Ethernet, PPP, Wi-Fi | ⭐⭐⭐ (内网横向) |
*注:ARP协议严格属于链路层,但在渗透中常与IP层配合讨论。
二、各层核心协议与攻击点(必知必会)
第4层:应用层(Application Layer)
核心任务:数据格式与用户交互。攻击者主要在这里寻找“业务逻辑”和“输入输出”漏洞。
| 协议 | 端口 | 典型用途 | 渗透测试高频攻击手法 |
|---|---|---|---|
| HTTP | 80 | 明文网页传输 | SQL注入、XSS、文件上传、路径遍历、敏感信息泄露 |
| HTTPS | 443 | 加密网页传输 | SSL/TLS降级攻击、证书伪造中间人、混入不安全对象 |
| DNS | 53(UDP/TCP) | 域名解析 | DNS劫持、DNS隧道(C2通信)、区域传输泄露 |
| SMB | 445 | Windows文件共享 | 永恒之蓝、SMB中继、NTLM哈希抓取(Responder) |
| LDAP | 389/636 | 目录服务查询 | 域控信息泄露、未授权LDAP注入 |
| RDP | 3389 | 远程桌面 | 暴力破解、BlueKeep漏洞、会话劫持 |
第3层:传输层(Transport Layer)
核心任务:端到端通信,端口寻址。攻击者在这里做“踩点”和“绕过”。
🔥 必须熟记:TCP头部标志位(Flags)
渗透中经常手动构造包,必须认识这 6 个标志位:
- SYN:发起连接(扫描常用)
- ACK:确认收到数据
- FIN:正常关闭连接
- RST:强制重置连接(用于切断会话)
- PSH:立即推送数据(不缓存)
- URG:紧急指针
两大协议对比:
| 特性 | TCP(可靠) | UDP(不可靠) |
|---|---|---|
| 连接方式 | 面向连接(三次握手) | 无连接 |
| 传输效率 | 慢,有重传机制 | 快,无重传 |
| 典型服务 | HTTP, SSH, SQL, SMB | DNS, SNMP, DHCP, NTP |
| 攻击偏好 | SYN Flood耗尽资源 | 放大反射攻击(如Memcached反射) |
📌 三次握手与渗透绕过的关系
- 正常流程:
SYN→SYN-ACK→ACK - 绕过技巧:使用
SYN扫描(半开扫描,nmap -sS)只发第一个包,不完成三次握手,规避某些应用日志记录。 - DDOS思路:发送大量
SYN但不响应SYN-ACK,耗尽服务端连接队列。
第2层:网络层(Network Layer)
核心任务:IP寻址与路由转发。攻击者在这里做“网络隐身”和“拓扑探测”。
| 协议/概念 | 作用 | 渗透测试利用点 |
|---|---|---|
| IP协议 | 定义源IP和目标IP | IP欺骗(伪造源IP绕过简单ACL)、分片攻击(绕过IDS检测) |
| ICMP | 网络探测与错误报告(Ping, Tracert) | Ping扫活(nmap -sn)、ICMP隧道(隐蔽C2通道)、Smurf放大攻击 |
| TTL(生存时间) | 防止数据包无限循环 | 操作系统识别(初始TTL值:Windows=128, Linux=64) |
| 路由表 | 决定数据包下一跳 | 通过route print查看网段划分,判断是否存在多网卡(跳板机特征) |
第1层:网络接口层(Network Interface Layer)
核心任务:MAC地址寻址与物理帧传输。攻击者在这里做“内网欺骗”。
| 协议 | 作用 | 渗透测试大杀器 |
|---|---|---|
| ARP | 将IP解析为MAC地址 | ARP欺骗/投毒(中间人攻击,截获内网流量) |
| MAC地址 | 硬件唯一标识 | MAC泛洪(CAM表溢出,使交换机降级为Hub) |
🚀 内网渗透中,拿到一台主机后,第一件事就是开启ARP欺骗(使用Ettercap或BetterCAP)收集内网哈希。
三、渗透测试员必备:IP地址与子网划分
| 概念 | 核心要点 | 实战意义 |
|---|---|---|
| 公网IP | 全球唯一,互联网可达 | 扫描公网资产时使用 |
| 私网IP | A类(10.0.0.0/8), B类(172.16.0.0/12), C类(192.168.0.0/16) | 识别内网环境,判断是否在NAT后 |
| 子网掩码 | 区分网络位和主机位 | 计算网段范围,用于设置扫描范围(nmap 192.168.1.0/24) |
| 网关 | 出口路由器的IP | 获取网关IP后,重点对网关设备进行弱口令爆破 |
四、常用端口速查(渗透测试“字典”)
看到端口就能联想到服务和潜在漏洞,是渗透的基本功。
| 端口 | 服务 | 常见漏洞/攻击 | 端口 | 服务 | 常见漏洞/攻击 |
|---|---|---|---|---|---|
| 21 | FTP | 匿名登录、爆破 | 1433 | SQL Server | 弱口令、xp_cmdshell |
| 22 | SSH | 弱口令爆破 | 3306 | MySQL | UDF提权、注入 |
| 23 | Telnet | 明文嗅探 | 3389 | RDP | 爆破、BlueKeep |
| 25 | SMTP | 邮件欺骗、中继 | 6379 | Redis | 未授权访问、写SSH公钥 |
| 80/443 | Web | 注入、XSS、RCE | 27017 | MongoDB | 未授权访问 |
| 445 | SMB | 永恒之蓝、中继 | 53 | DNS | 区域传输、隧道 |
五、数据封装(Data Encapsulation)—— 打穿防火墙的理解基础
渗透测试中“绕过”的本质,就是利用封装与解封装的差异。
| 步骤 | 数据名称 | 操作 | 对应层 |
|---|---|---|---|
| 1 | 用户数据 | 浏览器/APP生成请求 | 应用层 |
| 2 | 数据段 (Segment) | 添加TCP/UDP 头部(含端口) | 传输层 |
| 3 | 数据包 (Packet) | 添加IP 头部(含IP地址) | 网络层 |
| 4 | 数据帧 (Frame) | 添加MAC 头部(含MAC地址) | 网络接口层 |
| 5 | 比特流 (Bits) | 转成电信号/光信号发送 | 物理层 |
💡绕WAF思路:有些WAF只检查第7层(应用层),我们可以利用IP分片(第3层),将恶意载荷分片传输,到达目标服务器后再重组,从而绕过检测。
📌 记忆捷径:一层对应一个“杀手锏”
| 层级 | 一句话记忆 | 渗透必做动作 |
|---|---|---|
| 应用层 | 打Web和数据库 | 抓包改参数,测注入与上传 |
| 传输层 | 扫端口看服务 | 必敲nmap -sS -sV -p- 目标 |
| 网络层 | 查路由探存活 | 必敲ping,tracert,判断网络架构 |
| 接口层 | 骗ARP当中间人 | 进内网必开Responder抓哈希 |