0
雷鋒網(wǎng)宅客頻道按:最近,你的女朋友對(duì)你愛答不理,不僅微信回復(fù)的越來(lái)越慢,就連你沉迷于“農(nóng)藥”游戲也不再批評(píng)。于是,你開始慌了,難道她也迷上了“農(nóng)藥”?還是說(shuō)她正在給你織一頂帽子,綠色的?
如何從女朋友的反常行為中找到蛛絲馬跡,然后抽絲剝繭,找到女朋友變冷淡的元兇?這,是一個(gè)難題。
其實(shí),企業(yè)也面對(duì)相似的問(wèn)題:如何從海量的告警之中發(fā)現(xiàn)真正的威脅,使得監(jiān)控人員能夠及時(shí)處理,一直是一個(gè)難題。本文作者從公司內(nèi)部的實(shí)際案例出發(fā),詳細(xì)講述了威脅情報(bào)在甲方安全運(yùn)維中的應(yīng)用。
本文作者:證通白帽子
很多企業(yè)使用 SIEM(安全信息和事件管理) 來(lái)收集日志數(shù)據(jù),并將安全事件與多類安全設(shè)備(入侵檢測(cè)設(shè)備、Web應(yīng)用防火墻等)日志相關(guān)聯(lián),用來(lái)指導(dǎo)安全人員進(jìn)行風(fēng)險(xiǎn)處置。然而 SIEM 也存在局限,監(jiān)控人員往往被淹沒(méi)在海量的告警之中無(wú)從下手,原因之一就是對(duì)于威脅的告警沒(méi)有處理的依據(jù),例如缺乏經(jīng)驗(yàn)的監(jiān)控人員很難判定:某一條安全事件告警是掃描還是針對(duì)性攻擊引起的(通常后者需要更多關(guān)注)。而威脅情報(bào)不僅可以為監(jiān)控人員提供處理依據(jù),也可以為安全人員在進(jìn)行日志分析和攻擊溯源時(shí)提供有力幫助。
本文將基于 Splunk(一款機(jī)器數(shù)據(jù)引擎),介紹威脅情報(bào)在甲方安全運(yùn)維中的應(yīng)用。
根據(jù) Gartner 的定義,威脅情報(bào)是指基于一定知識(shí)的證據(jù),已經(jīng)存在或正在形成的潛在威脅,比如,上下文、機(jī)制、指標(biāo)、意義以及可實(shí)施的建議,利用這些,可以幫助當(dāng)事人形成應(yīng)對(duì)這些危險(xiǎn)的決策。
針對(duì)攻擊者的威脅情報(bào)應(yīng)該包含以下要點(diǎn):
攻擊者身份:威脅情報(bào)需要能夠幫助企業(yè)將攻擊、惡意活動(dòng)最終溯源至相應(yīng)組織(網(wǎng)絡(luò)犯罪團(tuán)體、黑客、政府/國(guó)家機(jī)構(gòu)等)。
攻擊的原因:了解對(duì)方動(dòng)機(jī),以及他們會(huì)在攻擊中投入多少精力(APT或僅是投機(jī)型攻擊),針對(duì)性有多強(qiáng)等。
攻擊的目的:了解攻擊者的目的,對(duì)于企業(yè)和組織基于資產(chǎn)重要性調(diào)整響應(yīng)優(yōu)先級(jí)也是有意義的。
具體做法:包含了攻擊者所用的工具、基礎(chǔ)設(shè)施等。
攻擊者的位置 :結(jié)合對(duì)方所在國(guó)家,以及其地緣政治狀況,能夠幫助企業(yè)和組織更好地理解對(duì)方情況。
如何組織情報(bào):包括 IOC 一類的技術(shù)指標(biāo)(比如IP地址、哈希值等)提供的信息可用來(lái)更準(zhǔn)確地檢測(cè)和標(biāo)記惡意行為。
如何緩解攻擊:企業(yè)可用以保護(hù)自身的信息。
在我們公司,Splunk 主要被用來(lái)收集各類安全設(shè)備、操作系統(tǒng)、應(yīng)用系統(tǒng)日志,從而滿足安全監(jiān)控、安全告警、數(shù)據(jù)分析的需求。
安全設(shè)備的日志通過(guò) Syslog 發(fā)送,其余存放于操作系統(tǒng)文件系統(tǒng)中的日志通過(guò)在客戶端操作系統(tǒng)安裝 Splunk Forwarder 收集。
通過(guò)日志字段提取,我們利用 Splunk 實(shí)現(xiàn)了基本的報(bào)表和告警。然而正如前文提到的,我們很快就被告警淹沒(méi),無(wú)論如何調(diào)整告警閾值都無(wú)法令人滿意,于是開始尋找解決方案,通過(guò)一系列的選型比較,我們最終決定引入來(lái)自微步在線(ThreatBook)的第三方安全情報(bào)數(shù)據(jù),以 API 的形式與 Splunk 整合。
需要注意的是——威脅情報(bào)數(shù)據(jù)的用量通常是有限制的(如按月計(jì)量),因此我們部署了前置系統(tǒng)作為本地威脅情報(bào)庫(kù),用以緩存查詢結(jié)果,同時(shí),我們還順帶實(shí)現(xiàn)了專供內(nèi)部使用的 Web 交互查詢界面,后來(lái)又順路實(shí)現(xiàn)了威脅歷史信息的記錄:所有產(chǎn)生過(guò)告警的威脅都會(huì)被記錄,并且可被關(guān)聯(lián)搜索。如下圖所示:
威脅情報(bào)分析界面圖,威脅情報(bào)數(shù)據(jù)來(lái)自微步在線ThreatBook API
隨著威脅情報(bào)數(shù)據(jù)的應(yīng)用,我們逐漸信任了數(shù)據(jù)的準(zhǔn)確度,并開始研究威脅 IP 自動(dòng)阻斷方案。由于在網(wǎng)絡(luò)建設(shè)時(shí)并沒(méi)有這個(gè)需求,因此我們的首要目標(biāo)是:在網(wǎng)絡(luò)中尋找是否有串聯(lián)設(shè)備支持通過(guò)調(diào)用 API 的方式來(lái)達(dá)到 IP 阻斷的目的。最終,我們?cè)谝慌_(tái)抗 DDoS 設(shè)備中發(fā)現(xiàn)了這個(gè)功能,并按照手冊(cè)要求的數(shù)據(jù)格式實(shí)現(xiàn)了接口調(diào)用。
系統(tǒng)架構(gòu)示意圖如下:
日志字段的提取是最基礎(chǔ),也是最重要的步驟,后續(xù)所有的工作都是基于正確的日志字段提取之上。
Splunk 提供了傻瓜式的字段提取功能,只要展開任意事件,點(diǎn)擊“事件操作”,選擇“提取字段”即可進(jìn)行提取,提取完成后可自動(dòng)生成正則表達(dá)式。
對(duì)于一些比較復(fù)雜的日志格式,Splunk 的自動(dòng)化提取可能就力不從心了(又或許你對(duì)自動(dòng)生成的正則表達(dá)式嗤之以鼻),我們可以手寫正則表達(dá)式,并在“設(shè)置-字段-字段提取”中保存。
Splunk 的字段提取
對(duì)于臨時(shí)使用的需求,也可以在搜索中使用 rex 命令對(duì)事件應(yīng)用正則表達(dá)式:
rex field=some_field "(?<capture_name>.*)"
對(duì)于一些以鍵值對(duì)形式輸出的日志,可通過(guò) extract 命令進(jìn)行提取,十分方便:
extract kvdelim="=" pairdelim=";"
威脅情報(bào)庫(kù)的查詢使用了 Splunk 的 lookup 命令,通過(guò)給 lookup 命令傳遞一個(gè)查詢值從而獲得對(duì)應(yīng)的查詢結(jié)果。
lookup 的典型使用場(chǎng)景之一是根據(jù)日志中的 IP 地址來(lái)查找對(duì)應(yīng)的資產(chǎn):由于日志中不包含資產(chǎn)信息,而我們又希望通過(guò) IP 地址快速定位到相關(guān)資產(chǎn)信息,此時(shí)就可以建立一張資產(chǎn)表,上傳至 Splunk,在“設(shè)置-查找”完成配置后,即可通過(guò) lookup 命令進(jìn)行搜索。
lookup asset_table ip_addr AS dst_ip OUTPUT asset_info
而在使用 lookup 對(duì)威脅情報(bào)進(jìn)行查詢時(shí),則需要用到“外部查找”功能,原理類似于動(dòng)態(tài)生成一個(gè)查找表文件。外部查找功能需要調(diào)用命令和參數(shù),Splunk 的默認(rèn)安裝中提供了一個(gè)名為“dnslookup”的外部查找,可以用來(lái)參考實(shí)現(xiàn)自己的外部查找。
威脅情報(bào)查詢外部查找腳本的部分實(shí)現(xiàn)代碼如下:
威脅情報(bào)查詢語(yǔ)句如下:
stats count by client_ip server_ip | lookup iplookup ip as client_ip OUTPUT info as _TI | spath input=_TI
此處首先使用了 stats 命令統(tǒng)計(jì)事件數(shù)據(jù),隨后使用 lookup 命令對(duì)統(tǒng)計(jì)完成的數(shù)據(jù)進(jìn)行威脅情報(bào)查詢,這樣的處理方式可避免重復(fù)的查詢,降低系統(tǒng)和網(wǎng)絡(luò)開銷。最后,將 lookup 命令查詢返回的 JSON 格式數(shù)據(jù)使用 spath 命令解析。
對(duì)于 IP 的威脅查詢接口,一個(gè)惡意的 IP 通過(guò) API 查詢返回的示例數(shù)據(jù)如下:
{"response_code":0,"hit":{"expired":false,"detected":true,"info":["zombie","idc","compromised","spam"]},"ip":{"carrier":"1and1.com","ip":"82.165.37.26","location":{"country":"德國(guó)","province":"德國(guó)","lng":"10.454150","city":"","lat":"51.164181"}}}
字段說(shuō)明如下:
有了字段信息,我們需要把 JSON 字符串解析后再進(jìn)行下一步判斷。Splunk 提供了 spath 命令,可以將此前 lookup 返回的內(nèi)容作為 spath 的輸入,并最終輸出解析完成的數(shù)據(jù)。如下圖所示:
防火墻的 API 調(diào)用和觸發(fā)通過(guò) Splunk 的“搜索、報(bào)表和告警”實(shí)現(xiàn)。通過(guò)在 Splunk 中創(chuàng)建定時(shí)任務(wù),對(duì)一定時(shí)間窗口內(nèi)的日志進(jìn)行分析,結(jié)合威脅情報(bào)數(shù)據(jù)返回判斷結(jié)果,以此為依據(jù)決定是否觸發(fā)阻斷腳本。
所有的技術(shù)問(wèn)題都已解決,后續(xù)的工作只剩下兩塊:利用威脅情報(bào)數(shù)據(jù)豐富現(xiàn)有查詢結(jié)果,以及使用新的思路實(shí)現(xiàn)原本無(wú)法實(shí)現(xiàn)的效果。
我們?yōu)榇饲八信c來(lái)源有關(guān)的告警都添加了威脅情報(bào)信息,監(jiān)控、安全人員在第一時(shí)間就可以大致評(píng)估事件的嚴(yán)重性。
有了 IP 地址威脅情報(bào)數(shù)據(jù)之后,我們可以用這些數(shù)據(jù)幫助評(píng)估當(dāng)前面臨的安全威脅的嚴(yán)重程度,并以可視化的方式呈現(xiàn)出來(lái)。實(shí)現(xiàn)方式為:以一定維度(如時(shí)間、IP 地址、類型等)聚合安全事件,對(duì)聚合的事件做基于 IP 地址的威脅情報(bào)查詢,隨后套用特定的模型并呈現(xiàn)。
威脅情報(bào)也為威脅程度的判斷提供了依據(jù),通過(guò)定時(shí)任務(wù),當(dāng)發(fā)現(xiàn)高危威脅且威脅來(lái)源 IP 地址符合預(yù)定義的條件時(shí),即觸發(fā)腳本調(diào)用防火墻 API,實(shí)現(xiàn)黑名單 IP 地址的網(wǎng)絡(luò)層自動(dòng)阻斷。
我們也使用了威脅情報(bào)提供的域名威脅情報(bào)查詢功能,在 DNS 服務(wù)器中開啟了 DNS 調(diào)試日志并轉(zhuǎn)發(fā)至 Splunk,對(duì)匹配的惡意域名解析請(qǐng)求可及時(shí)告警。同時(shí)計(jì)劃實(shí)現(xiàn)將惡意域名自動(dòng)解析到本地的功能,以最大限度避免威脅的擴(kuò)散。
目前我們?cè)谕{情報(bào)的應(yīng)用還處于摸索階段,只發(fā)揮了其中一小部分的能力。從威脅情報(bào)信息的分類角度,威脅情報(bào)除了 IP 地址情報(bào)、DNS 情報(bào),還可提供文件哈希情報(bào)等信息;從威脅情報(bào)的要素來(lái)說(shuō),我們當(dāng)前只使用了攻擊者身份、攻擊者位置等基本信息。相信如果更全面地利用這些信息,可以為安全從業(yè)者們提供全新的安全視角、更廣的安全視野,甚至?xí)?duì)工作方式、工具產(chǎn)生革命性的提升。
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。