毒師周軍:我如何創造一只“殺毒神獸”

jopen 7年前發布 | 9K 次閱讀 周軍 火絨安全

毒師周軍:我如何創造一只“殺毒神獸”

雷鋒網按:

周軍,前瑞星內核團隊負責人,火絨安全聯合創始人。

這位“技術宅”的最大熱情就是反病毒技術的研究。當殺毒軟件之間進行暗黑攻伐的時候,他在研究病毒樣本;當殺毒軟件紛紛用免費方式流量變現時,他在研究反病毒技術;當殺毒軟件紛紛成為“入室管家”時,他仍舊在專心致志地打磨殺毒引擎。

所謂天道酬癡,大抵正是如此。“毒師”周軍和伙伴們用數年時間,飼養了一只“殺毒神獸”,在這只神獸眼中,所有的病毒都無處遁形。

毒師周軍:我如何創造一只“殺毒神獸”

【周軍】

口述周軍 | 文史中

我是一個以殺毒為職業的人。

殺毒這件事,從來不像看上去那么簡單。這就像數學,一切都源于簡單的加減乘除,最終發展出的數學理論卻浩瀚無比。也更像醫學,庸醫也許大動干戈,神醫可能輕描淡寫。病人,從某種程度上來說都無法判斷醫生醫術的好壞。

自從電腦占據普通人的客廳或書房,病毒和殺毒軟件就先后出現了。上個世紀末,殺毒軟件甚至成為像我一樣的年輕人認識 PC 的一個入口。

這些殺毒軟件背后的人,大概被統稱為安全研究員。他們的工作說來也簡單:制造一套系統,讓它能夠識別盡可能多的病毒。

這套系統就是殺毒引擎。

如果用警察來做比喻的話,警察抓壞人的方法有兩種:

1、通過通緝犯的照片和行人一一比對,找出在逃的壞人。這種方法有個弊端,那就是如果壞人喬裝改扮,甚至去韓國整個容,去泰國變個性,警察就有點懵X。

2、通過觀察人們的行為來判斷——壞人總要犯案的。老刑警站在街角,通過神態和動作就能八九不離十地判斷出人群中哪個是伺機下手的竊賊。只需要在他下手之時,把冰涼的手銬磕到他的手腕上。

殺毒引擎也是同樣的道理,“根據已知的信息找到未知的所在”。只不過對我來說,我更傾心于剛才所說的第二種方法,用我們的行話來講,叫做“特征+行為分析”。我的理想,就是不斷完善我們飼養的這頭“殺毒神獸”。

(一)

我生在北京。第一次接觸病毒,是在高中的時候。和很多人一樣,大名鼎鼎的 CIH 病毒闖進了我的視野。這是我第一次聽說病毒這個詞兒。一個小小的程序竟然可以搞垮一臺電腦,其中肯定會有很特殊又很神奇的原理。當時我想,如果能夠做病毒研究,這事還是挺牛X的。

所以,我報考了北京工業大學的計算機科學與技術專業。

但是,在技術研究這條路上,第一個坑卻是我的老師。匯編課的老師在開學第一天就對我們說:“學這個東西沒用。老實說不是學校非要開,我不愛講。”聽到這句話,我當時就走了。既然老師都是這種態度,那我何必浪費時間呢?

我并不相信這門課沒有用。雖然在大學,但其實對于底層語言和編程基礎,大部分都來自我的自學。

我的專業會接觸相對寬泛的計算機領域,所以實際上在大學期間我做了很多不同的方向,甚至有相當長的時間,我在做圖形學相關的。到了大三的時候我突然意識到,我必須找到一個我真正熱愛的方向作為終身的選擇。

我回想過往的經歷,雖然接觸過很多方面的計算機技術,但是當年的 CIH 病毒還是出現在我的思維里。圍繞反病毒的逆向、驅動、代碼這些底層技術,讓我覺得可以在計算機上制造一個自由的空間。在這個虛擬又廣袤的空間里和病毒制造者用數字和代碼進行對抗,這種快樂恐怕只有像我一樣的“技術宅”才能體會吧。

相比初見 CIH 時的無處下手,臨近大學畢業時我已經掌握了足夠的武器可以和病毒同臺作戰了,我覺得是時候加入反病毒專家的隊伍了。

當時國內的安全公司寥寥無幾,要做安全當然就要去最好的公司。我挑選了一個當時風頭正勁的投去了簡歷。這家公司就是瑞星。我順利通過了面試,不過由于我還在大三,公司告訴我只能以實習的方式來工作,沒有工資。我說,沒有工資我也干。

我開始了在瑞星的“毒師”生涯,這一干就是六年。

(二)

我是個搞技術的,所以不太會宣傳自己。我總覺得人的精力是有限的,如果花精力在宣傳上,真正做技術的精力就會減少。

在瑞星的時候,有一件事讓我印象很深刻。

當時國外流行一種病毒,叫做“viking”威金。這種蠕蟲病毒會感染用戶的程序,通過文件拼接的手法“寄生”在宿主程序上進行傳播。這種病毒雖然傳播廣泛,但是在技術上并不難對抗。

有一天我分析病毒樣本,突然發現了一個感染手法和 Viking 類似的“過程感染型蠕蟲”。在虛擬機上跑了一下,我發現這種病毒的制造水平很粗糙,感染過程也就是簡單地進行文件拼接。從開始分析到把樣本加入病毒庫,只花了我不到半小時。

我覺得這個病毒也太簡單了,隨手在內部命名標簽里寫上了“nimaya”(你媽呀),表達了一下憤怒。

然而,就是這么一個簡單的病毒,卻很快肆虐了半個中國。

過了幾天,市場部找到我,說要用這個病毒炒作一下,讓我給病毒命個名。我看了下內部名稱,好像不太雅觀。我說,要不就叫“尼姆亞”吧。后來,這個病毒有了一個更廣為人知的名字:熊貓燒香。

毒師周軍:我如何創造一只“殺毒神獸”

后來,我看到了市場部發出去的文章,大意是“我們的分析師用了三天三夜時間,廢寢忘食地研究對抗策略,現在終于可以完全清除這類病毒了。”

看到這篇文章,我覺得很丟臉。瑞星的安全分析師很辛苦,圈內人會覺得連這么一個病毒你瑞星都要搞三天三夜,這實在讓我臉上掛不住。

說白了,作為一個技術出身的人,我很看重自己和團隊的技術聲譽。在瑞星的日子里,雖然有時會遭到公關戰的“高級黑”,我和同事們還是保持了殺毒水平的領先。并且我也認識了很多志同道合的朋友,這其中,就有當時瑞星的 CTO 劉剛、主機安全研究分部負責人毛鈞。

我們三個都是技術出身。我們的愛好就是鉆研反病毒技術,改進殺毒引擎。但是,我越來越發現,在瑞星有很多框架和歷史包袱不是我們依靠一己之力能改變的。

與其可能在技術上受限制,不如我們幾個人一起從零開始。當時頭腦一熱,我們一起辭職,和更早離開瑞星的市場總監馬剛一起成立了“火絨安全”。

毒師周軍:我如何創造一只“殺毒神獸”

【火絨安全團隊(左起):產品經理李幸、聯合創始人毛鈞、聯合創始人兼 CEO 劉剛、聯合創始人周軍、聯合創始人馬剛】

(三)

我們買了一張桌子,幾把椅子,擼起袖子開干。這張桌子現在還擺在會議室里。

能夠按照自己的意圖去做喜歡的東西,這種自由的感覺簡直太好了。

終端安全,尤其是殺毒引擎需要大量的數據積累,而 2011 年我們成立火絨的時候,手上只有我們幾個人的技術。于是我們決定,先不急著做殺毒引擎,先做個分析工具。

殺毒引擎會利用內置的病毒庫和識別規則,精確判別病毒。而防御工具則是盡可能地把程序的進程關系和對電腦的動作步驟呈現出來,相當于對運行的程序做X光或 CT。

這個工具就是火絨劍。

火絨劍可以展示系統內部正在運轉的詳細情況,包括內核進程、驅動狀態和網絡狀態。總之,可以輔助“電腦高手”來檢查系統的“健康情況”。

我們把火絨劍放到了自己的 QQ 群里,也放到了卡飯論壇上,大家覺得這個工具非常實用,這些支持者也成為了我們的最早的用戶。

毒師周軍:我如何創造一只“殺毒神獸”

【火絨劍】

有了火絨劍,顯然就要有火絨盾。火絨盾一開始的功能也很簡約,就是通過行為模式來判斷一個程序是否存在惡意。

看一個程序是否有惡意行為,僅僅通過一個動作(單步防御)在很多情況下不能奏效,而是要把一個主體的多個動作串聯起來才能判斷。

舉個例子:

一個人使用刀,并不是違法行為;

一個人站在人群中,也并不危險;

但是一個人在人群中握著刀,就很危險。

這個思路并不新奇。火絨盾做出的第一版產品也和“主流產品”很相似。但是由于可以直接接觸到用戶的反饋,我發現原來我們做多步防御的思路并不好。

過去的行為分析,主要看的是進程和進程的關系。每個分析器用獨立的視角分析一個進程,這樣就會造成子進程父進程等等多個進程分析之間的混亂。而我們發現,如果換一個視角,把每個行為和進程的關系作為一個矩陣來觀察,事情就變得非常清晰了。

用這種方法,系統可以比較容易地總結出病毒的行為模式,建立起一整套基于行為的防護規則。這一套分析規則一直沒有讓人失望,至今為止還沒有需要被“特殊照顧”的白名單文件。

做了這么多準備,我們終于準備開發自己的反病毒引擎了。

毒師周軍:我如何創造一只“殺毒神獸”

【火絨安全截圖】

(四)

喬裝改扮是病毒的基本技能。Win PE 系統中 80% 的病毒都有對殺毒軟件的對抗代碼。病毒今天穿藍衣服,明天換黑衣服,殺毒軟件就可能無法識別了。

所以在把目標文件放到病毒引擎查殺之前,有一個非常重要的工作,那就是先用“照妖鏡”讓文件現出原形。這個照妖鏡就是虛擬沙盒。

簡單來說,就是讓文件在這個虛擬的環境里“釋放天性”,自由地展示它的好和壞的本性。

這件事情的難點在于,如何讓殺毒軟件相信,自己不是被放在實驗臺上任人褻玩,而是真的進入了目標電腦。

很多病毒的腳本會用各種奇異的姿勢來測試它是否在真實的系統中。例如向系統請求一些冷門的環境,在真實的系統里,無論病毒提出什么要求,系統一定會滿足。但是在虛擬系統里,稍有不慎就會“露餡”。病毒一旦沒有拿到理想的相應結果,便不再繼續運行。

另外,有些殺毒軟件使用開源代碼制造腳本解釋引擎,這些開源代碼本身就可能存在漏洞,這些漏洞如果被病毒利用,則會被病毒逆襲。

舉個例子:

upatre 木馬家族會使用一種獨特的方法,它會在自身外層設立一個混淆器,登陸目標之后先創建一個窗口,在里面建立文本控件,使用這個計算出一個長度,再拿出來為自己解密。這個方法的巧妙之處在于它調用了其他病毒很少調用的窗口和文本系統,這就使得一般的虛擬機很難“跑開”它。

如果不能跑開,就只能進行靜態的代碼審計,由于代碼復雜度極高,人工方法幾乎沒辦法完全審看。

于是,我們用了一種方法,那就是在引擎里直接嵌入了一個“Windows 系統”,這個系統完全由我們開發,里面包含了注冊表、窗口系統、進程調度等等功能。

病毒的目的是:看你和真實系統哪里不一樣。

我們的目的是:讓病毒相信我們就是真實的系統。

當然,Windows 系統極其復雜。理論上來說,我們如果模擬得一模一樣,那么體量上也會和它一樣大。我們希望不斷抹平和最新 Windows 之間的差距,目標就是做到“病毒需要的,我們全都有”。

我們從成立一年半的時候開始做引擎,到現在為止對于虛擬沙盒的完善一直沒停過。一旦發現病毒利用了新的系統特性,我們也會馬上在虛擬沙盒里加入。

毒師周軍:我如何創造一只“殺毒神獸”

【虛擬沙盒整體架構】

(五)

最大快人心的,就是引擎殺毒這一步。

引擎殺毒的依據是病毒庫。病毒庫分為三個部分。

病毒文件哈希:特定病毒文件呈現的具體特征

病毒基因特征:被“跑開”以后的病毒樣本里的關鍵數據

病毒行為特征:病毒所具有的一系列行為特征。

檢驗文件的哈希,是一種比較笨的方法。就像警察拿著通緝令逐一排查。然而由于病毒會不斷變幻加密生成變種,所以可憐的警察要拿著同一個人穿著不同衣服的照片才能識別。一旦病毒買了一件新衣服,警察還是會漏過。

檢查文件的基因特征,大概就像先把路人的衣服脫光,然后再對照片進行比對。這種情況下,病毒的真身就會赤裸裸呈現在面前,徹底杜絕了穿上馬甲就不認識的尷尬局面。

對病毒行為的分析,是引擎最讓我自豪的能力。因為它已經脫離了病毒的外貌,轉而判斷病毒的靈魂。外表再和善的人,只要伸手做壞事,都難逃“老刑警”的法眼。

我記得有一條行為模型,在對 1900 萬病毒樣本進行測試的時候,成功命中了 47 萬樣本,這樣的單條檢出率甚至超過了我的預計。

毒師周軍:我如何創造一只“殺毒神獸”

【火絨安全對惡意代碼采用的分類】

但是,就像這世界的騙術在不斷進化一樣,病毒的行為“劇本”也在發生演化。所以我們正在嘗試用一種新的方法來找到最新的病毒威脅情報。

火絨的用戶大概在 200-300 萬,這些終端很多都是類似網絡管理員這樣的“關鍵人物”。所有這些用戶實際上散步了一張非常廣泛的信息收集網。在用戶的許可下,所有的可疑行為都會被收集,經過本地分析以后,匯總到威脅情報平臺。這些數據達到一定的數量,就可以清晰地呈現出哪些新的行為模式正在產生。而我們僅僅需要對可疑的大量的行為進行人工審核,就可以判定這是不是一種新的病毒。

這就是“用威脅情報的方式做終端安全”。使用這個方法,我們發現了很多隱藏極深的木馬病毒。

例如一個被我們命名為“Toxik”的病毒。

2016 年 4 月,我們的威脅情報系統發現,一個知名軟件的升級程序,居然在很多終端上“不務正業”地下載了許多其他軟件,說白了就是軟件推廣。

經過我們的分析,發現了事情的真相。原來這個升級程序被各大安全軟件列入了“信任白名單”,而“Toxik”病毒正是利用這個漏洞,先入侵升級程序,再惡意推廣。最終,我們通過人工溯源,成功地定位到了病毒代碼源頭,直至找到病毒制造者本人。

用威脅情報系統發現的病毒還有:劫持流量的小馬激活、能夠“攻破” HTTPS 協議的凈廣大師、專門攻擊盜版用戶的 Bloom 病毒,等等等等。

毒師周軍:我如何創造一只“殺毒神獸”

【Toxik 病毒感染全流程】

(六)

有兩件事讓我很糾結。

第一件事,就是現在捆綁安裝成為了一種“標配”。但是在“軟件免費化”的洪流中,所有的軟件幾乎都在做這樣的事情。

而在我們的觀點中,所有靜默安裝捆綁推廣都是對用戶的侵害。只是在現階段,我們沒有辦法把這些軟件標定為病毒。如果按照嚴格的標準來說,很多日常在使用的,用戶上億的大軟件,都可以被定義為流氓軟件。

實際上,在我們的威脅情報系統后臺,前十位軟件侵權行為都是我們日常在用的某些來自 BAT 的流行軟件。這讓我們無法忽視。

所以,我們的做法是:至少讓用戶知情。如果一個軟件捆綁安裝了其他軟件,那么在安裝進行的時候,火絨會彈出詢問框,讓用戶得知后臺在發生什么,然后來決定是不是進行安裝。

第二件事就是,在我們心里提供好服務的軟件,尤其是殺毒軟件,應該是收費的。

火絨的目標就是要用純凈的純粹的服務,來換取用戶合理的費用。從瑞星走出來之后,這些年我看到了殺毒軟件市場的免費化帶來了巨大的傷害。

本來是“保安”的安全軟件不向雇主要公司,反而把雇主的信息泄露出去,用雇主的資源弄錢花,我不認為這是一條好路。

我和朋友們一手創建了火絨,我深知火絨還需要打磨。即使現在火絨仍然免費,但是沒關系,我們可以用技術輸出、定制開發項目的方法來養它。我不希望看到在火絨上有任何的捆綁,有任何的彈窗。我只希望這是一個純粹的安全軟件。

我期待,有一天這個商業世界允許用戶為火絨安全買單,那將是對我這個“毒師”最大的褒獎。

毒師周軍:我如何創造一只“殺毒神獸”

結語·采訪手記

埃及法老用一座座金字塔來標榜自己的輝煌。蜉蝣于塵世的我們同樣希望創造自己的堅硬城邦。

對于周軍來說,他的金字塔就是面前的火絨安全。我們總在焦急地追趕飛馳的歲月,他卻站在飛逝的時光中細細雕刻著自己的“殺毒神獸”,任這個世界從平地高樓到大廈傾圮,從高山為谷到深谷為陵。

如果病毒代表了人性當中的惡,那我們至少應該慶幸,因為像周軍一樣的“毒師”存在,世界并沒有想象中那么糟。

我們的歲月靜好,來自這些癡人的永不回頭。

來自: 雷鋒網

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!