李政達(dá) ,周成勝
(1.華北計算機系統(tǒng)工程研究所,北京100083;2.中國信息通信研究院安全研究所,北京100191)
自 2010 年震網(wǎng)(Stuxnet)病毒被披露以后,工控安全問題開始引起世界范圍的關(guān)注。全國人民代表大會常務(wù)委員會于 2016 年 11 月 7 日發(fā)布《中華人民共和國網(wǎng)絡(luò)安全法》,網(wǎng)絡(luò)安全上升到國家戰(zhàn)略層面。目前的工業(yè)控制系統(tǒng)多以被動防御為主,無法及時應(yīng)對新型未知的威脅。2019 年正式實施的等保2.0 更加注重全方位主動防御、動態(tài)防御、整體防控和精準(zhǔn)防護,并明確了工控行業(yè)的網(wǎng)絡(luò)安全防護要求[1]。
本文介紹了一種針對工業(yè)控制系統(tǒng)設(shè)計的蜜網(wǎng)。蜜網(wǎng)是在蜜罐技術(shù)上發(fā)展起來的一個新的概念,又稱為誘捕網(wǎng)絡(luò),是一種變被動為主動的網(wǎng)絡(luò)安全技術(shù)[2]。蜜網(wǎng)通過在一個更具有欺騙性的網(wǎng)絡(luò)架構(gòu)中部署多個蜜罐以及相應(yīng)的網(wǎng)絡(luò)設(shè)備,通過模擬真實系統(tǒng)網(wǎng)絡(luò)架構(gòu),達(dá)到主動防御、數(shù)據(jù)捕獲的目的。
本系統(tǒng)通過部署蜜網(wǎng)網(wǎng)關(guān)、PLC(Programable Logic Controller)蜜罐、工程師站蜜罐等組成蜜網(wǎng),搭建相應(yīng)的網(wǎng)絡(luò)架構(gòu),誘導(dǎo)攻擊者對蜜網(wǎng)進行攻擊,從而對入侵行為進行數(shù)據(jù)捕獲并進行分析,以做到主動性防御,面對未知威脅及時發(fā)現(xiàn),及早研究應(yīng)對措施。對收集到的數(shù)據(jù)進行分析,能夠讓安全運維人員了解所面對的網(wǎng)絡(luò)安全威脅,通過蜜網(wǎng)系統(tǒng)與實際生產(chǎn)系統(tǒng)的對比發(fā)現(xiàn)系統(tǒng)弱點,以使用適當(dāng)?shù)募夹g(shù)手段及時彌補缺陷。
從歷史上看,工業(yè)自動化控制系統(tǒng)在很大程度上與傳統(tǒng)的數(shù)字網(wǎng)絡(luò)是隔離的。在需要連通性的地方,采用了分區(qū)架構(gòu)和設(shè)備隔離來保護核心控制系統(tǒng)組件。隨著我國信息化和工業(yè)化融合進程不斷深入,現(xiàn)代信息技術(shù)在工控領(lǐng)域的應(yīng)用越來越廣泛,數(shù)字化控制、軟件技術(shù)、網(wǎng)絡(luò)技術(shù)都應(yīng)用于大規(guī)模工業(yè)生產(chǎn)環(huán)境[3]。同時為了生產(chǎn)效率進一步提高,工控系統(tǒng)內(nèi)部網(wǎng)絡(luò)開始接入企業(yè)廣域網(wǎng)甚至是互聯(lián)網(wǎng),這些新技術(shù)與傳統(tǒng)工控網(wǎng)絡(luò)的融合在提高了生產(chǎn)效率的同時,也導(dǎo)致了當(dāng)前工控系統(tǒng)的網(wǎng)絡(luò)安全面臨嚴(yán)峻威脅,工業(yè)控制系統(tǒng)的“孤島”模式被打破。近些年隨著漏洞挖掘技術(shù)不斷成熟,在工業(yè)控制系統(tǒng)中的漏洞被發(fā)現(xiàn)的數(shù)量明顯增多,針對工業(yè)系統(tǒng)生產(chǎn)控制網(wǎng)攻擊事件層出不窮[4]。
雖然大多數(shù)工控行業(yè)生產(chǎn)數(shù)據(jù)網(wǎng)為行業(yè)內(nèi)網(wǎng)或內(nèi)部局域網(wǎng),但由于存在運維人員非法外聯(lián)、安全分區(qū)不明確、網(wǎng)絡(luò)邊界控制不嚴(yán)格、設(shè)備管理不到位等因素,從而都會導(dǎo)致內(nèi)部網(wǎng)絡(luò)受到威脅。大部分企業(yè)對外部網(wǎng)絡(luò)滲透的安全防御停留在使用防火墻、入侵檢測系統(tǒng)(IDS)、入侵防御系統(tǒng)(IPS)等傳統(tǒng)方式應(yīng)對攻擊的層面,這些方式需要設(shè)備定義已知的攻擊模式,并主要通過模式匹配去阻斷非法訪問或惡意攻擊,依賴于第三方資源庫,這種防御方式的致命缺點在于不能主動地學(xué)習(xí)攻擊方式。
當(dāng)前的防御體系對新型的網(wǎng)絡(luò)威脅捉襟見肘,存在網(wǎng)絡(luò)攻防中信息不對稱、博弈不對等。首先,網(wǎng)絡(luò)中新型的威脅不易被發(fā)現(xiàn),第三方資源庫的更新需要一定的周期。當(dāng)入侵者利用新型漏洞或使用新的隱匿手段入侵系統(tǒng)時,現(xiàn)有的防御體系是無法及時發(fā)現(xiàn)的,往往經(jīng)過一段時間內(nèi)網(wǎng)傳播,有較多設(shè)備出現(xiàn)異常時才被運維人員發(fā)現(xiàn)。其次,當(dāng)運維人員發(fā)現(xiàn)系統(tǒng)被入侵時,入侵者可能已刪除相應(yīng)的日志記錄隱匿蹤跡,即使發(fā)現(xiàn)被入侵也只能進行查殺、更新補丁進行加固,恢復(fù)正常業(yè)務(wù),而很難進行攻擊溯源,分析入侵者攻擊方法、如何利用漏洞以及如何進行傳播。
目前國內(nèi)外針對工業(yè)網(wǎng)絡(luò)的蜜網(wǎng)技術(shù)的研究仍處于起步階段。由 Digital Bond 維護的 SCADA Honeynet 項目核心是 Honeyd[5],它將創(chuàng)建的虛擬主機的網(wǎng)絡(luò)流量從適當(dāng)?shù)亩丝诼酚傻竭@些應(yīng)用程序和腳本。然而,模擬服務(wù)提供的交互很少,無法吸引攻擊者足夠長的時間來分析攻擊行為。江蘇科技大學(xué)的丁晨鵬設(shè)計了一種船舶網(wǎng)絡(luò)工業(yè)蜜罐[6],使用虛擬化技術(shù),以Docker 容器為載體,開發(fā)了支持 S7協(xié)議、SNMP 協(xié)議和 HTTP 協(xié)議的蜜罐,其定制化程度高,無法廣泛應(yīng)用。
本文通過構(gòu)建工控蜜網(wǎng)系統(tǒng),可做到提前與攻擊者交互的效果,保障系統(tǒng)安全運行的同時也能更進一步對攻擊行為進行捕捉并分析,了解攻擊者入侵系統(tǒng)使用的技術(shù)與方法,并通過蜜罐資源盡量拖延入侵者,轉(zhuǎn)移攻擊目標(biāo)以便給安全生產(chǎn)人員足夠的反應(yīng)時間來防御攻擊,及時彌補漏洞,盡最大努力保護真實網(wǎng)絡(luò)并降低損失[7]。
蜜網(wǎng)系統(tǒng)需要實現(xiàn)的核心功能為:數(shù)據(jù)捕獲、數(shù)據(jù)分析、數(shù)據(jù)控制??傮w而言,工控系統(tǒng)蜜網(wǎng)的整體構(gòu)架在結(jié)合現(xiàn)有的互聯(lián)網(wǎng)蜜網(wǎng)技術(shù)的情況下,同樣要兼顧典型工業(yè)控制系統(tǒng)網(wǎng)絡(luò)構(gòu)架,只有做到兩者相互融合,才能發(fā)揮出蜜網(wǎng)系統(tǒng)構(gòu)架的優(yōu)勢。本文經(jīng)過對工控蜜網(wǎng)系統(tǒng)的需求分析設(shè)計了如圖1所示的功能模塊圖。
圖1 蜜網(wǎng)系統(tǒng)功能模塊圖
數(shù)據(jù)捕獲模塊:數(shù)據(jù)捕獲的目的是記錄入侵事件和惡意行為,以便日后進行處理與分析。它是一個強制性的功能,任何類型的蜜罐都必須有這個功能。該模塊確定了對于要捕獲的數(shù)據(jù)類型可以分為設(shè)備日志、網(wǎng)絡(luò)流量和設(shè)備活動信息,這些數(shù)據(jù)都反映了入侵者在系統(tǒng)內(nèi)的活動。本文蜜網(wǎng)系統(tǒng)由于是模擬工控系統(tǒng),那么其中必然需要模擬工控設(shè)備,同時需要對其數(shù)據(jù)流進行捕獲。數(shù)據(jù)捕獲的能力是評價一個蜜網(wǎng)的重要標(biāo)準(zhǔn),蜜網(wǎng)能夠收集的數(shù)據(jù)越全面,蜜網(wǎng)系統(tǒng)就越成功。
數(shù)據(jù)控制模塊:由于工業(yè)控制系統(tǒng)對可用性的要求,在部署蜜網(wǎng)進行安全防護時不能對工控系統(tǒng)的可用性產(chǎn)生影響,所以蜜網(wǎng)系統(tǒng)必須控制從蜜網(wǎng)發(fā)出對其外部其他系統(tǒng)的訪問。為了保護蜜網(wǎng)以外的其他系統(tǒng),必須對出站的連接行為進行管控,但同時也要考慮仿真性,盡量不能被攻擊者察覺。對內(nèi)的流量控制功能用于控制入侵者從外部對蜜網(wǎng)內(nèi)部的訪問,蜜網(wǎng)內(nèi)不是所有蜜罐都是高交互的[8],這樣就需要使用重定向技術(shù),當(dāng)?shù)徒换ッ酃逕o法處理入侵者的請求時,將請求轉(zhuǎn)發(fā)到其他可以響應(yīng)該請求的蜜罐中去,提高系統(tǒng)的仿真性。
數(shù)據(jù)分析模塊:數(shù)據(jù)分析的目的是對收集到的數(shù)據(jù)進行分析來獲取攻擊的信息,以揭示攻擊技術(shù)和對手的動機。因此,如果不能對數(shù)據(jù)進行分析,蜜罐系統(tǒng)的價值就會降低。經(jīng)蜜網(wǎng)捕獲到的數(shù)據(jù)需要經(jīng)過處理,消除噪聲,然后使用有效的數(shù)據(jù)進行分析展示,并持久化存儲。
系統(tǒng)管理模塊:系統(tǒng)管理需要提供設(shè)備管理功能和設(shè)備監(jiān)控功能。設(shè)備管理功能要提供易于部署、配置的管理機制,并涵蓋蜜罐生命周期的所有方面,從蜜罐節(jié)點建立到安全遠(yuǎn)程管理、安裝服務(wù)配置最后到下線、刪除。
工控蜜網(wǎng)系統(tǒng)是針對典型的工業(yè)控制系統(tǒng),將目前的蜜罐技術(shù)、虛擬化技術(shù)與工業(yè)系統(tǒng)進行融合,在具備典型工控系統(tǒng)架構(gòu)的同時,又兼顧蜜網(wǎng)技術(shù)結(jié)構(gòu)的一種新型技術(shù)架構(gòu)。要想最大限度地獲取新的漏洞信息以及攻擊方法等數(shù)據(jù),吸引入侵者,則需要將蜜網(wǎng)系統(tǒng)部署在一個有足夠吸引力的工作網(wǎng)絡(luò)里。
為了保證企業(yè)內(nèi)部網(wǎng)絡(luò)的安全,需要與蜜網(wǎng)系統(tǒng)劃分在不同的網(wǎng)段,同時蜜網(wǎng)系統(tǒng)中蜜罐和數(shù)據(jù)分析主機也在不同的網(wǎng)段以保證安全。通過分析工控系統(tǒng)典型網(wǎng)絡(luò)結(jié)構(gòu),最大程度保證蜜網(wǎng)系統(tǒng)的高仿真性,本文設(shè)計的蜜網(wǎng)系統(tǒng)中的蜜網(wǎng)網(wǎng)關(guān)是部署在工業(yè)控制網(wǎng)絡(luò)的企業(yè)資源層和生產(chǎn)管理層中間的設(shè)備,蜜網(wǎng)系統(tǒng)的蜜罐網(wǎng)絡(luò)向下模擬生產(chǎn)管理層、過程監(jiān)控層和現(xiàn)場控制層的PLC 設(shè)備。
如圖2 所示,工控蜜網(wǎng)系統(tǒng)的整體架構(gòu)分為蜜罐網(wǎng)絡(luò)與監(jiān)控管理平臺兩個模塊,外部訪問經(jīng)接入路由器進入內(nèi)部網(wǎng)絡(luò),路由器連接網(wǎng)關(guān)的eth0 接口,網(wǎng)關(guān)的 eth1 接口與數(shù)據(jù)分析網(wǎng)連接,eth2 接口與蜜網(wǎng)網(wǎng)絡(luò)連接。其中 eth0 與 eth2 這兩個接口使用橋接模式,且這兩個接口使用同一網(wǎng)段,當(dāng)數(shù)據(jù)包通過網(wǎng)關(guān)時TTL 的值不會發(fā)生遞減,并且也不需要提供網(wǎng)關(guān)自己的 MAC 地址。因此,蜜網(wǎng)網(wǎng)關(guān)對外部的攻擊者是透明的,也就是在網(wǎng)絡(luò)層面無法識別其攻擊的網(wǎng)絡(luò)是蜜網(wǎng)系統(tǒng)[9]。
圖2 蜜網(wǎng)網(wǎng)絡(luò)拓?fù)鋱D
eht1 接口用來負(fù)責(zé)將蜜網(wǎng)中傳輸來的數(shù)據(jù)發(fā)送到蜜網(wǎng)管理平臺中,同時eth1 切斷與eth0 的數(shù)據(jù)轉(zhuǎn)發(fā)。本系統(tǒng)不允許入侵者從路由器經(jīng)網(wǎng)關(guān)直接進入數(shù)據(jù)分析網(wǎng),因為這會使蜜網(wǎng)系統(tǒng)變得毫無價值。數(shù)據(jù)分析網(wǎng)的數(shù)據(jù)也不需要傳輸至外部網(wǎng)絡(luò),這樣就避免了一旦入侵者通過蜜罐網(wǎng)絡(luò)入侵?jǐn)?shù)據(jù)分析網(wǎng),將數(shù)據(jù)分析網(wǎng)作為跳板繞過蜜網(wǎng)的數(shù)據(jù)控制機制對外部網(wǎng)絡(luò)進行攻擊。
由于蜜網(wǎng)系統(tǒng)沒有強制訪問措施,無法強行要求他人訪問或入侵,也就是無論蜜網(wǎng)系統(tǒng)多逼真,只要網(wǎng)絡(luò)中還有真實企業(yè)網(wǎng)絡(luò),它就存在被攻擊的可能性[10]。為了盡可能避免這種情況的發(fā)生,在接入路由器的配置中,采用白名單方式對允許訪問的IP地址和MAC 地址進行綁定,對于不在白名單中的IP地址發(fā)起的訪問全部重定向到蜜網(wǎng)系統(tǒng)。這樣提高了生產(chǎn)數(shù)據(jù)網(wǎng)的安全性,并且增加了入侵者掉入蜜網(wǎng)系統(tǒng)的可能性。
在傳統(tǒng)的蜜罐結(jié)構(gòu)基礎(chǔ)上,本文系統(tǒng)中蜜罐根據(jù)企業(yè)所在行業(yè)進行設(shè)計,包含 PLC 蜜罐、工程師站蜜罐等。在整個平臺中以真實主機與虛擬化技術(shù)結(jié)合的方式,一方面讓工控蜜罐系統(tǒng)的逼真度盡可能地高,另一方面使用虛擬化技術(shù),模擬一些不必要使用真實物理機的部分,進而節(jié)省成本。采用了靈活的構(gòu)建方式,通過將實體機與虛擬機共同接入網(wǎng)絡(luò),實現(xiàn)了高交互與低交互并存的動態(tài)混合虛擬蜜網(wǎng)。蜜網(wǎng)系統(tǒng)包括真實的PLC 設(shè)備、PLC 蜜罐、工程師站蜜罐和虛擬蜜罐等。虛擬 PLC 蜜罐和真實PLC 設(shè)備同時與工程師站進行通信,這樣就不僅僅是應(yīng)對簡單的掃描攻擊,在入侵者看來,系統(tǒng)更加真實,取得的效果更好。
本文設(shè)計的工控蜜網(wǎng)系統(tǒng)是彈性可伸縮的,部署的企業(yè)可以根據(jù)實際情況,使用虛擬蜜罐替代真實物理機,在兼顧高仿真性的同時,達(dá)到節(jié)約成本的目的。
在設(shè)計蜜網(wǎng)系統(tǒng)時需要考慮蜜網(wǎng)的仿真性、功能性、安全性的結(jié)合。更真實地模仿真實的系統(tǒng)能夠提高蜜罐的誘騙能力,從而吸引入侵者的注意力。蜜網(wǎng)系統(tǒng)的功能性,體現(xiàn)在蜜網(wǎng)的數(shù)據(jù)捕獲能力,通過捕獲有價值的數(shù)據(jù)以達(dá)到部署蜜網(wǎng)的目的。在工控系統(tǒng)中部署其他設(shè)備的安全性至關(guān)重要,需要通過數(shù)據(jù)控制技術(shù)實現(xiàn)入侵者無法在蜜網(wǎng)中對外發(fā)起攻擊。
要想使蜜網(wǎng)具有高仿真性,則需要使用多種欺騙方法使蜜網(wǎng)系統(tǒng)更像一個真實的生產(chǎn)環(huán)境,從而引誘攻擊者對其進行網(wǎng)絡(luò)入侵。本系統(tǒng)主要使用以下方法。
4.1.1 網(wǎng)絡(luò)流量仿真
產(chǎn)生仿真流量能夠彌補虛擬蜜網(wǎng)中沒有實時流量的缺陷,使入侵者不能使用分析網(wǎng)絡(luò)流量的方法發(fā)現(xiàn)蜜網(wǎng)的仿真誘捕活動。在蜜罐主機中通過鏡像的方式重現(xiàn)生產(chǎn)數(shù)據(jù)網(wǎng)的網(wǎng)絡(luò)流量,這使得蜜網(wǎng)系統(tǒng)與真實的生產(chǎn)系統(tǒng)具有較高的相似性。為了進一步確保真實性,系統(tǒng)中部署了真實的西門子PLC設(shè)備,在蜜罐主機與PLC 設(shè)備中運行真實的工藝流程和數(shù)據(jù)采集過程,完全真實地重現(xiàn)生產(chǎn)數(shù)據(jù)網(wǎng)中某些生產(chǎn)活動。同時,本系統(tǒng)使用管道技術(shù)將蜜罐網(wǎng)絡(luò)模塊中捕獲的數(shù)據(jù)發(fā)送到監(jiān)控管理平臺。
4.1.2 重定向技術(shù)
地址轉(zhuǎn)換技術(shù)能夠?qū)⒚劬W(wǎng)網(wǎng)絡(luò)和真實網(wǎng)絡(luò)分離開來,這樣就可以使用真實的操作系統(tǒng)替換低可信度的誘騙方法,增加了隱蔽性的同時增強了仿真性。重定向技術(shù)使用重定向代理服務(wù),由代理服務(wù)進行地址轉(zhuǎn)換,本文網(wǎng)關(guān)選擇使用Ubuntu18.10 作為主機系統(tǒng),防火墻Netfilter 提供的目標(biāo)網(wǎng)絡(luò)地址轉(zhuǎn)換功能實現(xiàn)靜態(tài)重定向。
本文還使用了一種動態(tài)重定向的選擇性機制,允許從蜜罐到互聯(lián)網(wǎng)的連接自動和動態(tài)重定向。其目的是讓攻擊者產(chǎn)生一種錯覺,即其可以從蜜罐連接到外部網(wǎng)絡(luò),而實際上,這些連接只是被重定向到另一個蜜罐。
如圖3 所示,本文使用兩個 hook 函數(shù),并將它們置于 Netfilter 組件 PREROUTING 鏈中的 conntrack函數(shù)和nat 函數(shù)之間。第一個 hook 函數(shù)負(fù)責(zé)提取數(shù)據(jù)包并將它們發(fā)送到用戶空間中的dialog_tracker,以便決定是否需要重定向它們。第二個 hook 函數(shù)負(fù)責(zé)為決定需要重新定向數(shù)據(jù)包添加標(biāo)簽。
圖3 數(shù)據(jù)動態(tài)重定向?qū)崿F(xiàn)方法
當(dāng)一個數(shù)據(jù)包從外部進入網(wǎng)關(guān)設(shè)備的網(wǎng)卡的緩存區(qū),首先進入 PREROUTING 鏈,當(dāng) conntrack 函數(shù)對數(shù)據(jù)包進行處理后,由redirection 模塊進行處理,將數(shù)據(jù)讀取到用戶空間,進入libnetfilter_queue 隊列,由重定向模塊處理。對于每個連接,第一個 hook 函數(shù)只提取第一個包并將其發(fā)送到 dialog_tracker。然后,dialog_tracker 將數(shù)據(jù)包轉(zhuǎn)發(fā)給 dialog_handler,由它決定這個數(shù)據(jù)包是否需要重定向或阻塞。做出決定時,dialog_tracker 通知內(nèi)核模塊進行重定向,然后第二個hook 函數(shù)為需要重定向的數(shù)據(jù)包添加標(biāo)簽,并將數(shù)據(jù)包重新發(fā)送給鏈表的下一個函數(shù),數(shù)據(jù)包被重新注入到相應(yīng)鏈表中。鏈表中下一個函數(shù)是nat 函數(shù),它需要通過將數(shù)據(jù)包的目標(biāo)地址更改為系統(tǒng)內(nèi)的一個蜜罐的地址,來實現(xiàn)動態(tài)重定向。
由于Netfilter 的動態(tài)追蹤機制,一個連接的重定向只需要重定向此連接的第一個數(shù)據(jù)包,其他數(shù)據(jù)包與第一個數(shù)據(jù)包一樣自動處理。
數(shù)據(jù)捕獲是蜜網(wǎng)的核心功能模塊,其目標(biāo)是獲取攻擊者從探測掃描到實施攻擊再到最后離開蜜網(wǎng)過程中,入侵者使用的攻擊方法、利用的漏洞及其目的。低交互度蜜罐大多使用靜態(tài)數(shù)據(jù),其中沒有真實的流量,數(shù)據(jù)的捕獲經(jīng)常是通過日志記錄,捕獲能力有限[11]。與低交互蜜罐相比,高交互程度的蜜網(wǎng)系統(tǒng)的數(shù)據(jù)捕捉功能優(yōu)勢明顯。如圖4 所示,本系統(tǒng)引入分層捕獲的機制,做到攻擊流量進入蜜網(wǎng)經(jīng)過的每臺設(shè)備都進行數(shù)據(jù)捕獲,使用網(wǎng)絡(luò)數(shù)據(jù)捕獲和操作系統(tǒng)數(shù)據(jù)捕獲兩種方法。其中,使用Iptables 和Snort 進行網(wǎng)絡(luò)數(shù)據(jù)捕獲,由操作系統(tǒng)日志和Sebek 模塊組成操作系統(tǒng)層面的數(shù)據(jù)捕獲機制。
圖4 數(shù)據(jù)捕獲處理流程
4.2.1 網(wǎng)絡(luò)數(shù)據(jù)捕獲
網(wǎng)關(guān)中的Iptables 是分層捕獲機制的第一層,在研究階段,Iptables 的訪問控制規(guī)則可以適當(dāng)放寬,以此來吸引更多的入侵者對蜜網(wǎng)系統(tǒng)進行入侵。在實際部署階段,Iptables 的訪問策略應(yīng)該與網(wǎng)絡(luò)接入層的企業(yè)防火墻訪問控制規(guī)則寬松程度持平或適當(dāng)放寬,以起到保護真實系統(tǒng)的效果,并發(fā)現(xiàn)企業(yè)部署的防火墻的規(guī)則不合理之處,起到主動防御的效果。Snort 安裝在網(wǎng)關(guān)中,起到捕獲數(shù)據(jù)包并過濾的作用,當(dāng)攻擊流量信息與已有規(guī)則匹配時,Snort會對其進行記錄并丟棄。
蜜罐操作系統(tǒng)內(nèi)部在網(wǎng)絡(luò)層和應(yīng)用層設(shè)置捕獲點實現(xiàn)數(shù)據(jù)捕獲。
網(wǎng)絡(luò)層:對于每個協(xié)議,相關(guān)端口上的輸入和輸出流量,防火墻Iptables 條目都會自動添加,以便使用Netfilter 隊列將原始流量重定向到駐留在應(yīng)用程序級別的蜜罐軟件。這里接收到的每個數(shù)據(jù)包都由回調(diào)函數(shù)處理,如果其他方法仍然需要該數(shù)據(jù)包,回調(diào)函數(shù)會將其存儲在臨時緩沖區(qū)中,或者直接將其發(fā)送到數(shù)據(jù)庫組件中的關(guān)聯(lián)緩沖區(qū)。在前者的情況下,在所有方法使用完捕獲的包之后,最后一個方法將數(shù)據(jù)發(fā)送到數(shù)據(jù)庫組件中的緩沖區(qū),這種方法能夠使用整個包的原始狀態(tài)進行捕獲和檢查。
應(yīng)用層:如果有通過協(xié)議實現(xiàn)的服務(wù),每個模擬服務(wù)可以集成通過上述Netfilter 隊列重定向接收的原始數(shù)據(jù)并在內(nèi)部使用。這種數(shù)據(jù)捕獲機制的一個優(yōu)點是,可以通過使用標(biāo)準(zhǔn)技術(shù)將諸如處理TCP連接之類的任務(wù)從蜜罐軟件層面下放到操作系統(tǒng)上,從而提高性能。
4.2.2 Sebek 基于內(nèi)核的數(shù)據(jù)捕獲
雖然網(wǎng)絡(luò)數(shù)據(jù)的捕獲一般不會被入侵者察覺,但是隨著入侵技術(shù)的發(fā)展,入侵者越來越多地使用加密工具來保護傳輸通道,如果目標(biāo)機器沒有安裝加密服務(wù),那么入侵者可能會自己安裝如SSH、加密的客戶端程序等服務(wù)。如果沒有密鑰,基于網(wǎng)絡(luò)的數(shù)據(jù)捕獲工具就極難破譯出被加密的數(shù)據(jù)的具體內(nèi)容,為了解決這種情況,本文使用在內(nèi)核中收集用戶行為的工具Sebek。
如圖5 所示,Sebek 客戶端通過調(diào)用自己創(chuàng)建的系統(tǒng)調(diào)用函數(shù)new_read 替換正常的系統(tǒng)調(diào)用函數(shù),記錄入侵者調(diào)用系統(tǒng)默認(rèn)read 函數(shù)的所有數(shù)據(jù),并把記錄的數(shù)據(jù)包載入緩存,之后對數(shù)據(jù)包進行封裝。封裝后的數(shù)據(jù)包包含了調(diào)用的內(nèi)容信息、調(diào)用的進程描述、調(diào)用的時間和數(shù)據(jù)的大小。數(shù)據(jù)包封裝之后直接發(fā)送給驅(qū)動設(shè)備,繞過套接字代碼和包過濾器,再把數(shù)據(jù)發(fā)送到 Sebek 服務(wù)器[12]。由于嗅探器一般是基于使用原始套接字接口的libpcap函數(shù)庫的,因此嗅探器也就無法過濾到Sebek 產(chǎn)生的數(shù)據(jù)包。數(shù)據(jù)在使用時一般是在解密情況下操作的,在進行操作時都會產(chǎn)生系統(tǒng)調(diào)用,在內(nèi)核空間收集數(shù)據(jù),這樣就能截獲這個系統(tǒng)調(diào)用的訪問進程解密后還未處理的數(shù)據(jù)。
圖5 Sebek 捕獲消息機制
Sebek 客戶端模塊通過調(diào)用自己創(chuàng)建的new_read函數(shù)替換原來的函數(shù)本質(zhì)就是改變系統(tǒng)調(diào)用表的函數(shù)指針。由于Sebek 客戶端模塊掛載于內(nèi)核中的一個單向鏈表,入侵者在對鏈表進行掃描時,能夠發(fā)現(xiàn)Sebek 客戶端模塊,這樣攻擊者可能會發(fā)現(xiàn)該主機是一臺蜜罐主機[13]。為了防止這種情況發(fā)生,本文通過安裝cleaner 模塊替代這個Sebek 客戶端模塊,再通過 clearner 模塊調(diào)用 Sebek 模塊。這種方法有兩方面效果:首先,入侵者通過遍歷無法找到Sebek 客戶端模塊起到了隱藏模塊的效果;其次,入侵者無法從內(nèi)核中刪除客戶端模塊,進而保護了蜜罐主機的安全性。
由于蜜網(wǎng)中的蜜罐是用來吸引攻擊者,其本身會有一些故意預(yù)留的漏洞。如果蜜網(wǎng)系統(tǒng)中某些宿主機本身被黑客攻陷,那么某個蜜罐網(wǎng)系統(tǒng)可能已經(jīng)被識破,蜜網(wǎng)系統(tǒng)可能被黑客利用,作為攻擊其他系統(tǒng)的跳板。因此,既要防止蜜網(wǎng)內(nèi)部的網(wǎng)絡(luò)風(fēng)暴,又要防止蜜罐主機被當(dāng)成跳板機影響企業(yè)自身辦公數(shù)據(jù)網(wǎng)乃至生產(chǎn)數(shù)據(jù)網(wǎng)。數(shù)據(jù)控制的挑戰(zhàn)在于如何設(shè)置出站活動的閾值,攻擊者在蜜網(wǎng)系統(tǒng)中的自由度越大,用戶能捕獲的數(shù)據(jù)就越全面。但是,攻擊者被允許的行為越多,可能造成的威脅就越大,這需要控制允許出站活動的閾值。
蜜網(wǎng)系統(tǒng)會對外部連接蜜罐的訪問控制做到適度寬松,但對從蜜網(wǎng)系統(tǒng)向外部網(wǎng)絡(luò)的連接要進行嚴(yán)格管控,當(dāng)蜜網(wǎng)系統(tǒng)中的真實物理機發(fā)起向外的連接時,很可能是黑客利用蜜網(wǎng)系統(tǒng)對外嘗試發(fā)起的攻擊。然而,數(shù)據(jù)控制不能輕松地阻斷對外的全部連接,這樣無疑是在告訴入侵者他可能處在蜜網(wǎng)之內(nèi)。同時,單純地阻斷也無法獲取入侵者對外連接的目的,而入侵者進入蜜網(wǎng)后的行為和目的是需要收集的。
本文蜜網(wǎng)系統(tǒng)數(shù)據(jù)控制的方法主要包括攻擊包抑制和對外連接數(shù)限制兩種手段,網(wǎng)關(guān)主機通過Snort 實現(xiàn)該功能。入侵檢測系統(tǒng) Snort,經(jīng)由 libipq接收來自 Iptables 的數(shù)據(jù)包,并根據(jù) Snort 的規(guī)則集對數(shù)據(jù)包進行檢查,一旦發(fā)現(xiàn)惡意代碼就對該數(shù)據(jù)包采取預(yù)先定義的策略,然后再將數(shù)據(jù)包傳回給Iptables 進行阻斷[14]。對流出蜜網(wǎng)的數(shù)據(jù)包進行嚴(yán)格控制,以防黑客使用蜜網(wǎng)作為跳板向外部發(fā)起攻擊,而對外連接數(shù)限制是用來控制黑客對其他網(wǎng)絡(luò)系統(tǒng)發(fā)起的連接數(shù)量。開啟 Snort 網(wǎng)絡(luò)入侵檢測模式,使用Filters 過濾器,如果檢測到含有惡意代碼的數(shù)據(jù)包,則對其加以攔截并記錄到日志文件中,使其不能對第三方網(wǎng)絡(luò)構(gòu)成危害。
本文論述了為工控系統(tǒng)設(shè)計的蜜網(wǎng)系統(tǒng),對傳統(tǒng)蜜網(wǎng)無法對工業(yè)控制系統(tǒng)進行高仿真的問題提出了解決方法。系統(tǒng)使用半實物半仿真的方法,采用真實設(shè)備PLC 與蜜罐主機交互的方式,實現(xiàn)了蜜網(wǎng)系統(tǒng)的網(wǎng)絡(luò)流量高仿真,保證有效性的同時兼顧靈活性與部署成本。通過隱藏 Sebek 模塊、模擬服務(wù)等方法做到操作系統(tǒng)高仿真。通過有效的捕獲機制保證數(shù)據(jù)捕獲的全面性,使用網(wǎng)關(guān)控制達(dá)到蜜網(wǎng)系統(tǒng)安全可控。后續(xù)研究需要更進一步探索其他蜜網(wǎng)高仿真方法,并豐富數(shù)據(jù)分析、數(shù)據(jù)展示功能,也可將有價值的威脅信息上報到漏洞發(fā)布平臺。