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