賈寶林,連 棟
(上海工業(yè)自動(dòng)化儀表研究院有限公司,中國(guó) 上海 200233)
隨著網(wǎng)絡(luò)技術(shù)的迅猛發(fā)展,網(wǎng)絡(luò)安全問(wèn)題也越發(fā)嚴(yán)峻。傳統(tǒng)的防火墻與殺毒軟件已無(wú)法滿足日益增長(zhǎng)的安全需求。入侵檢測(cè)系統(tǒng)是對(duì)其他安全工具(如防火墻等)網(wǎng)絡(luò)入侵檢測(cè)的一種有效彌補(bǔ)方法[1],可以提供多層次、全方位的立體安全防護(hù)策略,最大程度地保障網(wǎng)絡(luò)安全。
本文提出了一種基于Java Script 對(duì)象簡(jiǎn)譜(Java Script object notation,JSON)的計(jì)算機(jī)網(wǎng)絡(luò)入侵監(jiān)測(cè)規(guī)則設(shè)計(jì)方法。該方法在通用匹配方法的基礎(chǔ)上,針對(duì)性地對(duì)各應(yīng)用協(xié)議的具體字段進(jìn)行特征匹配,使用多種子規(guī)則混合匹配的方式,既保證了匹配效率,又有效提高了匹配準(zhǔn)確率。
隨著網(wǎng)絡(luò)安全技術(shù)的發(fā)展,除了防火墻和殺毒系統(tǒng)的防護(hù)以外,入侵檢測(cè)技術(shù)也已成為抵御網(wǎng)絡(luò)攻擊的有效方式。入侵檢測(cè)系統(tǒng)(intrusion detection system,IDS)被認(rèn)為是防火墻之后的第二道安全閘門,能夠承接防護(hù)和響應(yīng)的過(guò)程,在不影響系統(tǒng)性能的情況下對(duì)系統(tǒng)進(jìn)行監(jiān)測(cè)[2]。入侵檢測(cè)系統(tǒng)對(duì)計(jì)算機(jī)系統(tǒng)與網(wǎng)絡(luò)中的安全事件檢測(cè)的技術(shù)主要包括數(shù)據(jù)采集、分析與結(jié)果處理三個(gè)功能[3]。
入侵檢測(cè)系統(tǒng)主要通過(guò)以下步驟來(lái)實(shí)現(xiàn)功能:①分析和監(jiān)聽用戶及系統(tǒng)行為活動(dòng);②設(shè)計(jì)系統(tǒng)結(jié)構(gòu),發(fā)現(xiàn)系統(tǒng)的弱點(diǎn);③識(shí)別攻擊行為,并發(fā)出警報(bào);④分析統(tǒng)計(jì)異常的行為;⑤對(duì)數(shù)據(jù)的完整性進(jìn)行評(píng)估。
入侵檢測(cè)的過(guò)程有信息收集、分析和處理三個(gè)步驟。收集信息是入侵檢測(cè)的第一步[4]。對(duì)于入侵檢測(cè)系統(tǒng)而言,典型的數(shù)據(jù)收集方式是通過(guò)網(wǎng)絡(luò)鏈路的端口鏡像或分光設(shè)備把正常的網(wǎng)絡(luò)通信數(shù)據(jù)復(fù)制一份至檢測(cè)系統(tǒng)。系統(tǒng)在獲得數(shù)據(jù)包后,會(huì)進(jìn)行一系列預(yù)處理,包括數(shù)據(jù)包分析、包重組、協(xié)議解析等,然后將處理后的數(shù)據(jù)進(jìn)行后續(xù)的行為分析。其中,入侵行為分析是入侵檢測(cè)的核心。其本質(zhì)是根據(jù)用戶行為的抽象描述和已有的安全策略,使用推理或模式匹配等智能技術(shù)判斷用戶的行為是否為入侵行為。
目前,商用入侵檢測(cè)系統(tǒng)大多基于規(guī)則庫(kù)的模型。規(guī)則庫(kù)的完備程度決定了系統(tǒng)性能的優(yōu)劣[5],而規(guī)則設(shè)計(jì)更是重中之重。針對(duì)傳統(tǒng)的規(guī)則庫(kù)特征描述文件較為繁雜、可讀性較差、對(duì)協(xié)議的支持深度不夠的情況,本文提出了一種基于JSON的計(jì)算機(jī)網(wǎng)絡(luò)入侵監(jiān)測(cè)規(guī)則設(shè)計(jì)方法,并從需求分析、數(shù)據(jù)分析、特征規(guī)則設(shè)計(jì)等方面進(jìn)行了詳細(xì)描述,方便用戶使用和理解該設(shè)計(jì)方法。
入侵檢測(cè)系統(tǒng)中,入侵行為分析是入侵檢測(cè)的核心。規(guī)則庫(kù)描述入侵攻擊事件的特征和相應(yīng)的響應(yīng)規(guī)則,并控制入侵檢測(cè)引擎,是入侵檢測(cè)系統(tǒng)能否有效檢測(cè)入侵的關(guān)鍵[6]。檢測(cè)規(guī)則的存儲(chǔ)方式以及規(guī)則內(nèi)容的易讀性直接影響著規(guī)則獲取能力和規(guī)則應(yīng)用效率,是入侵檢測(cè)系統(tǒng)中的基本問(wèn)題之一。因此,其對(duì)入侵檢測(cè)系統(tǒng)規(guī)則的存儲(chǔ)方式模式、規(guī)則庫(kù)的構(gòu)建研究和改進(jìn)具有重要價(jià)值。目前,主流的入侵特征規(guī)則主要通過(guò)對(duì)數(shù)據(jù)包數(shù)據(jù)區(qū)直接進(jìn)行模式匹配、規(guī)則判斷,或者在通過(guò)端口或特征位判斷出協(xié)議后,再對(duì)指定數(shù)據(jù)區(qū)進(jìn)行特征匹配。同時(shí),其規(guī)則庫(kù)中特征描述文件較為煩雜,可讀性較差,且對(duì)協(xié)議的支持深度不夠,無(wú)法滿足在協(xié)議日益多樣的情況下對(duì)內(nèi)容進(jìn)行特征匹配的需求??傮w來(lái)看,目前主流特征規(guī)則庫(kù)的設(shè)計(jì)存在可擴(kuò)展性弱、智能化低的局限。在這種背景下,進(jìn)行入侵檢測(cè)規(guī)則設(shè)計(jì)時(shí),既要滿足對(duì)通用字段的有效匹配,又要滿足各種協(xié)議字段內(nèi)容的精確匹配;同時(shí),還需要兼顧后期的可擴(kuò)展性,以及復(fù)雜邏輯下多種模塊組合匹配的需求。
傳輸控制協(xié)議/網(wǎng)際互連協(xié)議(trasmission control protocol/Internet protocol,TCP/IP)在一定程度上參考了開放式系統(tǒng)互聯(lián)通信通信參考模型(open system interconnection reference model, OSI)的體系結(jié)構(gòu)。TCP/IP協(xié)議共有四層,從下到上分別是網(wǎng)絡(luò)接入層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層[7]。應(yīng)用層的主要協(xié)議有電信網(wǎng)絡(luò)協(xié)議(telecom municationnet work protocol,Telnet)、文件傳輸協(xié)議(file transfer protocol, FTP)、簡(jiǎn)單郵件傳輸協(xié)議(simple mail transfer protocol, SMTP)等,用于接收來(lái)自傳輸層的數(shù)據(jù)或者按不同應(yīng)用要求與方式將數(shù)據(jù)傳輸至傳輸層。傳輸層的主要協(xié)議有用戶數(shù)據(jù)報(bào)協(xié)議(user datagram protocol, UDP)、傳輸控制協(xié)議(transmission control protocol, TCP),是使用者使用平臺(tái)和計(jì)算機(jī)信息網(wǎng)內(nèi)部數(shù)據(jù)結(jié)合的通道,可以實(shí)現(xiàn)數(shù)據(jù)傳輸與數(shù)據(jù)共享。網(wǎng)絡(luò)層的主要協(xié)議有網(wǎng)際控制報(bào)文協(xié)議(internet control message protocol, ICMP)、網(wǎng)際互連協(xié)議(internet protocol, IP)、網(wǎng)絡(luò)組管理協(xié)議(internet group management protocol, IGMP),主要負(fù)責(zé)網(wǎng)絡(luò)中數(shù)據(jù)包的傳送等。網(wǎng)絡(luò)接入層又稱網(wǎng)路接口層或數(shù)據(jù)鏈路層,主要協(xié)議有地址解析協(xié)議(address resolution protocol, ARP)、反向地址轉(zhuǎn)換協(xié)議(reverse address resolution protocol, RARP),主要功能是提供鏈路管理錯(cuò)誤檢測(cè)、對(duì)不同通信媒介有關(guān)信息細(xì)節(jié)問(wèn)題進(jìn)行有效處理等[8]。本規(guī)則設(shè)計(jì)主要針對(duì)的是應(yīng)用層協(xié)議解析后的數(shù)據(jù),同時(shí)通過(guò)內(nèi)置一些固定字段以兼顧數(shù)據(jù)鏈路層、網(wǎng)絡(luò)層、傳輸層等字段內(nèi)容。
數(shù)據(jù)包在前置協(xié)議解析模塊中統(tǒng)一結(jié)構(gòu)化處理為JSON數(shù)據(jù)結(jié)構(gòu)體,包含了網(wǎng)絡(luò)層、傳輸層等基礎(chǔ)信息和應(yīng)用層協(xié)議數(shù)據(jù)信息。以超文本傳輸協(xié)議(hyper text transfer protocol, HTTP)為例,經(jīng)結(jié)構(gòu)化處理后的數(shù)據(jù)結(jié)構(gòu)應(yīng)包含IP、端口、請(qǐng)求統(tǒng)一資源定位符(uniform resource locator,URL)、主機(jī)等字段。HTTP協(xié)議示例字段如表1所示。JSON作為一種輕量級(jí)數(shù)據(jù)交換格式,具有良好的延展性和可閱讀性,只要通過(guò)指定的鍵值即可完成字段的讀取,可以方便地與特征規(guī)則字段進(jìn)行匹配。
表1 HTTP協(xié)議示例字段表
不同的應(yīng)用協(xié)議對(duì)應(yīng)不同的應(yīng)用場(chǎng)景,同時(shí)也會(huì)出現(xiàn)不同的匹配需求。如在工控環(huán)境下的Modbus協(xié)議,在很多情況下并不需要知道操作的具體內(nèi)容,只要是寫數(shù)據(jù)即為敏感操作,需要對(duì)該操作進(jìn)行告警。在這種背景下,只需要對(duì)功能碼進(jìn)行匹配即可實(shí)現(xiàn)。而一些通用的應(yīng)用協(xié)議(如HTTP等)的應(yīng)用范圍較廣,進(jìn)行特征匹配時(shí)更在意其字段的內(nèi)容是否出現(xiàn)攻擊行為等。此時(shí),就需要對(duì)其內(nèi)容作進(jìn)一步的特征規(guī)則匹配。
在特征內(nèi)容匹配方面,除了常規(guī)的字符串比較、模式匹配之外,協(xié)議應(yīng)該還具有進(jìn)一步的匹配能力,如數(shù)據(jù)范圍的大小限定、指定數(shù)據(jù)偏移位置及長(zhǎng)度的限定、通用正則匹配的需求以及字段匹配前的預(yù)處理功能等。
JSON是一種輕量級(jí)的數(shù)據(jù)交換格式,非常易于理解和編寫,且數(shù)據(jù)格式簡(jiǎn)單,易于讀寫、解析[9]。其具有良好的自我描述性,同時(shí)還具有較為明確的層級(jí)結(jié)構(gòu)。在本文中,特征規(guī)則文本設(shè)計(jì)為JSON格式字符串存儲(chǔ),在整體結(jié)構(gòu)上分為規(guī)則描述特征和規(guī)則內(nèi)容兩個(gè)部分。
①規(guī)則描述部分作為本條特征的概要信息,指定了本條特征的規(guī)則計(jì)算方式與應(yīng)用層協(xié)議,主要包含匹配類型、匹配協(xié)議、規(guī)則表達(dá)式這三個(gè)字段。規(guī)則描述與匹配鍵值如表2所示。匹配類型字段主要規(guī)定了當(dāng)前特征規(guī)則匹配方式。本設(shè)計(jì)中的特征規(guī)則設(shè)計(jì)使用混合匹配方式,此處固定為mixed。匹配協(xié)議字段主要用于確保當(dāng)前特征規(guī)則與解析后的應(yīng)用層協(xié)議數(shù)據(jù)保持一致,避免交叉匹配,降低匹配效率。規(guī)則表達(dá)式字段構(gòu)建了具體的子規(guī)則值運(yùn)算邏輯,從規(guī)則表達(dá)式中提取出對(duì)應(yīng)的子規(guī)則名稱與運(yùn)算邏輯。在進(jìn)行子規(guī)則匹配后,按運(yùn)算邏輯對(duì)匹配結(jié)果進(jìn)行計(jì)算,可獲取最終的特征規(guī)則匹配結(jié)果。
表2 規(guī)則描述與匹配鍵值表
規(guī)則表達(dá)式字段計(jì)算使用類似逆波蘭式算法,對(duì)已經(jīng)匹配的子規(guī)則值進(jìn)行邏輯計(jì)算,并根據(jù)得出的最終結(jié)果判斷當(dāng)前數(shù)據(jù)是否命中此規(guī)則。在規(guī)則表達(dá)式中共包含兩種類型字符:規(guī)則名稱字符,主要用于定義子規(guī)則名稱,包含所有字母、數(shù)字、下劃線和中劃線;邏輯字符,主要用于各子規(guī)則值之間的邏輯運(yùn)算,包含“&”、“|”、“!”、“(”和“)”。該規(guī)則表達(dá)式支持以下邏輯操作: 與操作(“&&”);或操作(“||”);非操作(“!”);括號(hào)操作(“()”)。在進(jìn)行邏輯運(yùn)算時(shí),首先從規(guī)則表達(dá)式中提取出各子規(guī)則名稱,然后根據(jù)子規(guī)則名稱提取各子規(guī)則匹配值,最后對(duì)值進(jìn)行邏輯運(yùn)算并得出結(jié)果。
②在特征規(guī)則內(nèi)容部分定義了當(dāng)前特征的詳細(xì)信息。規(guī)則中,各字段與數(shù)據(jù)包中結(jié)構(gòu)化后的數(shù)據(jù)字段相同,以方便、快速地建立映射關(guān)系。在此部分中,可以包含多個(gè)key-value鍵值對(duì)。每個(gè)key對(duì)應(yīng)的是待匹配的應(yīng)用層協(xié)議字段名稱。通過(guò)key,可以直接從JSON結(jié)構(gòu)化協(xié)議數(shù)據(jù)中提取對(duì)應(yīng)內(nèi)容。同時(shí),為了滿足網(wǎng)絡(luò)層、傳輸層協(xié)議字段的匹配需要,本設(shè)計(jì)內(nèi)置通用字段匹配。其在數(shù)據(jù)包中的名稱相對(duì)固定:內(nèi)置字段以下劃線“_”為開頭;源IP、源端口、數(shù)據(jù)流方向、傳輸層協(xié)議字段分別以_sip、_sport、_direction、_proto等表示。
當(dāng)前特征的子規(guī)則為key-value鍵值對(duì)中的value部分。每個(gè)子規(guī)則均包含特征值、子規(guī)則名稱、匹配方法、匹配選項(xiàng)這四個(gè)字段。
特征子規(guī)則鍵值如表3所示。
表3 特征子規(guī)則鍵值表
規(guī)則表達(dá)式算法流程如圖1所示。
圖1 規(guī)則表達(dá)式算法流程圖
特征值字段描述了當(dāng)前子規(guī)則特征的具體內(nèi)容,可以為數(shù)字和字符串2種形式。當(dāng)特征值字段為數(shù)字時(shí),對(duì)應(yīng)的匹配類型固定為“number”,在待匹配值與此字段值相等時(shí)即為命中此子規(guī)則;當(dāng)特征值字段為字符串形式時(shí),其具體形式與匹配類型直接相關(guān)聯(lián)。子規(guī)則名稱字段定義了當(dāng)前特征子規(guī)則的名稱,主要用于最后的匹配結(jié)果邏輯運(yùn)算。
本設(shè)計(jì)內(nèi)置了多種匹配方法,可適配不同情況下的需求。當(dāng)匹配方法為“number”時(shí),value值中的數(shù)據(jù)采用開閉區(qū)間的方法進(jìn)行范圍控制,若value值為“m-n”,則限定范圍是m到n之間;若value值為“m-”,則限定范圍是大于m;若value值為“-n”,則限定范圍是小于n。匹配方法關(guān)鍵字定義如表4所示。
表4 匹配方法關(guān)鍵字定義表
匹配選項(xiàng)字段作為匹配方法的補(bǔ)充選項(xiàng),定義了匹配時(shí)的相關(guān)參數(shù),同時(shí)還對(duì)待匹配數(shù)據(jù)進(jìn)行預(yù)處理。通過(guò)nocase字段,可以在字符串匹配時(shí)不區(qū)分大小寫;通過(guò)offset和depth字段,可以在匹配時(shí),截取指定位置及長(zhǎng)度的數(shù)據(jù)與特征規(guī)則進(jìn)行比對(duì);通過(guò)pre_func內(nèi)置的預(yù)處理方法,可以在匹配前對(duì)指定數(shù)據(jù)進(jìn)行處理,如URL解碼等操作。
①在實(shí)際環(huán)境中的網(wǎng)絡(luò)入侵,很多都是基于HTTP協(xié)議的。例如:通用漏洞披露(common vulnerabilities & exposures,CVE)編號(hào)為CVE-2013-2567的漏洞,其特征名稱為“Apache Struts 對(duì)象導(dǎo)航圖語(yǔ)言(object graph navigution language,OGNL)表達(dá)式注入漏洞”。攻擊者通過(guò)內(nèi)部賬戶可以在未授權(quán)的情況下訪問(wèn)用戶不可見的敏感文件。在本攻擊特征中,使用的通信協(xié)議為HTTP,通過(guò)get請(qǐng)求,發(fā)送經(jīng)過(guò)URL編碼的URL地址,在URL中包含“/cgi-bin/mft/”“wireless_mft.cgi”“manufacture.cgi”“username”“password”等固定字段。其中,“wireless_mft.cgi”與“manufacture.cgi”其中之一即可,“username”和“password”兩個(gè)字段順序隨機(jī),且中間會(huì)出現(xiàn)隨機(jī)字符?;谝陨咸卣餍畔ⅲ傻奶卣饕?guī)則匹配類型match_type固定為mixed,匹配協(xié)議為HTTP。規(guī)則匹配需要同時(shí)滿足請(qǐng)求方法為get和符合兩種URL地址中的一個(gè)。請(qǐng)求方法特征子規(guī)則使用String完全匹配的方式。URL特征子規(guī)則使用正則匹配方式。最終結(jié)果基于“Method && (Url1 || Url2)”進(jìn)行混合運(yùn)算。其中:URL1值應(yīng)為"/cgi-bin/mft/(wireless_mft.cgi|manufacture.cgi)?.*username.*password.*";URL2值應(yīng)為"/cgi-bin/mft/(wireless_mft.cgi|manufacture.cgi)?.*password.*username.*"。兩者均使用“url_decode”關(guān)鍵字進(jìn)行預(yù)處理解碼。
②在部分工控網(wǎng)絡(luò)環(huán)境中,只需要對(duì)儀器儀表等進(jìn)行周期性數(shù)據(jù)監(jiān)控。此時(shí),一般只需要對(duì)數(shù)據(jù)進(jìn)行讀操作。寫操作則需要更高的控制權(quán)限。當(dāng)網(wǎng)絡(luò)中出現(xiàn)對(duì)某臺(tái)設(shè)備嘗試寫操作時(shí),就需要對(duì)此動(dòng)作進(jìn)行告警。在這種情況下,對(duì)寫的內(nèi)容并沒有嚴(yán)格的限定。根據(jù)這種需求,同樣可以通過(guò)本文中的特征規(guī)則進(jìn)行實(shí)現(xiàn)。以Modbus協(xié)議寫單寄存器告警為例,匹配類型match_type固定為mixed,匹配協(xié)議為Modbus,子規(guī)則特征中只需要對(duì)功能碼Func_code字段進(jìn)行數(shù)字比較即可。其中:“寫單寄存器”功能碼值為6;匹配方式為數(shù)字匹配;使用關(guān)鍵字“number”。
③本文以某地區(qū)部門工業(yè)安全流量審計(jì)平臺(tái)為例。入侵檢測(cè)引擎是該平臺(tái)的重要子模塊。根據(jù)用戶需求,在進(jìn)行特征處理時(shí),不僅要對(duì)網(wǎng)絡(luò)通用的入侵特征進(jìn)行告警,還要對(duì)工控環(huán)境下不安全的寫操作進(jìn)行告警;同時(shí),在部分工控協(xié)議中,需要對(duì)指定字段數(shù)值范圍進(jìn)行界限判斷,并在數(shù)據(jù)異常時(shí)產(chǎn)生告警信息。在此背景下,將基于JSON的規(guī)則設(shè)計(jì)應(yīng)用在協(xié)議數(shù)據(jù)匹配引擎開發(fā)中,并將其集成至審計(jì)平臺(tái)中。系統(tǒng)結(jié)構(gòu)如圖2所示。
圖2 系統(tǒng)結(jié)構(gòu)圖
在平臺(tái)正常運(yùn)行情況下,通過(guò)對(duì)不同的樣本數(shù)據(jù)進(jìn)行回放的方式對(duì)規(guī)則引擎的可靠性、有效性進(jìn)行了測(cè)試。分別以10 mbit/s、50 mbit/s、100 mbit/s的速度對(duì)平臺(tái)數(shù)據(jù)口進(jìn)行數(shù)據(jù)包回放,以測(cè)試平臺(tái)數(shù)據(jù)處理性能。回放的數(shù)據(jù)包中混合多種特征包,如Modbus協(xié)議敏感操作數(shù)據(jù)包、部分攻擊特征數(shù)據(jù)包以及多種應(yīng)用協(xié)議的正常數(shù)據(jù)交互包等,用于測(cè)試異常行為檢測(cè)效果。根據(jù)測(cè)試反饋,其結(jié)果完全符合設(shè)計(jì)要求。
本文根據(jù)入侵檢測(cè)系統(tǒng)在網(wǎng)絡(luò)安全需求日益增加的背景,提出了一種基于JSON的計(jì)算機(jī)網(wǎng)絡(luò)入侵監(jiān)測(cè)規(guī)則設(shè)計(jì)方法,通過(guò)需求調(diào)研、數(shù)據(jù)分析、架構(gòu)設(shè)計(jì)、系統(tǒng)驗(yàn)證與測(cè)試等的完整流程,設(shè)計(jì)出一套高效、擴(kuò)展性良好的特征規(guī)則設(shè)計(jì)方法。在通用匹配方法的基礎(chǔ)上,針對(duì)性地對(duì)各應(yīng)用協(xié)議的具體字段進(jìn)行特征匹配,使用多種子規(guī)則混合匹配的方式,在保證匹配效率的基礎(chǔ)上有效提高了匹配準(zhǔn)確率。
本文設(shè)計(jì)一定程度上可以為入侵檢測(cè)系統(tǒng)的攻擊特征庫(kù)的設(shè)計(jì)提供參考,并為設(shè)計(jì)人員在進(jìn)行特征匹配規(guī)則設(shè)計(jì)時(shí)提供一種可行的思路與方法。同時(shí),在后續(xù)研究工作中,應(yīng)多考慮新型的網(wǎng)絡(luò)應(yīng)用場(chǎng)景,解決如何在實(shí)際環(huán)境中進(jìn)行實(shí)時(shí)性和適應(yīng)性驗(yàn)證的問(wèn)題[10]。