💡 為什麼資安人員必須懂網路協定?
在滲透測試的世界裡,所有的攻擊與防禦都建立在「網路封包傳輸」之上。不論是攔截請求、修改參數,還是製造拒絕服務攻擊(DoS),如果不懂底層協定如何運作,就無法精準找出漏洞。
作為資安新手,今天我們將拆解網路傳輸中最核心的兩個關鍵:TCP 三向交握 與 HTTP/HTTPS 協定。
🤝 TCP 三向交握(Three-Way Handshake)
TCP(傳輸控制協定)是一種「可靠的、面向連線」的協定。在兩台主機開始傳送資料之前,必須先透過三次封包交換來建立連線:
第一次交握 (SYN): 客戶端向伺服器發送 SYN(Synchronize)封包,表示「我想跟你建立連線」。
第二次交握 (SYN-ACK): 伺服器收到後回覆 SYN-ACK 封包,表示「收到,我同意連線」。
第三次交握 (ACK): 客戶端再發送 ACK(Acknowledge)封包,表示「收到你的同意,連線正式建立!」。
🔐 相關資安觀念:SYN Flood 攻擊
若攻擊者發送大量的 SYN 封包,但在收到伺服器的 SYN-ACK 後故意不回覆最後的 ACK,伺服器就會為了等待回應而消耗大量資源,最終導致正常使用者無法連線。這就是經典的 SYN Flood(SYN 洪水攻擊)。
🌐 Web 滲透核心:HTTP 協定拆解
HTTP(超文本傳輸協定)採用「請求-回應(Request-Response)」模型,是 Web 滲透最主要的攻擊面。
POST: 傳送資料至伺服器(常用於登入、上傳檔案,資料放在 Body 中)。
PUT / DELETE: 更新或刪除伺服器上的資源。
Request Header: 包含 Host、User-Agent 以及用於辨識身份的 Cookie。
Response Status Code:
200 OK:請求成功
301 / 302:轉址(Redirect)
403 Forbidden:權限不足
404 Not Found:找不到頁面
500 Internal Server Error:伺服器程式碼出錯(滲透時常作為判斷漏洞的依據!)
🔒 HTTP vs HTTPS:為什麼加密如此重要?
HTTP(明文): 資料以純文字傳輸。若在公用 Wi-Fi 環境下,攻擊者可以用 Wireshark 竊聽封包,直接看見明文帳號與密碼。
HTTPS(HTTP + SSL/TLS 加密): 在 HTTP 下層加入 SSL/TLS 加密層,確保傳輸過程具備機密性(無法被讀取)與完整性(無法被篡改)。
200 和 302 我覺得才是滲透時常作為判斷漏洞的依據喔!
以最簡單的 sql injection,我送了不該送的東西進去了,伺服器回傳500,至少還可以假設是因為無效的內容且程式沒有處理好例外造成500的,如果是200的話,代表執行通過,哪一個會被視為弱點呢?
PS. 但是也不是說放給它500就行了啦,沒有包 error page 一樣會多了一條揭露過多資訊的弱點。
不過我不是專業的,上述只是這幾年來和資安測試交手的心得