4. 無線區網監聽環境建置
4.4 通訊協定辨識
4.4.3 FTP
(1) FTP 特徵
FTP 通訊協定是由 RFC 959 File Transfer Protocol(FTP)所定義。圖 18 為 FTP 傳輸架構,Server 端與 Client 端之間共建立兩個 Socket 連結,一個以 FTP 通訊協定預設之通訊埠 21 作為兩者間之通訊連線,另一個連結則是作為 Client 端傳送指令與 Server 端回應結果之用。
圖 18 : FTP 架構
Client 透過 FTP 通訊協定傳至 Server 端的指令如表 19 是經過對應轉換的:
表 19 : FTP 客戶端與伺服器端指令對照表
Client Server 說明
User <username> USER <username> 使用者帳號 Password <password> PASS <password> 使用者密碼 bye/quit QUIT 登出 FTP Server ascii TYPE A ASCII 模式 binary TYPE I Binary 模式 get <filename> RETR <filename> 下載檔案 put <filename> STOR <filename> 上傳檔案
dir LIST 瀏覽 FTP Server 目錄 ls NLST 瀏覽 FTP Server 目錄
Server 端 FTP 指令均以大寫表示,分別對應於一個 Client 端指令,共分為以 下幾大類:
• 存取控制指令(Access Control Command):定義使用者的登錄名稱及密 碼。
• 傳輸指令(Transfer Command):定義資料或檔案的傳輸模式。
• 服務指令(Service Command):定義處理檔案如上傳(Upload)、下載
(Download)等的指令。
在此只針對傳輸檔案指令描述,由於上傳下載均為監聽 FTP 協定最重要之 指令,故描述服務指令 (Service command) 如下:
1. RETR:為 Retrieve(取得)的縮寫,用於自 FTP Server 下載檔案之用,
下表 20 為 RETR 的語法以及與 Client 端指令的對應:
表 20: RETR 語法
Client Server
get <filename> RETR<filename>
2. STOR:為 Store(儲存)的縮寫,用於上傳檔案至 FTP Server 之用,表 21 為 STOR 的語法以及與 Client 端指令的對應:
表 21: STOR 語法
Client Server
put <filename> STOR <filename>
3. APPE:為 Append(附加)的縮寫,當執行上傳檔案指令時,若該檔案已 存在於 FTP Server 端,則會附加於原本的檔案內容之後,其語法為:
APPE <filename>
4. ABOR:為 Abort(中斷)的縮寫,用於中止 FTP Server 執行之前 Client 端所下的指令。
5. RNFR、RNTO:分別為 Rename From 與 Rename To 的縮寫,用於變更 FTP Server 端的檔案名稱,其語法為:
RNFR <filename>
cd <pathname> CWD <pathname> 變更 FTP Server 目錄 pwd XPWD 顯示 FTP Server 目前的
工作目錄
RNTO <filename>
6. DELE:為 Delete(刪除)的縮寫,用於刪除 FTP Server 端檔案,表 22 為 DELE 的語法以及與 Client 端指令的對應:
表 22: DELE 語法
Client Server
delete<filename> DELE<filename>
7. LIST:列出 FTP Server 端目錄與檔案的詳細內容,包括建檔日期、時間、
檔案大小、目錄與檔案名稱等,LIST 語法與 Client 端指令的對應如表 23。
表 23: LIST 語法
Client Server
dir [<pathname>] LIST [<pathname>]
若系統分析以上 FTP control command 並監聽對應的 Data connection tcp port,便可追蹤無線網路使用者使用 FTP 傳輸檔案。
(2) 判斷 FTP 協定之正規表示式
^220[\x09-\x0d -~]*ftp 此規則可判斷較多,但較慢
^220[\x09-\x0d -~]*ftp|331[\x09-\x0d -~]*password 此規則更精準判斷,但需要較久的時間 (3 個封包)
^220[\x09-\x0d -~]*\x0d\x0aUSER[\x09-\x0d -~]*\x0d\x0a331 此規則精準判斷,但需要較久的時間 (2 個封包)
^220[\x09-\x0d -~]*\x0d\x0aUSER[\x09-\x0d -~]*\x0d\x0a
圖 19 :220 Response 220 Closed remote connection 封包訊息
如圖 19 所示為 Response 擷取封包訊息,封包訊息為 220 closed by remote connection。
圖 20 :331 Password required
圖 20 為 Response: 331 Password required,訊息為 331 Password required for shawnjohnjr。
圖 21 : 230 Response user logged in
如(Response user logged in)封包擷取圖 21 所示,FTP 訊息主體為 230 shawnjohnjr logged in。
圖 22 : Change working directory
Request file 封包擷取如圖 22 中所示,FTP 訊息主體為 CWD + 目錄路徑。
圖 23 : Retrieve data
圖 24: 250 完成傳檔
從圖 23 封包細節內容可以獲知 mp3 檔案的傳輸;圖 24 檔案傳輸完成。
以下為 FTP Application 層傳輸範例:
USER shawnjohnjr
331 Password required for shawnjohnjr .
PASS vul3yk6a83xu4u83
230 User shawnjohnjr logged in.
SYST
215 UNIX Type: L8 , CP:950
FEAT
211-Extensions supported:
SIZE
MDTM
MDTM YYYYMMDDHHMMSS filename
XCRC filename;start;end
XMD5 filename;start;end
TVFS
CLNT client_type
LANG
CLNT SmartFTP 2.0.1001
213 client type set to SmartFTP 2.0.1001.
OPTS UTF8 ON
220 UTF8 OPTS ON.
PWD
257 "/" is current directory
CWD
/music/4_.../.../...-.../Ho me
250-[Ul: 0.00MB] [Dl:117230.94MB][Speed:
UL:0,DL:0 KB/s] [Space: 238853MB]
250-[Credits: UnlimitedMB] [Ratio:
Unlimited]
250
"/music/4_.../.../...-...
./Home" is current directory.
PWD 257
"/music/4_.../.../...-...
./Home" is current directory TYPE A
200 Type set to ASCII.
PASV
227 Entering Passive Mode (163,13,202,159,5,122) MLSD
150 Opening ASCII data connection for ls
/music/4_.../.../...-.../
Home.
226-free disk space under this directory : 238853 mb
226 Transfer finished successfully. Data connection closed .
CWD
/music/4_.../.../...-...
250-[Ul: 0.00MB] [Dl: 117230.94MB]
[Speed: UL:0,DL:0 KB/s] [Space:
238853MB]
250-[Credits: UnlimitedMB] [Ratio:
Unlimited]
250
"/music/4_.../.../...-...
." is current directory.
PWD 257
"/music/4_.../.../...-...
." is current directory PASV
227 Entering Passive Mode (163,13,202,159,5,123) MLSD
150 Opening ASCII data connection for ls
/music/4_.../.../...-...
226-free disk space under this directory : 238853 mb
226 Transfer finished successfully. Data connection closed .
CWD /
250 "/" is current directory.
PWD
257 "/" is current directory PASV
227 Entering Passive Mode (163,13,202,165,54,177)
MLSD
150 Opening ASCII data connection for ls /.
226 Transfer finished successfully. Data connection closed .