本文以滲透的視角,總結幾種個人常用的內網穿透,內網代理工具,介紹其簡單原理和使用方法。
0x01 nps-npc1.1 簡介nps是一款輕量級、高性能、功能強大的內網穿透代理服務器。目前支持tcp、udp流量轉發,可支持任何tcp、udp上層協議(訪問內網網站、本地支付接口調試、ssh訪問、遠程桌面,內網dns解析等等……),此外還支持內網http代理、內網socks5代理、p2p等,並帶有功能強大的web管理端。
![](https://imageproxy.pixnet.cc/imgproxy?url=https://drbanana.ml/img/68747470733a2f2f6d6d62697a2e717069632e636e2f6d6d62697a5f6a70672f6c507776676b4d774c4e68335342314c326d466139484934636e4154305565685949346547676e77644b455742434f587069637441475a4634333678374654503362634167796a5072385473676962486961583334574848772f3634303f77785f666d743d6a70656726616d703b777866726f6d3d3526616d703b77785f6c617a793d3126616d703b77785f636f3d31.webp)
https://github.com/ehang-io/nps/releases
安裝配置
找到自己服務器相應版本的server:
cd~wgethttps://github.com/cnlh/nps/releases/download/v0.23.2/linux_amd64_server.tar.gztarxzvflinux_amd64_server.tar.gzcd~/nps在nps目錄下面會有一個nps可執行文件、conf配置目錄和web網頁目錄,我們只需要修改conf/nps.conf即可:
vimconf/nps.conf需要改一下#web下面的幾個參數,
web_host=服務器IP或者域名web_username=admin(登錄用戶名)web_password=你的密碼web_port=8080(web管理端口)修改#bridge可以更改 NPC的連接端口。比如我們拿到一台權限受限的服務器,有防火牆,可能只有部分端口(80,443)可以出網,就需要修改成出網端口。
##bridgebridge_type=tcpbridge_port=443#修改連接端口bridge_ip=0.0.0.0啟動
#Mac/Linux./npstest|start|stop|restart|status測試配置文件|啟動|停止|重啟|狀態#Windowsnps.exetest|start|stop|restart|status測試配置文件|啟動|停止|重啟|狀態![](https://imageproxy.pixnet.cc/imgproxy?url=https://drbanana.ml/img/68747470733a2f2f6d6d62697a2e717069632e636e2f6d6d62697a5f706e672f6c507776676b4d774c4e68335342314c326d466139484934636e415430556568376961313861453951384d524c634b4a53393949654f5635726a514a7a5a317852486f6f5769626f51464b344d79453543656f453469626961412f3634303f77785f666d743d706e6726616d703b777866726f6d3d3526616d703b77785f6c617a793d3126616d703b77785f636f3d31.webp)
新建好客戶端後,也可以在+中看到,詳細的客戶端連接命令:
![](https://imageproxy.pixnet.cc/imgproxy?url=https://drbanana.ml/img/68747470733a2f2f6d6d62697a2e717069632e636e2f6d6d62697a5f6a70672f6c507776676b4d774c4e68335342314c326d466139484934636e415430556568776561614f5342573837496543624c676337485737713439436b4773717278666963765053734664766b4d6962466368555342396a6348772f3634303f77785f666d743d6a70656726616d703b777866726f6d3d3526616d703b77785f6c617a793d3126616d703b77785f636f3d31.webp)
在客戶端界面可以通過新增的方式添加客戶端連接,每一個連接的vkey都是唯一區分的。
每一個客戶端,在建立連接後,都可以建立多個不同協議的隧道,這一個個隧道就是不同的代理了。
![](https://imageproxy.pixnet.cc/imgproxy?url=https://drbanana.ml/img/68747470733a2f2f6d6d62697a2e717069632e636e2f6d6d62697a5f6a70672f6c507776676b4d774c4e68335342314c326d466139484934636e415430556568787077334950475a6d644d4445776c75305a4c5571736669623374746e6f7375446c754963627a35675879464634713658345a314156512f3634303f77785f666d743d6a70656726616d703b777866726f6d3d3526616d703b77785f6c617a793d3126616d703b77785f636f3d31.webp)
通過不同的協議和端口就可以連接代理的內網機器。
0x02 frp2.1 簡介frp 是一個專注於內網穿透的高性能的反向代理應用,支持 TCP、UDP、HTTP、HTTPS 等多種協議。可以將內網服務以安全、便捷的方式通過具有公網 IP 節點的中轉暴露到公網。
![](https://imageproxy.pixnet.cc/imgproxy?url=https://drbanana.ml/img/68747470733a2f2f6d6d62697a2e717069632e636e2f6d6d62697a5f6a70672f6c507776676b4d774c4e68335342314c326d466139484934636e41543055656853775636444d633065685241436f7833523869627469624b594b5142676e64397863734d5855524c67666d4769626e6869636830465a567154672f3634303f77785f666d743d6a70656726616d703b777866726f6d3d3526616d703b77785f6c617a793d3126616d703b77785f636f3d31.webp)
下載:https://github.com/fatedier/frp/releases
以下內容摘自:https://segmentfault.com/a/1190000021876836
修改 frps.ini 文件,為了安全起見,這裡最好配置一下身份驗證,服務端和客戶端的 common 配置中的token參數一致則身份驗證通過:
#frps.ini[common]bind_port=7000#用於身份驗證,請自行修改,要保證服務端與客戶端一致token=abcdefgh啟動 frps:
./frps-c./frps.ini修改 frpc.ini 文件,假設 frps 所在服務器的公網 IP 為 x.x.x.x:
#frpc.ini[common]server_addr=x.x.x.xserver_port=7000#用於身份驗證,請自行修改,要保證服務端與客戶端一致token=abcdefgh[rdp]type=tcplocal_ip=127.0.0.1local_port=3389remote_port=6000啟動 frpc:
./frpc-c./frpc.ini通過 rdp 訪問遠程的機器,地址為:
x.x.x.x:6000開機自啟
針對 Windows 系統,為了便於使用,可以配置一下開機的時候靜默啟動。
在 frpc.exe 的同級目錄創建一個 start_frpc.vbs:
'start_frpc.vbs'請根據實際情況修改路徑CreateObject("WScript.Shell").Run"""D:\ProgramFiles\frp_windows_amd64\frpc.exe"""&"-c"&"""D:\ProgramFiles\frp_windows_amd64\frpc.ini""",0複製 start_frpc.vbs 文件,打開以下目錄,注意將
<USER_NAME>改為你的用戶名:
C:\Users\<USER_NAME>\AppData\Roaming\Microsoft\Windows\StartMenu\Programs\Startup鼠標右擊,粘貼為快捷方式即可。
frps 的部署步驟同上。
啟動 frpc,配置如下:
#frpc.ini[common]server_addr=x.x.x.xserver_port=7000#用於身份驗證,請自行修改,要保證服務端與客戶端一致token=abcdefgh[ssh]type=tcplocal_ip=127.0.0.1local_port=22remote_port=6000通過 SSH 訪問內網機器,假設用戶名為 test:
ssh-oPort=6000test@x.x.x.x有時想要讓其他人通過域名訪問或者測試我們在本地搭建的 Web 服務,但是由於本地機器沒有公網 IP,無法將域名解析到本地的機器,通過 frp 就可以實現這一功能,以下示例為 http 服務,https 服務配置方法相同, vhost_http_port 替換為 vhost_https_port, type 設置為 https 即可。
修改 frps.ini 文件,設置 http 訪問端口為 8080:
#frps.ini[common]bind_port=7000vhost_http_port=8080#用於身份驗證,請自行修改,要保證服務端與客戶端一致token=abcdefgh啟動 frps:
./frps-c./frps.ini修改 frpc.ini 文件,假設 frps 所在的服務器的 IP 為 x.x.x.x,local_port 為本地機器上 Web 服務對應的端口, 綁定自定義域名www.yourdomain.com:
#frpc.ini[common]server_addr=x.x.x.xserver_port=7000#用於身份驗證,請自行修改,要保證服務端與客戶端一致token=abcdefgh[web]type=httplocal_port=80custom_domains=www.yourdomain.com啟動 frpc:
./frpc-c./frpc.ini將www.yourdomain.com的域名 A 記錄解析到 IPx.x.x.x,如果服務器已經有對應的域名,也可以將 CNAME 記錄解析到服務器原先的域名。
通過瀏覽器訪問http://www.yourdomain.com:8080即可訪問到處於內網機器上的 Web 服務。
通過static_file插件可以對外提供一個簡單的基於 HTTP 的文件訪問服務。
frps 的部署步驟同上。
啟動 frpc,啟用static_file插件,配置如下:
#frpc.ini[common]server_addr=x.x.x.xserver_port=7000#用於身份驗證,請自行修改,要保證服務端與客戶端一致token=abcdefgh[test_static_file]type=tcpremote_port=6000plugin=static_file#要對外暴露的文件目錄plugin_local_path=/tmp/file#訪問url中會被去除的前綴,保留的內容即為要訪問的文件路徑plugin_strip_prefix=staticplugin_http_user=abcplugin_http_passwd=abc通過瀏覽器訪問http://x.x.x.x:6000/static/來查看位於/tmp/file目錄下的文件,會要求輸入已設置好的用戶名和密碼。
2.4 常用功能通過瀏覽器查看 frp 的狀態以及代理統計信息展示。
註:Dashboard 尚未針對大量的 proxy 數據展示做優化,如果出現 Dashboard 訪問較慢的情況,請不要啟用此功能。
需要在 frps.ini 中指定 dashboard 服務使用的端口,即可開啟此功能:
[common]dashboard_port=7500#dashboard用戶名密碼,默認都為admindashboard_user=admindashboard_pwd=admin打開瀏覽器通過http://[server_addr]:7500訪問 dashboard 界面,用戶名密碼默認為admin。
這兩個功能默認是不開啟的,需要在 frpc.ini 中通過配置來為指定的代理啟用加密與壓縮的功能,壓縮算法使用 snappy:
#frpc.ini[ssh]type=tcplocal_port=22remote_port=6000use_encryption=trueuse_compression=true如果公司內網防火牆對外網訪問進行了流量識別與屏蔽,例如禁止了 SSH 協議等,通過設置use_encryption = true,將 frpc 與 frps 之間的通信內容加密傳輸,將會有效防止流量被攔截。
如果傳輸的報文長度較長,通過設置use_compression = true對傳輸內容進行壓縮,可以有效減小 frpc 與 frps 之間的網絡流量,加快流量轉發速度,但是會額外消耗一些 CPU 資源。
從 v0.25.0 版本開始 frpc 和 frps 之間支持通過 TLS 協議加密傳輸。通過在frpc.ini的common中配置tls_enable = true來啟用此功能,安全性更高。
為了端口復用,frp 建立 TLS 連接的第一個字節為 0x17。
注意:啟用此功能後除 xtcp 外,不需要再設置 use_encryption。
目前支持在客戶端的代理配置中設置代理級別的限速,限制單個 proxy 可以占用的帶寬。
#frpc.ini[ssh]type=tcplocal_port=22remote_port=6000bandwidth_limit=1MB在代理配置中增加bandwidth_limit字段啟用此功能,目前僅支持MB和KB單位。
在 frpc 的配置文件中可以指定映射多個端口,目前只支持 tcp 和 udp 的類型。
這一功能通過range:段落標記來實現,客戶端會解析這個標記中的配置,將其拆分成多個 proxy,每一個 proxy 以數字為後綴命名。
例如要映射本地 6000-6005, 6007 這 6 個端口,主要配置如下:
#frpc.ini[range:test_tcp]type=tcplocal_ip=127.0.0.1local_port=6000-6006,6007remote_port=6000-6006,6007實際連接成功後會創建 8 個 proxy,命名為test_tcp_0, test_tcp_1 ... test_tcp_7。
0x03 ew3.1 簡介EW 是一套便攜式的網絡穿透工具,具有 SOCKS v5服務架設和端口轉發兩大核心功能,可在複雜網絡環境下完成網絡穿透。但是,現在工具已經不更新了。。。
![](https://imageproxy.pixnet.cc/imgproxy?url=https://drbanana.ml/img/68747470733a2f2f6d6d62697a2e717069632e636e2f6d6d62697a5f6a70672f6c507776676b4d774c4e68335342314c326d466139484934636e415430556568636c7268596b55724335666963646962644b624b675a6b5a54555a597a415a677035766158634d34683766516e6269616471386772623349772f3634303f77785f666d743d6a70656726616d703b777866726f6d3d3526616d703b77785f6c617a793d3126616d703b77785f636f3d31.webp)
以下使用方法均摘自:http://rootkiter.com/EarthWorm/
以下所有樣例,如無特殊說明代理端口均為1080,服務均為SOCKSv5代理服務.
該工具共有 6 種命令格式(ssocksd、rcsocks、rssocks、lcx_slave、lcx_listen、lcx_tran)。
這個操作具體分兩步:
a) 先在一台具有公網 ip 的主機A上運行以下命令:
$./ew-srcsocks-l1080-e8888b) 在目標主機B上啟動 SOCKS v5 服務 並反彈到公網主機的 8888 端口
$./ew-srssocks-d1.1.1.1-e8888成功。
工具中自帶的三條端口轉發指令, 它們的參數格式分別為:
$./ew-slcx_listen-l1080-e8888$./ew-slcx_tran-l1080-f2.2.2.3-g9999$./ew-slcx_slave-d1.1.1.1-e8888-f2.2.2.3-g9999通過這些端口轉發指令可以將處於網絡深層的基於TCP的服務轉發至根前,比如 SOCKS v5。首先提供兩個「二級級聯」本地SOCKS測試樣例:
a)lcx_tran的用法
$./ew-sssocksd-l9999$./ew-slcx_tran-l1080-f127.0.0.1-g9999b)lcx_listen、lcx_slave的用法
$./ew-slcx_listen-l1080-e8888$./ew-sssocksd-l9999$./ew-slcx_slave-d127.0.0.1-e8888-f127.0.0.1-g9999再提供一個「三級級聯」的本地SOCKS測試用例以供參考
$./ew-srcsocks-l1080-e8888$./ew-slcx_slave-d127.0.0.1-e8888-f127.0.0.1-g9999$./ew-slcx_listen-l9999-e7777$./ew-srssocks-d127.0.0.1-e7777數據流向:SOCKS v5 -> 1080 -> 8888 -> 9999 -> 7777 -> rssocks
0x04 ngrok4.1 簡介ngrok 是一個反向代理,通過在公共端點和本地運行的 Web 服務器之間建立一個安全的通道,實現內網主機的服務可以暴露給外網。ngrok 可捕獲和分析所有通道上的流量,便於後期分析和重放,所以ngrok可以很方便地協助服務端程序測試。
4.2 特點![](https://imageproxy.pixnet.cc/imgproxy?url=https://drbanana.ml/img/68747470733a2f2f6d6d62697a2e717069632e636e2f6d6d62697a5f6a70672f6c507776676b4d774c4e68335342314c326d466139484934636e415430556568585a366b7834396f3559704367713058317043354b775369635544394369626f777652456a55546a30646b72794a4e4f34776466577159412f3634303f77785f666d743d6a70656726616d703b777866726f6d3d3526616d703b77785f6c617a793d3126616d703b77785f636f3d31.webp)
可以通過官網的UI界面查看數據包和流量等等(但是要付費==)
![](https://imageproxy.pixnet.cc/imgproxy?url=https://drbanana.ml/img/68747470733a2f2f6d6d62697a2e717069632e636e2f6d6d62697a5f6a70672f6c507776676b4d774c4e68335342314c326d466139484934636e4154305565685258374946325750626b6c466e4f5266444e77734737365630546c634231306963786f384742364f5864324375717a4e4c66384f7a39672f3634303f77785f666d743d6a70656726616d703b777866726f6d3d3526616d703b77785f6c617a793d3126616d703b77785f636f3d31.webp)
還可以通過一些命令將內網的文件和其他TCP服務 暴露到公網中。
有授權的設置文件共享
ngrokhttp-auth="user:password"file:///Users/alan/share無授權的設置文件共享
ngrokhttp"file:///C:\Users\alan\PublicFolder"將主機的3389的TCP端口暴露到公網
ngroktcp3389參考資料[1]ngrok參考: https://ngrok.com/docs
[2]內網滲透之內網穿透: https://xz.aliyun.com/t/7701
[3]開源內網穿透工具frp簡單使用教程: https://segmentfault.com/a/1190000021876836
來源:https://www.heibai.org/2053.html
用心發掘優質開源項目,歡迎關注,歡迎點讚分享!
歷史優質開源項目推薦地址:Github 掘金計劃。
計算機基礎:精選計算機基礎(操作系統、計算機網絡、算法、數據結構)相關的開源項目。
神器工具: 一些好用的插件、軟件、網站。
程序人生:編程經歷、英語學習、延壽指南。
項目實戰:精選實戰類型的開源項目。