1. 程式人生 > >玩轉wireshark系列第四篇-抓取ftp包【轉】

玩轉wireshark系列第四篇-抓取ftp包【轉】

https://blog.csdn.net/u011416247/article/details/80872735

(首先宣告一下我也是一名小白,初學wireshark沒多久,我也很願意和大家一起討論wireshark的具體應用。)

本實驗使用的版本是wireshark2.4.7版,選擇“捕獲”-“選項”。

選擇當前連的網,一般選擇流量“起起伏伏”的那個介面。

做ftp實驗的第一個問題就是去哪裡找一個ftp伺服器,我在百度上找遍了所有的ftp伺服器都不能用,沒辦法,只能自己動手搭一個了。

1.在win7上先開啟ftp服務:這裡Internet資訊服務底下的三個包括子項全部需要勾選。點選確定後,可能會要等一會兒,完成後就可以使用FTP服務了。

 

 

2.開啟   計算機--》管理--》   在這裡我們可以看見剛剛新增的服務    (IIS)


 

3.建立一個ftp站點

 

4.點選新增FTP站點後,就是要繼續的新增必要的站點資訊,這裡是:站點名稱以及登入ftp後的站點指定目錄(資料夾),點選下一步。

 

5.站點的地址就寫自己的IP就好,埠21,是ftp控制訊號的預設埠,(埠隨意,儘量不要用已經被佔用了的埠號)。SSL證書選無,有證書配置起來就很麻煩了。IP儘量配一個,用它推薦的那個吧,我的是192.168.1.4,不能自己隨便設一個,這樣會無法訪問。

 

6.身份驗證和授權勾選“基本“和”匿名“,匿名即採用使用者名稱anonymous。允許所有使用者訪問。到這步一個ftp伺服器就搭好了。

 

7.測試訪問ftp伺服器,在“計算機”裡輸入“ftp://192.168.1.4”由於有勾選匿名,訪問的時候無需輸入使用者名稱密碼,當然也可以在瀏覽器裡面訪問。然後可以測試讀寫。

8.要讓別的機子訪問ftp伺服器,需要關閉防火牆,或者針對ftp相關埠設定允許通過的規則(預設為20,21)。

 

之後我在本地訪問自己搭的ftp,出乎意料的是wireshark根本沒有捕獲到FTP資料包,這是為什麼呢?查閱資料之後發現wireshark是捕獲網絡卡的資料包,本地訪問本地必然沒有經過無線網絡卡。所以我找了一臺本區域網上的機子訪問該ftp,終於捕獲到了ftp報文。

從上往下分析一個ftp訪問的過程。下圖是第一個包,表示ftp服務被訪問。(220代表服務就緒)

下圖表示使用者登入的使用者名稱和密碼,使用匿名訪問的。

下圖表示匿名訪問需要輸入email,但是實際上重新整理一下就進去了。

(331代表要求密碼)

用IE代理訪問ftp

使用者登入了(230代表登入因特網)


CWD指令為更改訪問目錄,比如說點進去一個檔案等。

CWD訪問成功。(250代表檔案行為完成)

訪問檔案的格式是ASCII(200代表成功)


FTP採用被動模式。

主動模式(PORT)

如下圖所示,使用者主機直接暴露在網際網路中,使用者連線FTP SERVER使用主動模式遵循以下一個過程:

使用者主機一個隨機埠連線FTP SERVER的TCP21埠進行協商;

使用者主機告訴FTP SERVER,我的XXXX埠已經開啟,你可以放心大膽的連過來;

然後FTP SERVER就用TCP20埠連線使用者主機的XXXX埠,資料傳輸開始。

被動模式(PASV)

當用戶主機前端多了一道防火牆(客戶機使用地址轉換接入網際網路),事情就變的複雜了,首先,主動模式是FTP SERVER連線客戶機,防火牆肯定不幹;即便樂意幹客戶機與伺服器協商的XXXX埠也是隨機埠,你讓迷茫的防火牆情何以堪,這時就需要客戶端軟體使用被動模式主動連線防火牆,這麼一來正合防火牆的胃口。

 

客戶端使用被動模式遵循以下過程:

 

首先使用者使用隨機埠連線FTP SERVER的TCP 21埠進行協商;

FTP SERVER告訴客戶機:我的XXXX埠開放了,你連過來吧;

客戶機使用一個隨機埠連線FTPSERVER的XXXX埠傳輸資料。

(227代表進入被動模式)

列舉該目錄下的檔案

開始傳輸檔案,比如下載到本地。(125代表開啟資料連線,開始傳輸)

傳輸完成。(226代表結束資料連線)

 

FTP協議概述

預設埠資料連線用20號埠,控制連線用21號埠。FTP協議的底層協議是TCP協議。此外它還需要安裝dns服務。

FTP 命令:

1)訪問控制命令:

使用者名稱:USER

密碼: PASS

賬戶: ACCT

改變工作目錄: CWD

返回上層目錄: CDUP

結構裝備: SMNT

重新初始化: REIN

登出: QUIT

2)傳輸引數命令:

資料埠:PORT

被動: PASV

表示型別:TYPE

檔案結構:STRU

F- 檔案

R- 記錄結構

P-頁結構

傳輸模式:MODE

S-流

B-塊

C-壓縮

3)FTP服務命令:

獲得:RETR

儲存:STOR

唯一儲存:STOU

追加:APPE

分配:ALLO

重新開始:REST

重新命名開始:RNFR

重新命名為:RNTO

放棄:ABOR

刪除:DELE

刪除目錄:RMD

新建目錄:MKD

列印工作目錄:PWD

列表:LIST

名字列表:NLST

站點引數:SITE

系統:SYST

狀態:STAT

幫助:HELP

空操作:NOOP

FTP響應:

FTP 響應由3 位數字組成(以3 個數字字元傳遞)後面跟著一些文字。3 位數字的每一位都有特定的意義。允許使用者程序將複雜的響應簡化。

第一位數字標識了響應是好,壞或者未完成。

1)響應的第一位數字可能有以下五個值:

1yz,預備狀態

2yz,完成狀態

3yz,中間狀態

4yz,暫時拒絕狀態

5yz,永久拒絕狀態

2)下面為第二位數字的功能:

x0z 語法- 這種響應指出了語法錯誤。給出的命令不存在、沒有被實現、或多餘。

x1z 資訊- 對於請求資訊的響應,比如對狀態或幫助的請求。

x2z 連線- 關於控制連線和資料連線的響應。

x3z 身份驗證和帳戶- 對登陸過程和帳戶處理的響應。

x4z 目前還未使用。

x5z 檔案系統- 請求傳輸時伺服器檔案系統的狀態或其他檔案系統動作狀態。

3)第三位數字為第二位數字指定的狀態提供了更詳細的意義。

最小實現:

為了讓FTP 能夠不出錯誤的工作,伺服器必需具備以下最小實現:

型別- ASCII 非列印

模式- 流模式

結構- 檔案結構,記錄結構

命令- USER, QUIT, PORT,TYPE, MODE, STRU,相應的預設值,RETR, STOR,NOOP.

傳輸引數的預設值為:

型別- ASCII 非列印

模式- 流模式

結構- 檔案結構

所有主機必需接受上面這些標準的預設值。

(首先宣告一下我也是一名小白,初學wireshark沒多久,我也很願意和大家一起討論wireshark的具體應用。)

本實驗使用的版本是wireshark2.4.7版,選擇“捕獲”-“選項”。

選擇當前連的網,一般選擇流量“起起伏伏”的那個介面。

做ftp實驗的第一個問題就是去哪裡找一個ftp伺服器,我在百度上找遍了所有的ftp伺服器都不能用,沒辦法,只能自己動手搭一個了。

1.在win7上先開啟ftp服務:這裡Internet資訊服務底下的三個包括子項全部需要勾選。點選確定後,可能會要等一會兒,完成後就可以使用FTP服務了。

 

 

2.開啟   計算機--》管理--》   在這裡我們可以看見剛剛新增的服務    (IIS)


 

3.建立一個ftp站點

 

4.點選新增FTP站點後,就是要繼續的新增必要的站點資訊,這裡是:站點名稱以及登入ftp後的站點指定目錄(資料夾),點選下一步。

 

5.站點的地址就寫自己的IP就好,埠21,是ftp控制訊號的預設埠,(埠隨意,儘量不要用已經被佔用了的埠號)。SSL證書選無,有證書配置起來就很麻煩了。IP儘量配一個,用它推薦的那個吧,我的是192.168.1.4,不能自己隨便設一個,這樣會無法訪問。

 

6.身份驗證和授權勾選“基本“和”匿名“,匿名即採用使用者名稱anonymous。允許所有使用者訪問。到這步一個ftp伺服器就搭好了。

 

7.測試訪問ftp伺服器,在“計算機”裡輸入“ftp://192.168.1.4”由於有勾選匿名,訪問的時候無需輸入使用者名稱密碼,當然也可以在瀏覽器裡面訪問。然後可以測試讀寫。

8.要讓別的機子訪問ftp伺服器,需要關閉防火牆,或者針對ftp相關埠設定允許通過的規則(預設為20,21)。

 

之後我在本地訪問自己搭的ftp,出乎意料的是wireshark根本沒有捕獲到FTP資料包,這是為什麼呢?查閱資料之後發現wireshark是捕獲網絡卡的資料包,本地訪問本地必然沒有經過無線網絡卡。所以我找了一臺本區域網上的機子訪問該ftp,終於捕獲到了ftp報文。

從上往下分析一個ftp訪問的過程。下圖是第一個包,表示ftp服務被訪問。(220代表服務就緒)

下圖表示使用者登入的使用者名稱和密碼,使用匿名訪問的。

下圖表示匿名訪問需要輸入email,但是實際上重新整理一下就進去了。

(331代表要求密碼)

用IE代理訪問ftp

使用者登入了(230代表登入因特網)


CWD指令為更改訪問目錄,比如說點進去一個檔案等。

CWD訪問成功。(250代表檔案行為完成)

訪問檔案的格式是ASCII(200代表成功)


FTP採用被動模式。

主動模式(PORT)

如下圖所示,使用者主機直接暴露在網際網路中,使用者連線FTP SERVER使用主動模式遵循以下一個過程:

使用者主機一個隨機埠連線FTP SERVER的TCP21埠進行協商;

使用者主機告訴FTP SERVER,我的XXXX埠已經開啟,你可以放心大膽的連過來;

然後FTP SERVER就用TCP20埠連線使用者主機的XXXX埠,資料傳輸開始。

被動模式(PASV)

當用戶主機前端多了一道防火牆(客戶機使用地址轉換接入網際網路),事情就變的複雜了,首先,主動模式是FTP SERVER連線客戶機,防火牆肯定不幹;即便樂意幹客戶機與伺服器協商的XXXX埠也是隨機埠,你讓迷茫的防火牆情何以堪,這時就需要客戶端軟體使用被動模式主動連線防火牆,這麼一來正合防火牆的胃口。

 

客戶端使用被動模式遵循以下過程:

 

首先使用者使用隨機埠連線FTP SERVER的TCP 21埠進行協商;

FTP SERVER告訴客戶機:我的XXXX埠開放了,你連過來吧;

客戶機使用一個隨機埠連線FTPSERVER的XXXX埠傳輸資料。

(227代表進入被動模式)

列舉該目錄下的檔案

開始傳輸檔案,比如下載到本地。(125代表開啟資料連線,開始傳輸)

傳輸完成。(226代表結束資料連線)

 

FTP協議概述

預設埠資料連線用20號埠,控制連線用21號埠。FTP協議的底層協議是TCP協議。此外它還需要安裝dns服務。