使用Wireshark监听UDP 53端口,过滤”dns”协议,捕获域名查询与响应数据包,分析IP地址及
DNS查询与响应抓包详解
DNS基础原理
1 DNS系统架构
DNS(Domain Name System)采用分层分布式架构,核心组件包括:
- 根DNS服务器:全球13个逻辑分组(如A~M)
- 顶级域名服务器(TLD):.com/.net/.org等
- 权威DNS服务器:存储具体域名解析记录
- 本地DNS服务器:运营商或企业部署的缓存服务器
2 DNS查询流程
步骤 | 动作主体 | 行为描述 |
---|---|---|
1 | 客户端 | 向本地DNS发起递归查询请求 |
2 | 本地DNS | 逐级向上查询(根→TLD→权威) |
3 | 权威DNS | 返回最终解析结果 |
4 | 本地DNS | 缓存结果并返回客户端 |
3 DNS报文结构
+++ | Header(12bytes)| Query Section | +++ | Name(变长) | Type(2bytes) | | Class(2bytes) | TTL(4bytes) | | Data Length | RDATA | +++
抓包工具选择与配置
1 主流抓包工具对比
工具 | 平台支持 | 协议解析 | 实时分析 | 适合场景 |
---|---|---|---|---|
Wireshark | Win/Mac/Linux | 强 | 是 | 深度协议分析 |
tcpdump | Unix系 | 中 | 否 | 命令行快速抓包 |
Fiddler | Windows | HTTP专精 | 是 | Web调试 |
Microsoft Network Monitor | Windows | 中 | 是 | 企业环境 |
2 Wireshark配置要点
- 安装WinPcap/Npcap驱动
- 设置显示过滤器:
dns
或udp.port == 53
- 启用TCP流跟踪:右键→Follow→UDP Stream
- 解码设置:
Edit→Preferences→Name Resolution
开启地址转译
DNS查询抓包实战
1 基础查询流程抓包
实验环境:
- 客户端:Windows 10 (192.168.1.100)
- DNS服务器:ISP提供的本地DNS (192.168.1.1)
抓包结果分析:
No. Time Source Destination Protocol Length Info 1 0.0000 192.168.1.100 192.168.1.1 UDP 70 DNS Request www.baidu.com 2 0.2000 192.168.1.1 192.168.1.100 UDP 102 DNS Response
报文详情:
-
请求报文:
- Transaction ID: 0x1a2b
- Flags: 0x0100 (标准查询)
- Question: www.baidu.com A记录查询
- 附加字段:无
-
响应报文:
- Transaction ID: 0x1a2b (匹配请求)
- Flags: 0x8180 (响应+AA标志)
- Answer:
- Name: www.baidu.com
- Type: A (1)
- Class: IN (1)
- TTL: 300秒
- Address: 180.101.49.11
2 递归查询过程追踪
多跳查询示例(假设本地DNS无缓存):
No. Time Source Destination Protocol Length Info 1 0.0000 Client LocalDNS UDP 70 Query example.com 2 0.1000 LocalDNS RootServer UDP 70 Query .com NS 3 0.3000 RootServer LocalDNS UDP 120 Response (NS列表) 4 0.5000 LocalDNS TLDServer UDP 70 Query example.com NS 5 0.7000 TLDServer LocalDNS UDP 120 Response (A记录) 6 1.0000 LocalDNS Client UDP 120 Final Response
异常场景分析
1 DNS欺骗攻击特征
异常指标 | 正常情况 | 攻击特征 |
---|---|---|
响应时间 | <50ms(本地缓存) | >200ms(异常路径) |
TTL值 | >=60s(权威服务器) | <30s(伪造记录) |
源IP可信度 | 已知DNS服务器IP | 未知/矛盾IP |
记录一致性 | 多次查询结果一致 | 间歇性变化 |
真实案例:
某次抓包发现针对pay.example.com
的DNS响应中,同一事务ID出现两个不同IP的应答:
No.7 1.2000 192.168.1.100 192.168.1.1 UDP 120 Query pay.example.com No.8 1.4000 172.217.24.37 192.168.1.100 UDP 120 Response (IP=192.168.2.5) [伪造] No.9 1.4500 205.251.242.153 192.168.1.100 UDP 120 Response (IP=172.67.34.44) [真实]
2 放大攻击识别
特征:
- UDP目标端口53的异常流量激增
- 请求报文多为小尺寸(<60字节)
- 源IP地址随机且分散
- 响应报文体积放大(平均放大倍数约28倍)
防护建议:
- 启用DNS查询速率限制
- 过滤非可信前缀的递归查询
- 部署Anycast DNS服务分散压力
高级分析技巧
1 事务ID关联分析
通过Transaction ID建立请求响应映射关系,可识别:
- 中间人篡改(ID匹配但内容不符)
- 重放攻击(旧ID重复出现)
- 跨线程处理异常(ID跳跃不连续)
2 DNSSEC验证流程
- 抓取带RRSIG记录的响应报文
- 提取DS记录与本地ZSK/KSK公钥比对
- 验证签名覆盖范围(Type/Class/Name/TTL)
- 确认签名有效期(Signed Time/Expire Time)
验证失败示例:
Signature Expired: Signed=20230801, Current=20230901 Algorithm Mismatch: RRSIG uses RSASHA256, Key uses RSASHA1
常见问题与解答
Q1:如何区分正常DNS响应和中间人攻击?
A:需综合验证以下要素:
- 事务ID一致性:响应必须携带原始请求的ID
- 源IP可信度:响应应来自预期DNS服务器IP
- 记录签名验证:检查DNSSEC数字签名有效性
- TTL合理性:权威记录TTL通常>=60s,过小值可疑
- 网络路径验证:通过traceroute确认响应路径合规性
Q2:在移动网络环境下抓包需要注意什么?
A:特殊注意事项包括:
- 动态IP问题:运营商可能使用NAT导致源IP不固定
- 加密协议干扰:HTTPSDNS/QUIC等新型协议需专用解码器
- 省电模式影响:设备可能限制后台抓包时长
- 基站切换中断:需注意SCTP/TCP连接状态突变
- 运营商劫持特征:可能出现非请求域的推送
来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/223892.html