為分析而生的三層模型#

IPS 描述了網路通訊如何運作,但就分析目的而言,IPS 模型大部分的細節其實不相關。作者提出一套更簡單的模型,專門用來理解應用層網路協定的行為。這套模型只有三層。以分析一個 HTTP 請求為例:

  • 內容層(content layer):提供「正在溝通什麼」的意義。在此例中,意義就是發出一個對檔案 image.jpg 的 HTTP 請求。
  • 編碼層(encoding layer):規範你如何表示內容。此例中,該請求被編碼成一個 HTTP GET 請求,指明要取得的檔案。
  • 傳輸層(transport layer):規範資料如何在節點間傳送。此例中,HTTP GET 請求透過 TCP/IP 連線送往遠端節點的 80 埠。

圖表 1-7:作者的概念性協定模型

這樣切分能降低應用層協定的分析複雜度,因為它讓我們過濾掉與協定無關的網路細節。既然我們並不真的在意 TCP/IP 如何送達遠端(就當它總會送到),就可以把 TCP/IP 資料視為「一個會動的二進位傳輸通道」,不再深究。

為什麼這個模型有用:惡意程式範例#

假設你正在檢視某個惡意程式(malware)的網路流量,發現它透過 HTTP 從操作者的伺服器接收指令。例如操作者要惡意程式列舉受害電腦硬碟上的所有檔案,檔案清單回傳伺服器後,操作者再要求上傳某個特定檔案。

如果我們從「操作者如何與惡意程式互動」的角度來看這個協定,它會拆解成如下三層:

  • 內容層:惡意程式正把一個名為 secret.doc 的失竊檔案送往伺服器。
  • 編碼層:送出檔案的指令被編碼成一段簡單文字字串——指令 SEND,後接檔名與檔案資料。
  • 傳輸層:協定用一個 HTTP 請求參數來承載該指令,並採用標準的百分號編碼(percent-encoding),使其成為合法的 HTTP 請求。

圖表 1-8:以 HTTP 為傳輸的惡意程式協定概念模型

注意此例把前一個範例的編碼層與傳輸層合併成單一傳輸層。惡意程式底層當然仍走 TCP/IP,但這些低階協定對「分析送檔指令」不重要——我們可以把 HTTP over TCP/IP 當成一個「會動的單一傳輸層」,專注在惡意程式獨有的指令上。

若硬套正式的三層模型(把 HTTP GET 當內容看),你可能會誤以為惡意程式只是單純在請求 image.jpg,而錯過它真正在做的事。分層要對準你要分析的目標,套錯層級會讓你看走眼。 正確地把範圍收斂到需要分析的協定層,才能省下大量工夫並聚焦於協定的獨特之處。

本章小結#

本章快速走過網路基礎:介紹了 IPS 與你會在真實網路中遇到的協定,說明了資料如何在區域網路內、以及如何透過路由在遠端網路間傳輸,並提出一套思考應用層協定的方式,幫助你聚焦於協定的獨特特徵、加速分析。

下一章會運用這些基礎,帶你擷取網路流量以供分析。擷取流量的目的,是取得展開分析所需的資料、辨識所用的協定,最終找出可用來入侵的安全問題。