實戰NPS內網穿透工具入門(三)
NPS工具
0x01 NPS工具介紹
NPS工具是一款使用go語言編寫的輕量級、功能強大的內網穿透工具。支持TCP、UDP流量轉發,支持內網HTTP、SOCKS5代理,同時支持snappy壓縮(節省帶寬和流量)、站點保護、加密傳輸、多路復用、header修改等。同時還支持web圖形化管理。該工具使用簡單,相比于FRP,NPS是圖形化界面,因此配置更加簡單。
NPS工具原理
注意:NPS工具的工作原理和FRP工具的工作原理相似,因此我們只需要對其中某一款工具的原理十分熟悉即可,由于之前寫過一篇十分詳細的FRP的工作原理和使用方法,因此,在這不再贅述,大家可以去看我昨天發的 實戰FRP代理工具內網滲透入門(二)
下面提供NPS的使用文檔和下載地址:
NPS官方使用文檔:https://ehang-io.github.io/nps/#/api NPS下載地址:https://github.com/ehang-io/nps/releases/tag/v0.26.9
NPS服務器端(Linux&Windows):


安裝NPS服務器端
./nps install #linux nps.exe install #windows


進入到conf文件夾中查看nps.conf
appname = nps #Boot mode(dev|pro) runmode = dev #HTTP(S) proxy port, no startup if empty http_proxy_ip=0.0.0.0 http_proxy_port=80 #域名代理http代理監聽端口 https_proxy_port=443 #域名代理https代理監聽端口(一般會修改這兩個端口,避免端口沖突) https_just_proxy=true #default https certificate setting https_default_cert_file=conf/server.pem https_default_key_file=conf/server.key ##bridge bridge_type=tcp #客戶端與服務端連接方式kcp或tcp bridge_port=8024 #服務端客戶端通信端口,也就是說客戶端通過訪問服務端的這個端口可以進行連接 bridge_ip=0.0.0.0 # Public password, which clients can use to connect to the server # After the connection, the server will be able to open relevant ports and parse related domain names according to its own configuration file. public_vkey=123 #客戶端以配置文件模式啟動時的密鑰,設置為空表示關閉客戶端配置文件連接模式 #Traffic data persistence interval(minute) #Ignorance means no persistence #flow_store_interval=1 #服務端流量數據持久化間隔,單位分鐘,忽略表示不持久化 # log level LevelEmergency->0 LevelAlert->1 LevelCritical->2 LevelError->3 LevelWarning->4 LevelNotice->5 LevelInformational->6 LevelDebug->7 log_level=7 #日志輸出級別 #log_path=nps.log #Whether to restrict IP access, true or false or ignore #ip_limit=true #是否限制ip訪問,true或false或忽略 #p2p #p2p_ip=127.0.0.1 #服務端IP,使用p2p模式必填 #p2p_port=6000 #p2p模式開啟的udp端口 #web web_host=a.o.com web_username=admin #web界面管理賬號 web_password=123 #web界面管理密碼 web_port = 8080 #web管理端口,通過訪問該端口可以訪問NPS后臺 web_ip=0.0.0.0 web_base_url= #web管理主路徑,用于將web管理置于代理子路徑后面 web_open_ssl=false web_cert_file=conf/server.pem web_key_file=conf/server.key # if web under proxy use sub path. like http://host/nps need this. #web_base_url=/nps #Web API unauthenticated IP address(the len of auth_crypt_key must be 16) #Remove comments if needed #auth_key=test #web api密鑰 auth_crypt_key =1234567812345678 #獲取服務端authKey時的aes加密密鑰,16位 #allow_ports=9001-9009,10001,11000-12000 #Web management multi-user login allow_user_login=false allow_user_register=false allow_user_change_username=false #extension allow_flow_limit=false allow_rate_limit=false allow_tunnel_num_limit=false allow_local_proxy=false allow_connection_num_limit=false allow_multi_ip=false system_info_display=false #cache http_cache=false http_cache_length=100 #get origin ip http_add_origin_header=false #pprof debug options #pprof_ip=0.0.0.0 #debug pprof 服務端IP #pprof_port=9999 #debug pprof 端口 #client disconnect timeout disconnect_timeout=60 #客戶端連接超時,單位 5s,默認值 60,即 300s = 5mins
注意:在上面的配置文件中,我們主要是要注意以下方面:
①:一般會修改域名代理的端口,避免端口沖突
②:NPS的web頁面默認端口是8080,默認用戶名密碼是admin/123
③:NPS的服務端和客戶端進行連接的默認端口是8024,這個端口可以進行修改,修改之后,在連接時注意使用修改后的端口
④:NPS服務端開啟的端口(也就是我們需要訪問的VPS的端口)不在配置文件中,需要我們web界面中進行配置
NPS客戶端(Linux&Windows):


客戶端共有兩種連接方式,我們都會逐一講述
①:使用vkey進行連接
Windows:npc.exe -server=ip:port -vkey=服務端生成的key Linux:./npc -server=ip:port -vkey=服務端生成的key
②使用配置文件進行連接
windows: npc.exe -config=npc配置文件路徑 linux: ./npc -config=npc配置文件路徑
在客戶端配置文件中,我們主要是修改以下三個參數
server_addr=127.0.0.1:8024 #服務端ip/域名:port conn_type=tcp #與服務端通信模式(tcp或kcp) vkey=123 #服務端配置文件中的密鑰
首先server_addr是需要填寫NPS服務端的IP和端口,conn_type選擇合適的類型(一般選擇TCP),vkey的值設置為服務端配置文件的密鑰。這樣服務端和客戶端就可以進行連接了。
實戰環境
0x01

攻擊機:Windows10
IP地址:192.168.92.11
NPS服務器端:Linux Ubuntu
公網IP:42.1X2.204.XX
靶機內網存在多個服務器網段:
10.130.1.0/16
10.131.10.0/16
10.133.3.0/24
10.128.1.0/24
修改服務器端配置文件中以下兩行,以防端口沖突
http_proxy_port=8081 https_proxy_port=8443

修改完配置文件后,啟動nps服務
./nps start #啟動nps服務 ./nps stop #停止nps服務 ./nps restart #重啟nps服務

瀏覽器輸入42.1X2.204.XX:8080訪問NPS web管理端

輸入admin/123登陸NPS管理界面

新增一個客戶端,這塊新建的客戶端主要是要使用生成的唯一驗證密鑰,通過這個唯一驗證密鑰才能將NPS的服務端和客戶端連接起來,因此至少需要添加一個客戶端。


記住上面的ID為2,點擊左側SOCKS代理,再點擊新增,客戶端ID填上圖中的ID


以上服務器端就配置好了!
實戰滲透
0x02
我們上面介紹客戶端共有兩種連接方式
①:使用vkey進行連接,我們只需要執行以下命令
Windows:npc.exe -server=ip:port -vkey=服務端生成的key Linux:./npc -server=ip:port -vkey=服務端生成的key

②使用配置文件進行連接
修改配置文件

執行如下命令
windows: npc.exe -config=npc配置文件路徑 linux: ./npc -config=npc配置文件路徑

使用以上任意一種方式即可,推薦使用第一張方便快捷。
接下來我們配置一下Proxifier,如果不知道Proxifier的話可以看一下這篇文章實戰reGeorg+Proxifier內網滲透入門(一)

配置完成好我們就可以進行遠程連接啦


接下來我們就可以進行內網滲透啦,擴大自己的資產,請開始你的表演吧!