內網穿透工具總結

前言

之前寫了一篇搭建http隧道的文章,用來總結在不出網的情況下如何內網滲透。所以這里就再總結一下在出網的情況下用來內網穿透的好用工具。

frp

frp 簡介

frp 使用go語言開發,是一款高性能的反向代理應用,可以輕松地進行內網穿透,對外網提供服務。frp支持 TCP、UDP、KCP、HTTP、HTTPS等協議類型。

frp 下載

https://github.com/fatedier/frp/releases?after=v0.31.0 下載amd文件,測試使用0.28.2版本

frp 配置文件

下載好后,先看一下frp的相關文件
服務段frps.ini

[common]
# 通用設置
bind_addr = 0.0.0.0
bind_port = 7000
# frp 監聽地址
bind_udp_port = 7001
# 配置udp端口
kcp_bind_port = 7000
# 用于kcp協議的udp端口,如果未設置,則在frps中禁用kcp
proxy_bind_addr = 127.0.0.1
# 代理服務器綁定地址
vhost_http_port = 80
vhost_https_port = 443
# 配置http與https端口
dashboard_addr = 0.0.0.0
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
# 配置dashboard以查看儀表盤與登陸信息
enable_prometheus = true
# 普羅米修斯運維服務
log_file = ./frps.log
# 日志路徑
log_level = info
log_max_days = 3
# 日志信息和日志記錄最大時間
disable_log_color = false
# 禁用日志顏色,默認值為false
detailed_errors_to_client = true
# 是否將錯誤信息發送到frpc。默認情況下true。
authentication_method = token
# 授權驗證方式
authenticate_heartbeats = false
# 是否在發送到frp的心跳中包含身份驗證令牌,默認false
authenticate_new_work_conns = false
# 是否在發送到frp的新工作連接中包含身份驗證令牌。默認false
token = 12345678
# 秘鑰
oidc_client_id =
# 用于在OIDC身份驗證中獲取令牌的客戶端ID
oidc_client_secret = 
# 用于在OIDC身份驗證中獲取令牌的客戶端密碼
oidc_audience = 
# 指定OIDC身份驗證中令牌的訪問群體
oidc_token_endpoint_url = 
# 如果AuthenticationMethod =="oidc",它將用于獲取OIDC令牌
allow_ports = 2000-3000,3001,3003,4000-50000
# 允許的端口
max_pool_count = 5
# 僅允許frpc綁定您列出的端口
max_ports_per_client = 0
# pool_count的最大值
tls_only = false
# tlsonly指定是否僅接受TLS加密連接,默認false
subdomain_host = frps.com
# 當測試子域時,路由使用的主機
tcp_mux = true
# 使用tcp流多路復用,默認為true
[plugin.user-manager]
addr = 127.0.0.1:9000
path = /handler
ops = Login
# 插件管理
[plugin.port-manager]
addr = 127.0.0.1:9001
path = /handler
ops = NewProxy
# 插件管理

客戶端frpc.ini

[common]
# 通用設置
server_addr = 0.0.0.0
server_port = 7000
# 服務端配置
http_proxy = http://user:passwd@192.168.1.128:8080
# 通過http代理或socks5代理連接frps
log_file = ./frps.log
# 日志路徑
log_level = info
log_max_days = 3
# 日志信息和日志記錄最大時間
disable_log_color = false
# 禁用日志顏色,默認值為false
token = 12345678
# 用于身份驗證
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin
# 通過api設置frpc控制臺
pool_count = 5
# 連接將提前建立,默認值為零
tcp_mux = true
# 使用tcp流多路復用,默認為"true"
user = your_name
# 更改代理名稱
login_fail_exit = true
# 第一次登錄失敗時是否退出程序,默認true
protocol = TCP
# 用于連接服務器的通信協議,支持tcp,kcp,websocket。默認tcp協議。
tls_enable = true
# 如果tls_enable為true,則frpc將通過tls連接frps
dns_server = 8.8.8.8
# 指定一個dns服務器,因此frpc將使用此服務器代替默認服務器
meta_var1 = 123
meta_var2 = 234
# 客戶端的其他元信息


[ssh]
# 支持 tcp | udp | http | https | stcp | xtcp,默認為tcp
type = tcp
local_ip = 127.0.0.1
local_port = 22
# 限制此代理的帶寬
use_encryption = false
# 對frps和frpc之間的消息進行加密,默認為false
use_compression = false
# 是否壓縮,默認fasle
remote_port = 6001
# 設置遠程監聽端口

group = test_group
# 設置組
group_key = 123456
# 設置組密碼
health_check_type = TCP
# frpc連接本地服務的端口以檢測其健康狀態
health_check_timeout_s = 3
# 設置檢查連接超時時間
health_check_max_failed = 3
# 設置連續3次失敗,則代理將從frps中刪除
health_check_interval_s = 10
# 設置每10秒進行一次健康檢查
meta_var1 = 123
meta_var2 = 234
# 每個代理的其他元信息

以下就是一些實例:
[ssh_random]
[range:tcp_port]
[DNS]
[range:udp_port]
[web01]
[web02]

frp使用

搭建socks5隧道

frps.ini

[common]
bind_addr = 0.0.0.0
# 綁定的ip,為本機
bind_port = 7000
# 綁定的端口
dashboard_addr = 0.0.0.0
# 管理地址
dashboard_port = 4000
# 管理端口
dashboard_user = root
# 管理的用戶名
dashboard_pwd  = 1qaz2wsx
# 管理用戶的密碼
token = 1qaz2wsx
# 客戶端服務端連接的密碼
heartbeat_timeout = 90
# 心跳超時時間
max_pool_count = 5
# 最大同時連接數

服務端運行命令

./frps -c  frps.ini
image.png

frpc.ini

[common]
server_addr = 106.53.97.7
server_port = 7000
# 服務器綁定的端口
token = 1qaz2wsx
# 連接的密碼
tls_enable = true
# 啟用tls
pool_count = 5        
protocol = tcp
# 協議類型
health_check_type = tcp
health_check_interval_s = 100
# 設置健康檢查時間

[test] 
remote_port = 2333
# 代理的端口
plugin = socks5
# 使用的協議
use_encryption = true
# 是否加密
use_compression = true
# 是否壓縮

先對流量加密,再用TLS加密,保障傳輸安全。
客戶端運行

./frpc -c  frpc.ini
image.png

對應上面test設置的socks5代理。

image.png

使用SocksCap64設置firefox瀏覽內網網頁。

image.png

這里的socks5代理沒有設置用戶名、密碼。
如果設置,需要增加兩個配置項。

plugin_user = cseroad
plugin_passwd = cseroad123

再推薦幾個配置項

tls_enable = true      # 從0.25.0版本開始 frp 支持通過 TLS 協議加密傳輸
use_encryption = true  # 通信內容加密傳輸
use_compression = true # 是否壓縮

wireshark抓取未配置這幾項之前的通信流量。

image.png

可以顯而易見看到來源地址,目的地址,通信的端口,以及正在訪問的網頁。

添加上面幾項后,再次抓取數據包,可以看到通信內容已經加密。

image.png

防護手法:可以在流量設備上禁止gryphon協議,因為frp每次連接都會有gryphon協議的包去認證frp服務器。

搭建tcp隧道

frps.ini

[common]
bind_addr = 0.0.0.0
# 綁定的ip,為本機
bind_port = 7000
# 綁定的端口
dashboard_addr = 0.0.0.0
# 管理地址
dashboard_port = 4000
# 管理端口
dashboard_user = root
# 管理的用戶名
dashboard_pwd  = 1qaz2wsx
# 管理用戶的密碼
token = 1qaz2wsx
# 客戶端服務端連接的密碼
heartbeat_timeout = 90
# 心跳超時時間
max_pool_count = 5
# 最大同時連接數

frpc.ini

[common]
server_addr = 109.xxx.xxx.9
server_port = 7000
token = 1qaz2wsx
tls_enable = true

[test]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 33389
use_encryption = true
use_compression = true

訪問公網的33389即可訪問客戶端的3389端口,完美實現端口轉發。

image.png

補充:
linux后臺運行

nohup ./frps -c frps.ini >/dev/null 2>&1 &

停止方式

ps -aux|grep frp| grep -v grep  # 找到進程
kill -9 進程號   # 殺死進程

frp 的缺點是需要落地配置文件。
當然,uknowsec 大佬改造出了配置文件不落地的方案。https://github.com/uknowsec/frpModify

nps

nps簡介

nps也是go語言編寫,是一款強大的內網穿透工具。同樣支持tcp、udp流量轉發、內網http代理、內網socks5代理、p2p等,并帶有強大的web管理端。比frp更強大。

nps下載

https://github.com/ehang-io/nps/releases/tag/v0.25.1 下載amd文件

nps配置

下載后查看一下文件目錄。
server端

image.png

在nps目錄下有一個nps可執行文件、conf配置目錄和web網頁目錄,我們使用的時候只需要修改conf/nps.conf即可。
以下表格來源 官方文檔

名稱 含義
web_port web管理端口
web_password web界面管理密碼
web_username web界面管理賬號
web_base_url web管理主路徑,用于將web管理置于代理子路徑后面
bridge_port 服務端客戶端通信端口
https_proxy_port 域名代理https代理監聽端口
http_proxy_port 域名代理http代理監聽端口
auth_key web api密鑰
bridge_type 客戶端與服務端連接方式kcp或tcp
public_vkey 客戶端以配置文件模式啟動時的密鑰,設置為空表示關閉客戶端配置文件連接模式
ip_limit 是否限制ip訪問,true或false或忽略
flow_store_interval 服務端流量數據持久化間隔,單位分鐘,忽略表示不持久化
log_level 日志輸出級別
auth_crypt_key 獲取服務端authKey時的aes加密密鑰,16位
p2p_ip 服務端Ip,使用p2p模式必填
p2p_port p2p模式開啟的udp端口
pprof_ip debug pprof 服務端ip
pprof_port debug pprof 端口
disconnect_timeout 客戶端連接超時,單位 5s,默認值 60

client端

image.png

首先客戶端有多個使用方式。

  1. 可以直接無配置文件使用
./npc -server=ip:port -vkey=web界面中顯示的密鑰
  1. 也可以注冊到系統服務進行使用
    如linux下
sudo ./npc install 其他參數(例如-server=xx -vkey=xx或者-config=xxx) 注冊
sudo npc start  啟動
sudo npc stop   停止
sudo npc uninstall  卸載
  1. 也可以配置文件進行是使用,這就類似frp了。
./npc -config=npc配置文件路徑

查看npc.conf配置文件

名稱 含義
server_addr 服務端ip/域名:port
conn_type 與服務端通信模式(tcp或kcp)
vkey 服務端配置文件中的密鑰(非web)
username socks5或http(s)密碼保護用戶名(可忽略)
password socks5或http(s)密碼保護密碼(可忽略)
compress 是否壓縮傳輸(true或false或忽略)
crypt 是否加密傳輸(true或false或忽略)
rate_limit 速度限制,可忽略
flow_limit 流量限制,可忽略

再往下示具體模式進行配置。
具體參考官方文檔

nps使用

server端啟用nps
編輯nps.conf配置文件

appname = nps
#Boot mode(dev|pro)
runmode = dev

##bridge
#底層通信協議,默認tcp,可選用kcp協議
bridge_type=tcp
#底層通信端口,默認8024,如已被占用請指定其他端口
bridge_port=8024
bridge_ip=0.0.0.0

#當客戶端以配置文件模式啟動時會用到的驗證密鑰,可自行設置
public_vkey=cseroad

#web 控制臺
web_host=10.xx.xx.7
web_username=cseroad
web_password=cseroad.com
web_port=18080
web_ip=0.0.0.0

啟動nps

./nps start
image.png

訪問18080端口,輸入控制臺用戶密碼,即可登錄

image.png

搭建socks5隧道

新增一條客戶端。

image.png

設置"不以配置文件運行",且壓縮加密。

image.png

客戶端運行web控制臺給出的命令。

image.png

可以在無配置文件的情況下,上線成功。運行成功后status狀態變為"online"

這時候就可以增加socks5代理。

image.png

這時候就可以使用SocksCap64 設置端口,以及basic權限認證的用戶名密碼。訪問內網。

image.png

當然也可以選擇加載npc.conf配置文件來運行npc,注意也要設置相對應的basic權限認證。

搭建tcp隧道

同樣創建tcp隧道。

image.png

用mac的microsoft remote desktop 遠程連接公網的33389即可。完美實現端口轉發。

image.png

metasploit

metasploit作為紅隊神器,本身也有內網穿透的功能。
在獲取session之后,可進行端口轉發以及創建socks5隧道。

轉發端口

portfwd用來轉發單個端口

portfwd add -l 33389 –p 3389 -r 10.211.55.19
# 添加轉發
portfwd delete -l 33389 –p 3389 -r 10.211.55.19
# 刪除轉發
portfwd list
# 列出當前轉發的列表
portfwd flush
# 移除所有轉發端口

創建socks5隧道

在有session基礎上,先添加路由

run get_local_subnets
# 獲取路由
run autoroute -s 10.211.55.0/24
# 添加路由
run autoroute -p
# 顯示路由
image.png

再創建socks5隧道

use auxiliary/server/socks5
set srvhost 127.0.0.1
set srvport 1080
run

沒有設置用戶名和密碼。

image.png

metasploit同時具有socks4和socks5兩個模塊。socks4只支持TCP協議,socks5支持TCP和UDP。
再使用proxychains命令進行代理訪問

image.png

cobalt strike

cobalt strike也一樣具有內網穿透的能力。同樣首先需要一個beacon

image.png

端口轉發

beacon自帶了一個端口轉發的命令rportfwd

rportfwd 本機端口 目標ip 目標端口  

創建socks4隧道

選擇SOCKS Server

image.png
image.png

可用來創建socks4隧道。
對應的代理也需要設置為socks4協議

image.png

可成功訪問。

image.png

在創建成功后,可以使用"Proxy Pivots"代理metasploit走內網。

image.png

復制該命令到metasploit配置里。該設置為全局設置,一次設置,metasploit各個模塊全部可用。
比如使用smb_login模塊

setg Proxies socks4:172.16.252.11:1080    設置本地的msf走cs的socks4代理
setg ReverseAllowProxy true               建立雙向通道
use auxiliary/scanner/smb/smb_version     探測smb版本
image.png

其余內網穿透工具,如ew、ngork因為實際應用、免殺性就不多記錄了。

總結

  1. 實戰時注意將通信流量進行加密、壓縮
  2. 注意將socks5代理設置為認證狀態
  3. 在使用tcp協議上進行加密、壓縮還不行的情況下,不妨試一下kcp協議

參考資料

https://blog.arey.fun/archives/8/
https://whoamianony.top/2020/07/07/shen-tou-ce-shi/nei-wang-chuan-tou-gong-ju-frp-de-shi-yong/#toc-heading-5

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,461評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,538評論 3 417
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,423評論 0 375
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,991評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,761評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,207評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,268評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,419評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,959評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,782評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,528評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,222評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,653評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,901評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,678評論 3 392
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,978評論 2 374

推薦閱讀更多精彩內容