TW201717086A - 偵測計算設備中的程序上的軟體攻擊 - Google Patents

偵測計算設備中的程序上的軟體攻擊 Download PDF

Info

Publication number
TW201717086A
TW201717086A TW105126184A TW105126184A TW201717086A TW 201717086 A TW201717086 A TW 201717086A TW 105126184 A TW105126184 A TW 105126184A TW 105126184 A TW105126184 A TW 105126184A TW 201717086 A TW201717086 A TW 201717086A
Authority
TW
Taiwan
Prior art keywords
virtual memory
program
structural attributes
memory regions
processor
Prior art date
Application number
TW105126184A
Other languages
English (en)
Inventor
蘇德哈安尼爾古瑪 加薩拉
拉嘉爾許 庫伯塔
那依姆 伊斯萊
Original Assignee
美商.高通公司
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 美商.高通公司 filed Critical 美商.高通公司
Publication of TW201717086A publication Critical patent/TW201717086A/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/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • 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/52Monitoring 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
    • 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/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting
    • 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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

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

Abstract

各個實施例包括用於偵測在計算設備上執行的程序上的軟體攻擊的方法。各個實施例方法可包括監視由程序利用的複數個虛擬記憶體區域的結構屬性,以及將所監視的結構屬性與該複數個VMR的期望結構屬性進行比較。各個實施例方法可進一步包括基於所監視的結構屬性與期望結構屬性之間的比較來決定所監視的結構屬性是否表示程序的異常行為。

Description

偵測計算設備中的程序上的軟體攻擊
本案係關於偵測計算設備中的程序上的軟體攻擊。
各種計算設備(包括桌面型電腦、膝上型設備、平板設備和行動通訊設備(諸如智慧型電話))根據儲存在記憶體中的軟體指令來執行應用和系統程序。某些應用程序或系統服務程序可能在計算設備上具有較高的存取准許(例如,根存取准許)。這些程序可能是控制劫持軟體的目標,該控制劫持軟體意欲控制特權程序並且執行惡意程式碼。控制劫持軟體的目標可以嘗試獲得shell(殼層)或者偷取私有資料。
存在數種不同類型的控制劫持軟體攻擊。例如,「堆疊溢出」可涉及建立堆疊緩衝器溢出並且執行插入到堆疊中的惡意程式碼。堆緩衝器溢出類似地工作以使堆溢出並且導致對插入在記憶體中的另一位置中的惡意程式碼的執行。返回導向程式設計或攻擊產生堆疊溢出,繼以執行現有代碼的所選部分,這些部分在被連接在一起時達成惡意目的。
各個實施例包括在計算設備上實現的用於偵測在計算設備上執行的程序上的軟體攻擊的方法。各個實施例可包括監視由該程序利用的複數個虛擬記憶體區域的結構屬性,將所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較,以及基於所監視的結構屬性與期望結構屬性之間的比較來決定所監視的結構屬性是否表示該程序的異常行為。
一些實施例可進一步包括回應於決定所監視的結構屬性工作表示異常行為而發起保護動作。在一些實施例中,該複數個虛擬記憶體區域的所監視的結構屬性可包括由該程序利用的虛擬記憶體區域的數目、該複數個虛擬記憶體區域之每一者虛擬記憶體區域的大小、該複數個虛擬記憶體區域的位址空間佈局改變、該複數個虛擬記憶體區域的存取准許改變、及/或該複數個虛擬記憶體區域的狀態轉變歷史。
在一些實施例中,監視由該程序利用的複數個虛擬記憶體區域的結構屬性可包括儲存關於該程序正在其中執行的當前虛擬記憶體區域的資訊,接收關於當前正被該程序執行的指令的新資訊,基於該資訊來決定是否已存在從當前虛擬記憶體區域的轉變,以及在決定已存在從當前虛擬記憶體區域的轉變之際記錄從當前虛擬記憶體區域到新虛擬記憶體區域的轉變。在一些實施例中,該新資訊可包括程式計數器和程序辨識符。
在一些實施例中,監視由該程序利用的複數個虛擬記憶體區域的結構屬性可包括儲存關於該程序正在其中執行的當前虛擬記憶體區域的資訊,在該複數個虛擬記憶體區域上實現一或多個虛擬記憶體區域追蹤策略,根據該一或多個虛擬記憶體區域追蹤策略來決定是否已存在從當前虛擬記憶體區域的轉變,以及在決定已存在從當前虛擬記憶體區域的轉變之際記錄從當前虛擬記憶體區域到新虛擬記憶體區域的轉變。在一些實施例中,該一或多個虛擬記憶體區域追蹤策略可包括選擇性追蹤、週期性追蹤、伺機追蹤、以及基於頁錯誤的追蹤。
在一些實施例中,將所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較可包括將一組規則應用於所監視的結構屬性,其中該組規則基於該複數個虛擬記憶體區域的期望結構屬性。在一些實施例中,將所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較可包括對該複數個虛擬記憶體區域的期望結構屬性進行建模,以及將所監視的結構屬性與該模型進行比較。
進一步實施例包括一種包含記憶體和處理器的計算設備,該計算設備配置有處理器可執行指令以執行以上概述的方法的操作。進一步實施例包括其上儲存有處理器可執行指令的非瞬態處理器可讀儲存媒體,這些指令被配置成使計算設備的處理器執行以上概述的方法的操作。進一步實施例包括一種計算設備,該計算設備包括用於執行以上概述的方法的操作的功能的裝置。
將參照附圖詳細描述各實施例。在可能之處,相同元件符號將貫穿附圖用於代表相同或類似部分。對特定實例和實現所作的引用是用於說明性目的,而無意限定所寫說明書或請求項的範疇。
如本文中所使用的,術語「計算設備」代表以下各項中的任一個或全部:蜂巢式電話、智慧型電話、個人或行動多媒體播放機、個人資料助理、桌面型電腦、膝上型電腦、平板電腦、伺服器、智慧型電腦、智慧手錶、掌上電腦、無線電子郵件接收器、啟用網際網路的多媒體蜂巢式電話、無線遊戲控制器、以及包括可程式設計處理器和記憶體的類似的個人或企業電子設備。
計算設備執行各種應用和系統程序,其中的一些程序可具有對計算設備的低層的特權存取(諸如根存取)。這些程序可能遭受嘗試在低層控制計算設備的控制劫持軟體攻擊。這些攻擊的實例可包括堆疊或堆緩衝器溢出攻擊以及返回導向程式設計攻擊。
每個程序具有特定的內部記憶體結構或者由作業系統維護的內部狀態藍圖。例如,每個程序具有程序位址空間,該程序位址空間佈局在記憶體中的何處儲存用於該程序的各種指令和資料。程序通常載入相同的庫集合,並且庫依賴性通常在運行時間期間不動態地變化。另外,程序一般以可預測的方式執行代碼並且穿越其位址空間。這對於被設計成重複地處置相似的請求集合的系統服務而言可能尤其如此。
當發生控制劫持軟體攻擊時,目標程序的內部記憶體結構以及穿越位址空間的行為可能變化。例如,惡意軟體可能導致程序的控制流的改變(亦即,執行不同的指令集或者以不同的次序執行)。記憶體中從其執行代碼的區域可能是不同的。
概言之,各個實施例提供了用於監視程序的記憶體結構的內部狀態或藍圖以偵測由控制劫持軟體攻擊引起的異常執行行為的系統和方法。程序的程序位址空間可被劃分成數個虛擬記憶體區域(VMR),該數個VMR表示記憶體中在程序位址空間內的儲存資料、功能或指令的毗連部分。計算設備中的觀察器或分析器單元可為計算設備上執行的程序監視這些VMR的各個結構屬性。所監視的結構屬性可包括由該程序利用的VMR的數目、每個VMR的大小、VMR的位址空間佈局改變、VMR的存取准許改變、以及VMR狀態轉變歷史。結構屬性可獨立於每個VMR內儲存的資料。
程序的VMR的所監視的結構屬性可隨後與該程序的VMR的期望結構屬性進行比較。若所監視的結構屬性偏離期望結構屬性,則這可以是該程序已出於惡意目的而被劫持的指示。計算設備可隨後作為回應採取某些保護動作,例如經由終止該程序、發起反惡意軟體程式、或者從該程序鎖定作業系統的某些部分。
圖1A是適於實現各個實施例的計算設備100的功能方塊圖。計算設備100可以尤其是桌面型電腦、膝上型設備、平板設備、任何類型的行動電子設備、伺服器、或者任何類型的消費者或企業電子設備。計算設備100可包括用於執行軟體指令的中央處理單元(CPU)102、以及用於儲存代碼和資料的記憶體104。記憶體104可以是儲存處理器可執行指令的非瞬態電腦可讀取儲存媒體。記憶體104可儲存作業系統106。數個系統程序108及/或應用程序110可在作業系統106內在計算設備100上執行。程序108、110中的一些程序可屬於對計算設備100的低層具有較高存取准許的某些特權應用或系統服務(例如,根或基本輸入/輸出系統(BIOS)存取)。
計算設備100亦可包括在作業系統106內執行以監視程序108、110的VMR的屬性的觀察器/分析器單元112。觀察器/分析器單元112可採集和監視VMR的結構屬性並且將所監視的結構屬性與程序108、110的VMR的期望結構屬性進行比較。觀察器/分析器單元112可將一或多個技術用於監視和比較結構屬性,包括建模、機器學習、以及基於規則的分析。觀察器/分析器單元112可產生指示一或多個程序108、110何時展現出異常行為的輸出。
計算設備100亦可包括未在圖1A中圖示的各種其他組件。例如,計算設備100可包括數個輸入、輸出、以及處理元件,諸如揚聲器、話筒、數據機、收發機、用戶標識模組(SIM)卡、按鍵板、滑鼠、顯示螢幕或觸控式螢幕、各種連接埠、音訊或圖形處理器、額外硬碟、以及本發明所屬領域中已知的許多其他組件。
圖1B圖示了圖1A的觀察器/分析器單元112的實例邏輯組件和資訊流。觀察器/分析器單元112可在處理器(諸如CPU 102)內執行並且可被配置成使用行為分析技術來表徵程序的VMR的期望和觀察到的結構屬性。觀察器/分析器單元112可包括觀察器單元120、提取器單元122、分析器單元124、以及表徵單元126。
在各種實現中,觀察器/分析器單元112的全部或諸部分可被實現為觀察器單元120、提取器單元122、分析器單元124、以及表徵單元126的一部分。單元120-126中的每一者可以是在軟體、硬體、或其組合中實現的執行緒、程序、守護程序、子系統、或組件。在各個實現中,單元120-126可實現在作業系統的各部分內(例如,在核心內、在核心空間中、在使用者空間中等)、在單獨的程式或應用內、在專門的硬體緩衝器或處理器中,或其任何組合。在一些實現中,單元120-126中的一者或多者可實現為在計算設備100的一或多個處理器上執行的軟體指令。
表徵單元126可被配置成表徵程序的行為以及由程序利用的VMR的期望結構屬性。表徵單元126可使用經表徵的行為和期望結構屬性來基於所觀察程序的行為產生至少一個模型。表徵單元126可將所觀察的行為與行為模型進行比較。表徵單元126亦可聚集由其他單元作出的對所觀察程序的行為與各個行為模型的比較。表徵單元126可基於所聚集的比較來決定所觀察程序是否表現得異常。表徵單元126可使用由觀察器單元120採集的資訊來決定由所觀察程序利用的VMR的結構屬性,並且使用任何或全部此類資訊來表徵所觀察程序的行為。
觀察器單元120可被配置成觀察/監視程序的行為並且基於觀察/監視來決定VMR的結構屬性。結構屬性可包括由該程序利用的VMR的數目、每個VMR的大小、VMR的位址空間佈局改變、VMR的存取准許改變、以及VMR狀態轉變歷史。
觀察器單元120可向提取器單元122傳達(例如,經由記憶體寫操作、功能調用等)所採集所觀察的行為資料(包括所觀察的結構屬性)。提取器單元122可被配置成從日誌檔接收或檢索所觀察的行為資料並且使用此資訊基於所觀察的結構屬性來產生一或多個行為向量。每個行為向量可在值或向量資料結構中簡潔地描述所觀察的結構屬性。在一些實現中,向量資料結構可包括一系列數位,其之每一者數位表示由觀察器單元120採集的即時資料的部分或完整表示。
在一些實現中,提取器單元122可被配置成從由觀察器單元120產生的日誌檔產生行為向量。行為向量可充當使行為分析系統(例如,分析器單元124)能夠快速地辨識、標識、或分析即時程序行為和VMR結構屬性的辨識符。在一些實現中,提取器單元122可被配置成產生大小為「n」的行為向量,其之每一者行為向量將即時程序行為和VMR結構屬性映射到n維空間中。在一實例實現中,提取器單元122可被配置成產生行為向量以包括可被輸入表徵單元126中的特徵/決策節點的資訊,以便產生針對關於程序的VMR結構屬性的一或多個特徵的查詢的回復以表徵該程序的行為。
提取器單元122可(例如,經由記憶體寫操作、功能調用等)將所產生的行為向量傳達給分析器單元124。分析器單元124可被配置成將行為向量應用於分類器模型以表徵該程序的所觀察的行為,諸如由該程序利用的VMR的所監視的結構屬性指示該程序是合法的、非法的、還是異常的。
分類器模型可以是包括可被用於評價程序活動的特定特徵或態樣的資料及/或資訊結構(例如,特徵向量、行為向量、組件清單等)的行為模型。分類器模型亦可包括用於監視由程序利用的VMR的數目的決策準則。分類器模型可被預先安裝在計算設備100上、從網路服務器下載或接收、在觀察器單元120中產生,或其任何組合。分類器模型可經由使用行為建模技術、機器學習演算法、或者產生分類器模型的其他方法來產生。
在一些實現中,分類器模型可以是因某些類型的程序而異的(例如,應用程序相對於系統程序)。此類分類器模型可包括集中式資料模型,該集中式資料模型僅包括/測試被決定為與評價特定程序的行為最相關的因程序而異的特徵/條目。
在一些實現中,分析器單元124可被配置成調整分析器單元124評價的程序的特徵的細微性或細節水平,特別是在對程序行為的分析為非結論性時。例如,分析器單元124可被配置成回應於決定它不能表徵程序的行為而通知觀察器單元120。作為回應,觀察器單元120可基於從分析器單元124發送的通知(例如,基於所觀察的行為特徵的分析結果的通知)改變所監視的VMR結構屬性及/或調整其觀察的細微性(亦即,觀察所觀察的行為的細節水平及/或頻繁程度)。
觀察器單元120亦可觀察新的或額外的VMR結構屬性,並且將該新的/額外的所觀察的行為資料發送給提取器單元122和分析器單元124以供進一步分析/分類。觀察器單元120與分析器單元124之間的此類回饋通訊可使觀察器/分析器單元112能夠遞迴地增加觀察的細微性(亦即,作出更詳細及/或更頻繁的觀察)或者改變所觀察的即時資料。觀察器/分析器單元112可增加觀察的細微性或者改變所觀察的即時資料,直至分析器單元124能夠在可靠性範圍內評價和表徵程序的行為或者評價和表徵程序的行為至多達閾值可靠性水平。此類回饋通訊亦可使觀察器/分析器單元112能夠調整或修改行為向量和分類器模型,而不消耗過量的處理、記憶體、或能量資源。
在各個實現中,分類器模型可以是基於程序行為的特定特徵的一組推升式決策樹樁。推升式決策樹樁是可能正好具有一個節點(亦即,一個測試問題或測試條件)和權重值的一級決策樹,且可適合用在資料/行為的輕量非處理器密集的二元分類中。向推升式決策樹樁應用行為向量可得到二元答案(例如,1或0,是或否,等等)。例如,由推升式決策樹樁測試的問題/條件可包括由設備話筒偵測到的字或聲音是否表徵RF敏感環境,或者由設備相機捕捉的另一設備的圖像是否可被辨識為RF輻射產生的危害,它們的答案可以是二元的。推升式決策樹樁是高效的,因為此類模型不需要大量處理資源以產生二元答案。推升式決策樹樁亦可以是高度可並行化的,從而使得能夠並行地/同時地應用或測試許多樹樁(例如,由單元、計算設備、或系統中的多個核或處理器應用或測試)。
圖2圖示了可在計算設備100上執行的程序(例如,程序108、110中的一者)的程序位址空間200的實例。計算設備上的作業系統通常為在計算設備上執行的每個活躍程序建立單獨的位址空間。程序位址空間200可包括若干位址範圍或虛擬記憶體區域(VMA)。每個VMA可被用於將該程序的給定部分映射和載入到記憶體中。取決於程序載入多少代碼、使用多少堆疊和堆、以及載入多少庫,程序位址空間200可以是稀疏的或者密集的。
程序位址空間200可以包含使用者堆疊204的VMA。使用者堆疊204是被用於儲存由程序建立的臨時變數的記憶體區域。使用者堆疊204可被構造為先入後出(FILO)資料結構,其中變數自底向上儲存在該堆疊中並且首先從堆疊頂出堆疊。程序位址空間200亦可包括libc庫208和其他共享庫206的VMA。庫206、208可包含數個程序利用的數個共享函數。每個程序可將庫206、208的副本載入到其位址空間中。程序位址空間200亦可包括堆210的VMA,該堆210可被用於儲存全域變數和其他資訊。例如,可以使用malloc()和free()函數來將資訊添加到堆210以及從堆210中移出。程序位址空間200亦可包括正文212的VMA,該正文212可包括用於程序的代碼的主體。
VMA可被細分成多個虛擬記憶體區域(VMR),其中每個VMR可以是VMA內儲存資料、指令、或函數的毗連位址範圍。例如,libc庫208的VMA可包含VMR 208a,該VMR 208a例如可涵蓋libc庫208中的特定函數。
計算設備的CPU可利用包含當前正由程序執行的指令的位址的程式計數器(PC)214。當位址空間的不同部分被調用時,PC 214可圍繞程序位址空間200跳躍。例如,PC 214可在正文212中啟動並且在函數被調用時移至libc庫208。PC 214可隨後移至堆疊204以讀取或寫入在該函數內使用的臨時變數,並且隨後移回到正文212。
程序位址空間200可能遭受在圖3A-5中圖示的若干不同類型的控制劫持軟體攻擊。一種類型的攻擊為堆疊緩衝器溢出攻擊,或即「堆疊溢出」攻擊。此處示出用於圖示堆疊緩衝器溢出攻擊的實例代碼: void foo(char *str) { char buf[128]; strcopy(buf, str); printf(「input string stored on stack\n」); }
圖3A圖示了在foo函數被調用時可載入堆疊302的內容。堆疊302可包括為變數buf[128]分配的記憶體、函數的返回位址、堆疊訊框指標、以及輸入str參數。流程圖304圖示在使用堆疊302從程序的正文調用foo函數時該程序的正常行為。程序可在正文中開始並且隨後移至libc庫的VMR(libc.R1)以調用strcpy函數,移至libc庫的另一VMR(libc.R3)以調用printf函數,並且隨後移回到程序的正文。
在堆疊緩衝器溢出攻擊中,攻擊者的目標是使堆疊上的緩衝器溢出,將特定代碼注入到堆疊上,以及修改堆疊上的返回位址以跳轉到所注入的代碼。圖3B圖示了已被惡意軟體損害的堆疊312。惡意軟體可用大於所分配的變數buf[128]的string變數來調用foo函數,從而導致蓋寫堆疊312的其他部分或VMR的緩衝器溢出。輸入變數可包含所注入的代碼(亦即,Exec(「/bin/sh」))以及指向所注入的代碼的返回位址。由此,當程式計數器達到堆疊312中的返回位址時,該程式計數器會跳轉到所注入的代碼並且執行該代碼。
流程圖314圖示在使用堆疊312從程序的正文調用foo函數時該程序的異常行為。該程序可在正文中開始並且隨後移至libc庫的VMR(libc.R1)以調用strcpy函數。然而,strcpy函數的返回位址已由緩衝器溢出而被蓋寫並且現在指向堆疊312中所注入的代碼(Exec(「/bin/sh」))。程式計數器將跳轉到所注入的代碼並且執行該代碼。
另一種類型的控制劫持攻擊是堆緩衝器溢出攻擊。此處示出用於圖示堆緩衝器溢出攻擊的實例代碼: struct compare { char buf[128]; voice (func*) (void); } void do_compare (struct compare *comp, char *one, char *two) { strcpy(comp->buf, one); strcat(comp->buf, two); return comp->func(comp->buf, 「/data/secretstore/」); }
圖4A圖示了在do_compare函數被調用時可載入堆402的內容。堆402可包括為變數[128]分配的記憶體、以及指向函數的指標。流程圖404圖示在使用堆402從程序的正文調用do_compare函數時該程序的正常行為。程序可在正文中開始並且隨後移至libc庫的VMR(libc.R1)以調用strcpy函數,並且隨後移回到正文的另一VMR以執行該函數的剩餘部分。
在堆緩衝器溢出攻擊中,攻擊者的目標是使堆上的所分配的緩衝器溢出,將特定代碼注入記憶體的另一部分,以及蓋寫函數指標以將函式撥叫重定向至所注入的代碼。圖4B圖示了已被惡意軟體損害的堆412。惡意軟體可用比所分配的緩衝器大的char變數來調用do_compare函數,從而導致用指向所注入的代碼的另一函數指標來蓋寫儲存在堆412中的函數指標的緩衝器溢出。由此,當程式計數器達到堆412中的函數指標時,該程式計數器會跳轉到所注入的代碼並且執行該代碼。
流程圖414圖示在使用堆412從程序的正文調用do_compare函數時該程序的異常行為。該程序可在正文中開始並且隨後移至libc庫的VMR(libc.R1)以調用strcpy函數。然而,儲存在堆412中的函數指標現在指向所注入的代碼而不是指回到正文。程式計數器將跳轉到所注入的代碼並且執行該代碼。
另一種類型的控制劫持攻擊為返回導向程式設計攻擊,這種攻擊將計算設備中預先存在的代碼的各個小片段串接在一起以執行惡意功能。預先存在的代碼的這些小片段可被稱為返回導向程式設計(ROP)小程式。ROP小程式是在返回指令中結束的微型代碼序列,並且可位於共享庫中或者由程序載入的程序位址空間的正文中。ROP小程式可按特定的順序次序來調用以獲取shell或者完成其他惡意任務。
圖5圖示了已被損害以順序調用數個ROP小程式的堆疊502。堆疊502可經由類似於參照圖3B描述的緩衝器溢出而被損害。在此情形中,堆疊502被蓋寫以按特定次序包括指向數個ROP小程式的位址連同虛設的堆疊訊框指針。流程圖504示出在從堆疊502執行時程序的異常行為。該程序可在正文中開始並且隨後移至儲存在堆疊502中的位址。然而,堆疊502中的頂部位址現在指向可位於libc庫中的VMR(例如,libc.Ri)中的ROP小程式1。在執行ROP小程式1之後,程式計數器返回到堆疊502並且隨後移至可位於libc庫中的另一VMR(例如,libc.Rk)中的ROP小程式2。計算設備可按ROP小程式被安排在堆疊502中的次序來執行每個ROP小程式。
其他類型的控制劫持攻擊可包括基於整數溢出的攻擊,該攻擊可與堆疊或堆緩衝器溢出攻擊類似地工作。針對函數中的整數變數的緩衝器分配可被分配成小於該變數,這會導致溢出。函數指標可被插入到溢出中,該指標指向所注入的惡意程式碼。
所有這些類型的控制劫持軟體攻擊一般例如經由更改堆疊、堆、或指向位址空間的各個部分的指標來改變程序分配和穿越程序位址空間的方式。程序通常可具有相當可預測的常式,並且因此可具有用於分配或穿越程序位址空間的可預測行為。由此,程序的位址空間可被監視並且與期望行為進行比較,以及可以偵測指示控制劫持攻擊的異常行為。
圖6圖示了計算設備中的VMR監視系統600的实例實現的方塊圖。VMR監視系統600可包括觀察器/分析器單元112,該觀察器/分析器單元112將由程序利用的數個VMR的所監視的結構屬性602到610作為輸入,並且將所監視的結構屬性與該程序的VMR的期望結構屬性進行比較。該比較和分析可基於一組規則,或者可以藉由機器學習經由對VMR的期望結構屬性和程序的位址空間進行建模來達成。若所監視的結構屬性不匹配期望結構屬性,則觀察器/分析器單元112可向計算設備中的其他组件發送輸出614。輸出614可包括採取保護動作的指令,諸如終止程序、從程序鎖定作業系統的某些部分、發起反惡意軟體程式、或其他動作。
程序可具有包括數個VMR的相關聯的位址空間。這些VMR可包括程序的堆疊、堆、庫、以及正文的部分。例如,每個VMR可對應於函數、變數、指標、或者儲存在程序位址空間中的資料或指令的其他離散片段。
VMR的結構屬性可包括定義或描述VMR的結構、分配、藍圖、或隨時間的狀態轉變歷史的屬性。結構屬性可以獨立於資料。換言之,VMR內儲存的實際資料或內容可以不被包括為結構屬性,並且VMR的結構屬性的改變可不取決於VMR中儲存的資料的改變。所監視的結構屬性602到610是可由觀察器/分析器單元112監視的各種結構屬性的非限定性實例。
一個所監視的結構屬性602可以是位址空間中存在的VMR的數目。程序通常可在正常執行期間利用特定數目的VMR。控制劫持攻擊可涉及分配記憶體的新區段以儲存外來或所注入的代碼或資料。因此,VMR的數目的改變可指示由控制劫持軟體攻擊造成的異常行為。VMR的數目可經由核心映射器來監視,該核心映射器在每當建立新VMR時調用函數(例如,do_mmap())。
另一所監視的結構屬性604可以是每個VMR的大小。例如,分配給由程序使用的某些變數的記憶體可以跨多次執行是相同的,所以VMR的大小的改變可指示由控制劫持軟體攻擊(例如,人工地建立緩衝器溢出的攻擊)造成的異常行為。VMR的大小可經由核心映射器、對malloc()函數的調用、以及將新函數添加到程序位址空間的庫中來監視。
另一所監視的結構屬性606可以是程序的位址空間佈局改變。程序通常可用特定的內部結構來安排其位址空間,以使得VMR相對於彼此位於相同的位置中,並且該佈局不會跨多次執行改變。因此,位址空間的佈局的改變可指示由控制劫持軟體攻擊造成的異常行為。程序的位址空間佈局改變可經由核心映射器來監視。
另一所監視的結構屬性608可以是VMR的存取准許改變。每個VMR可被程序指派一般跨多次執行不會改變的存取准許。因此,VMR的存取准許的改變可指示由控制劫持軟體攻擊造成的異常行為。VMR的存取准許改變可經由核心虛擬記憶體管理器來監視,該核心虛擬記憶體管理器可在每當對VMR的准許發生改變時調用。
另一所監視的結構屬性610可以是程序隨時間的VMR狀態轉變歷史。程序可按跨多次執行不改變的可預測次序來瀏覽各個VMR。因此,當程序參與VMR之間未預料到的一系列狀態轉變時,這可以指示由控制劫持軟體攻擊造成的異常行為。VMR狀態轉變歷史可經由基於硬體或軟體的解決方案來監視,這些解決方案參照圖7、9和10來進一步詳細地描述。
圖7圖示了用於監視在計算設備上執行的程序的VMR轉變的硬體實現。系統700包括執行程序並且維護該程序的程式計數器的CPU核702。系統700亦可包括維護在計算設備上執行的各個程序的VMR的記憶體範圍的VMR核心驅動器704。系統700亦可包括VMR追蹤器硬體塊706。VMR追蹤器硬體塊706可包括接收來自CPU核702的程式計數器以及來自VMR核心驅動器704的當前程序ID(PID)和VMR範圍作為輸入的VMR轉變記錄器712。VMR追蹤器硬體塊706可儲存數個VMR表710,這些VMR表710可包括由PID索引的用於在計算設備上執行的每個程序的表。每個表可儲存由該程序分配的VMR以及程序正在其中執行的最後一個已知VMR。
週期性地,VMR轉變記錄器712可接收VMR範圍、PID及/或程式計數器作為輸入。這些輸入標識要被監視的程序以及由程式計數器指向的當前指令。VMR轉變記錄器712可將輸入資訊與VMR表710進行比較以決定所監視的程序仍在相同的VMR中還是已經轉變到不同的VMR(例如,從程序的正文到庫函數的函式撥叫)。若已存在VMR轉變,則VMR轉變記錄器712可記錄VMR轉變並且將其儲存在資料緩衝器708中。VMR轉變和PID亦可被發送給VMR核心驅動器704。以此方式,VMR追蹤器硬體塊706可偵測和監視在計算設備上執行的程序中的VMR轉變。
儘管VMR追蹤器硬體塊706是用於監視VMR狀態轉變歷史的硬體實現,但是VMR狀態轉變歷史可替換地經由軟體來監視。對VMR狀態轉變的恆定軟體監視可能是資源密集的並且可能影響計算設備上的其他程序的操作。然而,存在以非連續方式監視VMR狀態轉變的若干方式,這些方式可個體地或組合地實現。
例如,在選擇性地追蹤VMR狀態轉變中,可以僅為感興趣的某些正在執行的程序發起監視。其他正在執行的程序可不被監視。追蹤軟體可監視感興趣的程序的程式計數器。在週期性追蹤中,追蹤軟體可根據計時器執行緒週期性地對程序的程式計數器進行取樣。在多CPU核系統中,計時器執行緒可被拘束至不在其上執行該程序的CPU。計時器執行緒的週期可以是可調諧的,以使得週期性可適於特定的程序行為並且錯過VMR狀態轉變的幾率被減小。
在伺機追蹤中,VMR核心驅動器可接收對正在其上執行程序的CPU的控制。在其他場合,VMR核心驅動器可對程式計數器進行取樣並且追蹤VMR狀態轉變。例如,VMR核心驅動器可在中斷抵達、上下文切換、信號產生和系統調用期間接收處理器控制。在基於頁錯誤的追蹤中,追蹤軟體可將非當前VMR設置為不可執行(例如,唯讀)並且每當程序跳轉到新VMR時將存在頁錯誤。追蹤軟體可在每當其偵測到頁錯誤時記錄狀態轉變,將新VMR設置為可執行,並且將舊VMR設置為不可執行。
圖8圖示了根據各個實施例的用於偵測在計算設備上執行的程序上的軟體攻擊的方法800。方法800可由計算設備的處理器(例如,圖1A中的計算設備100的CPU 102)實現。
在方塊802,處理器可監視在計算設備上執行的程序的複數個虛擬記憶體區域的結構屬性。該程序可具有可被劃分成數個VMR的相關聯的位址空間。這些VMR可以是記憶體的儲存資料、指令或函數的毗連部分,這些部分可以在程序的堆疊、堆、庫、正文、或位址空間的其他部分中找到。所監視的結構屬性可包括由程序利用的VMR的數目、每個VMR的大小、VMR的位址空間佈局改變、VMR的存取准許改變、以及VMR狀態轉變歷史。
在方塊804,處理器可將該複數個VMR的所監視的結構屬性與該程序的複數個VMR的期望結構屬性進行比較。計算設備可能先前在分配、利用VMR以及在VMR之間進行轉變時分析了程序的期望行為(亦即,在沒有來自控制劫持攻擊的干擾的情況下執行),並且已構造了定義程序的VMR的期望結構屬性的模型或一組規則。處理器可利用數學模型、基於規則的比較、或其他方法來將所監視的結構數學與期望結構數學進行比較。
在判定方塊806,處理器可基於所監視的結構屬性與期望結構屬性之間的比較來決定程序的複數個VMR的所監視的結構屬性是否表示異常行為。例如,處理器可使用數學模型來產生表示所監視的結構屬性與期望結構屬性之間的相似性的值,並且將該值與表示可接受的相似性程度的閾值進行比較。若該值低於閾值,則所監視的結構屬性可表示異常行為。在另一實例中,處理器可將一組規則應用於所監視的結構屬性,並且決定所監視的結構屬性是否滿足所有規則。若所監視的結構屬性不滿足一或多個規則,則所監視的結構屬性可表示異常行為。
回應於決定所監視的結構屬性不表示異常行為(判定方塊806=「否」),只要程序正在執行,處理器就可繼續監視複數個VMR的結構屬性(亦即,返回到方塊802中的操作)。回應於決定所監視的結構屬性工作表示異常行為(判定方塊806=「是」),處理器可在方塊808發起保護動作。例如,處理器可終止程序、從程序鎖定作業系統的某些部分、發起反惡意軟體程式、或者其他動作。以此方式,方法800提供了用於經由監視程序的位址空間中的VMR的結構屬性來監視程序上的控制劫持軟體攻擊的方式。
圖9圖示了根據各個實施例的用於對在計算設備上執行的程序的VMR狀態轉變歷史進行基於硬體的追蹤的方法900。方法900可由計算設備的處理器(例如,圖1A中的計算設備100的CPU 102)或者計算設備中的VMR追蹤器硬體中的處理器(例如,圖7中的VMR追蹤器硬體塊706)來實現。
在方塊902,處理器可儲存關於計算設備上的程序正在其中執行的當前VMR的資訊。程序可利用包括數個VMR的位址空間,這些VMR表示儲存資料、函數、或指令的記憶體的毗連部分。程序的程式計數器可指向程序正在其中執行的當前VMR。所儲存的資訊可包括處理器的PID、程序的位址空間中的所有VMR的記憶體範圍、以及程序正在其中執行的當前VMR(例如,程序的正文中的函數)。例如,此資訊可按表的形式來儲存,針對處理器正在監視的每個程序有一個表。該資訊可被儲存在VMR追蹤器硬體中的資料儲存中。
在方塊904,處理器可接收關於當前正被程序執行的指令的新資訊。例如,處理器可不時地從正在其上執行程序的CPU接收經更新的程式計數器。處理器亦可從VMR核心驅動器接收PID和程序的VMR的當前記憶體範圍。
在判定方塊906,處理器可基於該新資訊來決定程序是否已經歷VMR狀態轉變。處理器可利用程式計數器、PID、以及VMR的當前記憶體範圍來決定程序是否已轉變到另一VMR。例如,若該程序的最後儲存的當前VMR在該程序的正文中,則處理器可從程式計數器決定該程序仍在相同的VMR內執行還是已轉變到另一VMR(例如,對儲存在庫中的函數的函式撥叫)。
回應於決定程序尚未經歷VMR狀態轉變(判定方塊906=「否」),處理器可繼續在方塊904接收關於當前正由該程序執行的指令的新資訊。回應於決定程序已經歷VMR狀態轉變(判定方塊906=「是」),處理器可在方塊908記錄該VMR狀態轉變。例如,處理器可儲存程序從其轉變的VMR以及程序轉變至的VMR。處理器可隨後在方塊902儲存新的當前VMR資訊。以此方式,方法900提供了用於追蹤程序的VMR狀態轉變歷史的基於硬體的實現。
圖10圖示了根據各個實施例的用於對在計算設備上執行的程序的VMR狀態轉變歷史進行基於軟體的追蹤的方法1000。方法1000可由計算設備的處理器(例如,圖1A中的計算設備100的CPU 102)實現。
在方塊1002,處理器可儲存關於計算設備上的程序正在其中執行的當前VMR的資訊。程序可利用包括數個VMR的位址空間,這些VMR表示儲存資料、函數、或指令的記憶體的毗連部分。程序的程式計數器可指向程序正在其中執行的當前VMR。所儲存的資訊可包括處理器的PID、程序的位址空間中的所有VMR的記憶體範圍、程序正在其中執行的當前VMR(例如,程序的正文中的函數)。例如,此資訊可按表的形式來儲存,針對處理器正在監視的每個程序有一個表。
在方塊1004,處理器可針對該程序實現一或多個VMR追蹤策略。VMR追蹤策略的實例可包括:選擇性追蹤(僅追蹤感興趣的某些程序);週期性追蹤(在週期性的基礎上採集VMR狀態轉變資訊);伺機追蹤(當VMR核心驅動器獲得對在其上執行程序的處理器的控制時採集VMR狀態轉變資訊);及基於頁錯誤的追蹤(當VMR狀態轉變發生時將所有非當前VMR設置為不可執行並且追蹤頁錯誤)。
在判定方塊1006,處理器可決定程序是否已經歷VMR狀態轉變。處理器可從一或多個VMR轉變追蹤策略決定VMR狀態轉變是否已經發生。例如,當程序的程式計數器指向新的VMR時或者當在基於頁錯誤的追蹤中已存在頁錯誤時,可以偵測到VMR狀態轉變。
回應於決定程序尚未經歷VMR狀態轉變(判定方塊1006=「否」),處理器可繼續在方塊1004針對該程序實現一或多個VMR追蹤策略。回應於決定程序已經歷VMR狀態轉變(判定方塊1006=「是」),處理器可在方塊1008記錄該VMR狀態轉變。例如,處理器可儲存程序從其轉變的VMR以及程序轉變至的VMR。處理器可隨後在方塊1002儲存新的當前VMR資訊。以此方式,方法1000提供了用於追蹤程序的VMR狀態轉變歷史的基於軟體的實現。
各個實施例可在各種計算設備中的任一種中實現,其中的一個實例(例如,通訊設備1100)在圖11中圖示。在各個實現中,通訊設備1100可類似於本文中參照圖1A描述的計算設備100。由此,通訊設備1100可實現圖8-10中的方法800、900和1000中的一些或全部。
通訊設備1100可包括耦合到觸控式螢幕控制器1104和內部記憶體1106的處理器1102。處理器1102可以是指定用於一般或特定處理任務的一或多個多核積體電路。內部記憶體1106可以是揮發性或非揮發性記憶體,並且亦可以是安全及/或加密的記憶體、或者不安全及/或未加密記憶體,或其任何組合。觸控式螢幕控制器1104和處理器1102亦可被耦合到觸控式螢幕面板1112,諸如電阻式傳感觸控式螢幕、電容式傳感觸控式螢幕、紅外傳感觸控式螢幕等。另外,通訊設備1100的顯示器不需要具有觸控式螢幕能力。
通訊設備1100可具有耦合至處理器1102和天線1110並且被配置成用於發送和接收蜂巢通訊的蜂巢網路收發機1108。收發機1108和天線1110可與本文中提及的電路系統聯用以實現各種實施例方法。通訊設備1100可包括耦合至收發機1108及/或處理器1102的一或多個SIM卡1116並且可如本文中所描述的那樣來配置。通訊設備1100可包括蜂巢網路無線數據機晶片1117,該晶片使得能夠經由蜂巢網路進行通訊並且可耦合至處理器。
通訊設備1100亦可包括用於提供音訊輸出的揚聲器1114。通訊設備1100亦可包括用於容納本文所論述的組件中的全部或一些組件的外殼1120,外殼1120由塑膠、金屬或多種材料的組合來構成。通訊設備1100可以包括耦合至處理器1102的電源1122,諸如一次性或可充電電池。可充電電池亦可以耦合至周邊設備連接埠以從通訊設備1100外部的源接收充電電流。通訊設備1100亦可包括實體按鈕1124以用於接收使用者輸入。通訊設備1100亦可包括用於開啟和關閉通訊設備1100的電源按鈕1126。
上述方法描述和程序流程圖僅作為說明性實例而提供,且並非意欲要求或暗示各個實施例和實現的操作必須按所提供的次序來執行。如本發明所屬領域中具有通常知識者將領會的,前述各實施例和實現中的操作次序可按任何次序來執行。諸如「其後」、「隨後」、「接著」等的措辭並非意欲限定操作的次序;這些措辭僅是簡單地用以指引讀者遍歷方法的描述。進一步,對單數形式的請求項元素的任何引述,例如使用冠詞「一」、「某」或「該」的引述不應解釋為將該元素限定為單數。
結合本文中所揭示的實施例和實現來描述的各種說明性邏輯方塊、單元、電路、和演算法操作可實現為電子硬體、電腦軟體、或這兩者的組合。為清楚地圖示硬體與軟體的這一可互換性,各種說明性組件、方塊、單元、電路、和操作在此是以其功能性的形式作一般化描述的。此類功能性是被實現為硬體還是軟體取決於具體應用和施加於整體系統的設計約束。技藝人士可針對每種特定應用以不同方式來實現所描述的功能性,但此類實現決策不應被解讀為致使脫離請求項的範疇。
用於實現結合本文中揭示的實施例和實現所描述的各種說明性邏輯、邏輯方塊、單元、以及電路的硬體可在各種處理器或處理器和電路的組合中實現或者由各種處理器或處理器和電路的組合來執行。可實現各個實施例的處理器和電路的實例包括被設計成執行本文中描述的功能的通用處理器、數位訊號處理器(DSP)、特殊應用積體電路(ASIC)、現場可程式設計閘陣列(FPGA)或其他可程式設計邏輯裝置、個別閘門或電晶體邏輯、個別的硬體組件、或其任何組合。通用處理器可以是微處理器,但在替換方案中,處理器可以是任何習知的處理器、控制器、微控制器、或狀態機。處理器亦可以被實現為計算設備的組合,例如DSP與微處理器的組合、複數個微處理器、與DSP核心協同的一或多個微處理器、或任何其他此類配置。替換地,一些操作或方法可由專用於給定功能的電路系統來執行。
在一或多個實例實施例和實現中,所描述的功能可在硬體、軟體、韌體或其任何組合中實現。若在軟體中實現,則這些功能可作為一或多個指令或代碼儲存在非瞬態電腦可讀取儲存媒體或非瞬態處理器可讀儲存媒體上。本文中揭示的方法或演算法的操作可在處理器可執行軟體單元中實施,該處理器可執行軟體單元可常駐在非瞬態電腦可讀或處理器可讀儲存媒體上。非瞬態電腦可讀或處理器可讀儲存媒體可以是可被用於以指令或資料結構的形式儲存期望的程式碼並且可被電腦或處理器存取的任何儲存媒體。作為實例而非限定,此類非瞬態電腦可讀或處理器可讀儲存媒體可包括RAM、ROM、EEPROM、快閃記憶體、CD-ROM、或其他光碟儲存、以及磁碟儲存或其他磁存放裝置。如本文中所使用的盤(disk)和碟(disc)包括壓縮光碟(CD)、鐳射光碟、光碟、數位多功能光碟(DVD)、軟碟和藍光光碟,其中盤(disk )往往以磁的方式再現資料而碟(disc )用鐳射以光學方式再現資料。本文中描述的記憶體的組合亦被包括在非瞬態電腦可讀和處理器可讀取媒體的範疇內。另外,方法或演算法的操作可作為一條代碼及/或指令或者代碼及/或指令的任何組合或集合而常駐在可被納入電腦程式產品中的非瞬態處理器可讀儲存媒體及/或電腦可讀取儲存媒體上。
提供前面對所揭示的實施例和實現的描述是為了使本發明所屬領域中任何具有通常知識者皆能製作或使用各請求項。對這些實施例的各種修改對於本發明所屬領域中具有通常知識者而言將是顯而易見的,並且本文中定義的通用原理可被應用於一些實施例而不會脫離請求項的範疇。由此,本案並非意欲限定於本文中示出的實施例和實現,而是應被授予與所附請求項和本文中揭示的原理和新穎性特徵一致的最廣義的範疇。
100‧‧‧計算設備 102‧‧‧中央處理單元(CPU) 104‧‧‧記憶體 106‧‧‧作業系統 108‧‧‧數個系統程序 110‧‧‧應用程序 112‧‧‧觀察器/分析器單元 120‧‧‧觀察器單元 122‧‧‧提取器單元 124‧‧‧分析器單元 126‧‧‧表徵單元 200‧‧‧程序位址空間 204‧‧‧使用者堆疊 206‧‧‧共享庫 208‧‧‧libc庫 208a‧‧‧VMR 210‧‧‧堆 212‧‧‧正文 214‧‧‧程式計數器(PC) 302‧‧‧堆疊 304‧‧‧流程圖 312‧‧‧堆疊 314‧‧‧流程圖 402‧‧‧堆 404‧‧‧流程圖 412‧‧‧堆 414‧‧‧流程圖 502‧‧‧堆疊 504‧‧‧流程圖 600‧‧‧VMR監視系統 602‧‧‧結構屬性 604‧‧‧結構屬性 606‧‧‧結構屬性 608‧‧‧結構屬性 610‧‧‧結構屬性 614‧‧‧輸出 700‧‧‧系統 702‧‧‧CPU核 704‧‧‧VMR核心驅動器 706‧‧‧VMR追蹤器硬體塊 708‧‧‧資料緩衝器 710‧‧‧VMR表 712‧‧‧VMR轉變記錄器 800‧‧‧方法 802‧‧‧方塊 804‧‧‧方塊 806‧‧‧方塊 808‧‧‧方塊 900‧‧‧方法 902‧‧‧方塊 904‧‧‧方塊 906‧‧‧方塊 908‧‧‧方塊 1000‧‧‧方法 1002‧‧‧方塊 1004‧‧‧方塊 1006‧‧‧方塊 1008‧‧‧方塊 1100‧‧‧通訊設備 1102‧‧‧處理器 1104‧‧‧觸控式螢幕控制器 1106‧‧‧內部記憶體 1108‧‧‧蜂巢網路收發機 1110‧‧‧天線 1112‧‧‧觸控式螢幕面板 1114‧‧‧揚聲器 1117‧‧‧蜂巢網路無線數據機晶片 1120‧‧‧外殼 1122‧‧‧電源 1124‧‧‧實體按鈕 1126‧‧‧電源按鈕
納入於此且構成本說明書的一部分的附圖示說了實例實施例,並與本文提供的一般描述和詳細描述一起用來解釋請求項的特徵。
圖1A是根據各個實施例的供使用的計算設備的方塊圖。
圖1B是根據各個實施例的用於分析虛擬記憶體區域的結構屬性的觀察器/分析單元的功能方塊圖。
圖2是根據各個實施例的程序位址空間的示圖。
圖3A-3B是圖示堆疊緩衝器溢出控制劫持軟體攻擊的示圖。
圖4A-4B是圖示堆緩衝器溢出控制劫持軟體攻擊的示圖。
圖5是圖示返回導向程式設計控制劫持軟體攻擊的示圖。
圖6是根據各個實施例的計算設備中的虛擬記憶體區域監視系統的方塊圖。
圖7是根據各個實施例的虛擬記憶體區域轉變追蹤器的組件方塊圖。
圖8是圖示根據各個實施例的用於偵測在計算設備上執行的程序上的軟體攻擊的方法的程序流程圖。
圖9是圖示根據各個實施例的用於追蹤在計算設備上執行的程序的虛擬記憶體區域轉變的基於硬體的方法的程序流程圖。
圖10是圖示根據各個實施例的用於追蹤在計算設備上執行的程序的虛擬記憶體區域轉變的基於軟體的方法的程序流程圖。
圖11是適於實現一些實施例方法的行動通訊設備的組件方塊圖。
國內寄存資訊 (請依寄存機構、日期、號碼順序註記) 無
國外寄存資訊 (請依寄存國家、機構、日期、號碼順序註記) 無
(請換頁單獨記載) 無
800‧‧‧方法
802‧‧‧方塊
804‧‧‧方塊
806‧‧‧方塊
808‧‧‧方塊

Claims (28)

  1. 一種用於偵測在一計算設備上執行的一程序上的軟體攻擊的方法,包括以下步驟: 監視由該程序利用的複數個虛擬記憶體區域的結構屬性; 將該等所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較;及 基於該等所監視的結構屬性與該等期望結構屬性之間的該比較來決定該等所監視的結構屬性是否表示該程序的異常行為。
  2. 如請求項1之方法,進一步包括以下步驟: 回應於決定該等所監視的結構屬性工作表示異常行為而發起一保護動作。
  3. 如請求項1之方法,其中該複數個虛擬記憶體區域的該等所監視的結構屬性包括由以下各項構成的組中的至少一個成員: 由該程序利用的虛擬記憶體區域的一數目, 該複數個虛擬記憶體區域之每一者虛擬記憶體區域的一大小, 該複數個虛擬記憶體區域的位址空間佈局改變, 該複數個虛擬記憶體區域的存取准許改變,以及 該複數個虛擬記憶體區域的一狀態轉變歷史。
  4. 如請求項1之方法,其中監視由該程序利用的該複數個虛擬記憶體區域的結構屬性包括以下步驟: 儲存關於該程序正在其中執行的一當前虛擬記憶體區域的資訊; 接收關於當前正由該程序執行的一指令的新資訊; 基於該新資訊來決定是否已存在從該當前虛擬記憶體區域的一轉變;及 在決定已存在從該當前虛擬記憶體區域的一轉變之際,記錄從該當前虛擬記憶體區域到一新虛擬記憶體區域的轉變。
  5. 如請求項4之方法,其中該新資訊包括一程式計數器和一程序辨識符。
  6. 如請求項1之方法,其中監視由該程序利用的該複數個虛擬記憶體區域的結構屬性包括以下步驟: 儲存關於該程序正在其中執行的一當前虛擬記憶體區域的資訊; 針對該複數個虛擬記憶體區域實現一或多個虛擬記憶體區域追蹤策略; 根據該一或多個虛擬記憶體區域追蹤策略來決定是否已存在從該當前虛擬記憶體區域的一轉變;及 在決定已存在從該當前虛擬記憶體區域的一轉變之際,記錄從該當前虛擬記憶體區域到一新虛擬記憶體區域的轉變。
  7. 如請求項6之方法,其中該一或多個虛擬記憶體區域追蹤策略包括由以下各項構成的組中的至少一個成員:選擇性追蹤、週期性追蹤、伺機追蹤、以及基於頁錯誤的追蹤。
  8. 如請求項1之方法,其中將該等所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較包括:將一組規則應用於該等所監視的結構屬性,其中該一組規則基於該複數個虛擬記憶體區域的該等期望結構屬性。
  9. 如請求項1之方法,其中將該等所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較包括:對該複數個虛擬記憶體區域的該等期望結構屬性進行建模,以及將該等所監視的結構屬性與該模型進行比較。
  10. 一種計算設備,包括: 包括複數個虛擬記憶體區域的一記憶體;及 一處理器,該處理器耦合至該記憶體且配置有處理器可執行指令以執行操作,該操作包括: 監視由在該計算設備上執行的一程序利用的複數個虛擬記憶體區域的結構屬性; 將該等所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較;及 基於該等所監視的結構屬性與該等期望結構屬性之間的該比較來決定該等所監視的結構屬性是否表示該程序的異常行為。
  11. 如請求項10之計算設備,其中該處理器配置有用於執行進一步包括以下動作的操作的處理器可執行指令: 回應於決定該等所監視的結構屬性工作表示異常行為而發起一保護動作。
  12. 如請求項10之計算設備,其中該複數個虛擬記憶體區域的該等所監視的結構屬性包括由以下各項構成的組中的至少一個成員: 由該程序利用的虛擬記憶體區域的一數目, 該複數個虛擬記憶體區域之每一者虛擬記憶體區域的一大小, 該複數個虛擬記憶體區域的位址空間佈局改變, 該複數個虛擬記憶體區域的存取准許改變,以及 該複數個虛擬記憶體區域的一狀態轉變歷史。
  13. 如請求項10之計算設備,其中該處理器被進一步配置有用於經由以下操作來監視由該程序利用的該複數個虛擬記憶體區域的結構屬性的處理器可執行指令: 儲存關於該程序正在其中執行的一當前虛擬記憶體區域的資訊; 接收關於當前正由該程序執行的一指令的新資訊; 基於該新資訊來決定是否已存在從該當前虛擬記憶體區域的一轉變;及 在決定已存在從該當前虛擬記憶體區域的一轉變之際,記錄從該當前虛擬記憶體區域到一新虛擬記憶體區域的轉變。
  14. 如請求項13之計算設備,其中該新資訊包括一程式計數器和一程序辨識符。
  15. 如請求項10之計算設備,其中該處理器被進一步配置有用於執行操作的處理器可執行指令,以使得監視由該程序利用的該複數個虛擬記憶體區域的結構屬性包括: 儲存關於該程序正在其中執行的一當前虛擬記憶體區域的資訊; 針對該複數個虛擬記憶體區域實現一或多個虛擬記憶體區域追蹤策略; 根據該一或多個虛擬記憶體區域追蹤策略來決定是否已存在從該當前虛擬記憶體區域的一轉變;及 在決定已存在從該當前虛擬記憶體區域的一轉變之際,記錄從該當前虛擬記憶體區域到一新虛擬記憶體區域的轉變。
  16. 如請求項15之計算設備,其中該一或多個虛擬記憶體區域追蹤策略包括由以下各項構成的組中的至少一個成員:選擇性追蹤、週期性追蹤、伺機追蹤、以及基於頁錯誤的追蹤。
  17. 如請求項10之計算設備,其中該處理器被進一步配置有用於執行操作的處理器可執行指令,以使得將該等所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較包括: 將一組規則應用於該等所監視的結構屬性,其中該一組規則基於該複數個虛擬記憶體區域的該等期望結構屬性。
  18. 如請求項10之計算設備,其中該處理器被進一步配置有用於執行操作的處理器可執行指令,以使得將該等所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較包括: 對該複數個虛擬記憶體區域的該等期望結構屬性進行建模,以及將該等所監視的結構屬性與該模型進行比較。
  19. 一種其上儲存有處理器可執行軟體指令的非瞬態電腦可讀取儲存媒體,該等指令被配置成使一計算設備的一處理器執行以下操作: 監視由在該計算設備上執行的一程序利用的複數個虛擬記憶體區域的結構屬性; 將該等所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較;及 基於該等所監視的結構屬性與該等期望結構屬性之間的該比較來決定該等所監視的結構屬性是否表示該程序的異常行為。
  20. 如請求項19之非瞬態電腦可讀取儲存媒體,其中該等所儲存的處理器可執行軟體指令被配置成使該處理器執行操作,該等操作進一步包括: 回應於決定該等所監視的結構屬性工作表示異常行為而發起一保護動作。
  21. 如請求項19之非瞬態電腦可讀取儲存媒體,其中該複數個虛擬記憶體區域的該等所監視的結構屬性包括由以下各項構成的組中的至少一個成員: 由該程序利用的虛擬記憶體區域的一數目, 該複數個虛擬記憶體區域之每一者虛擬記憶體區域的一大小, 該複數個虛擬記憶體區域的位址空間佈局改變, 該複數個虛擬記憶體區域的存取准許改變,以及 該複數個虛擬記憶體區域的一狀態轉變歷史。
  22. 如請求項19之非瞬態電腦可讀取儲存媒體,其中該等所儲存的處理器可執行軟體指令被配置成使該處理器執行操作,以使得監視由該程序利用的該複數個虛擬記憶體區域的結構屬性包括: 儲存關於該程序正在其中執行的一當前虛擬記憶體區域的資訊; 接收關於當前正由該程序執行的一指令的新資訊; 基於該新資訊來決定是否已存在從該當前虛擬記憶體區域的轉變;及 在決定已存在從該當前虛擬記憶體區域的一轉變之際,記錄從該當前虛擬記憶體區域到一新虛擬記憶體區域的轉變。
  23. 如請求項22之非瞬態電腦可讀取儲存媒體,其中該新資訊包括一程式計數器和一程序辨識符。
  24. 如請求項19之非瞬態電腦可讀取儲存媒體,其中該等所儲存的處理器可執行軟體指令被配置成使該處理器執行操作,以使得監視由該程序利用的該複數個虛擬記憶體區域的結構屬性包括: 儲存關於該程序正在其中執行的一當前虛擬記憶體區域的資訊; 針對該複數個虛擬記憶體區域實現一或多個虛擬記憶體區域追蹤策略; 根據該一或多個虛擬記憶體區域追蹤策略來決定是否已存在從該當前虛擬記憶體區域的一轉變;及 在決定已存在從該當前虛擬記憶體區域的一轉變之際,記錄從該當前虛擬記憶體區域到一新虛擬記憶體區域的轉變。
  25. 如請求項24之非瞬態電腦可讀取儲存媒體,其中該一或多個虛擬記憶體區域追蹤策略包括由以下各項構成的組中的至少一個成員:選擇性追蹤、週期性追蹤、伺機追蹤、以及基於頁錯誤的追蹤。
  26. 如請求項19之非瞬態電腦可讀取儲存媒體,其中該等所儲存的處理器可執行軟體指令被配置成使該處理器執行操作,以使得將該等所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較包括: 將一組規則應用於該等所監視的結構屬性,其中該一組規則基於該複數個虛擬記憶體區域的該等期望結構屬性。
  27. 如請求項19之非瞬態電腦可讀取儲存媒體,其中該等所儲存的處理器可執行軟體指令被配置成使該處理器執行操作,以使得將該等所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較包括: 對該複數個虛擬記憶體區域的該等期望結構屬性進行建模,以及將該等所監視的結構屬性與該模型進行比較。
  28. 一種計算設備,包括: 用於監視由在該計算設備上執行的一程序利用的複數個虛擬記憶體區域的結構屬性的裝置; 用於將該等所監視的結構屬性與該複數個虛擬記憶體區域的期望結構屬性進行比較的裝置;及 用於基於該等所監視的結構屬性與該等期望結構屬性之間的該比較來決定該等所監視的結構屬性是否表示該程序的異常行為的裝置。
TW105126184A 2015-09-17 2016-08-17 偵測計算設備中的程序上的軟體攻擊 TW201717086A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201562219970P 2015-09-17 2015-09-17
US15/057,336 US10255434B2 (en) 2015-09-17 2016-03-01 Detecting software attacks on processes in computing devices

Publications (1)

Publication Number Publication Date
TW201717086A true TW201717086A (zh) 2017-05-16

Family

ID=58282948

Family Applications (1)

Application Number Title Priority Date Filing Date
TW105126184A TW201717086A (zh) 2015-09-17 2016-08-17 偵測計算設備中的程序上的軟體攻擊

Country Status (7)

Country Link
US (1) US10255434B2 (zh)
EP (1) EP3350741B1 (zh)
JP (1) JP6777732B2 (zh)
KR (1) KR102534334B1 (zh)
CN (1) CN108027859B (zh)
TW (1) TW201717086A (zh)
WO (1) WO2017048426A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111052114A (zh) * 2017-06-07 2020-04-21 惠普发展公司,有限责任合伙企业 入侵检测系统

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2547272B (en) * 2016-02-15 2020-07-15 F Secure Corp Improving security of computer resources
JP6750674B2 (ja) * 2016-04-26 2020-09-02 日本電気株式会社 プログラム分析システム、プログラム分析方法、及び、コンピュータ・プログラム
US10372909B2 (en) * 2016-08-19 2019-08-06 Hewlett Packard Enterprise Development Lp Determining whether process is infected with malware
US10783246B2 (en) 2017-01-31 2020-09-22 Hewlett Packard Enterprise Development Lp Comparing structural information of a snapshot of system memory
US10706180B2 (en) * 2017-07-07 2020-07-07 Endgame, Inc. System and method for enabling a malware prevention module in response to a context switch within a certain process being executed by a processor
CN110188540B (zh) * 2019-04-17 2021-06-22 中国科学院软件研究所 一种基于控制状态跟踪的rop攻击检测方法
US20210334373A1 (en) * 2020-04-22 2021-10-28 Arm Limited Moderator system for a security analytics framework
CN112307475A (zh) * 2020-09-29 2021-02-02 北京软慧科技有限公司 一种系统检测方法及装置

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8955104B2 (en) 2004-07-07 2015-02-10 University Of Maryland College Park Method and system for monitoring system memory integrity
NO20050564D0 (no) 2005-02-02 2005-02-02 Tore Lysemose Hansen Programmonitor for a identifisere uautorisert inntrenging i datasystemer
EP1891520B1 (en) 2005-06-07 2017-09-13 VMware, Inc. Constraint injection system for immunizing software programs against vulnerabilities and attacks
US7996904B1 (en) 2007-12-19 2011-08-09 Symantec Corporation Automated unpacking of executables packed by multiple layers of arbitrary packers
US8271450B2 (en) 2009-10-01 2012-09-18 Vmware, Inc. Monitoring a data structure in a virtual machine and determining if memory pages containing the data structure are swapped into or out of guest physical memory
US9866426B2 (en) * 2009-11-17 2018-01-09 Hawk Network Defense, Inc. Methods and apparatus for analyzing system events
US8949169B2 (en) * 2009-11-17 2015-02-03 Jerome Naifeh Methods and apparatus for analyzing system events
KR101663013B1 (ko) 2010-01-15 2016-10-06 삼성전자주식회사 코드 주입 공격을 감지하는 장치 및 방법
US9401922B1 (en) * 2010-12-10 2016-07-26 Verizon Patent And Licensing Inc. Systems and methods for analysis of abnormal conditions in computing machines
EP2691908B1 (en) * 2011-03-28 2018-12-05 McAfee, LLC System and method for virtual machine monitor based anti-malware security
US8584254B2 (en) 2011-12-08 2013-11-12 Microsoft Corporation Data access reporting platform for secure active monitoring
US9832211B2 (en) * 2012-03-19 2017-11-28 Qualcomm, Incorporated Computing device to detect malware
CN103729305B (zh) * 2012-10-11 2017-09-08 财团法人工业技术研究院 虚拟机的存储器管理的方法和计算机系统
US10284591B2 (en) * 2014-01-27 2019-05-07 Webroot Inc. Detecting and preventing execution of software exploits
US9881153B2 (en) * 2014-06-20 2018-01-30 Leviathan, Inc. System and method for detection of heap spray attack
WO2017023773A1 (en) * 2015-07-31 2017-02-09 Digital Guardian, Inc. Systems and methods of protecting data from injected malware

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111052114A (zh) * 2017-06-07 2020-04-21 惠普发展公司,有限责任合伙企业 入侵检测系统
CN111052114B (zh) * 2017-06-07 2024-01-09 惠普发展公司,有限责任合伙企业 入侵检测系统

Also Published As

Publication number Publication date
KR102534334B1 (ko) 2023-05-18
US10255434B2 (en) 2019-04-09
JP6777732B2 (ja) 2020-10-28
US20170083702A1 (en) 2017-03-23
CN108027859A (zh) 2018-05-11
WO2017048426A1 (en) 2017-03-23
JP2018532187A (ja) 2018-11-01
EP3350741A1 (en) 2018-07-25
EP3350741B1 (en) 2019-07-17
KR20180054726A (ko) 2018-05-24
CN108027859B (zh) 2020-03-24

Similar Documents

Publication Publication Date Title
EP3350741B1 (en) Detecting software attacks on processes in computing devices
US10936717B1 (en) Monitoring containers running on container host devices for detection of anomalies in current container behavior
US9357397B2 (en) Methods and systems for detecting malware and attacks that target behavioral security mechanisms of a mobile device
US8863289B2 (en) Portable security device and methods for detection and treatment of malware
US20180039779A1 (en) Predictive Behavioral Analysis for Malware Detection
Zhao et al. Malicious executables classification based on behavioral factor analysis
US10216934B2 (en) Inferential exploit attempt detection
Rana et al. Evaluation of tree based machine learning classifiers for android malware detection
Yerima et al. Longitudinal performance analysis of machine learning based Android malware detectors
US11593473B2 (en) Stack pivot exploit detection and mitigation
US11477232B2 (en) Method and system for antivirus scanning of backup data at a centralized storage
US10735457B2 (en) Intrusion investigation
Wang et al. CrowdNet: identifying large-scale malicious attacks over android kernel structures
Stirparo et al. In-memory credentials robbery on android phones
Grace et al. Behaviour analysis of inter-app communication using a lightweight monitoring app for malware detection
Anand et al. HiPeR-Early Detection of a Ransomware Attack using Hardware Performance Counters
US10664594B2 (en) Accelerated code injection detection using operating system controlled memory attributes
Yahaya et al. Automated feature selection using boruta algorithm to detect mobile malware
Moonsamy et al. Contrasting permission patterns between clean and malicious Android applications
US11314855B2 (en) Detecting stack pivots using stack artifact verification
Weiss et al. Cost-sensitive detection of malicious applications in mobile devices
Ogwara et al. MOBDroid2: An Improved Feature Selection Method for Detecting Malicious Applications in a Mobile Cloud Computing Environment
Nwobodo Exploring Optimal Subsets of Statically Registered Broadcast Receivers and Permissions for the Prediction of Malicious Behavior in Android Applications
Panman de Wit Dynamic detection of mobile malware using real-life data and machine learning
Torregrosa Garcia A framework for detection of malicious software in Android handheld systems using machine learning techniques