天天看點

TCP/IP 常見攻擊手段

這一篇主要和大家一起學習回顧關于 TCP/IP 的常見攻擊,至少有一個基本的認識

前言

TCP/IP 常見攻擊手段

前言

1 IP欺騙

IP是什麼

在網絡中,所有的裝置都會配置設定一個位址。這個位址就仿佛小藍的家位址「多少号多少室」,這個号就是配置設定給整個子網的,「室」對應的号碼即配置設定給子網中計算機的,這就是網絡中的位址。「号」對應的号碼為網絡号,「室」對應的号碼為主機号,這個位址的整體就是IP位址。

通過IP位址我們能知道什麼?

通過 IP 位址,我們就可以知道判斷通路對象伺服器的位置,通過這個 IP 位址就可以判斷通路對象伺服器的位置,進而将消息發送到伺服器。一般發送者發出的消息首先經過子網的集線器,轉發到最近的路由器,然後根據路由位置通路下一個路由器的位置,直到重點

IP頭部格式
TCP/IP 常見攻擊手段

IP頭部格式

IP欺騙技術

騙呗,拐騙,誘騙!

IP 欺騙技術就是僞造某台主機的 IP 位址的技術。通過IP 位址的僞裝使得某台主機能夠僞裝另外的一台主機,而這台主機往往具有某種特權或者被另外的主機所信任。

假設現在有一個合法使用者 (1.1.1.1) 已經同伺服器建立正常的連接配接,攻擊者構造攻擊的 TCP 資料,僞裝自己的 IP 為 1.1.1.1,并向伺服器發送一個帶有 RSI 位的 TCP 資料段。伺服器接收到這樣的資料後,認為從 1.1.1.1 發送的連接配接有錯誤,就會清空緩沖區中建立好的連接配接。

這時,如果合法使用者 1.1.1.1 再發送合法資料,伺服器就已經沒有這樣的連接配接了,該使用者就必須從新開始建立連接配接。攻擊時,僞造大量的IP位址,向目标發送 RST 資料,使伺服器不對合法使用者服務。雖然IP位址欺騙攻擊有着相當難度,但我們應該清醒地意識到,這種攻擊非常廣泛,入侵往往從這種攻擊開始。

2 SYN Flooding

SYN Flooding簡介

拒絕服務攻擊(DDoS)從1970 年出現直到今天都依然在作祟,并給全球範圍内的各大組織帶來了不可估量的損失。SYN Flood是網際網路上最經典的DDoS攻擊方式之一,最早出現于 1999 年左右,雅虎是當時最著名的受害者。SYN Flood攻擊利用了 TCP 三次握手的缺陷,能夠以較小代價使目标伺服器無法響應,且難以追查。

SYN  flood 是一種常見的 DOS(denial of service拒絕服務)和 DDos (distributed denial of serivce 分布式拒絕服務)攻擊方式。這是一種使用TCP協定缺陷,發送大量的僞造的 TCP 連接配接請求,使得被攻擊方 CPU 或記憶體資源耗盡,最終導緻被攻擊方無法提供正常的服務。

TCP SYN Flood攻擊原理

TCP  SYN Flood 攻擊利用的是 TCP 的三次握手(SYN -> SYN/ACK -> ACK),假設連接配接發起方是A,連接配接接受方是 B,即 B 在某個端口(Port)上監聽A發出的連接配接請求,過程如下圖所示,左邊是A,右邊是B。

TCP/IP 常見攻擊手段

A 首先發送 SYN(Synchronization)消息給 B,要求 B 做好接收資料的準備;B 收到後回報 SYN-ACK(Synchronization-Acknowledgement) 消息給A,這個消息的目的有兩個:

  • 向 A 确認已做好接收資料的準備,
  • 同時要求 A 也做好接收資料的準備,此時 B 已向 A 确認好接收狀态,并等待 A 的确認,連接配接處于半開狀态(Half-Open),顧名思義隻開了一半;A 收到後再次發送 ACK (Acknowledgement) 消息給B,向 B 确認也做好了接收資料的準備,至此三次握手完成,「連接配接」就建立了,

大家注意到沒有,最關鍵的一點在于雙方是否都按對方的要求進入了可以接收消息的狀态。而這個狀态的确認主要是雙方将要使用的消息序号(SquenceNum),TCP 為保證消息按發送順序抵達接收方的上層應用,需要用消息序号來标記消息的發送先後順序的。

TCP是「雙工」(Duplex)連接配接,同時支援雙向通信,也就是雙方同時可向對方發送消息,其中 SYN 和 SYN-ACK 消息開啟了A→B的單向通信通道(B 獲知了 A 的消息序号);SYN-ACK 和 ACK 消息開啟了B→A單向通信通道(A獲知了B的消息序号)。

上面讨論的是雙方在誠實守信,正常情況下的通信。

但實際情況是,網絡可能不穩定會丢包,使握手消息不能抵達對方,也可能是對方故意不按規矩來,故意延遲或不發送握手确認消息。

假設  B 通過某 TCP 端口提供服務,B 在收到 A 的 SYN 消息時,積極的回報了 SYN-ACK 消息,使連接配接進入半開狀态,因為 B 不确定自己發給 A 的 SYN-ACK 消息或 A 回報的 ACK 消息是否會丢在半路,是以會給每個待完成的半開連接配接都設一個Timer,如果超過時間還沒有收到 A 的 ACK 消息,則重新發送一次 SYN-ACK 消息給A,直到重試超過一定次數時才會放棄。

TCP/IP 常見攻擊手段

B 為幫助 A 能順利連接配接,需要配置設定核心資源維護半開連接配接,那麼當 B 面臨海量的連接配接 A 時,如上圖所示,SYN Flood 攻擊就形成了。攻擊方 A 可以控制殭屍電腦向 B 發送大量 SYN 消息但不響應 ACK 消息,或者幹脆僞造 SYN 消息中的 Source IP,使 B 回報的 SYN-ACK 消息石沉大海,導緻 B 被大量注定不能完成的半開連接配接占據,直到資源耗盡,停止響應正常的連接配接請求。

3 UDP Flooding

UDP 洪泛是也是一種拒絕服務攻擊,将大量的使用者資料報協定(UDP)資料包發送到目标伺服器,目的是壓倒該裝置的處理和響應能力。防火牆保護目标伺服器也可能因 UDP 泛濫而耗盡,進而導緻對合法流量的拒絕服務。

UDP Flood攻擊如何工作?

UDP Flood 主要通過利用伺服器響應發送到其中一個端口的 UDP 資料包所采取的步驟。在正常情況下,當伺服器在特定端口接收到 UDP 資料包時,會經過兩個步驟:

  • 伺服器首先檢查是否正在運作正在偵聽指定端口的請求的程式。
  • 如果沒有程式在該端口接收資料包,則伺服器使用 ICMP(ping)資料包進行響應,以通知發送方目的地不可達。

舉個例子。假設今天要聯系酒店的小藍,酒店客服接到電話後先檢視房間的清單來確定小藍在客房内,随後轉接給小藍。

首先,接待員接收到呼叫者要求連接配接到特定房間的電話。接待員然後需要檢視所有房間的清單,以確定客人在房間中可用,并願意接聽電話。碰巧的是,此時如果突然間所有的電話線同時亮起來,那麼他們就會很快就變得不堪重負了。

當伺服器接收到每個新的 UDP 資料包時,它将通過步驟來處理請求,并利用該過程中的伺服器資源。發送 UDP 封包時,每個封包将包含源裝置的 IP 位址。在這種類型的 DDoS 攻擊期間,攻擊者通常不會使用自己的真實 IP 位址,而是會欺騙 UDP 資料包的源 IP 位址,進而阻止攻擊者的真實位置被暴露并潛在地飽和來自目标的響應資料包伺服器。

由于目标伺服器利用資源檢查并響應每個接收到的 UDP 資料包的結果,當接收到大量 UDP 資料包時,目标的資源可能會迅速耗盡,導緻對正常流量的拒絕服務。

TCP/IP 常見攻擊手段
如何緩解UDP洪水攻擊?

大多數作業系統部分限制了 ICMP 封包的響應速率,以中斷需要 ICMP 響應的 DDoS 攻擊。這種緩解的一個缺點是在攻擊過程中,合法的資料包也可能被過濾。如果 UDP Flood 的容量足夠高以使目标伺服器的防火牆的狀态表飽和,則在伺服器級别發生的任何緩解都将不足以應對目标裝置上遊的瓶頸。

4 TCP 重置攻擊

在 TCP 重置攻擊中,攻擊者通過向通信的一方或雙方發送僞造的消息,告訴它們立即斷開連接配接,進而使通信雙方連接配接中斷。正常情況下,如果用戶端收發現到達的封包段對于相關連接配接而言是不正确的,TCP 就會發送一個重置封包段,進而導緻 TCP 連接配接的快速拆卸。

TCP 重置攻擊利用這一機制,通過向通信方發送僞造的重置封包段,欺騙通信雙方提前關閉 TCP 連接配接。如果僞造的重置封包段完全逼真,接收者就會認為它有效,并關閉 TCP 連接配接,防止連接配接被用來進一步交換資訊。服務端可以建立一個新的 TCP 連接配接來恢複通信,但仍然可能會被攻擊者重置連接配接。萬幸的是,攻擊者需要一定的時間來組裝和發送僞造的封包,是以一般情況下這種攻擊隻對長連接配接有殺傷力,對于短連接配接而言,你還沒攻擊呢,人家已經完成了資訊交換。

從某種意義上來說,僞造 TCP 封包段是很容易的,因為 TCP/IP 都沒有任何内置的方法來驗證服務端的身份。有些特殊的 IP 擴充協定(例如

IPSec

)确實可以驗證身份,但并沒有被廣泛使用。用戶端隻能接收封包段,并在可能的情況下使用更進階别的協定(如

TLS

)來驗證服務端的身份。但這個方法對 TCP 重置包并不适用,因為 TCP 重置包是 TCP 協定本身的一部分,無法使用更進階别的協定進行驗證。

5. 模拟攻擊

以下實驗是在

OSX

系統中完成的,其他系統請自行測試。

現在來總結一下僞造一個 TCP 重置封包要做哪些事情:

  • 嗅探通信雙方的交換資訊。
  • 截獲一個

    ACK

    标志位置位 1 的封包段,并讀取其

    ACK

    号。
  • 僞造一個 TCP 重置封包段(

    RST

    标志位置為 1),其序列号等于上面截獲的封包的

    ACK

    号。這隻是理想情況下的方案,假設資訊交換的速度不是很快。大多數情況下為了增加成功率,可以連續發送序列号不同的重置封包。
  • 将僞造的重置封包發送給通信的一方或雙方,時其中斷連接配接。

為了實驗簡單,我們可以使用本地計算機通過

localhost

與自己通信,然後對自己進行 TCP 重置攻擊。需要以下幾個步驟:

  • 在兩個終端之間建立一個 TCP 連接配接。
  • 編寫一個能嗅探通信雙方資料的攻擊程式。
  • 修改攻擊程式,僞造并發送重置封包。

下面正式開始實驗。

建立 TCP 連接配接

可以使用 netcat 工具來建立 TCP 連接配接,這個工很多作業系統都預裝了。打開第一個終端視窗,運作以下指令:

$ nc -nvl 8000
           

這個指令會啟動一個 TCP 服務,監聽端口為

8000

。接着再打開第二個終端視窗,運作以下指令:

$ nc 127.0.0.1 8000
           

該指令會嘗試與上面的服務建立連接配接,在其中一個視窗輸入一些字元,就會通過 TCP 連接配接發送給另一個視窗并列印出來。

TCP/IP 常見攻擊手段
嗅探流量

編寫一個攻擊程式,使用 Python 網絡庫

scapy

來讀取兩個終端視窗之間交換的資料,并将其列印到終端上。代碼比較長,下面為一部份,完整代碼背景回複 TCP攻擊,代碼的核心是調用

scapy

的嗅探方法:

TCP/IP 常見攻擊手段

這段代碼告訴

scapy

lo0

網絡接口上嗅探資料包,并記錄所有 TCP 連接配接的詳細資訊。

  • iface : 告訴 scapy 在

    lo0

    (localhost)網絡接口上進行監聽。
  • lfilter : 這是個過濾器,告訴 scapy 忽略所有不屬于指定的 TCP 連接配接(通信雙方皆為

    localhost

    ,且端口号為

    8000

    )的資料包。
  • prn : scapy 通過這個函數來操作所有符合

    lfilter

    規則的資料包。上面的例子隻是将資料包列印到終端,下文将會修改函數來僞造重置封包。
  • count : scapy 函數傳回之前需要嗅探的資料包數量。
發送僞造的重置封包

下面開始修改程式,發送僞造的 TCP 重置封包來進行 TCP 重置攻擊。根據上面的解讀,隻需要修改 prn 函數就行了,讓其檢查資料包,提取必要參數,并利用這些參數來僞造 TCP 重置封包并發送。

例如,假設該程式截獲了一個從(

src_ip

,

src_port

)發往 (

dst_ip

,

dst_port

)的封包段,該封包段的 ACK 标志位已置為 1,ACK 号為

100,000

。攻擊程式接下來要做的是:

  • 由于僞造的資料包是對截獲的資料包的響應,是以僞造資料包的源

    IP/Port

    應該是截獲資料包的目的

    IP/Port

    ,反之亦然。
  • 将僞造資料包的

    RST

    标志位置為 1,以表示這是一個重置封包。
  • 将僞造資料包的序列号設定為截獲資料包的 ACK 号,因為這是發送方期望收到的下一個序列号。
  • 調用

    scapy

    send

    方法,将僞造的資料包發送給截獲資料包的發送方。

對于我的程式而言,隻需将這一行取消注釋,并注釋這一行的上面一行,就可以全面攻擊了。按照步驟 1 的方法設定 TCP 連接配接,打開第三個視窗運作攻擊程式,然後在 TCP 連接配接的其中一個終端輸入一些字元串,你會發現 TCP 連接配接被中斷了!

進一步實驗
  1. 可以繼續使用攻擊程式進行實驗,将僞造資料包的序列号加減 1 看看會發生什麼,是不是确實需要和截獲資料包的

    ACK

    号完全相同。
  2. 打開

    Wireshark

    ,監聽 lo0 網絡接口,并使用過濾器

    ip.src == 127.0.0.1 && ip.dst == 127.0.0.1 && tcp.port == 8000

    來過濾無關資料。你可以看到 TCP 連接配接的所有細節。
  3. 在連接配接上更快速地發送資料流,使攻擊更難執行。

6 中間人攻擊

豬八戒要向小藍表白,于是寫了一封信給小藍,結果第三者小黑攔截到了這封信,把這封信進行了篡改,于是乎在他們之間進行搞破壞行動。這個馬文才就是中間人,實施的就是中間人攻擊。好我們繼續聊聊什麼是中間人攻擊。

什麼是中間人

攻擊中間人攻擊英文名叫 Man-in-the-MiddleAttack,簡稱「MITM攻擊」。指攻擊者與通訊的兩端分别建立獨立的聯系,并交換其所收到的資料,使通訊的兩端認為他們正在通過一個私密的連接配接與對方 直接對話,但事實上整個會話都被攻擊者完全控制。我們畫一張圖:

TCP/IP 常見攻擊手段

中間人

從這張圖可以看到,中間人其實就是攻擊者。通過這種原理,有很多實作的用途,比如說,你在手機上浏覽不健康網站的時候,手機就會提示你,此網站可能含有病毒,是否繼續通路還是做其他的操作等等。

中間人攻擊的原理

舉個例子,我和公司簽了一個一份勞動合同,一人一份合同。不曉得哪個可能改了合同内容,不知道真假了,怎麼搞?隻好找專業的機構來鑒定,自然就要花錢。

在安全領域有句話:我們沒有辦法杜絕網絡犯罪,隻好想辦法提高網絡犯罪的成本。既然沒法杜絕這種情況,那我們就想辦法提高作案的成本,今天我們就簡單了解下基本的網絡安全知識,也是面試中的高頻面試題了。

為了避免雙方說活不算數的情況,雙方引入第三家機構,将合同原文給可信任的第三方機構,隻要這個機構不監守自盜,合同就相對安全。

如果第三方機構内部不嚴格或容易出現纰漏

雖然我們将合同原文給第三方機構了,為了防止内部人員的更改,需要采取什麼措施呢

一種可行的辦法是引入摘要算法。即合同和摘要一起,為了簡單的了解摘要。大家可以想象這個摘要為一個函數,這個函數對原文進行了加密,會産生一個唯一的散列值,一旦原文發生一點點變化,那麼這個散列值将會變化。

有哪些常用的摘要算法呢

目前比較常用的加密算法有消息摘要算法和安全雜湊演算法(SHA)。MD5 是将任意長度的文章轉化為一個128位的散列值,可是在2004年,MD5 被證明了容易發生碰撞,即兩篇原文産生相同的摘要。這樣的話相當于直接給黑客一個後門,輕松僞造摘要。

是以在大部分的情況下都會選擇SHA算法

出現内鬼了怎麼辦?

看似很安全的場面了,理論上來說杜絕了篡改合同的做法。主要某個員工同時具有修改合同和摘要的權利,那搞事兒就是時間的問題了,畢竟沒哪個系統可以完全的杜絕員工接觸敏感資訊,除非敏感資訊都不存在。是以能不能考慮将合同和摘要分開存儲呢

那如何確定員工不會修改合同呢

這确實蠻難的,不過辦法總比困難多。我們将合同放在雙方手中,摘要放在第三方機構,篡改難度進一步加大

那麼員工萬一和某個使用者串通好了呢

看來放在第三方的機構還是不好使,同樣存在不小風險。是以還需要尋找新的方案,這就出現了數字簽名和證書

數字證書和簽名

同樣的,舉個例子。Sum 和 Mike 兩個人簽合同。Sum 首先用 SHA 算法計算合同的摘要,然後用自己私鑰将摘要加密,得到數字簽名。Sum 将合同原文、簽名,以及公鑰三者都交給 Mike

TCP/IP 常見攻擊手段

如果 Sum 想要證明合同是 Mike 的,那麼就要使用 Mike  的公鑰,将這個簽名解密得到摘要x,然後Mike 計算原文的sha摘要Y,随後對比x和y,如果兩者相等,就認為資料沒有被篡改

在這樣的過程中,Mike 是不能更改 Sum 的合同,因為要修改合同不僅僅要修改原文還要修改摘要,修改摘要需要提供Mike 的私鑰,私鑰即 Sum 獨有的密碼,公鑰即 Sum 公布給他人使用的密碼

總之,公鑰加密的資料隻能私鑰可以解密。私鑰加密的資料隻有公鑰可以解密,這就是非對稱加密

對稱與非對稱加密

隐私保護?不是吓唬大家,資訊是透明的兄die,不過盡量去維護個人的隐私吧,今天學習對稱加密和非對稱加密。

大家先讀讀這個字"鑰",是讀"yao",我以前也是,其實讀"yue"

對稱加密

對稱加密,顧名思義,加密方與解密方使用同一鑰匙(秘鑰)。具體一些就是,發送方通過使用相應的加密算法和秘鑰,對将要發送的資訊進行加密;對于接收方而言,使用解密算法和相同的秘鑰解鎖資訊,進而有能力閱讀資訊。

TCP/IP 常見攻擊手段
常見的對稱加密算法
  • DES
DES使用的密鑰表面上是64位的,然而隻有其中的56位被實際用于算法,其餘8位可以被用于奇偶校驗,并在算法中被丢棄。是以,DES 的有效密鑰長度為56位,通常稱 DES 的密鑰長度為56位。假設秘鑰為 56 位,采用暴力破Jie的方式,其秘鑰個數為2的56次方,那麼每納秒執行一次解密所需要的時間差不多1年的樣子。當然,沒人這麼幹。DES 現在已經不是一種安全的加密方法,主要因為它使用的56位密鑰過短。
TCP/IP 常見攻擊手段
  • IDEA
國際資料加密算法(International Data Encryption Algorithm)。秘鑰長度128位,優點沒有專利的限制。
  • AES
當DES被破解以後,沒過多久推出了 AES 算法,提供了三種長度供選擇,128 位、192 位和 256,為了保證性能不受太大的影響,選擇128即可。
  • SM1和SM4
之前幾種都是國外的,我們國内自行研究了國密 **SM1 **和 SM4。其中S都屬于國家标準,算法公開。優點就是國家的大力支援和認可

總結下幾種

TCP/IP 常見攻擊手段
非對稱算法

在對稱加密中,發送方與接收方使用相同的秘鑰。那麼在非對稱加密中則是發送方與接收方使用的不同的秘鑰。其主要解決的問題是防止在秘鑰協商的過程中發生洩漏。比如在對稱加密中,小藍将需要發送的消息加密,然後告訴你密碼是123balala,ok,對于其他人而言,很容易就能劫持到密碼是123balala。那麼在非對稱的情況下,小藍告訴所有人密碼是123balala,對于中間人而言,拿到也沒用,因為沒有私鑰。是以,非對稱密鑰其實主要解決了密鑰分發的難題。如下圖

TCP/IP 常見攻擊手段

非對稱算法

其實我們經常都在使用非對稱加密,比如使用多台伺服器搭建大資料平台hadoop,為了友善多台機器設定免密登入,是不是就會涉及到秘鑰分發。再比如搭建docker叢集也會使用相關非對稱加密算法。

常見的非對稱加密

  • RSA(RSA 加密算法,RSA Algorithm)
優勢是性能比較快,如果想要較高的加密難度,需要很長的秘鑰。
  • ECC
基于橢圓曲線提出。是目前加密強度最高的非對稱加密算法
  • SM2
同樣基于橢圓曲線問題設計。最大優勢就是國家認可和大力支援。

三種對比

TCP/IP 常見攻擊手段
雜湊演算法

這個大家應該更加熟悉了,比如我們平常使用的MD5校驗,在很多時候,我并不是拿來進行加密,而是用來獲得唯一性ID。在做系統的過程中,存儲使用者的各種密碼資訊,通常都會通過雜湊演算法,最終存儲其散列值。

常見的散列
  • MD5
MD5 可以用來生成一個 128 位的消息摘要,它是目前應用比較普遍的雜湊演算法,具體的應用場景你可以自行  參閱。雖然,因為算法的缺陷,它的唯一性已經被破解了,但是大部分場景下,這并不會構成安全問題。但是,如果不是長度受限(32 個字元),我還是不推薦你繼續使用 MD5 的。
  • SHA
安全雜湊演算法。**SHA **分為 SHA1 和 SH2 兩個版本。該算法的思想是接收一段明文,然後以一種不可逆的方式将它轉換成一段(通常更小)密文,也可以簡單的了解為取一串輸入碼(稱為預映射或資訊),并把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為資訊摘要或資訊認證代碼)的過程。
  • SM3
國密算法SM3。加密強度和SHA-256想不多。主要是收到國家的支援。

總結

TCP/IP 常見攻擊手段

至此,總結下,大部分情況下使用對稱加密,具有比較不錯的安全性。如果需要分布式進行秘鑰分發,考慮非對稱。如果不需要可逆計算則雜湊演算法。因為這段時間有這方面需求,就看了一些這方面的資料,入坑資訊安全,就怕以後洗髮乳都不用買。謝謝大家檢視!

問題還有,此時如果 Sum 否認給過 Mike 的公鑰和合同,不久gg了

是以需要 Sum 過的話做過的事兒需要足夠的信譽,這就引入了第三方機構和證書機制。

證書之是以會有信用,是因為證書的簽發方擁有信用。是以如果 Sum 想讓 Mike 承認自己的公鑰,Sum 不會直接将公鑰給 Mike ,而是提供由第三方機構,含有公鑰的證書。如果 Mike 也信任這個機構,法律都認可,那ik,信任關系成立

TCP/IP 常見攻擊手段

如上圖所示,Sum 将自己的申請送出給機構,産生證書的原文。機構用自己的私鑰簽名 Sum 的申請原文(先根據原文内容計算摘要,再用私鑰加密),得到帶有簽名資訊的證書。Mike 拿到帶簽名資訊的證書,通過第三方機構的公鑰進行解密,獲得 Sum 證書的摘要、證書的原文。有了 Sum 證書的摘要和原文,Mike 就可以進行驗簽。驗簽通過,Mike 就可以确認 Sum 的證書的确是第三方機構簽發的。

用上面這樣一個機制,合同的雙方都無法否認合同。這個解決方案的核心在于需要第三方信用服務機構提供信用背書。這裡産生了一個最基礎的信任鍊,如果第三方機構的信任崩潰,比如被黑客攻破,那整條信任鍊條也就斷裂了

為了讓這個信任條更加穩固,就需要環環相扣,打造更長的信任鍊,避免單點信任風險

TCP/IP 常見攻擊手段

上圖中,由信譽最好的根證書機構提供根證書,然後根證書機構去簽發二級機構的證書;二級機構去簽發三級機構的證書;最後有由三級機構去簽發 Sum 證書。

如果要驗證 Sum 證書的合法性,就需要用三級機構證書中的公鑰去解密 Sum 證書的數字簽名。

如果要驗證三級機構證書的合法性,就需要用二級機構的證書去解密三級機構證書的數字簽名。

如果要驗證二級結構證書的合法性,就需要用根證書去解密。

以上,就構成了一個相對長一些的信任鍊。如果其中一方想要作弊是非常困難的,除非鍊條中的所有機構同時聯合起來,進行欺詐。

中間人攻擊如何避免?

既然知道了中間人攻擊的原理也知道了他的危險,現在我們看看如何避免。相信我們都遇到過下面這種狀況:

TCP/IP 常見攻擊手段

出現這個界面的很多情況下,都是遇到了中間人攻擊的現象,需要對安全證書進行及時地監測。而且大名鼎鼎的github網站,也曾遭遇過中間人攻擊:

想要避免中間人攻擊的方法目前主要有兩個:

  • 用戶端不要輕易相信證書:因為這些證書極有可能是中間人。
  • App 可以提前預埋證書在本地:意思是我們本地提前有一些證書,這樣其他證書就不能再起作用了。

7 DDOS

通過上面的描述,總之即好多種攻擊都是 DDOS 攻擊,是以簡單總結下這個攻擊相關内容。

其實,像全球網際網路各大公司,均遭受過大量的 DDoS。

2018年,GitHub 在一瞬間遭到高達 1.35Tbps 的帶寬攻擊。這次 DDoS 攻擊幾乎可以堪稱是網際網路有史以來規模最大、威力最大的 DDoS 攻擊了。在 GitHub 遭到攻擊後,僅僅一周後,DDoS 攻擊又開始對 Google、亞馬遜甚至 Pornhub 等網站進行了 DDoS 攻擊。後續的 DDoS 攻擊帶寬最高也達到了 1Tbps。

那 DDoS 攻擊究竟是什麼?

DDos 全名 Distributed Denial of Service,翻譯成中文就是分布式拒絕服務。指的是處于不同位置的多個攻擊者同時向一個或數個目标發動攻擊,是一種分布的、協同的大規模攻擊方式。單一的DoS攻擊一般是采用一對一方式的,它利用網絡協定和作業系統的一些缺陷,采用欺騙和僞裝的政策來進行網絡攻擊,使網站伺服器充斥大量要求回複的資訊,消耗網絡帶寬或系統資源,導緻網絡或系統不勝負荷以至于癱瘓而停止提供正常的網絡服務。

舉個例子

我開了一家有五十個座位的重慶火鍋店,由于用料上等,童叟無欺。平時門庭若市,生意特别紅火,而對面二狗家的火鍋店卻無人問津。二狗為了對付我,想了一個辦法,叫了五十個人來我的火鍋店坐着卻不點菜,讓别的客人無法吃飯。

上面這個例子講的就是典型的 DDoS 攻擊,一般來說是指攻擊者利用“殭屍電腦”對目标網站在較短的時間内發起大量請求,大規模消耗目标網站的主機資源,讓它無法正常服務。線上遊戲、網際網路金融等領域是 DDoS 攻擊的高發行業。

攻擊方式很多,比如 ICMP Flood、UDP Flood、NTP Flood、SYN Flood、CC 攻擊、DNS Query Flood等等。

SYN Flood進行DDoS攻擊的實作原理**

SYN Flood 是一種利用 TCP 協定缺陷,發送大量僞造的 TCP 連接配接請求,進而使得被攻擊方資源耗盡(CPU滿負荷或記憶體不足)的攻擊方式。

一次正常的建立 TCP 連接配接,需要三次握手:用戶端發送 SYN 封包,服務端收到請求并傳回封包表示接受,用戶端也傳回确認,完成連接配接。

SYN Flood 就是使用者向伺服器發送封包後突然當機或掉線,那麼伺服器在發出應答封包後就無法收到用戶端的确認封包(第三次握手無法完成),這時伺服器端一般會重試并等待一段時間後再丢棄這個未完成的連接配接。

一個使用者出現異常導緻伺服器的一個線程等待一會兒并不是大問題,但惡意攻擊者大量模拟這種情況,伺服器端為了維護數以萬計的半連接配接而消耗非常多的資源,結果往往是無暇理睬客戶的正常請求,甚至崩潰。從正常客戶的角度看來,網站失去了響應,無法通路。

如何應對 DDoS 攻擊?
  • 高防伺服器

還是拿開的重慶火鍋店舉例,高防伺服器就是我給重慶火鍋店增加了兩名保安,這兩名保安可以讓保護店鋪不受流氓騷擾,并且還會定期在店鋪周圍巡邏防止流氓騷擾。

高防伺服器主要是指能獨立硬防禦 50Gbps 以上的伺服器,能夠幫助網站拒絕服務攻擊,定期掃描網絡主節點等,這東西是不錯,就是貴~

  • 黑名單

面對火鍋店裡面的流氓,我一怒之下将他們拍照入檔,并禁止他們踏入店鋪,但是有的時候遇到長得像的人也會禁止他進入店鋪。這個就是設定黑名單,此方法秉承的就是“錯殺一千,也不放一百”的原則,會封鎖正常流量,影響到正常業務。

  • DDoS 清洗

DDos 清洗,就是我發現客人進店幾分鐘以後,但是一直不點餐,我就把他踢出店裡。

DDoS 清洗會對使用者請求資料進行實時監控,及時發現 **DOS **攻擊等異常流量,在不影響正常業務開展的情況下清洗掉這些異常流量。

  • CDN 加速

CDN 加速,我們可以這麼了解:為了減少流氓騷擾,我幹脆将火鍋店開到了線上,承接外賣服務,這樣流氓找不到店在哪裡,也耍不來流氓了。

在現實中,CDN 服務将網站通路流量配置設定到了各個節點中,這樣一方面隐藏網站的真實 IP,另一方面即使遭遇 DDoS 攻擊,也可以将流量分散到各個節點中,防止源站崩潰。

總結

計算機網絡涉及的知識點較多,文中也就算是提了一下,更深此的了解還需要大家去看相應的書籍,感覺看了這一篇,當面試官問 DDOS 或者 TCP 涉及哪些攻擊技術知識點的時候,能夠回答出來就好了,咋們下一篇再見!

-END-
如果看到這裡,說明你喜歡這篇文章,請 轉發、點贊。微信搜尋「web_resource」,關注後回複「進群」或者掃描下方二維碼即可進入無廣告交流群。
↓掃描二維碼進群↓

推薦閱讀 
1.  一份 Spring Boot 項目搭模組化闆
2.  Spring Boot 實作應用監控和報警
3.  Nginx 從入門到實戰
4.  一鍵式搭建分布式檔案伺服器
5.  團隊開發中 Git 最佳實踐

喜歡文章,點個在看