[0xV01D]_Night Traffic_writeUp

📚 CTF :DNS 数据外泄分析

一、 题目概况

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

二、 解题步骤复盘

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

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

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

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

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

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

🔍 识别特征:

  1. 超长子域名: 主机名部分是一长串无意义的十六进制字符,这不符合正常用户的访问习惯。
  2. 分片标识: 域名中包含 part1、part2、part3,暗示数据被切割传输。
  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、_1、seq1 等标识,一定要按顺序拼接,不要按包的时间顺序盲目拼。
  3. 多尝试几种编码:Hex 是最基础的,如果 Hex 解出乱码,立刻尝试 Base64、Base32 解码。
  4. 留意记录类型:本题用的是 A 记录,但 TXT 记录也是 DNS 隐写的高发区,因为 TXT 记录本身就是为了存储文本信息,能容纳更长更明显的字符串。
相关推荐
phltxy9 小时前
C 语言文件操作:让数据从内存走向持久化
c语言·网络·数据库
jimmyleeee9 小时前
大模型安全之三十八:AI 中的 DoS 攻击:当“拒绝服务”变成“拒绝钱包”
人工智能·安全
一条破秋裤9 小时前
TCP 并发服务器:连接分析、多线程与多进程
服务器·网络·tcp/ip
北京恒星科通刘军9 小时前
灾害监测预警系统中,应急疏散广播的“应急叫应”实际送达率与有效性研究
网络·数据库·人工智能
TDengine (老段)10 小时前
集群从“能用“到“高可用“:副本、选主与故障切换到底怎么配
大数据·网络·数据库·物联网·oracle·时序数据库·tdengine
rest102410 小时前
做io测试
linux·服务器·网络
一条破秋裤10 小时前
Linux 网络编程基础:网络分类、分层模型与数据封装
linux·运维·网络
欣欣之王来了10 小时前
5G的行业应用:工业互联网、车联网、智慧医疗中的网络支撑
网络·学习·计算机网络·安全·教程
AOI小白新手上路10 小时前
视频去雨网络的模块缝合路线 · 实践笔记
网络·笔记·音视频
Brookty11 小时前
双向分流FIN标记、TCB服务逻辑与TCP断开连接流程介绍
网络·tcp