TWI515598B - 產生純化惡意程式的方法、偵測惡意程式之方法及其系統 - Google Patents
產生純化惡意程式的方法、偵測惡意程式之方法及其系統 Download PDFInfo
- Publication number
- TWI515598B TWI515598B TW102130367A TW102130367A TWI515598B TW I515598 B TWI515598 B TW I515598B TW 102130367 A TW102130367 A TW 102130367A TW 102130367 A TW102130367 A TW 102130367A TW I515598 B TWI515598 B TW I515598B
- Authority
- TW
- Taiwan
- Prior art keywords
- program
- malicious
- data
- data stream
- instruction group
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/564—Static detection by virus signature recognition
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/568—Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/145—Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/2143—Clearing memory, e.g. to prevent the data from being stolen
Description
本發明是關於一種惡意程式之偵測方法及其系統,特別是關於一種基於靜態分析的惡意程式之偵測方法及其系統。
近年來行動裝置的使用上已超越個人電腦。在個人電腦上對於系統的惡意程式之攻擊同樣地也出現在行動裝置上,例如手機或平板電腦上對於安卓作業系統的惡意程式之攻擊。惡意程式的橫行使得行動裝置的使用者曝露在惡意程式的攻擊之威脅下,而惡意程式的快速演變亦導致防毒軟體公司無法全面地協助使用者防範惡意攻擊。因此不論產業界或學術界皆需投入更多的資源以研發可有效偵測惡意程式之技術。
惡意程式偵測技術是近年來資安重要的一環。由於惡意程式迅速演變並發窄出各式混淆技術,因此精確的偵測方法有其必要性。在個人電腦上的系統所發展出來的惡意程式偵測之技術者主要可分為靜態分析與動態分析兩種方法。於靜態分析的方法中,藉由擷取待測程式之控制流程而模塑其結構性特徵是常用的技術;然而,頻繁出現於惡意程式之良性程式特徵容易混淆此類技術。於動態分析的方法中,監控以及模塑待測程式之執行期行為亦是經常使用的技術;然而此類技術受限於行動裝置模擬器之擬真技術,無法有效觀察惡意程式與電信服務之相關行為,亦無法觀
察惡意程式與行動裝置特有元件之間的相關行為。
在具有公開號20120222120的美國發明專利申請中,揭露了藉由監控相關應用程式介面(Application Program Interface,API)所觸發的活動來識別惡意行為。在此揭露中,在桌上型個人電腦惡意程式的偵測可應用到行動裝置上;然而,在行動裝置上的惡意程式的指令群普遍地與系統共用的指令群被共同包裝起來。因此藉由整個程式的流程或是一小片段的程式之流程來分析惡意程式是否具備遂行惡意之行為將面臨到準確率不高的問題,若是未將系統共用的指令群所構成之程式片段從惡意程式中去除則容易造成誤報的情形。
在具有公開號20120072988的美國發明專利申請中,揭露了在收集惡意程式而產生控制流程與資料流的模型,並將此模型應用於偵測未知的程式。此揭露還提供一種超級區塊(super block)的新技術用以更穩健地產生流程圖模型,但是此發明並未解決惡意程式中與系統共用的指令群所構成程式流程片段對真正惡意程式造成干擾之問題。
在具有公開號20100011441的美國發明專利申請中,揭露了在減輕惡意程式中被植入的混淆之人為程式碼,以加強偵測的準確率。此揭露著重於解開被加密的惡意程式,並將被解密後的惡意程式轉換成標準的格式。然而,此發明並未解決惡意程式中與系統共用的指令群所構成程式流程片段對真正惡意程式造成干擾之問題。
在具有公告號8370931的美國發明專利中,揭露了使用動態行為吻合的技術來偵測惡意程式。此揭露設計了一種演算法,該演算法藉由比對由一特定的程序造成的系統事件與一組規則來決定是否有任何可疑的行為。
在具有公告號8266698的美國發明專利中,揭露了使用動態
行為吻合的技術來偵測惡意程式。此揭露收集在客戶端的行為特徵,以及設計了一種演算法來決定是否運作的應用程式為惡意程式。
前述的先前技術中的惡意程式語意模型都含有其他好的、良性的程式,因此偵測不夠精準。有鑑於此,期待有一種方法可將已知惡意程式樣本模型純化,並採取更為精準的比對演算法。
依據上述構想,本發明提出一種在一系統中產生一純化惡意程式的方法,該方法包含下列步驟:在一訓練階段使該系統接收一良性程式以及一已知惡意程式樣本。擷取在該良性程式中與安全性相關的一指令群。透過複數資料流路徑來追蹤與該指令群相依的一程式片段。將該程式片段分割成複數獨立資料流元素。找出在該已知惡意程式樣本中與該複數獨立資料流元素相同的一部分程式。從該已知惡意程式樣本中去除該部分程式,以產生該純化惡意程式。
依據上述構想,本發明提出一種判斷一待測程式是否包含一惡意程式的系統,該系統接收一良性程式與一已知惡意程式樣本,該系統包含一語意模型擷取子系統、一惡意程式模型純化子系統、以及一惡意特徵比對子系統。該語意模型擷取子系統擷取該良性程式中與安全性相關的一指令群、透過複數資料流路徑來追蹤與該指令群相依的一程式片段、以及將該程式片段分割成複數獨立資料流元素。該惡意程式模型純化子系統將與該複數獨立資料流元素相同的部分從該已知惡意程式樣本中去除,以形成一純化惡意程式。該惡意特徵比對子系統比對該純化惡意程式與該待測程式,當兩者相似度達到一特定標準時,則判斷該待測程式包含該惡意程式。
依據上述構想,本發明提出一種判斷一待測程式是否包含遂
行惡意行為的方法,包含下列步驟:在一非惡意程式中擷取與安全性相關的指令群來建立一語意模型。去除在一已知惡意程式樣本中與該語意模型相同的部分而形成一純化惡意程式。比對該純化惡意程式與該待測程式,當兩者相似度達到一特定標準時,則判斷該待測程式具備惡意行為。
依據上述構想,本發明提出一種判斷一待測程式是否包含遂行惡意行為之指令的方法,包含下列步驟:在一非惡意程式中擷取與安全性相關的第一指令群來建立一語意模型。在一已知惡意程式樣本中擷取與安全性相關的第二指令群,並去除該第二指令群中與該語意模型相同的部分而形成一純化惡意程式。比對該純化惡意程式與該待測程式中與安全性相關的指令群,當兩者相似度達到一特定標準時,則判斷該待測程式包含遂行惡意行為之指令。
依據上述購想,本發明提出一種判斷一待測程式是否包含遂行惡意行為之指令的方法,包含下列步驟:為一非惡意程式建立一語意模型。去除在一已知惡意程式樣本中與該語意模型相同的部分而形成一純化惡意程式。比對該純化惡意程式與該待測程式,當兩者相似度達到一特定標準時,則判斷該待測程式包含遂行惡意行為之指令。
藉由本發明之系統與方法,偵測惡意程式的錯誤率下降、偵測率提高、且待測程式與惡意程式的比對更有效率
10‧‧‧判斷一待測程式是否包含一惡意程式的系統
102‧‧‧已知惡意程式樣本
104‧‧‧惡意程式模型純化子系統
106‧‧‧待測程式
108‧‧‧模型資料庫
110‧‧‧待測資料集
120,121,122,123,124,125,126‧‧‧節點
101‧‧‧良性程式
103‧‧‧語意模型擷取子系統
105‧‧‧惡意特徵比對子系統
107‧‧‧純化惡意程式
1010‧‧‧指令群
111‧‧‧程式片段
109‧‧‧訓練資料集
G1,G2,G3,G1’,G2’,X1~Xn,
Y1~Ym‧‧‧資料流元素
RA1,PA2,RA3,PA,PB1,PB2,PB3,
PB,PC1,PC2,PC3,PC‧‧‧資料流路徑
M1,M2‧‧‧良性程式與已知惡意程式的相同的部份
1031‧‧‧關鍵點定位器
1032‧‧‧程式切片器
1033‧‧‧資料流元素產生器
第一圖:本發明判斷一待測程式是否包含一惡意程式的系統。
第二圖:本發明透過複數資料流路徑來追蹤與該指令群相依的一程式片段的示意圖。
第三圖:本發明將已知惡意程式樣本純化的示意圖。
第四圖:本發明語意模型擷取子系統的示意圖。
第五圖:本發明待測程式與純化惡意程式107相似度比較的示意圖。
第六圖:本發明在一系統中產生一純化惡意程式的方法的示意圖。
第七圖:本發明判斷一待測程式是否包含遂行惡意行為的方法的示意圖。
第八圖:本發明判斷一待測程式106是否包含遂行惡意行為之指令的方法的示意圖。
第九圖:本發明另一較佳實施例判斷一待測程式106是否包含遂行惡意行為之指令的方法的示意圖。
請參閱第一圖,其為本發明判斷一待測程式106是否包含一惡意程式的系統10。請參閱第二圖,其為本發明透過複數資料流路徑來追蹤與該指令群相依的一程式片段的示意圖。請參閱第三圖,其為本發明將已知惡意程式樣本純化的示意圖。請同時參閱第一、第二、以及第三圖,該系統10接收一良性程式101與一已知惡意程式樣本102,該系統10包含一語意模型擷取子系統103、一惡意程式模型純化子系統104、以及一惡意特徵比對子系統105。該語意模型擷取子系統103擷取該良性程式101中與安全性相關的一指令群1010、透過複數資料流路徑PA,PB,PC來追蹤與該指令群1010相依的一程式片段111、以及將該程式片段111分割成複數獨立資料流元素G1,G2,G3。該惡意程式模型純化子系統104將與該複數獨立資料流元素G1,G2,G3相同的部分從該已知惡意程式樣本102中去除,以形成一純化惡意程式107。該惡意特徵比對子系統105比對該純化惡意程式107與該待測程式106,當兩者相似度達到一特定標準時,則該惡意特徵比對子系統105判斷該待測程式106包含該惡意程式。在另一較佳實施例中,在該惡意特徵比
對子系統105判斷該待測程式106包含該惡意程式之後,該惡意程式模型純化子系統104可將該惡意程式再進一步純化,並將該惡意程式提供至該模型資料庫108,以作為新的樣本;或是不經過純化直接提供給模型資料庫108以作為新樣本。
在第一圖中,訓練資料集109包含該良性程式101與該已知惡意程式樣本102,良性程式101由該模型資料庫提供108。在一訓練階段時,該良性程式101經由語意模型擷取子系統103來擷取其語意模型,該已知惡意程式樣本101亦經由語意模型擷取子系統103來擷取其語意模型。該待測資料集110包含該待測程式106,在該訓練階段後,該惡意特徵比對子系統104比對待測程式106與該純化惡意程式107它們內部的資料流元素的相似度以判定待測程式106是否有惡意。首先,必須對該良性程式101的位元組碼(byte code)進行反組譯以找出該指令群1010,其中該指令群1010包含一隱私相關的指令群、一未受Dalvik虛擬機器保護的指令群、及一背景自動執行的指令群。對於已知惡意程式樣本102也是同樣進行反組譯以找出另一指令群,其有可能與指令群不同,而本發明主要的目的是剔除該已知惡意程式樣本102中與該良性程式101相同的該指令群1010,以純化該已知惡意程式樣本102。依據各種不同的系統平台,相同的位元組碼經過反組譯後可能會得到不同的指令;一般而言,反組譯後可得組合語言程式碼或機械語言程式碼,接下來便是找出與安全性相關的指令群。
應用程式在使用資源時必須獲得存取資源的許可,而該隱私相關的指令群會存取相關於電信服務的資訊或是個人私密資料。因此像是手機的Android作業系統或是IOS作業系統在安裝應用程式時都會詢問存取個人隱私的許可後才安裝應用程式,然而這些對於隱私資料的存取都會影響到資訊安全,故這些隱私相關的指令群的監控管理是重要的。在本發明
中該未受Dalvik虛擬機器保護的指令群以FP來表示。
Dalvik虛擬機器(DVM)是Android作業系統的核心組成部分之一。應用程式由受到DVM保護的指令群來存取作業系統的內部資源時,使用作業系統的裝置或系統將可受到保護,例如,保護其不會被資料塞爆緩衝區(buffer overflow)。該未受Dalvik虛擬機器保護的指令群包含java runtime指令、java native interface(JNI)指令、以及java Class Loader相關指令。java runtime指令可直接呼叫Android作業系統,JNI指令可呼叫原生Linux作業系統,java Class Loader相關指令不僅可呼叫原生Linux作業系統來存取DVM所保護的資源,而且還可存取不屬於DVM所保護的外部資源。在本發明中該未受Dalvik虛擬機器保護的指令群以FE來表示。
關於背景自動執行的指令群,此類指令群可探測裝置的周圍環境,或是自動於背景服務執行,例如背景開啟相機以傳送影像的指令、背景執行側錄按鍵之輸入以竊取密碼的指令等。在本發明中該背景自動執行的指令群以FR來表示。
請參閱第四圖,其為本發明語意模型擷取子系統103的示意圖。該語意模型擷取子系統103更包含一關鍵點定位器(Critical Point Locator)1031、一程式切片器(Program Slicer)1032、以及一資料流元素產生器(Foot Print Generator)1033。該關鍵點定位器1031主要的功能在於擷取與安全性相關的該指令群1010,其稱為關鍵點集(Critical Point Set),該關鍵點集為安全性相關的語意之由來,並可供進一步分析。該關鍵點集為該指令集1010,其以IP來表示,IP=IC∪IR,其中IC代表FP∪FE之指令群,IR代表一組屬於FR的指令群。
請同時參閱第二圖與第四圖,程式切片器1032的主要功能係使用收集到的關鍵點集來擷取與資料相依的指令群1010,這些資料如同第
二圖中的複數資料變數1,2,3,4,5,6,7,指令群1010如同第二圖中的指令1,2,3,4,5,6,7。在第二圖中總共有複數個資料流路徑,其分別為資料流路徑PA,PB,PC。這些資料流路徑之追蹤(tracing)可分成兩種,一種是往程式進行步驟的前步驟追溯,稱為往前追溯切片(Backward Slicing),另一種是往程式進行步驟的後步驟來找尋,稱為往後尋找切片(Forward Slicing),在第二圖中,程式進行的步驟包含經過節點120,121,122,123,124,125,126。程式切片器1032係針對該複數資料流路徑PA,PB,PC中的每一個資料變數往前追溯其來源資料,並找出執行該來源資料的所有路徑;或針對該複數資料流路徑PA,PB,PC中的每一個資料變數往後查找其後續執行的資料,並找出執行該後續執行的資料的所有路徑。例如,第二圖中的複數資料變數5係由指令5來執行,複數資料變數5的至少其中之一係來自於複數資料變數4,因此與複數資料變數4相依的指令4可被該程式切片器1032所擷取出來。複數資料變數4的至少其中之一係來自於複數資料變數2,3,或7,因此可知從節點121至節點123、節點122至節點123、節點126至節點123之資料流路徑至少分成3條路徑,其分別為PA2,PB2,以及PC2,從節點123至節點124之資料流路徑分別為PA3,PB3,以及PC3,且與複數資料變數2,3,7相依的指令2,3,7均被該程式切片器1032所擷取出來。同樣地,複數資料變數2的至少其中之一與複數資料變數3的至少其中之一均來自於複數資料變數1,因此往前追溯複數資料變數2與複數資料變數3的來源資料為複數資料變數1的至少其中之一,而與該複數資料變數1相依的指令1可被該程式切片器1032所擷取出來,亦可知從節點120至節點121、節點120至節點122的資料流路徑分別為PA1,PB1。複數資料變數4的至少其中之一亦源自於複數資料變數7,複數資料變數7的至少其中之一源自於複數資料變數6,故指令6,7可被該程式切片器1032所擷取出來,節點125至節點126、節點126至節點123的資料流
路徑PC1,PC2亦可求得。藉由追蹤與資料變數相依的指令,所有的資料流路徑PA,PA,PC可求得,其中PA=PA1→PA2→PA3,PB=PB1→PB2→PB3,PC=PC1→PC2→PC3。指令1~7亦可被擷取到而作為與安全性相關的指令群1010。另一種Forward Slicing的方法與Backward Slicing類似,只是往後追尋與往前追溯的不同而已。
在另一較佳實施例中,資料流路徑的分析如下面反組譯後的組合語言程式碼:mov va,vb
add vc,va,vb
追溯變數vc可知其由變數va與變數vb相加而得到,往回追溯變數va可知變數va是將變數vb移入變數va而得,因此源自於變數vb。故程式碼的資料流路徑為vc←va←vb,且所使用到的指令群包含mov移動指令及add加法指令,指令群可以藉由將其廣義化來增加偵測惡意程式變種的偵測率。例如,add加法指令廣義化成為包含算數邏輯的運算指令;若當上述惡意程式中的add加法指令被修改成為sub減法指令、或是邏輯運匴指令而形成變種的惡意程式時,此變種的惡意程式將可被偵測到。
在第二圖中,Backward Slicing的演算法(Algorithm)可由下列第一虛擬碼(Pseude Code 1)示意性地表示如下:
該第一虛擬碼的主要技術思想在於比較目前程式步驟的節點中的變數與上一個程式步驟的節點中的變數是否相同;若相同時則目前程式步驟的節點與上一個程式步驟的節點串連成資料流路徑,其說明如下。在該第一虛擬碼中的大寫英文字母V,E,PATH,S,R S 代表集合,下標大寫B代表追溯(Backward),小寫英文字母r代表R S 集合的元素,小寫英文字母p代表PATH集合的元素,粗體英文字部分代表程式控制流程。輸入該語意模型擷取子系統103的是已知惡意程式樣本的所有程式之控制流程圖(Control Flow Graph,CFG),其包含節點(V)與邊(E),也就是第二圖中的步驟120~125
與資料流路徑PA,PB,PC。輸入該語意模型擷取子系統103的更包含已知惡意程式樣本的第i個關鍵點ip,也就是第i個指令。輸出的是經切片之資料流元素G (ip,B) ,在本發明較佳實施例第二圖中則是經切片之資料流元素G1,G2,G3。列1中的TraceableSourceOperands(ip)的功能是將已知惡意程式樣本102中由第i個指令所執行的所有資料變數取出,並將之儲存於具有堆疊S之暫存器R S 中,取出的順序可從程式流程中最後一個變數依序往前。列2的AllSimplePathsEndAt(ip)的功能係將已知惡意程式樣本102的單一資料流路徑取出,並將之儲存於PATH集合中,例如第二圖中的單一資料流路徑PA,PB,PC。列3中的節點集合V B 與第i個指令聯集後成為新的節點集合V B ,從而第1~i個指令可被擷取到節點集合V B 。在列5中,對屬於路徑集合PATH中的每一個單一資料流路徑p重複執行列6~16的程式。在列6中,將暫存器R S 中的其中一個變數推進到堆疊集合S中。在列7中,當堆疊集合S中不是空集合時,重複執行列8~14的程式。在列8中,取出堆疊集合S中的變數至暫存器元素r。然後在列9中,藉由VertexOfferingRegister(r)的功能將暫存器元素r中的變數存至暫時的節點u。在列10中,對於任何程式的上一個步驟的節點屬於在p路徑上暫時的節點u時,重複執行列11~14的程式。在列11中,倘若程式上一個步驟的節點v的資料變數與程式目前步驟的節點r的資料變數相同時,則在列12中,程式上一個步驟的節點v加到程式目前步驟的節點的集合V B 中,且在列13中,程式上一個步驟的節點v與程式目前步驟的節點r之間的資料流路徑加入資料流路徑集合E B 中。然後在列14中,將程式上一個步驟的節點v之前一個步驟節點中的變數推進至堆疊集合S中。在列15中,中斷列10的程式for之迴圈,重覆上述列7~14的程式流程直到堆疊集合S中是空集合為止才結束而可得到單一資料流路徑,然後再一次回到列5的程式for之迴圈以找出另一單獨的資料流路徑,如此一來可將程式切片分成複數個
單一資料流,如同第二圖中的資料流PA,PB,PC所示。在列16中的程式是將包含所有節點與邊的資料流路徑所構成的圖形傳回,而形成如第三圖中的資料流元素G1,G2,或是G3。在第四圖中,已知惡意程式樣本102在經過關鍵點定位器1031收集與資料相依的指令群1010、經過程式切片器1032對已知惡意程式樣本102切片、經過該資料流元素產生器1033產生資料流元素G1,G2,以及G3後,便完成了語意模型之擷取。同樣地,當輸入該語意模型擷取子系統為該良性程式101時,則可得到如同第三圖中的資料流元素G1’,以及G2’。
列10~15的程式流程在找出單一資料流路徑,例如PA3→PA2→PA1。列6的程式則再取出另一資料變數,並找出另一條單一資料流路徑,例如PB3→PB2→PB1,以此類推,直到所有單一資料流路徑全部被找出為止,然後將資料流元素G (ip,B) 輸出。若在第二圖中,複數資料變數1,2,3與複數資料變數6,7之間互不相同,也就是其間沒有垂直連續的程式步驟之關係,這代表資料流路徑PA,PB,PC中的節點120,121,122與節點125,126互為獨立的,所以節點120,121,122與節點125,126可分割成為相互獨立的資料流元素G1,G2。在第二圖中,複數資料變數4中的至少其中之一個資料變數必定與複數資料變數2的至少其中之一個資料變數相同、複數資料變數4中的至少其中之一個資料變數必定與複數資料變數3的至少其中之一個資料變數相同、且複數資料變數4中的至少其中之一個資料變數必定與複數資料變數7的至少其中之一個資料變數相同,也就是其間有垂直連續的程式步驟之關係,而複數資料變數5與複數資料變數1,2,3之間互相獨立、複數資料變數5與複數資料變數6,7之間互相獨立,故可以將節點123,124形成資料流元素G3,其與資料流元素G1,G2相互獨立。在另一較佳實施例中,這些複數資料變數1~7也可以只是單一的資料變數。在第一圖中,輸入該語意模型
擷取子系統103的除了該已知惡意程式樣本以獲得資料流元素G1,G2,G3之外,良性程式101亦可輸入該語意模型擷取子系統103來得到資料流元素G1’與G2’,如同第三圖所示。
在第二圖中,類似於Backward Slicing,Forward Slicing的演算法(Algorithm)可由下列第二虛擬碼(Pseude Code 2)示意性地表示如下:
Forward Slicing與Back Slicing相類似,因此只說明兩者之間不同的地方。在列15的程式中,倘若下一個節點的資料變數雖與上一個節點相同,但下一個節點中的指令之執行會將此相同的資料變數的數值改掉時,則不再追蹤下一個資料變數,因其不與下一個節點相關聯。在列16的程式中,中斷列10的程式之for迴圈而回到列7的程式之while迴圈,重覆上述列7~15的程式流程直到堆疊集合S中是空集合為止才結束而可得到單一資料流路徑,然後再一次回到列5的程式for之迴圈以找出另一單獨的資料流路徑,如此一來可將程式切片分成複數個單一資料流,最後可得到資料流元素。
在第三圖中示範了純化惡意程式的圖示,已知惡意程式樣本102以及良性程式101在經過語意模型擷取子系統103後,分別形成資料流元素G1,G2,G3以及資料流元素G1’,G2’。在一較佳實施例中,將資料流元素G1與G1’比對、以及將資料流元素G3與G2’比對。比對後可知在已知惡意程式樣本102的資料流元素G1中與良性程式101的資料流元素G1’中的節點120,122相同、節點120到122的資料流路徑(邊)相同以形成集合M1;在資料流元素G3中與資料流元素G1’中的節點124相同以形成集合M2,將已知惡意程式樣本102之集合去除集合M1與M2之聯集後,即可得到純化後的惡意程式107。
在第三圖中,將已知惡意程式樣本102純化的演算法可由下列第三虛擬碼(Pseude Code 3)示意性地表示如下:
該第三虛擬碼的說明如下,在列1中對於已知惡意程式樣本102的資料流元素之集合中的每個資料流元素重複執行列2~列6之程式。在列2中對於良性程式101的資料流元素之集合中的每個資料流元素重複執行列3~列6之程式。在列3中係取出C S ,C B 兩者之資料流元素中最大相同的部份。由於已知惡意程式樣本102的資料流元素以及良性程式101的資料流元素的數量可能是複數個,如第三圖的G1~G3以及G1’~G2’所示,G1與G1’比對時找到相同部分M1,將M1與一合成集合Synthe聯集,當G3與G2’比對時找到相同部分M2,將M2及合成集合Synthe聯集而形成一新的合成集合Synthe,如同列4所示。倘若新的合成集合Synthe是重要的,則將已知惡意程式樣本102的資料流元素之集合中去除該新的合成集合Synthe,最後可得到純化後的惡意程式107,如同列5~列6的程式之處理。
請參考第五圖,其為本發明待測程式106與純化惡意程式107相似度比較的示意圖。在一較佳實施例中,待測程式106在經過該語意模型擷取子系統103的處理後形成資料流元素X1,X2,X3,...,Xn,純化惡意程式107在經過該語意模型擷取子系統103的處理後形成資料流元素Y1,Y2,
Y3,...,Ym,資料流元素如前述為各節點與連結各節點的邊所形成之圖形,因此資料流元素之間可進行圖形相似度比對。在第五圖中的惡意程式特徵比對子系統所採用的是二部圖匹配(bipartite match)來比對資料流元素X1,X2,X3,...,Xn與資料流元素Y1,Y2,Y3,...,Ym之相似度。
在第五圖中,二部圖匹配比對時會針對待測程式106與純化惡意程式107中每個資料流元素進行相似度比對。例如,資料流元素X1會與資料流元素Y1,Y2,Y3,...,Ym一一比對,資料流元素X2會與資料流元素Y1,Y2,Y3,...,Ym一一比對,以下類推。最佳的匹配狀態是一對一相似的時候,例如資料流元素X1與資料流元素Y1相似、資料流元素X2與資料流元素Y2相似、資料流元素X3與資料流元素Y3相似、以及資料流元素Xn與資料流元素Ym相似的時候,則該惡意特徵比對子系統105判斷該待測程式106與該純化惡意程式107匹配,意即該待測程式106具備遂行惡意行為。較差的匹配狀態是一對多相似的時候,例如資料流元素X1與資料流元素Y1,Y2,Y3,...,Ym都相似,但資料流元素X2與資料流元素Y2、資料流元素X3與資料流元素Y3、以及資料流元素Xn與資料流元素Ym都不相似的時候,則該惡意特徵比對子系統105判斷該待測程式106與該純化惡意程式107不匹配,意即該待測程式106不具備遂行惡意行為。待測程式106與純化惡意程式107的相似度可由其間之相似度距離來衡量,該相似度距離=(待測程式106∩純化惡意程式107)/(待測程式106∪純化惡意程式107),當該相似度距離大於一門檻值時,則該惡意特徵比對子系統105判斷該待測程式106與該純化惡意程式107匹配。
在第五圖中,待測程式106與純化惡意程式107相似度比較的演算法可由下列第四虛擬碼(Pseude Code 4)示意性地表示如下:Input:Cn:待測程式106的資料流元素集
該第四虛擬碼的說明如下,在列1中,Hn為待測程式每個節點至其相鄰兩節點的路徑之數值集,Hm為純化惡意程式每個節點至其相鄰兩節點的路徑之數值集,Hn以及Hm一開始都被初始化設為空集合。在列2~3中,對於在Cn中的每個節點,取出Cn中的每個節點至其相鄰兩節點的路徑到路徑集Pv。在列4中,將路徑集Pv內的路徑透過djb2NgramHash之雜湊功能轉換為數值,直到所有路徑都轉換為數值,此可提昇圖形比對速度。在列5~6中,對於在Cm中的每個節點,取出Cm中的每個節點至其相鄰兩節點的路徑到路徑集Pv。在列7中,將路徑集Pv內的路徑透過djb2NgramHash之雜湊功能轉換為數值,直到所有路徑都轉換為數值。最後在列8中,分數的判定可由公式| Hn∩Hm |/| Hn∪Hm |來判斷相似度的分數之高低,也就是相同路徑的個數除以所有路徑的個數。當分數超過一門檻值時,則判斷待測程式106與純化惡意程式107匹配。
請參閱第六圖,其為本發明在一系統10中產生一純化惡意程式107的方法的示意圖,該方法包含下列步驟:步驟S601,在一訓練階段使
一系統10接收一良性程式101以及一已知惡意程式樣本102。步驟S602,擷取在該良性程式101中與安全性相關的一指令群1010。步驟S603,透過複數資料流路徑PA,PB,PC來追蹤與該指令群1010相依的一程式片段111。步驟S604,將該程式片段111分割成複數獨立資料流元素G1’,G2’。步驟S605,找出在該已知惡意程式樣本102中與該複數獨立資料流元素G1’,G2’相同的一部分程式(M1∪M2)。步驟S606,從該已知惡意程式樣本102中去除該部分程式(M1∪M2),以產生該純化惡意程式107。
請同時參考第一圖、第五圖、以及第六圖,在第六圖中,該方法更包含下列步驟:在一偵測階段輸入一待測程式106至該系統10中。將該待測程式106分割成n個獨立資料流元素X1,X2,X3,...Xn,其中該n個獨立資料流元素的第n資料流元素包含一第n流程圖,該純化惡意程式107包含m個資料流元素Y1,Y2,Y3,...,Ym,該m個資料流元素的第m資料流元素包含一第m流程圖。將該第1~n流程圖與該第1~m流程圖進行相似度比對。將該第n流程圖中的所有資料路徑轉換成一第一組數值,並將該第m流程圖中的所有資料路徑轉換成一第二組數值,在該第n流程圖中的一第一資料路徑以在該第一組數值的一第一數值表示,在該第m流程圖中的一第二資料路徑以在該第二組數值的一第二數值表示,當該第一資料路徑與該第二資料路徑相同時,則該第一數值與該第二數值相同。找出在該第一組數值中與該第二組數值中相同數值的一第一個數,並找出在該第一組數值中與該第二組數值中不相同數值的一第二個數。將該第一個數除以該第一個數與該第二個數的和而得到一相似度估測值,當該相似度估測值大於或等於一特定門檻值時,則判定該第n流程圖與該第m流程圖相似。對該n個資料流元素與該m個資料流元素進行二部圖匹配(bipartite match),當該n個流程圖與該m個流程圖一對一相似時,則判斷該待測程式106具備遂行惡意行為。
請回到第一圖,待測程式106與模型資料庫108所提供的純化惡意程式107經由惡意特徵比對子系統105的相似度比對後,當待測程式106被判定具有遂行惡意行為時,則該待測程式106可作為新的惡意程式樣本存入模型資料庫108中,或是再送入惡意程式模型純化子系統104再進一步純化以提供至該模型資料庫108作為新的惡意程式樣本。
請參閱第七圖,其為本發明判斷一待測程式106是否包含遂行惡意行為的方法的示意圖,包含下列步驟:步驟S701,在一非惡意程式中擷取與安全性相關的指令群1010來建立一語意模型。去除在一已知惡意程式樣本102中與該語意模型相同的部分而形成一純化惡意程式107。比對該純化惡意程式107與該待測程式106,當兩者相似度達到一特定標準時,則判斷該待測程式106具備惡意行為。
請同時參考第五圖與第七圖,在一較佳實施例中,該待測程式106的該語意模型為資料流元素X1,X2,X3,...,Xn之集合,該非惡意程式可為該良性程式101,該良性程式101的該語意模型為資料流元素G1’,G2’之集合,該純化惡意程式107的語意模型為資料流元素Y1,Y2,Y3,...,Ym之集合。在步驟S701中建立該語意模型即前述的步驟S601、步驟S602、步驟S603、以及步驟S604所作的事情,步驟s702如同第三圖將已知惡意程式樣本102純化而形成該純化惡意程式107,步驟S703如同第五圖待測程式106與純化惡意程式107相似度比較,以判斷該待測程式106是否具備遂行惡意行為。該特定標準包含一相似度估測值以及二部圖匹配(bipartite match)的一對一相似度,該相似度估測值例如為該相似度距離=(待測程式106∩純化惡意程式107)/(待測程式106∪純化惡意程式107),該一對一相似度例如以相似度的分數=| Hn∩Hm |/| Hn∪Hm |之標準來判斷。
請參閱第八圖,其為本發明判斷一待測程式106是否包含遂
行惡意行為之指令的方法的示意圖,包含下列步驟:步驟S801,在一非惡意程式101中擷取與安全性相關的第一指令群1010來建立一語意模型G1’,G2’。步驟S802,在一已知惡意程式樣本102中擷取與安全性相關的第二指令群,並去除該第二指令群中與該語意模型相同的部分而形成一純化惡意程式107。步驟S803,比對該純化惡意程式107與該待測程式106中與安全性相關的指令群,當兩者相似度達到一特定標準時,則判斷該待測程式包含遂行惡意行為之指令。
請參閱第九圖,其為本發明另一較佳實施例判斷一待測程式106是否包含遂行惡意行為之指令的方法的示意圖,包含下列步驟:步驟S901,為一非惡意程式101建立一語意模型。步驟S902,去除在一已知惡意程式樣本102中與該語意模型相同的部分而形成一純化惡意程式107。步驟S903,比對該純化惡意程式107與該待測程式106,當兩者相似度達到一特定標準時,則判斷該待測程式106包含遂行惡意行為之指令。
請參閱表1,下列表1列出了已知惡意程式樣本102在純化之前資料流元素的數量,以及純化後的惡意程式的資料流的數量。從表1可知已知惡意程式樣本102在經過純化後的資料流元素之數量減少,節點數量也隨之減少,此可達到在偵測惡意程式時降低誤報率的功效。
請參閱表2,下列表2列出了偵測惡意程式的偵測率1、偵測率2、以及偵測率3,偵測率1是該系統10第一次偵測該待測程式106時的偵測率,該待測程式106經過系統10的處理後會產生新的惡意程式樣本,該新的惡意程式樣本可輸入該系統10以進行第二次偵測,同樣的方式可再次進行第三次偵測。最佳狀況是惡意程式樣本102與良性程式101相同的部分較多,因而純化惡意程式的功能較為顯著,在第一次偵測時其偵測率達100%,例如jSMSHider,Zsone等惡意程式。總體而言,在第二次偵測時的偵測率2會比第一次偵測時的偵測率高,在第三次偵測時的偵測率3會比第二次偵測時的偵測率2高,例如在偵測Pjapps惡意程式樣本時,偵測率3>偵測率2>偵測率1,或是平均第三次總偵測率0.927>平均第二次總偵測率0.911>平均第一次總偵測率0.839。當惡意程式樣本102與良性程式101相同的部分較少時,純化惡意程式的功能較不顯著,偵測率也會不理想,例如HippoSMS,DroidKungFu等惡意程式。
1.一種在一系統中產生一純化惡意程式的方法,該方法包含下列步驟:在一訓練階段使該系統接收一良性程式以及一已知惡意程式樣本。擷取在該良性程式中與安全性相關的一指令群。透過複數資料流路徑來追蹤與該指令群相依的一程式片段。將該程式片段分割成複數獨立資
料流元素。找出在該已知惡意程式樣本中與該複數獨立資料流元素相同的一部分程式。從該已知惡意程式樣本中去除該部分程式,以產生該純化惡意程式。
2.如實施例1所述的方法,更包含下列步驟:比對該複數獨立資料流元素和該已知惡意程式樣本,以找出該部分程式。對該良性程式的位元組碼進行反組譯以找出該指令群,其中該指令群包含一隱私相關的指令群、一未受Dalvik虛擬機器保護的指令群、及一背景自動執行的指令群。針對該複數資料流路徑中的每一個資料單元往前追溯其來源資料,並找出執行該來源資料的所有路徑,或針對該複數資料流路徑中的每一個資料單元往後查找其後續執行的資料,並找出執行該後續執行的資料的所有路徑,以獲得該程式片段。將該指令群的語意廣義化。
3.如實施例1-2所述的方法,更包含下列步驟:在一偵測階段輸入一待測程式至該系統中。將該待測程式分割成n個獨立資料流元素,其中該n個獨立資料流元素的第n資料流元素包含一第n流程圖,該純化惡意程式包含m個資料流元素,該m個資料流元素的第m資料流元素包含一第m流程圖。將該第1~n流程圖與該第1~m流程圖進行相似度比對。將該第n流程圖中的所有資料路徑轉換成一第一組數值,並將該第m流程圖中的所有資料路徑轉換成一第二組數值,在該第n流程圖中的一第一資料路徑以在該第一組數值的一第一數值表示,在該第m流程圖中的一第二資料路徑以在該第二組數值的一第二數值表示,當該第一資料路徑與該第二資料路徑相同時,則該第一數值與該第二數值相同。找出在該第一組數值中與該第二組數值中相同數值的一第一個數,並找出在該第一組數值中與該第二組數值中不相同數值的一第二個數。將該第一個數除以該第一個數與該第二個數的和而得到一相似度估測值,當該相似度估測值大於或等於一特定門檻值時,
則判定該第n流程圖與該第m流程圖相似。對該n個資料流元素與該m個資料流元素進行二部圖匹配(bipartite match),當該n個流程圖與該m個流程圖一對一相似時,則判斷該待測程式具備遂行惡意行為。
4.一種判斷一待測程式是否包含一惡意程式的系統,該系統接收一良性程式與一已知惡意程式樣本,該系統包含一語意模型擷取子系統、一惡意程式模型純化子系統、以及一惡意特徵比對子系統。該語意模型擷取子系統擷取該良性程式中與安全性相關的一指令群、透過複數資料流路徑來追蹤與該指令群相依的一程式片段、以及將該程式片段分割成複數獨立資料流元素。該惡意程式模型純化子系統將與該複數獨立資料流元素相同的部分從該已知惡意程式樣本中去除,以形成一純化惡意程式。該惡意特徵比對子系統比對該純化惡意程式與該待測程式,當兩者相似度達到一特定標準時,則判斷該待測程式包含該惡意程式。
5.如實施例4所述的系統,其中該語意模型擷取子系統包含一安全相關指令擷取器、一程式分割器、以及一資料流元素產生器(footprint generator)。該安全相關指令擷取器對該良性程式的位元組碼進行反組譯以找出該指令群,其中該指令群包含一隱私相關的指令群、一未受Dalvik虛擬機器保護的指令群、及一背景自動執行的指令群。該程式分割器對該複數資料流路徑中的每一個資料單元往前追溯其來源資料,並找出執行該來源資料的所有路徑,或針對該複數資料流路徑中的每一個資料單元往後查找其後續執行的資料,並找出執行該後續執行的資料的所有路徑,以獲得該程式片段,然後該程式分割器將該程式片段分割成複數獨立資料流元素。該資料流元素產生器(footprint generator)將該指令群的語意廣義化,並輸出複數獨立資料流元素。該系統在一訓練階段接收該良性程式,且在一偵測階段接收該待測程式。該語意模型擷取子系統中的一程式分割器將該待測
程式分割成的n個獨立資料流元素,其中該n個獨立資料流元素的第n資料流元素包含一第n流程圖,該純化惡意程式包含m個資料流元素,該m個資料流元素的第m資料流元素包含一第m流程圖。該惡意特徵比對子系統將該第1~n流程圖與該第1~m流程圖進行相似度比對、將該第N流程圖中的所有資料路徑轉換成一第一組數值,並將該第m流程圖中的所有資料路徑轉換成一第二組數值,在該第n流程圖中的一第一資料路徑以在該第一組數值的一第一數值表示,在該第m流程圖中的一第二資料路徑以在該第二組數值的一第二數值表示,當該第一資料路徑與該第二資料路徑相同時,則該第一數值與該第二數值相同。該惡意特徵比對子系統找出在該第一組數值中與該第二組數值中相同數值的一第一個數、找出在該第一組數值中與該第二組數值中不相同數值的一第二個數、將該第一個數除以該第一個數與該第二個數的和而得到一相似度估測值,當該相似度估測值大於或等於一特定門檻值時,則判定該第n流程圖與該第m流程圖相似。該惡意特徵比對子系統對該n個資料流元素與該m個資料流元素進行二部圖匹配(bipartite match),當該第n個流程圖與該第m個流程圖一對一相似時,則判斷該待測程式具備遂行惡意行為。
6.一種判斷一待測程式是否包含遂行惡意行為的方法,包含下列步驟:在一非惡意程式中擷取與安全性相關的指令群來建立一語意模型。去除在一已知惡意程式樣本中與該語意模型相同的部分而形成一純化惡意程式。比對該純化惡意程式與該待測程式,當兩者相似度達到一特定標準時,則判斷該待測程式具備惡意行為。
7.如實施例6所述的方法,更包含下列步驟:透過複數資料流路徑來追蹤與該指令群相依的一程式片段。針對該複數資料流路徑中的每一個資料單元往前追溯其來源資料,並找出執行該來源資料的所有路
徑,或針對該複數資料流路徑中的每一個資料單元往後查找其後續執行的資料,並找出執行該後續執行的資料的所有路徑,以獲得該程式片段。將該程式片段分割成複數獨立資料流元素。將該指令群的語意廣義化。比對該複數資料流元素與該已知惡意程式樣本,將與該複數資料流元素相同的部分從該已知惡意程式樣本中去除,以形成該純化惡意程式。在一偵測階段輸入該待測程式至該系統中。將該待測程式分割成n個獨立資料流元素,其中該n個獨立資料流元素的第n資料流元素包含一第n流程圖,該純化惡意程式包含m個資料流元素,該m個資料流元素的第m資料流元素包含一第m流程圖。將該第1~n流程圖與該第1~m流程圖進行相似度比對。將該第n流程圖中的所有資料路徑轉換成一第一組數值,並將該第m流程圖中的所有資料路徑轉換成一第二組數值,在該第n流程圖中的一第一資料路徑以在該第一組數值的一第一數值表示,在該第m流程圖中的一第二資料路徑以在該第二組數值的一第二數值表示,當該第一資料路徑與該第二資料路徑相同時,則該第一數值與該第二數值相同。找出在該第一組數值中與該第二組數值中相同數值的一第一個數,並找出在該第一組數值中與該第二組數值中不相同數值的一第二個數。將該第一個數除以該第一個數與該第二個數的和而得到一相似度估測值,當該相似度估測值大於或等於一特定門檻值時,則判定該第n流程圖與該第m流程圖相似。對該n個資料流元素與該m個資料流元素進行二部圖匹配(bipartite match),當該n個流程圖與該m個流程圖一對一相似時,則判斷該待測程式具備惡意行為。
8.如實施例6-7所述的方法,其中該純化惡意程式作為一新的惡意程式樣本以輸入該系統。該特定標準包含一相似度估測值以及二部圖匹配(bipartite match)的一對一相似度。對該無惡意程式的位元組碼進行反組譯以找出該指令群,其中該指令群包含一隱私相關的指令群、一未受
Dalvik虛擬機器保護的指令群、及一背景自動執行的指令群。
9.一種判斷一待測程式是否包含遂行惡意行為之指令的方法,包含下列步驟:在一非惡意程式中擷取與安全性相關的第一指令群來建立一語意模型。在一已知惡意程式樣本中擷取與安全性相關的第二指令群,並去除該第二指令群中與該語意模型相同的部分而形成一純化惡意程式。比對該純化惡意程式與該待測程式中與安全性相關的指令群,當兩者相似度達到一特定標準時,則判斷該待測程式包含遂行惡意行為之指令。
10.一種判斷一待測程式是否包含遂行惡意行為之指令的方法,包含下列步驟:為一非惡意程式建立一語意模型。去除在一已知惡意程式樣本中與該語意模型相同的部分而形成一純化惡意程式。比對該純化惡意程式與該待測程式,當兩者相似度達到一特定標準時,則判斷該待測程式包含遂行惡意行為之指令。
綜上所述,本發明的說明與實施例已揭露於上,然其非用來限制本發明,凡習知此技藝者,在不脫離本發明的精神與範圍之下,當可做各種更動與修飾,其仍應屬在本發明專利的涵蓋範圍之內。
Claims (8)
- 一種在一系統中產生一純化惡意程式的方法,該方法包含下列步驟:在一訓練階段使該系統接收一良性程式以及一已知惡意程式樣本;擷取在該良性程式中與安全性相關的一指令群;透過複數資料流路徑來追蹤與該指令群相依的一程式片段;將該程式片段分割成複數獨立資料流元素;找出在該已知惡意程式樣本中與該複數獨立資料流元素相同的一部分程式;以及從該已知惡意程式樣本中去除該部分程式,以產生該純化惡意程式,其中該方法更包含下列步驟:比對該複數獨立資料流元素和該已知惡意程式樣本,以找出該部分程式;對該良性程式的位元組碼進行反組譯以找出該指令群,其中該指令群包含一隱私相關的指令群、一未受Dalvik虛擬機器保護的指令群、及一背景自動執行的指令群;針對該複數資料流路徑中的每一個資料單元往前追溯其來源資料,並找出執行該來源資料的所有路徑,或針對該複數資料流路徑中的每一個資料單元往後查找其後續執行的資料,並找出執行該後續執行的資料的所有路徑,以獲得該程式片段;以及將該指令群的語意廣義化。
- 如申請專利範圍第1項所述的方法,更包含下列步驟:在一偵測階段輸入一待測程式至該系統中;將該待測程式分割成n個獨立資料流元素,其中該n個獨立資料流元素 的第n資料流元素包含一第n流程圖,該純化惡意程式包含m個資料流元素,該m個資料流元素的第m資料流元素包含一第m流程圖;將該第1~n流程圖與該第1~m流程圖進行相似度比對;將該第n流程圖中的所有資料路徑轉換成一第一組數值,並將該第m流程圖中的所有資料路徑轉換成一第二組數值,在該第n流程圖中的一第一資料路徑以在該第一組數值的一第一數值表示,在該第m流程圖中的一第二資料路徑以在該第二組數值的一第二數值表示,當該第一資料路徑與該第二資料路徑相同時,則該第一數值與該第二數值相同;找出在該第一組數值中與該第二組數值中相同數值的一第一個數,並找出在該第一組數值中與該第二組數值中不相同數值的一第二個數;將該第一個數除以該第一個數與該第二個數的和而得到一相似度估測值,當該相似度估測值大於或等於一特定門檻值時,則判定該第n流程圖與該第m流程圖相似;以及對該n個資料流元素與該m個資料流元素進行二部圖匹配(bipartite match),當該n個流程圖與該m個流程圖一對一相似時,則判斷該待測程式具備遂行惡意行為。
- 一種判斷一待測程式是否包含一惡意程式的系統,該系統接收一良性程式與一已知惡意程式樣本,該系統包含:一語意模型擷取子系統,擷取該良性程式中與安全性相關的一指令群、透過複數資料流路徑來追蹤與該指令群相依的一程式片段、以及將該程式片段分割成複數獨立資料流元素,其中該語意模型擷取子系統包含:一安全相關指令擷取器,對該良性程式的位元組碼進行反組譯以找出該指令群,其中該指令群包含一隱私相關的指令群、一未受Dalvik虛擬 機器保護的指令群、及一背景自動執行的指令群;一程式分割器,對該複數資料流路徑中的每一個資料單元往前追溯其來源資料,並找出執行該來源資料的所有路徑,或針對該複數資料流路徑中的每一個資料單元往後查找其後續執行的資料,並找出執行該後續執行的資料的所有路徑,以獲得該程式片段,然後該程式分割器將該程式片段分割成複數獨立資料流元素;以及一資料流元素產生器(footprint generator),將該指令群的語意廣義化,並輸出複數獨立資料流元素;一惡意程式模型純化子系統,將與該複數獨立資料流元素相同的部分從該已知惡意程式樣本中去除,以形成一純化惡意程式;以及一惡意特徵比對子系統,比對該純化惡意程式與該待測程式,當兩者相似度達到一特定標準時,則判斷該待測程式包含該惡意程式。
- 如申請專利範圍第3項所述的系統,其中:該系統在一訓練階段接收該良性程式,且在一偵測階段接收該待測程式;該語意模型擷取子系統中的一程式分割器將該待測程式分割成的n個獨立資料流元素,其中該n個獨立資料流元素的第n資料流元素包含一第n流程圖,該純化惡意程式包含m個資料流元素,該m個資料流元素的第m資料流元素包含一第m流程圖;該惡意特徵比對子系統將該第1~n流程圖與該第1~m流程圖進行相似度比對、將該第N流程圖中的所有資料路徑轉換成一第一組數值,並將該第m流程圖中的所有資料路徑轉換成一第二組數值,在該第n流程圖中的一第一資料路徑以在該第一組數值的一第一數值表示,在該第m流程圖中的一第二 資料路徑以在該第二組數值的一第二數值表示,當該第一資料路徑與該第二資料路徑相同時,則該第一數值與該第二數值相同;該惡意特徵比對子系統找出在該第一組數值中與該第二組數值中相同數值的一第一個數、找出在該第一組數值中與該第二組數值中不相同數值的一第二個數、將該第一個數除以該第一個數與該第二個數的和而得到一相似度估測值,當該相似度估測值大於或等於一特定門檻值時,則判定該第n流程圖與該第m流程圖相似;以及該惡意特徵比對子系統對該n個資料流元素與該m個資料流元素進行二部圖匹配(bipartite match),當該第n個流程圖與該第m個流程圖一對一相似時,則判斷該待測程式具備遂行惡意行為。
- 一種判斷一待測程式是否包含遂行惡意行為的方法,包含下列步驟:在一非惡意程式中擷取與安全性相關的指令群來建立一語意模型;去除在一已知惡意程式樣本中與該語意模型相同的部分而形成一純化惡意程式;以及比對該純化惡意程式與該待測程式,當兩者相似度達到一特定標準時,則判斷該待測程式具備惡意行為,其中:該純化惡意程式作為一新的惡意程式樣本以輸入系統;該特定標準包含一相似度估測值以及二部圖匹配(bipartite match)的一對一相似度;以及對該非惡意程式的位元組碼進行反組譯以找出該指令群,其中該指令群包含一隱私相關的指令群、一未受Dalvik虛擬機器保護的指令群、及一背景自動執行的指令群。
- 如申請專利範圍第5項所述的方法,更包含下列步驟:透過複數資料流路徑來追蹤與該指令群相依的一程式片段;針對該複數資料流路徑中的每一個資料單元往前追溯其來源資料,並找出執行該來源資料的所有路徑,或針對該複數資料流路徑中的每一個資料單元往後查找其後續執行的資料,並找出執行該後續執行的資料的所有路徑,以獲得該程式片段;將該程式片段分割成複數獨立資料流元素;將該指令群的語意廣義化;比對該複數資料流元素與該已知惡意程式樣本,將與該複數資料流元素相同的部分從該已知惡意程式樣本中去除,以形成該純化惡意程式;在一偵測階段輸入該待測程式至該系統中;將該待測程式分割成n個獨立資料流元素,其中該n個獨立資料流元素的第N資料流元素包含一第n流程圖,該純化惡意程式包含m個資料流元素,該m個資料流元素的第m資料流元素包含一第m流程圖;將該第1~n流程圖與該第1~m流程圖進行相似度比對;將該第n流程圖中的所有資料路徑轉換成一第一組數值,並將該第m流程圖中的所有資料路徑轉換成一第二組數值,在該第n流程圖中的一第一資料路徑以在該第一組數值的一第一數值表示,在該第m流程圖中的一第二資料路徑以在該第二組數值的一第二數值表示,當該第一資料路徑與該第二資料路徑相同時,則該第一數值與該第二數值相同;找出在該第一組數值中與該第二組數值中相同數值的一第一個數,並找出在該第一組數值中與該第二組數值中不相同數值的一第二個數;將該第一個數除以該第一個數與該第二個數的和而得到一相似度估測值,當該相似度估測值大於或等於一特定門檻值時,則判定該第n流程圖與 該第m流程圖相似;以及對該n個資料流元素與該m個資料流元素進行二部圖匹配(bipartite match),當該n個流程圖與該m個流程圖一對一相似時,則判斷該待測程式具備惡意行為。
- 一種判斷一待測程式是否包含遂行惡意行為之指令的方法,包含下列步驟:在一非惡意程式中擷取與安全性相關的第一指令群來建立一語意模型;在一已知惡意程式樣本中擷取與安全性相關的第二指令群,並去除該第二指令群中與該語意模型相同的部分而形成一純化惡意程式;以及比對該純化惡意程式與該待測程式中與安全性相關的指令群,當兩者相似度達到一特定標準時,則判斷該待測程式包含遂行惡意行為之指令,其中:該純化惡意程式作為一新的惡意程式樣本以輸入系統;該特定標準包含一相似度估測值以及二部圖匹配(bipartite match)的一對一相似度;以及對該非惡意程式的位元組碼進行反組譯以找出該指令群,其中該指令群包含一隱私相關的指令群、一未受Dalvik虛擬機器保護的指令群、及一背景自動執行的指令群。
- 一種判斷一待測程式是否包含遂行惡意行為之指令的方法,包含下列步驟:為一非惡意程式建立一語意模型; 去除在一已知惡意程式樣本中與該語意模型相同的部分而形成一純化惡意程式;以及比對該純化惡意程式與該待測程式,當兩者相似度達到一特定標準時,則判斷該待測程式包含遂行惡意行為之指令,其中:該純化惡意程式作為一新的惡意程式樣本以輸入系統;該特定標準包含一相似度估測值以及二部圖匹配(bipartite match)的一對一相似度;以及對該非惡意程式的位元組碼進行反組譯以找出該指令群,其中該指令群包含一隱私相關的指令群、一未受Dalvik虛擬機器保護的指令群、及一背景自動執行的指令群。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102130367A TWI515598B (zh) | 2013-08-23 | 2013-08-23 | 產生純化惡意程式的方法、偵測惡意程式之方法及其系統 |
US14/329,527 US9870471B2 (en) | 2013-08-23 | 2014-07-11 | Computer-implemented method for distilling a malware program in a system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
TW102130367A TWI515598B (zh) | 2013-08-23 | 2013-08-23 | 產生純化惡意程式的方法、偵測惡意程式之方法及其系統 |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201508534A TW201508534A (zh) | 2015-03-01 |
TWI515598B true TWI515598B (zh) | 2016-01-01 |
Family
ID=52481653
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW102130367A TWI515598B (zh) | 2013-08-23 | 2013-08-23 | 產生純化惡意程式的方法、偵測惡意程式之方法及其系統 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9870471B2 (zh) |
TW (1) | TWI515598B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI650671B (zh) * | 2017-10-17 | 2019-02-11 | 中華電信股份有限公司 | 惡意程式分析方法及裝置 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8966625B1 (en) | 2011-05-24 | 2015-02-24 | Palo Alto Networks, Inc. | Identification of malware sites using unknown URL sites and newly registered DNS addresses |
US8555388B1 (en) | 2011-05-24 | 2013-10-08 | Palo Alto Networks, Inc. | Heuristic botnet detection |
US9104870B1 (en) * | 2012-09-28 | 2015-08-11 | Palo Alto Networks, Inc. | Detecting malware |
US9215239B1 (en) | 2012-09-28 | 2015-12-15 | Palo Alto Networks, Inc. | Malware detection based on traffic analysis |
US9811665B1 (en) | 2013-07-30 | 2017-11-07 | Palo Alto Networks, Inc. | Static and dynamic security analysis of apps for mobile devices |
US10019575B1 (en) | 2013-07-30 | 2018-07-10 | Palo Alto Networks, Inc. | Evaluating malware in a virtual machine using copy-on-write |
US9613210B1 (en) | 2013-07-30 | 2017-04-04 | Palo Alto Networks, Inc. | Evaluating malware in a virtual machine using dynamic patching |
US9489516B1 (en) | 2014-07-14 | 2016-11-08 | Palo Alto Networks, Inc. | Detection of malware using an instrumented virtual machine environment |
CN106575337A (zh) * | 2014-08-20 | 2017-04-19 | 日本电信电话株式会社 | 漏洞发现装置、漏洞发现方法以及漏洞发现程序 |
US20160098563A1 (en) * | 2014-10-03 | 2016-04-07 | Sourceclear, Inc. | Signatures for software components |
US9805193B1 (en) | 2014-12-18 | 2017-10-31 | Palo Alto Networks, Inc. | Collecting algorithmically generated domains |
US9542554B1 (en) | 2014-12-18 | 2017-01-10 | Palo Alto Networks, Inc. | Deduplicating malware |
CN104933359B (zh) * | 2015-05-19 | 2018-04-24 | 西北大学 | 一种恶意软件的多执行路径构造方法 |
CN106295328B (zh) * | 2015-05-20 | 2019-06-18 | 阿里巴巴集团控股有限公司 | 文件检测方法、装置及系统 |
WO2017061270A1 (ja) * | 2015-10-09 | 2017-04-13 | 日本電信電話株式会社 | 脆弱性発見装置、脆弱性発見方法、および、脆弱性発見プログラム |
US10505960B2 (en) | 2016-06-06 | 2019-12-10 | Samsung Electronics Co., Ltd. | Malware detection by exploiting malware re-composition variations using feature evolutions and confusions |
US10437999B1 (en) * | 2016-08-31 | 2019-10-08 | Symantec Corporation | Runtime malware detection |
CN107977305B (zh) * | 2016-10-24 | 2019-05-03 | 百度在线网络技术(北京)有限公司 | 用于检测应用的方法和装置 |
US10708282B2 (en) * | 2017-03-27 | 2020-07-07 | International Business Machines Corporation | Unauthorized data access detection based on cyber security images |
US11609998B2 (en) * | 2017-06-14 | 2023-03-21 | Nippon Telegraph And Telephone Corporation | Device, method, and computer program for supporting specification |
US10735272B1 (en) | 2017-12-08 | 2020-08-04 | Logichub, Inc. | Graphical user interface for security intelligence automation platform using flows |
US10666666B1 (en) * | 2017-12-08 | 2020-05-26 | Logichub, Inc. | Security intelligence automation platform using flows |
US10678916B2 (en) * | 2018-03-20 | 2020-06-09 | Didi Research America, Llc | Malicious program detection |
US11010474B2 (en) | 2018-06-29 | 2021-05-18 | Palo Alto Networks, Inc. | Dynamic analysis techniques for applications |
US10956573B2 (en) | 2018-06-29 | 2021-03-23 | Palo Alto Networks, Inc. | Dynamic analysis techniques for applications |
US11196765B2 (en) | 2019-09-13 | 2021-12-07 | Palo Alto Networks, Inc. | Simulating user interactions for malware analysis |
US11055652B1 (en) * | 2019-11-22 | 2021-07-06 | Anvilogic, Inc. | System for sharing detection logic through a cloud-based exchange platform |
US11399041B1 (en) | 2019-11-22 | 2022-07-26 | Anvilogic, Inc. | System for determining rules for detecting security threats |
US11290483B1 (en) * | 2020-04-07 | 2022-03-29 | Anvilogic, Inc. | Platform for developing high efficacy detection content |
JP2022065703A (ja) * | 2020-10-16 | 2022-04-28 | 富士通株式会社 | 情報処理プログラム、情報処理方法、および情報処理装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070050755A1 (en) | 2005-08-24 | 2007-03-01 | International Business Machines Corporation | Identification of input sequences |
US8407160B2 (en) * | 2006-11-15 | 2013-03-26 | The Trustees Of Columbia University In The City Of New York | Systems, methods, and media for generating sanitized data, sanitizing anomaly detection models, and/or generating sanitized anomaly detection models |
US9246938B2 (en) * | 2007-04-23 | 2016-01-26 | Mcafee, Inc. | System and method for detecting malicious mobile program code |
US20100011441A1 (en) | 2007-05-01 | 2010-01-14 | Mihai Christodorescu | System for malware normalization and detection |
TWI358639B (en) * | 2007-10-12 | 2012-02-21 | Univ Nat Taiwan Science Tech | Malware detection system, data mining module, malw |
US8370931B1 (en) | 2008-09-17 | 2013-02-05 | Trend Micro Incorporated | Multi-behavior policy matching for malware detection |
US8266698B1 (en) | 2009-03-09 | 2012-09-11 | Symantec Corporation | Using machine infection characteristics for behavior-based detection of malware |
US8495753B2 (en) | 2010-09-16 | 2013-07-23 | Ricoh Company, Ltd. | Electronic meeting management system for mobile wireless devices |
TWI419003B (zh) * | 2010-11-12 | 2013-12-11 | Univ Nat Chiao Tung | 自動化分析與分類惡意程式之方法及系統 |
TW201227385A (en) | 2010-12-16 | 2012-07-01 | Univ Nat Taiwan Science Tech | Method of detecting malicious script and system thereof |
TWI533156B (zh) | 2011-01-21 | 2016-05-11 | 國立臺灣科技大學 | 惡意程式偵測方法與系統 |
KR20120096983A (ko) | 2011-02-24 | 2012-09-03 | 삼성전자주식회사 | 악성 프로그램 검출 방법 및 이를 구현하는 휴대 단말기 |
-
2013
- 2013-08-23 TW TW102130367A patent/TWI515598B/zh not_active IP Right Cessation
-
2014
- 2014-07-11 US US14/329,527 patent/US9870471B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI650671B (zh) * | 2017-10-17 | 2019-02-11 | 中華電信股份有限公司 | 惡意程式分析方法及裝置 |
Also Published As
Publication number | Publication date |
---|---|
US20150058984A1 (en) | 2015-02-26 |
TW201508534A (zh) | 2015-03-01 |
US9870471B2 (en) | 2018-01-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI515598B (zh) | 產生純化惡意程式的方法、偵測惡意程式之方法及其系統 | |
US9621571B2 (en) | Apparatus and method for searching for similar malicious code based on malicious code feature information | |
Venkatraman et al. | Use of data visualisation for zero-day malware detection | |
US11481492B2 (en) | Method and system for static behavior-predictive malware detection | |
Wen et al. | An Android malware detection system based on machine learning | |
Rathnayaka et al. | An efficient approach for advanced malware analysis using memory forensic technique | |
US9237161B2 (en) | Malware detection and identification | |
US9135443B2 (en) | Identifying malicious threads | |
Zhao et al. | Malicious executables classification based on behavioral factor analysis | |
JP6708781B2 (ja) | 選択装置、選択方法及び選択プログラム | |
D’Angelo et al. | Association rule-based malware classification using common subsequences of API calls | |
Nguyen et al. | Detecting repackaged android applications using perceptual hashing | |
Kumar et al. | Machine learning based malware detection in cloud environment using clustering approach | |
Ficco | Comparing API call sequence algorithms for malware detection | |
Kang et al. | A study on variant malware detection techniques using static and dynamic features | |
KR101541603B1 (ko) | 콘트롤 플로우 그래프들을 이용하는 프로그램의 표절 판단 방법 및 장치 | |
CN113468524B (zh) | 基于rasp的机器学习模型安全检测方法 | |
KR20180133726A (ko) | 특징 벡터를 이용하여 데이터를 분류하는 장치 및 방법 | |
Patil et al. | Malware analysis using machine learning and deep learning techniques | |
KR102318991B1 (ko) | 유사도 기반의 악성코드 진단 방법 및 장치 | |
Vahedi et al. | Cloud based malware detection through behavioral entropy | |
CN108573148B (zh) | 一种基于词法分析的混淆加密脚本识别方法 | |
Pendergrass et al. | Lkim: The linux kernel integrity measurer | |
Bai et al. | Detecting malicious behavior using critical api-calling graph matching | |
CN113010268B (zh) | 恶意程序识别方法及装置、存储介质、电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
MM4A | Annulment or lapse of patent due to non-payment of fees |