實驗目的:
理解基於網絡協議的攻擊原理, 掌握一些基於網絡協議攻擊的方法, 掌握 netwox/netwag 的使用方法。 實驗環境: netwox/netwag 工具, wireshark 工具, Telnet 服務器, Telnet 客戶端
實驗准備:
1. 安裝 netwox/netwag 工具:先安裝 ActiveTcl,再解壓安裝
2. 安裝配置 Telnet 服務器, Telnet 客戶端
實驗內容:
- 使用 netwox/netwag 工具偽造 TCP 包並進行抓包分析
2. 使用 netwox/netwag 工具對 Telnet 服務器進行 SYN flood 攻擊,並進行抓包分析
3. 使用 netwox/netwag 工具對 Telnet 服務器進行 TCP RST 攻擊,並進行抓包分析。
實驗步驟記錄:
實驗准備:安裝 Activetcl 和Netwox/Netwag工具
實驗正式進行:
- 使用 netwox/netwag 工具的方法38偽造 TCP 包並進行抓包分析
2.使用 netwox/netwag 工具對 Telnet 服務器進行 SYN flood 攻擊,並進行抓包分析
(1)在本地機器上配置激活 Telnet 服務器與 Telnet 客戶端,以自己的學號創建新的用戶;
1.1) 打開 Telnet 功能:控制面板-程序-程序和功能-打開或關閉 Windows 功能,勾選 Telnet 服務器, Telnet 客戶端。
1.2)啟動本地 Telnet 服務器,搜索-服務,點擊服務,選擇 Telnet,更改啟動類型為 手動
1.3)增加 Win7 用戶1515300024並將其加入 到Telnet 群組
1.4)手動啟動 Telnet 服務器:net start Telnet
(2)啟動本地 Wireshark;
(3)在第二台機器上登錄有自己學號帳戶的 Telnet 服務器,截屏及捕獲登錄蹤跡;
從客戶端命令行上輸入 telnet IP 地址,之后輸入帳號/口令字,登入 Telnet 服務器。同時在客戶端開啟Wireshark抓包工具,抓取客戶端 192.168.1.130 登錄到Telnet 服務器192.168.1.131 的數據包
下圖為客戶端登陸並執行一次dir命令的截圖:
下圖為客戶端Wireshark抓取的Telnet流量包截圖截圖:
使用Wireshark的流追蹤功能還原出本次明文傳輸的Telnet通信過程,可以看出這些信息和客戶端上的過程基本一致
(4)退出登錄,從第三台機器上利用 netwox/netwag 工具對Telnet服務器進行 SYN flood 攻擊。捕獲 DDOS 攻擊蹤跡。嘗試再次登錄 Telnet 服務器,解釋現象。
構造SYN flood攻擊包如下:
啟動攻擊:
抓取的DDOS 攻擊蹤跡如下,可以發現這些攻擊包高度相似,目的地址都是Telnet服務器的IP:192.168.1.131,類型都是SYN請求包,但是源地址沒有任何規律
此時在第二台機器上再次連接Telnet服務器,會出現以下無法連接的情況,因為在服務器的 23 端口積累了大量的SYN請求包需要服務器來處理,服務器向SYN包的源地址發送SYN/ACK 包並等待源地址的ACK包回復,但是由於源地址是偽造的,無法回復 ACK 包,服務器因此陷入等待狀態,從而導致無法接收正常主機發起的 TCP 連接,造成拒絕服務現象。
3.使用 netwox/netwag 工具對 Telnet 服務器進行 TCP RST 攻擊,並進行抓包分析。
(1) 以你的學號創建一個 Telnet 賬戶,以這個賬戶為基礎進行后繼的實驗。
這一步只需使用之前配置好的賬戶即可
(2) 驗證 TCP RESET 理論上的可行性
A 先在二主機之間建立一個 TCP 連接,通過抓包程序獲得當前二主機的 ip 地址,端口號,序列號。 B 通過獲得的信息偽造 TCP RESET 報文並發送。
C 觀察原有 TCP 連接是否斷開。
建立TCP 連接:Telnet 192.168.1.131
抓包獲得當前二主機的 ip 地址,端口號,序列號如下:
源ip地址: 192.168.1.137, 目的ip地址: 192.168.1.131
源端口: 1056, 目的端口: 23,
序列號(Seq): 563773297, 確認號(Ack): 2245100282
偽造的數據包發送完成后,Telnet客戶端立即斷開了連接,同時wireshark上也抓到了對應的偽造的RST數據包,結果截圖如下:
實驗至此可以證明 TCP RESET 是可行的
(3) 驗證窗口對 TCP RESET 攻擊的影響
A 先在二主機之間建立一個 TCP 連接,通過抓包程序獲得當前二主機的 ip 地址,端口號,序列號,另外就是記錄下窗口的大小。
B 通過獲得的信息偽造 TCP RESET,填寫偽造的序列號時,使偽造序號大於准確的序列號但是與准確序列號的差小於窗口大小,發送 TCP RESET 報文。
C 觀察原有 TCP 連接是否斷開。 改動偽造的序列號,使其剛與准確的序列號之差剛好為窗口大小,重復以上實驗。
3.1)偽造序號大於准確的序列號但是與准確序列號的差小於窗口大小
建立TCP 連接:Telnet 192.168.1.131
構造欺騙客戶端的RST包:
抓取客戶端發往服務器的TCP包獲得當前二主機的 ip 地址,端口號,序列號,窗口大小如下:
源ip地址: 192.168.1.137, 目的ip地址: 192.168.1.131
源端口: 1146, 目的端口: 23,
序列號(Seq): 2649478470, 確認號(Ack): 3142715117,窗口的大小(win):62847
偽造欺騙客戶端的TCP RESET 報文並發送:
使用確認號(Ack): 3142715117+10=3142715127作為偽造數據包的序列號(Seq),構造如下RST數據包:
連接沒有斷開,而且可以看到,在RST包發出去以后,客戶端立刻發了一個重傳包給服務器,該重傳包的數據和105號包是一致的,現在客戶端仍然可以正常發送數據.
實驗沒有達到預期效果順利斷開,接着我嘗試減少確認號(Ack)增加的值,結果發現+10,+5,+2,+1都不能斷開連接,由此推測這樣簡單地構造RST包是不可行的,或許需要輔以其他手段。
3.2)改動偽造的序列號,使其剛與准確的序列號之差剛好為窗口大小
RST包發送后,客戶端重傳958號數據包,連接沒有斷開
結果和3.1一樣,無法中斷telnet連接。