劉加慧,王軼駿,薛 質
(上海交通大學,上海 200240)
蜜罐作為一種主動性防御手段,在對攻擊手段的研究和業務網絡的保護上都具有非常重要的作用。蜜罐按照與攻擊方的交互程度,可分為高交互蜜罐和低交互蜜罐。高交互蜜罐采用真實系統搭建,能夠比較容易地構建出一個具有良好誘騙性的蜜罐欺騙環境。低交互蜜罐通過編制軟件的模擬仿真方式實現,為攻擊方提供受限的交互[1]。混合蜜罐的基本思想是在網絡的前端利用較少的資源部署大量低交互蜜罐,通過與后端少量高交互蜜罐之間的流量遷移,實現攻擊捕獲和分析。但是,傳統蜜網粗粒度的數據控制能力使得傳統混合蜜網存在連接控制、連接轉移等多方面不足。
本文提出一種基于SDN的混合蜜網連接轉移方案,結合連接狀態跟蹤和TCP握手包的反向構造,實現TCP連接從低交互蜜罐向高交互蜜罐的無縫遷移。首先總結目前混合蜜網在連接轉移方向的研究情況,其次闡述TCP握手包反向構造方法,給出連接轉移方案,最后設計實現原型系統,實驗證明該方案具有良好的穩定性,使得蜜網的部署更加靈活。
與傳統蜜網相比,混合蜜網的核心是連接轉移的時機和方法。Berthier[2]所提出的傳統混合蜜網設計,通過智能網關實現連接轉移。在無狀態的網絡層,通過標準NAT設備實現重定向;在傳輸層,重點處理有狀態協議TCP的序列號、確認號、窗口大小以及TCP可選項;在應用層,采用報文重放方法。而Fan W[3]提出了利用SDN在報文處理上的強大靈活性,將所有報文發送至SDN控制器進行存儲和決策,在連接轉移時修改之前存儲的報文并重放,實現了TCP連接透明轉移。然而,該方案對存儲要求過高,難以適應大規模混合蜜網系統。
軟件定義網絡(Software Defined Network,SDN)于2006年被斯坦福大學Clean State課題組提出。作為一種新的網絡設計理念,SDN強調控制面與轉發面的分離,通過控制器中的軟件編程來控制底層硬件的報文轉發[4]。SDN靈活的數據控制能力完全符合混合蜜網對連接轉移的要求。
OpenFlow是目前比較成熟的SDN架構的實現方案。OpenFlow協議允許控制器直接訪問和操作數據平面中的網絡設備。數據平面的交換機通過查詢流表完成對數據包的處理轉發。
典型的TCP連接建立過程如圖1所示。其中,虛線以上為TCP三次握手,虛線以下為TCP連接建立之后的數據交換。
在混合蜜網系統中,低交互蜜罐主要在攻擊初期起作用,即網段信息掃描階段。在掃描探測階段,攻擊者為避免掃描行為被記錄,往往不會與目標主機建立完整的TCP連接。即便采用TCP全連接掃描,也不會與目標主機發生后續數據交換。因此,在典型的TCP連接過程中,TCP三次握手后的第一個PSH包的到達,可以作為連接轉移的信號。

圖1 TCP連接建立過程
在Linux內核下,連接狀態的跟蹤通過Netfilter框架[5]的CT(Connection Tracking)模塊實現。CT模塊使內核可以跟蹤所有邏輯會話,常用于實現有狀態防火墻。
Open vSwitch作為支持OpenFlow協議的虛擬交換機,也在Linux下實現了對內核CT模塊的調用[6]。將報文提交到CT模塊后,在流表中利用ct_state和tcp_flags匹配域,可實現對TCP三次握手后的第一個PSH包的準確定位。
CT模塊可識別與FTP已建立的控制連接有關聯的數據連接。若FTP服務器端采用被動模式的數據連接,服務器端將隨機選取端口,監聽客戶端的連接請求。通過連接狀態跟蹤,可以直接將客戶端的FTP數據連接請求轉移至高交互蜜罐,避免因低交互蜜罐拒絕連接而被攻擊者察覺。
具體連接轉移過程如圖2所示。其中,虛線上方為典型的TCP連接轉移過程,虛線下方為FTP協議的數據連接轉移過程。
步驟詳細說明如下。
步驟1:SDN交換機會將收到的每一個數據包發送至CT模塊,記錄連接狀態。當攻擊者嘗試與蜜罐進行交互時,握手階段的報文將先被發送至低交互蜜罐。若成功建立TCP連接,則交換機會將該連接中的第一個PSH報文發送至控制器請求決策。此步驟成功隔離了網絡中的大量掃描數據。

圖2 高、低交互蜜罐之間的連接轉移過程
步驟2:控制器收到第一個PSH包后,首先提取數據包中的序列號、應答號以及標識號等關鍵字段,保存連接信息,并保存此報文。其次,控制器利用序列號和標識號反向構造SYN握手包,發送給高交互蜜罐。最后,控制器下發流表,通知交換機將此連接的后續報文全部提交至控制器處理。
當控制器收到高交互蜜罐的SYN/ACK包時,提取并保存該報文中的序列號后構造ACK包,將其發送至高交互蜜罐,完成TCP三次握手。控制器對保存的PSH包進行應答號修改,發送至高交互蜜罐,完成連接轉移。
步驟3:后續報文都將由交換機提交給控制器,控制器對報文進行修改后,交由交換機完成報文轉發,從而實現攻擊者與高交互蜜罐的通信。
對于FTP數據連接,TCP三次握手的第一個SYN包被CT模塊判斷為FTP數據連接。交換機直接將該報文提交給控制器,控制器下發流表,將報文直接轉發至高交互蜜罐。
連接轉移過程中,控制器僅需構造TCP三次握手中攻擊者發送的SYN包和ACK包。下面給出TCP握手包不同字段的構造方法。
從圖1給出的連接建立過程可知,第一個PSH包與SYN握手包之間的序列號差值為1,與ACK握手包的序列號相同。
連接切換時,使用攻擊者的序列號與高交互蜜罐建立新的TCP連接,高交互蜜罐將生成一個新的序列號,其中以SeqLIH表示低交互蜜罐的初始序列號,以SeqHIH表示高交互蜜罐的初始序列號。連接轉移后,后續所有來自攻擊者的報文都需要對應答號按照式(1)修改,而來自高交互蜜罐的報文都需要對序列號按照式(2)修改。

該字段為接收端通知發送端自己當前能夠接收的字節數。在TCP握手階段,雙方報文不攜帶載荷,因此該值在握手階段所起作用不大,常見值為64 240。在反向構造時,它可以使用PSH包的窗口值。
TCP可選項位于TCP頭部的最后,此處僅分析會出現在SYN和SYN/ACK報文中的可選項。
(1)最大報文長度(Maximum Segment Size,MSS)。TCP連接雙方會在各自的SYN包中聲明MSS值,并在握手結束后選擇兩個值中的較小值作為協商值。MSS是可選項中最重要的一個選項,默認大小為1 460。由于該值受鏈路上其他轉發設備的影響,因此需要綜合考慮實際情況進行設置。為避免丟包,可啟用高交互蜜罐的路徑MTU發現機制,并設置防火墻允許ICMP報文分段消息通過。或者可以采取更簡單的方式,將MSS設置為一個較小值1 380,以適應大部分鏈路狀況。
(2)時間戳。時間戳用于計算往返時延。發送方發送報文時將當前時間戳放入TSval,接收方確認該報文時會把該值放入TSecr。如果TCP通信雙方協商使用時間戳,則每個數據包中都會帶有該可選項,因此控制器可通過PSH報文進行判斷。該值的修改方式類似序列號和應答號。
(3)其他選項,如SACK、窗口擴大因子等。通常,由于客戶端與服務器的SYN包中很少使用這些選項,也無法通過PSH包推理得到,因此本文所提方案不會使用這些可選項。
源和目的端口可根據高、低交互蜜罐之間的映射關系,交由SDN交換機進行修改。校驗值、標志位以及緊急指針等字段進行相應的設置即可。
該字段主要在報文分段時起作用,初始值隨機生成,在客戶端的SYN包、ACK包和第一個PSH包中加1遞增,而在服務器端的SYN/ACK包中值為0。因此,在反向構造SYN包和ACK包時,可依據PSH包的標識值做減法處理,連接轉移之后則不需要修改該字段。
本文選擇OpenFlow協議1.3版本,控制器框架采用基于Python的Ryu,以實現更好的擴展性。交換機采用Open vSwitch,部署于Ubuntu系統之上。系統搭建如圖3所示,實現多控制器控制,分別用于實現流量過濾和連接轉移。前端部署Honeyd低交互蜜罐,后端部署FTP高交互蜜罐。Honeyd僅支持MSS可選項。
下面采用較為特殊的FTP協議進行連接轉移驗證。通信雙方采用被動模式進行數據連接。根據FTP連接的實際情況,交換機會將攻擊者的ACK握手包提交控制器進行連接轉移。圖4展示了OVS交換機1的關鍵流表項。

圖3 系統搭建結構

圖4 OVS交換機1關鍵流表項
圖5為低交互蜜罐捕獲的握手包,在收到攻擊者的ACK包后,連接從低交互蜜罐向高交互蜜罐轉移。圖6展示高交互蜜罐中FTP控制連接建立時的握手包,其中SYN握手包(編號29)由控制器反向構造,ACK握手包(編號31)由控制器修改原始包(圖5編號73)的應答號后重放。三次握手結束后,高交互蜜罐發送PSH包(編號32),連接轉移成功。圖7展示高交互蜜罐中FTP數據連接建立時的握手包。通過CT模塊的跟蹤功能,FTP的數據連接在第一個SYN握手包到達時被識別,連接直接轉移至高交互蜜罐。
圖8和圖9展示了SSH連接轉移過程中,攻擊者發送的SYN握手包和SDN控制器構造的SYN握手包。兩者僅在可選項上存在差異。
性能測試同樣使用SSH建立連接,計算攻擊者發送第一個PSH包和收到的服務器ACK回復之間的時間差。選取攻擊者與低交互蜜罐直接連接方案、本文連接轉移方案以及攻擊者與高交互蜜罐直接連接方案3種情況進行對比。實驗計算10次SSH連接的平均值,50次SSH并發連接平均值,統計結果見表1。

圖5 低交互蜜罐FTP握手包

圖6 高交互蜜罐FTP控制連接報文捕獲

圖7 高交互蜜罐FTP數據連接報文捕獲

圖8 控制器構造SYN包內容

圖9 攻擊者發送SYN包內容

表1 性能測試結果
可以發現:本文連接轉移方案的兩種時延之間沒有較大差別,具有良好的穩定性;相比另外兩種方式,本文方案帶來了5~6 ms的時延,主要原因是控制器與高交互蜜罐之間發生了TCP連接的重放。在實際的生產環境中,遠距離傳輸將對報文的送達時間引入不小的時延。本文方案帶來的時延幾乎可以淹沒其中,因此不易被攻擊者察覺,具有良好的隱蔽性。
如今,SDN被廣泛應用于網絡空間安全領域,其靈活的數據控制能力對蜜網系統的設計和部署具有極大的啟發。本文結合連接狀態跟蹤和TCP握手包反向構造,提出了一種基于SDN的混合蜜網連接轉移方案,并進行了原型系統實現和實驗驗證分析。在本文提出的方案中,網絡上的掃描探測流量被準確過濾,減輕了高交互蜜罐的負擔;高、低交互蜜罐之間的映射限制較少,提高了混合蜜網部署的靈活性;通過少量關鍵字段實現對 TCP握手包的反向構造,大大降低了數據的存儲和查詢成本。實驗結果表明,本方案具有良好的穩定性和通用性。