999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

針對(duì)惡意代碼的連續(xù)內(nèi)存鏡像分析方法

2017-04-07 00:55:04李偉明鄒德清孫國(guó)忠
關(guān)鍵詞:進(jìn)程分析檢測(cè)

李偉明,鄒德清,孫國(guó)忠

(1. 華中科技大學(xué)計(jì)算機(jī)學(xué)院,湖北 武漢 430074;2. 曙光信息產(chǎn)業(yè)有限公司,北京 100080)

針對(duì)惡意代碼的連續(xù)內(nèi)存鏡像分析方法

李偉明1,鄒德清1,孫國(guó)忠2

(1. 華中科技大學(xué)計(jì)算機(jī)學(xué)院,湖北 武漢 430074;2. 曙光信息產(chǎn)業(yè)有限公司,北京 100080)

為了更加全面地檢測(cè)惡意代碼的行為,提出連續(xù)內(nèi)存鏡像分析技術(shù)。核心是在QEMU虛擬機(jī)中運(yùn)行惡意代碼樣本,獲取樣本運(yùn)行時(shí)期連續(xù)增量的內(nèi)存鏡像,然后按照時(shí)序解析為多個(gè)完整的內(nèi)存鏡像。在單個(gè)內(nèi)存鏡像分析的基礎(chǔ)上,對(duì)不同時(shí)刻內(nèi)存鏡像做對(duì)比分析。同時(shí)設(shè)計(jì)運(yùn)用可視化工具D3.js,以圖表的形式直觀動(dòng)態(tài)地展示系統(tǒng)運(yùn)行過(guò)程中內(nèi)存狀態(tài)的變化。最后實(shí)現(xiàn)原型系統(tǒng),通過(guò)對(duì)40種惡意代碼樣本進(jìn)行測(cè)試,檢測(cè)出的惡意代碼行為數(shù)量在傳統(tǒng)單鏡像內(nèi)存分析的基礎(chǔ)上增加了19.7%。

惡意代碼;內(nèi)存鏡像;對(duì)比分析;數(shù)據(jù)可視化

1 引言

《2014-2015中國(guó)互聯(lián)網(wǎng)安全研究報(bào)告》[1]指出,2014年獵豹移動(dòng)安全實(shí)驗(yàn)室共截獲計(jì)算機(jī)病毒樣本3 587萬(wàn)個(gè),平均每天有近10 萬(wàn)個(gè)新的計(jì)算機(jī)病毒被捕獲,雖然這一數(shù)字較2013年已有所下降,但病毒總數(shù)仍相當(dāng)龐大。因此,惡意代碼的檢測(cè)和防御至關(guān)重要。當(dāng)前主要的惡意代碼分析方法分為靜態(tài)和動(dòng)態(tài)2種。靜態(tài)分析指的是在不運(yùn)行惡意代碼的前提下,對(duì)惡意代碼使用二進(jìn)制分析、反匯編等一系列的分析方法;動(dòng)態(tài)分析則是通過(guò)運(yùn)行惡意代碼,分析其在執(zhí)行過(guò)程中的函數(shù)調(diào)用過(guò)程,以及所產(chǎn)生的惡意行為來(lái)判斷其是否為惡意程序。一些傳統(tǒng)的惡意代碼分析工具只能粗粒度地分析惡意代碼的部分行為,并不能深層次地揭示惡意代碼對(duì)于系統(tǒng)的更改。

內(nèi)存鏡像是計(jì)算機(jī)物理內(nèi)存的完整復(fù)制,包含系統(tǒng)運(yùn)行狀態(tài)的關(guān)鍵信息。惡意代碼在系統(tǒng)中運(yùn)行時(shí),會(huì)改變系統(tǒng)內(nèi)存,捕獲內(nèi)存完整副本并在另一臺(tái)計(jì)算機(jī)上分析,就有可能重構(gòu)出原先系統(tǒng)的狀態(tài),從而分析惡意代碼的行為。所以,在檢測(cè)惡意代碼行為的技術(shù)中,內(nèi)存分析技術(shù)受到了越來(lái)越多的關(guān)注,用于計(jì)算機(jī)內(nèi)存分析的技術(shù)工具也逐漸發(fā)展成為信息安全產(chǎn)業(yè)的一個(gè)特殊種類(lèi)。由于傳統(tǒng)的針對(duì)單個(gè)內(nèi)存鏡像的分析多是分析系統(tǒng)某一時(shí)刻“靜止”的狀態(tài),因此并不能夠?qū)崟r(shí)追蹤系統(tǒng)的變化,為了動(dòng)態(tài)反映惡意代碼生命周期中的活動(dòng)及其對(duì)系統(tǒng)的影響,本文提出一種連續(xù)內(nèi)存鏡像分析技術(shù)。通過(guò)連續(xù)獲取惡意代碼運(yùn)行時(shí)期的內(nèi)存鏡像,并在單個(gè)時(shí)刻內(nèi)存鏡像分析的基礎(chǔ)上做鏡像對(duì)比分析,更好地揭示惡意代碼的行為。本文主要完成3個(gè)方面的工作:1)使用虛擬化技術(shù)為惡意代碼提供一個(gè)真實(shí)且隔離的運(yùn)行環(huán)境,在其中運(yùn)行惡意代碼,實(shí)現(xiàn)連續(xù)的初始增量?jī)?nèi)存的獲取;2) 將初始及增量?jī)?nèi)存解析為完整的內(nèi)存鏡像并做對(duì)比分析;3) 基于內(nèi)存數(shù)據(jù)的可視化,以圖表形式動(dòng)態(tài)地展示內(nèi)存及系統(tǒng)運(yùn)行過(guò)程中內(nèi)存狀態(tài)的變化。

2 相關(guān)工作

在內(nèi)存鏡像的獲取方面,主要有硬件、軟件2種方法。基于硬件的方法中,文獻(xiàn)[2]提出一種用名為T(mén)ribble的硬件擴(kuò)展卡來(lái)獲取系統(tǒng)物理內(nèi)存的方法,可以用Tribble將系統(tǒng)的物理內(nèi)存復(fù)制到外接存儲(chǔ)設(shè)備中。這樣調(diào)查人員就可以在既不引入任何新代碼又不使用系統(tǒng)代碼的情況下完成系統(tǒng)物理內(nèi)存的獲取工作,缺點(diǎn)是硬件必須事先安裝到系統(tǒng)中,所以Tribble設(shè)備還不能被廣泛使用。基于軟件的物理內(nèi)存獲取方法主要有:1) 使用Microsoft崩潰轉(zhuǎn)儲(chǔ)技術(shù),在生成崩潰轉(zhuǎn)儲(chǔ)時(shí),系統(tǒng)會(huì)被凍結(jié),物理內(nèi)存中的數(shù)據(jù)會(huì)被寫(xiě)入磁盤(pán),這樣就完整地保存了系統(tǒng)狀態(tài);2) 使用虛擬機(jī)技術(shù),當(dāng)運(yùn)行VMWare會(huì)話時(shí),可以掛起(suspend)這個(gè)會(huì)話,VMWare會(huì)將系統(tǒng)的“物理內(nèi)存”鏡像以DD格式存放到一個(gè)擴(kuò)展名為.vmem的文件中,使用這種方法的優(yōu)點(diǎn)是掛起一個(gè)VMWare會(huì)話的操作非常簡(jiǎn)單快捷,而且對(duì)系統(tǒng)內(nèi)存的影響最小,但是使用虛擬機(jī)方式,每次獲得的都是完整的系統(tǒng)內(nèi)存鏡像,因此存儲(chǔ)和傳輸?shù)拈_(kāi)銷(xiāo)比較大。

在內(nèi)存鏡像的分析方面,技術(shù)核心主要是對(duì)內(nèi)存中關(guān)鍵數(shù)據(jù)結(jié)構(gòu)實(shí)例的定位。時(shí)下最流行的在內(nèi)存鏡像中定位數(shù)據(jù)結(jié)構(gòu)實(shí)例的辦法主要是基于鏈表和特征的掃描。Walters等[3]提出了一個(gè)概念性的工具Volatools,其實(shí)現(xiàn)主要依賴(lài)于遍歷鏈表和各種與進(jìn)程相關(guān)的表來(lái)進(jìn)行分析,目前根據(jù)該工具可以找到的信息主要有運(yùn)行進(jìn)程、端口、進(jìn)程與端口的映射關(guān)系等,然后將其研究過(guò)程整合到數(shù)字分析進(jìn)程的相關(guān)階段。殷聯(lián)甫[4]提出了基于進(jìn)程的檢測(cè)方案,主要是通過(guò)進(jìn)程結(jié)構(gòu)中的PEB(環(huán)境控制塊)來(lái)定位進(jìn)程信息。內(nèi)存取證分析工具Volatility,則結(jié)合鏈表掃描和標(biāo)簽掃描2種方法來(lái)提取內(nèi)存對(duì)象,其中在標(biāo)簽掃描方面,提出一種針對(duì)內(nèi)存對(duì)象定位的池標(biāo)簽掃描方法,通過(guò)在系統(tǒng)內(nèi)存中全局掃描與關(guān)鍵系統(tǒng)對(duì)象所對(duì)應(yīng)的標(biāo)簽,來(lái)定位諸如進(jìn)程、DLL、服務(wù)、網(wǎng)絡(luò)連接等一系列內(nèi)存對(duì)象,同時(shí)利用系統(tǒng)的一些屬性,來(lái)確定并提取出可疑的信息。

內(nèi)存分析也存在一些其他研究方法。Dolan-Gavitt[5]主要描述了Windows注冊(cè)表在物理內(nèi)存中的存儲(chǔ)結(jié)構(gòu),提出技術(shù)用來(lái)直接從內(nèi)存轉(zhuǎn)儲(chǔ)中提取出這些數(shù)據(jù)。Okolica等[6]提出利用內(nèi)存轉(zhuǎn)儲(chǔ)文件中的調(diào)試系統(tǒng)信息以及微軟的程序數(shù)據(jù)庫(kù)來(lái)提取出內(nèi)存轉(zhuǎn)儲(chǔ)中的進(jìn)程、配置以及網(wǎng)絡(luò)活動(dòng)信息。Kornblum[7]則通過(guò)惡意代碼的固有屬性來(lái)進(jìn)行分析。Stevens等[8]從尋找命令行歷史出發(fā),但沒(méi)有采取跟蹤進(jìn)程的方法,而是直接根據(jù)命令行程序的特點(diǎn)來(lái)直接尋找命令行執(zhí)行歷史,這也和之前的定位進(jìn)程、線程、網(wǎng)絡(luò)連接的思路略有不同。

2005年,Bergeron等[9]在基于語(yǔ)義的惡意代碼分析方面進(jìn)行了研究,指出了實(shí)現(xiàn)對(duì)一個(gè)二進(jìn)制可執(zhí)行文件的靜態(tài)分析可分為3個(gè)主要步驟:構(gòu)筑中間表示;基于流的分析,捕獲程序的面向安全的行為;對(duì)安全策略的關(guān)鍵行為進(jìn)行靜態(tài)驗(yàn)證(模型檢測(cè))。在2007年,YIN等[10]提出了首個(gè)基于動(dòng)態(tài)污點(diǎn)跟蹤方法來(lái)檢測(cè)和分析惡意代碼的系統(tǒng)Panorama,通過(guò)使用全系統(tǒng)的細(xì)粒度動(dòng)態(tài)污點(diǎn)跟蹤方法,來(lái)捕獲惡意代碼的基礎(chǔ)特征,同時(shí)通過(guò)對(duì)污點(diǎn)傳播過(guò)程的分析,來(lái)確定惡意代碼是否操作了用戶(hù)的敏感數(shù)據(jù)。

近年來(lái),國(guó)外的一些研究機(jī)構(gòu)開(kāi)始把沙箱技術(shù)引入到惡意代碼的檢測(cè)中,德國(guó)曼海姆大學(xué)在2006年開(kāi)發(fā)了一個(gè)名為CW Sandbox的系統(tǒng)[11]。此系統(tǒng)利用VMware軟件,并且在其中運(yùn)行沙箱軟件,利用沙箱軟件隔離惡意代碼的運(yùn)行環(huán)境和真實(shí)的計(jì)算機(jī)環(huán)境,所以對(duì)操作系統(tǒng)進(jìn)行了有效的保護(hù)。同時(shí)使用用戶(hù)級(jí)的API Hook方法對(duì)惡意代碼的行為進(jìn)行捕獲,可以自動(dòng)地生成分析結(jié)果。然而,CW Sandbox 也存在不足的地方,它在惡意程序分析結(jié)束后,并沒(méi)有對(duì)分析結(jié)果做進(jìn)一步處理,往往還需要進(jìn)行人工分析才能確定目標(biāo)程序所具有的破壞性。

綜上所述,目前在對(duì)于內(nèi)存鏡像的獲取中,只能獲得當(dāng)前情況下的內(nèi)存鏡像,不能實(shí)現(xiàn)鏡像自動(dòng)地連續(xù)獲取。同時(shí)在內(nèi)存鏡像的分析研究中,多是針對(duì)單一時(shí)刻內(nèi)存鏡像,因此分析的多是某一個(gè)時(shí)刻的內(nèi)存狀態(tài),不能很好地揭示內(nèi)存狀態(tài)與惡意代碼之間的關(guān)系。本文使用操作系統(tǒng)虛擬化技術(shù)為惡意代碼提供一個(gè)真實(shí)且隔離的運(yùn)行環(huán)境,在其中運(yùn)行惡意代碼,并對(duì)獲取的內(nèi)存鏡像做連續(xù)分析。

3 針對(duì)惡意代碼的連續(xù)內(nèi)存鏡像分析設(shè)計(jì)和實(shí)現(xiàn)

當(dāng)系統(tǒng)處于活動(dòng)狀態(tài)時(shí),RAM中包含了關(guān)于系統(tǒng)運(yùn)行狀態(tài)的關(guān)鍵信息。獲取RAM的完整副本并在另一臺(tái)計(jì)算機(jī)上進(jìn)行分析,就有可能重構(gòu)出原先系統(tǒng)的狀態(tài),包括系統(tǒng)運(yùn)行的進(jìn)程和網(wǎng)絡(luò)連接等信息。通過(guò)連續(xù)獲取系統(tǒng)的內(nèi)存鏡像,進(jìn)行前后鏡像之間的對(duì)比分析,可以獲取惡意程序的具體行為。

3.1 系統(tǒng)整體架構(gòu)

運(yùn)用虛擬機(jī)的臟頁(yè)機(jī)制,通過(guò)捕獲并分析不同時(shí)刻內(nèi)存鏡像的對(duì)象集的差異,推斷出在鏡像捕獲的不同時(shí)期系統(tǒng)的變化。同時(shí)運(yùn)用可視化工具,將內(nèi)存對(duì)象的變化動(dòng)態(tài)直觀地展示出來(lái)。其中在獲取連續(xù)內(nèi)存鏡像的時(shí)候,并不是連續(xù)獲取各個(gè)時(shí)段的完整內(nèi)存,而是在獲取系統(tǒng)初始時(shí)刻完整內(nèi)存鏡像的基礎(chǔ)上,連續(xù)獲取一段時(shí)間內(nèi)系統(tǒng)被修改部分的內(nèi)存鏡像,并與前一時(shí)刻完整內(nèi)存鏡像進(jìn)行覆蓋和融合,形成當(dāng)前時(shí)刻的完整內(nèi)存鏡像,此舉可以有效地節(jié)省存儲(chǔ)開(kāi)銷(xiāo)。整個(gè)連續(xù)內(nèi)存鏡像獲取的架構(gòu)如圖1所示,內(nèi)存鏡像的分析對(duì)比如圖2所示。

3.2 連續(xù)內(nèi)存鏡像獲取模塊的設(shè)計(jì)

由于之前的內(nèi)存鏡像分析多是針對(duì)單一時(shí)刻的內(nèi)存鏡像,因此傳統(tǒng)的內(nèi)存鏡像獲取方法多是直接獲取整個(gè)系統(tǒng)的內(nèi)存,在做連續(xù)內(nèi)存鏡像分析的時(shí)候,如果繼續(xù)使用以前的方法,產(chǎn)生的內(nèi)存鏡像文件數(shù)據(jù)將會(huì)很大,無(wú)形中增加了存儲(chǔ)和傳輸內(nèi)存鏡像的開(kāi)銷(xiāo)。因此,提出一種新的內(nèi)存鏡像獲取思路,即在獲取初始時(shí)刻完整內(nèi)存鏡像的基礎(chǔ)上,連續(xù)獲取一段時(shí)間間隔內(nèi)被修改部分的“增量”內(nèi)存,最后解析時(shí)將當(dāng)前時(shí)刻的增量?jī)?nèi)存與前一時(shí)刻完整內(nèi)存鏡像進(jìn)行覆蓋融合,從而形成當(dāng)前時(shí)刻的完整內(nèi)存鏡像,依次按照時(shí)間順序進(jìn)行覆蓋融合,就能夠以付出一個(gè)完整內(nèi)存鏡像文件的代價(jià),獲取連續(xù)的多個(gè)時(shí)刻的內(nèi)存鏡像文件。

利用QUME虛擬機(jī)制作Windows XP鏡像,掛載鏡像到系統(tǒng)/mnt/winxp目錄下,成功掛載之后,將惡意代碼復(fù)制到掛載目錄下,即鏡像的C盤(pán)根目錄。將惡意代碼啟動(dòng)程序復(fù)制到/mnt/winxp/Documents and settings Administrator/「開(kāi)始」菜單/程序/啟動(dòng)目錄下。與此同時(shí),針對(duì)QUME設(shè)計(jì)一個(gè) mdump 命令來(lái)獲取連續(xù)增量的虛擬機(jī)內(nèi)存。系統(tǒng)啟動(dòng)之后,從客戶(hù)操作系統(tǒng)向虛擬機(jī)外運(yùn)行的QUMU發(fā)送 mdump 命令,開(kāi)始獲取初始及增量?jī)?nèi)存,此時(shí),通過(guò)程序啟動(dòng)虛擬機(jī)內(nèi)部的惡意樣本。這樣就可以獲取惡意代碼運(yùn)行前、中、后的所有內(nèi)存鏡像。整個(gè)過(guò)程的時(shí)間線如圖3所示。

圖1 連續(xù)內(nèi)存鏡像獲取的架構(gòu)

圖2 內(nèi)存鏡像的分析對(duì)比

圖3 連續(xù)內(nèi)存獲取時(shí)間線

在QEMU的monitor增加mdump命令用來(lái)連續(xù)地獲取在一段時(shí)間內(nèi)被修改的虛擬機(jī)內(nèi)存鏡像,此命令的實(shí)現(xiàn)借助了QEMU虛擬機(jī)的臟頁(yè)機(jī)制。如果內(nèi)存頁(yè)在一段時(shí)間內(nèi)被修改,就說(shuō)該內(nèi)存頁(yè)變“臟”,并稱(chēng)之為臟頁(yè)。將整個(gè)虛擬機(jī)內(nèi)存的保存分為3個(gè)階段。

1) 第一階段:將內(nèi)存中所有頁(yè)面設(shè)置為臟頁(yè)。

2) 第二階段:將所有前一時(shí)刻中標(biāo)記為臟頁(yè)的內(nèi)存頁(yè)保存下來(lái)。

3) 第三階段:將剩余所有臟頁(yè)一次性保存,并結(jié)束整個(gè)存儲(chǔ)過(guò)程。

獲取過(guò)程的時(shí)間線如圖4所示。

圖4 mdump的連續(xù)內(nèi)存獲取時(shí)間線

具體到每一輪迭代中,對(duì)于內(nèi)存頁(yè)的設(shè)計(jì)如圖5所示。

圖5中的虛擬機(jī)內(nèi)存,即所需要保存的內(nèi)存頁(yè)分為2種狀態(tài):每輪迭代期間內(nèi)存頁(yè)如果被改寫(xiě),則頁(yè)面狀態(tài)標(biāo)記為W,表示頁(yè)面為臟頁(yè);其他情況包括被讀取以及沒(méi)有操作均被標(biāo)記為R。那么在下輪迭代中只需傳輸被標(biāo)記為W的內(nèi)存頁(yè)。為了更方便地查詢(xún)內(nèi)存頁(yè)是否被改寫(xiě),為每個(gè)頁(yè)面設(shè)置一個(gè)標(biāo)簽來(lái)隨時(shí)記錄內(nèi)存頁(yè)的讀寫(xiě)情況,在下一輪迭代中掃描該狀態(tài)表,便可找出被改寫(xiě)的內(nèi)存頁(yè)并保存。

依次按照QEMU中內(nèi)存塊的順序掃描,在每一個(gè)塊中,對(duì)每一個(gè)大小為4 096 B的頁(yè)面進(jìn)行標(biāo)簽設(shè)置,如果頁(yè)面的狀態(tài)為W,具體的做法是將其頁(yè)面地址右移12 bit的值作為數(shù)組索引,并讓這一索引指向的值為0xff,對(duì)于狀態(tài)為R的頁(yè)面,則不做處理。通過(guò)這種方法,將狀態(tài)為W和R的不同內(nèi)存頁(yè)區(qū)分開(kāi)來(lái)。

由于在第一階段中,所有的內(nèi)存頁(yè)都被設(shè)置為臟頁(yè),因此得到的只是一個(gè)描述性的文件,真正開(kāi)始保存內(nèi)存頁(yè)是從第二階段開(kāi)始,第二階段的第一個(gè)文件保存系統(tǒng)的完整內(nèi)存頁(yè),從第二個(gè)文件開(kāi)始,保存上一時(shí)鐘中斷時(shí)間內(nèi)所有新產(chǎn)生的臟頁(yè)。當(dāng)進(jìn)入第三階段時(shí),一次性保存前一時(shí)刻被設(shè)置為臟的內(nèi)存頁(yè),并結(jié)束連續(xù)內(nèi)存鏡像獲取的過(guò)程,至此,便得到了經(jīng)過(guò)處理壓縮的、初始的和過(guò)程中被修改的虛擬機(jī)內(nèi)存鏡像文件。

3.3 單內(nèi)存鏡像的解析

解析過(guò)程是保存的逆過(guò)程。第二階段生成的第一個(gè)完整文件為整個(gè)系統(tǒng)的內(nèi)存復(fù)制,結(jié)構(gòu)與第一階段文件描述相同,即pc.ram為第一個(gè)塊,大小128 M。由保存的邏輯可以看到,前8個(gè)字節(jié)為“OFFSET| CONT| COMPRESS”。其中,OFFSET為頁(yè)在內(nèi)存塊中的偏移,CONT用來(lái)判斷頁(yè)面是否在一個(gè)塊內(nèi),COMPRESS為2,表示一整個(gè)頁(yè)面的內(nèi)容為重復(fù)的一個(gè)字節(jié),保存時(shí)用這一個(gè)字節(jié)的內(nèi)容來(lái)替代整頁(yè)4 096 B的內(nèi)容。COMPRESS為8,表示頁(yè)面在存儲(chǔ)時(shí)未被壓縮,直接保存整頁(yè)4 096 B的內(nèi)容。

鏡像內(nèi)容如圖6所示,前8個(gè)字節(jié)值為0x8,由于8= 0 | 0 | 8,表示頁(yè)偏移為0,CONT=0表示進(jìn)入一個(gè)新的塊,標(biāo)志COMPRESS表示保存的時(shí)候未壓縮,緊跟的一個(gè)字節(jié)6,表示塊名長(zhǎng)度為6,后面6個(gè)字節(jié)pc.ram表示塊名,pc.ram后面的部分即為所保存的頁(yè)面內(nèi)容,由于頁(yè)面未壓縮,故pc.ram后面4 096 B的內(nèi)容即為頁(yè)偏移為0這個(gè)頁(yè)面的全部?jī)?nèi)容。

第一個(gè)頁(yè)面的內(nèi)容寫(xiě)完,繼續(xù)讀取8個(gè)字節(jié)。如圖7所示,圖中8字節(jié)大小為0x1028,由于0x1028= 1000 | 20 | 8,表示頁(yè)偏移為0x1000,即第二個(gè)頁(yè),cont=0x20表示還在之前的塊中,壓縮標(biāo)志COMPRES表示保存的時(shí)候未壓縮,故這8個(gè)字節(jié)后面4 096 B的內(nèi)容屬于pc.ram塊中第二個(gè)頁(yè)面的內(nèi)容。依次類(lèi)推,直到再次讀取到cont=0時(shí)塊結(jié)束,表示pc.ram塊的內(nèi)容已經(jīng)全部解析完畢。這樣,第一個(gè)完整的文件就解析完畢。

圖5 連續(xù)內(nèi)存鏡像保存中每輪迭代示意

圖6 第二階段文件片段

圖7 第二階段文件片段

第二階段剩下的文件為增量?jī)?nèi)存文件,只記錄修改部分的內(nèi)存。結(jié)構(gòu)一般為帶標(biāo)志位的頁(yè)面地址+頁(yè)面內(nèi)容。值得注意的是,不同于第二階段第一個(gè)文件每個(gè)塊只出現(xiàn)一次的情況,第二階段剩余文件中,可能多次出現(xiàn)pc.ram塊。造成這種情況的原因是整個(gè)時(shí)鐘中斷時(shí)間內(nèi)不止掃描了一遍內(nèi)存。因此需要先在文件中定位pc.ram塊,再對(duì)每一個(gè)pc.ram塊做解析。

第三階段文件格式與第二階段文件格式相同。第三階段作為收尾階段,會(huì)將此前所有被設(shè)置為臟頁(yè)的內(nèi)存頁(yè)一次保存。至此可以得到各個(gè)時(shí)期的完整物理內(nèi)存鏡像,對(duì)各個(gè)時(shí)刻的完整物理內(nèi)存鏡像做解析,就可以得到各個(gè)時(shí)刻具體內(nèi)存對(duì)象信息,之后將解析結(jié)果存入數(shù)據(jù)庫(kù)。

3.4 連續(xù)內(nèi)存鏡像對(duì)比分析模塊設(shè)計(jì)

在連續(xù)內(nèi)存鏡像對(duì)比分析方面,對(duì)比不同鏡像之間具體內(nèi)存對(duì)象的差異,獲得系統(tǒng)狀態(tài)的更改。連續(xù)內(nèi)存鏡像對(duì)比分析方法的核心流程如圖8所示。

要想獲取惡意代碼運(yùn)行中的具體活動(dòng)信息,就需要將不同時(shí)刻的內(nèi)存鏡像做對(duì)比,提取內(nèi)存鏡像之間的差異,從而獲取惡意代碼對(duì)系統(tǒng)的影響。將之前獲取的不同時(shí)刻內(nèi)存鏡像分析結(jié)果的數(shù)據(jù)庫(kù)進(jìn)行對(duì)比,從而獲得內(nèi)存對(duì)象狀態(tài)的更改。

對(duì)每一個(gè)具體的對(duì)象設(shè)置3種屬性,分別是未改變、改變、新增。3種屬性對(duì)應(yīng)的情況如下。

1) 前后2個(gè)時(shí)刻的內(nèi)存鏡像中都存在該對(duì)象,且對(duì)象所有相關(guān)信息全部相同,則認(rèn)為該對(duì)象的狀態(tài)為未改變。

2) 前后2個(gè)時(shí)刻的內(nèi)存鏡像中都存在該對(duì)象,但對(duì)象的相關(guān)信息有所改變,則認(rèn)為該對(duì)象的狀態(tài)為改變。

圖8 連續(xù)內(nèi)存鏡像對(duì)比分析方法的核心流程

3) 某一對(duì)象出現(xiàn)在后一時(shí)刻的內(nèi)存鏡像中但未出現(xiàn)在前一時(shí)刻的內(nèi)存鏡像中,則認(rèn)為該對(duì)象的狀態(tài)為新增,這也是最應(yīng)該引起重視的一種狀態(tài)。

在對(duì)一些關(guān)鍵的內(nèi)存對(duì)象進(jìn)行定位以及信息提取時(shí),主要以進(jìn)程對(duì)象為中心,針對(duì)對(duì)象提取有2種方法:鏈表掃描和特征字符掃描。

1) 特征字符掃描

具體的內(nèi)存對(duì)象以及它們對(duì)應(yīng)的標(biāo)簽如表1所示。

表1 Windows 內(nèi)存對(duì)象對(duì)應(yīng)的標(biāo)簽

例如,要對(duì)進(jìn)程對(duì)象進(jìn)行定位,則在內(nèi)存鏡像文件中掃描標(biāo)簽“Proc”,定位進(jìn)程對(duì)象結(jié)構(gòu)體,獲取進(jìn)程對(duì)象的信息。

2) 鏈表掃描

鏈表掃描時(shí),則參照文獻(xiàn)[3]中進(jìn)程定位的方法,對(duì)與對(duì)象相關(guān)的數(shù)據(jù)結(jié)構(gòu)進(jìn)行定位,再通過(guò)關(guān)鍵元素定位對(duì)象相關(guān)的鏈表、掃描鏈表、定位對(duì)象,實(shí)現(xiàn)內(nèi)存鏡像的對(duì)象對(duì)比,一共設(shè)立3個(gè)列表,分別表示未改變、改變和新增的內(nèi)存對(duì)象。針對(duì)獲取的3種列表結(jié)果進(jìn)行過(guò)濾。

3.5 內(nèi)存可視化模塊的設(shè)計(jì)

內(nèi)存中蘊(yùn)含著豐富而又?jǐn)?shù)量龐大的信息,在針對(duì)惡意代碼的連續(xù)內(nèi)存鏡像分析時(shí),整個(gè)系統(tǒng)中對(duì)象和對(duì)象之間的聯(lián)系、單個(gè)對(duì)象內(nèi)部之間的聯(lián)系都是比較復(fù)雜和繁瑣的。設(shè)計(jì)一個(gè)針對(duì)內(nèi)存數(shù)據(jù)的可視化,以圖表的形式動(dòng)態(tài)地展示內(nèi)存及系統(tǒng)運(yùn)行過(guò)程中內(nèi)存狀態(tài)的變化,從而明確、有效地傳遞信息。

選擇可視化工具D3.js進(jìn)行可視化,它是一個(gè)數(shù)據(jù)可視化的JavaScript函數(shù)庫(kù)。設(shè)計(jì)使用點(diǎn)來(lái)代表各個(gè)進(jìn)程,相關(guān)聯(lián)的父子進(jìn)程用連線聯(lián)系到一起,同時(shí)對(duì)于具體進(jìn)程對(duì)象的各種相關(guān)信息(如釋放的文件、獲取的權(quán)限、創(chuàng)建的網(wǎng)絡(luò)連接等)均建立對(duì)應(yīng)的點(diǎn),并將它們與進(jìn)程對(duì)象連接起來(lái)。

將每一時(shí)刻的完整內(nèi)存鏡像的分析結(jié)果的數(shù)據(jù)庫(kù)文件轉(zhuǎn)換成JSON數(shù)據(jù)文件,然后依次對(duì)比當(dāng)前時(shí)刻的JSON文件與前一時(shí)刻JSON文件的差異,生成2個(gè)文件的差異JSON文件。用初始完整內(nèi)存鏡像的JSON數(shù)據(jù)文件畫(huà)圖,然后在此基礎(chǔ)上再讀取差異JSON文件,從而在圖表上動(dòng)態(tài)地反映系統(tǒng)的變化。整體的JSON文件格式如圖9所示。

圖9 數(shù)據(jù)文件JSON格式

D3會(huì)自動(dòng)解析JSON數(shù)據(jù)文件,將其中source和target表示部分設(shè)為節(jié)點(diǎn),并在這兩點(diǎn)間創(chuàng)建連線,target_group和source_group分別表示對(duì)點(diǎn)設(shè)置屬性。開(kāi)始時(shí)解析進(jìn)程表,若其中一個(gè)的ppid(父進(jìn)程號(hào))與另一個(gè)的pid(進(jìn)程號(hào))相等,就認(rèn)為這2個(gè)進(jìn)程是父子進(jìn)程,將所有的父子進(jìn)程連接在一起,然后開(kāi)始掃描其他的插件表。以進(jìn)程作為圖像的中心,對(duì)于每個(gè)插件,首先設(shè)置形如“進(jìn)程id_插件名稱(chēng)”的中間節(jié)點(diǎn),將具體進(jìn)程與其對(duì)應(yīng)的中間節(jié)點(diǎn)連接在一起,然后將每條具體的插件項(xiàng)與中間節(jié)點(diǎn)連接起來(lái),形成進(jìn)程的插件網(wǎng)。

將每一時(shí)刻的完整JSON文件進(jìn)行對(duì)比,生成差異JSON文件,具體的文件格式如表2所示。

表2 增量JSON文件格式

利用初始完整的JSON文件形成初始的完整內(nèi)存對(duì)象D3圖之后,利用差異JSON文件,就在原圖像的基礎(chǔ)上加載下一時(shí)刻、上一時(shí)刻的差異JSON文件,實(shí)現(xiàn)節(jié)點(diǎn)和連線的動(dòng)態(tài)擴(kuò)展。通過(guò)這種方式連續(xù)、動(dòng)態(tài)地反映系統(tǒng)狀態(tài)的改變。

以惡意樣本Explorer.exe為例,圖10顯示了初始系統(tǒng)的所有進(jìn)程對(duì)象,以及和進(jìn)程相關(guān)的插件,如權(quán)限、網(wǎng)絡(luò)連接、代碼注入等,此時(shí)惡意樣本還沒(méi)有啟動(dòng)。

當(dāng)單擊圖11中具體某個(gè)點(diǎn)時(shí),會(huì)顯示點(diǎn)所代表的具體含義。設(shè)置2個(gè)prev和next按鈕,單擊之后分別顯示系統(tǒng)上一時(shí)刻和下一時(shí)刻的狀態(tài)。切到下一時(shí)刻狀態(tài),通過(guò)圖11可以看到,run_malware.exe進(jìn)程啟動(dòng)了樣本進(jìn)程Explorer.exe,同時(shí)惡意樣本出現(xiàn)了代碼注入的情況,同時(shí)還創(chuàng)建了新的網(wǎng)絡(luò)連接,提升了自己的一部分權(quán)限。

圖10 系統(tǒng)初始時(shí)惡意代碼的可視化狀態(tài)

圖11 惡意代碼的行為可視化

4 實(shí)驗(yàn)及分析

測(cè)試的樣本集包括搜集到的Sentry_MBA、stub等40多種典型惡意代碼,包括木馬、蠕蟲(chóng)、后門(mén)、嗅探器等各種類(lèi)型。

4.1 典型樣本測(cè)試

本實(shí)驗(yàn)選取Sentry_MBA.exe惡意代碼樣本,啟動(dòng)原型系統(tǒng),在虛擬機(jī)中運(yùn)行樣本,并獲取連續(xù)的虛擬機(jī)內(nèi)存,解析為連續(xù)的內(nèi)存鏡像之后做分析,生成惡意程序的行為報(bào)告。選取檢測(cè)結(jié)果中的進(jìn)程,網(wǎng)絡(luò)連接進(jìn)行分析,如圖12所示。

惡意代碼程序在運(yùn)行過(guò)程中創(chuàng)建了sentry_mba.exe和systemtray.exe這2個(gè)進(jìn)程(由pid及ppid可以看出Sentry_MBA是這2個(gè)進(jìn)程的父進(jìn)程)。在網(wǎng)絡(luò)連接方面systemtray.exe進(jìn)程創(chuàng)建了網(wǎng)絡(luò)連接,綁定了本地的1031端口,并訪問(wèn)了遠(yuǎn)程的80端口,可以推測(cè)是訪問(wèn)了遠(yuǎn)程的網(wǎng)站。

對(duì)比系統(tǒng)和文件B超對(duì)于樣本的整體檢測(cè)結(jié)果,如表3所示。

表3 Sentry_MBA樣本內(nèi)存鏡像分析與文件B超結(jié)果對(duì)比

連續(xù)內(nèi)存鏡像分析方法在進(jìn)程檢測(cè)、代碼注入、嘗試訪問(wèn)主機(jī)方面都能檢測(cè)到文件B超未能檢測(cè)到的行為,對(duì)于注冊(cè)表的修改、設(shè)置開(kāi)機(jī)啟動(dòng)項(xiàng)、創(chuàng)建互斥、釋放PE文件、提升調(diào)試權(quán)限等兩者都可以檢測(cè)到。

4.2 分析結(jié)果與文件B超對(duì)比

對(duì)40種惡意代碼樣本進(jìn)行統(tǒng)計(jì)分析,如表4所示,分別從進(jìn)程檢測(cè)、代碼注入、注冊(cè)表相關(guān)、互斥量、網(wǎng)絡(luò)相關(guān)、文件相關(guān)、提升權(quán)限等方面進(jìn)行統(tǒng)計(jì)。將分析結(jié)果與文件B超對(duì)惡意代碼樣本的分析結(jié)果進(jìn)行對(duì)比。

表4 參與測(cè)試和統(tǒng)計(jì)分析的40種惡意代碼樣本

圖12 進(jìn)程和網(wǎng)絡(luò)連接檢測(cè)結(jié)果

總體來(lái)看,檢測(cè)到的行為分布主要如圖13所示。

接下來(lái),針對(duì)文件B超檢測(cè)到的結(jié)果與本系統(tǒng)檢測(cè)到的結(jié)果進(jìn)行對(duì)比,總體情況如圖14所示。

在針對(duì)注冊(cè)表、注入代碼以及文件相關(guān)的行為檢測(cè)方面,系統(tǒng)分別比文件B超的檢測(cè)數(shù)量多出6、4、4個(gè),數(shù)量超過(guò)了文件B超。注冊(cè)表方面主要在于本系統(tǒng)并非單純地只對(duì)單個(gè)對(duì)象的分析,而是基于相關(guān)聯(lián)多對(duì)象的分析,從而可以發(fā)現(xiàn)更多的可疑對(duì)象,注入代碼方面則由于本系統(tǒng)是直接針對(duì)虛擬地址描述器的屬性檢測(cè),行為方面更加具體,釋放文件方面由于和文件B超檢測(cè)項(xiàng)并不是一一對(duì)應(yīng)關(guān)系,所以這里僅作為參考。

圖13 惡意代碼內(nèi)存分析方法檢測(cè)行為分布

圖14 惡意代碼內(nèi)存分析結(jié)果與文件B超結(jié)果對(duì)比

進(jìn)程相關(guān)、網(wǎng)絡(luò)連接和提升權(quán)限方面,系統(tǒng)分別比文件B超的檢測(cè)數(shù)量多出2、5、8個(gè)。由于在做進(jìn)程相關(guān)的檢測(cè)時(shí),運(yùn)用了包括鏈表掃描以及特征碼掃描等多種辦法,因此可以發(fā)現(xiàn)部分被隱藏的進(jìn)程。網(wǎng)絡(luò)相關(guān)方面,雖然能發(fā)現(xiàn)更多由惡意程序發(fā)起的網(wǎng)絡(luò)連接,但對(duì)部分惡意代碼所訪問(wèn)的網(wǎng)址并不能很好地解析。

在互斥量方面,文件B超檢測(cè)到的惡意代碼行為數(shù)量超過(guò)本系統(tǒng)3個(gè),由于本系統(tǒng)互斥量檢測(cè)采取正則匹配原則,是基于目前已有的特征庫(kù)的搜索,而文件B超是實(shí)時(shí)監(jiān)控惡意代碼的所有行為,能夠準(zhǔn)確地確定有惡意代碼產(chǎn)生的互斥量。

4.3 連續(xù)內(nèi)存鏡像與單內(nèi)存鏡像分析對(duì)比

針對(duì)4.2節(jié)中的惡意代碼樣本進(jìn)行統(tǒng)計(jì)分析,先獲取惡意代碼運(yùn)行一段時(shí)間之后保存的單內(nèi)存鏡像做分析,再利用連續(xù)內(nèi)存鏡像分析技術(shù),對(duì)惡意代碼進(jìn)行分析。2種方法在惡意代碼行為檢測(cè)方面的對(duì)比結(jié)果如圖15所示。

圖15 連續(xù)內(nèi)存鏡像對(duì)比分析較單內(nèi)存鏡像分析的結(jié)果對(duì)比

總體來(lái)講,連續(xù)內(nèi)存鏡像對(duì)比分析較單內(nèi)存鏡像分析檢測(cè)結(jié)果有明顯提升,針對(duì)單個(gè)內(nèi)存鏡像的分析多是分析系統(tǒng)某一時(shí)刻“靜止”的狀態(tài),而連續(xù)分析模塊在單內(nèi)存分析模塊的基礎(chǔ)上增加了多個(gè)時(shí)刻的內(nèi)存狀態(tài)對(duì)比的分析,可以更加全面地捕獲惡意代碼整個(gè)生命周期的行為。根據(jù)實(shí)驗(yàn)數(shù)據(jù)得出,惡意代碼樣本行為數(shù)量在單內(nèi)存鏡像分析的基礎(chǔ)上增加了19.7%。

5 結(jié)束語(yǔ)

本文提出了針對(duì)惡意代碼的連續(xù)內(nèi)存鏡像分析技術(shù),通過(guò)在虛擬機(jī)中運(yùn)行惡意代碼,并獲取惡意代碼運(yùn)行前、中、后不同時(shí)期的連續(xù)虛擬機(jī)內(nèi)存鏡像,解析為各個(gè)時(shí)刻完整內(nèi)存鏡像之后,做鏡像對(duì)比分析,從而提取出惡意代碼的行為以及其對(duì)系統(tǒng)的影響,并且通過(guò)可視化工具對(duì)檢測(cè)結(jié)果進(jìn)行展示,通過(guò)動(dòng)態(tài)的演進(jìn)展示惡意代碼運(yùn)行的生命周期。實(shí)驗(yàn)中對(duì)40種典型的惡意代碼樣本利用系統(tǒng)的方法進(jìn)行了檢測(cè)。結(jié)果表明,這種方法可以有效且直觀地發(fā)現(xiàn)被惡意代碼感染的系統(tǒng)內(nèi)存中存在的惡意行為。

本文提出的針對(duì)惡意代碼的連續(xù)內(nèi)存鏡像分析技術(shù)雖然能夠比較準(zhǔn)確地發(fā)現(xiàn)目前典型的惡意代碼行為,但是仍然存在需要改進(jìn)的方面:1) 由于是在QEMU虛擬環(huán)境中運(yùn)行惡意代碼樣本并分析,因此當(dāng)遇到一些反沙箱的惡意代碼,并且這些惡意代碼意識(shí)到自己處在沙箱環(huán)境中,就會(huì)自己休眠,從而不能啟動(dòng)惡意樣本并進(jìn)行分析;2) 在做針對(duì)內(nèi)存數(shù)據(jù)的可視化時(shí),各種對(duì)象之間的關(guān)系比較復(fù)雜,如何突出顯示真正有效的信息,對(duì)最后的結(jié)果進(jìn)行過(guò)濾,也是需要解決的問(wèn)題。

[1] 2014-2015中國(guó)互聯(lián)網(wǎng)安全研究報(bào)告[R].獵豹移動(dòng)安全實(shí)驗(yàn)室,2015. 2014-2015 Report of China Internet security study[R].Cheetah Mobile Security Laboratory,2015.

[2] ROLLES R. Unpacking virtualization obfuscators[C]//The 3rd USENIX Conference on Offensive Technologies. 2009: 1.

[3] WALTERS A A, PETRONI N L. Volatools: integrating volatile memory into the digital investigation process[C]//Black Hat DC. 2007:9-20.

[4] 殷聯(lián)甫. 計(jì)算機(jī)取證中的物理內(nèi)存取證分析方法研究[J]. 計(jì)算機(jī)應(yīng)用與軟件, 2010, 27(12): 295-298. YIN L F. Study of physical memory forensic analysis method in computer forensics[J]. Computer Application and Software, 2010, 27(12): 295-298.

[5] DOLAN-GAVITT B. Forensic analysis of the Windows registry in memory[J]. Digital Investigation, 2008,5(1): S26-S32.

[6] OKOLICA J, PETERSON G L. Windows operating systems agnostic memory analysis[J]. Digital Investigation, 2010(7): S48-S56.

[7] KORNBLUM J. Exploiting the Rootkit paradox with Windows memory analysis[J]. International Journal of Digital Evidence Fall, 2006,5(1):4.

[8] STEVENS R M, CASEY E. Extracting Windows command line details from physical memory[J]. Digital investigation, 2010(7): S57-S63.

[9] BERGERON J, DEBBABI M, DESHARNAIS J, et al. Static detection of malicious code in executable programs[C]//BIBUV. 2005: 1-5.

[10] YIN H, SONG D, EGELE M, et al. Panorama: capturing system-wide information flow for malware detection and analysis [C]//The 14th ACM Conference on Computer and Communications Security. 2007: 116-127.

[11] WILLEMS C. CWSandbox: automatic behaviour analysis of malware[J]. Digital Investigation, 2013, 3(4): 97-12.

李偉明(1975-),男,湖南株洲人,博士,華中科技大學(xué)副教授,主要研究方向?yàn)樾畔踩?/p>

鄒德清(1973-),男,湖南湘潭人,博士,華中科技大學(xué)教授、博士生導(dǎo)師,主要研究方向?yàn)樵朴?jì)算、信息安全。

孫國(guó)忠(1973-),男,吉林大安人,博士,曙光信息產(chǎn)業(yè)(北京)有限公司高級(jí)工程師,主要研究方向?yàn)楦咝阅苡?jì)算、云計(jì)算。

Successive memory image analysis method for malicious codes

LI Wei-ming1, ZOU De-qing1, SUN Guo-zhong2

(1. School of Computer Science, Huazhong University of Science and Technology, Wuhan 430074, China; 2. Dawning Information Industry Co., Ltd., Beijing 100080, China)

In order to detect the behavior of malicious code more comprehensively, the technology of continuous memory image analysis was proposed. The core idea was to run malicious code in QEMU virtual machine, to obtain the memory image of the continuous increment in the running period, and then to analyze the memory image of the base and increment as the memory image. On the basis of the analysis of a single memory image, different memory images were analysised comparatively. At the same time, the visualization tool D3.js was used to visually display the change of the memory state in the process of system operation. Finally, the prototype system was tested by 40 kinds of malicious code samples, and the number of malicious code behavior was increased by 19.7% than traditional single memory image.

malware, memory image, comparative analysis, data visualization

TP309

A

10.11959/j.issn.2096-109x.2017.00144

2016-08-28;

2016-10-23。通信作者:李偉明,lwm@hust.edu.cn

國(guó)家自然科學(xué)基金資助項(xiàng)目(No.61272072);國(guó)家重點(diǎn)基礎(chǔ)研究與發(fā)展計(jì)劃基金資助項(xiàng)目(“973”計(jì)劃)(No.2016YFB0200300)

Foundation Items: The National Natural Science Foundation of China (No.61272072), The National Basic Research Program of China (973 Program) (No.2016YFB0200300)

猜你喜歡
進(jìn)程分析檢測(cè)
“不等式”檢測(cè)題
“一元一次不等式”檢測(cè)題
“一元一次不等式組”檢測(cè)題
隱蔽失效適航要求符合性驗(yàn)證分析
債券市場(chǎng)對(duì)外開(kāi)放的進(jìn)程與展望
電力系統(tǒng)不平衡分析
電子制作(2018年18期)2018-11-14 01:48:24
電力系統(tǒng)及其自動(dòng)化發(fā)展趨勢(shì)分析
小波變換在PCB缺陷檢測(cè)中的應(yīng)用
社會(huì)進(jìn)程中的新聞學(xué)探尋
我國(guó)高等教育改革進(jìn)程與反思
主站蜘蛛池模板: 色婷婷综合在线| 成人永久免费A∨一级在线播放| 欧美国产日韩在线| 国产99精品视频| 久久人妻xunleige无码| 精品成人一区二区| 在线免费观看a视频| 亚洲永久视频| 无码AV日韩一二三区| 色婷婷亚洲综合五月| 亚洲乱码精品久久久久..| 91精品免费高清在线| 不卡无码h在线观看| 国产女人爽到高潮的免费视频 | 日韩在线视频网| 国产99视频精品免费视频7| 精品三级网站| 国产欧美日韩精品第二区| 亚洲精品天堂在线观看| 国产正在播放| 中文字幕2区| 中文字幕在线播放不卡| 国产亚洲视频免费播放| 免费Aⅴ片在线观看蜜芽Tⅴ | 思思热在线视频精品| 99这里只有精品免费视频| 亚洲va欧美ⅴa国产va影院| 九九久久精品国产av片囯产区| 再看日本中文字幕在线观看| 黄片一区二区三区| 国产在线视频二区| 一本大道视频精品人妻| 国产精品午夜福利麻豆| 91无码人妻精品一区二区蜜桃| 日本草草视频在线观看| 黄色网站不卡无码| 999精品免费视频| 日韩小视频在线播放| 国产又爽又黄无遮挡免费观看 | 国产对白刺激真实精品91| 亚洲中文字幕精品| 亚洲无码在线午夜电影| 在线看国产精品| 欧美劲爆第一页| 欧美yw精品日本国产精品| 色噜噜综合网| 久久精品人人做人人爽97| 午夜视频免费试看| 亚洲第一精品福利| 狂欢视频在线观看不卡| 亚洲国产精品日韩av专区| 国产成人精品一区二区秒拍1o| 天天干伊人| 中文字幕欧美日韩高清| 极品av一区二区| 精品伊人久久久久7777人| 国产一区二区人大臿蕉香蕉| 毛片免费在线| 成年人免费国产视频| 国产成人超碰无码| 国产人在线成免费视频| 日韩免费毛片| 91无码国产视频| 免费又黄又爽又猛大片午夜| 国产免费久久精品44| 午夜福利无码一区二区| 久久婷婷六月| 在线观看国产精美视频| 久久久久国产精品嫩草影院| 国产精品主播| 国产免费一级精品视频| AV网站中文| 国产日韩欧美一区二区三区在线 | 91精品免费高清在线| 国产在线一区视频| 亚洲天堂网在线观看视频| 2020国产精品视频| 亚洲v日韩v欧美在线观看| 永久免费无码成人网站| 国产成人AV大片大片在线播放 | 亚洲第一在线播放| 直接黄91麻豆网站|