0
雷鋒網(wǎng)按:
周軍,前瑞星內(nèi)核團(tuán)隊(duì)負(fù)責(zé)人,火絨安全聯(lián)合創(chuàng)始人。
這位“技術(shù)宅”的最大熱情就是反病毒技術(shù)的研究。當(dāng)殺毒軟件之間進(jìn)行暗黑攻伐的時(shí)候,他在研究病毒樣本;當(dāng)殺毒軟件紛紛用免費(fèi)方式流量變現(xiàn)時(shí),他在研究反病毒技術(shù);當(dāng)殺毒軟件紛紛成為“入室管家”時(shí),他仍舊在專心致志地打磨殺毒引擎。
所謂天道酬癡,大抵正是如此?!岸編煛敝苘姾突锇閭冇脭?shù)年時(shí)間,飼養(yǎng)了一只“殺毒神獸”,在這只神獸眼中,所有的病毒都無處遁形。
【周軍】
口述/周軍 | 文/史中
我是一個(gè)以殺毒為職業(yè)的人。
殺毒這件事,從來不像看上去那么簡單。這就像數(shù)學(xué),一切都源于簡單的加減乘除,最終發(fā)展出的數(shù)學(xué)理論卻浩瀚無比。也更像醫(yī)學(xué),庸醫(yī)也許大動(dòng)干戈,神醫(yī)可能輕描淡寫。病人,從某種程度上來說都無法判斷醫(yī)生醫(yī)術(shù)的好壞。
自從電腦占據(jù)普通人的客廳或書房,病毒和殺毒軟件就先后出現(xiàn)了。上個(gè)世紀(jì)末,殺毒軟件甚至成為像我一樣的年輕人認(rèn)識 PC 的一個(gè)入口。
這些殺毒軟件背后的人,大概被統(tǒng)稱為安全研究員。他們的工作說來也簡單:制造一套系統(tǒng),讓它能夠識別盡可能多的病毒。
這套系統(tǒng)就是殺毒引擎。
如果用警察來做比喻的話,警察抓壞人的方法有兩種:
1、通過通緝犯的照片和行人一一比對,找出在逃的壞人。這種方法有個(gè)弊端,那就是如果壞人喬裝改扮,甚至去韓國整個(gè)容,去泰國變個(gè)性,警察就有點(diǎn)懵X。
2、通過觀察人們的行為來判斷——壞人總要犯案的。老刑警站在街角,通過神態(tài)和動(dòng)作就能八九不離十地判斷出人群中哪個(gè)是伺機(jī)下手的竊賊。只需要在他下手之時(shí),把冰涼的手銬磕到他的手腕上。
殺毒引擎也是同樣的道理,“根據(jù)已知的信息找到未知的所在”。只不過對我來說,我更傾心于剛才所說的第二種方法,用我們的行話來講,叫做“特征+行為分析”。我的理想,就是不斷完善我們飼養(yǎng)的這頭“殺毒神獸”。
我生在北京。第一次接觸病毒,是在高中的時(shí)候。和很多人一樣,大名鼎鼎的 CIH 病毒闖進(jìn)了我的視野。這是我第一次聽說病毒這個(gè)詞兒。一個(gè)小小的程序竟然可以搞垮一臺電腦,其中肯定會有很特殊又很神奇的原理。當(dāng)時(shí)我想,如果能夠做病毒研究,這事還是挺牛X的。
所以,我報(bào)考了北京工業(yè)大學(xué)的計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)。
但是,在技術(shù)研究這條路上,第一個(gè)坑卻是我的老師。匯編課的老師在開學(xué)第一天就對我們說:“學(xué)這個(gè)東西沒用。老實(shí)說不是學(xué)校非要開,我不愛講?!甭牭竭@句話,我當(dāng)時(shí)就走了。既然老師都是這種態(tài)度,那我何必浪費(fèi)時(shí)間呢?
我并不相信這門課沒有用。雖然在大學(xué),但其實(shí)對于底層語言和編程基礎(chǔ),大部分都來自我的自學(xué)。
我的專業(yè)會接觸相對寬泛的計(jì)算機(jī)領(lǐng)域,所以實(shí)際上在大學(xué)期間我做了很多不同的方向,甚至有相當(dāng)長的時(shí)間,我在做圖形學(xué)相關(guān)的。到了大三的時(shí)候我突然意識到,我必須找到一個(gè)我真正熱愛的方向作為終身的選擇。
我回想過往的經(jīng)歷,雖然接觸過很多方面的計(jì)算機(jī)技術(shù),但是當(dāng)年的 CIH 病毒還是出現(xiàn)在我的思維里。圍繞反病毒的逆向、驅(qū)動(dòng)、代碼這些底層技術(shù),讓我覺得可以在計(jì)算機(jī)上制造一個(gè)自由的空間。在這個(gè)虛擬又廣袤的空間里和病毒制造者用數(shù)字和代碼進(jìn)行對抗,這種快樂恐怕只有像我一樣的“技術(shù)宅”才能體會吧。
相比初見 CIH 時(shí)的無處下手,臨近大學(xué)畢業(yè)時(shí)我已經(jīng)掌握了足夠的武器可以和病毒同臺作戰(zhàn)了,我覺得是時(shí)候加入反病毒專家的隊(duì)伍了。
當(dāng)時(shí)國內(nèi)的安全公司寥寥無幾,要做安全當(dāng)然就要去最好的公司。我挑選了一個(gè)當(dāng)時(shí)風(fēng)頭正勁的投去了簡歷。這家公司就是瑞星。我順利通過了面試,不過由于我還在大三,公司告訴我只能以實(shí)習(xí)的方式來工作,沒有工資。我說,沒有工資我也干。
我開始了在瑞星的“毒師”生涯,這一干就是六年。
我是個(gè)搞技術(shù)的,所以不太會宣傳自己。我總覺得人的精力是有限的,如果花精力在宣傳上,真正做技術(shù)的精力就會減少。
在瑞星的時(shí)候,有一件事讓我印象很深刻。
當(dāng)時(shí)國外流行一種病毒,叫做“viking”威金。這種蠕蟲病毒會感染用戶的程序,通過文件拼接的手法“寄生”在宿主程序上進(jìn)行傳播。這種病毒雖然傳播廣泛,但是在技術(shù)上并不難對抗。
有一天我分析病毒樣本,突然發(fā)現(xiàn)了一個(gè)感染手法和 Viking 類似的“過程感染型蠕蟲”。在虛擬機(jī)上跑了一下,我發(fā)現(xiàn)這種病毒的制造水平很粗糙,感染過程也就是簡單地進(jìn)行文件拼接。從開始分析到把樣本加入病毒庫,只花了我不到半小時(shí)。
我覺得這個(gè)病毒也太簡單了,隨手在內(nèi)部命名標(biāo)簽里寫上了“nimaya”(你媽呀),表達(dá)了一下憤怒。
然而,就是這么一個(gè)簡單的病毒,卻很快肆虐了半個(gè)中國。
過了幾天,市場部找到我,說要用這個(gè)病毒炒作一下,讓我給病毒命個(gè)名。我看了下內(nèi)部名稱,好像不太雅觀。我說,要不就叫“尼姆亞”吧。后來,這個(gè)病毒有了一個(gè)更廣為人知的名字:熊貓燒香。
后來,我看到了市場部發(fā)出去的文章,大意是“我們的分析師用了三天三夜時(shí)間,廢寢忘食地研究對抗策略,現(xiàn)在終于可以完全清除這類病毒了?!?/p>
看到這篇文章,我覺得很丟臉。瑞星的安全分析師很辛苦,圈內(nèi)人會覺得連這么一個(gè)病毒你瑞星都要搞三天三夜,這實(shí)在讓我臉上掛不住。
說白了,作為一個(gè)技術(shù)出身的人,我很看重自己和團(tuán)隊(duì)的技術(shù)聲譽(yù)。在瑞星的日子里,雖然有時(shí)會遭到公關(guān)戰(zhàn)的“高級黑”,我和同事們還是保持了殺毒水平的領(lǐng)先。并且我也認(rèn)識了很多志同道合的朋友,這其中,就有當(dāng)時(shí)瑞星的 CTO 劉剛、主機(jī)安全研究分部負(fù)責(zé)人毛鈞。
我們?nèi)齻€(gè)都是技術(shù)出身。我們的愛好就是鉆研反病毒技術(shù),改進(jìn)殺毒引擎。但是,我越來越發(fā)現(xiàn),在瑞星有很多框架和歷史包袱不是我們依靠一己之力能改變的。
與其可能在技術(shù)上受限制,不如我們幾個(gè)人一起從零開始。當(dāng)時(shí)頭腦一熱,我們一起辭職,和更早離開瑞星的市場總監(jiān)馬剛一起成立了“火絨安全”。
【火絨安全團(tuán)隊(duì)(左起):產(chǎn)品經(jīng)理李幸、聯(lián)合創(chuàng)始人毛鈞、聯(lián)合創(chuàng)始人兼CEO劉剛、聯(lián)合創(chuàng)始人周軍、聯(lián)合創(chuàng)始人馬剛】
我們買了一張桌子,幾把椅子,擼起袖子開干。這張桌子現(xiàn)在還擺在會議室里。
能夠按照自己的意圖去做喜歡的東西,這種自由的感覺簡直太好了。
終端安全,尤其是殺毒引擎需要大量的數(shù)據(jù)積累,而2011年我們成立火絨的時(shí)候,手上只有我們幾個(gè)人的技術(shù)。于是我們決定,先不急著做殺毒引擎,先做個(gè)分析工具。
殺毒引擎會利用內(nèi)置的病毒庫和識別規(guī)則,精確判別病毒。而防御工具則是盡可能地把程序的進(jìn)程關(guān)系和對電腦的動(dòng)作步驟呈現(xiàn)出來,相當(dāng)于對運(yùn)行的程序做X光或 CT。
這個(gè)工具就是火絨劍。
火絨劍可以展示系統(tǒng)內(nèi)部正在運(yùn)轉(zhuǎn)的詳細(xì)情況,包括內(nèi)核進(jìn)程、驅(qū)動(dòng)狀態(tài)和網(wǎng)絡(luò)狀態(tài)??傊梢暂o助“電腦高手”來檢查系統(tǒng)的“健康情況”。
我們把火絨劍放到了自己的QQ群里,也放到了卡飯論壇上,大家覺得這個(gè)工具非常實(shí)用,這些支持者也成為了我們的最早的用戶。
【火絨劍】
有了火絨劍,顯然就要有火絨盾?;鸾q盾一開始的功能也很簡約,就是通過行為模式來判斷一個(gè)程序是否存在惡意。
看一個(gè)程序是否有惡意行為,僅僅通過一個(gè)動(dòng)作(單步防御)在很多情況下不能奏效,而是要把一個(gè)主體的多個(gè)動(dòng)作串聯(lián)起來才能判斷。
舉個(gè)例子:
一個(gè)人使用刀,并不是違法行為;
一個(gè)人站在人群中,也并不危險(xiǎn);
但是一個(gè)人在人群中握著刀,就很危險(xiǎn)。
這個(gè)思路并不新奇?;鸾q盾做出的第一版產(chǎn)品也和“主流產(chǎn)品”很相似。但是由于可以直接接觸到用戶的反饋,我發(fā)現(xiàn)原來我們做多步防御的思路并不好。
過去的行為分析,主要看的是進(jìn)程和進(jìn)程的關(guān)系。每個(gè)分析器用獨(dú)立的視角分析一個(gè)進(jìn)程,這樣就會造成子進(jìn)程父進(jìn)程等等多個(gè)進(jìn)程分析之間的混亂。而我們發(fā)現(xiàn),如果換一個(gè)視角,把每個(gè)行為和進(jìn)程的關(guān)系作為一個(gè)矩陣來觀察,事情就變得非常清晰了。
用這種方法,系統(tǒng)可以比較容易地總結(jié)出病毒的行為模式,建立起一整套基于行為的防護(hù)規(guī)則。這一套分析規(guī)則一直沒有讓人失望,至今為止還沒有需要被“特殊照顧”的白名單文件。
做了這么多準(zhǔn)備,我們終于準(zhǔn)備開發(fā)自己的反病毒引擎了。
【火絨安全截圖】
喬裝改扮是病毒的基本技能。Win PE 系統(tǒng)中 80% 的病毒都有對殺毒軟件的對抗代碼。病毒今天穿藍(lán)衣服,明天換黑衣服,殺毒軟件就可能無法識別了。
所以在把目標(biāo)文件放到病毒引擎查殺之前,有一個(gè)非常重要的工作,那就是先用“照妖鏡”讓文件現(xiàn)出原形。這個(gè)照妖鏡就是虛擬沙盒。
簡單來說,就是讓文件在這個(gè)虛擬的環(huán)境里“釋放天性”,自由地展示它的好和壞的本性。
這件事情的難點(diǎn)在于,如何讓殺毒軟件相信,自己不是被放在實(shí)驗(yàn)臺上任人褻玩,而是真的進(jìn)入了目標(biāo)電腦。
很多病毒的腳本會用各種奇異的姿勢來測試它是否在真實(shí)的系統(tǒng)中。例如向系統(tǒng)請求一些冷門的環(huán)境,在真實(shí)的系統(tǒng)里,無論病毒提出什么要求,系統(tǒng)一定會滿足。但是在虛擬系統(tǒng)里,稍有不慎就會“露餡”。病毒一旦沒有拿到理想的相應(yīng)結(jié)果,便不再繼續(xù)運(yùn)行。
另外,有些殺毒軟件使用開源代碼制造腳本解釋引擎,這些開源代碼本身就可能存在漏洞,這些漏洞如果被病毒利用,則會被病毒逆襲。
舉個(gè)例子:
upatre 木馬家族會使用一種獨(dú)特的方法,它會在自身外層設(shè)立一個(gè)混淆器,登陸目標(biāo)之后先創(chuàng)建一個(gè)窗口,在里面建立文本控件,使用這個(gè)計(jì)算出一個(gè)長度,再拿出來為自己解密。這個(gè)方法的巧妙之處在于它調(diào)用了其他病毒很少調(diào)用的窗口和文本系統(tǒng),這就使得一般的虛擬機(jī)很難“跑開”它。
如果不能跑開,就只能進(jìn)行靜態(tài)的代碼審計(jì),由于代碼復(fù)雜度極高,人工方法幾乎沒辦法完全審看。
于是,我們用了一種方法,那就是在引擎里直接嵌入了一個(gè)“Windows 系統(tǒng)”,這個(gè)系統(tǒng)完全由我們開發(fā),里面包含了注冊表、窗口系統(tǒng)、進(jìn)程調(diào)度等等功能。
病毒的目的是:看你和真實(shí)系統(tǒng)哪里不一樣。
我們的目的是:讓病毒相信我們就是真實(shí)的系統(tǒng)。
當(dāng)然,Windows 系統(tǒng)極其復(fù)雜。理論上來說,我們?nèi)绻M得一模一樣,那么體量上也會和它一樣大。我們希望不斷抹平和最新 Windows 之間的差距,目標(biāo)就是做到“病毒需要的,我們?nèi)加小薄?/p>
我們從成立一年半的時(shí)候開始做引擎,到現(xiàn)在為止對于虛擬沙盒的完善一直沒停過。一旦發(fā)現(xiàn)病毒利用了新的系統(tǒng)特性,我們也會馬上在虛擬沙盒里加入。
【虛擬沙盒整體架構(gòu)】
最大快人心的,就是引擎殺毒這一步。
引擎殺毒的依據(jù)是病毒庫。病毒庫分為三個(gè)部分。
病毒文件哈希:特定病毒文件呈現(xiàn)的具體特征
病毒基因特征:被“跑開”以后的病毒樣本里的關(guān)鍵數(shù)據(jù)
病毒行為特征:病毒所具有的一系列行為特征。
檢驗(yàn)文件的哈希,是一種比較笨的方法。就像警察拿著通緝令逐一排查。然而由于病毒會不斷變幻加密生成變種,所以可憐的警察要拿著同一個(gè)人穿著不同衣服的照片才能識別。一旦病毒買了一件新衣服,警察還是會漏過。
檢查文件的基因特征,大概就像先把路人的衣服脫光,然后再對照片進(jìn)行比對。這種情況下,病毒的真身就會赤裸裸呈現(xiàn)在面前,徹底杜絕了穿上馬甲就不認(rèn)識的尷尬局面。
對病毒行為的分析,是引擎最讓我自豪的能力。因?yàn)樗呀?jīng)脫離了病毒的外貌,轉(zhuǎn)而判斷病毒的靈魂。外表再和善的人,只要伸手做壞事,都難逃“老刑警”的法眼。
我記得有一條行為模型,在對1900萬病毒樣本進(jìn)行測試的時(shí)候,成功命中了47萬樣本,這樣的單條檢出率甚至超過了我的預(yù)計(jì)。
【火絨安全對惡意代碼采用的分類】
但是,就像這世界的騙術(shù)在不斷進(jìn)化一樣,病毒的行為“劇本”也在發(fā)生演化。所以我們正在嘗試用一種新的方法來找到最新的病毒威脅情報(bào)。
火絨的用戶大概在200-300萬,這些終端很多都是類似網(wǎng)絡(luò)管理員這樣的“關(guān)鍵人物”。所有這些用戶實(shí)際上散步了一張非常廣泛的信息收集網(wǎng)。在用戶的許可下,所有的可疑行為都會被收集,經(jīng)過本地分析以后,匯總到威脅情報(bào)平臺。這些數(shù)據(jù)達(dá)到一定的數(shù)量,就可以清晰地呈現(xiàn)出哪些新的行為模式正在產(chǎn)生。而我們僅僅需要對可疑的大量的行為進(jìn)行人工審核,就可以判定這是不是一種新的病毒。
這就是“用威脅情報(bào)的方式做終端安全”。使用這個(gè)方法,我們發(fā)現(xiàn)了很多隱藏極深的木馬病毒。
例如一個(gè)被我們命名為“Toxik”的病毒。
2016年4月,我們的威脅情報(bào)系統(tǒng)發(fā)現(xiàn),一個(gè)知名軟件的升級程序,居然在很多終端上“不務(wù)正業(yè)”地下載了許多其他軟件,說白了就是軟件推廣。
經(jīng)過我們的分析,發(fā)現(xiàn)了事情的真相。原來這個(gè)升級程序被各大安全軟件列入了“信任白名單”,而“Toxik”病毒正是利用這個(gè)漏洞,先入侵升級程序,再惡意推廣。最終,我們通過人工溯源,成功地定位到了病毒代碼源頭,直至找到病毒制造者本人。
用威脅情報(bào)系統(tǒng)發(fā)現(xiàn)的病毒還有:劫持流量的小馬激活、能夠“攻破” HTTPS 協(xié)議的凈廣大師、專門攻擊盜版用戶的 Bloom 病毒,等等等等。
【Toxik 病毒感染全流程】
有兩件事讓我很糾結(jié)。
第一件事,就是現(xiàn)在捆綁安裝成為了一種“標(biāo)配”。但是在“軟件免費(fèi)化”的洪流中,所有的軟件幾乎都在做這樣的事情。
而在我們的觀點(diǎn)中,所有靜默安裝捆綁推廣都是對用戶的侵害。只是在現(xiàn)階段,我們沒有辦法把這些軟件標(biāo)定為病毒。如果按照嚴(yán)格的標(biāo)準(zhǔn)來說,很多日常在使用的,用戶上億的大軟件,都可以被定義為流氓軟件。
實(shí)際上,在我們的威脅情報(bào)系統(tǒng)后臺,前十位軟件侵權(quán)行為都是我們?nèi)粘T谟玫哪承﹣碜?nbsp;BAT 的流行軟件。這讓我們無法忽視。
所以,我們的做法是:至少讓用戶知情。如果一個(gè)軟件捆綁安裝了其他軟件,那么在安裝進(jìn)行的時(shí)候,火絨會彈出詢問框,讓用戶得知后臺在發(fā)生什么,然后來決定是不是進(jìn)行安裝。
第二件事就是,在我們心里提供好服務(wù)的軟件,尤其是殺毒軟件,應(yīng)該是收費(fèi)的。
火絨的目標(biāo)就是要用純凈的純粹的服務(wù),來換取用戶合理的費(fèi)用。從瑞星走出來之后,這些年我看到了殺毒軟件市場的免費(fèi)化帶來了巨大的傷害。
本來是“保安”的安全軟件不向雇主要公司,反而把雇主的信息泄露出去,用雇主的資源弄錢花,我不認(rèn)為這是一條好路。
我和朋友們一手創(chuàng)建了火絨,我深知火絨還需要打磨。即使現(xiàn)在火絨仍然免費(fèi),但是沒關(guān)系,我們可以用技術(shù)輸出、定制開發(fā)項(xiàng)目的方法來養(yǎng)它。我不希望看到在火絨上有任何的捆綁,有任何的彈窗。我只希望這是一個(gè)純粹的安全軟件。
我期待,有一天這個(gè)商業(yè)世界允許用戶為火絨安全買單,那將是對我這個(gè)“毒師”最大的褒獎(jiǎng)。
埃及法老用一座座金字塔來標(biāo)榜自己的輝煌。蜉蝣于塵世的我們同樣希望創(chuàng)造自己的堅(jiān)硬城邦。
對于周軍來說,他的金字塔就是面前的火絨安全。我們總在焦急地追趕飛馳的歲月,他卻站在飛逝的時(shí)光中細(xì)細(xì)雕刻著自己的“殺毒神獸”,任這個(gè)世界從平地高樓到大廈傾圮,從高山為谷到深谷為陵。
如果病毒代表了人性當(dāng)中的惡,那我們至少應(yīng)該慶幸,因?yàn)橄裰苘娨粯拥摹岸編煛贝嬖?,世界并沒有想象中那么糟。
我們的歲月靜好,來自這些癡人的永不回頭。
本文由雷鋒網(wǎng)宅客頻道原創(chuàng),更多網(wǎng)絡(luò)安全人物和技術(shù),請關(guān)注雷鋒網(wǎng)宅客頻道公眾號:宅客頻道。
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。