DNS (T1071.004)
一句话通俗理解
DNS就是用 DNS 查询和响应传数据。
30秒速查卡
| 维度 | 你需要知道的 |
|---|---|
| 这是什么? | 攻击者把C2指令编码在DNS查询的子域名或TXT记录中,通过DNS协议传输数据,防火墙几乎不会拦截DNS流量 |
| 为什么危险? | DNS是网络基础设施,任何主机都要做DNS解析,封掉DNS等于断网,安全设备对DNS内容检查力度很低 |
| 谁需要关心? | DNS管理员、网络安架构师、SOC分析师 |
| 你的第一步防御 | 部署DNS流量监控,检测异常长的子域名查询和高频TXT记录请求 |
| 如果只做一件事 | 统计每台主机的DNS查询量基线,重点关注单主机每日DNS查询超过5000次的异常情况 |
难度等级
⭐⭐ 中级 - 需要一定的技术基础和实践经验
前置知识检查
读这个文件需要什么?
- 网络协议基础(TCP/IP/DNS/HTTP)
- C2通信模式
- 加密通信基本原理
技术描述
通俗解释:
过渡段: 不要误以为C2只是’恶意软件发心跳包’——现代C2基础设施堪比小型互联网公司。攻击者使用CDN隐藏真实服务器、用Domain Fronting伪装流量目的地、借助合法云服务(如GitHub Issues、Slack API)作为通信通道。攻击者的C2流量与正常流量混杂在一起,传统IoC检测几乎无效。 用 DNS 查询和响应传数据,防火墙很难拦截
📨 打个比方:就像在公司内部的邮件系统里偷偷传递消息——攻击者使用DNS作为通信渠道,因为DNS流量几乎不会被封锁。
技术原理: T1071.004 是 应用层协议(T1071)的子技术,专注于DNS这一特定方面。攻击者在命令与控制阶段,通过DNS来获取目标系统或组织的相关信息,为后续攻击步骤做准备。
用途与影响:
- 为后续攻击提供关键信息支撑
- 提高攻击的成功率和精准度
- 降低攻击被发现的概率
真实攻击流程
典型场景
攻击者在 命令与控制 阶段使用 DNS协议 技术,以下是典型的攻击步骤:
graph TD
A["在被黑系统植入DNS木马"] --> B["木马构造DNS查询请求"]
B --> C["DNS查询中编码C2指令"]
C --> D["攻击者DNS服务器返回响应"]
D --> E["响应中解码执行指令"]
style C fill:#ff6b6b,stroke:#333,stroke-width:2px
步骤详解:
-
在被黑系统植入DNS木马 - 部署支持DNS隧道通信的恶意载荷到目标系统
-
木马构造DNS查询请求 - 将C2指令数据编码为子域名格式发起DNS查询(关键步骤)
-
DNS查询中编码C2指令 - 通过TXT记录或A记录查询将指令数据嵌入DNS查询包
-
攻击者DNS服务器返回响应 - 控制的DNS服务器解析查询并返回包含响应数据的DNS应答
-
响应中解码执行指令 - 从DNS响应的记录数据中解码并执行攻击指令
-
利用信息进行下一步攻击 - 基于收集到的信息制定后续攻击计划
攻击流程
graph LR
A[注册攻击者控制的权威DNS域名] --> B[植入支持DNS隧道的木马后门]
B --> C[木马将C2数据编码为长子域名发起TXT查询]
C --> D[权威DNS服务器返回加密TXT记录响应]
D --> E[木马解码TXT记录执行指令并回传结果]
style A fill:#4a90e2
style E fill:#ff6b6b
关键步骤说明:
- 注册攻击者控制的权威DNS域名: 攻击者在Namecheap/GoDaddy注册一个看起来无害的域名(如
cdn-update-services[.]com),将其NS记录指向攻击者控制的权威DNS服务器(如dnscat2、dns2tcp服务端),确保该域下所有子域查询都会被路由到攻击者的服务器 - 植入支持DNS隧道的木马后门: 通过钓鱼或漏洞利用在目标主机部署支持DNS协议的后门(如SUNBURST、Cobalt Strike DNS Beacon、dnscat2客户端),配置好C2域名和编码方案,由于几乎所有企业网络都放行53端口的DNS出站,木马可绕过严格的应用层防火墙
- 木马将C2数据编码为长子域名发起TXT查询: 后门将C2上行数据(受害主机ID、心跳、窃取数据)按字节切分,每段作为子域标签拼接成超长子域名(如
<Base32数据>.stage1.cdn-update-services.com),向本地DNS递归服务器发起TXT或A记录查询,请求包看起来像正常的域名解析 - 权威DNS服务器返回加密TXT记录响应: 攻击者的权威DNS服务器接收到查询后,解析子域中的上行数据,将下行C2指令(shell命令、文件下载分片)编码后写入TXT记录返回,单次TXT响应可承载约256字节有效载荷,大数据分多次查询传输
- 木马解码TXT记录执行指令并回传结果: 木马从DNS响应中提取TXT记录字段,按Base32/Base64解码重组出完整指令,执行后在下一轮查询中通过子域编码回传执行结果,整个C2通信伪装成正常的DNS解析流量,网络层只看到大量53端口的UDP包
真实案例
案例1:APT组织使用DNS进行攻击准备
- 时间: 2023-2024年
- 目标: 多行业目标组织
- 攻击组织: 多个APT组织
- 手法: 攻击者在攻击初期大量使用DNS技术收集目标信息,为后续定向攻击做准备
- 影响: 攻击成功率显著提高,防御者难以及时发现侦察行为
- 参考链接: MITRE ATT&CK - T1071.004
案例2:红队演练中的DNS应用
- 时间: 2024-2025年
- 目标: 授权测试的企业客户
- 攻击组织: 红队团队
- 手法: 在授权的红队演练中,DNS被用于模拟真实攻击者的信息收集行为,测试企业安全监控体系能否及时发现侦察活动
- 影响: 帮助企业发现信息暴露面和安全监控盲区
- 参考链接: 红队演练报告(内部资料)
红队视角
⚠️ 免责声明:以下内容仅用于合法的安全测试、渗透测试和教育目的。未经授权对他人系统进行测试是违法行为。
实战技巧
- 隐蔽优先:在命令与控制阶段使用被动方式收集信息,避免触发安全告警
- 信息验证:对收集到的信息进行交叉验证,确保准确性和时效性
- 工具选择:根据目标环境选择合适的工具,避免使用已被广泛检测的工具
- OPSEC意识:使用匿名网络、临时环境进行操作,防止溯源
常用工具
| 工具名称 | 用途 | 平台 |
|---|---|---|
| 专用收集工具 | DNS相关操作 | 全平台 |
| 信息分析工具 | 对收集到的数据进行分析和整理 | 全平台 |
注意事项
- 仅在授权范围内使用DNS技术
- 注意操作的隐蔽性,避免被蓝队发现
- 记录操作日志,用于后续分析和报告编写
蓝队视角
检测要点
- 异常信息收集行为:监控来自内部系统的异常数据查询和收集行为
- 可疑工具使用:检测与DNS相关的工具在内部网络中的使用
- 异常网络流量:监控对外部信息收集平台的可疑网络连接
- 权限异常:关注非授权用户的信息收集和查询行为
监控建议
- 部署信息收集行为的检测规则
- 建立基准行为模型,及时发现异常
- 定期审计敏感信息的访问记录
避坑指南
SOC常见误区:只检测已知恶意域名和IP。
检测建议
网络层检测
检测方法: 监控与DNS相关的网络流量特征
具体规则/命令示例:
# 监控异常DNS查询
tcpdump -i eth0 port 53 | grep -E "可疑域名"
主机层检测
Windows事件ID:
- 事件ID 4688:可疑进程创建
- 事件ID 4104:PowerShell脚本块日志
Linux日志:
- 日志文件:
/var/log/syslog - 关键字段:可疑命令执行
应用层检测
用人话说: DNS隧道是C2通信中最隐蔽的方式之一——攻击者把数据编码成DNS查询请求中的子域名部分发送出去。因为DNS是互联网的基础设施协议,几乎所有企业的防火墙都放行DNS流量(53端口),且很少有人会仔细检查DNS查询内容。工具如dnscat2、Iodine、Cobalt Strike的DNS Beacon都实现了这种技术。典型特征:单个客户端每秒发起数十次DNS查询,查询的子域名包含Base64编码一样的乱码字符(如“3n4kF9a2xZ8.malware.com“),而且这些域名大多解析失败(NXDOMAIN)。正常DNS查询的域名应该是有意义的完整单词。
Sigma规则示例:
title: 可疑DNS隧道C2通信
status: experimental
description: 检测超长子域名DNS查询和高频TXT记录请求,可能为dnscat2/iodine DNS隧道
logsource:
product: zeek
service: dns
detection:
selection_long_subdomain:
query|re: '^[a-zA-Z0-9]{30,}\.'
selection_txt:
rrtype: TXT
condition: selection_long_subdomain or selection_txt
level: medium
tags:
- attack.t1071.004
- attack.command_and_control
缓解措施
优先级1:关键措施
措施名称: 敏感信息保护
具体实施步骤:
- 识别和分类组织内的敏感信息
- 对敏感信息实施访问控制和加密
- 部署信息泄露防护(DLP)解决方案
优先级2:重要措施
措施名称: 员工安全意识培训
具体实施步骤:
- 定期开展信息安全意识培训
- 教育员工识别社交工程攻击
- 建立信息报告和响应机制
优先级3:建议措施
措施名称: 安全配置加固
具体实施步骤:
- 限制公开可访问的系统信息
- 配置合适的日志记录和告警策略
- 定期进行安全评估和渗透测试
动手实验
⚠️ 重要提示:所有实验必须在隔离的实验室环境中进行,禁止对未授权的真实系统进行测试。
实验环境准备
推荐靶场/实验平台:
| 平台名称 | 类型 | 难度 | 链接 |
|---|---|---|---|
| 本地虚拟机 | 虚拟环境 | 初级 | 本机搭建 |
| TryHackMe | 在线靶场 | 初级 | https://tryhackme.com |
所需工具:
- 根据具体技术需求准备相应工具
环境搭建:
# 准备隔离的实验环境
# 具体命令根据实验内容而定
实验1:基础实践(初级)
实验目标: 理解和练习DNS的基本操作
实验步骤:
- 在隔离环境中搭建实验系统
- 按照技术描述执行基本操作
- 观察和记录实验现象
预期结果: 成功完成DNS的基本操作
学习要点: 理解DNS的原理和操作方法
术语解释
| 术语 | 英文原名 | 通俗解释 |
|---|---|---|
| DNS | DNS | DNS的基本概念和操作方法 |
| 侦察 | Reconnaissance | 收集目标信息的过程,为后续攻击做准备 |
| OPSEC | Operational Security | 操作安全,保护行动信息不被对手发现 |
被引用情况
以下父技术文档引用了本子技术: