1. 程式人生 > >wireshark抓包分析之ftp協議的分析

wireshark抓包分析之ftp協議的分析

今天剛剛申請了一個虛擬主機,上傳資料成為問題,Google一下,呵呵噠,看到了flashfxp這個軟體,這個叫什麼鬼東西,原諒小客的英語爛到了極點,下載安裝後,最近正好對協議分析很是感興趣呀,於是,就有了今天這篇處女座的文章,呵呵,個人總是愛說些廢話大笑,好吧,如果你也這麼覺得的話,那咱們就進入正題吧!

wireshark 抓包分析

協議 FTP協議的資料包分析與總結

本文主要是針對在wireshark中的對FTP的資料包的分析,不包含對協議本身的深入分析。

wireshark的基本應用在這裡就不在贅述 了,個人也是個小菜,而且還有點坑的節奏,是吧,至少別人都這麼說的,建議大家看這本書《wireshark資料包分析實戰(第二版)》人民郵電出版社出版。

下面開始我們的正題:

開啟flashfxp軟體,開啟wireshark抓包分析工具,開始抓包分析,連線虛擬主機,在虛擬主機中找到一個檔案,然後下載到本地,斷開ftp服務連線,停止wireshark抓包分析工具。

既然是對ftp感興趣,那當然也是要對ftp的資料包進行分析了,開始分析這個很懶但是卻很聰明的協議吧:

我們在顯示過濾器中輸入過濾條件為:ftp(注意這裡我們應該知道ftp協議時基於tcp協議的,ftp是在tcp協議中的一部分,當裝置識別是看到tcp協議中有ftp協議欄位的部分,就將這個tcp協議識別為ftp協議),我們可以看到,經過顯示過濾器的過濾,關於ftp協議的控制通道的資料內容我們可以看的一清二楚了,

以下就是對每個資料包的分析過程:


呃呃呃?

好吧,讓你失望了,我們是不能先進行ftp控制通道的資料包分析的,唉,疏忽了,原諒我的第一次把,如上圖所示,我們在顯示過濾器中輸入我的虛擬主機的ip,然後進行過濾,我們可以看到整個ftp連線的過程了,下面進行分析我們的報文:

首先,因為ftp是基於tcp傳輸的,其實是在tcp內部,屬於tcp的一部分,只不過是,有了這一部分,我們就吧tcp的資料包認為是ftp的資料包了。

可以看到前三個資料包是tcp的三次握手的連線過程,這裡我們可以看到tcp連線的是ftp伺服器的21埠,這也提醒了我們ftp使用的埠是21,而我的客戶機就直接使用了自動分配的埠了,我們來分析一下tcp的連線過程,可以看到,flags:0x002(syn),這就表示這是一個tcp的請求的報文,而在序列號中(sequence number:0(relative sequence number))表示這是一個相對的序列號,因為是第一次建立握手的過程,這裡就是0,

這是第二個tcp報文,這裡我們可以看到,syn置為了1,而且ack也置為了1,這就表示這是一個應答報文,併為傳送了一個對科幻段的請求報文,這是tcp連結的第二次握手,,這裡的sequence number 置為了1,表示相對的序列號為1,也就是第二次的握手過程,至於第三次的握手過程,同理與第二次,只不過是不在請求,而是隻是有應答報文。以上為tcp的建立連線的過程,有點贅述了。

ftp會話的過程的描述:

tcp的連線建立起來以後,伺服器主動連線了客戶機,至於伺服器的主動連線還是被動連線,我是不太清楚的,為什麼伺服器要這樣連線客戶機,而不是讓客戶機去連線伺服器,這裡的主動與被動我們應該認為是相對於伺服器來說的,而不是客戶機。

首先,伺服器發給客戶機一個對本機的操作的系統的描述,微軟的ftp伺服器

客戶機發送請求,輸入了使用者名稱

伺服器響應客戶機說需要使用者名稱的密碼

客戶機發送密碼給伺服器,

伺服器使用者名稱和密碼驗證成功,允許客戶機登入ftp伺服器

 feat命令是用來請求FTP伺服器列出它的所有的擴充套件命令與擴充套件功能的。屬於主動模式命令!  (借鑑來的,是在忘記了當初老師是怎麼講的了)

按照上面所說的,這裡的顯示應該是對應的伺服器支援的拓展功能吧

下面一條報文的意思是對上面的433號報文的一個應答(這裡個人認為應該是沒有了ftp中的報文的部分,二ftp又是基於tcp的,所以顯示為了tcp報文)

size (這個是本人沒有弄明白的地方,歡迎大家給出解答,查了資料,卻沒有找到)

pwd 客戶算請求主機要顯示使用者所在的路徑,

伺服器顯示客戶所在的路徑

以下引用來自http://www.cnblogs.com/zh2000g/archive/2010/03/02/1676653.html

PORT模式,是客戶端通過PORT命令告訴伺服器端要使用的資料埠號,然後在客戶端主動建立起這個埠的TCP/IP監聽。在進行檔案傳輸的操作時,伺服器來連線客戶端的這個資料埠,進行資料傳輸。

PASV模式,是客戶端通過PASV命令來告訴伺服器端,想使用PASV方式傳輸資料。伺服器收到命令之後,主動在伺服器端建立一個數據埠的TCP/IP監聽,並把這個資料埠號返回客戶端。在進行檔案傳輸的操作時,客戶端去連線伺服器端的這個資料埠,進行資料傳輸。

表明了,這個客戶機向伺服器傳送了監聽,告訴伺服器想使用pasv 的方式進行連線

伺服器回答為進入主動的連線模式,表示要伺服器主動跟客戶機連線

再次建立tcp連線的過程,這個過程是為了資料的傳輸用的,連線建立完畢以後

客戶機請求伺服器顯示所有的目錄

資料連線已經建立,

顯示資料連線後的目錄,開啟ftp-data的報文就會發現,這裡顯示了在ftp伺服器上的根目錄下的所有的子資料夾

資料連線的建立完成。資料傳輸完成,這裡我們需要注意的是,在ftp傳出的過程中,ftp沒傳輸一個數據(檔案)就要建立一個連線,這樣的話,也就是說,我們在用ftp進行資料傳輸的過程中,我們的很大的一部分時間是用來做連線用的,如果我們的檔案數量比較多,這樣的話,我們就建議大家要把檔案壓縮以後再用ftp進行資料傳輸,這樣,就可以減少資料連線建立的次數,從而減少了資料的傳輸時間。


以下的命令為,開啟web的資料夾 cwd

伺服器命令執行成功,並返回客戶端

顯示目錄

客戶端再次請求建立pasv模式,方法請見上面的說明。

請求成功,再次建立伺服器的主動的連線

需要注意的這裡的伺服器返回給客戶端的是一個ip地址(自己的ip地址,也就是虛擬主機的ip,後面的連個數字表明伺服器端要為客戶機開啟的埠號,這裡的計算方法為,前面的數字*256+後面的數字,得到最後的客戶機要連線伺服器是伺服器的埠號)

連線建立,資料傳輸

其中的:

RETR和STOR命令是FTP協議中的下載和上傳命令, 可以針對檔案和目錄.

這裡出現了retr命令也就是對web.html的下載操作了

傳輸(下載)的6個數據包,完成了web.html的下載

連線完成,斷開連線

最後為ftp控制通道的連線的斷開,在這期間,我們應該知道,ftp的控制連結是一直在進行中的,可以看到最後的控制連結才斷開。

本人小菜一枚,沒有實際的經驗,所以文章寫的有點摸不著頭腦,很凌亂,但是我是想一點點的積累,使自己的知識儲備的越來越豐富,希望大家多多指教,初次寫稿,歡迎提出寶貴建議。

最後推薦大家看一下另外的大神寫的blog,希望大神不要告我盜鏈啊!