[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 记录本身就是为了存储文本信息,能容纳更长更明显的字符串。
相关推荐
xingyuzhisuan1 小时前
网络 Token 常见故障原理,基础排查科普
运维·服务器·网络·php
学习3人组3 小时前
企业交换机OSPF路由协议配置与防护
网络
一拳一个娘娘腔3 小时前
【SRC漏洞挖掘系列】第10期:GraphQL & API 安全 —— 现代 API 的“裸奔”时代
后端·安全·graphql
青风973 小时前
SDDGR:基于稳定扩散的深度生成重放,用于类增量对象检测(CVPR 2024)
网络·人工智能·深度学习·神经网络·计算机视觉
云栖梦泽在3 小时前
AI安全实战:AI系统应急响应的实战演练案例
大数据·人工智能·安全
Chockmans4 小时前
春秋云境CVE-2020-21652(极速版)
计算机网络·安全·web安全·网络安全·安全威胁分析·春秋云境·cve-2020-21652
byte轻骑兵6 小时前
【HID】规范精讲[20]: 蓝牙HID低功耗黑科技——Sniff Subrating如何让设备续航翻倍?
网络·科技·人机交互·hid·蓝牙键盘
Raink老师6 小时前
【AI面试临阵磨枪-76】社交 AI:内容生成、审核、智能回复、多模态理解、安全治理
人工智能·安全·面试
liana87446 小时前
私有化视频会议:把会议室“搬”进自己的网络
网络