問題 | 回答 |
---|---|
這個做業屬於哪一個課程 | https://edu.cnblogs.com/campus/besti/19attackdefense |
這個做業的要求在哪裏 | https://edu.cnblogs.com/campus/besti/19attackdefense/homework/10553 |
我在這個課程的目標是 | 學習教材第五章,瞭解各層網絡協議的常見漏洞 |
這個做業在哪一個具體方面幫助我實現目標 | 相關知識點和實踐任務 |
網絡安全是指網絡系統的硬件、軟件及其系統中的數據受到保護,不受偶然的或者惡意的緣由而遭到破壞、更改 、泄露,系統連續可靠正常運行,網絡服務不被中斷。html
TCP/IP 網絡協議棧在設計時採用了分層模型,分爲了網絡接口層、互聯層、傳輸層與應用層,每一層負責不一樣的功能,各自具備相應的網絡協議。在每一個層次上的網絡協議都存在着必定的安全問題或設計缺陷,目前也已經出現相應的攻擊技術。如圖所示
linux
網絡層的主要協議如 IP、 ICMP 和 ARP 都存在多種攻擊方式,如下將對其中最爲常見的 IP 源地址欺騙、ARP欺騙和 ICMP 路由重定向攻擊進行分別介紹,包括其原理、 攻擊技術與具體實現。算法
IP 源地址欺騙是指攻擊者僞造具備虛假源地址的 IP 數據包進行發送,以達到隱藏發送者身份、假冒其餘計算機等目的。ubuntu
IP 源地址欺騙原理:IP 源地址欺騙能夠實現的根本緣由在於:IP 協議在設計時只使用數據包中的目標地址進行路由轉發,而不對源地址進行真實性的驗證。路由器在轉發 IP 數據包時,也只根據目標 IP 地址查詢路由路徑,進行數據包的轉發直至送達目標,不會對數據包是否真正來自其聲稱的源地址進行驗證。在大多數狀況下,IP 數據包的源地址會被正確地設置爲數據包所發出的 IP 地址。但懷有惡意目的的攻擊者則會修改 IP 協議報頭,使其包含 個不一樣的虛假 IP 地址,使其看起來像是從另一個地址發出的,這樣就達到了欺騙目標和隱藏發送源的目的。而接收到欺騙數據包的計算機則會向假冒的源地址發回響應包,一般狀況下,攻擊者沒法獲取到這些響應包,所以 IP 源地址欺騙技術主要應用於攻擊者不須要響應包或存在某些技術能夠猜想響應包的場景中,如拒絕服務攻擊等。在特定環境中, 攻擊者也可能嗅探到響應包,或者可以將響應包重定向到受控主機上,最多見的狀況是攻擊者與假冒lP地址處在同一局域網內,能夠實施ARP欺騙或路由重定向攻擊劫待響應包,這時攻擊者就可以徹底假冒這些主機進行網絡交互了。
緩存
IP地址欺騙攻擊過程:安全
IP源地址欺騙技術的應用場景:IP源地址欺騙最廣泛應用於拒絕服務攻擊中,也常常在進行網絡掃描時應用,以隱藏真實的掃描源地址,還被攻擊者用來對付一些基於 IP 地址的身份認證機制。服務器
IP源地址欺騙的防範措施:網絡
ARP欺騙,有時候也被稱爲ARP下毒,,是指攻擊者在有線以太網或無線網絡上發送僞造ARP消息,對特定IP所對應的MAC地址進行假冒欺騙,從而達到惡意目的的攻擊技術。tcp
ARP欺騙攻擊技術原理:ARP欺騙攻擊的根源在於ARP協議在設計時認爲局域網內部的全部用戶都是可信的,是遵循協議設計規範的,但事實上並不是如此,局域網內能夠存在內部攻擊者,或者已滲透進入局域網的外部攻擊者或惡意代碼。ARP協議在進行 IP 地址到 MAC 地址映射查詢時存在安全缺陷,一方面採用了廣播請求包方式在局域網段中詢問映射關係,但沒有對響應結果進行真實性驗證的技術流程與方法,而另外一方面ARP協議爲提升效率,設計了 ARP 緩存機制,以及會將主動的ARP應答視做有效信息進行接受,這使得ARP緩存很是容易被注入僞造的IP地址到MAC地址的映射關係,從而進行欺騙。工具
ARP欺騙攻擊攻擊過程:
ARP欺騙技術的應用場景:ARP欺騙攻擊技術的應用場景也很是多,包括利用 ARP 欺騙技術進行局域網中的嗅探, 並經過進一步的協議分析竊取敏感信息;還能夠利用 ARP 欺騙構造中間人攻擊,從而實施 TCP 會話劫待的攻擊方法。
ARP 欺騙攻擊防範措施:預防 ARP 欺騙攻擊的主要方法有靜態綁定關鍵主機的 IP 地址與 MAC 地址映射關係、使用相應的 ARP 防範工具、使用 VLAN 虛擬子網細分網絡拓撲,並加密傳輸數據以下降 ARP 欺騙攻擊的危害後果等。
ICMP 路由重定向攻擊是指攻擊者假裝成路由器發送虛假的 ICMP 路由路徑控制報文,使得受害主機選擇攻擊者指定的路由路徑,從而進行嗅探或假冒攻擊的一種技術。
ICMP 路由重定向攻擊原理:ICMP 重定向攻擊就是利用 ICMP 路由重定向報文來改變主機的路由表,向目標機器發送重定向消息,本身則能夠假裝成爲路由器,使目標機器的數據報發送至攻擊機從而增強監聽。
ICMP 路由重定向攻擊過程:
ICMP路由重定向攻擊防範:ICMP路由重定向攻擊的主要防範措施是根據類型過濾一些ICMP數據包,設置防火牆過濾,對於ICMP重定向報文判斷是否是來自本
地路由器等。
傳輸層的主要協議 TCP 和 UDP 也存在不少種不一樣攻擊方式,如下對最流行的 TCP RST 攻擊 TCP 會話劫持攻擊、TCP SYN 洪泛拒絕服務攻擊和 UDP 洪泛拒絕服務攻擊等攻擊。
TCP會話劫持攻擊原理:TCP會話劫持則是一項更爲複雜的TCP協議攻擊技術方法,其目標是劫持通訊雙方已創建的TCP會話鏈接,假冒其中一方(一般是客戶端)的身份,與另外一方進行進一步通訊。一般一些網絡服務會在創建TCP會話以後進行應用層的身份認證,客戶端在經過身份認證以後,就能夠經過TCP會話鏈接對服務端進行控制或獲取資源,期間再也不須要再次進行身份認證。若是咱們可以使得要攻擊的網絡通訊通過攻擊者控制的主機,那結合網絡嗅探技術就能夠獲取到序列號等信息,從而很容易地實施會話劫持攻擊。重定向網絡通訊能夠利用濫用 IP 協議源路由選項、ICMP 路由重定向攻擊和 ARP 欺騙攻擊完成,IP 源路由選項和 ICMP 路由重定向攻擊都能使得攻擊者能夠指定 IP 數據包的路由路徑, 經過攻擊者所控制的路由器, 而後實施劫持。
TCP 會話劫持攻擊技術過程:
TCP 會話劫持攻擊防範措施:在下一代互聯網協議設計方面從根本上避免會話劫待攻擊以外, 目前對該種攻擊可採起的防範措施包括:禁用主機上的源路由, 採用靜態綁定 IP-MAC 映射表以免 ARP 欺騙, 引用和過濾 ICMP 重定向報文,這三個措施可以避免攻擊者成爲通訊雙方的中間人,從而輕易地進行會話劫持攻擊。
TCP SYN Flood,又稱 SYN 洪泛攻擊, 是目前最爲有效和流行的一種拒絕服務攻擊形 式。它利用 TCP 三次握手協議的缺陷,向目標主機發送大量的僞造源地址的 SYN 鏈接請求,消耗目標主機的鏈接隊列資源,從而不可以爲正經常使用戶提供服務。
SYN Flood 攻擊原理:在SYN Flood 攻擊中,攻擊主機向受害主機發送大量僞造源地址的 TCP SYN 報文,受害主機分配必要的資源,而後向源地址返回 SYN/ACK 包,並等待源端返回 ACK 包,若是僞造的源地址主機活躍,將會返回一個 RST 包直接關閉鏈接,但大部分僞造源地址是非活躍的,這種狀況下源端永遠都不會返回 ACK 報文,受害主機繼續發送SYN+ACK 包,並將半開鏈接放入端口的積壓隊列中,雖然通常的主機都有超時機制和默認的重傳次數,可是因爲端口的半鏈接隊列的長度是有限的,若是不斷地向受害主機發送大量的 TCP SYN 報文,半開鏈接隊列就會很快填滿,服務器也就拒絕新的鏈接,致使該端口沒法響應其餘機器進行的正常鏈接請求,最終使受害主機被拒絕服務。
SYN Flood 攻擊防範措施:對於 SYN Flood攻擊的主要防範措施包括: SYN-Cookie 技術和防火牆地址狀態監控技術
因爲 UDP 協議的無狀態不可靠的自然特性,UDP Flood 拒絕服務攻擊的原理很是簡單,即經過向目標主機和網絡發送大蜇的 UDP 數據包,形成目標主機顯著的計算負載提高,或者目標網絡的網絡擁塞,從而使得目標主機和網絡陷入不可用的狀態,形成拒絕服務攻擊。UDP Flood 除了在短期發送內容儘量多的 UDP 報文以外, 沒有其餘額外特別的技術。
監測、預防與安全加固:
網絡安全協議:在 IETF、IEEE 802 等國際性的網絡研究和標準化組織內進行討論和改進,並以標準化協議規範方式對業界進行發佈,使得業界可以基於這些標準在網絡設備、操做系統中實現和應用這些安全協議,從而加強現有網絡的安全性。
下一代互聯網協議:目前 IETF 正在進行以 IPv6 爲表明的下一代互聯網協議的設計、標準化與改進工做,而這也爲從根本上改善 TCP/IP 協議棧的安全情況提供了一個絕佳的機會,IPv6 和相關配套的網絡協議在設計時很是注重對安全性的考慮,目前正處在不斷髮展和完善的過程當中,在不久的未來將取代目前被普遍使用的 IPv4 協議,預期也可以在安全的協議基礎上構建出一 個更加安全的下一代互聯網。
完成 TCP/IP 協議棧重點協議的攻擊實驗, 具體包括 ARP 緩存欺騙攻擊、ICMP 重定向攻擊、SYN Flood 攻擊、TCPRST 攻擊及 TCP 會話劫持攻擊(bonus)。
本次所用攻擊機爲kail linux,靶機爲Linux Metasploitable和Windows Metasploitable,測試機爲seed ubuntu
能夠採用nmap掃描器進行IP源地址攻擊,參數-D
後接要僞造的P地址。
這個實驗所用到攻擊機爲kail,靶機爲Linux Metasploitable,ip地址以下
主機名稱 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
這裏查看 192.168.200.125 上的8080端口是否開放,且使用IP源地址爲192.168.200.7進行欺騙,則相應的nmap命令爲:nmap -sS -p 8080 192.168.200.125 -D 192.168.200.7
。打開wireshark監聽數據包
能夠看到nmap要知道端口是否開放,還須要以所在機器的IP發送SYN包,因此用Wireshark 能夠監聽到兩個SYN包,分別是從 192.168.200.3 和 192.168.200.7 發送到 192.168.200.125 的,後者即是nmap構造的欺騙數據包。(由結果可知靶機8080端口關閉)
Netwox 中的 33 號工具能夠構造任意的以太網 ARP數據報,能夠用它來完成arp緩存欺騙攻擊
所用的三臺虛擬機分別是:攻擊機爲kail linux,靶機爲Linux Metasploitable和Windows 2000 Server。如下簡稱爲A(kail linux),B(Linux Metasploitable),
C(Windows 2000 Server)機。三臺虛擬機的ip地址和mac地址以下表所示
主機 | ip地址 | mac地址 |
---|---|---|
A | 192.168.200.3 | 00:0c:29:dd:26:c3 |
B | 192.168.200.125 | 00:0c:29:94:0e:e1 |
C | 192.168.200.124 | 00:0c:29:6b:71:46 |
A 分別向 B、C 發送僞造的應答(或者請求)數據包進行欺騙,使得 B、C的 ARP 緩存表中的映射關係分別是 IP(C) /MAC (A),IP (B) /MAC (A) 。
首先查看B主機的arp緩存列表
在A主機執行命令行netwox 33 -b 00:0c:29:94:0e:e1 -g 192.168.200.124 -h 00:0c:29:94:0e:e1 -i 192.168.200.125
(-b 以太網幀的目的mac地址;-g arp ip的源地址 ;-h arp 以太網幀的目的mac地址;-i arp ip的目的地址)
其中關鍵部分 "this address : 00:0c:29:dd:26:c3 192.168.200.124" 使得目標主機 B 保存這對映射關係而達到欺騙的目的。
再次查看B主機的arp緩存列表
能夠看到在B主機的arp緩存列表中,C主機的ip地址映射爲了A主機的mac地址
同理可對C主機進行arp欺騙攻擊
首先查看C主機的arp緩存列表
在A主機執行命令行netwox 33 -b 00:0c:29:6b:71:46 -g 192.168.200.125 -h 00:0c:29:6b:71:46 -i 192.168.200.124
再次查看C主機的緩存列表
能夠看到在C主機的arp緩存列表中,B主機的ip地址映射爲了A主機的mac地址
利用Netwox 的第86號工具, 能夠進行ICMP重定向攻擊實驗, 其工做原理是嗅探網絡中的數據包,每嗅探到一個符合要求的數據包(本身設定),就向該IP地址發送—個ICMP 重定向報文,讓該IP的主機重定向至預先設定的IP地址
首先須要將攻擊機和靶機改成橋接模式(若是採用NAT模式或者僅主機模式,親測攻擊機能夠發出重定向報文,而且靶機能夠接收到,可是靶機路由表不會改變,目前還不清楚緣由.....)
攻擊機kail爲192.168.0.106,目標主機爲192.168.0.104,網關地址爲192.168.0.1,攻擊機使用Netwox86號工具進行欺騙。 當使用後Netwox便進入監聽狀態。
首先查看目標主機上的路由表
在kail linux上打開netwox86號工具,使用命令行netwox 86 -f "host 192.168.0.104" -g 192.168.0.106 -i 192.168.0.1
(ps:命令行的含義爲嗅探到數據包的源或目的IP地址192.168.0.104時,就以192.168.0.1的名義向數據包的源地址發送一個ICMP重定向報文,使之使用192.168.0.106做爲默認的路由。)
同時打開wireshark監聽數據包,而且使用靶機ping百度的網址,能夠從wireshark看到攻擊機以192.168.0.1的名義向靶機發送了icmp重定向報文
再次查看靶機路由表,能夠看到靶機訪問211.138.106.7時的網關變成了192.168.0.106
能夠利用netwox76號工具來完成此次攻擊,這個實驗使用3臺主機,與2.2實驗所用主機相同,主機和ip地址以下表所示,kail爲攻擊機,Linux Metasploitable爲靶機,Windows 2000 Server爲測試機
主機名稱 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
Windows 2000 Server | 192.168.200.124 |
在 IP 地址爲 192.168.200.3 的主機 kail 進行攻擊前,咱們將 IP 地址爲 192.168.200.124 的主機 Windows 2000 Server向 IP 地址爲 192.168.200.125 的服務器 Linux Metasploitable 發起 TCP 鏈接請求。 服務器能夠正常回應,並創建鏈接。 斷開 Windows 2000 Server 與 Linux Metasploitable 的鏈接,在 C 中打開 Netwox 軟件,選擇編號爲 76 的 "Synflood" 工具並輸入目標地址,主機 kail 即開始進行 TCP SYN Flood 攻擊。 此時再使用主機 Windows 2000 Server 向服務器 Linux Metasploitable 發送鏈接請求,會沒法正常訪問。
這裏選擇利用 Windows 2000 Server 向靶機 Linux Metasploitable 發起telnet服務訪問,用 kail 攻擊機攻擊靶機的telnet服務端口,並用Wireshark查看
首先用主機 Windows 2000 Server 向 Linux Metasploitable 發起登錄 telnet 192.168.200.125 23
,能夠正常登錄
斷開鏈接, 在Kali上利用netwox的76號工具對靶機的23號端口進行SYN Flood攻擊
netwox 76 -i 192.168.200.125 -p 23
,同時打開wireshark監聽
能夠看到攻擊機向靶機發送了大量的虛假ip發出的SYN鏈接請求
再次使用主機 Windows 2000 Server 向 Linux Metasploitable 發起登錄,發現登錄響應須要較長時間
能夠利用netwox78號工具來完成此次攻擊,這個實驗使用3臺主機,主機和ip地址以下表所示,kail爲攻擊機,Linux Metasploitable 爲靶機seed 爲測試機
主機名稱 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
seed | 192.168.200.6 |
在Netwox中,找們能夠選擇編號爲78的"Resetevery TCP packet"工具來實現TCP RST攻擊。同時,咱們使用 Wireshark軟件來對攻擊過程當中主機之間的通訊進行監聽,並分析攻擊過程。假設IP地址爲192.168.200.125的主機 Linux Metasploitable 已經與IP地址爲 192.168.200.6 的主機 seed 創建了TCP鏈接,IP地址爲 192.168.200.3的主機 kail 企圖對當前創建TCP鏈接進行RST攻擊。在主機C中打開Netwox選定78號工具,並輸入主機 Linux Metasploitable 的IP地址做爲攻擊目標。此時,當主機 seed 再向主機 Linux Metasploitable發送信息時,主機 kail 將監聽到此信息,分析數據包的端口號、SEQ號後,假冒 Linux Metasploitable 的名義向 seed 發送帶有RST標誌的分組,從而斷開二者的TCP鏈接。
一樣選擇利用 seed 向靶機 Linux Metasploitable 發起telnet服務訪問,用 kail 攻擊機攻擊靶機的telnet服務端口,並用Wireshark查看
首先先正常登錄
在Kali上利用netwox的78號工具對靶機進行TCP RST攻擊netwox 78 -i 192.168.200.125
,並打開wireshark監聽數據包
能夠看到kail以Linux Metasploitable 的名義向seed發送了帶有RST標誌位的分組
再次打開seed,發現鏈接已經斷開
能夠利用netwox40工具來完成此次實驗。這個實驗使用3臺主機,攻擊機爲kail linux,靶機爲 seed 和 Linux Metasploitable,3臺主機的ip地址以下表所示
主機名稱 | ip地址 |
---|---|
kail linux | 192.168.200.3 |
Linux Metasploitable | 192.168.200.125 |
seed | 192.168.200.6 |
首先在seed上使用telnet服務登錄Linux Metasploitable,命令行telnet 192.168.200.125
此時,seed鏈接到linux後輸入ls命令,在同一網段的攻擊機使用 wireshark 嗅探共用網卡,等待客戶機和服務器 通訊,捕捉 telnet 包。
查看wireshark,能夠看到數據包的內容是 l 由於我輸入的命令是 ls 他會把咱們發生的內容拆分開發送,看一下下一個數據包就會發現內容是 s
直接找到最後的一個包,點擊 TransmissionControl Protocol 查看其中的源端口,目的端口,next seq 和 ack 信息。(其中linux的端口固定爲 23 ,由於 telnet 端口是 23 )
由於咱們要僞造發下一個包,因此直接採用 next seq 做爲下一個包的 ack ,採用 ack 做爲下一個包的 seq 。獲取到信息以後,攻擊機使用 netwox 工具僞造seed給linux發一個 tcp 包。發送成功後,原來的客戶端就會失去鏈接,同時linux會把攻擊機看成 客戶端,這樣攻擊機就實現了會話劫持。
使用命令行netwox 40 --ip4-dontfrag --ip4-offsetfrag 0 --ip4-ttl 64 --ip4-protocol 6 --ip4-src 192.168.200.6 --ip4-dst 192.168.200.125 --tcp-src 38818 --tcp-dst 23 --tcp-seqnum 44 --tcp-acknum 5 --tcp-ack --tcp-psh --tcp-window 64 --tcp-data "776c"
由於咱們要僞造 seed 給 linux 的發送TCP包,因此源ip(--ip4-src
):seed(192.168.200.6)目的 ip(--ip4-dst
):linux(192.168.200.125),seq(--tcp-seqnum
)和 ack(--tcp-acknum
)按剛纔所說填寫,末尾的 6c 是字母 wl 的十六進制數,這裏的wl是咱們要發送的內容,其他參數默認便可。
查看wireshark,發現僞造的報文成功發送,同時發現Tcp Dup ACK XXX#X
和Tcp Retransmission
,這兩個的含義分別是重複應答#前的表示報文到哪一個序號丟失,#後面的是表示第幾回丟失
和超時引起的數據重傳
。這說明引起了seed與linux之間的「ACK風暴」,說明此次劫持是成功的。
掌握了以上基本方法,可使用Ettercap工具進行TCP 會話劫持攻擊(更加方便),步驟以下
首先,Kali利用ARP欺騙進行tcp會話劫持攻擊,所以打開Kali節點的IP轉發功能(命令行具體含義參照Linux ip_forward 數據包轉發)
打開Ettercap,進入Ettercap的GTK圖形界面方式,並選擇「Sniff」菜單中的「Unified Sniff」選項,選擇「eth0」做爲嗅探監聽接口,以下圖所示
隨後在「Hosts」菜單中選擇「Scan for hosts」掃描局域網內攻擊目標,並隨後在菜單「Hosts list」中,選擇Seed 192.168.200.6和 linux Metasploitable 192.168.200.125分別爲target1和target2,以下圖所示
選擇菜單「MITM」中的「ARP poisoning」進行ARP欺騙,並選擇「Sniff remote connections」
此時,在seed和linux中執行arp –a命令顯示MAC地址緩存,將發現ARP欺騙攻擊已成功,其輸入以下:
在seed主機上使用telnet服務到linux主機上,在Kali上,此時Ettercap(View-Connections)顯示以下圖所示,Ettercap已經獲取了telnet的登錄用戶名和密碼
點擊「Inject Data」,Kali節點做爲中間人能夠向TCP會話兩端注入數據,以下圖所示
經過wireshark查看seed與linux Metasploitable之間發生ACK風暴,劫持成功
(ps:對這個工具的使用還不太熟練,下去要多練習)
本次實踐經過對各層網絡協議常見漏洞的攻擊實現,初步瞭解了各層網絡協議的缺陷,以及提升了本身的動手能力。
網絡攻防技術與實踐
tcp會話劫持攻擊
tcp會話劫持原理
tcp報文簡介
Linux ip_forward 數據包轉發