DNS反彈Shell
0X01 引子
反彈Shell廣泛應用於遠端控制下的許可權維持,通過反轉攻(客戶端)和受(服務端)的角色,來實現條件限制,尤其是內網情況下的遠端連線。
反彈Shell的工具和實現方法多種多樣,只要能夠讓被控端通過網路傳送資料到控制端,並且實現資料的解析即可完成控制過程。
最近在繼續瞭解網路協議,於是突然想在DNS資料包中插入一些偽造的命令來實現解析,本來準備自己嘗試寫一個DNS伺服器和DNS請求程式來實現反彈,不過剛動筆就看到了別人開源的程式,於是直接使用別人的程式來學習了。
https://github.com/ahhh/Reverse_DNS_Shell
為了執行測試更方便,去掉了程式中的加解密功能,額外的Python包只需要dns和dnslib
0X02 DNS
為了關聯主機和IP地址對應關係而誕生的DNS本身,不需要我在這裡贅述了。跳過域名構成、查詢過程等可以輕鬆在網路查詢到的內容,我們直接來看看DNS的包構成
在smtp那篇文章中,我們提過一層一層洋蔥狀的協議包裹,在這裡,我們跳過以太、IP、UDP頭,直接到DNS資料的部分。
- 標誌著資料開始的是Tran ID段,所有的問答資訊都需要一定的機制來保證對應,這部分應該就是對應機制中的一部分。
- 緊接著的Flags,0x0100表明了一些查詢屬性。
- Queries中是我們所要查詢的host,查詢型別。作為A型別查詢,得到的是host的IP,這裡也是我們做手腳的地方,不過TXT型別可以插入一些附加的資訊,更適合我們用來構造命令語句。
伺服器回應包如下:
- 作為回應的Tran ID,它和查詢包相同。
- Flags中標準回應標誌位
- 重複顯示的Queries
- 回應的Answers資訊。通過CNAME查取主機規範名,再通過規範名查取對應IP。
利用這種相互應答的特性,我們初步計劃通過以下流程來實現我們的反彈Shell
0X03 程式
原始的程式可以在上面的github中找到,這裡貼出我們去掉加解密的部分程式。
先說DNS伺服器的部分
這一部分封裝了對DNS的應答,payload裡是被控端發來的查詢資訊,也就是上一次命令執行後的回顯,而out是我們這一次的命令,封裝成了TXT的應答包
這部分對於被控端的查詢包進行解析,從中獲取到地址和資料,對於資料,解析出其中的命令回顯,並且初始化一個應答包。
主函式中使用socket監聽相關埠,對於監聽到的包按照預定流程進行處理。
再來看看被控端傳送的部分
首先是整個流程一覽,從程式中可以很清晰的看到建立連線,解析命令,執行命令,傳送回顯的過程。
構造的url,也就是命令回顯,對於沒有命令的,會返回nxt。利用回顯構造查詢語句。
這兩段程式對於收到的文字格式的命令進行解析和執行,沒有太多的東西可以講。只是注意格式的擷取,並且考慮對Linux和Windows的命令之間轉換。
這部分負責傳送DNS查詢,按照與伺服器約定的格式構造包並且進行傳送。
0X04 測試
我們需要先執行伺服器端程式,然後執行被控端程式。我的服務端程式在一臺Ubuntu主機上,被控端在我的Win10機器上。
這是被控端第一次連線時傳送的包,因為控制端還沒有指令,第一次連線傳送的是空包,其中Name的值bnh0就是我之前所說的NXT
而第二個包就是控制端傳送的指令,在TXT中傳送的就是指令whoami的base64編碼,
可以對比和我之前實際抓包的不同之處,對照可以看出我們在DNS包的哪些地方做過修改。
0X05 延伸
其實相關的DNS隧道技術原理應該差不多,都是在本來應該放DNS規定資訊的地方放入了其他的東西,來達到一些意想不到的結果。
當然,RFC還有許多協議可以讓我隨意構造去做測試,下一步考慮寫一個多協議支援的Fuzzing工具 :)
相關文章
- 反彈shell是什麼?反彈shell有什麼用?
- 10種反彈shell方式
- 反彈shell不成功排查
- 通過ICMP協議反彈SHELL並執行命令協議
- shell指令碼實現DNS正向解析指令碼DNS
- 用Unity實現彈反效果Unity
- 攜程,終於反彈了?
- shell指令碼攻略--DNS正向解析一鍵部署指令碼DNS
- 菜油C浪反彈開啟了
- python簡單遊戲-反彈球Python遊戲
- 玻璃反彈至1540-1555區間
- 2019,中國遊戲觸底反彈遊戲
- 榮耀手機反彈的法門
- 使用netcat進行反彈連結的shellcode
- 量化策略:如何利用死貓反彈獲利?
- WitsView:電視皮膚市場出現反彈View
- nc反彈以及中 &>、0>&1是什麼意思
- powershell各種反彈姿勢以及取證(二)
- powershell各種反彈姿勢以及取證(一)
- 橡膠 在經歷大C浪的反彈
- 程式碼混淆與反混淆學習-第二彈
- 【C語言練習題】小球反彈問題C語言
- 批次網站DNS區域傳送漏洞檢測——bash shell實現網站DNS
- Linux之DNS伺服器實戰:部署本地正解反解DNS伺服器,部署主從伺服器,DNS_View檢視實驗LinuxDNS伺服器View
- 原生 js 實現移動端 Touch 滑動反彈JS
- HTB Perfection-wp 基於ruby的SSTI注入、密碼爆破工具hashcat的使用、反彈shell的編碼繞過、ruby正則匹配密碼
- 百度雲加速:DDOS反彈技術震撼釋出
- 原生js實現一個DIV的碰撞反彈運動JS
- 六一節看遊樂園產業 疫情後迎反彈產業
- Counterpoint:預計2020年中國手機市場反彈
- 國際旅遊業強勁反彈,出行又值得期待了?
- DNS劫持 DNS汙染 介紹、dns 劫持 汙染DNS
- DNS劫持和DNS汙染DNS
- 反彈預期強勁:新冠肺炎疫情消費者調查
- 《自然》子刊:中國學者揭開體重反彈之謎!
- 寶鯤財經如何在外匯行情的反彈中捕捉機會
- IGEA:2020年澳大利亞視訊遊戲行業將出現反彈遊戲行業
- 股價出現反彈趨勢,每日優鮮醞釀新機會