安全事件共享構(gòu)想之OpenIOC
安全事件調(diào)查人員在安全事件應(yīng)急響應(yīng)過(guò)程中面臨的其中一個(gè)挑戰(zhàn)是,找一個(gè)有效的方法把所有調(diào)查過(guò)程中的信息組織起來(lái),這些信息包括攻擊者的活動(dòng)、所用的工具、惡意軟件、或者其他的攻擊指示器(indicators of compromise),簡(jiǎn)稱IOCs,而OpenIOC格式(OpenIOC is designed to fill a void that currently exists for organizations that want to share threat information both internally and externally in a machine-digestible format.)正好可以解決這個(gè)難題。OpenIOC可提供一個(gè)標(biāo)準(zhǔn)的格式和術(shù)語(yǔ)來(lái)描述調(diào)查事件中遇到的分析結(jié)果,以便在不同組織間進(jìn)行共享。
在開(kāi)始下面的介紹前,需要澄清的是IOCs不是一個(gè)簽名(signatures),所以不是要實(shí)現(xiàn)signature的功能。它設(shè)計(jì)出來(lái)是用于幫助你的調(diào)查,或者其他人的調(diào)查,這些人是你與之共享威脅情報(bào)的人。
下面列舉幾個(gè)最常見(jiàn)的IOC用例:
惡意軟件/工具型:
這是最常見(jiàn)的用例,本質(zhì)上講,這種類型的IOC可用于發(fā)現(xiàn)某些已知類型的惡意軟件或惡意工具,通常通過(guò)查找二進(jìn)制文件或其文件屬性,或其執(zhí)行時(shí)創(chuàng)建的特征,例如一些預(yù)讀文件、注冊(cè)表鍵值等。
方法論型:
不同于上一種可直接識(shí)別惡意軟件/工具,這種類型的IOC為了生成一些調(diào)查的線索,讓你可以發(fā)現(xiàn)你不一定知道的東西。例如,如果你想識(shí)別出任何沒(méi)有經(jīng)過(guò)簽名,而且從任何在“windows\system32”目錄外加載的DLL,那你就可以寫一個(gè)IOC去描述這個(gè)條件。另一個(gè)比較好的“方法論IOC”例子就是查找注冊(cè)表中所有“Run”鍵值內(nèi)容結(jié)尾為“.jpg”,這個(gè)IOC代表了一種不正常的情況,在安全調(diào)查中就指示出很可能是一個(gè)已被惡意利用了的證據(jù)。
“袋裝”型:
你可能已經(jīng)在使用這種IOC,很多組織會(huì)訂閱一些威脅情報(bào),這些訂閱的feed通常會(huì)投遞一些MD5或者ip地址列表,一“袋裝”的IOC可以代表這些入侵指示器(indicator)的一個(gè)集合。這種類型的IOC非黑即白,通常在調(diào)查事件中用于準(zhǔn)確匹配的話會(huì)比較好。
調(diào)查case型:
當(dāng)你在環(huán)境里面調(diào)查可疑的系統(tǒng)時(shí),識(shí)別出一些惡意的活動(dòng)證據(jù),例如關(guān)于安裝了后門、執(zhí)行了惡意工具、文件已被竊取等等的元數(shù)據(jù)時(shí),你就可以在一個(gè)IOC里面跟蹤到這些信息。這類IOC跟“袋裝”型IOC有點(diǎn)類似,然而調(diào)查型IOC只包括一個(gè)調(diào)查事件中的指示器,這種類型的IOC可以幫助你區(qū)分哪些系統(tǒng)需要優(yōu)先去調(diào)查。
下面在介紹一下IOC的組件:
一個(gè)IOC通常由三個(gè)部分組成,分別是IOC元數(shù)據(jù)部分、參考部分以及定義部分。下面使用Mandiant的IOC編輯器來(lái)了實(shí)際了解一下這些組成部分。
元數(shù)據(jù):
IOC元數(shù)據(jù)描述了以下信息,例如本IOC的名稱(Evil.exe[BACKDOOR])、作者(jsmith@domain.tld)以及簡(jiǎn)述
參考:
在IOC的參考里面,可以有調(diào)查事件的名稱或者case編號(hào),IOC成熟度的評(píng)論和信息(例如Alpha, Beta,Public Release等等)這些信息有助于你理解這個(gè)IOC適合放到你的威脅情報(bào)庫(kù)中的什么位置。這個(gè)參考字段通常的用法是用于把IOC關(guān)聯(lián)到特定的威脅組織(好比如APT1)。當(dāng)于第三方共享IOC信息時(shí),刪除特定的參考字段的做法并不常見(jiàn)。
定義:
這是IOC的核心內(nèi)容了,包括了調(diào)查人員決定編寫IOC的關(guān)鍵內(nèi)容。例如,可能包括一個(gè)文件的MD5值,注冊(cè)表路徑或一些在進(jìn)程內(nèi)存中發(fā)現(xiàn)的線索,所謂的指示器(indicator)會(huì)列在這個(gè)定義字段里,或者組合到表達(dá)式里面,這些表達(dá)式通常由兩個(gè)術(shù)語(yǔ)和一些布爾型邏輯符組成。OpenIOC的其中一個(gè)特性令它特別有用,就是它可簡(jiǎn)單的組合一些and,or的邏輯條件判斷符。
下面舉例看看這些邏輯判斷條件如何運(yùn)用。
1.服務(wù)名為"MS 1atent time services" or
2.任何含有DLL調(diào)用名為evil.exe的服務(wù) or
3.文件名是“bad.exe” AND 其文件的大小在4096-10240-bytes之間。
AND代表表達(dá)式兩邊都必須為真 OR代表表達(dá)式兩邊只需要一邊為真
理解清楚這個(gè)AND OR的關(guān)系就可以明白,用上面的例子來(lái)匹配IOC時(shí),并不是一個(gè)if-else的聲明,也不是都必須存在。在安全事件調(diào)查中,如果發(fā)現(xiàn)一個(gè)名為“MS 1atent time services”的服務(wù),那這個(gè)IOC就匹配上了,而不管IOC所描述的惡意文件是否在這臺(tái)主機(jī)上出現(xiàn)。