訊
享
務(wù)
|
本文是iOA-EDR技術(shù)系列主打文章的第二篇 作者:騰訊安全專家工程師 聶子瀟 一、星星之火可以燎原 2024年7月19日中午,一臺臺Windows終端悄然染成藍(lán)色。隨即,如“藍(lán)色焰海”一般的IT故障在各個(gè)國家蔓延開來,迅速席卷全球。無數(shù)航班晚點(diǎn),銀行、醫(yī)療、金融等行業(yè)的IT系統(tǒng)相繼出現(xiàn)異常,受到影響的用戶們紛紛在X、臉書、微博等社交媒體上報(bào)告求助。 (一位小紅書博主在旅途中遇到航司系統(tǒng)宕機(jī),被迫領(lǐng)取了手寫登機(jī)牌) 起初人們迅速向微軟發(fā)出問詢,但很快就有了進(jìn)一步進(jìn)展:事件并非出自系統(tǒng)本身的故障,而是由部分企業(yè)安裝的一款安全軟件功能故障引發(fā)。為啥日常電腦上使用的一款軟件,竟然有如此的能量和威力去造成這場引起全球關(guān)注的IT故障呢?讓我們從安全軟件的底層工作原理出發(fā),挖掘這次事件背后的“主角”,搞清楚它為什么會有如此廣泛的破壞力,以及背后的癥結(jié)到底是什么。 二、貓鼠游戲誕生記 1971 年,研究員鮑勃·托馬斯 (Bob Thomas) 開發(fā)出了第一個(gè)病毒,稱為 Creeper。該病毒通過 ARPANET(第一個(gè)計(jì)算機(jī)網(wǎng)絡(luò))傳播,感染設(shè)備后會顯示一條消息:“我是 Creeper,有本事來抓我呀”。隨后,電子郵件的發(fā)明者雷·湯姆林森 (Ray Tomlinson) 開發(fā)了一個(gè)名為 Reaper 的程序,試圖追蹤并消滅 Creeper,這個(gè)程序則被視為殺毒軟件的起源。 從這個(gè)殺軟誕生的故事中不難看出,殺毒軟件的工作模式本質(zhì)是一場貓鼠游戲,惡意程序就好比要偷吃的老鼠,而殺毒軟件就是看守的貓,雙方你追我趕,老鼠為了逃避貓的追捕,會不斷演變自身的偽裝和隱匿手段,而貓則需要不斷提升自己的火眼金睛,透過層層偽裝,抓住躲藏的老鼠。 雙方從定位上來說是敵人,從進(jìn)化角度來說卻亦師亦友,從對抗中相互促進(jìn)學(xué)習(xí)成長,仿佛宿命中的相互糾纏的螺旋不斷前進(jìn)。 三、安全軟件的難言之隱 1、來自系統(tǒng)內(nèi)核層的監(jiān)視之眼 伴隨著攻守雙方的不斷進(jìn)化,安全軟件發(fā)展到今天,早已與操作系統(tǒng)緊密結(jié)合。只有掌握操作系統(tǒng)最高權(quán)限的尚方寶劍,安全軟件才能與手段層出不窮的惡意程序斗爭。操作系統(tǒng)一般會對運(yùn)行權(quán)限做層次劃分:內(nèi)核代碼一般工作在內(nèi)核層(Ring0),而我們常說的應(yīng)用程序工作在應(yīng)用層(Ring3)。內(nèi)核層享有最高的執(zhí)行權(quán)限,能夠訪問操作系統(tǒng)上所有的設(shè)備和信息,同時(shí)一旦內(nèi)核層發(fā)生異常崩潰,整個(gè)系統(tǒng)就無法繼續(xù)運(yùn)轉(zhuǎn),進(jìn)而會出現(xiàn)經(jīng)典的藍(lán)屏提示。而應(yīng)用層則只能訪問應(yīng)用本身的一些常規(guī)權(quán)限資源,即使出現(xiàn)崩潰也只會影響自身軟件進(jìn)程,對操作系統(tǒng)不會產(chǎn)生影響。 現(xiàn)代的安全軟件往往都會在內(nèi)核層安裝自己的安全模塊(也有部分低級別的安全軟件沒有內(nèi)核模塊),從而基于內(nèi)核層的最高權(quán)限,實(shí)現(xiàn)“上帝之眼”的效果,監(jiān)視整個(gè)操作系統(tǒng)上每時(shí)每刻發(fā)生的不同類型的事件。安全軟件24小時(shí)不間斷地分析和比對這些事件,進(jìn)而過濾出潛在威脅,將事件及時(shí)的阻斷和扼殺,通過審核模式的工作原理,來實(shí)現(xiàn)保衛(wèi)操作系統(tǒng)的安全。 (操作系統(tǒng)不同層次的運(yùn)行權(quán)限) 2、安全軟件的終端架構(gòu) 一個(gè)完整安全軟件的終端架構(gòu),從核心功能角度來劃分,大部分都具備以下一些安全模塊:首先,工作在系統(tǒng)最高權(quán)限層的內(nèi)核模塊,一般負(fù)責(zé)與系統(tǒng)內(nèi)核接口打交道,獲取系統(tǒng)第一手的實(shí)時(shí)日志信息,類似于情報(bào)收集部門的職能。 同時(shí),由于該模塊在內(nèi)核層有最高權(quán)限,可以在系統(tǒng)執(zhí)行層面第一時(shí)間阻斷惡意攻擊,因而也會承擔(dān)一部分阻斷惡意攻擊的職能,實(shí)現(xiàn)惡意攻擊的事前阻斷能力。 其次,應(yīng)用層的策略審核模塊,類似安全指揮部門,負(fù)責(zé)審核內(nèi)核模塊采集到的實(shí)時(shí)日志,將日志上報(bào)到云端后臺,同時(shí)對于一些審核有威脅的日志,按策略配置進(jìn)行響應(yīng)處置。 (內(nèi)核模塊與策略審核模塊的職能劃分) 3、如履薄冰的系統(tǒng)審核員 從上述安全軟件的終端架構(gòu)中,不難看出,安全軟件已經(jīng)演變?yōu)椴僮飨到y(tǒng)上的一切行為審核員,擁有行為的最終解釋權(quán)。 但所謂權(quán)力越大責(zé)任也就越大,安全軟件擁有操作系統(tǒng)的核心審核權(quán),一旦權(quán)力使用不當(dāng)就會帶來難以預(yù)期的后果。例如審核錯(cuò)誤阻止了合法的行為,可能導(dǎo)致系統(tǒng)軟件異常失;審核速度過慢,可能導(dǎo)致系統(tǒng)和軟件運(yùn)行卡頓;審核過程中錯(cuò)誤修改或影響了合法行為的屬性,也可能導(dǎo)致系統(tǒng)異;蜍浖e(cuò)誤。在此之上,即使審核員的操作完全合規(guī)正確,但動(dòng)作本身如果出現(xiàn)編程錯(cuò)誤,還是會造成系統(tǒng)藍(lán)屏的嚴(yán)重風(fēng)險(xiǎn)。如果故障發(fā)生在內(nèi)核啟動(dòng)階段,還會造成重啟后繼續(xù)藍(lán)屏,也就是我們常說的無限循環(huán)藍(lán)屏的更嚴(yán)重問題。 可以說,安全軟件借助系統(tǒng)的最高權(quán)限來防范攻擊,但也因?yàn)樽罡邫?quán)限的便利性帶來了重大的責(zé)任風(fēng)險(xiǎn)。安全軟件扮演的系統(tǒng)審核員,必須對每一步都要做到戰(zhàn)戰(zhàn)兢兢,如臨深淵,如履薄冰。 4、難以平衡的攻守矛盾 正因?yàn)檫@份如履薄冰的責(zé)任,安全軟件與惡意程序的對抗才會如此周而復(fù)始持續(xù)這么多年。安全軟件需要恪守不影響系統(tǒng)穩(wěn)定性的底線,導(dǎo)致在與惡意程序的對抗中畏首畏尾。這也是安全軟件無法創(chuàng)造出一個(gè)大殺器來徹底結(jié)束這場攻防對抗“貓鼠游戲”的核心原因。 其背后的本質(zhì),是安全軟件既要保證系統(tǒng)上的合法行為不受到影響,又要避免不法威脅行為潛藏在合法行為中偷偷潛入,這是一場解不開的天然矛盾。任何對偽裝者的檢查和判定,都必然導(dǎo)致對合法行為進(jìn)行相同的盤問,從而產(chǎn)生產(chǎn)生額外的執(zhí)行開銷。要求安全軟件既做到鐵面無私(對待惡意攻擊),又做到柔情似水(對待合法行為),恰恰是安全軟件當(dāng)前面臨最大的難點(diǎn)和矛盾,也是安全軟件安身立命的根本。 四、騰訊iOA-EDR實(shí)踐之路 1、防守之路上三岔口發(fā)展到今天,安全類產(chǎn)品百家爭鳴,爭奇斗艷,但萬變不離其宗,延續(xù)上面的攻守矛盾觀點(diǎn),安全軟件整體的發(fā)展猶如一個(gè)三岔口。 第一條路是以攻為守,以極客精神的思路主導(dǎo),崇尚以對抗惡意程序的本職為第一目標(biāo),整體架構(gòu)優(yōu)先圍繞對抗惡意程序來設(shè)計(jì)。這種架構(gòu)在海外的安全產(chǎn)品中較為常見,將安全軟件的功能模塊更多集成到系統(tǒng)的內(nèi)核層,優(yōu)勢在于能夠在第一現(xiàn)場快速響應(yīng)和對抗惡意攻擊,并且整體對抗更加集中和高效、簡潔。 第二條路是全面防守,穩(wěn)字當(dāng)頭的思路主導(dǎo),整體架構(gòu)完全不進(jìn)入內(nèi)核層,只使用系統(tǒng)本身的安全接口來與惡意程序?qū)。這類架構(gòu)一般出現(xiàn)在輔助采集類的安全產(chǎn)品上,架構(gòu)的優(yōu)勢很明顯,極大降低了對系統(tǒng)穩(wěn)定性和兼容性的影響,但隨之而來的問題是在與惡意程序的對抗上捉襟見肘。 第三條路,是選擇一種攻守兼顧的架構(gòu),既要保證擁有內(nèi)核層的核心能力,又盡可能降低對核心層的依賴,讓內(nèi)核層功能純凈簡單,把大部分功能邏輯放在應(yīng)用層模塊上。這種架構(gòu)的優(yōu)勢則比較平衡,既保證安全能力能夠?qū)箰阂獬绦,又一定程度上兼顧了系統(tǒng)的穩(wěn)定性和兼容性。如何在三岔口進(jìn)行權(quán)衡,是這個(gè)架構(gòu)最為混沌和復(fù)雜的地方。 (三種不同的防御策略) 2、千里之行始于“踩坑” 騰訊EDR以騰訊二十多年的深研發(fā)展為基石,經(jīng)歷過C端海量用戶,也在B端市場摸爬滾打,踩坑和挨打的經(jīng)驗(yàn)難能可貴。一個(gè)成熟的產(chǎn)品背后往往是無數(shù)個(gè)填坑的日日夜夜,系統(tǒng)藍(lán)屏、兼容性故障、電腦卡頓、軟件異常、搶修大大小小的事故,這些都是安全軟件的必修課。我們意識到,安全軟件的第一道坎不是安全能力,而是保障用戶的使用體驗(yàn)和避免故障。我們不斷累積兼容性處理方案庫,是因?yàn)橥⑿徒鉀Q方案雖然可以極大降低故障的影響范圍,但依然需要大量長尾的針對性解決方案,只能靠時(shí)間和量級的沉淀來收獲最終的穩(wěn)定。 3、最小化原則架構(gòu) 安全軟件的穩(wěn)定性保障一直是我們的重中之重。因此,騰訊安全EDR沒有采用海外產(chǎn)品偏好的強(qiáng)內(nèi)核功能架構(gòu),而是采取攻守兼顧的架構(gòu)原則。整體架構(gòu)的設(shè)計(jì)原則,是在滿足惡意程序?qū)沟那疤嵯,最小化使用系統(tǒng)底層權(quán)限,最大化保證系統(tǒng)的穩(wěn)定性和兼容性。 整體架構(gòu)依舊分內(nèi)核和應(yīng)用層兩層,在內(nèi)核層中的模塊以最小化原則來設(shè)計(jì),只做系統(tǒng)底層接口能力的擴(kuò)展封裝,不做邏輯和策略的執(zhí)行。整個(gè)產(chǎn)品功能的策略邏輯的實(shí)現(xiàn),則都放在應(yīng)用層來指揮,內(nèi)核層完全融合為系統(tǒng)底層的接口擴(kuò)展,不承擔(dān)業(yè)務(wù)的策略邏輯執(zhí)行。這樣的架構(gòu)在內(nèi)核層面極致簡潔,不需要因?yàn)楣δ艿?jīng)常變更,更容易打磨穩(wěn)定后持續(xù)提供能力,能夠最大限度保障穩(wěn)定性的要求。而與安全對抗的變更部分都在應(yīng)用層的策略模塊,這樣產(chǎn)生故障的時(shí)候,不容易出現(xiàn)藍(lán)屏或者系統(tǒng)層面的故障,以及和軟件產(chǎn)生兼容性問題。 內(nèi)核模塊層面也盡可能極致降低權(quán)限依賴,采取純異步采集模式(旁路模式),接受到系統(tǒng)通知的第一時(shí)間就發(fā)送旁路日志消息到工作隊(duì)列中,后續(xù)功能流程即可避免對系統(tǒng)和軟件產(chǎn)生影響。該架構(gòu)準(zhǔn)則同樣也應(yīng)用到了應(yīng)用層的進(jìn)程注入采集功能上。 另外一種影響安全軟件兼容性的功能是進(jìn)程注入類的采集功能。該功能往往應(yīng)對一些高級復(fù)雜威脅,需要采集系統(tǒng)的API調(diào)用序列來識別惡意風(fēng)險(xiǎn)。騰訊EDR在進(jìn)程注入采集上也是執(zhí)行的最小化原則,首先范圍層面最小化,只注入可疑的入侵進(jìn)程,不影響系統(tǒng)和常用軟件進(jìn)程。第二采集層面純異步化,采集數(shù)據(jù)后第一時(shí)間旁路,盡可能降低對原進(jìn)程的影響。 (騰訊安全EDR和在系統(tǒng)中的設(shè)計(jì)原則) 4、更進(jìn)一步智能采集 采用最小化安全架構(gòu),騰訊安全EDR從根本上降低了對系統(tǒng)穩(wěn)定性和兼容性的影響。但架構(gòu)只是影響穩(wěn)定性和兼容性的一環(huán),如何采集和執(zhí)行策略邏輯也會對結(jié)果產(chǎn)生關(guān)鍵影響。邏輯的錯(cuò)誤或者不適當(dāng)可能造成CPU持續(xù)高企、使用不流暢等系統(tǒng)層問題。 因?yàn)榻K端采集會被動(dòng)采集系統(tǒng)上所有的行為,一旦系統(tǒng)上某些服務(wù)軟件在進(jìn)行極其頻繁的操作,就有可能導(dǎo)致安全軟件的采集模塊突然高頻工作,繼而誘發(fā)一些性能層面的卡頓。這時(shí)需要采集的策略模塊足夠智能和自適應(yīng)去規(guī)避這些場景的發(fā)生。 騰訊安全EDR在采集策略層面,使用的是基于行為可疑度過濾方案,即在終端架構(gòu)中內(nèi)置了騰訊自研的行為鏈關(guān)聯(lián)引擎,能夠?qū)⒔K端上發(fā)生的多個(gè)同源行為串成一個(gè)執(zhí)行鏈。通過對完整的同源執(zhí)行鏈進(jìn)行可疑度判定,依據(jù)執(zhí)行鏈的來源渠道、文件的云鑒定信息、文件的簽名信息,以及是否關(guān)聯(lián)腳本、壓縮包信息等等加強(qiáng)判斷的準(zhǔn)確度。 舉個(gè)例子,兩個(gè)行為鏈,一條是從瀏覽器下載壓縮包,解壓釋放文件,進(jìn)而啟動(dòng)腳本進(jìn)行網(wǎng)絡(luò)訪問,那么該鏈上的所有文件都會被追蹤標(biāo)記來增強(qiáng)采集策略,而對于系統(tǒng)進(jìn)程或常用軟件進(jìn)程釋放和執(zhí)行的一些行為鏈,則減弱采集策略。這樣可以極大降低對合法系統(tǒng)和軟件的采集力度,降低CPU和性能開銷。而當(dāng)有真正可疑威脅進(jìn)入的時(shí)候,安全軟件會開足馬力重點(diǎn)監(jiān)控采集數(shù)據(jù),猶如在終端擁有一個(gè)經(jīng)驗(yàn)老道的安全專家做指揮,做到指哪打哪,有的放矢的智能安全架構(gòu)。 (騰訊安全EDR的智能采集路徑與決策) 五、安全行業(yè)警鐘長鳴 水能載舟亦能覆舟,這場影響全球的IT故障,也給安全行業(yè)敲響了警鐘:安全軟件的基石是與惡意程序?qū)。?dāng)安全廠商肩負(fù)著安全這一至高責(zé)任的時(shí)候,每一位用戶的使用體驗(yàn)才是基石下的土壤。如果盲目追求技術(shù)的極致而忽略了體驗(yàn),那么下一次IT事故的倒計(jì)時(shí)就會再度開始。 |
|
原標(biāo)題: / 編輯: |
|