网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

网络安全工具团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 工具 > 网络安全工具 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

DNSExfiltrator:基于DNS的数据泄露测试工具

文章来源:重庆网络安全 发布时间:2020-01-10 11:30:19 围观次数:
分享到:

摘要:DNSExfitrator开源项目是一种数据泄漏测试工具,它使用DNS协议进行秘密数据泄漏。DNSExfiltrator使用C S模式。它的服务器在python(dnsexfiltrator py)中实现。

blob.png

DNSExfiltrator简介


  DNSExfitrator开源项目是一种数据泄漏测试工具,它使用DNS协议进行秘密数据泄漏。DNSExfiltrator使用C / S模式。它的服务器在python(dnsexfiltrator.py)中实现。 客户端提供C#源代码,可以通过csc.exe将其编译为Windows可执行文件。 同时,作者还可以使用JavaScript和Powershell Script文件将其包装以启用客户端。 DNSExfiltrator项目源代码的结构如图所示。

blob.png

DNSExfiltrator的主要功能是:


  1)默认使用系统定义的DNS服务器。 您可以通过-s指定特定的DNS服务器。


  2)-h参数支持并启用DoH。


  3)默认使用Base64 URL编码,但是您也可以指定-32以使用Base32编码。


  4)支持基本的R **加密,用于数据加密和解密。


  5)提供一些可选功能来逃避检测,包括:请求限制-每个DNS请求之间实现更多隐身数据窃取的时间间隔。减少DNS请求的大小。 默认情况下,使用每个DNS请求的最大剩余可用字节。减小DNS标签的大小。 默认情况下,支持的最大标签长度为63个字符。


简要分析基于DNS的数据窃取的源代码


  DNSExfiltrator工具使用C / S模式,服务器是DNSExfiltrator.py文件,客户端使用C#实现,可以通过csc.exe编译为Windows可执行程序。 同时,为了易于使用,作者还提供了封装了DNSExfiltrator客户端二进制文件的Powershell脚本和JavaScript脚本。


  DNSExfiltrator准备条件:


  1)有一个域名,并将其DNS记录指向运行DNSExfiltrator.py的服务器;


  2)服务器依赖于Python的dnslib库。


  (一)服务器源代码分析


  整理并分析服务器端源文件dnsexfiltrator.py,并总结源代码概述和服务器端工作的主要过程,如图所示。

blob.png

通过整理和分析服务器端源代码dnsexfiltrator.py,安排服务器接收和恢复被盗数据的主要过程是:


  1)侦听端口53并接收请求数据。 当DNS请求分组的请求类型是TXT记录时,进入步骤(2)。


  2)提取请求的子域名,即使用dnslib库提取数据包的qname。  DNSExfiltrator中的qname拼接主要有两种类型,如图所示。

blob.png

 3)确定数据包类型。 如果qname以“ init。”开头,则对初始化请求包执行步骤(4),否则继续步骤(5)。


  4)“初始化”。 将包标识为初始化包,然后首先执行Base32解码,然后提取“文件名:文件名”,“ nbchunks:数据块总数”,“ BASE32:是否使用BASE32编码”来窃取文件并初始化Ready 接受。


  5)这种类型的数据包传输实际的被盗文件数据。 窃取的数据被加密,由编码拼接构成的查询子域如图所示。

blob.png

 6)当查询请求中的分组序号等于块总数时,表明已传输了被盗文件数据,并开始了对本地文件的写入和恢复操作。


  注意:处理完初始化数据包后,服务器将响应客户端请求的TXT记录为“确定”。 在处理了真正的被盗数据包之后,它将回复TXT记录作为相应的“包序列号”。


  (二)客户源代码简要分析


  DNSExfiltrator客户端用C#编写,可以编译成独立的可执行文件或DLL。 编译方法:


  1)为Windows可执行程序进行编译:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe /unsafe/reference:System.IO.Compression.dll /out:dnsExfiltrator.exe dnsExfiltrator.cs

  2) 编译为DLL:

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc.exe/unsafe /target:library /reference:System.IO.Compression.dll/out:dnsExfiltrator.dll dnsExfiltrator.cs

blob.png

在组合和分析DNSExfiltrator.cs之后,其源代码结构和客户端工作流程如图所示。 参照图,安排DNSExfiltrator发送被盗文件数据的主要过程如下:


  1)预处理工作主要是通过指定的最大标签和最大域名长度来拼接子域名时计算相关参数值。


  2)将文件数据读取到内存中,并完成压缩,加密和编码。


  3)发送初始DNS数据包,包括要传输的文件信息,包括:文件名,数据块总数,编码方法等。每条信息的结构如图所示。

blob.png

  4)确认初始数据包已通过服务器的TXT记录“ ok”成功发送。


  5)根据步骤(1)中计算出的参数值,将文件数据划分为数据块,然后根据图所示的组成结构对子域名进行拼接。 

blob.png

  6)一次发送构造的DNS TXT请求数据包。 其中,客户端将根据服务器对每个DNS TXT记录的响应的包序号确认数据传输成功后,发送下一个携带被盗文件数据的DNS TXT请求包。


摘要


  (1)DNSExfiltrator的优势分析:


   1)支持DoH格式的DNS解析,您可以自己指定DoH服务提供商。


   2)客户端使用C3语言编写,易于编译为Windows可执行文件或DLL,并且作者还使用DNSExfiltrator提供了JS和Powershell脚本。


   3)客户端和服务器之间的依赖性较小,环境易于设置。


  (二)DNSExfiltrator的缺点:


   1)软件包序列号在盗窃工具和文件恢复过程中尤其重要,在实际使用中不稳定。


   2)不提供文件验证,不能保证被盗数据的完整性和真实性。


  (3)每个报文按照报文的序号依次发送和确认,在实际的DNS请求下效率低下且容易出错。


本文由 重庆网络安全 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:DNSExfiltrator DNS 数据泄露 测试工具

上一篇:网站遭到黑客入侵和篡改,导致Web界面异常,远程处理记一次IIS劫持处置
下一篇:Kelinci:Java程序Fuzzing工具

热门资讯

鼠标向下滚动