2.1. 網(wǎng)絡(luò)基礎(chǔ)2.1.1. 計(jì)算機(jī)通信網(wǎng)的組成計(jì)算機(jī)網(wǎng)絡(luò)由通信子網(wǎng)和資源子網(wǎng)組成。其中通信子網(wǎng)負(fù)責(zé)數(shù)據(jù)的無差錯(cuò)和有序傳遞,其處理功能包括差錯(cuò)控制、流量控制、路由選擇、網(wǎng)絡(luò)互連等。 其中資源子網(wǎng)是計(jì)算機(jī)通信的本地系統(tǒng)環(huán)境,包括主機(jī)、終端和應(yīng)用程序等, 資源子網(wǎng)的主要功能是用戶資源配置、數(shù)據(jù)的處理和管理、軟件和硬件共享以及負(fù)載 均衡等。 總的來說,計(jì)算機(jī)通信網(wǎng)就是一個(gè)由通信子網(wǎng)承載的、傳輸和共享資源子網(wǎng)的各類信息的系統(tǒng)。 2.1.2. 通信協(xié)議為了完成計(jì)算機(jī)之間有序的信息交換,提出了通信協(xié)議的概念,其定義是相互通信的雙方(或多方)對如何進(jìn)行信息交換所必須遵守的一整套規(guī)則。 協(xié)議涉及到三個(gè)要素,分別為:
2.1.3. OSI七層模型2.1.3.1. 簡介OSI(Open System Interconnection)共分為物理層、數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層、會話層、表示層、應(yīng)用層七層,其具體的功能如下。 2.1.3.2. 物理層
2.1.3.3. 數(shù)據(jù)鏈路層
2.1.3.4. 網(wǎng)絡(luò)層
2.1.3.5. 傳輸層
2.1.3.6. 會話層
2.1.3.7. 表示層
2.1.3.8. 應(yīng)用層
2.1.3.9. 總結(jié)低三層模型屬于通信子網(wǎng),涉及為用戶間提供透明連接,操作主要以每條鏈路( hop-by-hop)為基礎(chǔ),在節(jié)點(diǎn)間的各條數(shù)據(jù)鏈路上進(jìn)行通信。由網(wǎng)絡(luò)層來控制各條鏈路上的通信,但要依賴于其他節(jié)點(diǎn)的協(xié)調(diào)操作。 高三層屬于資源子網(wǎng),主要涉及保證信息以正確可理解形式傳送。 傳輸層是高三層和低三層之間的接口,它是第一個(gè)端到端的層次,保證透明的端到端連接,滿足用戶的服務(wù)質(zhì)量(QoS)要求,并向高三層提供合適的信息形式。 2.2. UDP協(xié)議2.2.1. 主要特點(diǎn)
2.3. TCP協(xié)議2.3.1. 簡介TCP(Transmission Control Protocol,傳輸控制協(xié)議)是一種面向連接的、可靠的、基于字節(jié)流的傳輸層通信協(xié)議,由RFC 793定義。 2.3.2. TCP狀態(tài)2.3.2.1. 三次握手三次握手(Three-Way Handshake)是指建立一個(gè)TCP連接時(shí),需要客戶端和服務(wù)端總共發(fā)送3個(gè)包以確認(rèn)連接的建立。 第一次握手客戶端將標(biāo)志位 SYN 置為1,隨機(jī)產(chǎn)生一個(gè)值 seq=s ,并將該數(shù)據(jù)包發(fā)送給服務(wù)端,客戶端進(jìn)入 SYN_SENT 狀態(tài),等待服務(wù)端確認(rèn)。 第二次握手服務(wù)端收到數(shù)據(jù)包后由標(biāo)志位 SYN=1 知道客戶端請求建立連接,服務(wù)端將標(biāo)志位 SYN 和 ACK 都置為1,ack=s+1,隨機(jī)產(chǎn)生一個(gè)值 seq=k ,并將該數(shù)據(jù)包發(fā)送給客戶端以確認(rèn)連接請求,服務(wù)端進(jìn)入 SYN_RCVD 狀態(tài)。 第三次握手客戶端收到確認(rèn)后,檢查ack值是否為s+1,ACK標(biāo)志位是否為1,如果正確則將標(biāo)志位 ACK 置為1,ack=k+1,并將該數(shù)據(jù)包發(fā)送給服務(wù)端,服務(wù)端檢查ack值是否為k+1,ACK標(biāo)志位是否為1,如果正確則連接建立成功,客戶端和服務(wù)端進(jìn)入 ESTABLISHED 狀態(tài),完成三次握手。 2.3.2.2. 四次揮手四次揮手(Four-Way Wavehand)指斷開一個(gè)TCP連接時(shí),需要客戶端和服務(wù)端總共發(fā)送4個(gè)包以確認(rèn)連接的斷開。 第一次揮手客戶端發(fā)送一個(gè) FIN ,用來關(guān)閉客戶端到服務(wù)端的數(shù)據(jù)傳送,客戶端進(jìn)入 FIN_WAIT_1 狀態(tài)。 第二次揮手服務(wù)端收到 FIN 后,發(fā)送一個(gè) ACK 給客戶端,確認(rèn)序號為收到序號+1,服務(wù)端進(jìn)入 CLOSE_WAIT 狀態(tài)。 第三次揮手服務(wù)端發(fā)送一個(gè) FIN ,用來關(guān)閉服務(wù)端到客戶端的數(shù)據(jù)傳送,服務(wù)端進(jìn)入 LAST_ACK 狀態(tài)。 第四次揮手客戶端收到 FIN 后,客戶端進(jìn)入 TIME_WAIT 狀態(tài),接著發(fā)送一個(gè) ACK 給服務(wù)端,確認(rèn)序號為收到序號+1,服務(wù)端進(jìn)入 CLOSED 狀態(tài),完成四次揮手。 2.3.3. 擁塞控制擁塞是指網(wǎng)絡(luò)中報(bào)文數(shù)量過多,使得服務(wù)端來不及處理,以致引起這部分乃至整個(gè)網(wǎng)絡(luò)性能下降的現(xiàn)象,嚴(yán)重時(shí)甚至?xí)?dǎo)致網(wǎng)絡(luò)通信業(yè)務(wù)陷入停頓即出現(xiàn)死鎖現(xiàn)象。 TCP采用擁塞控制算法來減少或者避免擁塞現(xiàn)象的發(fā)生,TCP的擁塞算法有過多種實(shí)現(xiàn),包括Tahoe、Reno、NewReno、Vegas、Hybla、BIC 、CUBIC、SACK、Westwood、PRR、BBR等。 2.3.4. 參考鏈接
2.4. DHCP協(xié)議2.4.1. 簡介動態(tài)主機(jī)配置協(xié)議 (Dynamic Host Configuration Protocol,DHCP) 是一個(gè)用于局域網(wǎng)的網(wǎng)絡(luò)協(xié)議,位于OSI模型的應(yīng)用層,使用UDP協(xié)議工作,主要用于自動分配IP地址給用戶,方便管理員進(jìn)行統(tǒng)一管理。 DHCP服務(wù)器端使用67/udp,客戶端使用68/udp。DHCP運(yùn)行分為四個(gè)基本過程,分別為請求IP租約、提供IP租約、選擇IP租約和確認(rèn)IP租約??蛻舳嗽讷@得了一個(gè)IP地址以后,就可以發(fā)送一個(gè)ARP請求來避免由于DHCP服務(wù)器地址池重疊而引發(fā)的IP沖突。 2.4.2. DCHP 報(bào)文格式0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| op (1) | htype (1) | hlen (1) | hops (1) |+---------------+---------------+---------------+---------------+| xid (4) |+-------------------------------+-------------------------------+| secs (2) | flags (2) |+-------------------------------+-------------------------------+| ciaddr (4) |+---------------------------------------------------------------+| yiaddr (4) |+---------------------------------------------------------------+| siaddr (4) |+---------------------------------------------------------------+| giaddr (4) |+---------------------------------------------------------------+| chaddr (16) |+---------------------------------------------------------------+| sname (64) |+---------------------------------------------------------------+| file (128) |+---------------------------------------------------------------+| options (variable) |+---------------------------------------------------------------+ 2.4.3. 參考鏈接
2.4.3.1. RFC
2.5. 路由算法2.5.1. 簡介路由算法是用于找到一條從源路由器到目的路由器的最佳路徑的算法。存在著多種路由算法,每種算法對網(wǎng)絡(luò)和路由器資源的影響都不同;由于路由算法使用多種度量標(biāo)準(zhǔn) (metric),所以不同路由算法的最佳路徑選擇也有所不同。 2.5.2. 路由選擇算法的功能源/宿對之間的路徑選擇,以及選定路由之后將報(bào)文傳送到它們的目的地。 路由選擇算法的要求:
2.5.3. 自治系統(tǒng) AS (Autonomous System)經(jīng)典定義:
盡管一個(gè) AS 使用了多種內(nèi)部路由選擇協(xié)議和度量,但對其他 AS 表現(xiàn)出的是一個(gè)單一的和一致的路由選擇策略。 2.5.4. 兩大類路由選擇協(xié)議因特網(wǎng)的中,路由協(xié)議可以分為內(nèi)部網(wǎng)關(guān)協(xié)議 IGP (Interior Gateway Protocol)和外部網(wǎng)關(guān)協(xié)議 EGP (External Gateway Protocol)。 IGP是在一個(gè)AS內(nèi)部使用的路由選擇協(xié)議,如RIP和OSPF協(xié)議,是域內(nèi)路由選擇 (interdomain routing)。當(dāng)源主機(jī)和目的主機(jī)處在不同的AS中,在數(shù)據(jù)報(bào)到達(dá)AS的邊界時(shí),使用外部網(wǎng)關(guān)協(xié)議 EGP 將路由選擇信息傳遞到另一個(gè)自治系統(tǒng)中,如BGP-4,是域間路由選擇 (intradomain routing)。 2.5.5. RIP路由信息協(xié)議 (Routing Information Protocol, RIP) 是一種基于距離 向量的路由選擇協(xié)議。RIP 協(xié)議要求網(wǎng)絡(luò)中的每一個(gè)路由器都要維護(hù)從它自己到自治系統(tǒng)內(nèi)其他每一個(gè)目的網(wǎng)絡(luò)的距離和下一跳路由器地址。 2.5.6. OSPF開放最短路徑優(yōu)先(Open Shortest Path First,OSPF),這個(gè)算法名為“最短路徑優(yōu)先”是因?yàn)槭褂昧?Dijkstra 提出的最短路徑算法SPF,只是一個(gè)協(xié)議的名字,它并不表示其他的路由選擇協(xié)議不是“最短路徑優(yōu)先”。 2.6. 域名系統(tǒng)2.6.1. 簡介DNS是一個(gè)簡單的請求-響應(yīng)協(xié)議,是將域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,能夠使人更方便地訪問互聯(lián)網(wǎng)。DNS使用TCP和UDP協(xié)議的53端口。 2.6.2. 術(shù)語2.6.2.1. mDNSMulticast DNS (mDNS),多播DNS,使用5353端口,組播地址為 224.0.0.251 或 [FF02::FB] 。在一個(gè)沒有常規(guī)DNS服務(wù)器的小型網(wǎng)絡(luò)內(nèi)可以使用mDNS來實(shí)現(xiàn)類似DNS的編程接口、包格式和操作語義。mDNS協(xié)議的報(bào)文與DNS的報(bào)文結(jié)構(gòu)相同,但有些字段對于mDNS來說有新的含義。 啟動mDNS的主機(jī)會在進(jìn)入局域網(wǎng)后向所有主機(jī)組播消息,包含主機(jī)名、IP等信息,其他擁有相應(yīng)服務(wù)的主機(jī)也會響應(yīng)含有主機(jī)名和IP的信息。 mDNS的域名是用 .local 和普通域名區(qū)分開的。 2.6.2.2. FQDNFQDN (Fully-Qualified Domain Name) 是域名的完全形態(tài),主要是包含零長度的根標(biāo)簽,例如 www.. 。 2.6.2.3. TLDTop-Level Domain (TLD) 是屬于根域的一個(gè)域,例如 com 或 jp 。 TLD一般可以分為 Country Code Top-Level Domains (ccTLDs) 、Generic Top-Level Domains (gTLDs) 以及其它。 2.6.2.4. IDNInternationalized Domain Names for Applications (IDNA) 是為了處理非ASCII字符的情況。 2.6.2.5. CNAMECNAME即Canonical name,又稱alias,將域名指向另一個(gè)域名。 2.6.2.6. TTLTime To Live,無符號整數(shù),記錄DNS記錄過期的時(shí)間,最小是0,最大是2147483647 (2^31 - 1)。 2.6.3. 請求響應(yīng)2.6.3.1. DNS記錄
2.6.3.2. 響應(yīng)碼
No error condition
Format error - The name server was unable to interpret the query
Server failure - The name server was unable to process this query due to a problem with the name server
this code signifies that the domain name referenced in the query does not exist
Not Implemented - The name server does not support the requested kind of query
Refused - The name server refuses to perform the specified operation for policy reasons
A pseudo RCODE which indicates that the name is valid, for the given class, but [there] are no records of the given type A NODATA response has to be inferred from the answer. 2.6.4. 域名系統(tǒng)工作原理2.6.4.1. 解析過程DNS解析過程是遞歸查詢的,具體過程如下:
2.6.4.2. 域傳送DNS服務(wù)器可以分為主服務(wù)器、備份服務(wù)器和緩存服務(wù)器。域傳送是指備份服務(wù)器從主服務(wù)器拷貝數(shù)據(jù),并使用得到的數(shù)據(jù)更新自身數(shù)據(jù)庫。域傳送是在主備服務(wù)器之間同步數(shù)據(jù)庫的機(jī)制。 2.6.5. 服務(wù)器類型2.6.5.1. 根服務(wù)器根服務(wù)器是DNS的核心,負(fù)責(zé)互聯(lián)網(wǎng)頂級域名的解析,用于維護(hù)域的權(quán)威信息,并將DNS查詢引導(dǎo)到相應(yīng)的域名服務(wù)器。 根服務(wù)器在域名樹中代表最頂級的 . 域, 一般省略。 13臺IPv4根服務(wù)器的域名標(biāo)號為a到m,即a.root-servers.org到m.root-servers.org,所有服務(wù)器存儲的數(shù)據(jù)相同,僅包含ICANN批準(zhǔn)的TLD域名權(quán)威信息。 2.6.5.2. 權(quán)威服務(wù)器權(quán)威服務(wù)器上存儲域名Zone文件,維護(hù)域內(nèi)域名的權(quán)威信息,遞歸服務(wù)器可以從權(quán)威服務(wù)器獲得DNS查詢的資源記錄。 權(quán)威服務(wù)器需要在所承載的域名所屬的TLD管理局注冊,同一個(gè)權(quán)威服務(wù)器可以承載不同TLD域名,同一個(gè)域也可以有多個(gè)權(quán)威服務(wù)器。 2.6.5.3. 遞歸服務(wù)器遞歸服務(wù)器負(fù)責(zé)接收用戶的查詢請求,進(jìn)行遞歸查詢并響應(yīng)用戶查詢請求。在初始時(shí)遞歸服務(wù)器僅有記錄了根域名的Hint文件。 2.6.6. DNS利用2.6.6.1. DGADGA(Domain Generate Algorithm,域名生成算法)是一種利用隨機(jī)字符來生成C&C域名,從而逃避域名黑名單檢測的技術(shù)手段,常見于botnet中。一般來說,一個(gè)DGA域名的存活時(shí)間約在1-7天左右。 通信時(shí),客戶端和服務(wù)端都運(yùn)行同一套DGA算法,生成相同的備選域名列表,當(dāng)需要發(fā)動攻擊的時(shí)候,選擇其中少量進(jìn)行注冊,便可以建立通信,并且可以對注冊的域名應(yīng)用速變IP技術(shù),快速變換IP,從而域名和IP都可以進(jìn)行快速變化。 DGA域名有多種生成方式,根據(jù)種子類型可以分為確定性和不確定性的生成。不確定性的種子可能會選用當(dāng)天的一些即時(shí)數(shù)據(jù),如匯率信息等。 2.6.6.2. DNS隧道DNS隧道工具將進(jìn)入隧道的其他協(xié)議流量封裝到DNS協(xié)議內(nèi),在隧道上傳輸。這些數(shù)據(jù)包出隧道時(shí)進(jìn)行解封裝,還原數(shù)據(jù)。 2.6.7. 加密方案作為主流的防御方案,DNS加密有五種方案,分別是 DNS-over-TLS (DoT)、DNS-over-DTLS、DNS-over-HTTPS (DoH)、DNS-over-QUIC以及DNSCrypt。 2.6.7.1. DoTDoT方案在2016年發(fā)表于RFC7858,使用853端口。主要思想是Client和Server通過TCP協(xié)議建立TLS會話后再進(jìn)行DNS傳輸,Client通過SSL證書驗(yàn)證服務(wù)器身份。 2.6.7.2. DNS-over-DTLSDNS-over-DTLS和DoT類似,區(qū)別在于使用UDP協(xié)議而不是TCP協(xié)議。 2.6.7.3. DoHDoH方案在發(fā)表RFC8484,使用 2.6.7.4. DNS-over-QUICDNS-over-QUIC安全特性和DoT類似,但是性能更高,目前沒有合適的軟件實(shí)現(xiàn)。 2.6.7.5. DNSCryptDNSCrypt使用X25519-XSalsa20Poly1305而非標(biāo)準(zhǔn)的TLS,且DNSCrypt的Client需要額外的軟件,Server需要的專門的證書。 2.6.8. 相關(guān)漏洞2.6.8.1. DNS劫持DNS劫持有多種方式,比較早期的攻擊方式是通過攻擊域名解析服務(wù)器,或是偽造DNS響應(yīng)的方法,來將域名解析到惡意的IP地址。 隨著互聯(lián)網(wǎng)應(yīng)用的不斷發(fā)展,出現(xiàn)了基于廢棄記錄的劫持方式。這種方式發(fā)生的場景是次級域名的解析記錄指向第三方資源,而第三方資源被釋放后,解析記錄并沒有取消,在這種場景下,可以對應(yīng)申請第三方資源,以獲取控制解析記錄的能力。 2.6.8.2. 拒絕服務(wù)DNS服務(wù)通常會開啟UDP端口,當(dāng)DNS服務(wù)器擁有大量二級域NS記錄時(shí),通過DNS的UDP反射攻擊可以實(shí)現(xiàn)高倍的拒絕服務(wù)。 看到這里的大佬,動動發(fā)財(cái)?shù)男∈?點(diǎn)贊 + 回復(fù) + 收藏,能【 關(guān)注 】一波就更好了 我是一名滲透測試工程師,為了感謝讀者們,我想把我收藏的一些網(wǎng)絡(luò)安全/滲透測試學(xué)習(xí)干貨貢獻(xiàn)給大家,回饋每一個(gè)讀者,希望能幫到你們。 干貨主要有: ① 2000多本網(wǎng)安必看電子書(主流和經(jīng)典的書籍應(yīng)該都有了) ② PHP標(biāo)準(zhǔn)庫資料(最全中文版) ③ 項(xiàng)目源碼(四五十個(gè)有趣且經(jīng)典的練手項(xiàng)目及源碼) ④ 網(wǎng)絡(luò)安全基礎(chǔ)入門、Linux運(yùn)維,web安全、滲透測試方面的視頻(適合小白學(xué)習(xí)) ⑤ 網(wǎng)絡(luò)安全學(xué)習(xí)路線圖(告別不入流的學(xué)習(xí)) ⑥ 滲透測試工具大全 ⑦ 2021網(wǎng)絡(luò)安全/Web安全/滲透測試工程師面試手冊大全 各位朋友們可以關(guān)注+評論一波 然后私信【W(wǎng)eb】 即可免費(fèi)獲取全部資料 2.6.9. 參考鏈接2.6.9.1. RFC
2.6.9.2. 工具
2.6.9.3. 研究文章
2.6.9.4. 相關(guān)CVE
2.7. HTTP協(xié)議簇內(nèi)容索引:
2.7.1. HTTP標(biāo)準(zhǔn)2.7.1.1. 報(bào)文格式2.7.1.1.1. 請求報(bào)文格式<method><request-URL><version><headers><entity-body> 2.7.1.1.2. 響應(yīng)報(bào)文格式<version><status><reason-phrase><headers><entity-body> 2.7.1.1.3. 字段解釋
2.7.1.2. 請求頭列表
2.7.1.3. 響應(yīng)頭列表
2.7.1.4. HTTP狀態(tài)返回代碼 1xx(臨時(shí)響應(yīng))表示臨時(shí)響應(yīng)并需要請求者繼續(xù)執(zhí)行操作的狀態(tài)代碼。
2.7.1.5. HTTP狀態(tài)返回代碼 2xx (成功)表示成功處理了請求的狀態(tài)代碼。
2.7.1.6. HTTP狀態(tài)返回代碼 3xx (重定向)表示要完成請求,需要進(jìn)一步操作。 通常,這些狀態(tài)代碼用來重定向。
2.7.1.7. HTTP狀態(tài)返回代碼 4xx(請求錯(cuò)誤)這些狀態(tài)代碼表示請求可能出錯(cuò),妨礙了服務(wù)器的處理。
2.7.1.8. HTTP狀態(tài)返回代碼 5xx(服務(wù)器錯(cuò)誤)這些狀態(tài)代碼表示服務(wù)器在嘗試處理請求時(shí)發(fā)生內(nèi)部錯(cuò)誤。 這些錯(cuò)誤可能是服務(wù)器本身的錯(cuò)誤,而不是請求出錯(cuò)。
2.7.2. HTTP 版本2.7.2.1. HHTTPHTTP 是基于 TCP/IP 協(xié)議的應(yīng)用層協(xié)議,主要規(guī)定了客戶端和服務(wù)器之間的通信格式,默認(rèn)使用80端口。 2.7.2.2. HTTP 0.9HTTP 0.9最早在1991年發(fā)布,僅支持GET命令,請求格式只有簡單的 GET /url ,服務(wù)端僅響應(yīng)HTML,響應(yīng)完畢后關(guān)閉TCP連接。 2.7.2.3. HTTP 1.01996年5月,HTTP/1.0 版本發(fā)布,豐富了傳輸?shù)母袷胶蛢?nèi)容,還引入了POST、HEAD兩個(gè)動詞。從1.0開始,必須在尾部添加協(xié)議版本。在1.0中,也引入了狀態(tài)碼(status code)、多字符集支持、多部分發(fā)送(multi-part type)、權(quán)限(authorization)、緩存(cache)、內(nèi)容編碼(content encoding)等內(nèi)容。 HTTP 1.0 版的主要缺點(diǎn)是,每個(gè)TCP連接只能發(fā)送一個(gè)請求。發(fā)送數(shù)據(jù)完畢,連接就關(guān)閉,如果還要請求其他資源,就必須再新建一個(gè)連接。 TCP連接的新建成本很高,因?yàn)樾枰蛻舳撕头?wù)器三次握手,并且開始時(shí)發(fā)送速率較慢(slow start),所以,HTTP 1.0版本的性能比較差。 2.7.2.4. HTTP 1.11997年1月,HTTP/1.1 版本發(fā)布,進(jìn)一步完善了 HTTP 協(xié)議。1.1版本主要是引入了持久連接、管道機(jī)制、Content-Length、分塊傳輸編碼等內(nèi)容。管道機(jī)制即在同一個(gè)TCP連接里面,客戶端可以同時(shí)發(fā)送多個(gè)請求,這樣就改進(jìn)了HTTP協(xié)議的效率。PUT、PATCH、HEAD、 OPTIONS、DELETE等動詞方法也是在HTTP 1.1版本引入的。另外1.1版本新增了Host字段,用于指定服務(wù)器的域名,這也是后來虛擬主機(jī)得以發(fā)展的基礎(chǔ)。 雖然1.1版允許復(fù)用TCP連接,但是同一個(gè)TCP連接里面,所有的數(shù)據(jù)通信是按次序進(jìn)行的。服務(wù)器只有處理完一個(gè)回應(yīng),才會進(jìn)行下一個(gè)回應(yīng)。如果有一個(gè)請求很慢,就會阻塞后面的請求。 2.7.2.5. SPDY2009年,谷歌公開了自行研發(fā)的 SPDY 協(xié)議,用于解決 HTTP/1.1 效率不高的問題,而后被當(dāng)做 HTTP/2 的基礎(chǔ)。 2.7.2.6. HTTP/22015年,HTTP/2 發(fā)布,HTTP/2是一個(gè)二進(jìn)制協(xié)議,頭信息和數(shù)據(jù)體都是二進(jìn)制,統(tǒng)稱為幀(frame),幀分為頭信息幀和數(shù)據(jù)幀。HTTP/2 復(fù)用TCP連接,在一個(gè)連接里,客戶端和瀏覽器都可以同時(shí)發(fā)送多個(gè)請求或回應(yīng),而且不用按照順序回應(yīng)。 2.7.3. HTTPS2.7.3.1. 簡介HTTPS (HyperText Transfer Protocol over Secure Socket Layer)可以理解為HTTP+SSL/TLS, 即 HTTP 下加入 SSL 層,HTTPS 的安全基礎(chǔ)是 SSL。 2.7.3.2. 交互2.7.3.2.1. 證書驗(yàn)證階段
2.7.3.2.2. 數(shù)據(jù)傳輸階段
2.7.3.3. CACA (Certificate Authority) 是頒發(fā)數(shù)字證書的機(jī)構(gòu)。是負(fù)責(zé)發(fā)放和管理數(shù)字證書的權(quán)威機(jī)構(gòu),并作為電子商務(wù)交易中受信任的第三方,承擔(dān)公鑰體系中公鑰的合法性檢驗(yàn)的責(zé)任。 2.7.4. Cookie2.7.4.1. 簡介Cookie(復(fù)數(shù)形態(tài)Cookies),類型為「小型文本文件」,指某些網(wǎng)站為了辨別用戶身份而儲存在用戶本地終端上的數(shù)據(jù)。 2.7.4.2. 屬性2.7.4.2.1. namecookie的名稱。 2.7.4.2.2. valuecookie的值。 2.7.4.2.3. expires當(dāng) Expires 屬性缺省時(shí),表示是會話性 Cookie,在用戶關(guān)閉瀏覽器時(shí)失效。 2.7.4.2.4. max-agemax-age 可以為正數(shù)、負(fù)數(shù)、0。如果 max-age 屬性為正數(shù)時(shí),瀏覽器會將其持久化,當(dāng) max-age 屬性為負(fù)數(shù),則表示該 Cookie 只是一個(gè)會話性 Cookie。當(dāng) max-age 為 0 時(shí),則會立即刪除這個(gè) Cookie。Expires 和 max-age 都存在的條件下,max-age 優(yōu)先級更高。 2.7.4.2.5. domain指定Cookie的域名,默認(rèn)是當(dāng)前域名。domain設(shè)置時(shí)可以設(shè)置為自身及其父域,子域可以訪問父域的Cookie,反之不能。 2.7.4.2.6. path指定一個(gè) URL 路徑,這個(gè)路徑必須出現(xiàn)在要請求的資源的路徑中才可以發(fā)送對應(yīng)的 Cookie。 2.7.4.2.7. secure只能通過 HTTPS 傳輸。 2.7.4.2.8. httponly限制Cookie僅在HTTP傳輸過程中被讀取,一定程度上防御XSS攻擊。 2.7.4.2.9. SameSiteSameSite 支持 Strict / Lax / None 三種值。Strict最為嚴(yán)格,完全禁止第三方 Cookie,跨站點(diǎn)時(shí),任何情況下都不會發(fā)送 Cookie。Lax 允許部分第三方請求攜帶 Cookie,主要是鏈接、預(yù)加載、GET 表單三種情況。Cookie 的 SameSite 屬性為 None ,且設(shè)置了 Secure 時(shí),無論是否跨站都會發(fā)送 Cookie。 2.7.5. WebDAV2.7.5.1. 簡介WebDAV (Web-based Distributed Authoring and Versioning) 一種基于 HTTP 1.1協(xié)議的通信協(xié)議。它擴(kuò)展了HTTP 1.1,在GET、POST、HEAD等幾個(gè)HTTP標(biāo)準(zhǔn)方法以外添加了一些新的方法,使應(yīng)用程序可對Web Server直接讀寫,并支持寫文件鎖定、解鎖,以及版本控制等功能。 支持的方法具體為:
2.7.5.2. 相關(guān)CVE
2.7.6. 參考鏈接2.7.6.1. RFC
2.7.6.2. Blog
2.8. 郵件協(xié)議族2.8.1. 簡介2.8.1.1. SMTPSMTP (Simple Mail Transfer Protocol) 是一種電子郵件傳輸?shù)膮f(xié)議,是一組用于從源地址到目的地址傳輸郵件的規(guī)范。不啟用SSL時(shí)端口號為25,啟用SSL時(shí)端口號多為465或994。 2.8.1.2. POP3POP3 (Post Office Protocol 3) 用于支持使用客戶端遠(yuǎn)程管理在服務(wù)器上的電子郵件。不啟用SSL時(shí)端口號為110,啟用SSL時(shí)端口號多為995。 2.8.1.3. IMAPIMAP (Internet Mail Access Protocol),即交互式郵件存取協(xié)議,它是跟POP3類似郵件訪問標(biāo)準(zhǔn)協(xié)議之一。不同的是,開啟了IMAP后,您在電子郵件客戶端收取的郵件仍然保留在服務(wù)器上,同時(shí)在客戶端上的操作都會反饋到服務(wù)器上,如:刪除郵件,標(biāo)記已讀等,服務(wù)器上的郵件也會做相應(yīng)的動作。不啟用SSL時(shí)端口號為143,啟用SSL時(shí)端口號多為993。 2.8.2. 防護(hù)策略2.8.2.1. SPF發(fā)件人策略框架 (Sender Policy Framework, SPF) 是一套電子郵件認(rèn)證機(jī)制,用于確認(rèn)電子郵件是否由網(wǎng)域授權(quán)的郵件服務(wù)器寄出,防止有人偽冒身份網(wǎng)絡(luò)釣魚或寄出垃圾郵件。SPF允許管理員設(shè)定一個(gè)DNS TXT記錄或SPF記錄設(shè)定發(fā)送郵件服務(wù)器的IP范圍,如有任何郵件并非從上述指明授權(quán)的IP地址寄出,則很可能該郵件并非確實(shí)由真正的寄件者寄出。 2.8.2.2. DKIM域名密鑰識別郵件 (DomainKeys Identified Mail, DKIM) 是一種檢測電子郵件發(fā)件人地址偽造的方法。發(fā)送方會在郵件的頭中插入DKIM-Signature,收件方通過查詢DNS記錄中的公鑰來驗(yàn)證發(fā)件人的信息。 2.8.2.3. DMARC基于網(wǎng)域的消息認(rèn)證、報(bào)告和一致性 (Domain-based Message Authentication, Reporting and Conformance, DMARC) 是電子郵件身份驗(yàn)證協(xié)議,用于解決在郵件欄中顯示的域名和驗(yàn)證的域名不一致的問題。要通過 DMARC 檢查,必須通過 SPF 或/和 DKIM 的身份驗(yàn)證,且需要標(biāo)頭地址中的域名必須與經(jīng)過身份驗(yàn)證的域名一致。 2.8.3. 參考鏈接2.8.3.1. RFC
2.8.3.2. 相關(guān)文檔
2.8.3.3. 研究文章
2.9. SSL/TLS2.9.1. 簡介SSL全稱是Secure Sockets Layer,安全套接字層,它是由網(wǎng)景公司(Netscape)在1994年時(shí)設(shè)計(jì),主要用于Web的安全傳輸協(xié)議,目的是為網(wǎng)絡(luò)通信提供機(jī)密性、認(rèn)證性及數(shù)據(jù)完整性保障。如今,SSL已經(jīng)成為互聯(lián)網(wǎng)保密通信的工業(yè)標(biāo)準(zhǔn)。 SSL最初的幾個(gè)版本(SSL 1.0、SSL2.0、SSL 3.0)由網(wǎng)景公司設(shè)計(jì)和維護(hù),從3.1版本開始,SSL協(xié)議由因特網(wǎng)工程任務(wù)小組(IETF)正式接管,并更名為TLS(Transport Layer Security),發(fā)展至今已有TLS 1.0、TLS1.1、TLS1.2、TLS1.3這幾個(gè)版本。 如TLS名字所說,SSL/TLS協(xié)議僅保障傳輸層安全。同時(shí),由于協(xié)議自身特性(數(shù)字證書機(jī)制),SSL/TLS不能被用于保護(hù)多跳(multi-hop)端到端通信,而只能保護(hù)點(diǎn)到點(diǎn)通信。 SSL/TLS協(xié)議能夠提供的安全目標(biāo)主要包括如下幾個(gè):
為了實(shí)現(xiàn)這些安全目標(biāo),SSL/TLS協(xié)議被設(shè)計(jì)為一個(gè)兩階段協(xié)議,分為握手階段和應(yīng)用階段: 握手階段也稱協(xié)商階段,在這一階段,客戶端和服務(wù)端端會認(rèn)證對方身份(依賴于PKI體系,利用數(shù)字證書進(jìn)行身份認(rèn)證),并協(xié)商通信中使用的安全參數(shù)、密碼套件以及MasterSecret。后續(xù)通信使用的所有密鑰都是通過MasterSecret生成。 在握手階段完成后,進(jìn)入應(yīng)用階段。在應(yīng)用階段通信雙方使用握手階段協(xié)商好的密鑰進(jìn)行安全通信。 2.9.2. 協(xié)議TLS 包含幾個(gè)子協(xié)議,比較常用的有記錄協(xié)議、警報(bào)協(xié)議、握手協(xié)議、變更密碼規(guī)范協(xié)議等。 2.9.2.1. 記錄協(xié)議記錄協(xié)議(Record Protocol)規(guī)定了 TLS 收發(fā)數(shù)據(jù)的基本單位記錄(record)。 2.9.2.2. 警報(bào)協(xié)議警報(bào)協(xié)議(Alert Protocol)用于提示協(xié)議交互過程出現(xiàn)錯(cuò)誤。 2.9.2.3. 握手協(xié)議握手協(xié)議(Handshake Protocol)是 TLS 里最復(fù)雜的子協(xié)議,在握手過程中協(xié)商 TLS 版本號、隨機(jī)數(shù)、密碼套件等信息,然后交換證書和密鑰參數(shù),最終雙方協(xié)商得到會話密鑰,用于后續(xù)的混合加密系統(tǒng)。 2.9.2.4. 變更密碼規(guī)范協(xié)議變更密碼規(guī)范協(xié)議(Change Cipher Spec Protocol)是一個(gè)“通知”,告訴對方,后續(xù)的數(shù)據(jù)都將使用加密保護(hù)。 2.9.3. 交互過程2.9.3.1. Client HelloClient Hello 由客戶端發(fā)送,內(nèi)容包括客戶端的一個(gè)Unix時(shí)間戳(GMT Unix Time)、一些隨機(jī)的字節(jié)(Random Bytes),還包括了客戶端接受的算法類型(Cipher Suites)。 2.9.3.2. Server HelloServer Hello 由服務(wù)端發(fā)送,內(nèi)容包括服務(wù)端支持的算法類型、GMT Unix Time以及Random Bytes。 2.9.3.3. Certificate由服務(wù)端或者客戶端發(fā)送,發(fā)送方會會將自己的數(shù)字證書發(fā)送給接收方,由接收方進(jìn)行證書驗(yàn)證,如果不通過的話,接收方會中斷握手的過程。一般跟在Client / Server Hello報(bào)文之后。 2.9.3.4. Server Key Exchange由服務(wù)端發(fā)送,將自己的公鑰參數(shù)傳輸給了客戶端,一般也和Server Hello與Certificate在一個(gè)TCP報(bào)文中。 2.9.3.5. Server Hello Done服務(wù)端發(fā)送,一般也和Server Hello、Certificate和Server Key Exchange在一個(gè)TCP報(bào)文中。 2.9.3.6. Client Key Exchange客戶端發(fā)送,向服務(wù)端發(fā)送自己的公鑰參數(shù),與服務(wù)端協(xié)商密鑰。 2.9.3.7. Change Cipher Spec客戶端或者服務(wù)端發(fā)送,緊跟著Key Exchange發(fā)送,代表自己生成了新的密鑰,通知對方以后將更換密鑰,使用新的密鑰進(jìn)行通信。 2.9.3.8. Encrypted Handshake Message客戶端或者服務(wù)端發(fā)送,緊跟著Key Exchange發(fā)送。進(jìn)行測試,一方用自己的剛剛生成的密鑰加密一段固定的消息發(fā)送給對方,如果密鑰協(xié)商正確無誤的話,對方可以正確解密。 2.9.3.9. New Session Ticket服務(wù)端發(fā)送,表示發(fā)起會話,在一段時(shí)間之內(nèi)(超時(shí)時(shí)間到來之前),雙方都以剛剛交換的密鑰進(jìn)行通信。從這以后,加密通信正式開始。 2.9.3.10. Application Data使用密鑰交換協(xié)議協(xié)商出來的密鑰加密的應(yīng)用層的數(shù)據(jù)。 2.9.3.11. Encrypted Alert客戶端或服務(wù)端發(fā)送,意味著加密通信因?yàn)槟承┰蛐枰袛?,警告對方不要再發(fā)送敏感的數(shù)據(jù)。 2.9.4. 版本更新內(nèi)容2.9.4.1. TLS 1.3
2.9.5. 子協(xié)議SSL/TLS協(xié)議有一個(gè)高度模塊化的架構(gòu),分為很多子協(xié)議,主要是:
2.9.6. 參考鏈接2.9.6.1. RFC
2.9.6.2. Document
2.10. IPsec2.10.1. 簡介IPsec(IP Security)是IETF制定的三層隧道加密協(xié)議,它為Internet上傳輸?shù)臄?shù)據(jù)提供了高質(zhì)量的、可互操作的、基于密碼學(xué)的安全保證。特定的通信方之間在IP層通過加密與數(shù)據(jù)源認(rèn)證等方式,提供了以下的安全服務(wù):
2.10.2. 優(yōu)點(diǎn)IPsec具有以下優(yōu)點(diǎn):
2.10.3. 構(gòu)成IPsec由四部分內(nèi)容構(gòu)成:
2.10.4. 安全聯(lián)盟(Security Association,SA)IPsec在兩個(gè)端點(diǎn)之間提供安全通信,端點(diǎn)被稱為IPsec對等體。 SA是IPsec的基礎(chǔ),也是IPsec的本質(zhì)。SA是通信對等體間對某些要素的約定,例如,使用哪種協(xié)議(AH、ESP還是兩者結(jié)合使用)、協(xié)議的封裝模式(傳輸模式和隧道模式)、加密算法(DES、3DES和AES)、特定流中保護(hù)數(shù)據(jù)的共享密鑰以及密鑰的生存周期等。建立SA的方式有手工配置和IKE自動協(xié)商兩種。 SA是單向的,在兩個(gè)對等體之間的雙向通信,最少需要兩個(gè)SA來分別對兩個(gè)方向的數(shù)據(jù)流進(jìn)行安全保護(hù)。同時(shí),如果兩個(gè)對等體希望同時(shí)使用AH和ESP來進(jìn)行安全通信,則每個(gè)對等體都會針對每一種協(xié)議來構(gòu)建一個(gè)獨(dú)立的SA。 SA由一個(gè)三元組來唯一標(biāo)識,這個(gè)三元組包括SPI(Security Parameter Index,安全參數(shù)索引)、目的IP地址、安全協(xié)議號(AH或ESP)。 SPI是用于唯一標(biāo)識SA的一個(gè)32比特?cái)?shù)值,它在AH和ESP頭中傳輸。在手工配置SA時(shí),需要手工指定SPI的取值。使用IKE協(xié)商產(chǎn)生SA時(shí),SPI將隨機(jī)生成。 2.10.5. IKEIKE(RFC2407,RFC2408、RFC2409)屬于一種混合型協(xié)議,由Internet安全關(guān)聯(lián)和密鑰管理協(xié)議(ISAKMP)和兩種密鑰交換協(xié)議OAKLEY與SKEME組成。IKE創(chuàng)建在由ISAKMP定義的框架上,沿用了OAKLEY的密鑰交換模式以及SKEME的共享和密鑰更新技術(shù),還定義了它自己的兩種密鑰交換方式。 IKE使用了兩個(gè)階段的ISAKMP: 第一階段,協(xié)商創(chuàng)建一個(gè)通信信道(IKE SA),并對該信道進(jìn)行驗(yàn)證,為雙方進(jìn)一步的IKE通信提供機(jī)密性、消息完整性以及消息源驗(yàn)證服務(wù); 第二階段,使用已建立的IKE SA建立IPsec SA(V2中叫Child SA)。 2.11. Wi-Fi2.11.1. 簡介Wi-Fi又稱“無線熱點(diǎn)”或“無線網(wǎng)絡(luò)”,是Wi-Fi聯(lián)盟的商標(biāo),一個(gè)基于IEEE 802.11標(biāo)準(zhǔn)的無線局域網(wǎng)技術(shù)。 2.11.2. 攻擊2.11.2.1. 暴力破解WiFi密碼是基于預(yù)置的秘鑰,可以通過抓取報(bào)文的方式在本地快速的批量進(jìn)行密碼爆破嘗試。 2.11.2.2. 偽造熱點(diǎn)AP可以動態(tài)的廣播自己,客戶也可以主動發(fā)送探針請求??梢詡卧霢P發(fā)送對探針請求的響應(yīng)包,來讓客戶端錯(cuò)誤的識別。 2.11.2.3. 秘鑰重裝攻擊該漏洞由Vanhoef發(fā)現(xiàn)。Wi-Fi在握手時(shí)雙方會更新秘鑰,該攻擊通過重放握手信息,令客戶端重新安裝相同的秘鑰。 2.11.2.4. Dragonblood最新版的WPA3標(biāo)準(zhǔn)在實(shí)現(xiàn)上存在一些問題,同樣由Vanhoef發(fā)現(xiàn)。包含拒絕服務(wù)攻擊、降級攻擊、側(cè)信道泄露等。 2.11.3. 參考鏈接
|
|