本文所有内容仅用于网络安全合规学习、渗透测试面试备考、企业授权安全检测。文中涉及的协议原理、安全缺陷、风险分析内容,仅用于安全防御研究与网络安全认知提升。严禁用于未授权测试、非法入侵、网络攻击等违规违法行为,一切违规使用后果由使用者自行承担。
1. 网络层协议
1.1 IP 协议(Internet Protocol)
基础知识
IP 协议是网络层的核心协议,负责将数据包从源地址路由到目标地址,本身不保证可靠传输(无连接、无状态)。
IPv4 头部结构(20字节固定头):

各字段含义(渗透视角重点):
| 字段 | 长度 | 含义 | 渗透利用点 |
|---|---|---|---|
| TTL(Time to Live) | 8bit | 每经过一个路由器减1,为0时丢包 | 通过TTL值推断目标OS(Windows初始128,Linux初始64) |
| Protocol | 8bit | 上层协议(1=ICMP, 6=TCP, 17=UDP) | 协议隧道构造依据 |
| Source Address | 32bit | 源IP(可伪造!) | IP欺骗、DDoS反射攻击的基础 |
| Flags/Fragment Offset | --- | IP分片控制 | 分片绕过IDS/IPS检测 |
| Identification | 16bit | 分片重组标识 | 空闲扫描(Idle Scan)依赖IPID自增特性 |
IPv4 vs IPv6 关键差异:
| 特性 | IPv4 | IPv6 |
|---|---|---|
| 地址长度 | 32位 | 128位 |
| 头部大小 | 20字节(可变) | 40字节(固定) |
| 校验和 | 有 | 无(由上层协议负责) |
| NAT 依赖 | 是 | 否 |
| ARP | 使用 ARP | 使用 NDP(邻居发现协议) |
CIDR 子网划分速记:
| CIDR | 子网掩码 | 可用主机数 |
|---|---|---|
| /24 | 255.255.255.0 | 254 |
| /25 | 255.255.255.128 | 126 |
| /16 | 255.255.0.0 | 65534 |
| /8 | 255.0.0.0 | 16777214 |
1.2 ICMP 协议(Internet Control Message Protocol)
基础知识
ICMP 用于传递控制消息和错误报告,封装在 IP 数据包内(Protocol=1)。
重要报文类型:
| Type | Code | 含义 |
|---|---|---|
| 0 | 0 | Echo Reply(ping 回复) |
| 3 | 0-15 | Destination Unreachable(目标不可达) |
| 3 | 3 | Port Unreachable(端口不可达,UDP扫描依赖此返回) |
| 5 | 0-3 | Redirect(重定向) |
| 8 | 0 | Echo Request(ping 请求) |
| 11 | 0 | Time Exceeded(TTL超时,traceroute依赖此) |
ICMP 数据包结构

2. 传输层协议
2.1 TCP 协议(Transmission Control Protocol)
基础知识
TCP 是面向连接、可靠传输的协议,提供流量控制、拥塞控制、顺序保证。
TCP 头部结构(20字节固定头):

标志位(Flags)详解:
| 标志 | 名称 | 含义 | 渗透利用 |
|---|---|---|---|
| SYN | Synchronize | 建立连接,携带初始序列号 ISN | SYN Flood、端口扫描 |
| ACK | Acknowledge | 确认收到数据 | 半开连接检测 |
| FIN | Finish | 正常关闭连接 | FIN Scan 穿透无状态防火墙 |
| RST | Reset | 强制终止连接 | 连接重置、端口关闭标志 |
| PSH | Push | 立即将数据推送给应用层 | --- |
| URG | Urgent | 紧急数据指针有效 | 某些IDS绕过技巧 |
三次握手:
- 客户端发送SYN包(请求连接);2. 服务端返回SYN+ACK包(同意连接);3. 客户端发送ACK包(确认连接),连接建立。
核心疑问:为什么不能两次握手?防止失效的连接请求占用服务端资源,避免资源浪费。
四次挥手:
- 客户端发送FIN包(请求断开);2. 服务端返回ACK包(确认断开请求,继续传输剩余数据);3. 服务端传输完成,发送FIN包(告知客户端可断开);4. 客户端返回ACK包,连接彻底断开。
2.2 UDP 协议(User Datagram Protocol)
基础知识
UDP 是无连接、不可靠的传输协议,没有握手、重传、流量控制,开销极低。
UDP 头部结构(仅 8 字节): 

使用 UDP 的常见协议:
| 协议 | 端口 | 备注 |
|---|---|---|
| DNS | 53 | 查询用UDP,区域传输用TCP |
| DHCP | 67/68 | 地址分配 |
| SNMP | 161/162 | 网络管理 |
| TFTP | 69 | 简单文件传输 |
| NTP | 123 | 时间同步 |
| Syslog | 514 | 日志 |
| RTP | 动态 | 实时音视频 |
3. 应用层协议
3.1 HTTP / HTTPS
基础知识
HTTP(HyperText Transfer Protocol)是 Web 通信的基础.
端口:HTTP 80(明文)、HTTPS 443(加密)
传输层:均基于TCP协议
核心区别:HTTP明文传输,所有数据可直接抓包窃取;HTTPS=HTTP+TLS/SSL加密,传输数据加密,防中间人窃听、篡改。
核心版本差异
HTTP1.0:短连接,一次请求一次连接,请求完成立即断开,效率极低;
HTTP1.1:默认长连接(Keep-Alive),支持管线化请求,新增Host请求头,支持断点续传,是目前主流版本;
HTTP2.0:基于HTTPS,支持多路复用、二进制帧传输、头部压缩,解决1.1的队头阻塞问题;
HTTP3.0:基于QUIC协议(UDP),无需三次握手,极速连接,抗网络延迟。
HTTP 方法详解:
| 方法 | 含义 | 渗透意义 |
|---|---|---|
| GET | 获取资源 | 参数在 URL 中,易被日志记录 |
| POST | 提交数据 | 参数在 body 中 |
| PUT | 上传/更新资源 | 若未鉴权,可上传 webshell |
| DELETE | 删除资源 | 若未鉴权,可删除文件 |
| OPTIONS | 查询支持的方法 | 信息收集,发现危险方法 |
| TRACE | 调试回显请求 | XST(Cross-Site Tracing)攻击 |
| PATCH | 部分更新资源 | --- |
| HEAD | 只获取响应头 | 探测资源是否存在 |
重要 HTTP 状态码:
| 状态码 | 含义 | 渗透意义 |
|---|---|---|
| 200 | OK | 请求成功 |
| 301 | Moved Permanently | 永久重定向 |
| 302 | Found | 临时重定向,开放重定向漏洞 |
| 400 | Bad Request | 请求格式错误 |
| 401 | Unauthorized | 需要认证(返回 WWW-Authenticate 头) |
| 403 | Forbidden | 无权限(已认证但无授权) |
| 404 | Not Found | 资源不存在 |
| 405 | Method Not Allowed | 方法不被允许 |
| 500 | Internal Server Error | 服务端错误,可能泄露堆栈信息 |
| 502 | Bad Gateway | 反向代理错误 |
关键 HTTP 请求头:
| 头部 | 含义 | 渗透意义 |
|---|---|---|
| Host | 目标主机名 | Host 头注入(缓存投毒、密码重置链接劫持) |
| Cookie | 会话标识 | 会话劫持 |
| Authorization | 认证信息 | Basic/Bearer token 泄露 |
| X-Forwarded-For | 代理链中真实IP | 伪造 IP 绕过 IP 白名单 |
| Referer | 来源页面 | CSRF 防御绕过,信息泄露 |
| User-Agent | 客户端信息 | XSS via User-Agent,指纹欺骗 |
| Content-Type | 请求体格式 | 修改为 text/xml 触发 XXE |
| Transfer-Encoding | 传输编码 | HTTP 请求走私的核心 |
Cookie 安全属性:
| 属性 | 含义 | 缺失的风险 |
|---|---|---|
| HttpOnly | 禁止 JS 读取 | 缺失则 XSS 可窃取 Cookie |
| Secure | 仅 HTTPS 传输 | 缺失则明文网络可嗅探 |
| SameSite=Strict | 跨站请求不携带 | 缺失或 Lax 则存在 CSRF 风险 |
| Domain | 作用域 | 设置过宽可能跨子域泄露 |
| Expires/Max-Age | 有效期 | Session Cookie 应无 Expires |
TLS/HTTPS 握手流程
TLS 1.2 握手:
Client Server
| |
|------- ClientHello(支持的密码套件,随机数) -->|
|<------ ServerHello(选定密码套件,随机数) ----|
|<------ Certificate(服务器证书) ------------|
|<------ ServerKeyExchange(DH参数,可选)------|
|<------ ServerHelloDone ----------------------|
| |
| 验证证书(CA链 + 域名 + 有效期) |
| |
|------- ClientKeyExchange(预主密钥) -------->|
|------- ChangeCipherSpec ---------------------->|
|------- Finished(握手摘要) ----------------->|
|<------ ChangeCipherSpec ----------------------|
|<------ Finished --------------------------------|
| |
|============ 加密通信开始 =====================|
TLS 1.3 改进:
- 握手从 2-RTT 缩减到 1-RTT(0-RTT 重连)
- 强制前向保密(DHE/ECDHE)
- 移除不安全算法(RC4, DES, MD5, SHA-1, RSA 密钥交换)
- 加密更多握手内容
3.2 DNS(Domain Name System)
基础知识
DNS 将域名解析为 IP 地址,默认使用 UDP 53 端口(查询),当响应超过 512 字节时切换到 TCP 53;区域传输(AXFR)固定使用 TCP 53。
DNS 解析流程(递归 + 迭代):
客户端
│
│─── 递归查询 ──→ 本地 DNS 服务器(Recursive Resolver)
│ │
│ │─── 迭代查询 ──→ 根服务器(Root, ".")
│ │ ← 返回 .com TLD 服务器地址
│ │
│ │─── 迭代查询 ──→ TLD 服务器(.com)
│ │ ← 返回 example.com 权威服务器地址
│ │
│ │─── 迭代查询 ──→ 权威服务器(example.com)
│ │ ← 返回 A 记录(IP 地址)
│ │
│ ←─── 最终结果 ─────────┘
│ 缓存 TTL 时间内不再查询
DNS 记录类型:
| 记录类型 | 含义 | 渗透意义 |
|---|---|---|
| A | 域名 → IPv4 | 最基础的记录 |
| AAAA | 域名 → IPv6 | IPv6 资产发现 |
| CNAME | 域名别名 | 子域名劫持的基础(悬空 CNAME) |
| MX | 邮件服务器 | 发现邮件基础设施 |
| TXT | 文本记录 | SPF/DKIM/DMARC 配置,可能泄露敏感信息 |
| NS | 权威名称服务器 | 目标使用的 DNS 服务商信息 |
| PTR | IP → 域名(反向解析) | 资产发现 |
| SOA | 区域授权信息 | 包含管理员邮箱、序列号等 |
| SRV | 服务位置记录 | 发现服务(如 _ldap._tcp, _kerberos._tcp) |
DNS 数据包结构(重要字段):
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
| ID | ← 事务ID(16位),响应与查询ID匹配
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
|QR| Opcode |AA|TC|RD|RA| Z | RCODE |
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
- ID:16位随机事务ID,DNS 缓存投毒的攻击面
- QR:0=查询,1=响应
- AA:权威回答标志
- RD:期望递归标志
3.3 SMB(Server Message Block)
基础知识
SMB 是 Windows 文件共享和网络通信的核心协议。
端口:
- 445/TCP:直接通过 TCP/IP 运行 SMB(现代 Windows 默认)
- 139/TCP:通过 NetBIOS 会话服务运行 SMB(旧版兼容)
- 137/UDP、138/UDP:NetBIOS 名称服务和数据报服务
SMB 版本对照:
| 版本 | 系统 | 安全性 | 特性 |
|---|---|---|---|
| SMBv1 | Windows XP/2003 | 极危险(已废弃) | 无加密,无签名要求,EternalBlue漏洞 |
| SMBv2 | Windows Vista/2008 | 中等 | 引入签名、加密协商 |
| SMBv2.1 | Windows 7/2008R2 | 中等 | 支持大型 MTU |
| SMBv3 | Windows 8/2012 | 较好 | 端到端加密,预身份验证完整性 |
| SMBv3.1.1 | Windows 10/2016 | 最好 | 强制预身份验证哈希 |
3.4 LDAP(Lightweight Directory Access Protocol)
基础知识
LDAP 是访问和维护分布式目录信息的协议,Active Directory(AD)基于 LDAP 实现。
端口:
- 389/TCP:明文 LDAP
- 636/TCP:LDAPS(LDAP over SSL)
- 3268/TCP:AD 全局目录
- 3269/TCP:AD 全局目录(SSL)
LDAP 基本操作:
| 操作 | 说明 |
|---|---|
| bind | 认证(明文或 SASL,匿名 bind 不提供凭证) |
| search | 搜索目录条目 |
| add / delete / modify | 增删改条目 |
| compare | 比较属性值 |
LDAP 搜索过滤器语法:
(attribute=value) 基本比较
(&(filter1)(filter2)) AND
(|(filter1)(filter2)) OR
(!(filter)) NOT
(attribute=*) 属性存在
(attribute>=value) 大于等于
示例:
(&(objectClass=user)(sAMAccountName=alice)) 查找 alice 用户
(&(objectClass=user)(memberOf=CN=Domain Admins,...)) 查找域管理员
3.5 Kerberos
基础知识
Kerberos 是 Active Directory 使用的默认认证协议(LDAP 用于授权),基于对称密钥加密,避免密码在网络中传输。
默认端口:88/TCP 和 88/UDP
三个角色:
| 角色 | 全称 | 职责 |
|---|---|---|
| Client | 客户端 | 发起认证请求的用户/服务 |
| KDC | Key Distribution Center | 密钥分发中心(域控制器承担此角色) |
| AS | Authentication Service | KDC 的一部分,处理初始认证 |
| TGS | Ticket Granting Service | KDC 的一部分,颁发服务票据 |
| SS | Service Server | 提供服务的目标服务器 |
Kerberos 完整认证流程:
Client KDC (AS) KDC (TGS) Service Server
│ │ │ │
│── AS_REQ ──────────────>│ │ │
│ (用户名 + 时间戳, │ │ │
│ 用用户密码哈希加密时间戳)│ │ │
│ │ 验证用户名 │ │
│ │ 用用户密码哈希解密时间戳 │ │
│<── AS_REP ───────────────│ │ │
│ 包含两部分: │ │ │
│ ① TGT(用 krbtgt 密码 │ │ │
│ 哈希加密) │ │ │
│ ② Session Key(用用户 │ │ │
│ 密码哈希加密) │ │ │
│ │ │ │
│── TGS_REQ ────────────────────────────────────────>│ │
│ (TGT + 想要访问的 SPN │ │ │
│ + 用 Session Key 加密 │ │ │
│ 的认证符) │ │ │
│ │ │ 用 krbtgt 密码解密 TGT │
│ │ │ 验证 TGT 有效 │
│<── TGS_REP ────────────────────────────────────────│ │
│ 包含: │ │ │
│ ① 服务票据 ST(用目标 │ │ │
│ 服务账户密码哈希加密) │ │ │
│ ② 新 Session Key │ │ │
│ │ │ │
│── AP_REQ ──────────────────────────────────────────────────────────────────>│
│ (服务票据 ST) │ │ │
│ │ │ 用自身密码解密 ST │
│ │ │ 验证客户端身份 │
│<── AP_REP ─────────────────────────────────────────────────────────────────│
│ 认证成功,可以访问服务 │ │ │
票据加密方式对照:
| 加密类型 | ETYPE 值 | 安全性 | 破解难度 |
|---|---|---|---|
| RC4-HMAC | 23 | 弱(不推荐) | 低(Hashcat可快速破解) |
| AES128-CTS | 17 | 较强 | 中 |
| AES256-CTS | 18 | 强 | 高 |
关键数据结构:
- TGT(Ticket Granting Ticket) :用
krbtgt账户密码哈希加密,客户端无法解密,内含 PAC(特权属性证书,包含用户组信息) - Service Ticket:用目标服务账户密码哈希加密
- PAC(Privilege Attribute Certificate):包含用户的 SID、组成员信息,决定授权
3.6 FTP(File Transfer Protocol)
基础知识
FTP 是用于文件传输的应用层协议,完全明文传输(包括用户名和密码)。
端口:
- 21/TCP:控制连接(命令)
- 20/TCP:数据连接(主动模式下)
主动模式 vs 被动模式:
【主动模式(PORT)】
客户端 → 服务器21 建立控制连接
客户端告诉服务器:"我在 PORT IP:PORT 等你连接"
服务器:20 → 客户端指定PORT 建立数据连接
问题:客户端防火墙会拦截从外部发起的连接
【被动模式(PASV)】
客户端 → 服务器21 建立控制连接
客户端发送 PASV 命令
服务器回复:"请连接我的 IP:随机高端口"
客户端 → 服务器:随机高端口 建立数据连接
优势:数据连接由客户端发起,防火墙友好
常用 FTP 命令:
| 命令 | 含义 |
|---|---|
| USER / PASS | 认证 |
| LIST / NLST | 列出文件 |
| GET / PUT | 下载/上传 |
| PASV / PORT | 切换传输模式 |
| CWD / PWD | 切换/显示目录 |
| QUIT | 退出 |
FTPS vs SFTP 区别(面试常问):
| 特性 | FTPS | SFTP |
|---|---|---|
| 协议基础 | FTP + SSL/TLS | SSH 子协议 |
| 端口 | 990(隐式)/ 21(显式) | 22 |
| 命令兼容 | 保留 FTP 命令 | 完全不同的命令集 |
| 防火墙友好 | 较差(多端口) | 好(单一端口22) |
3.7 SSH(Secure Shell)
基础知识
SSH 提供加密的远程管理通道,是运维和渗透中最常用的协议之一。
端口:22/TCP(可配置)
SSH 认证方式:
| 方式 | 安全性 | 说明 |
|---|---|---|
| 密码认证 | 中等 | 易受暴力破解,推荐配合强密码和失败锁定 |
| 公钥认证 | 高 | 服务端保存公钥,客户端用私钥签名证明身份 |
| 基于证书 | 最高 | CA 签发证书,适合大规模部署 |
| GSSAPI(Kerberos) | 高 | 企业 AD 环境集成 |
SSH 密钥交换流程(简化):
1. 版本协商:双方交换版本字符串
2. 算法协商:双方交换支持的算法列表(密钥交换/加密/MAC/压缩)
3. 服务器身份认证:
- 客户端用 known_hosts 验证服务器公钥
- 防止中间人攻击
4. 密钥交换(DH/ECDH):
- 双方协商出共享密钥(会话密钥)
- 会话密钥用于后续加密
5. 用户认证(密码或公钥)
6. 会话开始
SSH 重要文件:
| 文件 | 位置 | 说明 |
|---|---|---|
| 私钥 | ~/.ssh/id_rsa |
权限必须为 600(否则 SSH 拒绝使用) |
| 公钥 | ~/.ssh/id_rsa.pub |
上传到服务器 |
| 授权密钥 | ~/.ssh/authorized_keys |
服务器保存已授权的公钥列表 |
| 已知主机 | ~/.ssh/known_hosts |
防止中间人,保存已信任的服务器公钥 |
| 客户端配置 | ~/.ssh/config |
连接快捷方式和选项 |
| 服务端配置 | /etc/ssh/sshd_config |
服务端安全配置 |
3.9 SNMP(Simple Network Management Protocol)
基础知识
SNMP 用于网络设备(路由器、交换机、服务器)的监控和管理。
端口:
- 161/UDP:SNMP 查询(Manager → Agent)
- 162/UDP:SNMP Trap(Agent → Manager,主动上报告警)
版本差异:
| 版本 | 认证 | 加密 | 安全性 |
|---|---|---|---|
| SNMPv1 | Community String(明文) | 无 | 极差 |
| SNMPv2c | Community String(明文) | 无 | 极差 |
| SNMPv3 | 用户名 + 密码(哈希) | 支持 AES/DES | 合理 |
Community String:
- public:只读(最常见的默认值)
- private:读写(常见默认值,权限极高!)
- 相当于 v1/v2c 的"密码",但完全明文传输
MIB(Management Information Base):
MIB 是设备信息的层级数据库,使用 OID(对象标识符)索引:
1.3.6.1.2.1.1.1.0 → sysDescr(系统描述,含OS版本)
1.3.6.1.2.1.1.5.0 → sysName(主机名)
1.3.6.1.2.1.25.4.2.1.2 → hrSWRunName(运行中的进程)
1.3.6.1.2.1.4.34.1.3 → IP地址表
1.3.6.1.4.1.77.1.2.25 → Windows用户列表(仅Windows)
1.3.6.1.2.1.17.4.3.1.2 → MAC地址表
3.10 SMTP / POP3 / IMAP
基础知识
SMTP(发邮件):25(明文)、465(加密);
POP3(收邮件):110(明文)、995(加密);
IMAP(邮件同步):143(明文)、993(加密)
端口对照:
| 协议 | 明文端口 | 加密端口 | 用途 |
|---|---|---|---|
| SMTP | 25(服务器间)/ 587(客户端提交) | 465(SMTPS) | 发送邮件 |
| POP3 | 110 | 995 | 接收邮件(下载后删除服务器) |
| IMAP | 143 | 993 | 接收邮件(保留在服务器,多设备同步) |
SMTP 重要命令:
| 命令 | 功能 | 渗透意义 |
|---|---|---|
| HELO / EHLO | 打招呼,EHLO 返回服务器支持的扩展 | 版本和功能信息 |
| VRFY | 验证邮件地址是否存在 | 用户名枚举! |
| EXPN | 展开邮件列表 | 用户名/群组枚举! |
| RCPT TO | 指定收件人 | 枚举有效用户(根据响应码判断) |
| AUTH | 认证 | 暴力破解目标 |
SMTP 响应码:
220 Service ready
250 OK(VRFY 确认地址存在时返回 250)
251 User not local(用户存在但在其他服务器)
252 Cannot VRFY(服务器禁用了 VRFY 但邮件可能仍会被接受)
550 No such user(用户不存在)
# 使用 swaks 发送伪造邮件
swaks --from ceo@company.com --to victim@company.com \
--server mail.company.com \
--header "Subject: Urgent" \
--body "Please wire $50,000 to..."
4. SPF / DKIM / DMARC(邮件安全机制)
| 机制 | 全称 | 作用 | 存储在 |
|---|---|---|---|
| SPF | Sender Policy Framework | 声明哪些 IP 可以发送该域的邮件 | DNS TXT 记录 |
| DKIM | DomainKeys Identified Mail | 对邮件头/体进行数字签名,防篡改 | DNS TXT 记录(公钥) |
| DMARC | Domain-based Message Authentication | 告诉收件方 SPF/DKIM 失败时的处理策略 | DNS TXT 记录 |
3.11 Telnet 远程登录协议
基础知识
Telnet(Teletype Network)是最早的远程登录协议,提供双向的、面向字节流的交互式终端会话。它是 SSH 出现之前 Unix/网络设备管理的标准方式,目前虽已基本被 SSH 取代,但在老旧设备、工控系统(ICS/SCADA)、嵌入式设备和 IoT 场景中仍大量存在。
端口:23/TCP(默认,部分设备使用其他端口)
最核心的缺陷:完全明文传输。 用户名、密码、所有命令输出在网络中都以明文流动,同网段任何人均可嗅探。
暴力破解:
# Hydra
hydra -l admin -P /usr/share/wordlists/rockyou.txt telnet://target
# 带用户名字典
hydra -L users.txt -P passwords.txt telnet://target
# Medusa
medusa -h target -u admin -P passwords.txt -M telnet
# Nmap NSE
nmap -p 23 --script=telnet-brute --script-args userdb=users.txt,passdb=pass.txt target
3.12 DHCP(Dynamic Host Configuration Protocol)
基础知识
DHCP 负责自动为网络中的主机分配 IP 地址及其他网络参数,基于 UDP 协议运行,是局域网的基础服务。DHCP 的无认证机制使其成为内网渗透的重要攻击面。
端口:
- 67/UDP:DHCP 服务器监听端口
- 68/UDP:DHCP 客户端监听端口
3.13 MQTT/MQTTS(物联网核心协议)
基于TCP传输层 ,属于应用层协议,是目前物联网设备、智能家居、工业终端最主流的通信协议。
MQTT:1883端口,明文TCP传输,所有设备通信数据、认证信息可直接抓包窃取,无安全防护;
MQTTS:8883端口,基于TLS加密传输,杜绝中间人窃听、篡改,是生产环境标准配置。
4. 无线协议
4.1 WEP(Wired Equivalent Privacy)
完全不安全,已废弃。
致命缺陷:使用 RC4 流密码,IV(Initialization Vector)仅 24 位,IV 空间只有 16,777,216 种,在繁忙网络中几小时内就会出现 IV 重用,导致密钥流复用,可以统计分析破解。
# 破解流程(需要 Aircrack-ng 套件)
airmon-ng start wlan0 # 开启监听模式
airodump-ng wlan0mon # 扫描 AP
airodump-ng -c CHANNEL --bssid BSSID -w capture wlan0mon # 捕获数据包
# 加速 IV 收集:
aireplay-ng -3 -b BSSID -h CLIENT wlan0mon # ARP 重放攻击
# 破解(至少需要 20,000-40,000 个 IV)
aircrack-ng capture*.cap
4.2 WPA2(Wi-Fi Protected Access 2)
认证方式:
- WPA2-Personal(PSK):预共享密钥,适用于家庭/小企业
- WPA2-Enterprise(802.1X):RADIUS 服务器认证,适用于企业
四次握手(PTK 协商):
AP(Authenticator) Client(Supplicant)
│ │
│─── EAPOL Message 1 ──────────────> │ AP发送 ANonce(随机数)
│ │
│ │ Client 生成 SNonce
│ │ PTK = PRF(PMK + ANonce + SNonce + MAC_AP + MAC_Client)
│ │ MIC = HMAC-SHA1(KCK, 握手消息)
│<── EAPOL Message 2 ─────────────────│ Client发送 SNonce + MIC
│ │
│ AP 计算 PTK 并验证 MIC │
│ │
│─── EAPOL Message 3 ──────────────> │ AP 发送 GTK(加密)+ MIC
│<── EAPOL Message 4 ─────────────────│ Client 确认
PTK(Pairwise Transient Key)组成:
- KCK:Key Confirmation Key(验证 MIC)
- KEK:Key Encryption Key(加密 GTK)
- TK:Temporal Key(实际数据加密用)
PMK = PBKDF2(passphrase, SSID, 4096, 256)
因为 PMK 是 WiFi 密码的函数,四次握手可以被离线爆破:
# 捕获握手包
airodump-ng -c CHANNEL --bssid BSSID -w capture wlan0mon
# 强制客户端重连(获取握手包)
aireplay-ng -0 5 -a BSSID -c CLIENT wlan0mon
# 破解
aircrack-ng -w rockyou.txt capture.cap
hashcat -m 22000 capture.hc22000 rockyou.txt # hashcat 格式
# 转换格式
hcxpcapngtool -o capture.hc22000 capture.pcap
4.3 WPA3
主要改进:
- 使用 SAE(Simultaneous Authentication of Equals / Dragonfly)替代 PSK
- 前向保密:即使后来密码泄露,历史流量也无法解密
- 防止离线字典攻击(每次认证需要在线交互)
- 增强开放网络保护(OWE,Opportunistic Wireless Encryption)
降级攻击:若 AP 同时支持 WPA2 和 WPA3,可以建立仅支持 WPA2 的伪造 AP,诱使客户端以 WPA2 连接,再进行 WPA2 攻击。
5. 工具速查表
| 类别 | 工具 | 主要用途 |
|---|---|---|
| 抓包分析 | Wireshark | 图形化协议分析,支持几乎所有协议 |
| 抓包分析 | tcpdump | 命令行抓包,tcpdump -i eth0 -w out.pcap |
| 端口扫描 | Nmap | 端口扫描、服务版本探测、OS识别、NSE脚本 |
| 端口扫描 | Masscan | 超高速端口扫描(百万级/秒),masscan -p 0-65535 --rate=10000 target |
| Web 测试 | Burp Suite | HTTP(S) 抓包、改包、重放、扫描 |
| Web 测试 | OWASP ZAP | 开源 Web 漏扫 |
| SQL注入 | sqlmap | 自动化 SQL 注入检测与利用 |
| SMB/AD | Impacket | psexec/smbclient/secretsdump/GetUserSPNs 等 |
| SMB/AD | CrackMapExec | 内网批量扫描与利用 |
| SMB/AD | BloodHound | AD 攻击路径图形化分析 |
| SMB/AD | Mimikatz | Windows 凭证提取(哈希/明文/票据) |
| SMB/AD | Rubeus | Kerberos 票据操作 |
| 哈希爆破 | Hashcat | GPU 加速哈希破解 |
| 哈希爆破 | John the Ripper | 通用哈希破解 |
| 密码喷射 | Hydra | 多协议暴力破解(SSH/FTP/HTTP/SMB等) |
| DNS | dig | DNS 查询调试 |
| DNS | DNSrecon | DNS 信息收集和枚举 |
| DNS | Subfinder / Amass | 子域名枚举 |
| 无线 | Aircrack-ng | WEP/WPA2 破解 |
| 无线 | hcxdumptool | WPA2 PMKID 攻击 |
| SNMP | snmpwalk / onesixtyone | SNMP 枚举和 community string 猜解 |
| 中间人 | Responder | LLMNR/NBT-NS 投毒,捕获 NTLM 哈希 |
| 中间人 | Bettercap | 多协议中间人攻击框架 |
| 综合框架 | Metasploit | 漏洞利用框架 |
6. 面试高频题目
Q: 描述 TCP 三次握手,以及为什么是三次而不是两次?
A: 两次握手只能确认服务器收到了客户端的 SYN,但无法确认客户端能收到服务器的响应,客户端的接收能力未被确认。三次握手中,第三步 ACK 使得服务器确认客户端可以正常接收,双方的发送和接收能力都被验证。此外,三次握手防止了历史连接请求的误触发(网络延迟的旧 SYN 到达时,服务器可以收到客户端的 RST 而放弃)。
Q: SYN Scan 为什么比 Connect Scan 更隐蔽?
A: SYN Scan 发送 SYN 后,收到 SYN+ACK 即回 RST,不完成三次握手,应用层日志(如 Apache 访问日志)不会记录此连接;而 Connect Scan 完成完整三次握手,会被目标服务记录。但现代 IDS/防火墙可以检测到大量 RST 或半开连接。
Q: Pass-the-Hash 和 Pass-the-Ticket 有什么区别?
A: PTH 利用 NTLM 认证机制,使用哈希直接认证,绕过了知道明文密码的需求,适用于支持 NTLM 的服务(SMB、WMI、RDP-Restricted Admin 模式)。PTT 则是 Kerberos 环境下的手法,将有效的 TGT 或 Service Ticket 注入当前会话,以持票人身份访问服务,不涉及 NTLM 哈希。
Q: Kerberoasting 和 AS-REP Roasting 的区别?
A: Kerberoasting 目标是有 SPN 的服务账户,需要有效的域账户,请求 Service Ticket(用服务账户密码哈希加密)再离线爆破;AS-REP Roasting 目标是禁用了预认证的用户账户,不需要任何域账户,返回的 AS_REP 包含用该用户密码哈希加密的数据可被离线爆破。
Q: 如何判断一个 HTTPS 站点是否安全?
需要检查:TLS 版本(>= 1.2,推荐 1.3)、密码套件(避免 RC4/DES/MD5/SHA1/RSA密钥交换)、证书有效期和 CA 链、HSTS 头(防降级)、Certificate Transparency 日志、SAN 字段覆盖所有使用的域名。
Q: DNS 隧道如何检测和防御?
检测手段:监控异常高频的 DNS 查询、异常长的子域名(Base32/Base64 编码)、非标准查询类型(NULL/TXT/CNAME)、单个域名的查询量异常。防御:DNS 防火墙、限制解析域白名单、部署 DNS 流量分析(如 Zeek/Bro)。
本文面向渗透测试职位备考,所有内容仅用于合法授权的安全测试和学习目的。