????????本篇博客講述的是網絡安全中一些協議缺陷以及相應的理論知識,本博主盡可能講明白其中的一些原理以及對應的防衛措施。
????????學習考研408的同學也能進來看看,或許對考研有些許幫助(按照考研現在的趨勢,年年都有新題目,本文當作課外拓展也是可以的)。
? ? ? ? 提及黑客,很多人的第一想法或許是一位戴著邪惡面具,躲在逼仄的房間里幾天沒有洗澡的油膩男,他們竊取許多無辜百姓們的信息,并且利用這些信息對目標受眾進行欺騙。也有的人會覺得黑客是很酷的一個職業,他們捍衛國家的機密,并且對敵國的信息進行竊聽,是人見人愛的大英雄。
? ? ? ?事實上,以上兩種說法都有道理,就好像我們寫語文或者英語作文時總是把某個東西比作成“雙刃劍”,有好的一面自然也會有壞的一面。在這里要借用《大明王朝1566》中不粘鍋趙貞吉的一句話“功過總是結伴而行,我不求有功,無過便是功。”
????????可以不用黑客技術去黑掉敵對勢力的網絡與主機,更重要的是“無過”二字,不要用技術去犯下過錯,釀成災難,這是所有技術人員應該遵循的底線。
? ? ? ? 端正好思想后,就跟隨博主,一起來了解部分網絡協議的具體作用以及相應的漏洞吧!
一、網絡層與IP協議作用
要想搞清楚IP協議的作用,首先要了解清楚網絡層的定位。
網絡層是負責地址管理和路由選擇。
IP協議:網絡層的一個協議,通過IP地址來標識一臺主機,并通過路由表的方式規劃出兩臺主機之間的數據傳輸的路由線路。
IP地址的核心作用就是用于定位主機IP具有將一個數據數據從A主機跨網絡送到B主機的能力(主機到主機)
二、IP數據報格式
- 版本號(version):4位,指定IP協議的版本,對于IPv4來說,就是4,而IPv6則該字段為6
- 首部長度(header length):4位,表示IP報頭的長度,以4字節為單位(口訣:1位總司令與4位首長要抓8個騙子:總長度乘1倍,首部長度乘4倍,片偏移乘8倍)
- 服務類型(Type Of Service):8位,分為3位優先權字段(已經棄用),4位TOS字段,和1位保留字段(必須置為0)。
- 總長度(total length):16位,IP報文(IP報頭+有效載荷)的總長度,用于將各個IP報文進行分離。
- 標識(id):16位,唯一的標識主機發送的報文,如果數據在IP層進行了分片,那么每一個分片對應的id都是相同的
- 標志字段:3位,第一位保留,暫時無用。第二位表示禁止分片DF(Don't Fragment),表示如果報文長度超過MTU,IP協議就會丟棄該報文。第三位表示更多分片MF(More?Fragment),如果報文沒有進行分片,則該字段設置為0,如果報文進行了分片,則除了最后一個分片報文設置為0以外,其余分片報文均設置為1
- 片偏移(framegament offset):13位,分片相對于原始數據開始處的偏移,表示當前分片在原數據中的偏移位置,實際偏移的字節數是這個值乘8得到的。因此除了最后一個報文之外,其他報文的長度必須是8的整數倍。(由此也可以推出,算片偏移時是不帶報頭的,例如第一片報文為24B,報頭是20B,要是帶上報頭計算的話,44不能被8整除)
- 生存時間(Time To Live,TTL):8位,數據報到達目的地的最大報文跳數,一般是64,每經過一個路由,TTL 減?1,一直減到0還沒到達,那么就丟棄了,這個字段主要是用來防止出現路由循環
- 8位協議:表示上層協議的類型
- 首部檢驗和:16位,使用CRC進行校驗,只檢驗數據報的首部是否損壞,不檢驗數據部分
- 源IP地址(Source IP Address):32位,指示發送該數據報的源主機的IP地址。
- 目標IP地址(Destination IP Address):32位,指示接收該數據報的目標主機的IP地址
- 選項字段:不定長,最多40字節
三、IP協議漏洞
1、數據報格式類漏洞
①.“源IP地址”
IP協議缺乏對地址真實性的認證機制,不能保證數據就是從數據包中給定的源地址發出的。
②.“目標IP地址”
不能確保就一定能把數據發給了數據包報頭中目的地址的主機。
③.“首部校驗和”
由于IP層沒有采用任何機制保證數據凈荷的正確性,只檢驗首部的正確性,導致攻擊者可能截取數據報,修改數據報中的內容,將修改結果發送給接收方。
④“標志”
上面三類漏洞都好理解,最惡心的是利用標志位的這類攻擊,也就是說,這類攻擊常常以分片的方式來惡心人。
主要分為大包分片攻擊、極小碎片攻擊以及分片重疊攻擊這三大類。
大包分片攻擊利用分片重組的特點,使受害主機在數據包重組之后的長度超過65535字節,使得事先分配的緩沖區溢出,造成系統崩潰。
極小碎片攻擊稍微復雜一點,他是攻擊者通過惡意操作,發送極小的分片來繞過包過濾系統或者入侵檢測系統的一種攻擊手段。
最典型的例子是,將TCP報頭分布在2個分片中,標志字段包含在第二個分片中; 若包過濾設備或者入侵檢測系統通過判斷TCP SYN標志來采取禁止外部連接,則可能放行這些分片報文。
分片重疊攻擊則是在分片報文重組時,使數據產生重疊,造成系統崩潰或繞過防火墻。
數據重疊造成系統崩潰的意思很明顯,假設第一個分片報文長為80B,第二個分片卻在報頭偏移量的位置填了個5而不是10,在重組時有40B的內容就會被吞掉,造成系統崩潰。
而繞過防火墻則需要與標識位配合,假設防火墻運行目的端口40通過,而不允許目的端口50通過,則通過分片重疊,可以讓目的端口仍為40但卻可以繞過防火墻。
所以通過以上IP報文邏輯漏洞的分析,我們就能很清楚的找到對應策略,最極端的方式就是減少分片,能不分片就盡量不分片,同時也要丟棄過短的報文,避免極小碎片攻擊,再者,為了避免上圖中繞過防火墻的行為,可以先對報文重組,重組后再判斷是否該重組后的報文需要被過濾掉。
2、IP定向廣播攻擊
①定向廣播地址的定義
定向廣播地址是每個子網的最后一個IP地址,用于向該子網內所有設備發送廣播數據包。例如192.168.1.0/24的定向廣播地址就是192.168.1.255。
當數據包發送到定向廣播地址時,路由器會將其轉發到目標子網,并由子網內所有主機接收。
②典型攻擊:smurf攻擊
例如,·攻擊者A偽造源地址為受害主機B,并向定向廣播地址發送大量的ICMP中的Ping請求,此時,該子網內的主機都會向受害者B回復一個ICMP Echo Reply。而受害者突然收到了這么多的回復導致服務中斷,遭受DDos攻擊。
這就好比,伍老師邪惡的課代表狐假虎威,代替老師給全班亂布置作業,讓全班同學今天回去之后寫篇八百字的作文。事實上,語文老師自己都不知道自己給全班同學布置了一篇作文,這就導致第二天要改全班三四十篇作文,累得要命,從而沒有精力給班上上課了。
③防御措施
防范此類攻擊,最簡單的就是禁用定向廣播轉發功能,并且想辦法找出并過濾掉偽造IP源地址的數據包,這都能從根源上抵御該類型攻擊。
3、IP源路由欺騙
①IP source routing
什么是IP source routing呢?它是IP數據包中有一個選項,可以指定從源到目的的路由,則目的到源的應答包也會沿著這個路由傳遞。它分為兩種類型:
嚴格源路由:簡稱SSR,Strict Source Routing,不是陰陽師抽卡里面的SSR。在該條件下,數據包必須嚴格按照指定路徑轉發,否則將會丟棄該數據包。
松散源路由:LSR,Loose?Source Routing,數據包經過指定路徑中的關鍵節點,其余路徑由路由器決定。
這就好比大耳朵圖圖放學回家,有羊腸小道的小路也有布滿監控的大路。但是走小道回家會有小混混收保護費,圖圖為了自己不被小混混盯上,安全回家,所以在此期間他老老實實的走大路回家,完全不經過巷子,這就是“嚴格源路由”。而經過掃黑除惡行動后,小混混沒有以前那么猖獗了,圖圖也開始時不時走走小道,但是為了以防萬一,他在回家的路上,肯定會經過警局,至于去警局走哪條路,從警局回家走哪條道,圖圖隨緣決定,這就是“松散源路由”。
②攻擊原理
攻擊者可以利用“IP source routing”選項獲取到應答數據包,并且通過偽裝IP地址進行網絡攻擊。攻擊者利用源路由選項,偽裝成另一個IP地址,發送數據包到目標服務器,從而獲取不屬于自己的信息。
例如,受害者A向服務器B發送數據,攻擊者C偽造一個源路由選項位A->C->B的數據包,則接收方B收到消息后,會自動沿著源路由選項的逆向路徑回復,即B->C->A,后續雙方的通信都被迫經過C,C就可以實現中間人MITM攻擊,也可以監聽A與B的全部信息從而獲取關鍵信息(例如HTTP密碼、cookie),甚至在雙方的通信中加入惡意代碼。
③防范措施
該攻擊并不難防,以至于現在很少見到此類攻擊了。
首先,現代操作系統和網絡設備不再支持IP source routing選項了,這從根源上遏制了IP源路由欺騙攻擊的發展。
其次,TSL或者SSL等加密協議使得就算有中間人截獲信息也無法得知內容。
好滴,本期的博客就到此為止啦,如果你感覺小編寫的還可以,麻煩給本博主點個小小的贊吧!