使用DNSStager在DNS中隐藏Payload

admin 2021年12月22日20:41:01评论116 views字数 1307阅读4分21秒阅读模式

关于DNSStager

DNSStager是一个基于Python开发的开源项目,可以帮助广大研究人员使用DNS来隐藏和传输Payload。

DNSStager可以创建一个恶意DNS服务器,并负责处理我们域名相关的DNS请求,然后将Payload隐藏在响应中的指定记录请求中,比如说“AAAA”记录或“TXT”记录,而且DNSStager还会使用各种不同的算法来对Payload进行编码。

DNSStager能够生成基于C或Golang的自定义代理,主要负责解析一系列域名、获取Payload、解码Payload,并将其注入至内存中。

我们也可以根据自己的需要编辑DNSStager代理的代码。并使用自定义执行技术来构建代码。

DNSStager的主要目标就是帮助红队人员或渗透测试人员使用DNS作为隐蔽信道来传输Payload。

运行机制

根据你的DNS解析选项,DNSStager会对你的Payload进行分块,并将每一块以子域名响应的形式进行存储。

比如说,你选择使用IPv6选项来获取Payload,那么DNS响应将如下所示:

cloud-srv-1.test.mydnsserver.live. 300 IN AAAA 5648:31d2:6548:8b52:6048:8b52:1848:8b52

其中的“5648:31d2:6548:8b52:6048:8b52:1848:8b52”就是Payload的一部分。

因此,代理将会解析某些域名来获取Payload,然后对其进行解码,最终将其注入至内存中。

当前版本的DNSStager仅支持两种记录,即“AAAA”记录和“TXT”记录,你可以使用异或计算来对Payload进行编码(AAAA记录),如果你选择的是TXT记录的话,默认会使用Base64来进行编码。

DNSStager核心功能

  • 在IPv6记录中隐藏和解析Payload;

  • 在TXT记录中隐藏和解析Payload;

  • 使用异或编码器编码Payload;

  • 使用Base64编码器编码Payload;

  • 纯C开发的代理,支持自定义配置;

  • 纯Golang开发的代理,支持自定义配置;

  • 支持在每个DNS请求间隔一定休眠时间;

  • 更多功能即将上线...

工具要求

我们可以使用下列命令来安装DNSStager所需的Python依赖:

pip3 install -r requirements.txt

我们还需要安装Golang v1.16.3环境,并确保安装好了下列Golang包:

  • golang.org/x/sys

  • github.com/miekg/dns

除此之外,还需要安装好ming-w64:

apt install mingw-w64

工具安装

广大研究人员可以使用下列命令将该项目源码克隆至本地:

git clone https://github.com/mhaskar/DNSStager

接下来,我们还需要使用下列命令安装所需的依赖组件:

pip3 install -r requirements.txt

使用DNSStager在DNS中隐藏Payload

项目地址

DNSStager:https://github.com/mhaskar/DNSStager

本文始发于微信公众号(盾山实验室):使用DNSStager在DNS中隐藏Payload

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年12月22日20:41:01
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   使用DNSStager在DNS中隐藏Payloadhttps://cn-sec.com/archives/474076.html

发表评论

匿名网友 填写信息