IDS要有效地捕捉入侵行為,必須擁有一個強大的入侵特征數(shù)據(jù)庫,這就如同公安部門必須擁有健全的罪犯信息庫一樣。但是,IDS一般所帶的特征數(shù)據(jù)庫都比較死板,遇到“變臉”的入侵行為往往相逢不相識。因此,管理員有必要學會如何創(chuàng)建滿足實際需要的特征數(shù)據(jù)樣板,做到萬變應萬變!本文將對入侵特征的概念、種類以及如何創(chuàng)建特征進行介紹,希望能幫助讀者盡快掌握對付“變臉”的方法。
一、特征(signature)的基本概念
IDS中的特征就是指用于判別通訊信息種類的樣板數(shù)據(jù),通常分為多種,以下是一些典型情況及識別方法:來自保留IP地址的連接企圖:可通過檢查IP報頭(IP header)的來源地址輕易地識別。
帶有非法TCP 標志聯(lián)合物的數(shù)據(jù)包:可通過對比TCP報頭中的標志集與已知正確和錯誤標記聯(lián)合物的不同點來識別。
含有特殊病毒信息的Email:可通過對比每封Email的主題信息和病態(tài)Email的主題信息來識別,或者,通過搜索特定名字的附近來識別。
查詢負載中的DNS緩沖區(qū)溢出企圖:可通過解析DNS域及檢查每個域的長度來識別利用DNS域的緩沖區(qū)溢出企圖。還有另外一個識別方法是:在負載中搜索“殼代碼利用”(exploit shellcode)的序列代碼組合。
通過對POP3服務器發(fā)出上千次同一命令而導致的DoS攻擊:通過跟蹤記錄某個命令連續(xù)發(fā)出的次數(shù),看看是否超過了預設上限,而發(fā)出報警信息。
未登錄情況下使用文件和目錄命令對FTP服務器的文件訪問攻擊:通過創(chuàng)建具備狀態(tài)跟蹤的特征樣板以監(jiān)視成功登錄的FTP對話、發(fā)現(xiàn)未經(jīng)驗證卻發(fā)命令的入侵企圖。
從以上分類可以看出特征的涵蓋范圍很廣,有簡單的報頭域數(shù)值、有高度復雜的連接狀態(tài)跟蹤、有擴展的協(xié)議分析。一葉即可知秋,本文將從最簡單的特征入手,詳細討論其功能及開發(fā)、定制方法。
另外請注意:不同的IDS產品具有的特征功能也有所差異。例如:有些網(wǎng)絡IDS系統(tǒng)只允許很少地定制存在的特征數(shù)據(jù)或者編寫需要的特征數(shù)據(jù),另外一些則允許在很寬的范圍內定制或編寫特征數(shù)據(jù),甚至可以是任意一個特征;一些IDS系統(tǒng)只能檢查確定的報頭或負載數(shù)值,另外一些則可以獲取任何信息包的任何位置的數(shù)據(jù)。
二、特征有什么作用?
這似乎是一個答案很明顯的問題:特征是檢測數(shù)據(jù)包中的可疑內容是否真正“不可就要”的樣板,也就是“壞分子克隆”。IDS系統(tǒng)本身就帶有這個重要的部分,為什么還需要定制或編寫特征呢?是這樣:也許你經(jīng)常看到一些熟悉的通訊信息流在網(wǎng)絡上游蕩,由于IDS系統(tǒng)的特征數(shù)據(jù)庫過期或者這些通訊信息本身就不是攻擊或探測數(shù)據(jù),IDS系統(tǒng)并
沒有對它們進行關注,而這時你的好奇心升起,想在這些可疑數(shù)據(jù)再次經(jīng)由時發(fā)出報警,想捕捉它們、仔細看看它們到底來自何方、有何貴干,因此,唯一的辦法就是對現(xiàn)有特征數(shù)據(jù)庫進行一些定制配置或者編寫新的特征數(shù)據(jù)了。
特征的定制或編寫程度可粗可細,完全取決于實際需求。或者是只判斷是否發(fā)生了異常行為而不確定具體是什么攻擊名號,從而節(jié)省資源和時間;或者是判斷出具體的攻擊手段或漏洞利用方式,從而獲取更多的信息。我感覺,前者適用于領導同志,后者需要具體做事者使用,宏觀加微觀,敵人別想遛進來!
三、首席特征代表:報頭值(Header Values)
報頭值的結構比較簡單,而且可以很清楚地識別出異常報頭信息,因此,特征數(shù)據(jù)的首席候選人就是它。一個經(jīng)典的例子是:明顯違背RFC793中規(guī)定的TCP標準、設置了SYN和FIN標記的TCP數(shù)據(jù)包。這種數(shù)據(jù)包被許多入侵軟件采用,向防火墻、路由器以及IDS系統(tǒng)
發(fā)起攻擊。異常報頭值的來源有以下幾種:
因為大多數(shù)操作系統(tǒng)和應用軟件都是在假定RFC被嚴格遵守的情況下編寫的,沒有添加針對異常數(shù)據(jù)的錯誤處理程序,所以許多包含報頭值的漏洞利用都會故意違反RFC的標準定義,明目張膽地揭發(fā)被攻擊對象的偷工減料行為。
許多包含錯誤代碼的不完善軟件也會產生違反RFC定義的報頭值數(shù)據(jù)。
并非所有的操作系統(tǒng)和應用程序都能全面擁護RFC定義,至少會存在一個方面與RFC不協(xié)調。
隨著時間推移,執(zhí)行新功能的協(xié)議可能不被包含于現(xiàn)有RFC中。
由于以上幾種情況,嚴格基于RFC的IDS特征數(shù)據(jù)就有可能產生漏報或誤報效果。對此,RFC也隨著新出現(xiàn)的違反信息而不斷進行著更新,我們也有必要定期地回顧或更新存在的特征數(shù)據(jù)定義。
非法報頭值是特征數(shù)據(jù)的一個非常基礎的部分,合法但可疑的報頭值也同等重要。例如,如果存在到端口31337或27374的可疑連接,就可報警說可能有特洛伊木馬在活動;再
附加上其他更詳細地探測信息,就能夠進一步地判斷是真馬還是假馬。
四、確定特征“候選人”
為了更好地理解如何開發(fā)基于報頭值的特殊數(shù)據(jù),下面通過分析一個實例的整個過程進行詳細闡述。
Synscan是一個流行的用于掃描和探測系統(tǒng)的工具,由于它的代碼被用于創(chuàng)建蠕蟲Ramen的開始片斷而在2001年早期大出風頭。Synscan的執(zhí)行行為很具典型性,它發(fā)出的信息包具有多種可分辨的特性,包括:
不同的來源IP地址信息
TCP來源端口21,目標端口21
服務類型0
IP鑒定號碼39426(IP identification number)
設置SYN和FIN標志位
不同的序列號集合(sequence numbers set)
不同的確認號碼集合(acknowledgment numbers set)
TCP窗口尺寸1028
下面我們對以上這些數(shù)據(jù)進行篩選,看看哪個比較合適做特征數(shù)據(jù)。我們要尋找的是非法、異常或可疑數(shù)據(jù),大多數(shù)情況下,這都反映出攻擊者利用的漏洞或者他們使用的特殊技術。以下是特征數(shù)據(jù)的候選對象:
只具有SYN和FIN標志集的數(shù)據(jù)包,這是公認的惡意行為跡象。
沒有設置ACK標志,但卻具有不同確認號碼數(shù)值的數(shù)據(jù)包,而正常情況應該是0。
來源端口和目標端口都被設置為21的數(shù)據(jù)包,經(jīng)常與FTP服務器關聯(lián)。這種端口相同的情況一般被稱為“反身”(reflexive),除了個別時候如進行一些特別NetBIOS通訊外,
正常情況下不應該出現(xiàn)這種現(xiàn)象。“反身”端口本身并不違反TCP標準,但大多數(shù)情況下它們并非預期數(shù)值。例如在一個正常的FTP對話中,目標端口一般是21,而來源端口通常都高于1023。
TCP窗口尺寸為1028,IP鑒定號碼在所有數(shù)據(jù)包中為39426。根據(jù)IP RFC的定義,這2類數(shù)值應在數(shù)據(jù)包間有所不同,因此,如果持續(xù)不變,就表明可疑。
五、公布最佳特征“得主”
從以上4個候選對象中,我們可以單獨選出一項作為基于報頭的特征數(shù)據(jù),也可以選出多項組合作為特征數(shù)據(jù)。
選擇一項數(shù)據(jù)作為特征有很大的局限性。例如一個簡單的特征可以是只具有SYN和FIN標志的數(shù)據(jù)包,雖然這可以很好地提示我們可能有一個可疑的行為發(fā)生,但卻不能給出為什么會發(fā)生的更多信息。SYN和FIN通常聯(lián)合在一起攻擊防護墻和其他設備,只要有它們出現(xiàn),就預示著掃描正在發(fā)生、信息正在收集、攻擊將要開始。但僅僅這些而已,我們需要的是更多的細節(jié)資料。
選擇以上4項數(shù)據(jù)聯(lián)合作為特征也不現(xiàn)實,因為這顯得有些太特殊了。盡管能夠精確地提供行為信息,但是比僅僅使用一個數(shù)據(jù)作為特征而言,會顯得遠遠缺乏效率。實際上,特征定義永遠要在效率和精確度間取得折中。大多數(shù)情況下,簡單特征比復雜特征更傾向于誤報(false positives),因為前者很普遍;復雜特征比簡單特征更傾向于漏報(false negatives),因為前者太過全面,攻擊軟件的某個特征會隨著時間的推進而變化。
多也不行,少亦不可,完全應由實際情況決定。例如,我們想判斷攻擊可能采用的工具是什么,那么除了SYN和FIN標志以外,還需要什么其他屬性?“反身”端口雖然可疑,但是許多工具都使用到它,而且一些正常通訊也有此現(xiàn)象,因此不適宜選為特征。TCP窗口尺寸1028盡管有一點可疑,但也會自然的發(fā)生。IP鑒定號碼39426也一樣。沒有ACK標志的ACK數(shù)值很明顯是非法的,因此非常適于選為特征數(shù)據(jù)。當然,根據(jù)環(huán)境的不同,及時地調整或組合特征數(shù)據(jù),才是達到最優(yōu)效果的不二法門。
接下來我們真正創(chuàng)建一個特征,用于尋找并確定synscan發(fā)出的每個TCP信息包中的以下屬性:
只設置了SYN和FIN標志
IP鑒定號碼為39426
TCP窗口尺寸為1028
第一個項目太普遍,第二個和第三個項目聯(lián)合出現(xiàn)在同一數(shù)據(jù)包的情況不很多,因此,將這三個項目組合起來就可以定義一個詳細的特征了。再加上其他的synscan屬性不會顯著地提高特征的精確度,只能增加資源的耗費。到此,判別synscan軟件的特征如此就創(chuàng)建完畢了。
六、拓寬特征的“社會關系”,創(chuàng)建識別更多異常通訊的特征
以上創(chuàng)建的特征可以滿足對標準synscan軟件的探測了。但synscan可能存在多種“變臉”,而其它工具也可能是“變化多端”的,這樣,上述建立的特征必然不能將它們一一識別。這時就需要結合使用特殊特征和通用特征,才能創(chuàng)建一個更好、更全面的解決方案。如果一個入侵檢測特征既能揭示已知“壞蛋”,還能預測“潛在的罪犯”,那么它的魅力將大大提高。
首先看一個“變臉”synscan所發(fā)出的數(shù)據(jù)信息特征:
只設置了SYN標志,這純屬正常的TCP數(shù)據(jù)包“長相”。
TCP窗口尺寸總是40而不是1028。40是初始SYN信息包中一個罕見的小窗口尺寸,比正常的數(shù)值1028少見得多。


