[0xV01D]_Night Traffic_writeUp

📚 CTF :DNS 数据外泄分析

一、 题目概况

  • 题目类型: 流量分析 / 取证
  • 核心考点: DNS 隐写识别、十六进制解码、数据分片重组
  • Flag格式: Vx01D{}
  • 题目线索: 一份包含 DNS 流量的 pcap 数据包(或相关的 DNS 查询记录日志)。

二、 解题步骤复盘

Step 1: 流量过滤,锁定目标

在 Wireshark 中打开数据包,发现流量混杂。根据之前提取的帧信息(Dst Port: 53),得知这是 DNS 流量。

  • 操作: 在 Wireshark 显示过滤器中输入 udp.port == 53dns,过滤出所有 DNS 协议的包。

Step 2: 观察异常,识别隐写

浏览过滤后的 DNS 请求,发现大量针对 ctf.local 域的 A 记录查询,且子域名呈现出明显的规律:

  • 3078563031447b444e.part1.ctf.local
  • 535f4c4142454c535f.part2.ctf.local
  • 4152455f4c4f55447d.part3.ctf.local

🔍 识别特征:

  1. 超长子域名: 主机名部分是一长串无意义的十六进制字符,这不符合正常用户的访问习惯。
  2. 分片标识: 域名中包含 part1part2part3,暗示数据被切割传输。
  3. 同一主域: 都指向 ctf.local,这是攻击者控制的虚拟域名(用于在本地 DNS 服务器上解析)。

Step 3: 提取数据,十六进制解码

将三部分的主机名前缀提取出来,进行 Hex 到 ASCII 的解码:

部分 十六进制字符串 解码过程 (每2位一个ASCII字符) 解码结果
Part 1 3078563031447b444e 30(0), 78(x), 56(V), 30(0), 31(1), 44(D), 7b({), 44(D), 4e(N) 0xV01D{DN
Part 2 535f4c4142454c535f 53(S), 5f(_), 4c(L), 41(A), 42(B), 45(E), 4c(L), 53(S), 5f(_) S_LABELS_
Part 3 4152455f4c4f55447d 41(A), 52(R), 45(E), 5f(_), 4c(L), 4f(O), 55(U), 44(D), 7d(}) ARE_LOUD}

⚠️ 注意点(关于前缀的映射):

严格来说,Part1 解码出的字面量是 0xV01D{DN。但在本题给定的 Flag 格式 Vx01D{} 约束下,这里的 0x 实际上是出题人对前缀 Vx 的一种编码表示(0x 常作为十六进制前缀,此处做了双关映射)。因此将 0x 替换为 Vx 即可符合格式。

Step 4: 拼接重组,获取 Flag

将解码后的三部分按顺序拼接:

  • Vx01D{DN + S_LABELS_ + ARE_LOUD}

🚩 最终 Flag: Vx01D{DNS_LABELS_ARE_LOUD}


三、 核心原理:DNS 数据外泄

这道题背后的真实攻防场景叫做 DNS 隧道/DNS 数据外泄

  1. 为什么用 DNS 传数据?
    在严格的企业网络中,防火墙通常会限制内部服务器与外网的 HTTP/HTTPS、SSH 等连接,但几乎永远不会阻断 DNS 查询(因为员工上网必须进行域名解析)。
  2. 外泄是如何发生的?
    • 攻击者内网植入木马,获取了敏感数据(如密码、机密文件)。
    • 木马将数据切割、编码(如 Hex 或 Base64),作为子域名的一部分,向攻击者控制的 DNS 服务器发起查询请求:s3cr3t_data.attacker.com
    • 虽然查询最终可能失败或返回假 IP,但攻击者的 DNS 服务器日志中已经记录下了查询的域名,提取前缀即可还原数据。

四、 工具箱推荐

以后遇到类似题目,可以使用以下工具提高效率:

用途 工具 使用方法/特点
流量分析 Wireshark 过滤 dns,右键跟踪 UDP 流,或查看 DNS 查询的 Name 字段。
流量分析 tshark (命令行) tshark -r file.pcap -Y "dns.qry.name" -Tfields -e dns.qry.name 一键提取所有查询域名。
解码神器 CyberChef 神器。拖入 From Hex 模块即可解码,支持各种编码层层套娃。
在线解码 Cryptii 模块化编码/解码,界面直观,适合单步 Hex 转 ASCII。
DNS查询 dig / nslookup 如果题目是在线环境需要主动查询,可用 dig A part1.ctf.local 获取记录。

五、 经验总结

  1. 看到 DNS 流量,重点关注查询域名:异常长、包含编码特征的子域名是最大的异常点。
  2. 注意分片顺序 :域名中若有 part1_1seq1 等标识,一定要按顺序拼接,不要按包的时间顺序盲目拼。
  3. 多尝试几种编码:Hex 是最基础的,如果 Hex 解出乱码,立刻尝试 Base64、Base32 解码。
  4. 留意记录类型:本题用的是 A 记录,但 TXT 记录也是 DNS 隐写的高发区,因为 TXT 记录本身就是为了存储文本信息,能容纳更长更明显的字符串。
相关推荐
卓豪终端管理几秒前
零信任落地,终端是「最后一公里」也是「最难一公里」
安全
小王C语言9 分钟前
【8.进行接口测试】:通过 curl 进行接口自动化测试 / 通过 python 程序进行接口自动化测试
网络·c++
一条大祥脚11 分钟前
26杭电暑期第三场 DP|费用流|分解质因子|数论|贪心|图论|期望|无穷级数
网络·图论·网络流·无穷级数·费用流
早睡早起身体好12332 分钟前
为什么 Network 中会出现两个同名请求?——CORS 预检请求学习笔记
网络·笔记·学习·网络安全
daad7771 小时前
记录matlab状态机demo
java·网络·matlab
paopaokaka_luck2 小时前
基于springboot3+vue3的智能文库平台(AI智能搜索、AI智能汇总、实时在线状态展示、多格式文档预览与富文本编辑、Echarts图形化分析)
前端·网络·spring boot·网络协议·echarts
RisunJan2 小时前
Linux命令-shutdown(安全关闭或重启系统)
linux·服务器·安全
Yang96112 小时前
告别“慢工出细活”:如何平衡光纤熔接的速度与精度?
网络
贩卖黄昏的熊3 小时前
NestJS简明教程——安全
开发语言·javascript·安全·typescript·nest.js
山东科恩光电3 小时前
如何通过安全地毯确保工业现场的人员防护?
安全