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

    基于沙箱技術的惡意代碼行為檢測方法

    2018-12-26 09:12:04牛博威
    西安郵電大學學報 2018年5期
    關鍵詞:沙箱虛擬化端口

    童 瀛, 牛博威, 周 宇, 張 旗

    (江蘇省公安廳, 江蘇 南京 210000)

    惡意代碼具有互聯網中快速傳播的能力,任何連入互聯網的計算機都談不上絕對的安全。在頻繁發(fā)生的互聯網安全事件中,最常見的是因惡意代碼引起的,而且其造成的損失也是最為嚴重的。

    目前安全廠商的沙箱產品主要包括以下3個類別,第一類是以對外提供在線服務為主的沙箱環(huán)境,包括騰訊哈勃分析系統(tǒng)、金山火眼在線分析系統(tǒng)、VirusTotal等;第二類以對內提供服務為主的沙箱環(huán)境,如賽門鐵克等很多公司內部的分析系統(tǒng),主要用于云查殺技術支撐;第三類是包含在安全軟件中的沙箱環(huán)境,如卡巴斯基殺毒軟件的啟發(fā)式掃描。嚴格來講主動防御技術和沙箱技術也有很多重疊??紤]到目前大多數的攻擊與防御主要集中在Windows操作系統(tǒng),本文主要對Windows下的惡意代碼與沙箱技術進行研究。與常見的基于操作系統(tǒng)層面的檢測不同,本文對惡意代碼還開展了虛擬執(zhí)行研究,同時實現了針對Windows系統(tǒng)特性的模擬,以期可以實現不依賴操作系統(tǒng)而確定代碼的執(zhí)行行為。

    1 惡意代碼攻擊與檢測技術

    1.1 惡意代碼攻擊技術

    在Windows平臺下,不同種類的惡意代碼使用的攻擊技術相互交叉融合。病毒為躲避殺毒軟件和反病毒分析,采取很多對抗分析技術,比較典型的包括:(1)使用多態(tài)變形或加殼技術對自身代碼做擾亂,如著名的SMEG變形引擎[1];(2)使用反檢測技術規(guī)避殺毒軟件、虛擬機等檢測[2];(3)惡意軟件體過大,導致難以全面分析,如著名的震網病毒;(4)使用解釋性編程語言增加分析難度等[3]。這些惡意代碼的對抗技術,極大地增加惡意代碼分析工作量。

    目前,病毒的制作越來越流行使用ShellCode技術[4],這種技術的應用使得病毒樣本體內極少含有傳統(tǒng)意義上的惡意代碼,因此,對ShellCode代碼的檢測也越來越成為惡意代碼檢測的關鍵。惡意ShellCode代碼的檢測難度主要在于:(1)體積小。這種代碼一般都是匯編語言編寫,體積很小,容易隱藏在正常文件中;(2)存放形式多樣。既可以存儲在正??蓤?zhí)行文件中,也可以存放在帶有漏洞的文檔中,或者直接在運行時候通過網絡傳遞,并不在受害系統(tǒng)磁盤上存留;(3)容易加密變形。這種編碼的執(zhí)行不受文件格式的限制,因此可以任意加密、自加密,分析時候面臨解密問題;(4)傳統(tǒng)代碼檢測手段失效。這種惡意編碼被加密后,除非監(jiān)測動態(tài)執(zhí)行過程,否則基本不可能識別出其作用。

    1.2 惡意代碼分析方法

    在Windows系統(tǒng)中可執(zhí)行文件是二進制形式文件,惡意代碼主要也是以這種形式存在。有很多種惡意代碼的分析方法,常用的為靜態(tài)分析方法和動態(tài)分析方法[5],分類依據是分析過程是否需要執(zhí)行惡意代碼。

    靜態(tài)分析方法的優(yōu)點是針對惡意代碼本身進行分析,從代碼的具體內容中得到其行為特性,從而確定其實現的功能。因此,該方法不受具體的系統(tǒng)環(huán)境約束,也可以分析不能運行的二進制代碼,不會對操作系統(tǒng)造成任何影響。靜態(tài)分析方法可以對代碼進行細粒度分析,且具有高精度[6]。

    目前,很多惡意代碼常用變形、多態(tài)、加殼[7]、模糊轉換等方法隱藏自己,使得靜態(tài)分析方法難以識別它們。此外,該方法不能檢測未知的惡意代碼及其變種,只能識別已知的惡意代碼。

    動態(tài)分析方法的優(yōu)點是基于惡意代碼的行為進行分析,而不是分析代碼本身,該方法需要實際執(zhí)行惡意代碼。因此,動態(tài)分析方法能夠較好地檢測未知的惡意代碼。同時,動態(tài)分析還有分析速度快,人工參與少的特點,可以批量自動化分析大量樣本。

    動態(tài)分析的技術難點是如何確保惡意代碼的執(zhí)行不會對系統(tǒng)造成真實破壞,通常要在虛擬機中執(zhí)行惡意代碼,會造成系統(tǒng)資源的過度消耗。虛擬機的環(huán)境不能保證與真實的系統(tǒng)環(huán)境完全相同,這將使分析結果或多或少地具有不確定性,降低了準確性。此外,在虛擬機環(huán)境本身存在漏洞的情況下,被執(zhí)行的惡意代碼可能會感染到宿主機。

    2 沙箱技術簡介

    2.1 沙箱安全模型

    沙箱是一個安全軟件,它為程序的執(zhí)行提供一個虛擬的環(huán)境[8]。在沙箱中有專門制定的安全策略,對程序行為進行監(jiān)控,當程序的執(zhí)行違反安全策略時,沙箱會限制其行為。為了確保系統(tǒng)環(huán)境不會遭到破壞,沙箱對文件、注冊表等進行虛擬化重定向,這樣惡意代碼只能操作虛擬的文件和注冊表,而系統(tǒng)真正的文件和注冊表不會受到影響[9]。沙箱技術的核心是創(chuàng)建一個對程序操作進行限制的執(zhí)行環(huán)境,在沙箱中運行不受信任和未知目的的程序,可以避免對系統(tǒng)可能造成的破壞。

    沙箱的運行過程如下:在沙箱中運行不信任文件,并記錄其可疑行為,當確認程序有惡意目的時,沙箱將終止其操作,并且刪除惡意程序執(zhí)行痕跡,將系統(tǒng)恢復到原始狀態(tài)。

    2.2 Windows API掛鉤技術

    沙箱的具體實現非常復雜,需要接管很多系統(tǒng)操作,文件、注冊表的重定向接管只是最基本的,Windows下還有窗口、類名、消息、服務、rpc、Token、COM等等。對這些接口的接管和重定向既包括驅動層,也包括應用層API、消息協議等,本文介紹最常見的API掛鉤方法。

    API是Windows系統(tǒng)對用戶開放的編程接口,可在用戶態(tài)下對操作系統(tǒng)進行控制。惡意代碼要實現其功能最終會調用API函數,通過API Hook技術可以監(jiān)控系統(tǒng)中的API函數調用,其原理是監(jiān)控進程通過dll注入方式,修改API函數的原入口地址到一個自定義的函數,然后在一個自定義的函數內調用原函數,并返回結果。在注入成功后對目標API進行掛鉤,根據掛鉤方式的不同可以分為兩種,在函數的調用點劫持和在函數體內劫持[5]。

    2.3 虛擬化技術

    虛擬化技術根據虛擬化程度的不同可以將該技術分為全虛擬化、半虛擬化、硬件輔助虛擬化等[10]。不同的虛擬化程度決定了在分析惡意軟件的時候,樣本是否能夠完全運行,以及虛擬環(huán)境是否被惡意軟件識別。

    完全虛擬化,敏感指令在操作系統(tǒng)和硬件之間被捕捉處理,客戶操作系統(tǒng)無需修改,所有軟件都能在虛擬機中運行,例如IBM CP/CMS,VirtualBox,VMware Workstation。

    半虛擬化,針對軟件運行時的一部分環(huán)境進行虛擬化。比如對文件系統(tǒng)、注冊表等進行虛擬化。

    硬件輔助虛擬化,利用硬件(主要是CPU)輔助處理敏感指令以實現完全虛擬化的功能,客戶操作系統(tǒng)無需修改,例如VMware Workstation,Xen,KVM等。

    3 基于應用層的沙箱監(jiān)控技術

    前面分析了惡意代碼的攻擊技術和攻擊行為,這些行為主要體現在惡意代碼對于文件、注冊表、網絡端口、進程線程和內核加載的操作上,本部分將針對惡意代碼在這些方面的行為進行檢測,并分析通過監(jiān)控哪些API函數才能實現對惡意行為的有效監(jiān)控。

    3.1 文件操作行為監(jiān)控

    惡意軟件在運行的時候。為了權限維持,安全軟件繞過等目的,通常都會有一系列的文件操作行為。惡意軟件在成功運行后,一般會在臨時文件夾或系統(tǒng)文件夾下,創(chuàng)建一個服務的備份用作后門,用以權限的維持。在該過程中需要CreateFile函數來創(chuàng)建文件,WriteFile函數對其寫入,結束后一般會調用CloseHandle來關閉文件句柄。

    通過上述分析,不難發(fā)現,可以通過監(jiān)視表1中的API函數監(jiān)視涉及文件的操作。

    表1 文件操作監(jiān)控的關鍵API函數表

    3.2 網絡行為監(jiān)控

    像間諜軟件和木馬這樣的惡意代碼還會對網絡造成影響,攻擊的一方利用它們主動連接網絡來獲得竊取到的重要信息。通常情況下,惡意代碼網絡行為主要表現在端口復用、開放本地監(jiān)聽端口、端口反向連接,可疑報文收發(fā)等4個方式。

    1) 端口復用

    端口重用技術意味著惡意代碼與操作系統(tǒng)已經打開的網絡端口通信。公共端口是39、135、80等等,其目的是在少開甚至不開新端口的情況下進行網絡通信,使得防病毒軟件更難發(fā)現惡意行為[11]。

    端口復用并不影響端口的正常服務,因此,其行為十分隱蔽,具有很強的欺騙性。在程序中調用系統(tǒng)函數setsockopt和通過so_reuseaddr參數值的函數,從而實現端口復用。

    2) 開設本地監(jiān)聽端口

    惡意代碼為了將竊取的信息通過網絡傳輸,通常在被攻擊主機的系統(tǒng)中設立一個監(jiān)聽端口。通過監(jiān)聽80等常用端口,以避免被殺毒軟件發(fā)現。設立監(jiān)聽端口后,黑客就可以遠程操作請求網絡連接,專門用于傳輸數據。

    當被監(jiān)控程序在執(zhí)行過程中,有上述行為可以作為判斷建立本地端口監(jiān)視器的嘗試的依據。

    3) 端口反向連接

    端口反向連接是指被控端(服務端)主動向控制端(客戶端)發(fā)起連接,是木馬攻擊常用的技術。大多數防火墻軟件都具有檢測開設本地監(jiān)聽端口的功能,然而,防火墻軟件有一個弱點,即當主機用戶通過Internet訪問網頁時,瀏覽器的每一頁都將與服務器建立多個網絡連接,這被認為是合法的,不會被防火墻軟件攔截。為了避免被檢測到,惡意代碼利用這一弱點主動向攻擊一方發(fā)起網絡連接,在這個過程中需要調用connect函數[12]。

    4) 可疑報文收發(fā)

    可疑報文主要包括惡意程序向控制端發(fā)送被感染者敏感信息、被感染者心跳包、控制端對惡意程序的控制指令等。這些報文一般都具有固定的特征,例如定時發(fā)送心跳包告知控制端被感染者存活、通信數據經過簡單的加密處理等。將可疑報文模型化后,可以通過對send、recv等函數進行監(jiān)控,一旦發(fā)現樣本報文符合可疑模型,立即終止該進程并警告用戶。

    上述分析表明,可以通過監(jiān)控表2的API函數實現對網絡行為的監(jiān)控,同時也可以在網卡虛擬化的基礎上對通信行為與流量進行嗅探,也可以達到同樣的網絡行為監(jiān)控的目的。

    表2 網絡操作監(jiān)控的關鍵API函數表

    3.3 終止和創(chuàng)建進程監(jiān)控

    惡意代碼執(zhí)行前期,經常會終止反病毒軟件,同時在病毒更新、或者調用第三方軟件時候會有進程創(chuàng)建操作。常見的可能被關閉的反病毒軟件進程有360tray.exe、kavstare.exe、Navapw32.exe、KAVsvc.exe、Rav.exe等等,基于辦公文檔漏洞的攻擊過程中,病毒一般會在代碼釋放后執(zhí)行Office進程或者pdf等辦公軟件進程。

    如果要監(jiān)控對進程的創(chuàng)建和關閉,可以監(jiān)控表3中的API函數。

    表3 終止和創(chuàng)建進程操作監(jiān)控的關鍵API函數表

    3.4 線程操作監(jiān)控

    在操作系統(tǒng)中,程序執(zhí)行是包含一個或多個線程的過程,多個線程共享進程占用的系統(tǒng)資源,如內存和CPU。

    在Window操作系統(tǒng)中有很多DLL文件,其功能是擴展為一個功能模塊。惡意代碼往往被偽裝或替換為DLL文件的系統(tǒng),從而隱藏自己的痕跡。這些惡意代碼經常會感染系統(tǒng)的關鍵進程,影響操作系統(tǒng)的正常運行。而這些進程往往不能人為終止,給惡意代碼的檢測和清除帶來了困難。

    木馬通常以DLL形式,采用遠程線程注入[13]封裝主部件。窗口系統(tǒng)加載和調用Dll文件,而DLL文件作為函數模塊只包含函數形式,不能直接調用,因此,需要被其他進程加載才能運行,通過這種方式實現自身的隱藏。

    通過分析可知,可以將線程注入操作和線程創(chuàng)建操作調用系統(tǒng)功能鏈接起來,實現線程運行監(jiān)控。遠程線程創(chuàng)建函數的CreateVirtualAllocEx是用戶態(tài)下的形式,內核態(tài)的API函數應該是NtCreateVirtualAllocEx,所以,通過掛鉤NtSetifyRoutine常規(guī)功能可以實現內核級線程注入操作監(jiān)控。同時,該NtSetifyRoutine功能也與實現線程的創(chuàng)建核心級監(jiān)控。表4中是監(jiān)視需要鉤子的線程操作的API函數。

    表4 線程操作監(jiān)控的關鍵API函數表

    4 基于虛擬化的沙箱監(jiān)控

    基于API攔截的沙箱監(jiān)控方式是通過接管系統(tǒng)接口獲取惡意文件行為,阻斷對真實系統(tǒng)的破壞。這種技術的缺點是不能跨平臺、部署復雜,運行過程系統(tǒng)資源消耗大,而且對ShellCode惡意代碼檢測效果較差。基于虛擬化的沙箱監(jiān)控技術,能夠克服上述缺點。該技術是利用一種純解釋執(zhí)行的虛擬化檢測方式,通過完全模擬x86匯編指令和Windows系統(tǒng)環(huán)境,監(jiān)控惡意文件行為。

    4.1 沙箱流程

    虛擬化沙箱的設計思想,是模擬運行疑似為可執(zhí)行代碼的輸入的數據流,當模擬執(zhí)行過程中有嘗試調用敏感系統(tǒng)函數的行為,或者模擬執(zhí)行步數達到一定程度(如200步)時,則將該模擬執(zhí)行過程輸出報警。為此,純虛擬化沙箱技術通過對x86匯編指令、Windows系統(tǒng)特性、內存布局等進行全面模擬,以期達到預期效果。

    4.2 x86寄存器模擬

    模擬執(zhí)行x86匯編代碼,先要模擬CPU基礎架構,下面數據結構用于模擬x86框架下的寄存器。

    32位寄存器模擬的關鍵數據結構如下。

    SRegisterAddr_T RegisterAddr[MAX_REG_SYMBOL] =

    {

    { "eax", &m_eax, 4 },

    { "ecx", &m_ecx, 4 },

    { "edx", &m_edx, 4 },

    { "ebx", &m_ebx, 4 },

    { "esp", &m_esp, 4 },

    { "bl", &m_bl, 1 },

    { "eip", &m_eip, 4 },

    { "eflags", &m_eflags, 4 },

    { "cs", &m_cs, 2 },

    { "ds", &m_ds, 2 },

    { "ss", &m_ss, 2 },

    { "es", &m_es, 2 },

    { "fs", &m_fs, 2 },

    { "gs", &m_gs, 2 },

    };

    完成了上述模擬寄存器結構后,涉及到對寄存器進行操作時,采用匯編語句執(zhí)行時將會比較方便,如對寄存器進行讀寫操作,則較方便操作如下。

    switch (m_RegAddr[i].nLen){

    case sizeof(u32):

    *(u32 *) m_RegAddr[i].pAddr = nValue;

    break;

    case sizeof(u16):

    *(u16 *) m_RegAddr[i].pAddr = (u16) nValue;

    break;

    default:

    *(u8 *) m_RegAddr[i].pAddr = (u8) nValue;

    break;

    }

    完成上述32位寄存器模擬后,再配合反匯編引擎的解析,就可以實現對基本的匯編指令進行解釋模擬運行。

    4.3 內存地址映射關鍵代碼

    Windows對每個進程都開辟了單獨的虛擬內存供該進程使用,為保證目標代碼可以正常虛擬執(zhí)行下去,解釋器必須建立自己的虛擬內存空間。

    為目標指令提供虛擬的內存環(huán)境,供尋址指令調用,采用代碼模擬虛擬地址映射的方式,其內存地址映射關鍵代碼如下。

    void *SMemSpace::GetAddressAt(SCpuCore *pCpuCore,

    u32 nSegment, u32 nOffset, int nExpectedLen)

    {

    __asm

    {

    // Convert nSegment::nOffset to liner address

    // fetch segment information

    // eax = (nSegment[15..2]) * 16 ==

    SELECTOR * 4

    // pCpuCore->m_Segments + eax +

    4 (offset of liner address field)

    mov eax, nSegment

    and eax, (SELECTOR_FLAG | LDT_FLAG)

    mov esi, pCpuCore

    lea eax, [esi]pCpuCore.

    m_Segments.m_Table[eax * 4 + 4]

    // esi = liner address + offset

    mov esi, [eax]

    add esi, nOffset

    // Check segment length

    mov eax, [eax + 4] // nLen

    sub eax, nOffset

    jb exception

    // Compare offset + nExpectedLen with nLen + 1,

    inc eax

    // so inc eax.

    // Don’t inc eax before sub eax, nOffset since...

    jz maxsize

    // eax == 0xFFFFFFFF,

    don’t compare with nExpectedLen

    sub eax, nExpectedLen

    jb exception

    maxsize:;

    // p = m_pImage

    mov ecx, [ecx]this.m_pImage

    // if p == null, raise exception

    jcxz exception

    // eax = esi = liner address

    mov eax, esi

    while_p_not_null:

    // if nOffset < p->m_nVirtualAddress, skip

    cmp esi, [ecx]SImageList.m_nVirtualAddress

    jb next

    // if nOffset > p->m_nVirtualEnd, skip

    cmp esi, [ecx]SImageList.m_nVirtualEnd

    ja next

    // Found

    // if nOffset + nExpectedLen - 1 > p->

    m_nVirtualEnd, raise exception

    add esi, nExpectedLen

    dec esi

    cmp esi, [ecx]SImageList.m_nVirtualEnd

    ja exception

    // return (u8 *) p->m_pImage +

    nOffset - p->m_nVirtualAddress

    add eax, [ecx]SImageList.m_pImage

    sub eax, [ecx]SImageList.m_nVirtualAddress

    jmp quit

    next:

    // p = p->m_pNext

    mov ecx, [ecx]SImageList.m_pNext

    or ecx, ecx

    jnz while_p_not_null

    }

    }

    4.4 反匯編獲取指令

    考慮到設計原理是將未知數據傳入虛擬機,由虛擬機嘗試將其視為惡意代碼開展模擬執(zhí)行,所以,在嘗試執(zhí)行這些未知輸入數據時,首先利用反匯編技術,獲取當前數據的匯編指令,然后才能對解析到的匯編指令,開展模擬執(zhí)行。對輸入數據流開展反匯編過程是先根據當前讀取的字節(jié)判定可能的匯編指令歸類,然后,再根據不同的指令類型獲取該指令的操作數等細節(jié)。

    獲取指令分類關鍵代碼如下。

    m_nCode1 = GetCodeU8();

    if (m_nCode1 == 0x0F)

    {

    // Get from two bytes opcode map

    m_nCode2 = GetCodeU8();

    pOper = &gOperMapB20F[m_nCode2];

    } else

    // Get from one byte opcode map

    pOper = &gOperMapB1[m_nCode1];

    然后,根據指令類型,獲取該條匯編指令的詳細內容。對整個數據流進行反匯編是個不斷前進持續(xù)的過程,所以其循環(huán)執(zhí)行的代碼流程如下。

    do

    {

    // Get code & opermap

    pOper = GetCodeOper();

    // Prepare operand for this instruction

    PrepareOperandDesc(pOper);

    // Get instruction

    szDesc = pOper->pInstruction->

    Deassemble(this, pOper);

    } while (szDesc == NULL);

    本部分反匯編技術的輸出結果,是后續(xù)指令模擬執(zhí)行的基礎,為后續(xù)模擬執(zhí)行提供匯編指令支撐。

    4.5 匯編指令模擬

    當進行匯編指令模擬時,對于常見的匯編指令,可以通過簡單方法進行模擬,其方法可參考4.2部分寄存器操作模擬;對于不常見指令,或者較難模擬的指令,將其交給真實的CPU去執(zhí)行,再獲取返回到的結果,其相關代碼如下。

    __asm{

    push edx

    mov ecx, this

    lea ebx, [ecx]this.m_pCodes

    mov ecx, pCpu

    call dword ptr [ebx]

    pop edx

    }

    上述處理方法的優(yōu)勢是既充分發(fā)揮真實環(huán)境的優(yōu)點,又降低沙盒環(huán)境的開發(fā)難度。

    4.6 反匯編執(zhí)行流程

    反匯編執(zhí)行流程是對輸入數據流進行解釋執(zhí)行的主流程。通過解釋分析獲取當前匯編指令,然后,模擬正常匯編指令解析過程進行不斷前行解釋,其相關代碼為

    // Initialize before execute this instruction

    PreExecute();

    try

    {

    // Execute this instruction

    do

    {

    // Get opcode & its opermap

    pOper = GetCodeOper();

    // Prepare operand for this instruction

    PrepareOperandAddr(pOper);

    // Get instruction

    bDone = pOper->pInstruction->Execute(this);

    // If to be continued, got NULL in szDesc

    } while (! bDone);

    }

    確定了上述內存映射方式以后,就可以為虛擬環(huán)境開辟單獨的內存空間。當目標代碼嘗試操作虛擬內存時,通過上述映射方式對虛擬內存進行操作。

    4.7 內存結構

    為了使沙箱虛擬機的沙箱環(huán)境區(qū)全面支持Windows環(huán)境,即能實現對x86匯編指令環(huán)境的模擬,還應實現對Windows系統(tǒng)特性如內存結構的支持。考慮到ShellCode編碼的特點,運行時會預先查找當前所在進程內存空間,從中搜索到自己所需要的系統(tǒng)函數地址,因此,沙箱虛擬機需要模擬Windows進程內存,以便ShellCode可以在該虛擬環(huán)境中正常運行。對虛擬內存的模擬設置如下。

    //用于設置32位系統(tǒng)下的4G內存空間

    g_pMainCpu->CreateSegment(g_pMainCpu->

    m_fs, 0xFFDF0000, 0x0FFF);

    //從正常進程中Dump出一份FS段內容,填充到虛擬空間中

    LoadData_1(0x38, "FSImage.dat",0,1024 * 4);

    LoadData_1(IMAGE_BASE_ADDR, "Image.dat",

    0, 0x1f80);

    其中LoadData_1實現過程,先讀入預先Dump出的正常進程數據,然后覆蓋到設定的虛擬空間內,即

    LoadData_1(0x38, "FSImage.dat",0,1024 * 4);

    LoadData_1(IMAGE_BASE_ADDR, "Image.dat",

    0, 0x1f80);

    建立上述虛擬內存空間后,當目標代碼虛擬執(zhí)行時,就可以模仿正常運行時的內存讀取和寫入操作。如果需要解釋器,也可以隨時將內存狀況進行保存或者監(jiān)控。

    4.8 代碼執(zhí)行

    完成上述工作后,便可以對用戶輸入的數據流進行模擬執(zhí)行檢測。主要檢測代碼如下。

    InitCpu();//CPU環(huán)境初始化

    CreateImage(g_EntryPoint, nCodeSize);

    //創(chuàng)建虛擬內存,供模擬執(zhí)行時候調用

    PutMemAt(g_EntryPoint, pCodeBuf, nCodeSize);

    //將輸入數據填充到設定的虛擬內存中

    SetFSImage();//模擬Windows系統(tǒng)特性,初始化FS區(qū)段

    //模擬其他進程區(qū)段,供ShellCode

    Cpu.PutU32At(Cpu.m_fs, 0x30, 0x7FFDF000);

    LoadData_(0x08, "Image.dat", IMAGE_BASE_ADDR,

    IMAGE_BUF_SIZE);

    LoadData_(0x08, "Kernel32IAT.dat",

    KERNEL32IAT_BASE_ADDR,

    KERNEL32IAT_BUF_SIZE);

    LoadData_(0x30, "FSImage.dat", 0, 200);

    LoadData_(0x38, "FSImage.dat", 0, 1024 * 4);

    LoadData_(0x08, "SearchKern.dat",

    DEFAULT_SEH_HANDLE_ADDR,1024 * 20);

    //模擬執(zhí)行輸入數據

    unsigned long nProcessCount = 0;

    int nRet = CallNear(g_EntryPoint,

    0, 0, 0, &nProcessCount, 1);

    上述代碼是目標代碼虛擬執(zhí)行的主要流程,具體包括創(chuàng)建虛擬CPU環(huán)境;為目標代碼創(chuàng)建虛擬內存環(huán)境;模擬Windows特性,在虛擬內存里初始化內核表等數據,以便后續(xù)目標代碼可能使用。

    4.9 其他Windows性能模擬

    通常情況下,欲獲取較全的病毒運行流程,除了模擬32位匯編指令運行環(huán)境是遠遠不夠的,還需要模擬其他病毒可能會使用的系統(tǒng)性能,以便支撐惡意文件的運行。為此,設計除對Windows內存分布,還對惡意代碼技術涉及的API函數和異常處理進行了深入研究,并實現對常見API函數的運行結果模擬,其實現代碼如下。

    static WINAPI_TABLE_T Kernel32Table[] =

    {

    { "CreateThread", PROC_CREATETHREAD,

    (SubFunc_T) Kernel32_CreateThread, 6 },

    { "CreateEventA", PROC_CREATEEVENT,

    (SubFunc_T) Kernel32_CreateEvent, 4 },

    { "LoadLibrary", PROC_LOADLIBRARY,

    (SubFunc_T) Kernel32_LoadLibrary, 1 },

    { "LoadLibraryA", PROC_LOADLIBRARY,

    (SubFunc_T) Kernel32_LoadLibrary, 1 },

    { "GetLocalTime", PROC_GETLOCALTIME,

    (SubFunc_T) Kernel32_GetLocalTime, 1 },

    { "GetModuleHandle", PROC_GETMODULEHANDLE,

    (SubFunc_T) Kernel32_GetModuleHandle, 1 },

    { "GetModuleHandleA", PROC_GETMODULEHANDLE,

    (SubFunc_T) Kernel32_GetModuleHandle, 1 },

    { "GetProcAddress", PROC_GETPROCADDRESS,

    (SubFunc_T) Kernel32_GetProcAddress, 2 },

    { "GetTickCount", PROC_GETTICKCOUNT,

    (SubFunc_T) Kernel32_GetTickCount, 0 },

    { "GlobalFree", PROC_GLOBALFREE,

    (SubFunc_T) Kernel32_GlobalFree, 1 },

    { "GlobalAlloc", PROC_GLOBALALLOC,

    (SubFunc_T) Kernel32_GlobalAlloc, 2 },

    { "SetEvent", PROC_SETEVENT,

    (SubFunc_T) Kernel32_SetEvent, 1 },

    { "SetUnhandledExceptionFilter",

    PROC_SETUNHANDLEDEXCEPTOINFILTER,

    (SubFunc_T)

    Kernel32_SetUnhandledExceptionFilter, 1 },

    { "WaitForSingleObject",

    PROC_WAITFORSINGLEOBJECT, (SubFunc_T)

    Kernel32_WaitForSingleObject, 2 },

    // { "Sleep", PROC_SLEEP,

    (SubFunc_T) Kernel32_Sleep, 1 },

    // { "CreateToolhelp32Snapshot",

    PROC_CREATETOOLHELP32SNAPSHOT,

    (SubFunc_T)

    Kernel32_CreateToolhelp32Snapshot, 2 },

    };

    static WINAPI_TABLE_T User32Table[] =

    {

    { "FindWindowA", PROC_FINDWINDOW,

    (SubFunc_T) User32_FindWindow, 2 },

    { "FindWindow", PROC_FINDWINDOW,

    (SubFunc_T) User32_FindWindow, 2 },

    { "MessageBoxA", PROC_MESSAGEBOX,

    (SubFunc_T) User32_MessageBox, 4 },

    { "MessageBox", PROC_MESSAGEBOX,

    (SubFunc_T) User32_MessageBox, 4 },

    };

    在對上述API的模擬過程中,對于較簡單情況,可以調用真實的API函數,將結果返回;對于較為復雜的情況,需要利用Windows系統(tǒng)特性,如對用于設置當前進程異常處理SetUnhandledExceptionFilter函數的支持,該函數的模擬需要采用Windows系統(tǒng)異常處理機制的實現,其中SHE鏈處理關鍵代碼如下。

    // Try SEH first

    // Get first seh pointer @ fs:[0]

    u32 nEip;

    u32 nSEH, nProcAddress;

    nEip = pCpu->m_eip;

    nSEH = *(u32 *) pCpu->GetAddressAt(pCpu->

    m_fs, 0, sizeof(u32));

    while (nSEH != 0xFFFFFFFF &&

    nSEH != DEFAULT_SEH_HANDLE_ADDR)

    {

    // Get handler

    nProcAddress = *(u32 *) pCpu->

    GetAddressAt(pCpu->m_ss, nSEH + 4,

    sizeof(u32));

    if (nProcAddress == KERNEL_SEH_PROC_ADDR)

    {

    // Enter kernal exception process, do nothing

    nSEH = 0xFFFFFFFF;

    break;

    }

    // Invoke process

    // arguments:

    // lpExceptionRecord

    // lpSEH

    // lpContext

    // lpDispatcherContext

    args[0] = (u32) s.ExceptionInfo.ExceptionRecord;

    args[1] = nSEH;

    args[2] = (u32) s.ExceptionInfo.ContextRecord;

    args[3] = (u32) s.ExceptionInfo.ContextRecord;

    if (! pCpu->CallNear(pCpu, nProcAddress,

    0x7C9037BF, /* Copied from WinXP */ &args, 4,

    &nRet, STOP_WHEN_EXCEPTION))

    {

    // Failed to execution, exception occurred

    // Stop simulation

    // Restore stack

    pCpu->m_esp = nEsp;

    return 0;

    }

    if (pCpu->m_esp >= nEsp)

    {

    // Stack is restored by exception handler,

    return immediately

    // return 1 means continue excution

    return 1;

    }

    // Drop arguments

    pCpu->m_esp += 0x10;

    // Restore EIP (since it has been changed by CallNear

    pCpu->m_eip = nEip;

    if (nRet == 0)

    {

    // Return 0 means continue excution

    nRet = EXCEPTION_CONTINUE_EXECUTION;

    break;

    }

    switch (nRet)

    {

    case 1:

    // Don’t care this exception

    break;

    case 2:

    // Nexsed excpetion

    break;

    case 3:

    // Collided unwind

    break;

    }

    // Try next seh pointer

    nSEH = *(u32 *) pCpu->GetAddressAt(pCpu->

    m_ds, nSEH, sizeof(u32));

    }

    通過對這些Windows系統(tǒng)的API、異常處理等關鍵特性的模擬,使該檢測系統(tǒng)具備了掌握目標代碼執(zhí)行流程的能力,這是區(qū)別于傳統(tǒng)檢測手段的主要部分。

    5 虛擬沙盒測試

    為了測試所提出虛擬化的沙箱對惡意代碼行為監(jiān)控效果,為此,采用了使用編號為CVE-2012-0158的Microsoft Office安全漏洞文件進行檢測,檢測結果如圖1和圖2所示。從圖1可見,所提出的虛擬沙盒技術方案成功地檢測到該文件低12291處存在疑似ShellCode惡意代碼,圖2顯示了該疑似ShellCode惡意代碼實際位置為0x3005。因此,所提出的虛擬沙盒技術方案能夠檢測相關的惡意代碼。

    圖1 檢測結果

    圖2 文件16進制顯示

    6 結語

    在破壞與反破壞的過程中,惡意代碼為了躲避各類安全軟件的查殺,使用越來越復雜的技術來隱藏自己,這給惡意代碼的檢測和防治帶來了很多困難,計算機系統(tǒng)和網絡安全面臨的威脅和破壞日漸復雜。本文探討了惡意代碼的攻擊技術和惡意行為分析方法,并針對現有沙箱技術不能跨平臺,系統(tǒng)部署復雜的問題,提出了使用純虛擬化解釋執(zhí)行的手段檢測惡意代碼的一種方法。從實驗結果可以看出,沙箱能夠有效地檢測惡意代碼對文件操作和網絡行為,并對其進行限制。但是,沙箱技術對樣本實例的檢測結果還不夠全面,需要更進一步地研究。

    猜你喜歡
    沙箱虛擬化端口
    一種端口故障的解決方案
    科學家(2021年24期)2021-04-25 13:25:34
    基于OpenStack虛擬化網絡管理平臺的設計與實現
    電子制作(2019年10期)2019-06-17 11:45:10
    對基于Docker的虛擬化技術的幾點探討
    電子制作(2018年14期)2018-08-21 01:38:20
    巧用沙箱檢測文件安全
    虛擬化技術在計算機技術創(chuàng)造中的應用
    電子測試(2017年11期)2017-12-15 08:57:56
    端口阻塞與優(yōu)先級
    基于函數注入的沙箱攔截識別方法
    存儲虛擬化還有優(yōu)勢嗎?
    初識電腦端口
    電腦迷(2015年6期)2015-05-30 08:52:42
    生成樹協議實例探討
    露出奶头的视频| 亚洲va日本ⅴa欧美va伊人久久| 老司机亚洲免费影院| 激情视频va一区二区三区| 一进一出好大好爽视频| 国产一区二区 视频在线| 色婷婷av一区二区三区视频| 又大又爽又粗| 97在线人人人人妻| 免费一级毛片在线播放高清视频 | 脱女人内裤的视频| 一个人免费在线观看的高清视频| 丝袜在线中文字幕| 18禁裸乳无遮挡动漫免费视频| 免费在线观看日本一区| 国产色视频综合| 色婷婷久久久亚洲欧美| 老鸭窝网址在线观看| 天天影视国产精品| 精品午夜福利视频在线观看一区 | 久久国产精品人妻蜜桃| 久久国产精品大桥未久av| 在线观看一区二区三区激情| 欧美日韩亚洲综合一区二区三区_| 欧美日韩黄片免| 久久午夜亚洲精品久久| 欧美午夜高清在线| 久久精品亚洲精品国产色婷小说| 国产国语露脸激情在线看| 久久精品aⅴ一区二区三区四区| 麻豆乱淫一区二区| 精品久久久精品久久久| 亚洲人成电影免费在线| 老司机深夜福利视频在线观看| 桃红色精品国产亚洲av| 妹子高潮喷水视频| 久久久久久亚洲精品国产蜜桃av| 欧美午夜高清在线| 两性午夜刺激爽爽歪歪视频在线观看 | 免费久久久久久久精品成人欧美视频| av有码第一页| 亚洲精品一卡2卡三卡4卡5卡| 一本色道久久久久久精品综合| 黑丝袜美女国产一区| 妹子高潮喷水视频| 69精品国产乱码久久久| 久久婷婷成人综合色麻豆| 成人18禁在线播放| av网站免费在线观看视频| 免费少妇av软件| 美女国产高潮福利片在线看| 黑人欧美特级aaaaaa片| 亚洲欧洲精品一区二区精品久久久| 欧美激情 高清一区二区三区| 香蕉久久夜色| 国产麻豆69| 欧美激情 高清一区二区三区| 久久99热这里只频精品6学生| 大香蕉久久网| 国产精品香港三级国产av潘金莲| 12—13女人毛片做爰片一| 脱女人内裤的视频| 久久久国产成人免费| 黄频高清免费视频| 国产精品一区二区在线观看99| 成人国产一区最新在线观看| 黄色丝袜av网址大全| 国产亚洲欧美在线一区二区| 色综合欧美亚洲国产小说| 国产欧美亚洲国产| 每晚都被弄得嗷嗷叫到高潮| 男女高潮啪啪啪动态图| √禁漫天堂资源中文www| 久久精品亚洲av国产电影网| 国产在线视频一区二区| 日韩欧美一区视频在线观看| 另类亚洲欧美激情| 国产一卡二卡三卡精品| 黄色视频不卡| 日韩欧美免费精品| 国产av又大| 中文欧美无线码| 亚洲中文av在线| 精品亚洲成国产av| 美国免费a级毛片| 国产精品成人在线| 丰满少妇做爰视频| 久久香蕉激情| 亚洲五月婷婷丁香| 国产精品免费一区二区三区在线 | 国产国语露脸激情在线看| 18禁黄网站禁片午夜丰满| 亚洲精品国产精品久久久不卡| 免费在线观看影片大全网站| 啦啦啦中文免费视频观看日本| 国产成人影院久久av| 欧美激情 高清一区二区三区| 侵犯人妻中文字幕一二三四区| av网站在线播放免费| 中文字幕人妻熟女乱码| 99久久国产精品久久久| 三级毛片av免费| 日本a在线网址| 老熟妇仑乱视频hdxx| 99九九在线精品视频| 亚洲性夜色夜夜综合| 欧美日韩黄片免| 日本黄色视频三级网站网址 | 菩萨蛮人人尽说江南好唐韦庄| 久久午夜亚洲精品久久| 欧美精品一区二区免费开放| 久久性视频一级片| 99精品欧美一区二区三区四区| 亚洲精品中文字幕在线视频| 亚洲情色 制服丝袜| 桃花免费在线播放| 国产成人精品久久二区二区91| 在线观看人妻少妇| 人人澡人人妻人| 日韩大码丰满熟妇| 国产亚洲精品久久久久5区| 91av网站免费观看| 精品国产一区二区三区久久久樱花| 国产不卡一卡二| 女人被躁到高潮嗷嗷叫费观| 午夜激情av网站| 国产精品一区二区免费欧美| 18禁黄网站禁片午夜丰满| 黄片小视频在线播放| 妹子高潮喷水视频| 99国产精品99久久久久| 国产成人av教育| 女警被强在线播放| 免费观看a级毛片全部| bbb黄色大片| 久久精品91无色码中文字幕| 在线永久观看黄色视频| 国产在线观看jvid| 亚洲精品av麻豆狂野| 美女扒开内裤让男人捅视频| 日韩有码中文字幕| 高清黄色对白视频在线免费看| 亚洲av成人不卡在线观看播放网| 国产无遮挡羞羞视频在线观看| 麻豆成人av在线观看| 动漫黄色视频在线观看| 久久久久网色| 丰满人妻熟妇乱又伦精品不卡| 91精品三级在线观看| 国产成人免费观看mmmm| 麻豆av在线久日| 国产精品.久久久| 国产又爽黄色视频| 亚洲av成人不卡在线观看播放网| 日韩制服丝袜自拍偷拍| 丁香六月天网| 韩国精品一区二区三区| 美国免费a级毛片| www.熟女人妻精品国产| 人人妻人人澡人人看| 男人操女人黄网站| 日韩视频一区二区在线观看| 国产男靠女视频免费网站| 国产一区二区三区视频了| 久久国产亚洲av麻豆专区| 免费在线观看日本一区| 国产成人免费无遮挡视频| 我要看黄色一级片免费的| 99国产精品99久久久久| xxxhd国产人妻xxx| 操美女的视频在线观看| 国产有黄有色有爽视频| 欧美日本中文国产一区发布| 91字幕亚洲| 女人爽到高潮嗷嗷叫在线视频| 亚洲国产欧美网| 国产精品久久久久成人av| 黄色视频在线播放观看不卡| 成人18禁高潮啪啪吃奶动态图| 免费看十八禁软件| 视频区欧美日本亚洲| 亚洲第一av免费看| 免费在线观看日本一区| 国产精品秋霞免费鲁丝片| 国产精品久久久久久人妻精品电影 | 精品乱码久久久久久99久播| 久久久久精品人妻al黑| 美女午夜性视频免费| 成人特级黄色片久久久久久久 | 日日爽夜夜爽网站| 大码成人一级视频| 午夜激情久久久久久久| 久久热在线av| 我的亚洲天堂| 日日爽夜夜爽网站| 99国产精品一区二区三区| 变态另类成人亚洲欧美熟女 | 欧美亚洲 丝袜 人妻 在线| 一二三四社区在线视频社区8| a级片在线免费高清观看视频| 老熟女久久久| 12—13女人毛片做爰片一| 亚洲精品中文字幕在线视频| 国产激情久久老熟女| 成人影院久久| 午夜福利视频精品| 亚洲欧洲日产国产| 亚洲人成电影观看| 国产免费福利视频在线观看| 国产不卡一卡二| 老熟妇仑乱视频hdxx| 啦啦啦视频在线资源免费观看| 色综合欧美亚洲国产小说| 国产亚洲精品久久久久5区| 狠狠狠狠99中文字幕| 色精品久久人妻99蜜桃| 蜜桃国产av成人99| 极品人妻少妇av视频| 国产精品成人在线| 国产成人免费观看mmmm| 久久久久国产一级毛片高清牌| 欧美一级毛片孕妇| 亚洲免费av在线视频| bbb黄色大片| 久久亚洲真实| 色94色欧美一区二区| 99国产精品免费福利视频| 欧美日韩亚洲综合一区二区三区_| 丝袜人妻中文字幕| 精品久久蜜臀av无| av福利片在线| 汤姆久久久久久久影院中文字幕| 久久人妻福利社区极品人妻图片| 大香蕉久久成人网| 国产男女内射视频| 狂野欧美激情性xxxx| 日本wwww免费看| 在线十欧美十亚洲十日本专区| 丝瓜视频免费看黄片| 99精品欧美一区二区三区四区| 免费观看a级毛片全部| 男女高潮啪啪啪动态图| 久久99热这里只频精品6学生| 在线亚洲精品国产二区图片欧美| 日韩熟女老妇一区二区性免费视频| 日韩有码中文字幕| 91大片在线观看| 激情视频va一区二区三区| 高清视频免费观看一区二区| 午夜福利免费观看在线| 成年人午夜在线观看视频| 一边摸一边抽搐一进一出视频| 久久精品亚洲精品国产色婷小说| 一边摸一边抽搐一进一出视频| 精品一区二区三区视频在线观看免费 | 无遮挡黄片免费观看| 999久久久精品免费观看国产| 亚洲专区中文字幕在线| 91麻豆精品激情在线观看国产 | 免费人妻精品一区二区三区视频| 精品一区二区三卡| 亚洲国产毛片av蜜桃av| 天天影视国产精品| 涩涩av久久男人的天堂| 一个人免费看片子| 国产真人三级小视频在线观看| 超碰97精品在线观看| 欧美日韩精品网址| 乱人伦中国视频| 成年动漫av网址| h视频一区二区三区| 久久精品aⅴ一区二区三区四区| 亚洲精品一二三| 精品久久久久久久毛片微露脸| 麻豆国产av国片精品| 亚洲精品自拍成人| 亚洲人成77777在线视频| 19禁男女啪啪无遮挡网站| 国产一区二区激情短视频| 一个人免费在线观看的高清视频| 国产在线免费精品| 国产淫语在线视频| 久久中文看片网| 久久人妻熟女aⅴ| 日韩大码丰满熟妇| 欧美另类亚洲清纯唯美| 十分钟在线观看高清视频www| 淫妇啪啪啪对白视频| 成年版毛片免费区| 国产日韩欧美亚洲二区| 美女高潮喷水抽搐中文字幕| 日韩三级视频一区二区三区| 天天操日日干夜夜撸| 男女边摸边吃奶| 亚洲一卡2卡3卡4卡5卡精品中文| 日韩有码中文字幕| 亚洲成国产人片在线观看| 国产成人啪精品午夜网站| 国产亚洲精品一区二区www | 一本—道久久a久久精品蜜桃钙片| 欧美另类亚洲清纯唯美| 99久久99久久久精品蜜桃| 老汉色∧v一级毛片| av天堂在线播放| 中文亚洲av片在线观看爽 | av天堂久久9| 2018国产大陆天天弄谢| 精品第一国产精品| 免费av中文字幕在线| 天天躁日日躁夜夜躁夜夜| 免费黄频网站在线观看国产| 女人久久www免费人成看片| 日韩有码中文字幕| 亚洲欧洲日产国产| 脱女人内裤的视频| 亚洲自偷自拍图片 自拍| 午夜免费成人在线视频| 国产成人精品在线电影| 国产熟女午夜一区二区三区| 亚洲成a人片在线一区二区| 久9热在线精品视频| 国产一区二区在线观看av| 成人三级做爰电影| 亚洲精品国产色婷婷电影| 亚洲色图综合在线观看| 亚洲午夜精品一区,二区,三区| 一级黄色大片毛片| 精品国产超薄肉色丝袜足j| 久久久久久人人人人人| 亚洲久久久国产精品| 中文字幕另类日韩欧美亚洲嫩草| 精品国产乱码久久久久久小说| 中文字幕av电影在线播放| 一级a爱视频在线免费观看| tube8黄色片| 人妻一区二区av| 日本a在线网址| 成人黄色视频免费在线看| 美女主播在线视频| 国产激情久久老熟女| 丁香六月欧美| 欧美国产精品va在线观看不卡| 丝袜在线中文字幕| 99国产精品免费福利视频| 久久九九热精品免费| 中文字幕最新亚洲高清| 欧美国产精品va在线观看不卡| 日韩一区二区三区影片| 男女无遮挡免费网站观看| 日本黄色日本黄色录像| 久久免费观看电影| e午夜精品久久久久久久| av天堂久久9| 成年版毛片免费区| 日韩欧美国产一区二区入口| 精品亚洲成国产av| 国产精品九九99| 最黄视频免费看| 亚洲色图综合在线观看| 久久久久久人人人人人| 性高湖久久久久久久久免费观看| 男女免费视频国产| 最新的欧美精品一区二区| 少妇的丰满在线观看| 免费在线观看日本一区| 欧美成人午夜精品| 欧美日韩亚洲高清精品| 80岁老熟妇乱子伦牲交| 嫁个100分男人电影在线观看| 一本—道久久a久久精品蜜桃钙片| 午夜日韩欧美国产| 精品人妻1区二区| 国产有黄有色有爽视频| 久久精品国产99精品国产亚洲性色 | 我要看黄色一级片免费的| 下体分泌物呈黄色| 天天躁狠狠躁夜夜躁狠狠躁| 免费高清在线观看日韩| 欧美精品一区二区免费开放| 色尼玛亚洲综合影院| 激情视频va一区二区三区| 黄色视频不卡| 十八禁人妻一区二区| 国产精品一区二区在线不卡| 久久久久久免费高清国产稀缺| 国产在线视频一区二区| 在线观看免费午夜福利视频| 精品国产国语对白av| 好男人电影高清在线观看| 国产精品.久久久| 久久精品91无色码中文字幕| svipshipincom国产片| 在线观看免费视频日本深夜| av线在线观看网站| 亚洲视频免费观看视频| 母亲3免费完整高清在线观看| 日韩有码中文字幕| 啦啦啦中文免费视频观看日本| 飞空精品影院首页| 欧美精品高潮呻吟av久久| 欧美日韩亚洲综合一区二区三区_| bbb黄色大片| 美女扒开内裤让男人捅视频| 欧美成人午夜精品| 日韩三级视频一区二区三区| 免费不卡黄色视频| 亚洲一区中文字幕在线| 午夜福利欧美成人| a级毛片在线看网站| 成人三级做爰电影| 757午夜福利合集在线观看| 嫩草影视91久久| 国产在线免费精品| 免费在线观看黄色视频的| 精品国产乱子伦一区二区三区| 9热在线视频观看99| 午夜福利视频在线观看免费| 亚洲熟妇熟女久久| 极品人妻少妇av视频| 99国产精品一区二区三区| 少妇被粗大的猛进出69影院| 如日韩欧美国产精品一区二区三区| 精品高清国产在线一区| 涩涩av久久男人的天堂| 欧美激情高清一区二区三区| 亚洲第一欧美日韩一区二区三区 | 搡老熟女国产l中国老女人| 亚洲精品在线美女| 国产在线免费精品| 国产精品秋霞免费鲁丝片| 啦啦啦在线免费观看视频4| 巨乳人妻的诱惑在线观看| 久久久国产成人免费| 日韩免费高清中文字幕av| 丝袜喷水一区| 十八禁人妻一区二区| 99国产精品99久久久久| 日韩 欧美 亚洲 中文字幕| 日韩大码丰满熟妇| 男男h啪啪无遮挡| 亚洲精品久久成人aⅴ小说| 亚洲人成电影观看| 黄色怎么调成土黄色| 国产亚洲一区二区精品| 成年人免费黄色播放视频| 日韩一卡2卡3卡4卡2021年| 一本久久精品| h视频一区二区三区| 欧美日韩成人在线一区二区| 人人妻人人添人人爽欧美一区卜| 亚洲精品在线美女| 久久中文字幕人妻熟女| 国产一区二区在线观看av| 99久久99久久久精品蜜桃| 亚洲成人国产一区在线观看| tocl精华| 亚洲av成人一区二区三| av视频免费观看在线观看| 日韩有码中文字幕| 欧美激情久久久久久爽电影 | 欧美激情久久久久久爽电影 | 青青草视频在线视频观看| 久久久久久免费高清国产稀缺| 成人亚洲精品一区在线观看| 国产激情久久老熟女| a级毛片黄视频| 黄色视频不卡| 一本色道久久久久久精品综合| 欧美成人午夜精品| 女人久久www免费人成看片| 国产成人啪精品午夜网站| 超碰97精品在线观看| 90打野战视频偷拍视频| 色综合欧美亚洲国产小说| 亚洲成人免费电影在线观看| 精品人妻熟女毛片av久久网站| 性少妇av在线| 成人精品一区二区免费| 大型黄色视频在线免费观看| 欧美日韩亚洲综合一区二区三区_| 色综合欧美亚洲国产小说| 色尼玛亚洲综合影院| 水蜜桃什么品种好| 中文字幕人妻丝袜一区二区| 18在线观看网站| 国产男女内射视频| 色播在线永久视频| 老司机靠b影院| 国产精品国产av在线观看| 久久人妻福利社区极品人妻图片| 一区二区av电影网| √禁漫天堂资源中文www| 国产精品熟女久久久久浪| 悠悠久久av| 考比视频在线观看| 五月开心婷婷网| 大型av网站在线播放| 亚洲一卡2卡3卡4卡5卡精品中文| 午夜成年电影在线免费观看| 精品国内亚洲2022精品成人 | 免费在线观看完整版高清| 波多野结衣一区麻豆| 91大片在线观看| 水蜜桃什么品种好| 天堂俺去俺来也www色官网| avwww免费| 丝袜美腿诱惑在线| 久久久久久久久免费视频了| 天天影视国产精品| 欧美精品一区二区免费开放| 欧美国产精品va在线观看不卡| 十八禁网站免费在线| 99久久国产精品久久久| www日本在线高清视频| 亚洲国产毛片av蜜桃av| 人成视频在线观看免费观看| √禁漫天堂资源中文www| 国产成人欧美| 老汉色av国产亚洲站长工具| 69精品国产乱码久久久| 在线 av 中文字幕| 80岁老熟妇乱子伦牲交| 亚洲一卡2卡3卡4卡5卡精品中文| 精品卡一卡二卡四卡免费| 日韩欧美一区二区三区在线观看 | 亚洲美女黄片视频| 亚洲天堂av无毛| 日韩免费高清中文字幕av| 男女无遮挡免费网站观看| 成人手机av| 香蕉久久夜色| 久久天堂一区二区三区四区| av福利片在线| 一区二区三区乱码不卡18| 国产又爽黄色视频| 国产熟女午夜一区二区三区| 亚洲欧美一区二区三区黑人| 中文字幕最新亚洲高清| 久久精品国产亚洲av香蕉五月 | 操美女的视频在线观看| 少妇 在线观看| 精品免费久久久久久久清纯 | 免费在线观看视频国产中文字幕亚洲| 中文字幕另类日韩欧美亚洲嫩草| 国产成+人综合+亚洲专区| 日本a在线网址| 激情在线观看视频在线高清 | 亚洲精品自拍成人| 久久久久网色| 精品国产一区二区三区久久久樱花| 一本久久精品| 国产成人精品久久二区二区91| 777久久人妻少妇嫩草av网站| 欧美精品一区二区大全| 一二三四在线观看免费中文在| 麻豆av在线久日| 日韩一区二区三区影片| 国产黄频视频在线观看| 麻豆乱淫一区二区| 亚洲一区二区三区欧美精品| 一区二区三区国产精品乱码| 美女高潮喷水抽搐中文字幕| 国产成人啪精品午夜网站| 少妇精品久久久久久久| 精品久久久久久电影网| 悠悠久久av| 99riav亚洲国产免费| 亚洲欧美精品综合一区二区三区| 精品免费久久久久久久清纯 | √禁漫天堂资源中文www| 少妇精品久久久久久久| 日韩有码中文字幕| 女同久久另类99精品国产91| 亚洲七黄色美女视频| 91精品国产国语对白视频| 亚洲精品一二三| 亚洲avbb在线观看| videos熟女内射| bbb黄色大片| 妹子高潮喷水视频| 最近最新免费中文字幕在线| 色婷婷久久久亚洲欧美| 狠狠婷婷综合久久久久久88av| 一本大道久久a久久精品| 国内毛片毛片毛片毛片毛片| 高潮久久久久久久久久久不卡| 精品一品国产午夜福利视频| av又黄又爽大尺度在线免费看| 在线观看人妻少妇| 操美女的视频在线观看| 天天躁夜夜躁狠狠躁躁| 欧美日韩一级在线毛片| 亚洲精品国产区一区二| 中国美女看黄片| 国产亚洲av高清不卡| 中亚洲国语对白在线视频| 国产老妇伦熟女老妇高清| 黑丝袜美女国产一区| 亚洲中文日韩欧美视频| 深夜精品福利| 成人影院久久| 久久毛片免费看一区二区三区| 免费久久久久久久精品成人欧美视频| 天天影视国产精品| 18禁裸乳无遮挡动漫免费视频| 97在线人人人人妻| 日本vs欧美在线观看视频| 欧美+亚洲+日韩+国产| 免费在线观看黄色视频的| 悠悠久久av| 69精品国产乱码久久久| 国产精品久久久久久精品古装| 久久午夜亚洲精品久久| 美女视频免费永久观看网站| 免费观看a级毛片全部|