• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    面向Windows 10系統(tǒng)段堆的內(nèi)存取證研究

    2021-11-18 06:55:02翟繼強(qiáng)陳攀徐曉楊海陸
    關(guān)鍵詞:字段插件內(nèi)存

    翟繼強(qiáng), 陳攀, 徐曉, 楊海陸

    (哈爾濱理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 黑龍江 哈爾濱 150080)

    近年來(lái),黑客經(jīng)常通過(guò)網(wǎng)絡(luò)傳播惡意程序,當(dāng)計(jì)算機(jī)染上惡意程序時(shí),計(jì)算機(jī)內(nèi)存會(huì)留下惡意活動(dòng)痕跡[1-2],這時(shí)通過(guò)內(nèi)存取證技術(shù)就可以捕獲到這些痕跡并落實(shí)網(wǎng)絡(luò)犯罪的數(shù)字證據(jù)。段堆中含有進(jìn)程運(yùn)行時(shí)生成的重要信息,提取出段堆中的信息可以了解進(jìn)程的運(yùn)行情況,因此對(duì)段堆的內(nèi)存取證研究在信息安全的防護(hù)領(lǐng)域意義重大。

    目前,對(duì)堆的內(nèi)存取證研究根據(jù)操作系統(tǒng)的不同可分為基于Linux系統(tǒng)的堆取證研究、基于安卓環(huán)境的堆取證研究、基于Windows 7系統(tǒng)的堆取證研究。在Linux系統(tǒng)中, Block研究了glibc庫(kù)創(chuàng)建的堆結(jié)構(gòu),使用了堆結(jié)構(gòu)定位及關(guān)鍵字段偏移法復(fù)現(xiàn)堆內(nèi)部信息,解決了標(biāo)簽搜索不準(zhǔn)確問(wèn)題[3]。在安卓系統(tǒng)中,張俊芙研究出了3種提取堆信息的方法,分別為:把目標(biāo)值做為搜索對(duì)象進(jìn)行搜索;使用相關(guān)對(duì)象定位引用對(duì)象和同類對(duì)象;使用目標(biāo)數(shù)據(jù)猜測(cè)法搜索目標(biāo)數(shù)據(jù)[4]。在Windows 7系統(tǒng)中, Cohen研究了NT堆中低碎片化堆的創(chuàng)建并且使用硬件PTE解析算法,復(fù)現(xiàn)NT堆中無(wú)效頁(yè)面信息[5]。

    然而,上述的堆取證研究并沒(méi)有針對(duì)Windows 10系統(tǒng)中的段堆,通過(guò)現(xiàn)有的內(nèi)存取證技術(shù)不能重現(xiàn)段堆信息,進(jìn)而不能獲取針對(duì)段堆的堆溢出攻擊的取證信息。同時(shí)段堆尚未在MSDN文檔上公開(kāi)而且目前對(duì)段堆結(jié)構(gòu)的研究還并不充分,因此需要進(jìn)一步研究段堆結(jié)構(gòu)。為了彌補(bǔ)這些缺陷,本文研究了多個(gè)版本的Windows 10段堆并且提出一種利用池掃描技術(shù)識(shí)別內(nèi)核對(duì)象,再結(jié)合字段信息偏移定位的方法,提取段堆內(nèi)部信息。經(jīng)過(guò)測(cè)試,該方法能成功復(fù)現(xiàn)段堆內(nèi)部信息,這些信息能幫助調(diào)查人員獲取堆溢出攻擊的數(shù)字證據(jù)。本文研究的主要內(nèi)容如下:

    1) 研究了多個(gè)Windows 10版本的段堆及其組件結(jié)構(gòu)中字段的作用;

    2) 根據(jù)段堆特征值定位段堆的位置,并提取出段堆內(nèi)部信息;

    3) 提取出大塊分配組件分配堆塊的元數(shù)據(jù)信息;

    4) 定位可變大小分配組件結(jié)構(gòu)和低碎片化堆分配組件結(jié)構(gòu)的位置并且提取出它們分配的內(nèi)存信息;

    5) 使用本文研發(fā)出的插件檢測(cè)堆溢出攻擊。

    1 Windows 10段堆

    1.1 進(jìn)程環(huán)境塊

    當(dāng)創(chuàng)建新的進(jìn)程時(shí),Windows內(nèi)核會(huì)在內(nèi)核內(nèi)存的非分頁(yè)池中創(chuàng)建-EPROCESS結(jié)構(gòu),通過(guò)該結(jié)構(gòu)的內(nèi)部信息可以定位用戶模式下進(jìn)程環(huán)境塊的位置。進(jìn)程環(huán)境塊存放的是進(jìn)程信息,其中就包括進(jìn)程堆信息、當(dāng)前的工作目錄、環(huán)境變量、命令行參數(shù)等[6]。

    1.2 段堆創(chuàng)建

    Windows程序管理器創(chuàng)建進(jìn)程時(shí),內(nèi)核會(huì)對(duì)進(jìn)程分配4GB的虛擬內(nèi)存,并創(chuàng)建和初始化堆管理器,不同的堆管理器對(duì)應(yīng)著不同的特征值。Windows 10內(nèi)核分配堆塊時(shí),根據(jù)堆的特征值進(jìn)行相應(yīng)堆塊的分配。Windows 10內(nèi)核有較好的安全機(jī)制,分配堆塊的過(guò)程中使用臨界區(qū)和原子操作函數(shù)實(shí)現(xiàn)線程同步,確保堆塊分配成功。堆塊的分配依賴于內(nèi)部的4個(gè)組件,分配的過(guò)程中根據(jù)堆塊大小選擇合適的組件進(jìn)行分配。

    1.3 段堆介紹

    段堆是特殊的內(nèi)存管理器,它只存在于Windows 10系統(tǒng)中。段堆及其組件每次在分配內(nèi)存之前會(huì)預(yù)先申請(qǐng)一塊內(nèi)存區(qū)域,然后再?gòu)膬?nèi)存區(qū)域中分配進(jìn)程請(qǐng)求的內(nèi)存。在可變大小分配組件分配的內(nèi)存中已申請(qǐng)的內(nèi)存大部分已被分配,只留有少數(shù)空閑內(nèi)存未被使用,有些段堆中可能不含有該組件分配的子段。低碎片化堆組件分配的內(nèi)存相比其他組件分配的內(nèi)存要小很多,而且基本上不會(huì)產(chǎn)生空閑塊。大塊分配組件中未使用的內(nèi)存相比其他組件要大很多,因此為了減少內(nèi)存浪費(fèi),大塊分配組件在段堆中很少使用。

    段堆的結(jié)構(gòu)和Windows系統(tǒng)中其他堆的結(jié)構(gòu)類似,都是由字段偏移量、字段、字段數(shù)據(jù)類型組成。Windows 10有許多的版本,不同版本的Windows 10系統(tǒng)含有不同的段堆結(jié)構(gòu)。隨著段堆結(jié)構(gòu)的更新,段堆的安全機(jī)制在不斷完善并且內(nèi)存分配效率也在不斷提高。圖1顯示了段堆的結(jié)構(gòu)信息(17134版本),這些信息記錄了組件的偏移量、不同內(nèi)存狀態(tài)的頁(yè)面數(shù)量等。段堆同內(nèi)核對(duì)象一樣,在內(nèi)存中存在獨(dú)屬的結(jié)構(gòu)體,結(jié)構(gòu)體中含有段堆的信息。

    1.4 段堆和NT堆的比較

    由于進(jìn)程地址空間的對(duì)齊粒度為64 kB,因此內(nèi)存管理器分配的最小內(nèi)存為64 kB,當(dāng)要分配小于64 kB的內(nèi)存時(shí),會(huì)產(chǎn)生較大的內(nèi)存碎片,而堆管理器分配的內(nèi)存可以小于64 kB,因此可以減少內(nèi)存浪費(fèi),提高內(nèi)存利用率。進(jìn)程開(kāi)始運(yùn)行時(shí),會(huì)創(chuàng)建一個(gè)默認(rèn)堆,使用HeapCreate函數(shù)可以創(chuàng)建額外的私有堆,在Windows 10系統(tǒng)中,私有堆包括段堆和NT堆。經(jīng)分析發(fā)現(xiàn),它們之間存在著較大的差異,段堆和NT堆之間存在的差異如下所示:

    1) 在內(nèi)存分配頻繁的情況下,NT堆分配內(nèi)存的速度要比段堆快,因?yàn)槎味言诜峙鋬?nèi)存時(shí)需要經(jīng)過(guò)更多的操作步驟;

    2) 段堆具有更好的安全機(jī)制,在段堆中,對(duì)元數(shù)據(jù)的訪問(wèn)是互斥進(jìn)行的,在同一時(shí)刻,只允許一個(gè)線程對(duì)其進(jìn)行操作,而實(shí)際數(shù)據(jù)不是,因此段堆中的元數(shù)據(jù)獨(dú)立于實(shí)際數(shù)據(jù)。然而在NT堆中,元數(shù)據(jù)不是互斥訪問(wèn),于是元數(shù)據(jù)和實(shí)際數(shù)據(jù)混在一起;

    3) 段堆使用4個(gè)組件對(duì)堆塊進(jìn)行分配,而NT堆只依賴于2個(gè)組件對(duì)堆塊進(jìn)行分配。段堆細(xì)化了堆塊的分配范圍,因此具有更高的內(nèi)存利用率;

    4) NT堆具有更完善的內(nèi)存管理機(jī)制,它能夠更全面地定位跟蹤NT堆中內(nèi)存釋放與分配情況,因此NT堆結(jié)構(gòu)中含有更全面的信息;

    5) 段堆是新出現(xiàn)的堆管理器,內(nèi)部的管理機(jī)制需要不斷完善,段堆的結(jié)構(gòu)會(huì)隨著Windows 10系統(tǒng)的更新而升級(jí)。由于NT堆的內(nèi)存管理機(jī)制已趨于成熟,那么在后期,NT堆將不再更新;

    6) 段堆是Windows 10出現(xiàn)后引進(jìn)的,因此段堆只出現(xiàn)在Windows 10系統(tǒng)中,而NT堆存在于所有的Windows系統(tǒng)中。

    2 段堆組件

    段堆對(duì)內(nèi)存的管理依賴于內(nèi)部的4個(gè)組件,組件主要負(fù)責(zé)對(duì)內(nèi)存的釋放與分配[7]。不同的組件分配不同的內(nèi)存大小:低碎片化堆分配組件分配不大于16 kB的內(nèi)存區(qū)域;可變大小分配組件從段堆中請(qǐng)求分配的內(nèi)存大小不大于128 kB;后端分配組件分配內(nèi)存塊的大小介于128 kB到508 kB之間;大塊分配組件分配內(nèi)存塊的大小大于508 kB[7]。經(jīng)分析發(fā)現(xiàn),隨著Windows 10系統(tǒng)的更新升級(jí),段堆的組件結(jié)構(gòu)也相應(yīng)地發(fā)生了變化,這些變化讓系統(tǒng)更準(zhǔn)確地檢測(cè)內(nèi)存分布情況,從而更合理地分配堆內(nèi)存,提高內(nèi)存利用率。Mark研究了14295版本的段堆[7],但他分析的結(jié)構(gòu)字段并不全面,本文補(bǔ)充分析了14295版本的段堆。在深入研究15063版本、16299版本和17134版本的段堆之后發(fā)現(xiàn)這3個(gè)版本相比于14295版本具有更好的安全性并且字段的位置及數(shù)量也發(fā)生了改變。

    2.1 低碎片化堆分配組件

    在段堆分配堆塊時(shí),優(yōu)先給低碎片堆組件分配,若能進(jìn)行分配,則遍歷Buckets數(shù)組找到大小合適并處于激活狀態(tài)的Bucket,未能找到則分配新的Bucket。該組件分配的堆塊具有最高的內(nèi)存利用率,幾乎不產(chǎn)生內(nèi)存碎片。堆塊是從子段中進(jìn)行分配,低碎片化堆中的子段以鏈表的形式串連在一起。在-HEAP-LFH-CONTEXT結(jié)構(gòu)中,BucketStats字段記錄了低碎片化堆子段在子段鏈表中的位置及每個(gè)子段中擁有處于激活狀態(tài)的Bucket數(shù)量,系統(tǒng)通過(guò)該字段定位子段的位置,判斷子段內(nèi)存中空閑內(nèi)存與已分配內(nèi)存的情況,據(jù)此對(duì)子段中的內(nèi)存進(jìn)行釋放與分配。MemStats字段記錄了進(jìn)程運(yùn)行時(shí),低碎片化堆中處于不同狀態(tài)的內(nèi)存大小,其中包括已申請(qǐng)內(nèi)存大小、已分配內(nèi)存大小、空閑內(nèi)存大小,進(jìn)程運(yùn)行時(shí),該字段可以讓系統(tǒng)了解低碎片化堆內(nèi)部的內(nèi)存狀態(tài)。圖2顯示了低碎片化堆分配組件的結(jié)構(gòu)信息。

    2.2 可變大小分配組件

    當(dāng)?shù)退槠褵o(wú)法分配堆塊時(shí),段堆管理器會(huì)再次判斷堆塊的大小,如果在可變大小分配組件分配的內(nèi)存范圍時(shí),則在可變大小分配組件分配的子段中分配堆塊,若堆塊分配的大小超過(guò)了子段的空閑內(nèi)存范圍,則會(huì)新建子段進(jìn)行堆塊分配。在-HEAP-VS-CON TEXT結(jié)構(gòu)中,F(xiàn)reeCommittedUnits字段記錄了已分配內(nèi)存中已釋放的內(nèi)存大小。TotalCommittedUnits字段記錄了進(jìn)程運(yùn)行時(shí),可變大小分配組件分配的內(nèi)存中處于已分配狀態(tài)的內(nèi)存大小。Lock字段是一個(gè)內(nèi)存結(jié)構(gòu),標(biāo)記了已分配內(nèi)存的訪問(wèn)請(qǐng)求狀態(tài),其中包括鎖住狀態(tài)、等待狀態(tài)、喚醒狀態(tài)、共享狀態(tài)等,該字段能夠讓系統(tǒng)知道內(nèi)存狀態(tài),從而限制線程對(duì)已分配內(nèi)存的操作。LockType字段只有3種取值:當(dāng)值為0時(shí),表示系統(tǒng)以頁(yè)為單位鎖住內(nèi)存;當(dāng)值為1時(shí),表示系統(tǒng)不是按頁(yè)為單位鎖住內(nèi)存;當(dāng)值為2時(shí),表示系統(tǒng)鎖住整個(gè)可變大小分配的內(nèi)存。圖3顯示了可變大小分配組件的結(jié)構(gòu)信息。

    2.3 后端分配組件

    在14295版本的段堆中,SegmentCount、SegmentListHead、FreePageRanges字段記錄了后端分配組件分配的內(nèi)存信息,而在15063版本、16299版本和17134版本的段堆中,只有SegContexts字段記錄了后端分配組件分配的內(nèi)存信息。在-HEAP-SEG-CONTEXT結(jié)構(gòu)中,F(xiàn)reePageRanges字段是一個(gè)紅黑樹(shù)結(jié)構(gòu),空閑內(nèi)存之間通過(guò)指針相互連接形成紅黑樹(shù)結(jié)構(gòu)。SegmentLock字段標(biāo)記了已分配子段的訪問(wèn)請(qǐng)求狀態(tài),其中包括鎖住狀態(tài)、等待狀態(tài)、喚醒狀態(tài)、共享狀態(tài)等。LfhContext字段和VsContext字段為結(jié)構(gòu)體指針,分別指向低碎片化堆組件和可變大小分配組件結(jié)構(gòu)。MaxAllocationSize字段的值是一個(gè)子段分配的最大內(nèi)存大小,如果分配的內(nèi)存超過(guò)這個(gè)值,就會(huì)再分配一個(gè)子段。圖4顯示了后端分配組件的結(jié)構(gòu)信息。

    圖4 后端分配組件結(jié)構(gòu)信息

    2.4 大塊分配組件

    大塊分配組件分配的堆塊會(huì)產(chǎn)生較大的內(nèi)存碎片,在段堆中,為了提高內(nèi)存利用率,該組件很少使用。在圖1中,段堆結(jié)構(gòu)中有4個(gè)字段記錄的是大塊分配組件相關(guān)的信息。LargeReservedPages字段記錄的是大塊分配組件中申請(qǐng)的內(nèi)存大小,LargeCommittedPages字段記錄的是大塊分配組件分配內(nèi)存的大小,大塊分配組件分配堆塊的單元數(shù)據(jù)相互連接在一起形成紅黑樹(shù)結(jié)構(gòu),LargeAllocMetadata記錄的是單元數(shù)據(jù)紅黑樹(shù)的根地址[7]。

    3 插件的實(shí)現(xiàn)及試驗(yàn)

    3.1 池掃描技術(shù)

    系統(tǒng)內(nèi)存池分布了很多內(nèi)核對(duì)象,其中就包括進(jìn)程對(duì)象,池掃描技術(shù)可以定位內(nèi)核對(duì)象[8]。每個(gè)內(nèi)核對(duì)象頭部結(jié)構(gòu)都是-POOL-HEADER結(jié)構(gòu),該結(jié)構(gòu)中含有四字節(jié)標(biāo)簽,對(duì)該標(biāo)簽掃描可以定位需要分析的內(nèi)核對(duì)象[9-10]。池掃描技術(shù)是研發(fā)本文5個(gè)插件的前提技術(shù),當(dāng)定位進(jìn)程對(duì)象時(shí),就可以定位進(jìn)程環(huán)境塊結(jié)構(gòu)中的ProcessHeaps字段[6]。

    3.2 內(nèi)存取證框架

    本文研發(fā)的功能插件,都是基于內(nèi)存取證框架實(shí)現(xiàn)的。內(nèi)存取證框架是內(nèi)存取證工具,也是取證技術(shù)的載體,它可以提取進(jìn)程中的信息[11]。當(dāng)網(wǎng)絡(luò)犯罪發(fā)生時(shí),它能獲取電腦、手機(jī)等設(shè)備的數(shù)字證據(jù)[12]。內(nèi)存取證框架可以從轉(zhuǎn)儲(chǔ)文件和硬件磁盤(pán)鏡像中解析休眠文件與頁(yè)面文件信息,通過(guò)這2個(gè)文件信息的對(duì)比能獲取隱藏進(jìn)程的證據(jù)[13]而且還可以使用池掃描技術(shù)定位pico進(jìn)程并解析pico進(jìn)程內(nèi)部信息[14],使用可執(zhí)行頁(yè)面檢測(cè)算法遍歷內(nèi)存頁(yè)并恢復(fù)可執(zhí)行頁(yè)面,幫助調(diào)查人員識(shí)別代碼注入[15]等。

    Volatility框架中含有各個(gè)Windows 10系統(tǒng)版本的配置文件,配置文件里面組合了許多vtype 描述信息,用來(lái)生成與單個(gè)統(tǒng)一編譯單元一致的信息。在對(duì)內(nèi)存對(duì)象進(jìn)行分析的時(shí)候,這些信息可以讓Volatility框架對(duì)轉(zhuǎn)儲(chǔ)文件中的數(shù)據(jù)進(jìn)行解析[16]。在15063版本、16299版本、17134版本(操作系統(tǒng)內(nèi)部版本)的配置文件中,沒(méi)有段堆及其組件的vtype描述信息,本文提取出段堆及其組件結(jié)構(gòu)信息后導(dǎo)入到配置文件中。

    3.3 heapscan插件

    heapscan插件是基于池掃描技術(shù)實(shí)現(xiàn)的,當(dāng)識(shí)別出取證文件為Windows 10系統(tǒng)的轉(zhuǎn)儲(chǔ)文件時(shí),使用池掃描技術(shù)掃描內(nèi)核空間并定位需要分析的進(jìn)程,接著掃描進(jìn)程堆空間,使用段堆的特征值定位段堆的位置。heapscan插件可以重現(xiàn)進(jìn)程運(yùn)行時(shí),段堆的內(nèi)部信息。該插件可以輸出進(jìn)程中所有段堆的子段數(shù)量、不同狀態(tài)內(nèi)存的大小和不同類型堆的數(shù)量。heapscan插件解析段堆時(shí),執(zhí)行的步驟如下:

    步驟1讀取配置文件信息和pid信息,確定轉(zhuǎn)儲(chǔ)文件的結(jié)構(gòu)定義和解析語(yǔ)言,加載地址空間;

    步驟2使用池掃描技術(shù)掃描轉(zhuǎn)儲(chǔ)文件的物理地址空間,識(shí)別地址空間硬編碼,找到含有"proc"標(biāo)記的位置,根據(jù)字段信息確定進(jìn)程pid對(duì)應(yīng)的內(nèi)核對(duì)象;

    步驟3根據(jù)進(jìn)程內(nèi)部信息,定位PEB結(jié)構(gòu)位置;

    現(xiàn)代木結(jié)構(gòu)建筑設(shè)計(jì)應(yīng)遵循模數(shù)協(xié)調(diào)原則,建立標(biāo)準(zhǔn)化結(jié)構(gòu)體系,優(yōu)化建筑空間尺寸[13]。項(xiàng)目建筑設(shè)計(jì)未嚴(yán)格遵循選材的模數(shù)要求,在項(xiàng)目圍護(hù)體系制作過(guò)程中,材料出現(xiàn)多次裁剪,造成了一定的浪費(fèi)。通過(guò)項(xiàng)目實(shí)踐深切體會(huì)到,模數(shù)化是建筑工業(yè)化的基礎(chǔ),實(shí)現(xiàn)預(yù)制構(gòu)件和內(nèi)裝部品的標(biāo)準(zhǔn)化、系列化和通用化[9]13,有利于組織生產(chǎn)、提高效率、降低成本。

    步驟4根據(jù)PEB對(duì)應(yīng)的vtype描述信息,定位到進(jìn)程堆空間;

    步驟5掃描進(jìn)程堆,根據(jù)特征值區(qū)分NT堆和段堆,進(jìn)而定位段堆的位置;

    步驟6根據(jù)段堆的vtype描述信息,提取出段堆信息并顯示。

    根據(jù)以上步驟,整理出如下heapscan插件實(shí)現(xiàn)的流程圖:

    圖5 heapscan插件實(shí)現(xiàn)的流程圖

    heapscan插件實(shí)現(xiàn)的偽代碼如下:

    if profile is Windows10:

    LoadAddressSpace()

    if PoolScan(Address) is vaild:

    Peb<-getPeb(proc)

    AllHeap<-getHeaps()

    forheapin AllHeap:

    ifheapis SegmentHeap:

    yield (0,[Address(heap),

    str(Signature),

    int(getTotalCommittedPages()),

    int(getTotalReservedPages()),

    str("Segmentheap"),

    int(getSegmentCount())])

    3.4 showvscontext插件

    使用可變大小分配組件分配堆塊時(shí),-HEAP-VS-CONTEXT結(jié)構(gòu)會(huì)時(shí)時(shí)跟蹤可變大小組件對(duì)堆塊的分配與釋放情況,那么showvscontext插件可以對(duì)內(nèi)存中-HEAP-VS-CONTEXT結(jié)構(gòu)進(jìn)行定位并對(duì)內(nèi)部信息進(jìn)行解析,該插件輸出的信息有子段的數(shù)量、空閑塊數(shù)量等。showvscontext插件解析可變大小分配組件時(shí),執(zhí)行的步驟如下:

    步驟1基于段堆結(jié)構(gòu)對(duì)應(yīng)的vtype描述信息,定位-HEAP-VS-CONTEXT結(jié)構(gòu)位置;

    步驟2提取空閑塊根結(jié)點(diǎn)地址,掃描可變大小分配內(nèi)存中的空閑塊,統(tǒng)計(jì)空閑塊數(shù)量;

    步驟3定位子段的位置,掃描所有的子段并定位子段的頭部結(jié)構(gòu),解析子段頭部信息,統(tǒng)計(jì)子段大小和子段數(shù)量,輸出解析后的信息。

    實(shí)現(xiàn)showvscontext插件的偽代碼如下:

    SegmentHeap<-getSegmentHeap()

    VSContext<-getVSContext()

    SubSeglist <-getSubsegmentList()

    FreeChunkTreeRoot<-getFreeChunkTreeRoot()

    FreeChunkNum<-getTotalFreeChunkNum()

    forsegin SubSeglist:

    Add(SubNum, getSubnum())

    Add(Subsize,getSize())

    yield (0,[Address(BackendCtx), int(getTotalCommittedUnits()),

    int(getFreeCommittedUnits()), int(getSubsize()),

    int(getSubnum()),int(FreeChunkNum)])

    3.5 showlfhcontext插件

    在段堆中,-HEAP-LFH-CONTEXT結(jié)構(gòu)含有低碎片堆內(nèi)部信息,該插件可以復(fù)現(xiàn)低碎片堆分配內(nèi)存的情況。showlfhcontext插件解析低碎片堆內(nèi)部信息時(shí),執(zhí)行的步驟如下:

    步驟1解析段堆結(jié)構(gòu),定位低碎片堆位置;

    步驟2定位并掃描Buckets數(shù)組,判斷Bucket狀態(tài),提取出處于激活狀態(tài)的Bucket;

    步驟3定位每個(gè)處于激活狀態(tài)的-HEAP-LFH-BUCKET結(jié)構(gòu),統(tǒng)計(jì)堆塊的數(shù)量、子段數(shù)量、處于激活狀態(tài)的Bucket數(shù)量;

    步驟4通過(guò)-HEAP-LFH-AFFINITY-SLOT結(jié)構(gòu)定位到-HEAP-LFH-SUBSEGMENT-OWNER結(jié)構(gòu),統(tǒng)計(jì)低碎片化堆子段的數(shù)量,顯示提取后的信息。

    實(shí)現(xiàn)showlfhcontext插件的偽代碼如下:

    SegmentHeap<-getSegmentHeap()

    fortaskin SegmentHeap:

    buckets<-getBuckets()

    forbin buckets:

    ifb.Invalid exists:

    Add(ActiviatedBucketsNum,getActiviatedBucketsNum)

    Add(totalblock,getTotalBlockCount())

    Add(totalsubseg,getTotalSubsegmentCount())

    affslot<-getAffinitySlots()

    foraffsin affslot:

    AddSubsegmentCount()

    3.6 showlargeblockinfo插件

    大塊分配組件分配的內(nèi)存塊中存在著大塊單元數(shù)據(jù),大塊單元數(shù)據(jù)在內(nèi)存中呈現(xiàn)紅黑樹(shù)結(jié)構(gòu)。該插件以遍歷紅黑樹(shù)的方式定位大塊單元數(shù)據(jù)結(jié)構(gòu)中TreeNode字段,進(jìn)而掃描所有的大塊分配組件分配的單元數(shù)據(jù)結(jié)構(gòu)。showlargeblockinfo插件解析大塊分配組件時(shí),執(zhí)行的步驟如下:

    步驟1獲取heapscan插件傳送過(guò)來(lái)的段堆對(duì)象,根據(jù)段堆結(jié)構(gòu)在內(nèi)存中的信息分布規(guī)律,定位大塊分配組件分配堆塊的根結(jié)點(diǎn)位置;

    步驟2使用遍歷紅黑樹(shù)的方法,遍歷所有大塊的單元數(shù)據(jù),統(tǒng)計(jì)未被使用的內(nèi)存大小和已分配的內(nèi)存大??;

    步驟3提取并輸出大塊單元數(shù)據(jù)信息。

    showlargeblockinfo插件實(shí)現(xiàn)的偽代碼如下:

    SegmentHeap<-getSegmentHeap()

    fortaskin SegmentHeap:

    for LargeAllocMeta in TraverseMetadata():

    yield(0,[Address(getVirtualAddress()),

    Address(getTreeNode().Left),

    Address(getTreeNode().Right),

    str(getUnusedBytes()),

    str(getAllocatedPages())])

    3.7 showsegcontext插件

    創(chuàng)建段堆后,在段堆中通過(guò)2個(gè)-HEAP-SEG-C ONTEXT結(jié)構(gòu)記錄后端分配組件分配內(nèi)存的情況,通過(guò)-SEGMENT-HEAP結(jié)構(gòu)中的SegContexts字段可以提取后端分配組件的內(nèi)部信息。showsegcontext插件解析后端分配組件時(shí),執(zhí)行的步驟如下:

    步驟1使用vtype描述信息解析段堆內(nèi)存對(duì)象,定位_HEAP_SEG_CONTEXT結(jié)構(gòu)位置;

    步驟2使用_HEAP_SEG_CONTEXT結(jié)構(gòu)的vtype描述信息解析后端分配組件內(nèi)存對(duì)象;

    步驟3定位子段位置,掃描各個(gè)子段,統(tǒng)計(jì)子段數(shù)量和子段中已分配內(nèi)存頁(yè)的大小;

    步驟4定位頁(yè)范圍描述結(jié)構(gòu)起始位置,使用掃描紅黑樹(shù)的方法掃描-HEAP-PAGE-SEGMENT結(jié)構(gòu),統(tǒng)計(jì)空閑頁(yè)面數(shù)量,顯示解析結(jié)果。

    showsegcontext插件實(shí)現(xiàn)的偽代碼如下:

    SegmentHeap<-getSegmentHeap()

    VSContext<-getSegContext()

    SegList <-getSegmentList()

    FreePageRanges<-getFreePageRangesTreeRoot()

    forsegin SegList:

    Add(SubNum, getSubNum())

    Add(CommPageCount, getCommPageCount())

    for FreeTree in Traverse(FreePageRanges):

    Add(PageCount,getPageCount())

    Add(UnusedBytes,getUnusedBytes())

    yield (0,[Address(getHeap()), int(SubNum()),

    int(CommittedPageCount()), int(PageCount),

    int(UnusedBytes)])

    4 測(cè)試與分析

    測(cè)試分為信息提取測(cè)試和堆溢出檢測(cè)測(cè)試兩部分,信息提取測(cè)試是為了驗(yàn)證插件能否提取出轉(zhuǎn)儲(chǔ)文件中段堆的信息,堆溢出測(cè)試是為了驗(yàn)證插件是否能檢測(cè)出堆溢出攻擊。實(shí)驗(yàn)環(huán)境如下:

    主機(jī)操作系統(tǒng)為Windows 10 version 1903 64位,CPU為2.20 GHz,內(nèi)存大小8 G,硬盤(pán)容量2 T。

    4.1 信息提取測(cè)試

    選取calculator進(jìn)程和svchost進(jìn)程作為實(shí)驗(yàn)對(duì)象,calculator進(jìn)程為系統(tǒng)自帶程序且屬于用戶進(jìn)程,svchost進(jìn)程是服務(wù)主程序,該程序在系統(tǒng)運(yùn)行中起到非常重要的作用。

    在15063版本、16299版本、17134版本的Windows 10系統(tǒng)中運(yùn)行calculator程序,隨后分別對(duì)系統(tǒng)內(nèi)存進(jìn)行轉(zhuǎn)儲(chǔ)生成轉(zhuǎn)儲(chǔ)文件,使用本文研發(fā)好的5個(gè)插件分別提取calculator進(jìn)程和svchost進(jìn)程中段堆的信息。

    4.1.1 heapscan插件測(cè)試

    本文研發(fā)的5個(gè)插件中,heapscan插件最為關(guān)鍵,它可以定位段堆的位置并為其他插件傳遞段堆內(nèi)存對(duì)象。heapscan插件根據(jù)段堆結(jié)構(gòu)的vtype描述信息解析段堆內(nèi)部數(shù)據(jù)。在程序中,使用HeapAlloc、HeapCreate等函數(shù)可以向內(nèi)存中申請(qǐng)連續(xù)的內(nèi)存區(qū)域,當(dāng)對(duì)這塊內(nèi)存區(qū)域進(jìn)行初始化并使用時(shí),這塊內(nèi)存就處于已分配狀態(tài)。表1記錄了heapscan插件提取的數(shù)據(jù)。

    表1 heapscan插件提取的數(shù)據(jù)

    4.1.2 showvscontext插件測(cè)試

    該插件根據(jù)段堆結(jié)構(gòu)信息中的VsContext字段定位可變大小組件結(jié)構(gòu)。當(dāng)可變大小分配組件釋放堆塊時(shí),釋放的堆塊會(huì)被視為結(jié)點(diǎn)插入到由空閑塊組成的紅黑樹(shù)中,遍歷空閑塊紅黑樹(shù)可以定位每個(gè)空閑塊,進(jìn)而判斷空閑堆塊有沒(méi)有發(fā)生堆溢出。當(dāng)定位到可變大小分配組件子段的位置時(shí),加上偏移就可以定位處于分配狀態(tài)的堆塊,再把堆塊的大小作為偏移就可以定位每個(gè)堆塊,進(jìn)而判斷已分配堆塊有沒(méi)有發(fā)生堆溢出。表2記錄了showvscontext插件提取的信息。

    表2 showvscontext插件提取的數(shù)據(jù)

    4.1.3 showlfhcontext插件測(cè)試

    低碎片化堆分配組件是把分配的內(nèi)存放到Buckets數(shù)組中,當(dāng)Bucket處于激活狀態(tài)時(shí),表明該Bucket可以分配內(nèi)存。遍歷子段時(shí),通過(guò)堆塊的偏移就能定位到已分配堆塊的位置,根據(jù)填充數(shù)據(jù)有沒(méi)有被覆蓋可以判斷堆塊有沒(méi)有發(fā)生堆溢出。表3記錄了showlfhcontext插件提取的數(shù)據(jù)。

    表3 showlfhcontext插件提取的數(shù)據(jù)

    4.1.4 showlargeblockinfo插件測(cè)試

    大塊分配組件不同于其他組件,根據(jù)它的結(jié)構(gòu)定位不到堆塊的位置,只能定位堆塊的單元數(shù)據(jù)結(jié)構(gòu),通過(guò)該結(jié)構(gòu),可以統(tǒng)計(jì)大塊組件申請(qǐng)的內(nèi)存中處于分配狀態(tài)的內(nèi)存頁(yè)數(shù)量和未被進(jìn)程使用的內(nèi)存頁(yè)數(shù)量。表4記錄了showlargeblockinfo插件提取的數(shù)據(jù)。

    表4 showlargeblockinfo插件提取的數(shù)據(jù)

    4.1.5 showsegcontext插件測(cè)試

    由于可變大小分配組件和低碎片化堆分配組件都依賴于后端分配組件實(shí)現(xiàn)內(nèi)存分配,因此后端分配組件子段數(shù)量為段堆所有的子段數(shù)量。遍歷空閑頁(yè)描述符可以知道后端分配組件申請(qǐng)分配的內(nèi)存中未被進(jìn)程使用的和已被進(jìn)程釋放的內(nèi)存頁(yè)數(shù)量。表5記錄了showsegcontext插件提取的數(shù)據(jù)。

    表5 showsegcontext插件提取的數(shù)據(jù)

    實(shí)驗(yàn)結(jié)果表明本文研發(fā)的插件能成功地提取出不同Windows 10版本的段堆信息。從表中的信息可以看出,使用段堆及其組件結(jié)構(gòu)的vtype描述信息可以成功解析段堆內(nèi)部數(shù)據(jù)。隨著Windows 10系統(tǒng)的更新,段堆及其組件結(jié)構(gòu)中字段位置發(fā)生了變化,但這并不影響對(duì)段堆信息的提取,因?yàn)楫?dāng)使用vtype描述信息解析段堆時(shí),根據(jù)信息名稱就能進(jìn)行解析,因此本文研發(fā)的插件具有較強(qiáng)的兼容性。

    4.2 堆溢出攻擊檢測(cè)測(cè)試

    在段堆內(nèi)部存在較完善的安全機(jī)制,我們通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),在段堆中不可能通過(guò)覆蓋堆塊頭中的前后指針實(shí)現(xiàn)DWORD SHOOT攻擊。我們分析發(fā)現(xiàn)通過(guò)覆蓋虛表指針或者通過(guò)修改堆塊內(nèi)部數(shù)據(jù)分配大小的方式,泄漏虛表指針可以產(chǎn)生堆溢出攻擊。

    當(dāng)用插件提取段堆信息時(shí),插件會(huì)檢測(cè)段堆中是否出現(xiàn)堆溢出攻擊。堆塊頭部結(jié)構(gòu)含有堆塊信息,通過(guò)核對(duì)頭部信息的方法就可以檢測(cè)出異常堆塊。當(dāng)定位到異常堆塊時(shí),使用識(shí)別地址的正則表達(dá)式檢測(cè)堆塊中有無(wú)虛表地址,若有則說(shuō)明發(fā)生了虛表地址覆蓋攻擊,若沒(méi)有,則通過(guò)識(shí)別堆塊中的填充數(shù)據(jù)或堆塊塊頭的方式定位到下個(gè)堆塊,檢測(cè)下個(gè)堆塊中有無(wú)虛表地址,有的話,則說(shuō)明發(fā)生了虛表地址泄漏攻擊。

    4.2.1 虛表地址泄漏攻擊檢測(cè)測(cè)試

    堆塊分配后,可以在堆塊中分配標(biāo)識(shí)內(nèi)存大小的數(shù)據(jù)類型,通過(guò)堆溢出,修改該數(shù)據(jù)類型大小,就可以泄漏堆塊信息。如果在堆塊頭被覆蓋堆塊的相鄰堆塊中存放了C++對(duì)象,那么通過(guò)虛表指針泄漏的方式可以調(diào)用惡意虛函數(shù)。以CVE-2020-0787漏洞為例進(jìn)行測(cè)試,該漏洞為任意文件移動(dòng)漏洞。在所有的Windows 10系統(tǒng)中,利用exploit程序泄漏虛表地址,可以導(dǎo)致惡意虛函數(shù)通過(guò)符號(hào)鏈接重定向文件移動(dòng)函數(shù),把惡意目錄中的提權(quán)dll加載進(jìn)System32文件夾中,當(dāng)加載提權(quán)dll時(shí),就能獲得系統(tǒng)管理員權(quán)限。測(cè)試使用的關(guān)鍵exploit程序如下所示:

    DoVftableFunc()

    {

    CreateFileAndWriteFile (SourceFilePath, fileContent......);

    CreateGroupAndJob(group, job ,……);

    InitFileInfo();

    AddFiles(1, &fileInfoArray);

    hRes = FindFirstFile(SearchPath, &FindData);

    StringCchCat(BitsFileName,x, FindData.cFileN);

    oplock =CreateLock(BitsTempFilePath, ......);

    CreateSymlink(nullptr, LinkName, LinkTarget);

    CompleteJob();

    }

    void TriggerHeapOverFlow

    {

    while(i

    a[i]= HeapAllocAndInit(Hheap,0,size);

    HeapFree(Hheap,x,a[k]);

    While(i

    bStrings[i] = SysAllocString(LongStr);

    HeapFree(Hheap,x,a[k+1]);

    While(i

    vector v[i](vsize,obj);

    memcpy(a[k-1],ShellCode,sizeof(ShellCode));

    DoVftableFunc= ReadVftable ();

    DoVftableFunc();

    }

    運(yùn)行exploit程序后,對(duì)系統(tǒng)內(nèi)存進(jìn)行轉(zhuǎn)儲(chǔ)并用本文研發(fā)的插件進(jìn)行信息提取。圖6顯示了段堆中的惡意痕跡信息,從中可以看出可變大小分配組件分配堆塊的頭部和填充數(shù)據(jù)都被溢出數(shù)據(jù)覆蓋,增大了BSTR型變量的數(shù)據(jù)長(zhǎng)度,導(dǎo)致了虛表地址泄漏。

    圖6 虛表地址泄漏攻擊信息

    4.2.2 虛表地址覆蓋攻擊檢測(cè)測(cè)試

    通過(guò)堆溢出可以覆蓋C++對(duì)象的虛表地址,當(dāng)調(diào)用虛函數(shù)時(shí),會(huì)查找偽造的虛表并調(diào)用其中的惡意虛函數(shù)。以CVE-2020-0796漏洞為例進(jìn)行測(cè)試,該漏洞是SMB遠(yuǎn)程代碼執(zhí)行漏洞。在1903版本和1909版本的Windows 10系統(tǒng)中,利用exploit程序覆蓋虛表地址并通過(guò)惡意虛函數(shù)讓SMB以不合理長(zhǎng)度解壓數(shù)據(jù)包,可以導(dǎo)致權(quán)限提升,進(jìn)而攻擊SMB服務(wù)器執(zhí)行惡意代碼。測(cè)試使用的關(guān)鍵exploit程序如下所示:

    Class Object{

    virtual void MaliciousCode()

    {

    const uint8-t buf[ ] = { ........

    0xFF, 0xFF, 0xFF, 0xFF, //異常原始未壓縮數(shù)據(jù)長(zhǎng)度

    0x02, 0x00, //壓縮算法

    ........};

    send(sock, packet, len, 0));

    hProc =getProcessHandleByName(ProcessName);

    lpMem = VirtualAllocEx(hProc,….);

    WriteProcessMemory(hProc, lpMem, shellcode,…);

    CreateRemoteThread(hProc,….);

    }}

    void TriggerHeapOverFlow

    {

    While(i

    a[i]=HeapAllocAndInit(Hheap,0,size);

    HeapFree(Hheap,x,a[k]);

    While(i

    vector v[i](vsize,obj);

    memcpy(a[k-1],ShellCode,sizeof(ShellCode));

    v[0].at(0)->MaliciousCode();

    }

    同樣使用本文研發(fā)的插件對(duì)轉(zhuǎn)儲(chǔ)文件進(jìn)行信息提取,根據(jù)系統(tǒng)的內(nèi)部版本,我們使用18362版本的Windows 10配置文件解析轉(zhuǎn)儲(chǔ)文件。圖7顯示了段堆中的惡意信息,從中可以看出低碎片堆組件分配堆塊的填充數(shù)據(jù)和堆塊中的虛表地址被溢出數(shù)據(jù)覆蓋。

    圖7 虛表地址覆蓋攻擊信息

    在上述的測(cè)試中,我們使用了相似性匹配的快速檢測(cè)方法檢驗(yàn)虛函數(shù)在內(nèi)存中的shellcode,都發(fā)現(xiàn)了惡意shellcode,說(shuō)明了泄漏的虛表和覆蓋后偽造的虛表中都有惡意虛函數(shù),驗(yàn)證了本插件能檢測(cè)出針對(duì)段堆的堆溢出攻擊。

    5 結(jié) 論

    為了提取出段堆中的信息,本文分析了段堆結(jié)構(gòu)中含有的字段并結(jié)合池掃描技術(shù)和字段在結(jié)構(gòu)信息中的偏移量,設(shè)計(jì)出獲取段堆及其組件內(nèi)部信息的算法并在內(nèi)存取證框架中研發(fā)出功能插件,這些插件可以解析Windows 10系統(tǒng)中段堆內(nèi)部含有的信息。實(shí)驗(yàn)結(jié)果表明本文提出的方法可以重現(xiàn)進(jìn)程運(yùn)行時(shí)段堆及其內(nèi)部組件在內(nèi)存中的分配情況,進(jìn)而反映進(jìn)程中段堆內(nèi)存信息,這些信息可以為系統(tǒng)遭到網(wǎng)絡(luò)攻擊或者網(wǎng)絡(luò)犯罪提供取證依據(jù)。

    猜你喜歡
    字段插件內(nèi)存
    圖書(shū)館中文圖書(shū)編目外包數(shù)據(jù)質(zhì)量控制分析
    自編插件完善App Inventor與樂(lè)高機(jī)器人通信
    電子制作(2019年22期)2020-01-14 03:16:34
    “春夏秋冬”的內(nèi)存
    MapWindowGIS插件機(jī)制及應(yīng)用
    基于Revit MEP的插件制作探討
    CNMARC304字段和314字段責(zé)任附注方式解析
    無(wú)正題名文獻(xiàn)著錄方法評(píng)述
    基于內(nèi)存的地理信息訪問(wèn)技術(shù)
    關(guān)于CNMARC的3--字段改革的必要性與可行性研究
    上網(wǎng)本為什么只有1GB?
    狠狠婷婷综合久久久久久88av| 国产精品免费大片| 久久精品久久久久久久性| 国产亚洲午夜精品一区二区久久| 18禁裸乳无遮挡动漫免费视频| 国产一区二区三区av在线| 黄片小视频在线播放| 新久久久久国产一级毛片| 欧美成人午夜精品| 99国产精品一区二区三区| 热re99久久国产66热| av在线播放精品| 50天的宝宝边吃奶边哭怎么回事| 亚洲av电影在线观看一区二区三区| 美女扒开内裤让男人捅视频| 高清av免费在线| www.熟女人妻精品国产| 亚洲,欧美,日韩| 欧美97在线视频| netflix在线观看网站| 日本一区二区免费在线视频| 人体艺术视频欧美日本| 日韩 欧美 亚洲 中文字幕| 午夜日韩欧美国产| 国产99久久九九免费精品| 精品一区二区三区四区五区乱码 | 90打野战视频偷拍视频| 亚洲久久久国产精品| 在线观看免费视频网站a站| 精品国产一区二区三区四区第35| 女人高潮潮喷娇喘18禁视频| av在线app专区| 老熟女久久久| 亚洲五月色婷婷综合| 中文字幕av电影在线播放| 亚洲成国产人片在线观看| 男女之事视频高清在线观看 | 老司机影院毛片| h视频一区二区三区| av线在线观看网站| 成人亚洲欧美一区二区av| 午夜精品国产一区二区电影| 色婷婷久久久亚洲欧美| 一区二区三区四区激情视频| 夫妻午夜视频| 两人在一起打扑克的视频| 免费人妻精品一区二区三区视频| 狠狠婷婷综合久久久久久88av| 1024香蕉在线观看| 精品国产一区二区三区四区第35| 男人舔女人的私密视频| 亚洲精品av麻豆狂野| 国产男女内射视频| 少妇人妻久久综合中文| 各种免费的搞黄视频| 中文字幕色久视频| 一级片'在线观看视频| 一本色道久久久久久精品综合| 久久久国产一区二区| 搡老乐熟女国产| 亚洲熟女精品中文字幕| 亚洲一码二码三码区别大吗| 成人亚洲精品一区在线观看| 天天影视国产精品| 精品一品国产午夜福利视频| 欧美变态另类bdsm刘玥| 91字幕亚洲| 精品人妻1区二区| 欧美97在线视频| 另类亚洲欧美激情| 高清视频免费观看一区二区| 在线精品无人区一区二区三| 亚洲国产日韩一区二区| 看免费成人av毛片| 波野结衣二区三区在线| 欧美激情高清一区二区三区| 51午夜福利影视在线观看| 国产熟女欧美一区二区| 亚洲av片天天在线观看| 亚洲av电影在线观看一区二区三区| 久久鲁丝午夜福利片| 好男人电影高清在线观看| 免费在线观看视频国产中文字幕亚洲 | 久久精品国产综合久久久| 日日爽夜夜爽网站| 99久久综合免费| 一边摸一边抽搐一进一出视频| 又紧又爽又黄一区二区| 18禁观看日本| 日韩 欧美 亚洲 中文字幕| 亚洲第一青青草原| www.av在线官网国产| 免费观看av网站的网址| 嫁个100分男人电影在线观看 | 建设人人有责人人尽责人人享有的| 欧美精品亚洲一区二区| 国产精品一二三区在线看| 一级毛片我不卡| 日本wwww免费看| 日韩大码丰满熟妇| 日韩av不卡免费在线播放| 亚洲九九香蕉| 日韩熟女老妇一区二区性免费视频| 黄片小视频在线播放| 成人午夜精彩视频在线观看| 国产亚洲av片在线观看秒播厂| 乱人伦中国视频| 国产爽快片一区二区三区| 纯流量卡能插随身wifi吗| 亚洲精品中文字幕在线视频| 美女视频免费永久观看网站| 亚洲精品在线美女| 国产亚洲一区二区精品| 另类精品久久| 婷婷成人精品国产| 18禁观看日本| 欧美成人精品欧美一级黄| 亚洲欧美色中文字幕在线| 亚洲精品一二三| 波野结衣二区三区在线| 婷婷色麻豆天堂久久| 亚洲欧洲国产日韩| 美女扒开内裤让男人捅视频| 午夜福利视频精品| 下体分泌物呈黄色| 中文字幕制服av| 一级黄色大片毛片| 欧美 亚洲 国产 日韩一| www日本在线高清视频| 久久久久国产精品人妻一区二区| 99久久人妻综合| 久久亚洲精品不卡| 亚洲国产精品999| 人体艺术视频欧美日本| 人成视频在线观看免费观看| 中文字幕人妻丝袜制服| 纵有疾风起免费观看全集完整版| 成年人黄色毛片网站| 少妇人妻久久综合中文| 伦理电影免费视频| 国产1区2区3区精品| 亚洲国产精品成人久久小说| 欧美日韩亚洲高清精品| 国产亚洲av片在线观看秒播厂| 深夜精品福利| 亚洲国产精品一区二区三区在线| 中文欧美无线码| 99精品久久久久人妻精品| 香蕉丝袜av| 亚洲av美国av| 欧美黑人欧美精品刺激| 在线观看人妻少妇| 国产精品熟女久久久久浪| 久久青草综合色| 伦理电影免费视频| 国产精品久久久久成人av| 一区二区三区乱码不卡18| 天堂俺去俺来也www色官网| 男人添女人高潮全过程视频| 大香蕉久久网| a级毛片在线看网站| 最新在线观看一区二区三区 | 中文字幕精品免费在线观看视频| 午夜两性在线视频| 搡老岳熟女国产| 亚洲精品美女久久久久99蜜臀 | 精品国产国语对白av| 黄色 视频免费看| 天天躁狠狠躁夜夜躁狠狠躁| 亚洲精品美女久久久久99蜜臀 | 欧美性长视频在线观看| 国产高清视频在线播放一区 | 免费在线观看完整版高清| 国产熟女欧美一区二区| 日韩av不卡免费在线播放| 人人妻人人澡人人看| 精品久久蜜臀av无| 久久久久国产一级毛片高清牌| 在线观看国产h片| 高清不卡的av网站| av电影中文网址| 国产精品久久久久成人av| 777久久人妻少妇嫩草av网站| 亚洲熟女毛片儿| 亚洲精品国产av蜜桃| 午夜福利视频在线观看免费| 男女无遮挡免费网站观看| 欧美人与善性xxx| 国产精品av久久久久免费| 久久99一区二区三区| 99久久精品国产亚洲精品| 国产片内射在线| 国产av国产精品国产| 黄色视频在线播放观看不卡| 色婷婷久久久亚洲欧美| 一级黄片播放器| 80岁老熟妇乱子伦牲交| 中文字幕人妻丝袜制服| 国产国语露脸激情在线看| 国产日韩一区二区三区精品不卡| 无限看片的www在线观看| 女人被躁到高潮嗷嗷叫费观| 亚洲成av片中文字幕在线观看| 久久久久久久久久久久大奶| 一本—道久久a久久精品蜜桃钙片| 亚洲,一卡二卡三卡| 天堂俺去俺来也www色官网| 精品人妻1区二区| 久久天堂一区二区三区四区| av有码第一页| 亚洲国产欧美一区二区综合| 女人精品久久久久毛片| 美女福利国产在线| 欧美亚洲日本最大视频资源| 亚洲国产毛片av蜜桃av| 久久精品国产亚洲av涩爱| 老鸭窝网址在线观看| 国产精品亚洲av一区麻豆| 国产成人免费无遮挡视频| 女人被躁到高潮嗷嗷叫费观| 一本一本久久a久久精品综合妖精| 国产成人精品无人区| 18禁黄网站禁片午夜丰满| svipshipincom国产片| 午夜激情av网站| 精品人妻1区二区| 成年人免费黄色播放视频| 亚洲熟女精品中文字幕| 青春草亚洲视频在线观看| 一区二区三区乱码不卡18| 精品高清国产在线一区| 最近手机中文字幕大全| av国产久精品久网站免费入址| 亚洲国产成人一精品久久久| 韩国高清视频一区二区三区| av在线老鸭窝| 天天躁狠狠躁夜夜躁狠狠躁| 巨乳人妻的诱惑在线观看| 亚洲精品久久成人aⅴ小说| 看十八女毛片水多多多| 国产国语露脸激情在线看| 人人妻人人添人人爽欧美一区卜| 色婷婷久久久亚洲欧美| 亚洲伊人色综图| 久久鲁丝午夜福利片| 久久久精品国产亚洲av高清涩受| svipshipincom国产片| 99国产精品一区二区三区| 人人妻,人人澡人人爽秒播 | 99国产综合亚洲精品| 伊人亚洲综合成人网| 成人三级做爰电影| 好男人视频免费观看在线| 亚洲国产欧美日韩在线播放| 国产成人一区二区在线| 黄频高清免费视频| 69精品国产乱码久久久| 大码成人一级视频| 久久久久精品国产欧美久久久 | 国产主播在线观看一区二区 | √禁漫天堂资源中文www| 久久国产亚洲av麻豆专区| 99热全是精品| 日本欧美视频一区| 国产精品二区激情视频| 男女免费视频国产| 香蕉国产在线看| 狂野欧美激情性xxxx| 久久青草综合色| 亚洲av片天天在线观看| 国产精品99久久99久久久不卡| 亚洲视频免费观看视频| 汤姆久久久久久久影院中文字幕| 亚洲欧洲精品一区二区精品久久久| 侵犯人妻中文字幕一二三四区| 成年人免费黄色播放视频| 精品国产乱码久久久久久小说| 国产99久久九九免费精品| 免费在线观看影片大全网站 | 叶爱在线成人免费视频播放| 日韩中文字幕视频在线看片| 亚洲中文日韩欧美视频| 亚洲精品第二区| 国产日韩欧美亚洲二区| 大香蕉久久网| 免费观看a级毛片全部| 亚洲精品久久午夜乱码| 丝袜在线中文字幕| 精品一品国产午夜福利视频| 国产亚洲欧美在线一区二区| 久久精品亚洲av国产电影网| 两个人看的免费小视频| 亚洲欧美日韩另类电影网站| 一区二区日韩欧美中文字幕| 麻豆av在线久日| 亚洲精品国产色婷婷电影| 亚洲专区国产一区二区| 精品一区二区三卡| 精品福利永久在线观看| 国产成人啪精品午夜网站| 下体分泌物呈黄色| 考比视频在线观看| 日韩大码丰满熟妇| 9色porny在线观看| 一区二区三区激情视频| www.自偷自拍.com| 欧美日韩亚洲综合一区二区三区_| 交换朋友夫妻互换小说| 国产高清国产精品国产三级| 看免费av毛片| 自线自在国产av| 精品国产一区二区三区四区第35| 亚洲欧美精品自产自拍| 亚洲精品日韩在线中文字幕| 成人国语在线视频| 又黄又粗又硬又大视频| 男女午夜视频在线观看| 精品国产一区二区三区久久久樱花| 视频区图区小说| 丝袜美足系列| 免费黄频网站在线观看国产| 免费观看av网站的网址| 美女扒开内裤让男人捅视频| 亚洲欧美精品综合一区二区三区| 久久久精品免费免费高清| 免费人妻精品一区二区三区视频| 亚洲精品久久午夜乱码| 狠狠精品人妻久久久久久综合| 国产av精品麻豆| 欧美人与性动交α欧美精品济南到| 男男h啪啪无遮挡| 国产在线一区二区三区精| 国产亚洲欧美在线一区二区| 大陆偷拍与自拍| 亚洲人成77777在线视频| 中国美女看黄片| 亚洲伊人久久精品综合| 欧美乱码精品一区二区三区| 自线自在国产av| 国产三级黄色录像| 成人黄色视频免费在线看| 91老司机精品| 亚洲国产欧美日韩在线播放| 日韩,欧美,国产一区二区三区| 成人黄色视频免费在线看| 日本av手机在线免费观看| 国产无遮挡羞羞视频在线观看| 亚洲av美国av| 在线观看免费日韩欧美大片| 黑人欧美特级aaaaaa片| 一级a爱视频在线免费观看| 成年动漫av网址| 电影成人av| 一边亲一边摸免费视频| 91精品伊人久久大香线蕉| 亚洲五月色婷婷综合| 成人午夜精彩视频在线观看| 婷婷色麻豆天堂久久| 国产男人的电影天堂91| 婷婷色av中文字幕| 国产av精品麻豆| 国产精品免费大片| 婷婷色av中文字幕| 肉色欧美久久久久久久蜜桃| 国产男女内射视频| 亚洲欧美精品综合一区二区三区| 少妇被粗大的猛进出69影院| 久久精品久久久久久噜噜老黄| 中文乱码字字幕精品一区二区三区| 中文字幕av电影在线播放| 老司机在亚洲福利影院| 国产午夜精品一二区理论片| 一级片免费观看大全| 久久国产精品人妻蜜桃| 日韩一区二区三区影片| 精品少妇黑人巨大在线播放| 国产成人免费观看mmmm| 国产黄色视频一区二区在线观看| 在线天堂中文资源库| 菩萨蛮人人尽说江南好唐韦庄| 国产在视频线精品| 国产av一区二区精品久久| 一区二区三区精品91| 亚洲欧美一区二区三区久久| 国产精品香港三级国产av潘金莲 | 日本猛色少妇xxxxx猛交久久| 老汉色∧v一级毛片| 精品久久久久久久毛片微露脸 | 黄频高清免费视频| av天堂久久9| 亚洲专区中文字幕在线| 欧美精品一区二区大全| 9色porny在线观看| 精品亚洲成a人片在线观看| 日韩一本色道免费dvd| 最新在线观看一区二区三区 | 亚洲精品在线美女| 赤兔流量卡办理| 国产黄色免费在线视频| www.精华液| 久久国产精品影院| 日韩电影二区| 99国产精品一区二区蜜桃av | 一区在线观看完整版| 咕卡用的链子| 在线观看一区二区三区激情| 日韩av在线免费看完整版不卡| 亚洲中文日韩欧美视频| 国产真人三级小视频在线观看| 久久99精品国语久久久| 亚洲精品国产av成人精品| 亚洲,欧美精品.| 国产成人免费观看mmmm| 99热全是精品| 久久女婷五月综合色啪小说| 国产视频首页在线观看| 亚洲精品国产av蜜桃| 亚洲黑人精品在线| 男女国产视频网站| 好男人电影高清在线观看| 满18在线观看网站| 久久青草综合色| 亚洲少妇的诱惑av| 国产亚洲精品久久久久5区| 午夜激情久久久久久久| 欧美精品啪啪一区二区三区 | 91九色精品人成在线观看| 久久国产精品男人的天堂亚洲| 又大又爽又粗| 啦啦啦在线免费观看视频4| 亚洲欧美色中文字幕在线| 国产成人影院久久av| 亚洲精品av麻豆狂野| 欧美av亚洲av综合av国产av| 婷婷色麻豆天堂久久| 91精品伊人久久大香线蕉| 日韩精品免费视频一区二区三区| 只有这里有精品99| 男男h啪啪无遮挡| 男人添女人高潮全过程视频| 最黄视频免费看| 国产免费又黄又爽又色| 九草在线视频观看| 国产人伦9x9x在线观看| 天天躁狠狠躁夜夜躁狠狠躁| 69精品国产乱码久久久| 亚洲欧美日韩另类电影网站| 国产有黄有色有爽视频| 国产日韩一区二区三区精品不卡| 涩涩av久久男人的天堂| 男的添女的下面高潮视频| 高清不卡的av网站| 午夜免费观看性视频| 成人国语在线视频| 亚洲精品国产av蜜桃| 色精品久久人妻99蜜桃| 人妻人人澡人人爽人人| 国产成人一区二区在线| e午夜精品久久久久久久| 激情视频va一区二区三区| 国产精品久久久久久人妻精品电影 | 亚洲 欧美一区二区三区| 久热这里只有精品99| 首页视频小说图片口味搜索 | 免费看十八禁软件| 丰满少妇做爰视频| 欧美日本中文国产一区发布| 夫妻午夜视频| 国产在线观看jvid| 黄色片一级片一级黄色片| 一区二区三区激情视频| 99国产精品一区二区蜜桃av | 国产日韩欧美视频二区| 精品少妇黑人巨大在线播放| 亚洲av成人精品一二三区| 少妇 在线观看| www.999成人在线观看| 色综合欧美亚洲国产小说| 秋霞在线观看毛片| 日韩,欧美,国产一区二区三区| 一级毛片电影观看| 欧美亚洲日本最大视频资源| 国产精品av久久久久免费| 午夜久久久在线观看| 性色av一级| 99国产综合亚洲精品| 亚洲色图综合在线观看| 成年动漫av网址| 日韩大片免费观看网站| 丝瓜视频免费看黄片| 男人操女人黄网站| 亚洲欧美激情在线| 国产成人精品久久久久久| 国产成人免费无遮挡视频| 男女床上黄色一级片免费看| 激情五月婷婷亚洲| 国产极品粉嫩免费观看在线| 亚洲国产最新在线播放| 国产欧美日韩精品亚洲av| 亚洲国产中文字幕在线视频| 精品亚洲成国产av| 极品人妻少妇av视频| 999久久久国产精品视频| 久久精品亚洲av国产电影网| 国产精品99久久99久久久不卡| 天堂中文最新版在线下载| 真人做人爱边吃奶动态| 久久鲁丝午夜福利片| 免费久久久久久久精品成人欧美视频| videos熟女内射| 老司机午夜十八禁免费视频| 成人国产一区最新在线观看 | 亚洲国产精品成人久久小说| 黄频高清免费视频| 国产1区2区3区精品| 国产一区二区三区综合在线观看| √禁漫天堂资源中文www| 乱人伦中国视频| 如日韩欧美国产精品一区二区三区| a级毛片黄视频| 国产成人精品在线电影| 黄色怎么调成土黄色| 另类亚洲欧美激情| 色综合欧美亚洲国产小说| 亚洲av成人不卡在线观看播放网 | 母亲3免费完整高清在线观看| 国产免费一区二区三区四区乱码| 中文字幕人妻丝袜一区二区| 一边亲一边摸免费视频| 亚洲少妇的诱惑av| 黄色片一级片一级黄色片| 欧美日韩黄片免| 嫁个100分男人电影在线观看 | 国产一区二区激情短视频 | 免费av中文字幕在线| 美女午夜性视频免费| 777米奇影视久久| 欧美精品高潮呻吟av久久| 18禁裸乳无遮挡动漫免费视频| 女人高潮潮喷娇喘18禁视频| 日韩制服骚丝袜av| 嫩草影视91久久| 在线观看免费午夜福利视频| 欧美日韩亚洲高清精品| 又大又黄又爽视频免费| 嫩草影视91久久| 亚洲av成人精品一二三区| 18禁观看日本| 视频区图区小说| 晚上一个人看的免费电影| 久久天躁狠狠躁夜夜2o2o | 老汉色av国产亚洲站长工具| 夫妻午夜视频| 亚洲国产看品久久| 亚洲国产中文字幕在线视频| 午夜福利乱码中文字幕| 夫妻午夜视频| 久久毛片免费看一区二区三区| 多毛熟女@视频| av视频免费观看在线观看| 国产亚洲欧美精品永久| 少妇精品久久久久久久| 十分钟在线观看高清视频www| 精品亚洲成a人片在线观看| e午夜精品久久久久久久| 国产精品麻豆人妻色哟哟久久| 国产一区亚洲一区在线观看| 精品国产一区二区三区四区第35| 一级片'在线观看视频| av欧美777| 久久久精品94久久精品| 亚洲人成网站在线观看播放| 亚洲精品国产色婷婷电影| 1024香蕉在线观看| 久久综合国产亚洲精品| 在线精品无人区一区二区三| 一级毛片女人18水好多 | 欧美大码av| 国产91精品成人一区二区三区 | 国产在线免费精品| 91精品伊人久久大香线蕉| 成人亚洲欧美一区二区av| 高清欧美精品videossex| 黑丝袜美女国产一区| 国产1区2区3区精品| 黄色视频不卡| 我的亚洲天堂| 尾随美女入室| 搡老乐熟女国产| 亚洲精品美女久久久久99蜜臀 | 国产精品久久久av美女十八| 日韩av免费高清视频| 免费少妇av软件| 国产成人欧美在线观看 | 国产一级毛片在线| 久久精品久久久久久噜噜老黄| 成年av动漫网址| 精品一区二区三区四区五区乱码 | 成人免费观看视频高清| 丰满少妇做爰视频| 欧美在线一区亚洲| 麻豆乱淫一区二区| 亚洲熟女精品中文字幕| 韩国精品一区二区三区| 成人国语在线视频| 亚洲精品久久成人aⅴ小说| 久久国产精品人妻蜜桃| 啦啦啦 在线观看视频| av国产久精品久网站免费入址| 你懂的网址亚洲精品在线观看| 一边摸一边抽搐一进一出视频| 男女边摸边吃奶| 亚洲av综合色区一区| 在线观看免费午夜福利视频| 亚洲伊人色综图|