压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

MSF使用DNS隧道上線

前言

DNS隧道是一種比較古老的技術(shù),從首次發(fā)布至今已經(jīng)有20多年的時(shí)間,隱蔽且適應(yīng)性強(qiáng)一直是DNS隧道的標(biāo)簽。
具體到國(guó)內(nèi)業(yè)界技術(shù)分析來(lái)看,最流行的DNS隧道應(yīng)用就是Cobalt Strike 的DNS Beacon.Cobalt Strike官網(wǎng)也將DNS Beacon稱(chēng)為最受歡迎的功能特性?https://cobaltstrike.com/help-dns-beacon
作為對(duì)比,metasploit-framework的meterpreter雖然支持更多的平臺(tái)(WINDOWS/LINUX/MACOS),更多種類(lèi)的傳輸協(xié)議(TCP/Http/Https/Ping),但是官方一直沒(méi)有發(fā)布可用的DNS隧道上線的方式,如今DNS隧道這塊拼圖終于添加到了metasploit-framwork這幅畫(huà)卷中.

 

我們?yōu)槭裁匆褂肈NS隧道

  • 繞過(guò)網(wǎng)絡(luò)限制

通常企業(yè)中的防火墻都不會(huì)限制DNS網(wǎng)絡(luò)流量的傳輸,而且為了員工上網(wǎng)及服務(wù)器軟件更新等業(yè)務(wù),內(nèi)網(wǎng)的DNS服務(wù)器也會(huì)與互聯(lián)網(wǎng)運(yùn)營(yíng)商的DNS服務(wù)器連接.

  • 隱蔽傳輸

DNS隧道的網(wǎng)絡(luò)傳輸隱藏在大量的DNS請(qǐng)求中,安全設(shè)備也會(huì)處于性能考慮不會(huì)對(duì)所有的DNS流量進(jìn)行分析.且DNS協(xié)議使用UDP協(xié)議傳輸,沒(méi)有明顯的網(wǎng)絡(luò)連接,且請(qǐng)求經(jīng)由系統(tǒng)進(jìn)程(如svchost.exe)發(fā)送,具有很好的隱蔽性.

如果要用一句話(huà)總結(jié):DNS隧道是在某些限制嚴(yán)格的網(wǎng)絡(luò)環(huán)境中最好的解決方案也是唯一的解決方案.

 

MSF與DNS隧道時(shí)間線

  • 2013年6月: Cobalt Strike上線了DNS Beacon功能

https://blog.cobaltstrike.com/2013/06/06/dns-command-and-control-added-to-cobalt-strike/

  • 2017年11月: Alexey Sintsov和 Maxim Andreyanov首次在DEFCON RUSSIA會(huì)議上提交”Meterpreter over DNS”議題

https://defcon-russia.ru/posts/streamdns/

  • 2017年12月: metasploit-framework官方倉(cāng)庫(kù)新建關(guān)于Dns隧道的PR

https://github.com/rapid7/metasploit-payloads/pull/262

  • 2020年5月: metasploit-framework官方倉(cāng)庫(kù)PR由于一直沒(méi)有更新,PR關(guān)閉.
  • 2021年6月: Viper的vipermsf修改了PR中的部分代碼,適配最新的msf6,reverse_dns功能正式上線

從2017到2021,5年!

?

代碼實(shí)現(xiàn)

MSF的dns隧道正式名稱(chēng)為reverse_dns,具體來(lái)說(shuō)是一種payload(載荷).MSF中的其他載荷分為metasploit-payload和metasploit-framework兩部分代碼,而reverse_dns除了metasploit-payload和metasploit-framework兩部分代碼外還有個(gè)dns_server.py腳本作為數(shù)據(jù)通訊橋梁,我們這里分別介紹以下這三部分代碼的具體實(shí)現(xiàn)

metasploit-payload

metasploit-payload中的代碼都在https://github.com/defcon-russia/metasploit-payloads/tree/master_update/c/meterpreter/source/server這個(gè)子工程中.

工程用于生成metsrv.dll文件,meterpreter的所有傳輸協(xié)議都由該dll文件實(shí)現(xiàn)

?

測(cè)試環(huán)境搭建及功能驗(yàn)證

DNS隧道如果需要在互聯(lián)網(wǎng)上進(jìn)行測(cè)試,通常需要購(gòu)買(mǎi)兩個(gè)域名,并配置ns記錄,其實(shí)可以通過(guò)Windows Server搭建本地的DNS服務(wù)器,圖形化操作,方便調(diào)試.

環(huán)境搭建

  • 準(zhǔn)備一個(gè)Windows Server服務(wù)器,一個(gè)Windows 7(10)機(jī)器,一個(gè)Kali服務(wù)器

IP地址配置如下:
Windows Server : 192.168.146.20
Windows 7 : 192.168.146.12
Ubuntu: 192.168.146.130

  • 在Windows Server新建一個(gè)DNS服務(wù)器,配置如下圖所示

上圖中配置表示將域名kali.lab.com指向192.168.146.130

上圖中配置表示將域名test.viper.com的ns服務(wù)器設(shè)置為kali.lab.com

  • 配置Windows7的IP地址

上圖中配置表示將Windows 7的DNS服務(wù)器設(shè)置為192.168.146.20(Windows Server)

  • 這里總結(jié)一下,如果Windows 7(192.168.146.12)訪問(wèn)aaaa.test.viper.com這個(gè)域名,首先請(qǐng)求會(huì)到Windows Server(192.168.146.20),Windows Server查看kali.lab.com的IP地址(192.168.146.130),然后將DNS請(qǐng)求轉(zhuǎn)發(fā)到192.168.146.130的53端口.
  • 在Kali服務(wù)器(192.168.146.130)安裝Viper
  • SSH登錄Kali服務(wù)器,然后執(zhí)行如下命令啟動(dòng)dns_server
    docker exec -it viper-c bash
    /root/viper/Tools/dns_server --nsip 192.168.146.130 --domain test.viper.com
    

    如果提示socket.error: [Errno 98] Address already in use
    請(qǐng)執(zhí)行service systemd-resolved stop 等命令關(guān)閉53端口上運(yùn)行的服務(wù)

參數(shù)配置

  • 登錄Viper后新建監(jiān)聽(tīng),配置如下圖所示
  • 在dns_server命令行中應(yīng)觀察到如下輸出

  • 點(diǎn)擊生成載荷,上傳到Windows 7 中并執(zhí)行

測(cè)試效果

  • session上線及dns_server的輸出樣例

  • 執(zhí)行ps等meterpreter等內(nèi)置命令

  • 執(zhí)行操作系統(tǒng)shell命令

  • load kiwi抓取密碼

 

實(shí)戰(zhàn)環(huán)境搭建及功能驗(yàn)證

本地測(cè)試畢竟是理想環(huán)境,我們需要在互聯(lián)網(wǎng)中實(shí)際測(cè)試reverse_dns的速度及穩(wěn)定性究竟如何.

環(huán)境搭建

  • 準(zhǔn)備一臺(tái)VPS,兩個(gè)域名,一臺(tái)測(cè)試PC機(jī)

VPS使用了阿里云的一臺(tái)輕量服務(wù)器,兩個(gè)域名都在godaddy中購(gòu)買(mǎi).
假設(shè)VPS的外網(wǎng)IP地址為47.243.123.123
域名A為:aaa.club
域名B為:bbb.website

  • 域名A在godaddy中進(jìn)行如下設(shè)置
  • 域名B在godaddy中進(jìn)行如下設(shè)置

  • 然后在VPS 47.243.123.123中安裝Viper
  • SSH登錄VPS服務(wù)器,啟動(dòng)dns_server
    docker exec -it viper-c bash
    /root/viper/STATICFILES/Tools/dns_server --nsip 47.243.123.123 --domain bbb.website
    

    如果提示socket.error: [Errno 98] Address already in use
    請(qǐng)執(zhí)行service systemd-resolved stop 等命令關(guān)閉53端口上運(yùn)行的服務(wù)

參數(shù)配置

  • 登錄Viper后新建監(jiān)聽(tīng),配置如下圖所示

  • dns_server應(yīng)該有如下輸出

  • 點(diǎn)擊生成載荷,上傳到Windows 7 中并執(zhí)行

測(cè)試效果

  • session上線及dns_server的輸出樣例

  • 執(zhí)行ps等meterpreter等內(nèi)置命令

  • load kiwi抓取密碼(大概用時(shí)20秒)

 

參考內(nèi)容

  • Viper安裝

https://www.yuque.com/vipersec/help/olg1ua

  • godaddy 域名管理

https://dcc.godaddy.com/domains/?ref=card?

reverse_dns代碼大部分代碼都來(lái)源于如下兩個(gè)倉(cāng)庫(kù)
https://github.com/defcon-russia/metasploit-framework
https://github.com/defcon-russia/metasploit-payloads
因?yàn)閐efcon-russia中的代碼是基于MSF5版本開(kāi)發(fā),而當(dāng)前MSF6版本相對(duì)于MSF5版本在Meterpreter進(jìn)行了大量重構(gòu),需要進(jìn)行部分適配工作.

  • 修改metasploit-payloads中server_transport_windns.c文件,主要適配新的Transplort協(xié)議
  • 修改metasploit-framework中msf_autoload.rb,MSF6中使用了新的自動(dòng)load模塊功能.

具體適配代碼的細(xì)節(jié)可以參考如下倉(cāng)庫(kù):
https://github.com/FunnyWolf/vipermsf

轉(zhuǎn)載自安全客:https://www.anquanke.com/post/id/255625

上一篇:REvil反復(fù)橫跳決定再次隱退

下一篇:構(gòu)建可持續(xù)發(fā)展的IPv6產(chǎn)業(yè)生態(tài) 2021全球IPv6峰會(huì)廣州開(kāi)幕