TW201533604A - 產生候選鈎點以偵測惡意程式之方法及其系統 - Google Patents

產生候選鈎點以偵測惡意程式之方法及其系統 Download PDF

Info

Publication number
TW201533604A
TW201533604A TW103106866A TW103106866A TW201533604A TW 201533604 A TW201533604 A TW 201533604A TW 103106866 A TW103106866 A TW 103106866A TW 103106866 A TW103106866 A TW 103106866A TW 201533604 A TW201533604 A TW 201533604A
Authority
TW
Taiwan
Prior art keywords
program
module
core
behavior
instruction
Prior art date
Application number
TW103106866A
Other languages
English (en)
Other versions
TWI553503B (zh
Inventor
Chi-Wei Wang
chong-kuan Chen
Chia-Wei Wang
Shiuh-Pyng Shieh
Original Assignee
Univ Nat Chiao Tung
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Univ Nat Chiao Tung filed Critical Univ Nat Chiao Tung
Priority to TW103106866A priority Critical patent/TWI553503B/zh
Priority to US14/512,420 priority patent/US9747452B2/en
Publication of TW201533604A publication Critical patent/TW201533604A/zh
Application granted granted Critical
Publication of TWI553503B publication Critical patent/TWI553503B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/561Virus type analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Virology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本案係提供一種判斷一待測程式是否包含一惡意行為指令的方法,包含下列步驟:提供一模擬器,該模擬器具一核心及複數鈎點,該核心具有複數函數;執行該待測程式,以觸動該等鈎點,並據以自該複數函數組合出複數特定函數組;以及依據該複數特定函數組之一調用順序,以判斷該待測程式是否包含該惡意行為指令。

Description

產生候選鈎點以偵測惡意程式之方法及其系統
本發明是關於一種惡意程式之偵測方法及其系統,特別是關於一種可基於動態及靜態分析而找出候選核心鈎點進而偵測惡意程式之偵測方法及其系統。
檢測到可疑程式是否類似於已知的惡意程式是惡意軟體研究和防禦極其重要的步驟,各種技術已經被提出並開發。取決於用來測量程式間屬性的相似性,這些技術可分為靜態分析和動態分析。在靜態分析中,對受測試的程式樣本進行檢查,只提取其特徵但沒有實際執行。
Bilar等人提出的方法為,區分惡意程式和良性程式操作碼的分佈統計分析。Tian等人測量程式內每個函數的代碼長度,並使用它們的頻率作為分類惡意程式的特徵。
另一種被提出的惡意程式自動分類系統為基於執行檔案中函數的長度及提取可列出的字串;Sathyanarayan等人建議由惡意程式家族載入的API產生簽名,該系統可掃描執行檔案,提取其關鍵的API調用的頻率來評估是否有惡意的可能性。更先進的靜態分析利用函數調用圖形來執行惡意軟件的分類。
因為不需要任何實際的執行,靜態分析的優點為其效率。然 而,由於缺乏執行時運行的資料,使得他們無法有效的偵測如多型性(polymorphism)或變形性(metamorphism)的先進惡意程式技術。雖然該等提出的方法提出辨認該等先進惡意程式技術於惡意程式中存在的方法,但如果該等先進惡意程式的可執行映像檔被打包或加密,惡意程式的行為模式便不能正確地被擷取了。
另一方面,動態分析監督惡意程式在運行時執行的程序以提取其特徵。雖然它需要更多的計算和時間,由於雲端計算開始普及的趨勢,使得它比以往任何時候都更為適用。各種以動態分析為基礎的惡意程式識別技術已被提出,該些技術由動態分析惡意程式在運行時收集到的資訊並使用數據挖掘(data mining)技術建構其辨識模型。
Dai等人提出的技術為在調試器(debugger)內進行單步運行模式執行受測程式以收集其指令軌跡(instruction trace),然後該等指令軌跡經由數據挖掘技術處理分解成抽象的操作碼以發現惡意程式之共通模式的基本操作碼區塊。
但由指令辨識惡意程式的想法仍然無法有效的辨識變形性的先進惡意程式技術。雖然提出各種技術來解決前述問題,先進的變形性的先進惡意程式技術仍然可以透過如更換指令或重新排序內存存取等行為繞過具有該辨識技術的系統。
而為了有效地開發可檢測與清除現代快速增長惡意軟體的防毒軟體,自動化的行為分析在整個分析過程中是很重要的一環。透過行為分析,具有類似的行為的惡意程式可以被劃分為群聚(cluster)以顯著降低資訊安全分析員的工作量,其有效性是取決於以下兩個事實:
首先,不是所有的惡意程式都是從頭寫起,大多數為變種,透過簡單的程式修改或以原有的程式碼進行升級。其次,雖然先進的多型性或變形性技術更改了惡意程式之代碼外觀,但無法改變其行為。
在大部分的學術研究中,考慮到一個非常普遍的特徵為該等惡意程式對API或系統調用的調用。由於惡意程式被設計以進行某些惡意的任務時,該等惡意程式不可避免地通過這些介面的運行環境進行交流;此外,程式行為的語義實際上是嵌入這些調用函數,因API的重要設計原則是具有描述性。
然而,現有的基於記錄API的行為之分析系統在面對先進惡意程式,換言之,在面對一個核心級的rootkit時失去了優勢。成功入侵的作業系統核心意味著得到了系統管理員的權利,便得到了能夠在系統中規避或破壞任何其他程序的特權。雖然基於虛擬化的檢查可以用來解決上述特權被侵入的問題,但仍然需要面對以下的挑戰:核心級的惡意程式直接調用核心級功能以完成其任務,不需依靠系統調用也無須使用者層級的API。如果沒有機制監督程式在核心內的行為,便永遠無法準確地找到該等惡意程式的模式。因此,近來亦有以rootkit作為研究主題的發明。
在美國專利公開號8397295及美國專利公開號8281393,揭露了透過檢查系統完整性(system integrity)以檢測rootkit的方法。但是此等方法只能指定特定的rootkit特徵,並無法不綁定特定的特徵和檢測一般的rootkit;此外,該等被揭露的方法只能檢測rootkit的存在,而無法辨識rootkit的類型,但該等訊息在進行rootkit分析時是相當重要的。
在美國專利公開號8464345及美國專利公開號7845009中,揭 露了利用受測程式進行的行為作為其簽名以識別是否有惡意程式/rootkit存在的方法。但是,如果沒有監控內核函數層,高層次的應用程式介面(Application Program Interface,API)可能經由複雜的rootkit技術逃過辨識。另一方面,一些較底層的資訊,例如指示序列和虛擬化陷阱,會使該等方法提取過多的資訊,因而無法有效的執行及實踐。
爰是之故,申請人有鑑於習知技術之缺失,發明出本案「產生候選鈎點以偵測惡意程式之方法及其系統」,用以改善上述缺失。
本發明之一面向係提供一種產生一候選核心鈎點之方法,包含:檢查一核心存取指令是否符合一特定格式;如是,記錄該核心存取指令之至少一位移量(offset)至一指令存取路徑,直到該核心存取指令指向一堆疊指標(stack pointer)或一架構指標(frame pointer),並於此時,記錄對應該核心存取指令之一記憶體位址至該指令存取路徑;以及追溯該指令存取路徑的一起始位置所對應之一指令初始記憶體位址為該候選核心鈎點。
本發明之一另一面向係提供一種判斷一待測程式是否包含一惡意程式的系統,包括:一純化模組.,執行數次一已知使用者層次應用程式介面(API)以縮減該介面中之隨機節點;一記錄模組,記錄該API在一核心層所執行的所有指令;一檢查模組,檢查各該指令所調用的至少一核心函式是否指向含有一引數(argument)的一記憶體位置;以及一判斷模組,判斷指向該記憶體位置之該指令為一含有一可判斷該待測程式是否包含該惡意程式的一鈎點。
本發明之再一面向係提供一種判斷一待測程式是否包含一 惡意行為指令的方法,包含下列步驟:提供一模擬器,該模擬器具一核心及複數鈎點,該核心具有複數函數;執行該待測程式,以觸動該等鈎點,並據以自該複數函數組合出複數特定函數組;依據該複數特定函數組之一調用順序,以判斷該待測程式是否包含該惡意行為指令;以及當該待測程式之該行為狀態與該等已知惡意程式之家族模式之間的相似度達到一門檻值時,判斷該待測程式包含該惡意行為指令。
1‧‧‧前置階段
101‧‧‧行使核心
101a、101b‧‧‧步驟
102‧‧‧HookFinder
102a-102m‧‧‧步驟
103‧‧‧候選鈎點
104‧‧‧系統分析人員
105‧‧‧鈎點
2‧‧‧模式訓練階段
201‧‧‧惡意程式家族樣本
202‧‧‧核心函式調用軌跡
203‧‧‧惡意程式家族的模式
3‧‧‧辨識階段
301‧‧‧受測程式
302‧‧‧受測結果判讀
400‧‧‧BehaviorProfiler
401-407‧‧‧步驟
500‧‧‧PatternGenerator
501-505‧‧‧步驟
6‧‧‧部分已知惡意模型之狀態轉移概率模型
700‧‧‧Behavior-To-State
701-715‧‧‧步驟
800‧‧‧PatternRecognizer
801-810‧‧‧步驟
91‧‧‧提供候選鈎點模組
911‧‧‧純化模組
912‧‧‧記錄模組
913‧‧‧檢查模組
914‧‧‧判斷模組
915‧‧‧鈎點輸出模組
916‧‧‧候選鈎點顯示模組
917‧‧‧輸入模組
92‧‧‧使用者
93‧‧‧待測程式
94‧‧‧行為側寫模組
941‧‧‧擷取模組
942‧‧‧檢查模組
943‧‧‧記錄模組
944‧‧‧亂數過濾模組
945‧‧‧輸出模組
95‧‧‧模式產生模組
951‧‧‧行為轉化模組
9511‧‧‧群組分類模組
9512‧‧‧距離測量模組
9513‧‧‧群聚分類模組
9514‧‧‧代表行為模組
952‧‧‧HMM學習模組
953‧‧‧記錄模組
954‧‧‧輸出模組
96‧‧‧辨別模式模組
961‧‧‧模式取得模組
962‧‧‧符合率計算模組
963‧‧‧記錄模組
964‧‧‧判斷模組
第1圖為本發明之架構示意圖。
第2圖為前置分析階段流程示意圖。
第3圖為HookFinder的流程圖。
第4圖為BehaviorProfiler的流程圖。
第5圖為PatternGenerator的流程圖。
第6圖為一個已知惡意程式之間轉移概率模型之部分。
第7圖為Behavior-To-State的流程圖。
第8圖為PatternRecognizer的流程圖。
第9圖為本發明的系統示意圖。
將於下文中說明本發明,熟悉本技術者須瞭解下文中的說明僅係作為例證用,而不用於限制本發明。
為了應對前述現有偵測惡意程式的缺失,本發明提出了一個新的方法及其系統來識別惡意程式及其核心函數調用模式。通過在作業系統核心的內部功能內設置鈎點,監控程式在核心級的活動。通常,進行這 一步時需要大量的逆向工程,因為一些作業系統,例如微軟的Windows作業系統是一個封閉代碼源(close source code)作業系統。一個模塊被設計為自動地識別可能的鈎點位置並在該程式碼內放置檢查點,提供該等鈎點位置讓惡意程式分析師驗證,並在一個配備了全系統級的污點跟踪能力的PC模擬器內實施,只要在設置鈎點的函數內有任何參數有污點標記,記錄被調用的相關參數。
本發明執行的惡意程式(由其是rootkit)行為識別分為兩個階段:模式訓練階段和辨識階段。在模式訓練階段,本發明執行已知屬於同一家族的變種rootkit並收集其重要的核心函數調用的相關參數。由所收集到的調用序列(invocation sequence)和參數,以該等行為為基礎用於建構該等家族的惡意程式的模式。該模式應該獲得該惡意程式行為的兩個最重要的指標:在核心函數的調用序列及傳入的參數,再組合隱式馬可夫鏈(Hidden Markov Chain,HMC)與數據間的距離為模式建立方法。HMC是用來描述在核心函數的概率轉移模型,以及測量參數間的相似性。在辨識階段,於擷取特徵模擬器裡面執行一可疑程式,以收集該可疑程式在核心函數調用序列以得到其行為特徵,再與那些已知的惡意程式的家族模式相比,得到一符合率以判別該可疑程式是否為一惡意程式。
以下針對本案較佳實施例之一產生候選鈎點的方法以偵測惡意程式之方法及其系統進行描述,但實際架構與所採行之方法並不必須完全符合描述之架構與方法,熟習本技藝者當能在不脫離本發明之實際精神及範圍的情況下,做出種種變化及修改。為了方便說明本案的技術內容,各實施例中相同的模組係使用相同的模組符號表示。
第1圖為本發明之架構示意圖。如第1圖所示,本發明之系統的操作可以被分成模式訓練階段2和辨識階段3,該兩個階段皆依靠BehaviorProfiler 400動態地執行一受測程式。在模式訓練階段2,該受測程式為一已知惡意程式201,並收集該惡意程式調用核心函數的行為軌跡202。在辨識階段3時,該受測程式則為一未知受測程式301。在模式訓練階段2,來自相同的惡意程式家族的調用核心函數軌跡201送入PatternGenerator 500以建立該惡意程式家族的模式203,提供稍後的辨識階段3進行辨識。該模式由隱式馬可夫模型(Hidden Markov Model,HMM)識別隱藏在核心函數中具有時間性值的調用序列以及標準化參數的字符串模式以度量參數相似性。在辨識階段3,BehaviorProfiler 400再次用來記錄受測程式在核心內的行為,接著,該PatternRecognizer 800負責從惡意程式的家族模式評估所收集的核心函式調用軌跡的偏差值。
為了避免被惡意程式檢測到本發明之系統,監控功能實現於所謂的“箱外”掛鉤(out-of-box hooking)。也就是說,本發明捕捉到的核心函數調用及參數應該在虛擬機監視器(Virtual Machine Monitor,VMM)中實現,使得在客用作業系統(guest operating system)中運行的惡意程式無法察覺。
如第1圖所示,在本發明中,在模式訓練階段2和辨識階段3之前,更包含一前置分析階段1,提供一個全自動方式發現候選鉤點103之後,再由系統分析師從中選擇適合的鈎點105。
前置分析階段的流程如第2圖所示,該流程包含下列步驟:在模擬器內行使核心後(Kernel exercise),將複數個收集到的存取包含一字 符串模式S的記憶體位置的存取指令輸入HookFinder(步驟101);經由HookFinder來找出指令存取的路徑作為候選鈎點(步驟102);輸出候選鈎點(步驟103);提供系統分析師選擇適合的鈎點(步驟104);以及輸出鈎點以提供BehaviorProfiler 400進行行為側寫(步驟105)。
行使核心為重複指示系統執行一些任務,例如數據包發送或開啟檔案之後,HookFinder便自動識別存取記憶體(memory)區域與其中的參數內容(如數據包的內容或文件的I/O緩衝區)。對於每個識別的指令,使用往前追溯切片(backward slicing)於指標(pointer)變數以檢查是否有一個穩定的指標解引用(pointer de-referencing)的步驟序列存在。如果存在,收集使用往前追溯切片後開頭指示的位置和其相關的指標結構。
Hookfinder的主要目的為發現合適的核心函數以提供可能的檢查點來分析受測程式的某些行為。本發明行使(exercise)核心來記錄執行路徑。例如,設置一個監視檔案系統I/O操作的鈎點,執行一個程式寫入和讀取用戶空間的檔案,通過記錄其控制流轉移,可以因此建立其執行路徑。此過程可以重複執行多次,以進一步縮小的執行路徑,以消除隨機發生的節點(node)。然而,執行路徑仍然包含太多代碼塊的選擇。
另外,不是所有經過上面的程序後所收集到的執行路徑的節點都適合放置鈎點。儘管取得這樣的檢查點有可能有助於行為檢測,但構建一個完整的行為分析系統需要更多資料內容。再以檔案系統I/O為例,在一個檔案I/O操作中,除了檔案的啟用外,被存取的檔案及其資料內容更可提供重要的資訊;對於一個寫入動作,寫入的資料內容亦是重要。捕捉上層抽象層的資訊,例如API和系統調用的資訊不是一個問題,但捕捉一個在 封閉源碼(closed source code)OS內的核心之核心函數是一件困難的事。
以下顯示一個從堆疊(stack)指針指向一資料結構成員字段之資料路徑(data path)的例子:; START OF FUNCTION CHUNK FOR_NtQueryValueKey loc_4ABF29 : mov eax, [ebp+0xC] mov ecx, [eax] mov dword ptr [ebp+String1.Length1], ecx mov eax, [eax+4] mov [ebp+String1.Buffer], eax mov edi, [ebp+ResultLength] jmp loc_49C049 ; END OF FUNCTION CHUNK FOR_NtQueryValueKey
該成員不在堆疊上,但在一個數據物件內被分配在堆(heap)上,然而,指向該數據物件的指標存儲在堆疊上,它應該由[EBP+0XC]引用。上述之指標引用資料路徑例子為方便解說的簡單情況,在混合(compounded)或鍊式(linked)數據結構的情況下,該等存取重要數據的資料路徑可以是複雜得多。了解這些資料路徑的內容及代表意義是必要的,因為它們是分析一程式的行為的重要資訊。
HookFinder的演算法可由下列的第一虛擬碼(Pseudo Code 1)示意性的表示如下:
該過程由在客用系統執行一個上層API調用(invocation)開始,即為f,以及一參數具有特別字符串模式S。例如,打開檔案的OpenFile( )API資料路徑是一個理想的參數,又或者是,WriteFile( )API的資料緩衝區亦是另一種合適的參數。之後,該API成功調用後,客用作業系統的核心執行任務,模擬器便檢查每個執行的指令,收集有存取該等包含字符串模式S記憶體位置的存取指令並存入E內,字符串模式S為一獨特字符串模式,因此在客用作業系統內並沒有其他的數據相符。以上兩個步驟可以有效地消除與物件行為無關的指令,迅速降低了問題的規模大小。
對於收集到E的指令,虛擬碼第4-15列執行該等在寄存器(register)對記憶體源操作元(memory source operand)進行尋址(addressing)的指令執行往前追溯切片。在虛擬碼第4列中,深度變數d初始值為0和清空列 表結構(list structure)p。虛擬碼第5列檢查當下的深度d是否已經超過了深度限制D,此限制是基於一個可用的資料路徑應該具有一有限的長度的假設,因為應該只有必要的資料輸入值被傳遞到函數內。虛擬碼第6列檢查是否該指令使用索引指標(index pointer)指向其記憶體源操作元,如是,將其位移值(offset)***p中,直至該索引指標指向一堆疊指標(stack pointer)或一架構指標(frame pointer),因為他們通常指向程序活動記錄的起始地址。虛擬碼第13列執行往前追溯切片,尋找最後一個修改指令i記憶體源操作元的最後指令,並輸出p為候選鈎點,以提供分析師選擇適合鈎點。
第3圖為HookFinder的流程圖,參照第3圖便可更容易理解HookFinder的功能,該流程包含下列步驟:在虛擬監視器調用具有字符串模式S的用戶級API(步驟101a);記錄所有記憶位址存取指令(步驟101b);得到一組記憶位址存取指令(步驟102a);檢查是否還存在下一個記憶位址存取指令,如是,執行步驟102c,如否,執行步驟103(步驟102b);初始化深度變數d為0(步驟102e);檢查當前的深度是否小於D,如是,執行步驟102e,如否,執行步驟102h(步驟102d);檢查指令是符合否一格式,如是,執行步驟102j,如否,執行步驟102f(步驟102e);將位移量offset記錄到p內(步驟102j);檢查運算元源是否為一堆疊指標或一架構指標,如是,執行步驟102m,如否,執行步驟102l(步驟102k);將運算元源的記憶體位址記錄至p內(步驟102m);深度變數d增加1,執行步驟102f(步驟102l);對I的運算元源實施往前追溯切片以求得指令i(步驟102f);檢查是否有下一個指令I,如是,執行步驟102d,如否,執行步驟102h(步驟102g);如目前的深度d小於深度D以及p[0]為一堆疊指標或架構指標,執行步驟102i(步驟102h);記錄p為一個候選 鈎點(步驟102i);重複步驟102c至步驟102m,直到無下一個指示;以及輸出所有收集到的候選鈎點(步驟103)。
由第1圖可知BehaviorProfiler 400為模式訓練階段2和識別階段3的重要元件。其作用是產生受測程式的行為軌跡202。BehaviorProfiler 400為一安裝複數個適合鈎點105的全系統污點***,傳播污點於CPU的寄存器、記憶體和硬碟內。在分析過程開始時導入受測程式到客用系統的硬碟內,被導入受測程式所佔用的硬碟區段作為污染的來源。然後,執行受測程式,將污點傳播遍及整個系統,一旦鈎點在執行過程中被觸動,便檢查其資料路徑是否達到被污染的資料。
請參閱第4圖,其係BehaviorProfiler 400的流程圖,該流程包含下列步驟:提供一受測程式(步驟401);擷取其核心指示(步驟402);檢查該核心指示是否觸動鈎點,如是,執行步驟404,如否,執行步驟405(步驟403);記錄該核心指示(步驟404);執行該核心指示(步驟405);檢查是否還有下一個核心指示存在,如是,執行步驟402,如否,執行步驟407(步驟406);以及輸出的指示已被鈎點鈎住(步驟407)。
鈎點H定義為一個三元組H=(n,loc H ,IT H ),其中loc H 是一個記憶體地址,IT H 是一個有序序列二元組(IH K,TH K),其中1≦K≦n。每個IH K的狀態{0,1}是一個函數將機器狀態S映射到一個二進制字符串ω。也就是說,它根據寄存器、記憶體還有污點狀態提取狀態S,而各TH K為一資料類型組T中之一種資料類型用以指出輸出IH K在後續的分析中應該如何來解釋。因此,當鈎點H=(n,loc H ,IT H )被觸動,將由機器狀態S分別產生出二進制字符串序列(IH 1(S),IH 2(S),...,IH n(S))。一行為B由一機 器狀態S於一個鈎點H所定義,其為一個三元組(locB,typeB,dataB),其中locB=locH,typeB=(TH 1,TH 2,...,TH n)和dataB=(IH 1(S),IH 2(S),...,IHn(S))所定義。為簡單起見,typeB和dataB的第k個元素分別以typeB[k]和dataB[k]代表。
該資料類型組T是經由經驗所定義的一個有限集。為了實現通用性,T的應該是平台無關的,同時保持最大的語義,因為它提供了更高的資料處理線索。本發明中,T定義為:{bitmap,U8,U16,U32,文字,路徑,原始資料,隨機}
bitmap表示數據應該被看作是各個bit的向量,通常用於同時表達多個布林變數的狀態;類型U8,U16,U32和分別代表的8位,16位和32位無符號整數的資料大小;文字是可讀的字符長度小於128的序列,表達所有以樹狀表示的結構,例如:檔案路徑或Windows註冊表中的路徑資料為路徑;而不能劃分為上述所列的任何類型的資料類型將被視為原始資料。
而隨機類型具有一種特別屬性,由附加或混合隨機數字到這些資料所產生。例如,TCP或UDP連接的源接口通常是由系統隨機挑選,由於其隨機性,它們對建立行為模型會產生負面影響。因此,有必要對過濾掉這些無意義的數據。因此,本發明定位系統中的虛擬隨機數產生器(pseudo random number generator),並標示一個特殊標記(污點)在其輸出,污點傳播確保由隨機數所計算出的資料可以與普通的資料區別。
以下為由廣告程式zenosearch所摘錄出的行為軌跡:
每個行為B被分為三個欄位:locB,dataB和typeB。記憶體位址locB用一ID取代,因為顯示記憶體位址是沒有意義的。由上列行為表中,觀測dataB便可很容易猜測出在靠近locB的程式碼怎樣處理資料。該廣告程式執行DNS搜尋的名稱為“www.think-adz.com”,試圖訪問一個名為“n_inst_05_01_11.log”的文件,將其數據寫入到註冊表中,然後發出一個HTTP查詢,zenosearch以用戶級應用程序執行時,這些訊息都存在於核心空間內。
由上述框架可知,該等鈎點H的最重要的目的為自機器狀態中提取資訊。因此,Hookfinder 102為一個輔助系統分析師進行逆向工程的強大工具。
提供PatternGenerator 500一組已知屬於同一家族的惡意程 式,便可試圖建立其家族模型,控制流的轉換和資料的特徵是用於辨識程式行為的強大指標,因此,有關控制流轉換和資料特徵的資料都應被擷取。此外,該模型應該能夠以概率來關聯受測程式,使得該模型預測受測對象屬於該家族的概率。
PatternGenerator 500將類似的行為與類似的參數分類在一起。將每個群集視為一個狀態,原本經過行為分類的行為序列便可轉化為一個狀態之間過渡序列,將每個locH與HMC的狀態相關聯,便可套入HMC建構狀態之間轉移概率的模型。以這種方式,行為序列可以被看作是通過由locB指定的路徑行走在鏈中的狀態間,便可訓練狀態轉移概率矩陣。但是,當提供不同的參數,即使是一個單一的程式碼就可以提供不同的功能,因此,將一個locH與一個狀態相關連可能會導致產生一個粗略的模型。
為了提供更好的識別率,使用完整連結聚合演算法(complete-linkage agglomerative algorithm)將這些來自於同一個locB的行為基於他們參數的相似度進一步劃分成更小的群體,以由下往上的方式將元素劃分為群體。完整連結聚合演算法為一個眾所周知對數據進行聚類的技術,因此以下將簡要說明算法但跳過其詳細內容。在套用組中任何兩個物體之間的相似性距離d測量函數之前,必須確定一個停止門檻值δ。群體由每一個單一元素開始形成的,任何兩個組x和y之間的距離是由以下max(d(x,y))所得出,其中xX和yY,這個過程將兩個群體之間距離小於δ的合為一群體,δ的值決定了在同一個組內的元素的相似性高低,從而影響模型建立的質量。
很顯然,距離函數的特性對劃分來自於locB的行為的質量有 直接影響,使用下面的公式來測量兩種行為B1和B2之間的距離:
其中wk是一個啟發式的加權常數,其值的範圍是(0,1)並滿足W1+W2+...+wk=1的條件。將來自於相同locB並且為相同類型的行為分割成更小的群體。因為來自同locB的typeB=(TH 1,TH 2,...,TH n)是特別限定的,將具有相同的類型兩個元素之間的距離進行測量。如前所述,typeB有七個可能的類型:bitmap,U8,U16,U32,文字,路徑和原始資料。對於不同的資料類型定義不同的距離函數d(type),以衡量行為B1和B2之間的距離。
以下針對不同類型的typeB進行說明:
Bitmap:標有bitmap的資料為被用作標誌或屬性的資料並分配給序列中的每個bit,例如檔案打開模式。此外,該序列通常具有固定的長度。因此,漢明距離函數是一個適合用於測量在兩個二進制串不同的比特數數量的度量。而正常化該bitmap,可由下列公式得到,該bitmap序列的漢明距離除以該bitamp的長度以正常化該bitmap序列的漢明距離。
U8、U16、U32:這些類型為保有一定順序關係的數字值。它們可以被看作是多個點處於實數線上,定義它們之間的距離最自然的方式是:
雖然數值不一定為實際數字,在大多數情況下,他們仍然保留了一定的順序關係並證明上述公式的含義。例如,因持有這些IP地址的機 器之間的地理差異,IP地址64.233.171.18(谷歌的Web服務器)和64.233.179.19(谷歌的另一個Web服務器)之間的距離直覺性的比64.233.171.18與220.181.6.6之間的距離較小(百度搜索引擎的Web服務器中國)。另一個重要的數據類型為與時間相關的值,它具有好的實數(real number)特點。為確保分析的一致性,每次開始分析之前,模擬器的系統時間調整到一個固定的時刻,而從隨機數產生器的資料已被前述的BehaviorProfiler 400過濾掉。
文字與路徑:要比較兩個人類可讀的字符串,通常使用Levenshtein距離,其為文字符號之間編輯距離的差值。Levenshtein距離的定義為改造原有字符串到另一個字符串需要操作的最少編輯次數。然而,顯而易見的是長度為10的不同的1bit的兩個字符串顯示出比長度1000的兩個不同的字符串中的差異僅為3bits。因此,有必要在正常化編輯距離時考慮到字符串的長度。為此,採用Marzal等人提出正常化編輯距離的方法,由最小化(minimalizing)在編輯路徑中的每個步驟所花費的平均計算成本得到。此外,計算成本為O(m.n2),其中m和n代表的字符串的長度,以及n≦m。只有那些長度小於128的數據應該被歸於文字類型,因此,計算成本仍是可以接受的。然而,被分類為路徑的資料,例如路徑名稱或註冊表項之類的字符串資料有可能長度太長時間而無法有效的計算距離,為了加速距離的計算,路徑中每個級別的子路徑用32位CRC值替換,例如,字符串“/Program Files文件/微軟Office”將被轉換為“/\x10\x97\xE8\x4A/\xC2\xDC\xC7\x7E”再送入正常化編輯距離計算器。
原始資料:將原始資料與詹森-香農散度(Jensen-Shannon divergence)作比較。詹森-香農散度是一種常規且有效的度量,計算256個字元之間可能發生的頻率。詹森-香農散度測量兩個概率分佈之間的相似性。
由上可知,PatternGenerator 500的流程可由第5圖來表示,該流程包含下列步驟:輸入屬於同一家族的已知惡意程式的行為序列(步驟501);將屬於同一家族的已知惡意程式的行為序列輸入Behavior-to-State模組700,以將屬於同一家族的已知惡意程式的行為序列轉換成狀態序列(步驟502);得到屬於同一家族的已知惡意程式的狀態序列(步驟503);代入狀態序列以學習其HMM(Hidden Markov’s Model)(步驟504);以及得到屬於同一家族的已知惡意程式的模式(步驟505)。
第6圖為一個已知惡意程式Srizbi經由PatternGenerator模組500產生的狀態之間轉移概率部分模型6。每個節點是一個狀態群聚(state cluster),並且節點內的字串是該群聚中被選作為質心的數據,每個轉移概率也被列出在每個邊上。在該模型中,我們可以觀察捕捉三種主要類型的行為:一、註冊表修改;二、數據包傳輸;以及三、並且創造進程。如第6圖所示,註冊表之間連續的修改的轉移概率是1。這符合註冊一個程序為一個系統服務需要設置多個註冊表項的慣例。
Behavior-to-State 700轉換受測程式的行為序列成為狀態移轉序列,Behavior-to-State的演算法可由下列的第二虛擬碼(Pseudo Code 2)示意性的表示如下:Algorithm 2 Behavior-To-State
在BehaviorProfiler 400執行一個屬於已知惡意程式家族的惡意程式並且建立其執行行為側寫得到一組行為序列BS,再送入Behavior-to-State模組作為輸入值;第4-6行將具有相同locb的所有的行為分成一組就可將觸動同一鈎點的行為集中;第7-8行使用之前所定義的距離函數,使用完整連結聚合演算法將這些來自於同一個locB的行為基於他們參數的相似度進一步劃分成更小的群體;第9-14行,分配一個整數n以作為每個群體的狀態號碼,即為,屬於同一群體的行為被標記同一個狀態號碼,再記錄其映射(mapping)於Key-value圖內;第15及的16行透過替換bk s為 C[bK],將每個行為序列s轉換成一狀態序列,其中sBS,再輸出n、SS及R。
得到行為序列SS便可套用馬可夫轉移概率矩陣。然而,只有HMC本身是不夠的。在辨識階段時,一個行為側寫(behavior profile)只是簡單的行為序列bp,再與PatternGenerator 600所學習到的HMC作比對,所以,在bp內所有的行為都可映射到一個狀態之後才可進行比對。為此,在群聚後每一個群組產生一個質心(centroid)以減少它的與群組內其他元素距離和。在bp內的行為與這些質心相比以求得適當的狀態。因此,第12和13行便是負責上述的過程,並且將所得到的質心被保存在R內,換言之,R便是一組具有代表性狀態的列表。
第7圖為Behavior-To-State 700的流程圖,該流程包含下列步驟:初始化(步驟701);檢查行為序列組BS內是否有下一個序列s,如是,執行步驟703,如否,執行步驟705(步驟702);檢查在序列s內是否有下一個行為b,如有,執行步驟704,如否,重複執行步驟703(步驟703);檢查群組H內是否有下一個群組h,如有,執行步驟706,如否,執行步驟710(步驟705);對群組h實施完整連結聚合演算法以取得群聚列表c1(步驟706);檢查群聚列表c1內是否有下一個群聚c,如是,執行步驟708,如否,執行步驟705(步驟707);檢查在群聚c內是否有下一個行為b,如是,執行步驟709,如否,執行步驟713(步驟708);將行為b標示為編號n,重複執行步驟709,直至群聚c內沒有下一個行為b(步驟709);由群聚c內挑選最具代表的行為r(步驟713);將r附加至行為代表列表R(步驟714);編號n加1(步驟715);檢查行為序列BS中是否有下一個序列s<b1,b2,b3,...bk>,如是,執行步驟711,如否,執行步驟712(步驟710);將<C[b1],C[b2],C[b3],...C[bk]>附加到SS(步驟711);以及 輸出狀態序列,其為n,SS,R(步驟712)。
PatternRecognizer 800的任務是產生受測程式的行為側寫,並評估與已知的惡意程式家族模式的偏差。設定機制與BehaviorProfiler 500是完全一樣的,以下將敘述行為側寫是如何與PatternGenerator 800所產生的模式做比對。
在上一個步驟所取得的狀態序列SS之後,便可學習其HMC M,連同質心R,一個3元組(n,M,R)便可以求得一個行為序列的匹配分數。求得該匹配分數的演算法可由下列的第三虛擬碼(Pseudo Code 3)示意性的表示如下:
概率的計算基本上是按照評估狀態序列概率的方法。第3-8 行對於一行為序列B內的每一個行為b,計算b與每個質心R的距離以找出哪些狀態產生這種行為,第9行累積轉移的概率。在結束時,輸出累積的幾何平均值p。
一個行為和其最接近的質心之間的距離可能是仍然高於門檻值δ,由於該行為沒有合適的狀態可以與模式相匹配,該行為應該被視為完全偏差於該模型。在這種情況下,上述第三虛擬碼的第3行的作用為保持指數k為初始值0。因此,在開始計算一個行為序列與一模式的符合度之前,搜索的矩陣M的最小值以替換Mk,0所有的元素,其中,1≦k≦n。如果行為的參數與模型的偏移值太大便會削弱最終的輸出值,即為p的值會較接近0。
得到p之後,便可找出該受測程式的行為最符合哪一個已知的惡意程式家族的模式,便可判斷該受測程式是否為惡意程式。如果p較接近0,則該受測程式為安全程式;若p較接近1,則該受測程式為惡意程式。
第8圖為PatternRecognizer 800的流程圖,該流程包含下列步驟:輸入受測程式的行為序列(步驟801);轉化行為序列為狀態序列(步驟802);檢查是否有下一個惡意程式家族模式,如是,執行步驟804,如否,執行步驟807(步驟803);由PatternGenerator 500取得惡意程式家族模式(步驟804);獲得惡意程式家族模式(步驟805);計算受測程式與該惡意程式家族模式的符合率(步驟806);找到與任一惡意程式家族相比最高的符合率(步驟807);檢查最高的符合率是否高於一門檻值,如是,執行步驟809,如否,執行步驟810(步驟808);判斷該受測程式為惡意程式(步驟809);判斷該受測程式不是惡意程式(步驟810)。
第9圖為本發明的系統示意圖,該系統包含一提供候選鈎點模組91、一行為側寫模組94、一模式產生模組95以及一辨別模式模組96。
該提供候選鈎點模組91包含一純化模組911,用以執行數次一已知使用者層次應用程式介面(API)以縮減該介面中之隨機節點;一記錄模組912,用以記錄該API在一核心層所執行的所有指令;一檢查模組913,用以檢查各該指令所調用的至少一核心函式是否指向含有一引數(argument)的一記憶體位置;以及一判斷模組914,用以判斷指向該記憶體位置之該指令是否為含有可判斷該待測程式是否包含該惡意程式的一鈎點;一鈎點輸出模組915,用以輸出複數個候選鈎點,以供使用者92選擇適合鈎點,以輸出至行為測寫模組;一候選鈎點顯示模組916,用以顯示候選鈎點於顯示器上,以供系統分析工程師92挑選適合鈎點;一輸入模組917,用以記錄挑選後的鈎點。
該行為側寫模組94接收並於該核心層內安裝該等鈎點,且接收並執行一待測程式93以產生一行為序列。該行為側寫模組94包含一擷取模組941,用以擷取待測程式93的所有指令;一檢查模組942,用以檢查該等指令是否觸動鈎點;一記錄模組943,用以記錄所有觸動鈎點的指令;一亂數過濾模組944,用以定位該系統內之一亂數產生器,將該亂數產生器之複數隨機資料做一特別標記並傳播至該系統內,分辨由該等隨機資料所產生的複數類型路徑,並過濾帶有該等特別標記的類型路徑;一輸出模組945,用以輸出待測程式93的行為測寫。
該模式產生模組95將該待測程式之狀態轉移序列代入一統 計模型,其中該統計模型建立該等鈎點間的轉移機率以產生一模式。該模式產生模組95包含一行為轉化模組951,用以將來自同一鈎點的複數行為序列轉化為一狀態轉移序列,其中該行為轉化模組951更包含一群組分類子模組9511,用以將來自同一個鈎點的行為序列分類為一群組;一距離測量子模組9512,用以測量群組內行為之間的距離;一群聚分類子模組9513,用以將距離小於一門檻值的行為分類為一群聚,並給予一個狀態編號;一代表行為子模組9514,用以選出群聚中離各個行為最近的行為作為代表行為;一HMM學習模組952,用以將狀態序列帶入以學習該待測程式的HMM模型;一記錄模組953,用以記錄該待測程式之模式;一輸出模組954,用以輸出惡意家族模式。
該辨別模式模組96接收並執行該待測程式之模式,取得複數惡意程式家族模式並進行比對,計算一符合率,找尋最大的符合率,並於該符合率大於一門檻值時,將該待測試程式樣本判讀為惡意程式。該辨別模式模組96包含一模式取得模組961,用以從模式產生模組95取得惡意程式家族的模式;一符合率計算模組962,用以計算待測程式與每一個惡意程式家族的符合率;一記錄模組963,用以記錄所有計算的符合率及其對應惡意程式家族;一判斷模組964,用以從記錄中找到最高符合率值,並檢查其是否高於一門檻值,如是,則判斷待測程式為一惡意程式。
綜上所述,本發明提出了一個新的方法來分析程式的行為與調用的核心函數,而不是在使用者空間(user space)API或系統調用,如此可確保本發明之方法能夠對付只存在於核心內的惡意程式,例如Trojan.Srizbi,該等惡意程式無法由一些已知的防毒軟體,例如ThreatExpert 或Anubis,來進行分析。
為了區分源自於受測程式或源自於背景正常活動的程序,本發明採用了全系統的污點跟踪以捕捉被感染的參數,此功能可細緻化所收集到的數據,進而產生更精確的模式來進行識別。
自動化模塊以物色合適的候選鈎點,這有助於減輕鈎點工程師的工作難度及工作量。
實施例
1.一種產生一候選核心鈎點之方法,包含:檢查一核心存取指令是否符合一特定格式;如是,記錄該核心存取指令之至少一位移量(offset)至一指令存取路徑,直到該核心存取指令指向一堆疊指標(stack pointer)或一架構指標(frame pointer),並於此時,記錄對應該核心存取指令之一記憶體位址至該指令存取路徑;以及追溯該指令存取路徑的一起始位置所對應之一指令初始記憶體位址為該候選核心鈎點。
2.如實施例1所述的方法,其中該核心存取指令為動態的執行一受測程式後,收集該受測程式的核心函式調動順序。
3.一種判斷一待測程式是否包含一惡意程式的系統,包括:一純化模組.,執行數次一已知使用者層次應用程式介面(API)以縮減該介面中之隨機節點;一記錄模組,記錄該API在一核心層所執行的所有指令; 一檢查模組,檢查各該指令所調用的至少一核心函式是否指向含有一引數(argument)的一記憶體位置;以及一判斷模組,判斷指向該記憶體位置之該指令為一含有一可判斷該待測程式是否包含該惡意程式的一鈎點。
4.如實施例3所述的系統,更包括:一鈎點輸出模組,輸出複數個鈎點;一行為側寫模組,接收並於該核心層內安裝該等鈎點,接收並執行一待測程式以產生一行為序列,其包括:一行為轉化子模組,將來自同一鈎點的複數行為序列轉化為一狀態轉移序列;一模式產生模組,將該待測程式之狀態轉移序列代入一統計模型,該統計模型建立該等鈎點間的轉移機率以產生一模式;以及一辨別模式模組,接收並執行該待測程式之模式,取得複數惡意程式家族模式並比對,計算其一符合率,其包括:一判斷子模組,由該等符合率得一最大符合率,其大於一門檻值時,該受測試程式樣本判讀為惡意程式。
5.如實施例3-4所述的系統,其中該行為轉化模組將來自同一鈎點的複數行為序列分類為複數群組,再透過一演算法將該等群組再度分割為具有近似參數的複數狀態群組,並賦予一狀態編號,將該等行為序列轉化為含有一代表狀態組、一狀態序列組並標記一狀態轉移的該狀態轉移序列。
6.如實施例3-5所述的系統,其中該模式產生模組將複數來自同一惡意程式家族的惡意程式之狀態轉移序列代入該統計模型,該統計模型建立該等鈎點間的轉移機率以產生一惡意程式家族模式。
7.如實施例3-6所述的系統,其中該行為側寫模組檢查在執行中觸動該等 核心鈎點之執行資料路徑(execution data path)是否到達複數被標記信息以產生該行為序列。
8.如實施例3-7所述的系統,其中該行為側寫模組更包括一亂數過濾模組,該亂數過濾模組定位該系統內一亂數產生器,並將該亂數產生器之複數隨機資料做一特別標記並傳播至該系統內,分辨由該等隨機資料所產生的複數類型路徑,過濾帶有該等特別標記的類型路徑。
9.一種判斷一待測程式是否包含一惡意行為指令的方法,包含下列步驟:提供一模擬器,該模擬器具一核心及複數鈎點,該核心具有複數函數;執行該待測程式,以觸動該等鈎點,並據以自該複數函數組合出複數特定函數組;以及依據該複數特定函數組之一調用順序,以判斷該待測程式是否包含該惡意行為指令。
10.如實施例9所述的方法,更包含下列步驟:當該待測程式之該行為狀態與該等已知惡意程式之家族模式之間的相似度達到一門檻值時,判斷該待測程式包含該惡意行為指令。
1‧‧‧前置階段
101‧‧‧行使核心
102‧‧‧HookFinder
103‧‧‧候選鈎點
104‧‧‧系統分析人員
105‧‧‧鈎點
2‧‧‧模式訓練階段
201‧‧‧惡意程式家族樣本
202‧‧‧核心函式調用軌跡
203‧‧‧惡意程式家族的模式
3‧‧‧辨識階段
301‧‧‧受測程式
302‧‧‧受測結果
400‧‧‧BehaviorProfiler
500‧‧‧PatternGenerator
800‧‧‧PatternRecognizer

Claims (10)

  1. 一種產生一候選核心鈎點之方法,包含:檢查一核心存取指令是否符合一特定格式;如是,記錄該核心存取指令之至少一位移量(offset)至一指令存取路徑,直到該核心存取指令指向一堆疊指標(stack pointer)或一架構指標(frame pointer),並於此時,記錄對應該核心存取指令之一記憶體位址至該指令存取路徑;以及追溯該指令存取路徑的一起始位置所對應之一指令初始記憶體位址為該候選核心鈎點。
  2. 如申請專利範圍第1項所述的方法,其中該核心存取指令為動態的執行一受測程式後,收集該受測程式的核心函式調動順序。
  3. 一種判斷一待測程式是否包含一惡意程式的系統,包括:一純化模組.,執行數次一已知使用者層次應用程式介面(API)以縮減該介面中之隨機節點;一記錄模組,記錄該API在一核心層所執行的所有指令;一檢查模組,檢查各該指令所調用的至少一核心函式是否指向含有一引數(argument)的一記憶體位置;以及一判斷模組,判斷指向該記憶體位置之該指令為一含有一可判斷該待測程式是否包含該惡意程式的一鈎點。
  4. 如申請專利範圍第3項所述的系統,更包括:一鈎點輸出模組,輸出複數個鈎點;一行為側寫模組,接收並於該核心層內安裝該等鈎點,接收並執行一待 測程式以產生一行為序列,其包括:一行為轉化子模組,將來自同一鈎點的複數行為序列轉化為一狀態轉移序列;一模式產生模組,將該待測程式之狀態轉移序列代入一統計模型,該統計模型建立該等鈎點間的轉移機率以產生一模式;以及一辨別模式模組,接收並執行該待測程式之模式,取得複數惡意程式家族模式並比對,計算其一符合率,其包括:一判斷子模組,由該等符合率得一最大符合率,其大於一門檻值時,該受測試程式樣本判讀為惡意程式。
  5. 如申請專利範圍第3項所述的系統,其中該行為轉化模組將來自同一鈎點的複數行為序列分類為複數群組,再透過一演算法將該等群組再度分割為具有近似參數的複數狀態群組,並賦予一狀態編號,將該等行為序列轉化為含有一代表狀態組、一狀態序列組並標記一狀態轉移的該狀態轉移序列。
  6. 如申請專利範圍第3-5項所述的系統,其中該模式產生模組將複數來自同一惡意程式家族的惡意程式之狀態轉移序列代入該統計模型,該統計模型建立該等鈎點間的轉移機率以產生一惡意程式家族模式。
  7. 如申請專利範圍第3-6項所述的系統,其中該行為側寫模組檢查在執行中觸動該等核心鈎點之執行資料路徑(execution data path)是否到達複數被標記信息以產生該行為序列。
  8. 如申請專利範圍第3-7項所述的系統,其中該行為側寫模組更包括一亂數過濾模組,該亂數過濾模組定位該系統內一亂數產生器,並將該亂數產生器之複數隨機資料做一特別標記並傳播至該系統內,分辨由該等隨機資料所產生的複數類型路徑,過濾帶有該等特別標記的類型路徑。
  9. 一種判斷一待測程式是否包含一惡意行為指令的方法,包含下列步驟:提供一模擬器,該模擬器具一核心及複數鈎點,該核心具有複數函數;執行該待測程式,以觸動該等鈎點,並據以自該複數函數組合出複數特定函數組;以及依據該複數特定函數組之一調用順序,以判斷該待測程式是否包含該惡意行為指令。
  10. 如申請專利範圍第9項所述的方法,更包含下列步驟:當該待測程式之該行為狀態與該等已知惡意程式之家族模式之間的相似度達到一門檻值時,判斷該待測程式包含該惡意行為指令。
TW103106866A 2014-02-27 2014-02-27 產生候選鈎點以偵測惡意程式之方法及其系統 TWI553503B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
TW103106866A TWI553503B (zh) 2014-02-27 2014-02-27 產生候選鈎點以偵測惡意程式之方法及其系統
US14/512,420 US9747452B2 (en) 2014-02-27 2014-10-11 Method of generating in-kernel hook point candidates to detect rootkits and the system thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
TW103106866A TWI553503B (zh) 2014-02-27 2014-02-27 產生候選鈎點以偵測惡意程式之方法及其系統

Publications (2)

Publication Number Publication Date
TW201533604A true TW201533604A (zh) 2015-09-01
TWI553503B TWI553503B (zh) 2016-10-11

Family

ID=53882500

Family Applications (1)

Application Number Title Priority Date Filing Date
TW103106866A TWI553503B (zh) 2014-02-27 2014-02-27 產生候選鈎點以偵測惡意程式之方法及其系統

Country Status (2)

Country Link
US (1) US9747452B2 (zh)
TW (1) TWI553503B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI622894B (zh) * 2016-12-13 2018-05-01 宏碁股份有限公司 電子裝置及偵測惡意檔案的方法
TWI672609B (zh) * 2017-12-27 2019-09-21 中華電信股份有限公司 電腦系統及其勒索軟體判別方法

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8782434B1 (en) 2010-07-15 2014-07-15 The Research Foundation For The State University Of New York System and method for validating program execution at run-time
US9063721B2 (en) 2012-09-14 2015-06-23 The Research Foundation For The State University Of New York Continuous run-time validation of program execution: a practical approach
US9069782B2 (en) 2012-10-01 2015-06-30 The Research Foundation For The State University Of New York System and method for security and privacy aware virtual machine checkpointing
US10649970B1 (en) 2013-03-14 2020-05-12 Invincea, Inc. Methods and apparatus for detection of functionality
EP2985716B1 (en) * 2013-05-20 2020-08-12 Nippon Telegraph and Telephone Corporation Information processing device and identifying method
US9940459B1 (en) 2014-05-19 2018-04-10 Invincea, Inc. Methods and devices for detection of malware
WO2016027641A1 (ja) * 2014-08-20 2016-02-25 日本電信電話株式会社 脆弱性発見装置、脆弱性発見方法、及び脆弱性発見プログラム
US9609005B2 (en) * 2014-09-25 2017-03-28 Mcafee, Inc. Cross-view malware detection
US9692773B1 (en) * 2014-12-11 2017-06-27 Symantec Corporation Systems and methods for identifying detection-evasion behaviors of files undergoing malware analyses
US9940455B2 (en) * 2015-02-25 2018-04-10 International Business Machines Corporation Programming code execution management
CN106295328B (zh) 2015-05-20 2019-06-18 阿里巴巴集团控股有限公司 文件检测方法、装置及***
CN105095755A (zh) * 2015-06-15 2015-11-25 安一恒通(北京)科技有限公司 文件识别方法和装置
US9690938B1 (en) 2015-08-05 2017-06-27 Invincea, Inc. Methods and apparatus for machine learning based malware detection
CN106682507B (zh) * 2016-05-19 2019-05-14 腾讯科技(深圳)有限公司 病毒库的获取方法及装置、设备、服务器、***
WO2017223294A1 (en) 2016-06-22 2017-12-28 Invincea, Inc. Methods and apparatus for detecting whether a string of characters represents malicious activity using machine learning
US11354117B2 (en) * 2016-07-13 2022-06-07 Oracle International Corporation Adaptable patching mechanism for mixed memory systems
US10972495B2 (en) 2016-08-02 2021-04-06 Invincea, Inc. Methods and apparatus for detecting and identifying malware by mapping feature data into a semantic space
US10540498B2 (en) * 2016-08-12 2020-01-21 Intel Corporation Technologies for hardware assisted native malware detection
TWI656453B (zh) * 2016-11-22 2019-04-11 財團法人資訊工業策進會 檢測系統及檢測方法
US10770091B2 (en) * 2016-12-28 2020-09-08 Google Llc Blind source separation using similarity measure
US10614224B2 (en) * 2017-05-15 2020-04-07 International Business Machines Corporation Identifying computer program security access control violations using static analysis
US10565376B1 (en) 2017-09-11 2020-02-18 Palo Alto Networks, Inc. Efficient program deobfuscation through system API instrumentation
US11429725B1 (en) * 2018-04-26 2022-08-30 Citicorp Credit Services, Inc. (Usa) Automated security risk assessment systems and methods
CN109446755B (zh) * 2018-09-30 2021-03-30 龙芯中科技术股份有限公司 内核钩子函数保护方法、装置、设备以及存储介质
US11522875B1 (en) * 2018-10-21 2022-12-06 ShieldIOT Ltd. Security breaches detection by utilizing clustering of weighted outliers
CN110147671B (zh) * 2019-05-29 2022-04-29 奇安信科技集团股份有限公司 一种程序内字符串提取方法及装置
CN111078458B (zh) * 2019-12-31 2023-09-15 潍柴动力股份有限公司 一种电子控制单元及其软件兼容性检测方法、装置和汽车
RU2757409C1 (ru) * 2020-06-19 2021-10-15 Акционерное общество "Лаборатория Касперского" Эмулятор и способ эмуляции
US20230315848A1 (en) * 2022-03-29 2023-10-05 Acronis International Gmbh Forensic analysis on consistent system footprints
US20240015183A1 (en) * 2022-07-11 2024-01-11 Nvidia Corporation Deception-based firewall enhancement
CN116204892B (zh) * 2023-05-05 2023-08-08 中国人民解放军国防科技大学 漏洞处理方法、装置、设备以及存储介质

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB0017201D0 (en) * 2000-07-14 2000-08-30 Ibm Generalised program hooks
US7093239B1 (en) * 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
US8037526B1 (en) * 2005-03-30 2011-10-11 Symantec Corporation Detecting buffer overflows using frame pointer characteristics
US9171157B2 (en) * 2006-03-28 2015-10-27 Blue Coat Systems, Inc. Method and system for tracking access to application data and preventing data exploitation by malicious programs
US7845009B2 (en) 2006-05-16 2010-11-30 Intel Corporation Method and apparatus to detect kernel mode rootkit events through virtualization traps
US20080016339A1 (en) * 2006-06-29 2008-01-17 Jayant Shukla Application Sandbox to Detect, Remove, and Prevent Malware
US8769672B2 (en) * 2006-08-03 2014-07-01 Symantec Corporation Code injection prevention
US8281393B2 (en) 2006-11-08 2012-10-02 Mcafee, Inc. Method and system for detecting windows rootkit that modifies the kernel mode system service dispatch table
KR100938672B1 (ko) * 2007-11-20 2010-01-25 한국전자통신연구원 악성 코드에 의해 삽입된 동적 연결 라이브러리 검출 장치 및 방법
US8462949B2 (en) * 2007-11-29 2013-06-11 Oculis Labs, Inc. Method and apparatus for secure display of visual content
US8397295B1 (en) 2007-12-20 2013-03-12 Symantec Corporation Method and apparatus for detecting a rootkit
US8370941B1 (en) * 2008-05-06 2013-02-05 Mcafee, Inc. Rootkit scanning system, method, and computer program product
US8464345B2 (en) 2010-04-28 2013-06-11 Symantec Corporation Behavioral signature generation using clustering
CN102314561B (zh) * 2010-07-01 2014-07-23 电子科技大学 基于api hook的恶意代码自动分析方法和***
US8893274B2 (en) * 2011-08-03 2014-11-18 Trend Micro, Inc. Cross-VM network filtering
TWI579726B (zh) * 2012-01-10 2017-04-21 精品科技股份有限公司 操作歷程的記錄方法、以及資訊安全的管理方法和系統
US8745745B2 (en) * 2012-06-26 2014-06-03 Lynuxworks, Inc. Systems and methods involving features of hardware virtualization such as separation kernel hypervisors, hypervisors, hypervisor guest context, hypervisor context, rootkit detection/prevention, and/or other features
US9203862B1 (en) * 2012-07-03 2015-12-01 Bromium, Inc. Centralized storage and management of malware manifests
US9223962B1 (en) * 2012-07-03 2015-12-29 Bromium, Inc. Micro-virtual machine forensics and detection
US10572665B2 (en) * 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US9117081B2 (en) * 2013-12-20 2015-08-25 Bitdefender IPR Management Ltd. Strongly isolated malware scanning using secure virtual containers
US9454676B2 (en) * 2014-06-27 2016-09-27 Intel Corporation Technologies for preventing hook-skipping attacks using processor virtualization features

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI622894B (zh) * 2016-12-13 2018-05-01 宏碁股份有限公司 電子裝置及偵測惡意檔案的方法
TWI672609B (zh) * 2017-12-27 2019-09-21 中華電信股份有限公司 電腦系統及其勒索軟體判別方法

Also Published As

Publication number Publication date
TWI553503B (zh) 2016-10-11
US20150242626A1 (en) 2015-08-27
US9747452B2 (en) 2017-08-29

Similar Documents

Publication Publication Date Title
TWI553503B (zh) 產生候選鈎點以偵測惡意程式之方法及其系統
CN109583200B (zh) 一种基于动态污点传播的程序异常分析方法
She et al. Neutaint: Efficient dynamic taint analysis with neural networks
Cesare et al. Classification of malware using structured control flow
Wang et al. In-memory fuzzing for binary code similarity analysis
Corona et al. Lux0r: Detection of malicious pdf-embedded javascript code through discriminant analysis of api references
Ghiasi et al. Dynamic VSA: a framework for malware detection based on register contents
Huang et al. Software crash analysis for automatic exploit generation on binary programs
Karbalaie et al. Semantic malware detection by deploying graph mining
Jie et al. Survey on software vulnerability analysis method based on machine learning
CN105740711B (zh) 一种基于内核对象行为本体的恶意代码检测方法及***
Zhao et al. {StateFuzz}: System {Call-Based}{State-Aware} Linux Driver Fuzzing
Chen et al. Cati: Context-assisted type inference from stripped binaries
Chaumette et al. Automated extraction of polymorphic virus signatures using abstract interpretation
Partenza et al. Automatic identification of vulnerable code: Investigations with an ast-based neural network
Lin et al. A value set analysis refinement approach based on conditional merging and lazy constraint solving
Chen et al. ARMORY: An automatic security testing tool for buffer overflow defect detection
Suhuan et al. Android malware detection based on logistic regression and XGBoost
Wang et al. Tunter: assessing exploitability of vulnerabilities with taint-guided exploitable states exploration
Li et al. Locating vulnerability in binaries using deep neural networks
CN108573148B (zh) 一种基于词法分析的混淆加密脚本识别方法
Wang et al. Locality Based Cache Side-channel Attack Detection∗
Ganz et al. Hunting for Truth: Analyzing Explanation Methods in Learning-based Vulnerability Discovery
CN114647845A (zh) 一种恶意样本延时代码的检测识别方法及装置
Lu et al. Kernel vulnerability analysis: A survey

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees