基于內(nèi)存活動(dòng)的邊信道攻擊取證系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于計(jì)算機(jī)數(shù)據(jù)處理技術(shù)領(lǐng)域,涉及一種云環(huán)境中攻擊取證系統(tǒng)及方法,更為具體的說,是涉及一種內(nèi)存活動(dòng)下針對side-channel攻擊的實(shí)時(shí)取證系統(tǒng)及方法。
【背景技術(shù)】
[0002]在公共云環(huán)境中,云提供商為了提高物理機(jī)器的使用效率,令多個(gè)虛擬機(jī)共享一臺(tái)物理機(jī)器。由于多個(gè)虛擬機(jī)之間共享很多資源,如共享硬盤、CPU緩存、共享內(nèi)存等,這就使得虛擬機(jī)之間隱私信息的保護(hù)受到了很大的威脅,由此出現(xiàn)了很多基于這些共享資源的攻擊,其中基于時(shí)間的side-channel (邊信道)攻擊是著名的攻擊類型之一,其隱蔽、不留痕跡的特性很受攻擊者的關(guān)注。Ristenpart最早提出了相鄰虛擬機(jī)的安全顧慮,并在該環(huán)境下成功測試了基于CPU緩存、硬盤和內(nèi)存總線的side-channel攻擊。該類攻擊都是關(guān)注系統(tǒng)隔離保護(hù)相對薄弱的底層結(jié)構(gòu),繞開了高層的隔離機(jī)制,其攻擊很難被安全軟件所發(fā)現(xiàn),在攻擊完成后不會(huì)留下任何痕跡,給云計(jì)算安全和取證帶來了極大的挑戰(zhàn)。
[0003]在云取證過程中,證據(jù)的提取和分析尤為關(guān)鍵,傳統(tǒng)的取證框架大部分都從系統(tǒng)日志和程序日志中查找證據(jù),但對于基于時(shí)間的side-channel攻擊來說,由于其本身并不使用系統(tǒng)自帶的API,不會(huì)進(jìn)行通常的I/O活動(dòng)和網(wǎng)絡(luò)通信活動(dòng),這就讓取證人員很難在系統(tǒng)日志和程序日志中找到它的蹤跡。此外,基于時(shí)間的side-channel攻擊傳輸數(shù)據(jù)通道本身很隱蔽,開始和結(jié)束的時(shí)候系統(tǒng)并不會(huì)有明顯的特征,在攻擊發(fā)生的過程中,很難察覺到它的存在,要想實(shí)時(shí)的探測到這類攻擊的存在,很難找到其特征,而采用傳統(tǒng)的靜態(tài)、動(dòng)態(tài)分析技術(shù)來識(shí)別又會(huì)消耗大量的系統(tǒng)性能和時(shí)間。而對于基于時(shí)間的side-channel攻擊代碼本身,其行為特點(diǎn)就是在正常情況下很正常,每一個(gè)行為都符合通常程序的正常行為,很難在分析過程中發(fā)現(xiàn)它的存在。因此,目前還缺乏有效的手段能夠針對基于時(shí)間的side-channe I攻擊發(fā)現(xiàn)和取證。
【發(fā)明內(nèi)容】
[0004]為解決上述問題,本發(fā)明公開了一種基于內(nèi)存活動(dòng)的邊信道攻擊取證系統(tǒng)及方法,利用硬件虛擬化技術(shù),實(shí)現(xiàn)客戶虛擬機(jī)的內(nèi)存頁面實(shí)時(shí)監(jiān)控,并通過基于時(shí)間的side-channel 攻擊的內(nèi)存活動(dòng)特征 ,利用基于內(nèi)存活動(dòng)特征的識(shí)別算法將基于時(shí)間的s i d e -channel攻擊識(shí)別出來,并在靜態(tài)分析的輔助下二次確認(rèn)攻擊的存在并提取攻擊的存在證據(jù),實(shí)現(xiàn)重要實(shí)時(shí)證據(jù)和存在證據(jù)的獲取和分析。
[0005]為了達(dá)到上述目的,本發(fā)明提供如下技術(shù)方案:
基于內(nèi)存活動(dòng)的邊信道攻擊取證系統(tǒng),包括監(jiān)控模塊、識(shí)別模塊、驗(yàn)證模塊和證據(jù)數(shù)據(jù)中心;
所述監(jiān)控模塊用于對系統(tǒng)底層內(nèi)存活動(dòng)進(jìn)行實(shí)時(shí)監(jiān)控,提取該內(nèi)存訪問活動(dòng)的相關(guān)信息生成內(nèi)存活動(dòng)日志;
所述識(shí)別模塊按照進(jìn)程區(qū)分內(nèi)存活動(dòng)日志,查找重復(fù)訪問同一內(nèi)存頁面的進(jìn)程,獲得該進(jìn)程訪問的內(nèi)存活動(dòng)記錄,當(dāng)該進(jìn)程滿足發(fā)送可疑進(jìn)程和/或接收可疑進(jìn)程條件,并且每次密集活動(dòng)訪問頁面集合都一致時(shí)則判斷該進(jìn)程為可疑進(jìn)程,最終得到可疑進(jìn)程序列;所述發(fā)送可疑進(jìn)程條件包括每次密集活動(dòng)時(shí)間間隔為正常時(shí)間間隔的整數(shù)倍,所述接收可疑進(jìn)程條件包括每次密集活動(dòng)時(shí)間間隔一致;
所述驗(yàn)證模塊在識(shí)別模塊識(shí)別出可疑進(jìn)程之后,保存當(dāng)前客戶虛擬機(jī)的內(nèi)存快照,通過內(nèi)存快照對可疑進(jìn)程進(jìn)行靜態(tài)的二進(jìn)制代碼分析確認(rèn)其是否為惡意進(jìn)程,將惡意進(jìn)程的內(nèi)存快照和內(nèi)存活動(dòng)記錄提取出來交由證據(jù)數(shù)據(jù)中心保存;
所述證據(jù)數(shù)據(jù)中心用于記錄監(jiān)控模塊獲得的原始內(nèi)存活動(dòng)記錄、經(jīng)過識(shí)別模塊過濾的可疑進(jìn)程以及經(jīng)過驗(yàn)證模塊驗(yàn)證的惡意進(jìn)程。
[0006]進(jìn)一步的,所述監(jiān)控模塊包括模塊初始化單元和事件處理單元,所述模塊初始化單元用于監(jiān)控目標(biāo)客戶虛擬機(jī)的詳細(xì)信息,然后向虛擬機(jī)監(jiān)視器申請獲取目標(biāo)客戶虛擬機(jī)的內(nèi)存具體位置,隨后在內(nèi)存相應(yīng)位置修改內(nèi)存訪問權(quán)限,最后在虛擬機(jī)監(jiān)視器中對該內(nèi)存硬件事件注冊事件處理函數(shù);所述事件處理單元用于截獲客戶虛擬機(jī)觸發(fā)的內(nèi)存事件,通過邏輯事件注冊表找到該硬件事件對應(yīng)的邏輯事件處理函數(shù),在事件處理完成后,最后再將控制權(quán)交還客戶虛擬機(jī),并用于過濾掉可信的進(jìn)程內(nèi)存活動(dòng),提取非可信進(jìn)程的內(nèi)存訪問活動(dòng)的相關(guān)信息交由證據(jù)數(shù)據(jù)中心記錄形成內(nèi)存活動(dòng)日志。
[0007]進(jìn)一步的,所述識(shí)別模塊判斷可疑進(jìn)程時(shí)具體包括如下步驟:
(1)將目標(biāo)客戶虛擬機(jī)的內(nèi)存活動(dòng)日志按照進(jìn)程區(qū)分開來,在每個(gè)進(jìn)程里面查找是否存在某內(nèi)存頁面被同一進(jìn)程重復(fù)訪問,存在則進(jìn)入步驟(2)并將訪問該頁面的進(jìn)程放入可疑進(jìn)程序列;
(2)從可疑進(jìn)程序列中依次取出可疑進(jìn)程,找到該進(jìn)程訪問的內(nèi)存活動(dòng)記錄,根據(jù)這些記錄分別計(jì)算其屬性值,所述屬性值包括以下至少一種:每次密集活動(dòng)時(shí)間間隔、每次密集活動(dòng)訪問內(nèi)存頁面集合、每次密集活動(dòng)訪問持續(xù)時(shí)間和每次密集活動(dòng)開始時(shí)間;
(3)如果可疑進(jìn)程不具備下述兩種條件其中之一,則將該進(jìn)程從可疑進(jìn)程序列中去除,所述兩種條件包括:
對于side-channel攻擊的接收者存在每次密集活動(dòng)時(shí)間間隔一致;
對于side-channel攻擊的發(fā)送者存在每次密集活動(dòng)時(shí)間間隔為正常時(shí)間間隔的整數(shù)倍;
(4)檢查可疑進(jìn)程每次密集活動(dòng)訪問頁面集合是否都一致,如果不一致則將該進(jìn)程從可疑進(jìn)程序列中去除。
[0008]進(jìn)一步的,所述識(shí)別模塊還進(jìn)行攻擊類型識(shí)別:
如果發(fā)送者進(jìn)程和接收者進(jìn)程的每次密集訪問開始時(shí)間一致,則判斷攻擊類型為基于CPU負(fù)載的side-channel攻擊;如果發(fā)送者進(jìn)程和接收者進(jìn)程的每次密集訪問開始時(shí)間不一致,則觀察其密集訪問持續(xù)時(shí)間,如果遠(yuǎn)遠(yuǎn)大于基于CPU緩存的side-channel攻擊的延遲閾值,則該攻擊為基于內(nèi)存總線的side-channel攻擊,否則為基于CPU緩存的side-channel攻擊。
[0009 ]進(jìn)一步的,所述驗(yàn)證模塊中對可疑進(jìn)程進(jìn)行靜態(tài)的二進(jìn)制代碼分析的過程包括如下步驟:
(I)根據(jù)記錄中可疑進(jìn)程的進(jìn)程空間地址,在內(nèi)存快照中對應(yīng)位置提取出可疑進(jìn)程內(nèi)存空間;
(2)找到可疑進(jìn)程的代碼數(shù)據(jù)段,將二進(jìn)制代碼提取出來;
(3)將二進(jìn)制代碼根據(jù)該代碼運(yùn)行的系統(tǒng)和硬件平臺(tái)還原成匯編代碼進(jìn)行分析;
(4)在匯編代碼中重點(diǎn)查找執(zhí)行重復(fù)指令的代碼;
(5)在重復(fù)指令代碼里面查找是否存在進(jìn)行時(shí)間刺探的代碼以及其他存在的side-channel 攻擊代碼特征,如果存在則表明該進(jìn)程為惡意進(jìn)程,如果不存在則過濾掉該可疑進(jìn)程。
[0010]本發(fā)明還提供了基于內(nèi)存活動(dòng)的邊信道攻擊取證方法,包括如下步驟:
步驟A,對系統(tǒng)底層內(nèi)存活動(dòng)進(jìn)行實(shí)時(shí)監(jiān)控,提取該內(nèi)存訪問活動(dòng)的相關(guān)信息生成內(nèi)存活動(dòng)日志;
步驟B,按照進(jìn)程區(qū)分內(nèi)存活動(dòng)日志,查找重復(fù)訪問同一內(nèi)存頁面的進(jìn)程,獲得該進(jìn)程訪問的內(nèi)存活動(dòng)記錄,當(dāng)該進(jìn)程滿足發(fā)送可疑進(jìn)程和/或接收可疑進(jìn)程條件,并且每次密集活動(dòng)訪問頁面集合都一致時(shí)則判斷該進(jìn)程為可疑進(jìn)程,最終得到可疑進(jìn)程序列;所述發(fā)送可疑進(jìn)程條件包括每次密集活動(dòng)時(shí)間間隔為正常時(shí)間間隔的整數(shù)倍,所述接收可疑進(jìn)程條件包括每次密集活動(dòng)時(shí)間間隔一致;
步驟C,在步驟B識(shí)別出可疑進(jìn)程之后,保存當(dāng)前客戶虛擬機(jī)的內(nèi)存快照,通過內(nèi)存快照對可疑進(jìn)程進(jìn)行靜態(tài)的二進(jìn)制代碼分析確認(rèn)其是否為惡意進(jìn)程,將惡意進(jìn)程的內(nèi)存快照和內(nèi)存活動(dòng)記錄提取出來保存。
[0011 ]進(jìn)一步的,所述步驟A具體包括以下步驟:監(jiān)控目標(biāo)客戶虛擬機(jī)的詳細(xì)信息,向虛擬機(jī)監(jiān)視器申請獲取目標(biāo)客戶虛擬機(jī)的內(nèi)存具體位置,在內(nèi)存相應(yīng)位置修改內(nèi)存訪問權(quán)限,最后在虛擬機(jī)監(jiān)視器中對該內(nèi)存硬件事