這些反病毒鬥爭經驗,我全放這了

csdn 發佈 2020-08-07T06:04:22+00:00

自全球第一個計算機病毒出現後,人們通過與病毒長期的鬥爭,積累了大量反病毒經驗,掌握了大量實用的反病毒技術,並研製出一系列優秀的反病毒產品,主要用於病毒的防護、檢測及其清除等。

作者 | 楊秀璋,責編 | 夕顏

出品 | CSDN(ID:CSDNnews)

頭圖 | 視覺中國

自全球第一個計算機病毒出現後,人們通過與病毒長期的鬥爭,積累了大量反病毒經驗,掌握了大量實用的反病毒技術,並研製出一系列優秀的反病毒產品,主要用於病毒的防護、檢測及其清除等。病毒的檢測技術主要包括特徵值檢測技術、校驗和檢測技術、啟發式掃描技術、虛擬機檢測技術、主動防禦技術,以及新興的雲查殺技術等。個人用戶也可以通過經驗、安全檢測工具和反病毒軟體來檢查計算機是否感染病毒,或是採用沙箱及相關靜、動態分析手段來對病毒進行深入分析。

惡意代碼檢測的對象和策略

惡意代碼的檢測是將檢測對象與惡意代碼特徵(檢測標準)進行對比分析,定位病毒程序或代碼,或檢測惡意行為。

首先,我們介紹惡意代碼檢測對象。檢測對象主要包括:

  • 引導扇區

  • 文件系統中可能帶毒的文件:安全公司的產品主要針對文件進行病毒檢測

  • 內存空間

  • 主板BIOS:系統啟動時涉及的代碼

  • 網絡流量:網絡交互也是檢測對象,如VPS、VDS

  • 系統行為

接著我們主要介紹三類檢測對象。

(1) 檢測對象——引導扇區

引導扇區之所以成為檢測對象,是因為部分引導扇區是具有控制權的,它在系統啟動、執行過程中會執行相應代碼,並且這些代碼可能會被惡意軟體所篡改。主要包括:

  • 硬碟主引導扇區

  • 硬碟作業系統引導扇區

  • 可移動磁碟引導扇區

檢測目標:

  • 引導區病毒、MBR木馬等

(2) 檢測對象——可能帶毒的文件

有些文件是正常被感染所致,有些文件是獨立存在系統中的。

  • 可執行程

    .exe;.dll;.com;.scr… (最普遍的檢測對象)

  • 數據文件

    .doc;.xls;.ppt;.pdf; .mp3;.avi… (比如宏病毒、Office文檔都是檢測對象)

  • 腳本文件

    .js;.vbs;.php;.pl… (比如腳本病毒)

  • 網頁文件

    .html;.htm;.asp… (比如網頁掛馬)

(3) 檢測對象——內存空間

惡意代碼在傳染或執行時,必然要占有一定的內存空間,部分功能代碼駐留在內存中。

  • 部分惡意代碼僅存在於內存之中

    – 無文件存在,或已自行刪除

    – 或被外部動態按需注入

  • 部分惡意代碼僅在內存中被還原

比如,部分惡意代碼僅存在內存之中,它們是沒有文件的,通過文件檢測無法找到它們。另外,還有部分惡意代碼最開始是有文件的,執行完畢之後會將自身進行刪除,此時再去檢測文件是檢測不到的。也有一些木馬程序,最開始執行時只是一個簡單的主體程序,它所有的功能代碼可能是通過Shellcode的方式進行遠程注入,在文件中是找不到這些惡意代碼的,此時就駐留在內存中,所以對內存中的代碼進行檢測是必要的。

同時,還有一些木馬程序會啟動IE進程,它啟動之後會將IE進程掏空,然後將自己的惡意代碼植入其中,這種情況的惡意代碼也是駐留在內存之中。除此之外,還有一些惡意代碼本身在文件中,它是一種加密或壓縮狀態,只要到內存之後才會進行還原。

介紹完檢測對象之後,我們分享病毒的檢測策略。

(1) 專用檢查技術:針對某個或某些特定已知惡意代碼,比如反病毒軟體所採用的文件特徵值檢測技術,發現病毒之後,對病毒的特徵進行提取構建相關特徵庫。

  • 反病毒軟體必須隨著新病毒的不斷出現而頻繁更新病毒庫版本。

  • 如文件特徵值檢測技術。

(2) 通用檢測技術:針對已知和未知惡意代碼,根據惡意軟體廣義的特徵進行檢測,但這裡面涉及了很多人為經驗,如啟發式掃描技術,對目標程序的特性和行為進行判斷,給出判斷結果或用戶提示。

  • 廣義特性描述或一般行為特徵作為判定依據。

  • 如啟發式掃描技術、主動防禦技術等。

特徵值檢測技術

1.特徵值檢測技術概念

病毒特徵值:是反病毒軟體鑑別特定計算機病毒的一種標誌。通常是從病毒樣本中提取的一段或多段字符串或二進位串。

如下圖所示,特徵值檢測技術和古代通J令類似,通J令中包含了這個人的特徵,對於特徵值檢測技術也是一樣,它首先需要對目標惡意程序進行特徵及標誌提取。另外,通J令可以通過相關機構或群眾發現,而特徵值檢測技術依靠反病毒引擎來進行比對。

特徵值檢測技術的具體思路:

  • 獲取樣本 -> 提取樣本特徵 -> 更新病毒庫 - > 查殺病毒

早期樣本比較少,可以通過人工提取特徵,但隨著樣本增多之後,就不再通過單純的人工方式提取,會將樣本特徵更新至病毒庫,再下發到客戶端的病毒檢測設備中。最早的時候,整體病毒數量不多,比如KV300,當時就是拿著軟盤每個月去到指定的地方進行病毒庫的更新,後來逐漸通過網絡的方式更新反病毒軟體,每天都可以更新很多次,反病毒軟體再根據反病毒引擎進行病毒的查殺。

2.特徵值的提取選擇及方法

特徵值的提取選擇具體如下:

  • (1) 特定字串:從計算機病毒體內提取、為病毒所特有的特徵串。如特定提示信息,特定簽名信息等。

    例如大麻病毒的提示為:「Your PC is now stoned」等。

  • (2) 感染標記:病毒為避免重複感染而使用的感染標記。

    如黑色星期五的「suMs DOS」。

  • (3) 從病毒代碼的特定地方開始取出連續的、不大於64且不含空格(ASCII值為32)的字節串。

同時,所提取的特徵需要避免和正常的軟體雷同,否則會形成誤報。具體的提取方法如下:

  • 人工提取

    反病毒工程師對病毒樣本進行分析後,人工確定病毒特徵。

  • 自動提取

    – 通過軟體系統自動提取特定範圍內特定長度具有一定特徵的數據。

    – 處理不利則可能被別有用心者利用,形成誤殺。比如殺毒軟體會對Windows核心文件進行查殺,但樣本提取時可能會有相應的失誤,通過製造對抗樣本使得正常程序或文件被誤殺。

3.優缺點

關於特徵值檢測技術,它有優缺點。具體如下:

  • 優點: 檢測速度快、誤報率低等優點,為廣大反病毒廠商所採用,技術也比較成熟。

    因為是對已有病毒進行分析後拿到的特徵,所以誤報率低,也是各大安全廠商採用的技術。

  • 缺點: 只能檢測已知惡意代碼。容易被免殺繞過。

最後,針對特徵值檢測技術,惡意軟體如何對抗?

  • 手工修改自身特徵

    首先,利用反病毒軟體定位(如CCL軟體進行定位)

    然後,進行針對性修改

  • 加密、多態、變形等

校驗和檢測技術

1.什麼是校驗和檢測技術

校驗和檢測技術是在文件使用/系統啟動過程中,檢查檢測對象的實際校驗和與預期是否一致,因而可以發現文件/引導區是否感染。

首先,我們需要弄清楚什麼是預期?

  • 預期:正常文件內容和正常引導扇區數據。

它會通過校驗和算法對原始的數據進行預算,從而得到校驗值,如果對象被修改,其校驗值會變化,從而判斷其是否被感染。這裡提到一個可信計算,它其實也使用了校驗和技術。

  • 靜態可信:可信計算機對主引導扇區和一些系統關鍵程序進行了校驗,從而保障系統啟動之後的初始安全。

運用校驗和檢測技術查病毒主要採用以下三種方式:

  • 系統自動監測

    該技術在反病毒軟體中用得比較多。它會將校驗和檢查程序常駐內存,每當應用程式開始運行時,自動核驗當前與預先保存的校驗和是否一致。如果不一致說明這段數據被篡改,會有相應的提示。

  • 專用檢測工具

    對被查的對象文件計算其正常狀態的校驗和,將校驗和值寫入被查文件中或檢測工具中,而後進行比較。如MD5Checker。

  • 自我檢測

    有些應用程式會進行自我校驗,比如QQ,如果修改其數據會有相應提示QQ被篡改。在應用程式中,放入校驗和檢測技術自我檢查功能,將文件正常狀態的校驗和寫入文件自身,應用程式啟動比較現行校驗和與原校驗和值,實現應用程式的自檢測。

2.校驗和檢測對象

校驗和檢測對象通常包括文件頭部、文件屬性、文件內容和系統數據等。

(1) 文件頭部

目前大部分的寄生病毒,它要去感染其它程序,它通常都要改變目標程序頭部的數據,比如PE病毒感染。一般比較整個文件效率較低,有的檢測僅比較文件的頭部。現有大多數寄生病毒需要改變宿主程序的頭部。

(2) 文件基本屬性

文件的基本屬性在整個生命周期中相對固定,如果發生改變可能發生了病毒攻擊。文件基本屬性通常包括文件長度、文件創建日期和時間、文件屬性(一般屬性、只讀屬性、隱含屬性、系統屬性)。下圖展示了Tripwire軟體能夠對UNIX和Windows中的文件屬性進行監控,如果文件中任何一個屬性發生了異常變化,則說明該文件極有可能被病毒攻擊或感染、損壞了。

(3) 文件內容校驗和

對文件內容(可含文件的屬性)的全部字節進行某種函數運算,這種運算所產生的適當字節長度的結果就叫做校驗和。

  • 可以採用一些散列函數,如MD5…

  • CRC校驗…

(4) 系統數據

有些病毒可能修改、且相對固定的重要系統數據。

  • 如硬碟主引導扇區、分區引導扇區

  • 內存中斷向量表、SSDT、設備驅動程序處理例程等

3.優缺點

校驗和檢測技術優缺點如下:

優點:

  • 方法簡單

  • 能發現未知病毒,因為只要病毒對目標修改,它就能發現

  • 目標文件的細微變化也能發現。

缺點:

  • 必須預先記錄正常文件的校驗和[預期]

  • 誤報率高

  • 不能識別病毒名稱

  • 效率低

啟發式掃描技術

主要依賴病毒檢測的經驗和知識,如專業反病毒技術人員使用反彙編、調試或沙箱工具稍加分析,就可能判定出某程序是否染毒,主要通過的就是反病毒技術人員的經驗。啟發式代碼掃描技術(Heuristic Scanning)實際上就是惡意代碼檢測經驗和知識的軟體實現。

經驗主要是判斷可疑的程序代碼指令序列,常見的如下:

  • 格式化磁碟類操作:它究竟是什麼樣的代碼

  • 搜索和定位各種可執行程序的操作

  • 實現駐留內存的操作

  • 發現非常用的或未公開的系統功能調用的操作、子程序調用中只執行入棧操作、遠距離(超過文件長度的三分之二)跳轉指令等

  • 敏感系統行為:如調用驅動進行遠程注入

  • 敏感API函數(序列)調用功能:雖然正常程序也會出現,但當它們集中出現時可能是啟發式掃描判斷的依據

啟發式掃描步驟如下:

  1. 定義通用可疑特徵(指令序列或行為);

  2. 對上述功能操作將被按照安全和可疑的等級進行排序,授以不同的權值(甚至用機器學習);

  3. 鑑別特徵,如果程序的權值總和超過一個事先定義的閾值,則認為 「發現病毒」。

下圖展示反病毒軟體的啟發式分析過程,包括輕度掃描、中毒掃描、深度掃描。

為了方便用戶或研究人員直觀地檢測被測試程序中可疑功能調用的存在情況,病毒檢測程序可以顯示地為不同的可疑功能調用設置標誌。例如,早期TbScan這款病毒檢測軟體就為每一項可以病毒功能調用定義一個標誌,如F、R、A等,從而直觀地判斷被檢測程序是否感染病毒。

下圖展示了TBScan不同病毒觸發的標誌。

啟發式掃描優缺點如下:

優點:

  • 能夠發現未知病毒

缺點:

  • 誤報率高

解決方案:

  • 啟發式掃描技術+傳統掃描技術

  • 可提高病毒檢測軟體的檢測率,同時有效降低了總的誤報率。

下面展示了相應的安全軟體進行「啟發式掃描+特徵值掃描」的檢測率。比如,卡巴斯基能達到99.57%,

2015年AVC測試結果,即啟發式/行為檢測能力的結果如下圖所示。

2011年/2012年測試結果如下,針對未知病毒靜態檢測能力,其中奇虎對未知病毒檢測率最高,然後是GDATA。

當時的結果報告中也給出了另一個結果——誤報率,詳見下圖。如果你期待獲得一個更嚴格的安全,誤報率高一點也是可以承受的,希望不要有漏掉的,不同的安全軟體存在不同的策略,當然同時提高檢測率,降低誤報率也非常考驗安全公司的實力。

針對啟發式掃描技術,病毒如何博弈?病毒又能採取什麼措施呢?

直接對抗

– Disable啟發式機制

– Disable反病毒軟體

繞行

– 哪些是啟發式檢測的特徵項?

– 是否有其他替代實現方式?

虛擬機檢測技術

為什麼需要虛擬機檢測技術?主要是因為:

  • 加密、多態、變形病毒的出現:導致傳統的特徵值檢測更加困難。

  • 加殼技術:對病毒體進行包裹,使得病毒代碼沒有直接反應在二進位中。

其中,加密病毒是指真實代碼被壓縮或加密,但最終需要在內存中還原。多態性病毒是指對自身二進位文件進行加密,在運行時再自解密,它在每次感染時都會改變其密鑰和解密代碼,以對抗反病毒軟體,這類病毒的代表有

在電腦病毒中有一個特殊群體,它們生活在比Windows系統更早啟動的「異度空間」,擁有對整個系統和軟體的生殺大權;同時它們又極隱蔽,檢測難度遠遠高於普通病毒,我們將其統稱為「幽靈病毒」。

一台電腦的啟動順序:BIOS(基本輸入輸出系統)-> MBR(磁碟主引導記錄)-> VBR(卷引導記錄)-> 系統加載程序(C盤根目錄)-> Windows系統。BIOS、MBR和VBR就是幽靈病毒活躍的空間。360全球率先發現了BMW、諜影等BIOS病毒和VBR病毒,以及魅影、鬼影2、暗雲Ⅱ、暗雲Ⅲ等MBR病毒,並第一時間進行防禦查殺。

早在2016年12月份,360安全衛士查殺團隊首次發現了暗雲的新一個變種,這就是今年興起的暗雲Ⅲ木馬。此版本跟以往版本最大的不同之處,在於暗雲Ⅲ加入了對360急救箱查殺對抗,占位了急救箱的驅動所有設備名。

並且暗雲Ⅲ能通過掛鈎磁碟StartIO保護自身,去掉了上一個版本Object鉤子,保留了DPC保護,在2016年12月,360安全衛士就已經專門為查殺此頑固木馬下發了新驅動,一旦發現自身設備名被占用,即判定為暗雲Ⅲ設備並開啟查殺修復。

虛擬機檢測技術如下:

  • 在反病毒系統中設置的一種程序機制,它能在內存中模擬一個小的封閉程序執行環境,所有待查文件都以解釋方式在其中被虛擬執行。通常虛擬執行一小部分代碼即可。

最後介紹虛擬機檢測技術的優點,具有如下:

  • 有效處理加密類病毒。

  • 虛擬機技術+特徵值掃描,準確率更高。

  • 虛擬機技術+啟發式掃描,有利於檢測未知變形病毒。

主動防禦技術

1.主動防禦技術概念

主動防禦檢測技術有時也被稱為行為監控等技術。

  • 動態監視所運行程序調用各種應用編程接口(API)的動作,自動分析程序動作之間的邏輯關係,自動判定程序行為的合法性。

  • 監控應用程式的敏感行為,並向用戶發出提示, 供用戶選擇。

東方微點公司創始人劉老師最早在國內提出了主動防禦技術。下圖展示了主動防禦的過程,但該技術對於用戶本身而言比較困難,因為用戶缺乏專業知識。所以反病毒公司會根據實際情況制定自身的反病毒軟體策略,結合用戶需求可能會放鬆策略。

常見可疑行為包括:

  • 對可執行文件進行寫操作

  • 寫磁碟引導區

  • 病毒程序與宿主程序的切換

  • 寫註冊表啟動鍵值

  • 遠程線程插入

  • 安裝、加載驅動

  • 鍵盤鉤子

  • 自我隱藏

  • 下載並執行等

下圖是卡巴斯基的主動防禦過程。

2.主動防禦實現機理

惡意軟體包括幾個主要的功能,

  • 敏感信息獲取

    螢幕、文件、錄像、鍵盤擊鍵、帳號和密碼、遊戲裝備等

  • 遠控

    流量轉發和流量代理等

這些功能又細分為文件管理、進程管理、服務管理、註冊表管理、螢幕監控、螢幕截取、語音視頻截獲、鍵盤記錄、窗口管理、遠程Shell等。

那麼這些功能怎麼實現的呢?主要是通過關鍵API實現。

  • 鍵盤按鍵記錄的AP

    SetWindowsHookExA

  • 文件遍歷的API

    FindFirstFileA

    FindNextFileA

  • 進程遍歷的API

    CreateToolhelp32Snapshot

    Process32First

    Process32Next

  • 文件操作的API

    fopen、fread、fwrite、fclose

  • 截屏的API

    GetDC、SelectObject、GetDIBits

  • 錄像的API

    capCreateCaptureWindow

    capGetDriverDescription

    capGetVideoFormat

下圖展示了錄音API從設備準備、緩衝區準備到開始錄音的過程。

對這些關鍵API或API序列監控,希望獲取其邏輯關係,自動判斷其合法性,判斷行為的可行性。常見檢測思路特徵包括:

  • 靜態文件特徵

  • 網絡流量特徵

  • 系統行為特徵

  • 功能行為特徵

  • 攻擊意圖

其中,功能行為特徵主要是動態監視所運行程序調用各種應用編程接口(API)的動作,自動分析程序動作之間的邏輯關係,自動判定程序行為的合法性。

這裡涉及到一個行為監控技術,它用於捕獲攔截關鍵的API信息,具體包括:

  • API調用的實參

  • API調用的返回值

  • API調用的上下文(棧)

具體的技術實現包括:

  • Hooking:修改函數指針,如IAT表

  • InlineHooking:修改函數代碼,如函數頭的幾個字節

Hooking包括IAT鉤子、IDT鉤子、SSDT鉤子、過濾驅動程序、驅動程序鉤子等,通過下圖所示的工具可以查看SSDT表是否被掛了鉤子,它會比較當前函數和原始函數的地址。

IAT Hooking顯示如下圖所示,其中MyMessageBox的地址為00002598位置,如果修改其Data後,它就會跳轉到自身設置的位置。

InlineHooking技術更為複雜一些。如下圖所示,左邊是部分描述了InlineHooking前的MessageBox,右邊是MyMessageBox在內存中的定義體。

首先將MessageBox頭部的5個字節Move到準備好的位置,其次把MessageBox的頭部5個字節給一個jmp,跳轉到自定義的MessageBox上(00401280)。

第三步,在定義好的MyMessageBox區域內給個jmp,跳轉到原來的函數位置,即7566FD23處。

最後在MyMessageBox函數體中調用原始的MessageBoxA函數地址,即004012D7地址。

行為監控可以從用戶態到核心態文件處理,再到核心態磁碟處理,有一系列的函數進行Hooking和InlineHooking進行整體的行為監控

3.優缺點

主動防禦技術的優缺點如下:

  • 優點:可發現未知惡意軟體、可準確地發現未知惡意軟體的惡意行為。

  • 缺點:可能誤報警、不能識別惡意軟體名稱,以及在實現時有一定難度。

同時給出兩個小的思考問題:

  • 對關鍵API進行監控,正常軟體和惡意軟體都會調用這些API。當捕獲到一個或一組關鍵API調用時,如何判斷這些調用實例的可信性呢?

  • 攻擊者了解Hooking技術,會有什麼對抗防範呢?反之防禦者又有哪些反制技術?

總結

寫到這裡,這篇文章就介紹完畢,希望對您有所幫助,下一篇文章作者將繼續分析機器學習與惡意代碼結合的知識,再下一篇會介紹惡意代碼檢測技術對應的安全軟體評測,包括:

  • 如此多的反病毒軟體,哪款更適合你?

  • 各個反病毒軟體採用了哪些關鍵技術?

  • 各自有什麼特色?

關鍵字: