FTP協(xié)議的分析和擴(kuò)展

5、服務(wù)器端進(jìn)行應(yīng)答,應(yīng)答包括服務(wù)器的IP地址和一個(gè)暫時(shí)的端口,這個(gè)暫時(shí)的端口是客戶端
在打開(kāi)數(shù)據(jù)傳輸連接時(shí)應(yīng)該使用的端口;
6、客戶端發(fā)送一個(gè)SYN包,源端口為客戶端自己選擇的一個(gè)暫時(shí)端口,目的端口為服務(wù)器在PASV
應(yīng)答命令中指定的暫時(shí)端口號(hào);
7、服務(wù)器端發(fā)送SYN ACK包給客戶端,目的端口為客戶端自己選擇的暫時(shí)端口,源端口為PASV
應(yīng)答中指定的暫時(shí)端口號(hào);
8、客戶端發(fā)送一個(gè)ACK包;
9、發(fā)送數(shù)據(jù)的主機(jī)以這個(gè)連接來(lái)發(fā)送數(shù)據(jù),數(shù)據(jù)以TCP段(注:segment,第4層的PDU)形式發(fā)送(
一些命令,如STOR表示客戶端要發(fā)送數(shù)據(jù),RETR表示服務(wù)器段發(fā)送數(shù)據(jù)),這些TCP段都需要
對(duì)方進(jìn)行ACK確認(rèn);
10、當(dāng)數(shù)據(jù)傳輸完成以后,發(fā)送數(shù)據(jù)的主機(jī)以一個(gè)FIN命令來(lái)結(jié)束數(shù)據(jù)連接,這個(gè)FIN命令需要另一
臺(tái)主機(jī)以ACK確認(rèn),另一臺(tái)主機(jī)也發(fā)送一個(gè)FIN命令,這個(gè)FIN命令同樣需要發(fā)送數(shù)據(jù)的主機(jī)以A
CK確認(rèn);
11、客戶端能在控制連接上發(fā)送更多的命令,這可以打開(kāi)和關(guān)閉另外的數(shù)據(jù)連接;有時(shí)候客戶端結(jié)
束后,客戶端以FIN命令來(lái)關(guān)閉一個(gè)控制連接,服務(wù)器端以ACK包來(lái)確認(rèn)客戶端的FIN,服務(wù)器
同樣也發(fā)送它的FIN,客戶端用ACK來(lái)確認(rèn)。
下圖圖示了Passive模式FTP的開(kāi)始幾個(gè)步驟:
/====================================================================\
| |
| [ ftp Client ] [ ftp Server ] |
| |
| (TCP:21 連接初始化,控制端口) |
| SYN |
| Port xxxx ----------------------> Port 21 [TCP] |
| SYN+ACK |
| Port xxxx <---------------------- Port 21 |
| ACK |
| Port xxxx ----------------------> Port 21 |
| |
| (PASV操作: 被動(dòng)連接數(shù)據(jù)端口初始化) |
| |
| PASV |
| Port xxxx ----------------------> Port 21 |
| PASV OK, IP, Port yyyy |
| Port xxxx <---------------------- Port 21 |
| SYN |
| Port zzzz ----------------------> Port yyyy |
| SYN+ACK |
| Port zzzz <---------------------- Port yyyy |
| ACK |
| Port zzzz ----------------------> Port yyyy |
| |
| |
| (數(shù)據(jù)操作: 數(shù)據(jù)傳輸) |
| List, Retr or Stor |
| Port xxxx ----------------------> Port 21 |
| Data + ACK |
| Port zzzz <---------------------> Port yyyy |
| . |
| . |
| . |
| |
\====================================================================/
一個(gè)PASV請(qǐng)求要求服務(wù)器在服務(wù)器選擇的一個(gè)新的端口上接受數(shù)據(jù)連接,PASV命令沒(méi)有任何參
數(shù),服務(wù)器端的回應(yīng)只是一行顯示服務(wù)器IP地址和服務(wù)器接受連接的TCP端口號(hào)。
下圖顯示了服務(wù)器對(duì)PASV命令的回應(yīng),服務(wù)器告訴客戶端它在端口5365(192,168,179,100,20
,245)上進(jìn)行監(jiān)聽(tīng),計(jì)算端口的方法是20*256+245=5365;
/====================================================================\
| TCP - Transport Control Protocol |
| Source Port: 21 ftp |
| Destination Port: 1249 |
| Sequence Number: 4239887193 |
| Ack Number: 36925357 |
| Offset: 5 (20 bytes) |
| Reserved: %000000 |
| Flags: %011000 |
| 0. .... (No Urgent pointer) |
| .1 .... Ack |
| .. 1... Push |
| .. .0.. (No Reset) |
| .. ..0. (No SYN) |
| .. ...0 (No FIN) |
| |
| Window: 8760 |
| Checksum: 0x3EAB |
| Urgent Pointer: 0 |
| No TCP Options |
| |
| FTP Control - File Transfer Protocol |
| Line 1: PASV 192,168,0,1,100,20,245<CR><LF> |
| |
| FCS - Frame Check Sequence |
| FCS (Calculated): 0xBED4346D |
\====================================================================/
當(dāng)收到PASV命令的回應(yīng)后,客戶端打開(kāi)一個(gè)TCP連接,源端口為一個(gè)暫時(shí)的端口,目的端口為
服務(wù)器提供的暫時(shí)端口。
下圖顯示了客戶端的TCP連接建立過(guò)程,正如上面所說(shuō),目的端口為5365。
/====================================================================\
| TCP - Transport Control Protocol |
| Source Port: 1250 |
| Destination Port: 5365 |
| Sequence Number: 36931503 |
| Ack Number: 0 |
| Offset: 7 (28 bytes) |
| Reserved: %000000 |
| Flags: %000010 |
| 0. .... (No Urgent pointer) |
| .0 .... (No Ack) |
| .. 0... (No Push) |
| .. .0.. (No Reset) |
| .. ..1. SYN |
| .. ...0 (No FIN) |
| |
| Window: 8192 |
| Checksum: 0x1A57 |
| Urgent Pointer: 0 |
| No TCP Options |
| |
| TCP Options |
| Options Type: 2 Maxinum Segment Size |
| Length: 4 |
| MSS: 1460 |
| |
| FCS - Frame Check Sequence |
| FCS (Calculated): 0x5A1BD023 |
\====================================================================/
大多數(shù)人認(rèn)為在防火墻網(wǎng)絡(luò)環(huán)境中Passive模式比Port模式的問(wèn)題小,但我們注意到在Passive
模式下,客戶端打開(kāi)一個(gè)暫時(shí)的目的端口連接,一些防火墻或者CISCO設(shè)備的訪問(wèn)列表(ACL)可
能會(huì)阻止這種連接,同樣服務(wù)器的回應(yīng)也是從一個(gè)暫時(shí)的端口到一個(gè)暫時(shí)的端口,防火墻或者
CISCO的訪問(wèn)列表也會(huì)阻止這種連接。在CISCO路由器上你可以用訪問(wèn)列表關(guān)鍵字"established
"來(lái)避免第二個(gè)問(wèn)題,"established"關(guān)鍵字告訴路由器允許帶ACK字端的包通過(guò),服務(wù)器端的S
YN ACK包帶有ACK字端。在新版本PIX IOS中也可以通過(guò)fixit關(guān)鍵字建立針對(duì)ftp協(xié)議的深層狀
態(tài)檢測(cè)過(guò)濾,其他大多數(shù)狀態(tài)檢測(cè)防火墻例如LinuxNetfilters也支持ftp協(xié)議的狀態(tài)檢測(cè),進(jìn)行
準(zhǔn)確的PASV動(dòng)態(tài)端口過(guò)濾。
>>2.3 用戶名和口令的明文傳輸
FTP另一個(gè)聲名狼藉的問(wèn)題是它以明文方式發(fā)送用戶名和口令,也就是不加密地發(fā)送。任何人
只要在網(wǎng)絡(luò)中合適的位置放置一個(gè)協(xié)議分析儀就可以看到用戶名和口令;FTP發(fā)送的數(shù)據(jù)也是
以明文方式傳輸,通過(guò)對(duì)ftp連接的監(jiān)控和數(shù)據(jù)收集就可以收集和重現(xiàn)ftp的數(shù)據(jù)傳輸并實(shí)現(xiàn)協(xié)
議連接回放。事實(shí)上很多用戶把相同的用戶名和口令用在不同的應(yīng)用中,這樣這個(gè)問(wèn)題可能
看起來(lái)更為糟糕;如果黑客收集到FTP口令,他們也可能就得到了你在線帳號(hào)或者其他一些
機(jī)密數(shù)據(jù)的口令。
下面是通過(guò)tcpdump -- 一個(gè)著名的網(wǎng)絡(luò)協(xié)議分析程序抓取的ftp的完整通訊過(guò)程。
/=================================================================\
21:55:36.682402 IP 192.168.0.1.2323 > 192.168.0.3.21: S 2047626269:2047626269(0)
win 65535 <mss 1460,nop,nop,sackOK> (DF)
21:55:36.682792 IP 192.168.0.3.21 > 192.168.0.1.2323: S 3917547047:3917547047(0)
ack 2047626270 win 65535 <mss 1460,nop,nop,sackOK> (DF)
21:55:36.682855 IP 192.168.0.1.2323 > 192.168.0.3.21: . ack 1 win 65535 (DF)
<TCP三步握手>
21:55:36.854899 IP 192.168.0.3.21 > 192.168.0.1.2323: P 1:115(114) ack 1 win 65535
(DF)
0x0000 4500 009a d570 4000 8006 a398 c0a8 0003 E....p@.........
0x0010 c0a8 0001 0015 0913 e981 0628 7a0c 4c1e ...........(z.L.
0x0020 5018 ffff cd50 0000 3232 302d 5468 6973 P....P..220-This
0x0030 2073 6572 7665 7220 6973 2066 6f72 2070 .server.is.for.p
0x0040 7269 7661 7465 2075 7365 206f 6e6c 790d rivate.use.only.
0x0050 0a32 .2
21:55:37.016115 IP 192.168.0.1.2323 > 192.168.0.3.21: . ack 115 win 65421 (DF)
0x0000 4500 0028 b8d0 4000 8006 c0aa c0a8 0001 E..(..@.........
0x0010 c0a8 0003 0913 0015 7a0c 4c1e e981 069a ........z.L.....
0x0020 5010 ff8d 6f83 0000 P...o...
21:55:37.016471 IP 192.168.0.3.21 > 192.168.0.1.2323: P 115:154(39) ack 1 win
65535 (DF)
<FTP協(xié)議連接>
0x0000 4500 004f d586 4000 8006 a3cd c0a8 0003 E..O..@.........
0x0010 c0a8 0001 0015 0913 e981 069a 7a0c 4c1e ............z.L.
0x0020 5018 ffff 074f 0000 3232 3020 506c 6561 P....O..220.Plea
0x0030 7365 2065 6e74 6572 2079 6f75 7220 6c6f se.enter.your.lo
0x0040 6769 6e20 6e61 6d65 206e 6f77 2e0d 0a gin.name.now...
21:55:37.022282 IP 192.168.0.1.2323 > 192.168.0.3.21: P 1:12(11) ack 154 win 65382
(DF)
0x0000 4500 0033 b8d2 4000 8006 c09d c0a8 0001 E..3..@.........
0x0010 c0a8 0003 0913 0015 7a0c 4c1e e981 06c1 ......
相關(guān)文章
微軟新版Outlook將推出郵件分類快捷鍵及多項(xiàng)優(yōu)化:5月開(kāi)始部署
微軟計(jì)劃在新版Outlook for Windows中引入郵件分類快捷功能,用戶可通過(guò)預(yù)設(shè)快捷鍵快速對(duì)郵件進(jìn)行分類,從而大幅提升工作效率并優(yōu)化管理流程2025-04-21rsync The --password-file option may only be used when accessing a
客戶端上傳文件執(zhí)行命令出錯(cuò),提醒The --password-file option may only be used when accessing an rsync daemon.查找資料也很少這樣的說(shuō)法,最后發(fā)現(xiàn)是冒號(hào)的問(wèn)題2025-02-26郵箱密碼忘記了怎么找回來(lái)? 網(wǎng)易郵箱密碼找回流程
郵箱在使用的時(shí)候,由于各種原因,有時(shí)候我們可能會(huì)遇到忘記密碼、賬號(hào)被盜等問(wèn)題,這時(shí)候就需要進(jìn)行163郵箱找回操作,本文將為大家介紹如何進(jìn)行163郵箱找回操作2025-02-01電子郵件注冊(cè)教程! 郵箱號(hào)怎么注冊(cè)看這篇就夠了
電子郵件成為了我們?nèi)粘I詈凸ぷ髦胁豢苫蛉钡囊徊糠?,無(wú)論是注冊(cè)社交媒體、購(gòu)物平臺(tái),還是與他人溝通,一個(gè)穩(wěn)定的郵箱賬號(hào)都變得至關(guān)重要,本文將為您提供詳細(xì)的電子郵件2025-02-01wps調(diào)用Outlook 批量發(fā)送電子郵件時(shí)持續(xù)彈出警告框怎么辦?
如何解決程序調(diào)用outlook時(shí)一直警告,wps調(diào)用outlook發(fā)送郵件時(shí),發(fā)送的時(shí)候,會(huì)一直出現(xiàn)警告,需要你一個(gè)個(gè)點(diǎn)確定或拒絕,本文介紹如何解決這個(gè)警告2025-02-01QQ郵箱文件怎么發(fā)送微信? 電腦qq郵箱中轉(zhuǎn)站中文件分享到微信的方法
在使用郵箱軟件的時(shí)候,有的用戶想要通過(guò)QQ郵箱文件,QQ郵箱中存在這種功能,但是很多小伙伴不知道到底要如何操作,下面小編就給大家?guī)?lái)QQ郵箱文件發(fā)送微信教程,感興趣的2024-09-29微信電腦版怎么獨(dú)立窗口中打開(kāi)訂閱號(hào)? 訂閱號(hào)獨(dú)立窗口顯示的教程
微信電腦版看訂閱號(hào)的時(shí)候,想要獨(dú)立窗口顯示訂閱號(hào),該怎么操作呢?下面我們就來(lái)看看詳細(xì)的教程2024-09-29Outlook在windows系統(tǒng)中有哪些快捷鍵? Outlook的鍵盤(pán)快捷方式大全
Outlook可以用它來(lái)收發(fā)電子郵件、管理聯(lián)系人信息、記日記、安排日程、分配任務(wù),新版Outlook for Windows帶來(lái)了許多新功能,今天我們就來(lái)看看Outlook快捷鍵匯總2024-09-13微信怎么調(diào)默認(rèn)瀏覽器? 微信設(shè)置默認(rèn)瀏覽器打開(kāi)網(wǎng)頁(yè)鏈接的教程
微信怎么調(diào)默認(rèn)瀏覽器?只需簡(jiǎn)單設(shè)置,在微信就可以使用默認(rèn)瀏覽器打開(kāi)網(wǎng)站,該怎么設(shè)置呢?詳細(xì)請(qǐng)看下文介紹2024-08-14GameViewer怎么刪除設(shè)備 GameViewer刪除設(shè)備的步驟
GameViewer怎么刪除設(shè)備?GameViewer 是一款專為游戲玩家設(shè)計(jì)的遠(yuǎn)程控制助手,下文中為大家?guī)?lái)了GameViewer刪除設(shè)備步驟,需要的朋友快來(lái)看看吧2024-06-17