踩坑记录-DNS Beacon
字数 1492 2025-08-25 22:59:09
DNS Beacon 配置与使用详解
0x00 场景概述
DNS Beacon 主要用于以下场景:
- 目标机器获取 Webshell 但不出网(无法建立 TCP 连接)
- 需要隐蔽通信,避免常规 HTTP/HTTPS 流量被检测
0x01 Beacon 类型区别
1. Stageless Beacon
- 特点:完整功能的二进制程序,payload 体积庞大(约 200KB)
- 优点:直接执行即可上线
- 缺点:特征明显,内存中解密完整 PE 文件易被检测
2. Stager/Stage Beacon
- 分为三部分:payload、stager 和 stage
- stager 负责下载 stage 组成完整功能
- 优点:体积小(shellcode 不足 1KB),便于免杀
- 缺点:需要额外配置才能正常工作
0x02 DNS Beacon 工作原理
DNS Beacon 通过 DNS 协议封装加密通信:
- 配置域名 A 记录指向 teamserver IP
- 配置 NS 记录用于隧道通信
- 本地 DNS 服务器迭代查询将请求导向 teamserver
- 通过 DNS 请求/响应进行加密通信
0x03 CS4 与之前版本的区别
- CS4 的 DNS Beacon 是纯粹的 DNS 隧道
- 所有 stage 必须从 DNS 隧道下载(仅保留 reverse_dns_txt)
- 前作可通过 HTTP 传递 stage,CS4 必须完全依赖 DNS
0x04 正确配置方法
域名解析配置
- 添加一条 A 记录指向 teamserver IP
- 添加一条或多条 NS 记录用于隧道,指向 A 记录
示例 DNS 记录:
A记录:teamserver.example.com → [teamserver IP]
NS记录:ns1.example.com → teamserver.example.com
NS记录:ns2.example.com → teamserver.example.com
CS 配置
- 在 Listeners 中配置 DNS Beacon
- Hosts 填写 NS 记录域名(如 ns1.example.com,ns2.example.com)
- Stager 域名填写其中一个 NS 记录
0x05 流量分析
Stageless Beacon 流量
- 初始 checkin 阶段:单一 DNS 请求交互
- CS 出现 Ghost Beacon
- 需要手动输入
checkin命令激活 - 未激活时:定期请求新子域名,返回 0.0.0.0
- 激活后:通过 A 记录和 TXT 记录通信
Stager Beacon 流量
- 执行时产生大量 TXT 请求(下载 stage)
- 数据加密后 Base64 编码传输
- 上线时间较长(测试中约 800 秒)
- 通信稳定后使用 TXT 记录传输数据(默认模式)
0x06 常见问题与解决
BUG 处理
- 某些破解版存在 checkin 命令无效的问题
- 替代方案:在 Ghost beacon 中输入
mode dns命令 - 通信慢时可切换模式:
mode dns-txt
上线失败排查
- 确认域名解析配置正确
- 检查 teamserver 是否能收到 DNS 请求
- 耐心等待(stager 可能需要 10 分钟以上)
- 尝试手动激活命令
0x07 隐蔽通信工具推荐
- chashell - 基于 DNS 的隐蔽通信工具
- DNSlivery - DNS 数据传输工具
- icmptunnel - ICMP 隧道工具(需自行加密)
最佳实践建议
- 优先使用 stager/stage 模式,便于免杀
- 配置多个 NS 记录提高可靠性
- 国内环境建议 teamserver 放在国内,减少延迟
- 重要操作前先测试通信稳定性
- 结合其他隐蔽技术增强对抗能力
通过以上详细配置和分析,可以成功建立 DNS Beacon 通信渠道,实现在限制性网络环境下的持久控制。