想開發一個安全軟體,怎麼搞?

程式碼熬夜敲 發表於 2021-10-08

今天跟大家介紹一下,開發一個像360、QQ電腦管家這樣的安全軟體,有哪些核心技術,或者說哪些核心元件是必不可少的?

在這裡插入圖片描述

反病毒引擎

首先,第一個必不可少的就是反病毒引擎。安全軟體最早的核心也就是這個東西,它的目的就是檢測一個檔案是不是惡意軟體。

反病毒引擎主要通過對檔案進行靜態分析,識別惡意檔案的特徵,與自己的病毒特徵庫進行匹配,來判斷目標是否是惡意的。

這裡面主要用到的技術有檔案格式識別、加殼脫殼技術、加密解密技術、可執行檔案的反彙編、指令級的特徵匹配、虛擬執行、樣本家族團伙基因判別、機器學習等等。

在這裡插入圖片描述

HOOK驅動

安全軟體的主要任務,就是要保護我們的電腦不受病毒、木馬這些惡意軟體的侵害,除了能通過靜態分析識別已知的威脅,還要守住計算機的安全防線,防止被惡意軟體攻破。

那如何防守呢?

安全軟體需要感知計算機上發生的一切事情,這包含,每一個程式執行緒的建立、每一個檔案的建立和讀寫、每一次網路連線的建立,甚至每一次系統服務的呼叫。

在這裡插入圖片描述

安全軟體是通過HOOK技術來做到這一切的。

安全軟體使用核心驅動程式,劫持應用程式通向作業系統核心的關鍵入口,從而監控所有程式的行為。

幾乎每一個安全軟體都有這麼一個驅動程式,它內部有一套HOOK框架,提供程式設計介面給其他驅動程式呼叫,比如360中大名鼎鼎的hookport.sys。

主動防禦驅動

光有一個HOOK框架驅動不行,還得配套有一個主動防禦驅動,負責完成具體的安全防禦。

在這裡插入圖片描述

應用層上一般會有一個主動防禦程式,負責從安全軟體雲端伺服器接收控制指令,下發最新的防禦規則,最新的特徵庫,比如攔截哪些程式,攔截哪些操作等等。

主動防禦程式拉取到這些資訊後,下發給核心空間的主動防禦驅動程式,由它來具體執行對應的攔截行為。

檔案過濾驅動

通過HOOK驅動來進行監控,有時候並不能完全解決問題。有一些底層軟體,可以繞過系統API呼叫,這樣一來HOOK驅動就監控不到了。

因此,安全軟體一般還會配套有一個檔案過濾驅動,通過檔案系統提供的介面實現更底層的檔案監控功能。

這一類驅動一般使用的技術有minifilter、sfilter等。

網路監控驅動

和檔案過濾驅動類似,對於網路同樣需要一個更底層的驅動程式,來監控計算機中所有的網路連線,通過作業系統網路架構底層的介面,監控計算機進進出出所有的資料包,將網路通訊情況完全瞭如指掌。

在這裡插入圖片描述
這一類驅動使用的技術有TDI、NDIS、WFP等。

沙箱驅動

除了守護我們的計算機,安全軟體的另外主要工作還是分析惡意程式。

前面提到的反病毒引擎主要是靜態分析,但靜態分析有一定的侷限性,很多時候程式的惡意需要執行以後才會暴露出來。因此,動態分析技術少不了。

雖然網路安全技術發展了很多年,但動態分析用到的主要技術還是“沙箱分析”。

在這裡插入圖片描述

所謂沙箱分析,就是提供一個模擬的環境,把目標丟進去,讓它跑起來,等到它原形畢露,是不是惡意就能一目瞭然。

因此,許多安全軟體也會提供一個沙箱驅動,通過核心隔離,模擬出一個“安全”的執行環境,讓目標在其中執行。

攻防驅動

安全軟體目標這麼大,自然會招來很多惡意軟體的攻擊。除了惡意軟體,有些安全軟體互相為了搶奪使用者,也會互相攻擊。

所以,安全軟體必須加強自身的防禦。

前面提到的主動防禦,屬於正規軍作戰,也包含有保護自己的能力,但面對同樣是核心級的攻擊對手,這一招基本就收效甚微了。

因此,安全軟體一般還會有一個攻防驅動,通過各種手段和對手作戰,保護自己,這裡面用到的技術就五花八門了。

總結

總結一下,開發一款安全軟體,主要有三方面的事情要做:

在這裡插入圖片描述

看完這篇文章,你有什麼收穫嗎,寫作不易,歡迎動動手指轉發分享。