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

    基于ARMv8架構(gòu)ROP自動(dòng)構(gòu)造框架

    2017-08-12 12:22:06趙利軍
    關(guān)鍵詞:庫(kù)中寄存器內(nèi)存

    趙利軍 彭 城

    (徐州工程兵學(xué)院作戰(zhàn)實(shí)驗(yàn)中心 江蘇 徐州 221000)

    ?

    基于ARMv8架構(gòu)ROP自動(dòng)構(gòu)造框架

    趙利軍 彭 城

    (徐州工程兵學(xué)院作戰(zhàn)實(shí)驗(yàn)中心 江蘇 徐州 221000)

    為了在ARM公司最新發(fā)布的首款支持64位處理器的ARMv8架構(gòu)上實(shí)現(xiàn)ROP(Return_Oriented Programmig)技術(shù),提高ROP攻擊效力,設(shè)計(jì)了ARMv8架構(gòu)上的ROP 自動(dòng)構(gòu)造工具。首先對(duì)已有的ARM架構(gòu)下gadget搜索工具進(jìn)行擴(kuò)展,使之支持ARMv8架構(gòu)下可用指令序列的搜索,并把這些指令序列存儲(chǔ)在gadget庫(kù)中,其次采用優(yōu)化策略對(duì)gadget庫(kù)進(jìn)行優(yōu)化。然后利用語(yǔ)義等價(jià)性找出與shellcode語(yǔ)義相同的gadget鏈,并利用寄存器連通性解決語(yǔ)義斷層和寄存器沖突等問(wèn)題。最后完成gadget的自動(dòng)串聯(lián)形成具有特定行為的ROP鏈。通過(guò)利用ROP自動(dòng)構(gòu)造工具對(duì)網(wǎng)站”exploit.db”中大量的shellcode進(jìn)行自動(dòng)構(gòu)造,證明了工具具有良好的攻擊效力,增強(qiáng)了ROP攻擊的實(shí)用性。

    ROP 指令序列 ARMv8 寄存器連通性 語(yǔ)義斷層 寄存器沖突

    0 引 言

    數(shù)據(jù)執(zhí)行保護(hù)和簽名等技術(shù)有效地阻止了代碼注入式攻擊。2005年Krahmer等提出了一種借用代碼攻擊方法,該方法不再需要向內(nèi)存中注入惡意代碼,而是利用代碼段中的代碼實(shí)現(xiàn)攻擊。return-into-libc[1]技術(shù)是一種典型的借用代碼攻擊,通過(guò)劫持控制流,跳轉(zhuǎn)到C語(yǔ)言函數(shù)庫(kù)libc,復(fù)用libc中已有的函數(shù)。但是return-into-libc攻擊只能順序調(diào)用函數(shù),不能實(shí)現(xiàn)圖靈完備的行為,如分支操作、循環(huán)操作等。

    為了彌補(bǔ)return-into-libc攻擊的局限性, 2007年Shacham[2]第一次提出了X86平臺(tái)上的返回導(dǎo)向編程技術(shù)ROP。返回導(dǎo)向編程攻擊的方式不再局限于將漏洞程序的控制流跳轉(zhuǎn)到庫(kù)函數(shù)中,而是利用庫(kù)函數(shù)或可執(zhí)行文件的指令代碼片段實(shí)現(xiàn)攻擊,將復(fù)用的代碼粒度從return-to-libc的函數(shù)級(jí)別縮小到指令序列。 自2007年ROP概念被提出后,關(guān)于ROP攻擊的研究引起了研究人員的 廣泛關(guān)注,他們先后在各個(gè)平臺(tái)上對(duì)ROP攻擊進(jìn)行而來(lái)實(shí)驗(yàn)。例如ARM平臺(tái),SPARC平臺(tái)和AVR平臺(tái)。Kornau[3]首次在ARM架構(gòu)上實(shí)現(xiàn)了ROP攻擊并驗(yàn)證了圖靈完整性,而且提出了一套基于REIL語(yǔ)言的自動(dòng)構(gòu)建ROP鏈的算法。2008年,Roemer[4]等在SPARC平臺(tái)上驗(yàn)證了ROP圖靈完整性。盧森堡大學(xué)的Ralf-Philipp Weinmann利用ROP技術(shù)實(shí)現(xiàn)了iOS系統(tǒng)的入侵[5]。

    ROP技術(shù)至關(guān)重要的一環(huán)就是可用指令序列的自動(dòng)搜索,本文中將這些指令序列定義為gadget。由于庫(kù)文件中的代碼的數(shù)量非常巨大,所以手工搜索gadget將會(huì)非常的耗時(shí),這將嚴(yán)重降低ROP技術(shù)的效率。2011年,Schwartz[6]等提出了一種 X86 平臺(tái)上gadget 自動(dòng)搜索算法,其定義了內(nèi)部語(yǔ)言 QooL 來(lái)實(shí)現(xiàn)漏洞程序到 ROP payload 之間的轉(zhuǎn)換,但是其缺陷是定義的語(yǔ)義只有內(nèi)存操作和邏輯操作,沒(méi)有涉及到條件執(zhí)行和循環(huán)。然而這些技術(shù)只適用于X86架構(gòu),并不適用于其他架構(gòu),特別是RISC架構(gòu)。2010年,Kornau 等在ARM架構(gòu)上實(shí)現(xiàn)一種基于中間語(yǔ)言 REIL 的 ARM gadget 自動(dòng)搜索算法,首先該算法定位到分支指令,然后根據(jù)語(yǔ)法樹(shù)算法把一條指令翻譯成 REIL 語(yǔ)言,最后組合信息成為有用的gadgets。Schwartz等提出的自動(dòng)構(gòu)造ROP攻擊的框架Q是基于短指令序列的,不能繞過(guò)Chen[7]等提出的防御機(jī)制。2014年,Yang[8]等在Schwartz基礎(chǔ)上提出了基于長(zhǎng)指令序列的自動(dòng)構(gòu)造框架,成功地繞過(guò)了Ping、Chen等人的防御機(jī)制。

    ARMv8架構(gòu)為了獲得低功耗高效率的64位計(jì)算優(yōu)勢(shì),引入了一個(gè)全新的指令字長(zhǎng)為32位的64位指令集A64。上文論述的gadget搜索算法或是針對(duì)ARMv7架構(gòu),或是針對(duì)X86架構(gòu),并不適用于ARMv8架構(gòu)。并且目前針對(duì)ROP攻擊的大部分研究仍停留在gadget自動(dòng)搜索階段,還需要很多的人工參與,嚴(yán)重降低了ROP攻擊的效率。為了解決以上技術(shù)缺陷,本文設(shè)計(jì)了一種ARMv8 ROP shellcode自動(dòng)構(gòu)造工具,該工具首先搜索到ARMv8架構(gòu)下的可用指令序列,然后在可用指令序列中搜索到與shellcode語(yǔ)義相同的gadget,自動(dòng)完成gadget的串聯(lián),提高了ROP攻擊的效率。

    1 背 景

    1.1 ARMv8架構(gòu)的差異性分析

    ARMv8架構(gòu)在指令集設(shè)置、寄存器使用和函數(shù)調(diào)用等方面和我們熟知的架構(gòu)(X86、ARM)截然不同。ARMv8架構(gòu)有兩種工作狀態(tài):AArch64和AArch32。在這兩種工作狀態(tài)下指令集仍然都是32位的,但是指令的尋址范圍不同了:AArch64狀態(tài)下支持64 bit的地址空間,AArch32狀態(tài)下支持32 bit的地址空間 ,且在每種工作狀態(tài)下ARMv8都有31個(gè)通用寄存器[9]。本文將主要對(duì)AArch64狀態(tài)下ARMV8架構(gòu)的差異性。

    1.1.1 子函數(shù)調(diào)用規(guī)則

    ARMv8架構(gòu)摒棄了ARMv7架構(gòu)下的7種工作模式:1個(gè)用戶模式和6個(gè)特權(quán)模式。ARMV8架構(gòu)下采用4種工作模式:EL0-EL3,EL0相當(dāng)于用戶模式,下面我們將主要對(duì)非特權(quán)模式進(jìn)行分析。

    ARMv8架構(gòu)下當(dāng)發(fā)生子函數(shù)調(diào)用時(shí),程序?qū)C中下一條指令的地址保存到寄存器X30中,然后跳轉(zhuǎn)到PC中的地址去執(zhí)行,當(dāng)函數(shù)返回時(shí)程序?qū)?huì)跳轉(zhuǎn)到X30寄存器中的地址處執(zhí)行。當(dāng)子函數(shù)的參數(shù)的個(gè)數(shù)不大于8個(gè)的時(shí)候,則參數(shù)由寄存器X0-X7進(jìn)行參數(shù)傳遞,如果子函數(shù)的參數(shù)的個(gè)數(shù)大于8個(gè),則大于8個(gè)參數(shù)之外的參數(shù)通過(guò)棧進(jìn)行傳遞。根據(jù)ARMv8架構(gòu)的子函數(shù)的調(diào)用規(guī)則,在ARMv8架構(gòu)中的寄存器分配規(guī)則如表1所示。

    表1 函數(shù)調(diào)用時(shí)寄存器分配規(guī)則

    從表1中可以看出ARMv7架構(gòu)為15個(gè)通用寄存器,其中LR用來(lái)存放函數(shù)的返回地址,當(dāng)函數(shù)從被調(diào)函數(shù)返回時(shí)從LR寄存器讀取返回地址跳轉(zhuǎn)到調(diào)用函數(shù)繼續(xù)執(zhí)行。ARMv8架構(gòu)下為31個(gè)通用寄存器,棧指針寄存器SP獨(dú)立于31個(gè)通用寄存器之外,其中X30相當(dāng)于ARMv7架構(gòu)下的LR寄存器,當(dāng)函數(shù)返回時(shí),程序?qū)?huì)跳轉(zhuǎn)到X30寄存器中的地址執(zhí)行。

    ARMv8架構(gòu)下函數(shù)調(diào)用時(shí)的內(nèi)存布局相比于ARM以前的版本有了較大的改變,函數(shù)調(diào)用時(shí)的棧結(jié)構(gòu)如圖1所示。

    圖1 函數(shù)調(diào)用棧的分布情況對(duì)比圖

    左圖為ARMv7的情形。caller調(diào)用callee之前,棧指針位于sp1位置;進(jìn)入callee后,將?;芳拇嫫鱎11和程序鏈接寄存器LR分別壓棧,LR寄存器保存的是callee的返回地址。接著將棧指針減去一個(gè)常數(shù)(由編譯器根據(jù)具體情況而定),假設(shè)其位于sp3位置。sp2-sp3之間的空間為callee的??臻g。

    右圖為ARMv8的情形。caller調(diào)用callee之前,棧指針位于sp1位置;緊挨著sp1位置的兩個(gè)寄存器X29和X30分別存放的是caller棧基址和返回地址。進(jìn)入callee函數(shù)后,首先會(huì)將棧指針減去一個(gè)常數(shù)(由編譯器根據(jù)具體情況而定),假設(shè)位于sp2位置,然后將X29和X30寄存器分別壓棧,此時(shí)棧指針位于sp3位置,X30寄存器保存的是callee的返回地址;sp1-sp3之間的空間為callee的棧空間。

    1.1.2 ARMv8架構(gòu)分支指令

    通過(guò)對(duì)ARMv8架構(gòu)指令系統(tǒng)的研究[9],總共有5類跳轉(zhuǎn)指令可以影響程序的執(zhí)行流。其功能如表2所示,當(dāng)處理器在AArch64位的工作狀態(tài)下時(shí),表中的寄存器就寫(xiě)成Xm,當(dāng)工作在AArch32狀態(tài)下時(shí)寄存器就寫(xiě)成Wm。

    表2 ARMv8架構(gòu)分支指令描述表

    ARMv8架構(gòu)上的可用指令序列都是以支持寄存器間接跳轉(zhuǎn)指令為結(jié)尾的。從表2中可以看出,這些指令主要包括三類:BLR Xm、BR Xm和RET {Xm}。其中,ARMv8中BLR Xm和BR Xm主要用于分支跳轉(zhuǎn)或函數(shù)調(diào)用,BLR指令時(shí)需要將返回地址保存到寄存器X30中,而B(niǎo)R指令不需要將返回地址保存到寄存器X30中;RET {Xm}為函數(shù)返回指令,當(dāng)Xm省略時(shí)默認(rèn)使用X30。本文中主要使用以RET {Xm}指令為結(jié)尾的指令序列。

    1.2 ARMv8 ROP攻擊原理概述

    所謂的ROP攻擊就是利用庫(kù)文件或可執(zhí)行文件中的短指令序列完成的攻擊,ARMv8架構(gòu)一次ROP攻擊的原理如圖2所示。

    圖2 ARMv8 ROP攻擊概況圖

    其中各部分完成的功能如下:

    ① 攻擊者通過(guò)一次漏洞利用將gadget框架注入到用戶控制的棧中,并控制程序使之跳轉(zhuǎn)到gadget 1執(zhí)行。

    ② 所有的位于漏洞程序運(yùn)行映像內(nèi)存中的gadget序列,運(yùn)行時(shí)映像包括漏洞程序本身和被漏洞程序加載的所有的庫(kù)文件。

    ③ gadget框架通過(guò)棧將變量傳遞給下一個(gè)gadget,每個(gè)gadget框架包括該gadget需要的源數(shù)據(jù)和下一個(gè)被期望執(zhí)行的gadget的首地址。

    ④ 被存儲(chǔ)在專用內(nèi)存段中的可以變多個(gè)gadget訪問(wèn)的變量,這個(gè)內(nèi)存區(qū)域可以被每個(gè)gadget進(jìn)行讀寫(xiě)訪問(wèn)。

    ⑤ 一個(gè)gadget示例,本文把其命名為gadget1。

    ⑥ 程序跳轉(zhuǎn)到gadget 1執(zhí)行后,gadget 1的前兩條指令訪問(wèn)專用內(nèi)存區(qū)域[X5+0x8]和[X5+0x20]內(nèi)存位置。

    ⑦ gadget框架為gadget1中的LDP指令提供輸入,X1和X2寄存器被設(shè)置為保存在gadget框架中的值,X30寄存器也被設(shè)置為下一個(gè)期望執(zhí)行的gadget的首地址。

    ⑧ gadget1通過(guò)RET執(zhí)行使程序跳轉(zhuǎn)到gadget2執(zhí)行。

    ⑨ gadget2的一個(gè)示例。

    ⑩ 寄存器X4和X5被設(shè)置為gadget2框架中的值,X30寄存器被設(shè)置為gadget3的首地址,然后程序跳轉(zhuǎn)到gadget3執(zhí)行。依次循環(huán)下去直到所有的gadget執(zhí)行完畢,即完成一次ROP攻擊。

    2 ARMv8 ROP shellcode自動(dòng)構(gòu)造工具

    本文中設(shè)計(jì)的ROP shellcode自動(dòng)構(gòu)造框架如圖3所示。其主要包括三個(gè)部分;shellcode分析框架、gadget自動(dòng)搜索框架和gadget自動(dòng)構(gòu)建框架。Shellcode分析框架完成shellcode語(yǔ)義的提取和優(yōu)化,gadget自動(dòng)搜索框架實(shí)現(xiàn)ARMv8架構(gòu)下可用指令序列的搜索,gadget自動(dòng)構(gòu)建框架通過(guò)分析shellcode的語(yǔ)義,在gadget庫(kù)中搜索與shellcode具有語(yǔ)義的gadget,以完成gadget的自動(dòng)串聯(lián)。

    圖3 ARMv8 gadget自動(dòng)搜索框架

    2.1 shellcode分析模塊

    Shellcode分析框架主要用于shellcode的優(yōu)化和語(yǔ)義提取。 對(duì)用于輸入的shellcode,該框架首先將shellcode轉(zhuǎn)換為L(zhǎng)LVM 中間語(yǔ)言,然后在中間語(yǔ)言級(jí)對(duì)shellcode進(jìn)行優(yōu)化和語(yǔ)義提取。其中優(yōu)化主要包括冗余指令的消除、指令合并等。語(yǔ)義提取主要是提取shellcode語(yǔ)句的操作類型。Shellcode分析模塊將會(huì)加快gadget自動(dòng)生成模塊的效率。圖4顯示了shellcode分析模塊的執(zhí)行結(jié)果,其中左半部分為完成一個(gè)從1加到10的求和運(yùn)算,右半部分為經(jīng)過(guò)shellcode分析模塊分析后的結(jié)果。

    圖4 shellcode分析框架結(jié)果

    2.2 gadget自動(dòng)搜索框架

    gadget鏈?zhǔn)荝OP技術(shù)最重要的一部分,所謂 gadget,是指在一個(gè)程序中能搜索到的具有某一特定功能的可用指令序列。該指令序列必須滿足一定的條件:

    (1) gadget 中包含的指令條數(shù)通常很短,在個(gè)位數(shù)以內(nèi);

    (2) gadget 的末尾都是一個(gè)跳轉(zhuǎn)指令;

    (3) 每個(gè) gadget 完成某一功能,如 mov/add/sub/and/neg 等。

    本文中的gadget搜索框架將主要搜索以RET指令結(jié)尾的指令序列。通過(guò)統(tǒng)計(jì)發(fā)現(xiàn)ARMv8架構(gòu)通常使用X30寄存器作為RET指令的目的地址寄存器。其指令的編碼為”xc0x03x5fxd6”。所以本文的搜索算法將主要在目標(biāo)二進(jìn)制文件對(duì)特征碼”xc0x03x5fxd6”進(jìn)行搜索。

    當(dāng)定位到分支指令之后,開(kāi)始以分支指令開(kāi)始逆向遍歷,其搜索算法如圖5所示,圖5給出的自動(dòng)搜索算法遍歷庫(kù)文件或可執(zhí)行文件的整個(gè)代碼段。算法的第4行通過(guò)對(duì)ARMv8架構(gòu)ELF文件格式的分析,定位到代碼段。該算法的第一層循環(huán)用來(lái)搜索整個(gè)庫(kù)文件來(lái)定位分支指令,當(dāng)搜索到”xc0\x03x5fxd6”特征碼時(shí)用第二層循環(huán)開(kāi)始逆向4字節(jié)遍歷,并把相應(yīng)的指令保存到G.gadget_binary[]中,當(dāng)完成一個(gè)指令流的搜索后,把該指令流的首地址保存到G.address中。當(dāng)發(fā)生以下情況時(shí)算法停止搜索:① 當(dāng)遇到返回指令RET時(shí);② 當(dāng)G.gadget_binary[]中的指令的條數(shù)大于搜索深度maxdepth時(shí)。

    圖5 ARMv8 gadget自動(dòng)搜索算法

    算法中的maxdepth為用戶預(yù)先設(shè)置好的一個(gè)閾值,這個(gè)值的設(shè)置是必要的,且其值一般設(shè)置為個(gè)位數(shù),本文中將其值設(shè)置為4。如果不設(shè)置閾值或者該值過(guò)大會(huì)給指令序列帶來(lái)巨大的邊界影響。

    2.3 gadget自動(dòng)構(gòu)造模塊

    Gadget自動(dòng)構(gòu)造模塊通過(guò)對(duì)shellcode分析模塊分析結(jié)果進(jìn)行分析,在gadget自動(dòng)搜索模塊搜索出的圖靈完成的gadget庫(kù)中匹配到與shellcode語(yǔ)義相同的gadget。其框架如圖6所示,其中語(yǔ)義匹配器通過(guò)分析shellcode的語(yǔ)義在gadget庫(kù)中找出所有的與shellcode語(yǔ)義具有相同語(yǔ)義的gadget。Gadget選擇器根據(jù)不同的策略對(duì)gadget庫(kù)進(jìn)行排序,然后選擇最優(yōu)的gadget。Gadget優(yōu)化器主要解決語(yǔ)義斷層和寄存器沖突等問(wèn)題。

    圖6 gadget自動(dòng)構(gòu)造模塊

    2.3.1 gadget選擇器

    本文中主要是根據(jù)棧指針SP偏移值的大小進(jìn)行排序。語(yǔ)義匹配器生成的gadget中的所有的gadget都具有相同的語(yǔ)義,但是其棧指針SP的偏移卻是不同的。例如gadget”add x3,x2,x5;ldr x30,[sp],#0x8;ret”和gadget”add x3,x2,x5;ldp x29,x30,[sp],#0x10; ret”,這兩個(gè)gadget完成的功能都是將寄存器X2和寄存器X5中內(nèi)容相加,結(jié)果保存到寄存器X3中,但是第一個(gè)gadget中SP調(diào)整了8個(gè)字節(jié),而第二個(gè)gadget中SP調(diào)整了16個(gè)字節(jié),本文中將會(huì)保留第一個(gè)gadget。本文采用線性掃描的方法,從gadget集的開(kāi)始位置遍歷整個(gè)gadget集,根據(jù)SP偏移的大小采取冒泡排序算法對(duì)gadget進(jìn)行排序,當(dāng)遍歷結(jié)束時(shí),gadget庫(kù)中的gadget將是按照棧指針SP偏移值從小到大排序,然后選取那個(gè)SP調(diào)整最小的gadget作為gadget鏈中的一個(gè)。這樣在進(jìn)行ROP攻擊時(shí),會(huì)節(jié)省非常多的??臻g,提高了ROP攻擊的效率。將來(lái)本文還會(huì)對(duì)排序策略進(jìn)行擴(kuò)展,從而構(gòu)造出更優(yōu)的gadget鏈。

    2.3.2 gadget優(yōu)化器

    雖然2.3.1節(jié)中已經(jīng)選擇除了最優(yōu)的gadget,但是其仍然存在以下兩個(gè)問(wèn)題。第一,語(yǔ)義分析器有可能搜索不到與shellcode語(yǔ)義相同的gadget;而且2.3.1結(jié)構(gòu)搜索出的gadget可能存在葉子gadget,這將影響gadget的串聯(lián);這些都將導(dǎo)致gadget語(yǔ)義斷層。第二,gadget選擇器生成的gadget鏈中存在寄存器沖突。Gadget優(yōu)化器主要解決這兩個(gè)問(wèn)題。

    1) 語(yǔ)義斷層

    語(yǔ)義斷層主要包括兩個(gè)方面:葉子gadget和shellcode語(yǔ)義丟失。

    葉子gadget:所謂的葉子gadget就是指那些無(wú)法控制目的地址寄存器的gadget,例如gadget{add x0,x2,x4;ret}就是一個(gè)葉子gadget,因?yàn)樵赗ET指令之前沒(méi)有一條匯編指令能夠?qū)30寄存器進(jìn)行控制,這將影響該gadget與下一條期望執(zhí)行的gadget的串聯(lián)。本文將使用一個(gè)跳板gadget進(jìn)行解決,跳板gadget的主要功能是對(duì)X30寄存器進(jìn)行設(shè)置,然后使用通用寄存器來(lái)作為目的地址寄存器實(shí)現(xiàn)gadget的串聯(lián),例如gadget1{ldr x6,[sp],#0x8;ldr x30,[sp],#0x10;bx r6}就是一個(gè)跳板gadget。當(dāng)遇到葉子gadget時(shí),就在該gadget之前插入跳板gadget1,將R6寄存器設(shè)置為葉子gadget的首地址,將X30寄存器設(shè)置為葉子gadget執(zhí)行完畢后期望執(zhí)行的gadget的地址。這樣當(dāng)跳板gadget1執(zhí)行完畢后,將會(huì)使用BX R6指令跳轉(zhuǎn)到葉子gadget執(zhí)行,葉子gadget最后的RET指令完成與后續(xù)gadget的串聯(lián)。但是在使用跳板gadget時(shí),一定要注意不要破壞R6寄存器中的值,必須存放葉子gadget的首地址。

    shellcode語(yǔ)義丟失:shellcode語(yǔ)義丟失是指在gadget庫(kù)中找不到與shellcode具有相同語(yǔ)義的gadget。本文通過(guò)分析gadget自動(dòng)搜索模塊生成的gadget庫(kù),證明了寄存器的連通性,即寄存器間是兩兩可達(dá)的。然后通過(guò)利用寄存器的連通性實(shí)現(xiàn)寄存器的替換,在替換過(guò)程中,本文將盡量替換最少的寄存器以解決shellcode語(yǔ)義丟失問(wèn)題。例如假設(shè)在2.1節(jié)的求和例子中,本文假設(shè)語(yǔ)句”add x3,x3,x4”將會(huì)造成shellcode語(yǔ)義丟失,即在gadget庫(kù)中搜索不到與該語(yǔ)句語(yǔ)義相同的gadget。那么本文將會(huì)按照寄存器最少替換原則,首先對(duì)目的寄存器X3寄存器進(jìn)行替換,直到在gadget庫(kù)中找到語(yǔ)義相同的gadget,當(dāng)使用寄存器X1對(duì)X3進(jìn)行替換時(shí),則在gadget庫(kù)中找到了與其語(yǔ)義相等的gadget1”add x1,x3,x4;ldp x29,x30,[sp],#0x20;ret”,然后在gadget1之后增加gadget2”mov x3,x1;ldr x30,[sp],#0x8;ret”,將gadget1與gadget2串聯(lián)到一起將會(huì)完成與語(yǔ)句”add x3,x3,x4”語(yǔ)義相同的gadget,解決語(yǔ)義斷層問(wèn)題。如果對(duì)目的寄存器替換完畢后,仍然無(wú)法發(fā)現(xiàn)gadget,那么就對(duì)源寄存器進(jìn)行替換,按照寄存器替換由少到多的原則一直替換下去,直到找到語(yǔ)義相等的gadget。

    2) 寄存器沖突的解決

    寄存器沖突指存在兩個(gè)gadgets:G1和G2,G1存儲(chǔ)臨時(shí)數(shù)據(jù)到寄存器A,G2需要初始化寄存器A以完成相應(yīng)的操作,G1和G2之間就存在寄存器沖突。本文將首先尋找一個(gè)棧安全位置,該位置不會(huì)影響gadget的控制結(jié)構(gòu),然后在兩個(gè)gadget之間增加一個(gè)內(nèi)存存儲(chǔ)gadget將臨時(shí)數(shù)據(jù)保存到棧安全位置,等到使用時(shí)再將其取出。例如“add x0,x1,x3;ldr x30,[sp],#0x10;ret”和“mov x0,#0x8;ldp x29,x30,[sp],#0x20;ret”這兩個(gè)gadget,第一個(gè)gadget的功能是將寄存器X1和X3相加之后的結(jié)果保存到寄存器X0,這將影響X0寄存器的正常使用,那么本文就在這兩個(gè)gadget之間增加一個(gè)store gadget{str x0,[x5];ldp x29,x30,[sp],#0x20;ret}。首先將X0寄存器中的值保存到棧安全位置,等到使用時(shí)再?gòu)南鄳?yīng)的位置取出,以消除寄存器沖突。其中X5寄存器保存的是棧安全位置的基址。

    3 實(shí)驗(yàn)與評(píng)估

    3.1 ARMv8 shellcode實(shí)例

    實(shí)驗(yàn)環(huán)境: Linaro ARMv8 Linux,其版本號(hào)為L(zhǎng)inux 3.6.0-1-Linaro-vexpress64。Linaro是ARM公司授權(quán)商,其為ARMv8開(kāi)發(fā)的工具鏈和快速模型虛擬平臺(tái)能從ARM官網(wǎng)下載[11]。

    本節(jié)將給出Linaro ARMv8 Linux上實(shí)現(xiàn)的ROP實(shí)例。該實(shí)例的ROP shellcode欲實(shí)現(xiàn)的功能是通過(guò)復(fù)用libc.so.6中的write函數(shù)在終端輸出字符串”ARMv8 exploit”,然后復(fù)用libc.so.6中的exit函數(shù)使程序離開(kāi)。

    ROP shellcode對(duì)應(yīng)的內(nèi)存布局及工作原理如圖7所示。圖的左側(cè)給出ROP的內(nèi)存安排和內(nèi)存地址的后12位,圖的右側(cè)的虛線代表指令序列的執(zhí)行順序。

    圖7 ROP攻擊實(shí)例原理圖

    通過(guò)一次漏洞利用,將返回地址用gadget(1)的返回地址改寫(xiě),程序返回時(shí)將會(huì)跳轉(zhuǎn)到本文設(shè)定的指令序列,程序依次執(zhí)行g(shù)adget(1)和gadget(2)。在gadget(1)和gadget(2)執(zhí)行完畢之后,X0、X1和X2三個(gè)寄存器已經(jīng)被設(shè)置為write系統(tǒng)調(diào)用所需要的三個(gè)參數(shù),gadget(3)將write系統(tǒng)調(diào)用號(hào)0x40傳遞給寄存器0x40,然后執(zhí)行write系統(tǒng)調(diào)用在終端輸出字符串”ARMV8 exploit”。通過(guò)控制write系統(tǒng)調(diào)用的返回地址,write系統(tǒng)調(diào)用執(zhí)行完畢后程序?qū)?huì)跳轉(zhuǎn)到gadget(1)執(zhí)行。gadget(1)將exit系統(tǒng)調(diào)用的參數(shù)和入口地址分別傳遞給寄存器X0和X30,最后通過(guò)執(zhí)行exit系統(tǒng)調(diào)用使程序離開(kāi)。在內(nèi)存中,本文沒(méi)有用到的閑置內(nèi)存全部用字符A填充。

    0x7fb7f4c4e4 F84107E0 ldr x0,[sp],#0x10

    0x7fb7f4c4e8 F84107FE ldr x30,[sp],#0x10

    0x7fb7f4c4ec D65F03C0 ret

    gadget(1)

    0x7fb7fe835c A8C10BE1 ldp x1,x2,[sp],#0x10

    0x7fb7fe8360 A8C113E3 ldp x3,x4,[sp],#0x10

    0x7fb7fe8364 A8C27BFD ldp x29, x30, [sp], #0x20

    0x7fb7fe8368 D65F03C0 ret

    gadget(2)

    0x7fb7f65c64 D2800808 mov x8, #0x40

    0x7fb7f65c68 D4000001 svc #0

    0x7fb7f65c6c F84027FE ldr x30,[sp],#0x10

    0x7fb7f65c70 D65F03C0 ret

    gadget(3)

    通過(guò)對(duì)上面gadget鏈的分析,生成的ARMv8 ROP shellcode的控制結(jié)構(gòu)內(nèi)容如下:

    char shellcode[]=

    ″x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41″

    ″x41x41x41x41x41x41x41x41xe4xc4xf4xb7x7fx00x00x00″

    ″x00x00x00x00x00x00x00x00x41x41x41x41x41x41x41x41″

    ″x5cx83xfexb7x7fx00x00x00x41x41x41x41x41x41x41x41″

    ″x41x41x41x41x41x41x41x41xd0xc4xf4xb7x7fx00x00x00″

    ″x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41″

    ″x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41″

    ″x50xfcxffxffx7fx00x00x00x0dx00x00x00x00x00x00x00″

    ″x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41″

    ″x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41″

    ″ARMv8 exploit;

    3.2 gadget自動(dòng)搜索框架搜索結(jié)果

    本文利用該工具在Linaro ARMv8 Linux 常用的庫(kù)文件libc.so.6和ld-linux-aarch64.so.1中進(jìn)行搜索,實(shí)驗(yàn)結(jié)果如圖8、圖9所示。

    圖8 libc.so.6庫(kù)文件中搜索深度為4的部分搜索結(jié)果

    圖9 ld-linux-aarch64.so.1庫(kù)文件中搜索深度為4的部分搜索結(jié)果

    通過(guò)利用搜索到的結(jié)果統(tǒng)計(jì)出以RET指令結(jié)尾的gadget的數(shù)目如表3所示。

    表3 gadget統(tǒng)計(jì)結(jié)果

    Buchanan[12]等首次在X86架構(gòu)上對(duì)gadget的圖靈完整性進(jìn)行了證明,如果一個(gè)gadget集可以滿足基本的賦值操作、算術(shù)和邏輯運(yùn)算、控制流和函數(shù)調(diào)用四個(gè)條件,那么該gadget集就是圖靈完整的,可以執(zhí)行任何操作。通過(guò)統(tǒng)計(jì),本文中搜索工具搜索到的gadget同樣可以滿足上面四個(gè)條件,因此本文工具搜索到的gadget也是圖靈完備的,可以執(zhí)行任意的操作。

    3.3 gadget自動(dòng)生成框架測(cè)試

    本文從網(wǎng)站exploit.db中選取了10個(gè)shellcode,然后利用本文的自動(dòng)構(gòu)造工具進(jìn)行自動(dòng)的構(gòu)造。本文所使用的環(huán)境為L(zhǎng)inaro ARMv8 Linux,其版本號(hào)為L(zhǎng)inux 3.6.0-1-Linaro-vexpress64。Linaro是ARM公司授權(quán)商,其為ARMv8開(kāi)發(fā)的工具鏈和快速模型虛擬平臺(tái)能從ARM官網(wǎng)下載。轉(zhuǎn)化后的ARMv8 shellcode大小和ARMv8 ROP shellcode大小如表4所示。

    表4 ARMv8 ROP shellcode

    在表4所示的shellcode中,有的涉及了復(fù)雜的shellcode的設(shè)計(jì),包括使用多個(gè)系統(tǒng)調(diào)用和條件跳轉(zhuǎn)等。例如,“setreuid(getuid(),setuid()),execve(“/bin/sh”,0,0)”ROP shellcode中需要涉及4個(gè)系統(tǒng)調(diào)用,“dup2(0,0),dup2(0,1),dup2(0,2)”ROP shellcode中需要涉及條件跳轉(zhuǎn)。從表4中可以看出,隨著shellcode的復(fù)雜性的增加,構(gòu)造ARMv8 ROP shellcode的復(fù)雜度也在增大。shellcode的長(zhǎng)度越大,構(gòu)造的ARMv8 ROP shellcode的gadget的數(shù)目和大小也越大。

    4 結(jié) 語(yǔ)

    為了實(shí)現(xiàn)ARMv8架構(gòu)上的ROP技術(shù),提高ROP攻擊的效率,增加其實(shí)用性。本文首次對(duì)已有的gadget搜索框架進(jìn)行擴(kuò)展,實(shí)現(xiàn)了ARMv8架構(gòu)上ROP gadget自動(dòng)搜索的框架。它首先在庫(kù)文件搜索出所有的以RET指令結(jié)尾的短指令序列,并把這些指令序列存儲(chǔ)在gadget庫(kù)中;然后利用語(yǔ)義分析器找到與shellcode語(yǔ)義相同的gadget,gadget選擇器對(duì)這些gadget進(jìn)行優(yōu)化排序,選擇出最優(yōu)的gadget;最后利用gadget、優(yōu)化器解決語(yǔ)義斷層和寄存器沖突問(wèn)題,完成gadget的自動(dòng)構(gòu)造。利用實(shí)驗(yàn)對(duì)本文的工具進(jìn)行了測(cè)試,實(shí)驗(yàn)結(jié)果表明本文的工具具有良好的攻擊效力。但是本文中的shellcode的控制結(jié)構(gòu)是通過(guò)人工分析進(jìn)行的,并且其不具有隱蔽性。下一步主要研究ROP shellcode控制結(jié)構(gòu)的自動(dòng)構(gòu)造和控制結(jié)構(gòu)的隱蔽性,以此提高ROP攻擊能力和抗檢測(cè)能力。

    [1] Krahmer S.x86-64 buffer overflow exploits and the borrowed code chunks exploitation technique[OL].2005-09-28.http://users.suse.com/~krahmer/no-nx.pdf.

    [2] Shacham H.The geometry of innocent flesh on the bone:Return-into-libc without function calls (on the x86)[C]//Proceedings of the 14th ACM conference on Computer and communications security.ACM,2007:552-561.

    [3] Kornau T.Return oriented programming for the ARM architecture[D].Ruhr-Universitat Bochum,2010.

    [4] Roemer R,Buchanan E,Shacham Hl.Return-oriented programming:Systems, languages, and applications[J].ACM Transactions on Information and System Security (TISSEC),2012,15(1):2.

    [5] Vincenzo Iozzo.ROP and iPhone[OL].2010-04-16.http://blog.zynamics.com/2010/04/16/rop-and-iphone/.

    [6] Schwartz E J,Avgerinos T,Brumley D.Q:Exploit Hardening Made Easy[C]//USENIX Security Symposium,2011.

    [7] Chen P,Xiao H,Shen X,et al.DROP:Detecting return-oriented programming malicious code[M]//Information Systems Security.Springer Berlin Heidelberg,2009:163-177.

    [8] Yang C,Zheng T,Lin Z.AR Exploit:An Automatic ROP Exploit Based on Long Sequence[C]//Software Security and Reliability-Companion (SERE-C),2014 IEEE Eighth International Conference on.IEEE,2014:50-56.

    [9] https://silver.arm.com/download/ARM_and_AMBA_Architecture/AR100-DA-70501-r0p0-00eac5/ARMv8_ISA_PRD03-GENC-010197-30-0.pdf.

    [10] https://silver.arm.com/download/ARM_and_AMBA_Architecture/AR10 0-DA-70501-r0p0-00eac5/DDI0487A_a_armv8_arm_errata.pdf.

    [11] Linaro.Linaro ARMv8 Project[OL].http://www.Linaro.org/projects/armv8/.

    [12] Buchanan E,Roemer R,Shacham H.When good instructions go bad:generalizing return-oriented programming to RISC[C]//Proceedings of the 15th ACM conference on Computer and communications security.ACM,2008:27-38.

    ROPAUTOMATICCONSTRUCTIONFRAMEWORKBASEDONARMV8ARCHITECTURE

    Zhao Lijun Peng Cheng
    (OperationalExperimentCenter,XuzhouEngineeringCorpsCollege,Xuzhou221000,Jiangsu,China)

    To support Return Oriented Programming technology on 64 bit ARMv8 architecture, we designed the ROP automatic construction tool. This tool can improve the effectiveness of the ROP attack. First, we extend the gadget searching tools, so the instruction sequence search can be used in the ARMv8 architecture. And we store the instruction sequence into gadget library. Secondly, we use the optimization strategy to optimize the gadget library. Then we use semantic equivalence to find the same gadget chain as the shellcode semantics. In addition, we use register connectivity to solve semantic faults and register conflicts and other issues. Finally, we need to complete the gadget automatic series to form a specific behaviour of the ROP chain. By using the ROP automatic construction tool to construct shellcode in the website "exploit.db", it proves that the tool has good attack effectiveness and enhances the practicability of ROP attack.

    ROP Instruction sequence ARMv8 Register connectivity Semantic fault Register conflict

    2016-08-29。趙利軍,講師,主研領(lǐng)域:軟件開(kāi)發(fā),信息安全。彭城,副教授。

    TP309.1

    A

    10.3969/j.issn.1000-386x.2017.08.057

    猜你喜歡
    庫(kù)中寄存器內(nèi)存
    動(dòng)物城堡
    動(dòng)物城堡
    Lite寄存器模型的設(shè)計(jì)與實(shí)現(xiàn)
    “春夏秋冬”的內(nèi)存
    分簇結(jié)構(gòu)向量寄存器分配策略研究*
    智能盤(pán)庫(kù)在自動(dòng)化立體庫(kù)中的探索和應(yīng)用
    ID3算法在構(gòu)件庫(kù)中的應(yīng)用
    河南科技(2014年10期)2014-02-27 14:09:02
    基于內(nèi)存的地理信息訪問(wèn)技術(shù)
    高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
    一種可重構(gòu)線性反饋移位寄存器設(shè)計(jì)
    大香蕉久久网| 色哟哟·www| 婷婷六月久久综合丁香| 91午夜精品亚洲一区二区三区| 美女脱内裤让男人舔精品视频| 日本熟妇午夜| 国产精品人妻久久久久久| 秋霞伦理黄片| 内地一区二区视频在线| 日日干狠狠操夜夜爽| 午夜福利视频精品| 国产亚洲91精品色在线| 久久99蜜桃精品久久| 成人鲁丝片一二三区免费| 一级二级三级毛片免费看| 亚洲内射少妇av| 一个人看视频在线观看www免费| 非洲黑人性xxxx精品又粗又长| 日本欧美国产在线视频| 欧美zozozo另类| 亚洲av电影在线观看一区二区三区 | 国产一区二区亚洲精品在线观看| 最近最新中文字幕免费大全7| 神马国产精品三级电影在线观看| 亚洲第一区二区三区不卡| 九草在线视频观看| 久久久久久久久久成人| 丝袜喷水一区| 丝瓜视频免费看黄片| 亚洲美女搞黄在线观看| 久久人人爽人人片av| 简卡轻食公司| 午夜免费激情av| 欧美激情在线99| 国产精品女同一区二区软件| 久久久久久久久久黄片| 看非洲黑人一级黄片| 日日啪夜夜撸| 久久久久久九九精品二区国产| 三级国产精品欧美在线观看| 午夜福利在线观看免费完整高清在| 九草在线视频观看| 久久精品国产亚洲av涩爱| 伦精品一区二区三区| 免费av观看视频| 成人欧美大片| 国产免费又黄又爽又色| 国产精品麻豆人妻色哟哟久久 | 亚洲精品亚洲一区二区| 在线天堂最新版资源| 夫妻性生交免费视频一级片| 成年版毛片免费区| 99久久九九国产精品国产免费| 欧美不卡视频在线免费观看| 黄色一级大片看看| 欧美激情国产日韩精品一区| 欧美+日韩+精品| 免费观看精品视频网站| 80岁老熟妇乱子伦牲交| 亚洲欧美成人精品一区二区| 国产伦在线观看视频一区| 人妻制服诱惑在线中文字幕| 可以在线观看毛片的网站| 午夜精品一区二区三区免费看| 国产 一区 欧美 日韩| 伊人久久国产一区二区| videos熟女内射| 尤物成人国产欧美一区二区三区| 中文字幕亚洲精品专区| 久久精品久久久久久久性| 成人二区视频| 国产v大片淫在线免费观看| 免费看日本二区| 久热久热在线精品观看| 秋霞在线观看毛片| 久久精品国产亚洲网站| 一级黄片播放器| 麻豆精品久久久久久蜜桃| 亚洲精品第二区| 一级av片app| 九九爱精品视频在线观看| 亚洲精品乱码久久久v下载方式| 亚洲av不卡在线观看| 熟妇人妻不卡中文字幕| 日日啪夜夜爽| 直男gayav资源| 天堂影院成人在线观看| 别揉我奶头 嗯啊视频| 午夜福利成人在线免费观看| 亚洲人成网站在线播| 久久久久久久久久久丰满| 久久久久久久久久久丰满| 欧美 日韩 精品 国产| 成年av动漫网址| 内地一区二区视频在线| 中文字幕人妻熟人妻熟丝袜美| 中文字幕制服av| 亚洲av不卡在线观看| 18禁动态无遮挡网站| 国产久久久一区二区三区| 精品99又大又爽又粗少妇毛片| 亚洲av电影不卡..在线观看| 精品99又大又爽又粗少妇毛片| 亚洲精品国产av蜜桃| 99热这里只有精品一区| 精品99又大又爽又粗少妇毛片| 亚洲久久久久久中文字幕| 成年av动漫网址| 亚洲精品一区蜜桃| 又爽又黄a免费视频| 观看免费一级毛片| 联通29元200g的流量卡| 国产成人福利小说| 777米奇影视久久| 国产黄a三级三级三级人| 激情五月婷婷亚洲| 国产综合精华液| 国产精品久久视频播放| 日本欧美国产在线视频| 麻豆av噜噜一区二区三区| 特大巨黑吊av在线直播| 女人被狂操c到高潮| 又爽又黄a免费视频| 又黄又爽又刺激的免费视频.| 久久久久久久亚洲中文字幕| 免费观看精品视频网站| 97超碰精品成人国产| 不卡视频在线观看欧美| 中文字幕av在线有码专区| 一个人看视频在线观看www免费| 国产av码专区亚洲av| 亚洲色图av天堂| 精品一区二区三区人妻视频| 高清午夜精品一区二区三区| 天天躁夜夜躁狠狠久久av| av播播在线观看一区| 少妇丰满av| 久久久久久久久大av| 国产亚洲午夜精品一区二区久久 | 亚洲精品乱码久久久久久按摩| 国产 一区精品| 亚洲国产精品专区欧美| 色哟哟·www| 日韩成人av中文字幕在线观看| videossex国产| 国产成人aa在线观看| 建设人人有责人人尽责人人享有的 | 又爽又黄无遮挡网站| 亚洲图色成人| 午夜精品一区二区三区免费看| 中文资源天堂在线| 国产成人精品福利久久| 两个人的视频大全免费| 婷婷色综合大香蕉| 亚洲av男天堂| 又粗又硬又长又爽又黄的视频| 精品一区在线观看国产| 国产精品久久视频播放| 国产精品久久久久久精品电影小说 | 成人欧美大片| 99久久九九国产精品国产免费| 大陆偷拍与自拍| 国产午夜福利久久久久久| 亚洲av国产av综合av卡| 国产精品无大码| 精品久久久久久久久av| 亚洲欧美日韩卡通动漫| 国产淫片久久久久久久久| 国产精品一二三区在线看| 久久精品国产亚洲av天美| 精品国内亚洲2022精品成人| 波多野结衣巨乳人妻| 伦精品一区二区三区| 国产男女超爽视频在线观看| 日本黄大片高清| 蜜臀久久99精品久久宅男| 婷婷色综合大香蕉| 亚洲综合色惰| 亚洲精品色激情综合| 深爱激情五月婷婷| 嫩草影院入口| 高清欧美精品videossex| 久久精品夜色国产| 亚洲av不卡在线观看| 亚洲在线自拍视频| 国产激情偷乱视频一区二区| 久久久欧美国产精品| 亚洲av二区三区四区| 纵有疾风起免费观看全集完整版 | 久久精品国产自在天天线| 九九久久精品国产亚洲av麻豆| 777米奇影视久久| 最近中文字幕高清免费大全6| 能在线免费看毛片的网站| 少妇人妻精品综合一区二区| 久久精品久久久久久久性| 精品久久久久久成人av| 亚洲在线观看片| 伦精品一区二区三区| 精品国产露脸久久av麻豆 | 亚洲av.av天堂| 97在线视频观看| 国产av国产精品国产| 美女cb高潮喷水在线观看| 亚洲精品456在线播放app| 丝袜喷水一区| 亚洲欧美成人精品一区二区| 国产有黄有色有爽视频| 街头女战士在线观看网站| 天堂√8在线中文| 久久99热这里只频精品6学生| 国语对白做爰xxxⅹ性视频网站| 最近的中文字幕免费完整| 免费看日本二区| 少妇高潮的动态图| 国产探花极品一区二区| 天堂中文最新版在线下载 | kizo精华| 白带黄色成豆腐渣| 国产精品综合久久久久久久免费| 美女主播在线视频| 色综合站精品国产| 午夜福利视频1000在线观看| 成年免费大片在线观看| 极品少妇高潮喷水抽搐| 看黄色毛片网站| 最近中文字幕2019免费版| 国产黄频视频在线观看| 欧美精品国产亚洲| 一个人观看的视频www高清免费观看| 乱系列少妇在线播放| 亚洲久久久久久中文字幕| 国产伦精品一区二区三区四那| 网址你懂的国产日韩在线| 神马国产精品三级电影在线观看| 我的女老师完整版在线观看| 国产成年人精品一区二区| av又黄又爽大尺度在线免费看| 亚洲av成人精品一二三区| 亚洲怡红院男人天堂| 日韩三级伦理在线观看| 在线观看免费高清a一片| 最近手机中文字幕大全| 如何舔出高潮| 国产精品人妻久久久久久| 你懂的网址亚洲精品在线观看| 久久国产乱子免费精品| 精品久久久久久久久av| 老司机影院成人| 国产精品蜜桃在线观看| 国产大屁股一区二区在线视频| 亚洲无线观看免费| 欧美三级亚洲精品| 国产不卡一卡二| 国产黄a三级三级三级人| 天美传媒精品一区二区| av国产久精品久网站免费入址| 国产一级毛片在线| 欧美高清成人免费视频www| 一区二区三区高清视频在线| 美女黄网站色视频| 久久97久久精品| 欧美xxxx性猛交bbbb| 国产综合懂色| 天天一区二区日本电影三级| 在线观看av片永久免费下载| 免费不卡的大黄色大毛片视频在线观看 | 91精品伊人久久大香线蕉| 久久精品久久久久久久性| 欧美+日韩+精品| 亚洲成人av在线免费| 国产一区二区在线观看日韩| 一级二级三级毛片免费看| 国产麻豆成人av免费视频| 日韩视频在线欧美| 国产精品久久久久久久电影| 亚洲综合色惰| 日日摸夜夜添夜夜爱| 又爽又黄无遮挡网站| 人妻一区二区av| 国产亚洲5aaaaa淫片| 91久久精品国产一区二区三区| 99久国产av精品国产电影| 又黄又爽又刺激的免费视频.| 黄色日韩在线| 热99在线观看视频| 69人妻影院| 建设人人有责人人尽责人人享有的 | 中文字幕人妻熟人妻熟丝袜美| 免费无遮挡裸体视频| 免费观看a级毛片全部| 噜噜噜噜噜久久久久久91| 免费黄色在线免费观看| 啦啦啦韩国在线观看视频| 日本-黄色视频高清免费观看| 亚洲国产精品专区欧美| 69人妻影院| 欧美成人精品欧美一级黄| 国产成人freesex在线| 免费观看a级毛片全部| 一级毛片久久久久久久久女| 久久久久性生活片| 久久久久久久久中文| av在线蜜桃| av又黄又爽大尺度在线免费看| 性色avwww在线观看| 国产综合懂色| 大陆偷拍与自拍| 亚洲国产精品sss在线观看| 精品久久国产蜜桃| 国产亚洲精品久久久com| 中文字幕人妻熟人妻熟丝袜美| 人人妻人人澡人人爽人人夜夜 | 嫩草影院精品99| 欧美xxxx性猛交bbbb| 99久久精品一区二区三区| 男女啪啪激烈高潮av片| 丰满人妻一区二区三区视频av| 欧美xxxx黑人xx丫x性爽| 欧美 日韩 精品 国产| 99re6热这里在线精品视频| 国产亚洲5aaaaa淫片| 亚洲精品国产成人久久av| 久久精品夜色国产| 精品国内亚洲2022精品成人| 国产高潮美女av| 国产亚洲午夜精品一区二区久久 | 高清欧美精品videossex| 尤物成人国产欧美一区二区三区| 成人高潮视频无遮挡免费网站| 午夜视频国产福利| 国产精品国产三级专区第一集| 日韩强制内射视频| 少妇熟女欧美另类| 亚洲精华国产精华液的使用体验| 午夜福利高清视频| 麻豆国产97在线/欧美| 亚洲欧美一区二区三区国产| 精品国内亚洲2022精品成人| 波野结衣二区三区在线| 国产精品av视频在线免费观看| 丰满少妇做爰视频| 国产乱人偷精品视频| 国产白丝娇喘喷水9色精品| 少妇被粗大猛烈的视频| 久久精品久久精品一区二区三区| 超碰97精品在线观看| 欧美激情国产日韩精品一区| 日本色播在线视频| 天天躁日日操中文字幕| 观看免费一级毛片| 亚洲欧美精品自产自拍| 天堂√8在线中文| 午夜激情欧美在线| 成人午夜精彩视频在线观看| 日本黄大片高清| 自拍偷自拍亚洲精品老妇| 精品国产一区二区三区久久久樱花 | 日韩欧美 国产精品| 亚洲图色成人| 日日摸夜夜添夜夜爱| 国产片特级美女逼逼视频| 中文字幕人妻熟人妻熟丝袜美| 日本免费在线观看一区| 有码 亚洲区| 99热全是精品| 欧美人与善性xxx| 3wmmmm亚洲av在线观看| 精品久久久久久久末码| 国产精品麻豆人妻色哟哟久久 | 亚洲精品国产av成人精品| 午夜精品一区二区三区免费看| freevideosex欧美| 一级毛片久久久久久久久女| 久久久久久久大尺度免费视频| www.av在线官网国产| av免费在线看不卡| 精品一区二区三区视频在线| 国产成人午夜福利电影在线观看| 国产一区二区三区av在线| 一夜夜www| 中文字幕免费在线视频6| 国产高清不卡午夜福利| 国产欧美另类精品又又久久亚洲欧美| 成年人午夜在线观看视频 | 高清午夜精品一区二区三区| 高清日韩中文字幕在线| 日本欧美国产在线视频| 午夜免费观看性视频| 久久久午夜欧美精品| av一本久久久久| 水蜜桃什么品种好| 女人十人毛片免费观看3o分钟| 99热6这里只有精品| 中国美白少妇内射xxxbb| 97人妻精品一区二区三区麻豆| av卡一久久| 别揉我奶头 嗯啊视频| 亚洲欧美一区二区三区黑人 | 麻豆成人av视频| 精品久久久久久久久亚洲| 好男人视频免费观看在线| 欧美一级a爱片免费观看看| av播播在线观看一区| 嫩草影院新地址| 99热这里只有精品一区| 大话2 男鬼变身卡| 两个人视频免费观看高清| av黄色大香蕉| 男女边摸边吃奶| 国产精品久久久久久av不卡| 国产日韩欧美在线精品| 男的添女的下面高潮视频| 欧美日韩视频高清一区二区三区二| 亚洲国产成人一精品久久久| 亚洲欧美精品自产自拍| 欧美性猛交╳xxx乱大交人| 国产片特级美女逼逼视频| 国产亚洲精品av在线| 婷婷六月久久综合丁香| 麻豆成人午夜福利视频| 国产伦理片在线播放av一区| 少妇丰满av| 简卡轻食公司| 特级一级黄色大片| 亚洲欧美成人综合另类久久久| 日本一二三区视频观看| 久久久久久久久中文| 婷婷六月久久综合丁香| 水蜜桃什么品种好| 久久久久国产网址| 亚洲熟妇中文字幕五十中出| 人妻少妇偷人精品九色| 天堂av国产一区二区熟女人妻| 少妇被粗大猛烈的视频| 高清欧美精品videossex| 尾随美女入室| 国产成人精品婷婷| 美女高潮的动态| 大陆偷拍与自拍| 色综合站精品国产| 久久久久久久久久久丰满| 亚洲精品亚洲一区二区| 一个人观看的视频www高清免费观看| 国产综合懂色| 神马国产精品三级电影在线观看| 女人十人毛片免费观看3o分钟| 亚洲在线观看片| 日韩欧美精品v在线| 午夜福利视频精品| 国产激情偷乱视频一区二区| 婷婷色综合www| a级毛片免费高清观看在线播放| 亚洲国产精品成人久久小说| 久久鲁丝午夜福利片| 精品久久久久久久久av| 如何舔出高潮| 亚洲国产高清在线一区二区三| 观看美女的网站| 国产淫语在线视频| 少妇丰满av| 国产美女午夜福利| 国产精品.久久久| 国产亚洲最大av| 99热这里只有是精品50| 精华霜和精华液先用哪个| 国产精品嫩草影院av在线观看| av在线亚洲专区| 99热网站在线观看| 成年免费大片在线观看| 午夜福利网站1000一区二区三区| 国产av国产精品国产| 日韩一区二区视频免费看| 99久久精品热视频| 成人鲁丝片一二三区免费| 22中文网久久字幕| 国产黄色小视频在线观看| 国产色婷婷99| 男女下面进入的视频免费午夜| 乱系列少妇在线播放| 久久久久久久久久久免费av| 嫩草影院精品99| 黄色欧美视频在线观看| 国产伦精品一区二区三区视频9| 国产麻豆成人av免费视频| 大陆偷拍与自拍| 少妇裸体淫交视频免费看高清| 又黄又爽又刺激的免费视频.| 亚洲成人中文字幕在线播放| 欧美xxxx性猛交bbbb| 插逼视频在线观看| 搡老妇女老女人老熟妇| 欧美潮喷喷水| 久久精品国产自在天天线| 亚洲欧美一区二区三区国产| 白带黄色成豆腐渣| 狂野欧美激情性xxxx在线观看| 亚洲天堂国产精品一区在线| 国产 一区精品| 久99久视频精品免费| 亚洲色图av天堂| av在线天堂中文字幕| 欧美97在线视频| 丰满人妻一区二区三区视频av| 91精品国产九色| 久久久欧美国产精品| 亚洲av成人av| 99热这里只有是精品50| eeuss影院久久| 国产乱来视频区| 国产高潮美女av| 大香蕉97超碰在线| 欧美最新免费一区二区三区| 嫩草影院新地址| 亚洲国产日韩欧美精品在线观看| 午夜激情久久久久久久| 尤物成人国产欧美一区二区三区| 26uuu在线亚洲综合色| 99热这里只有是精品在线观看| 国产高潮美女av| 毛片一级片免费看久久久久| 18+在线观看网站| 精品午夜福利在线看| 男女那种视频在线观看| 亚洲国产av新网站| 欧美 日韩 精品 国产| 神马国产精品三级电影在线观看| 五月天丁香电影| 精品熟女少妇av免费看| 美女内射精品一级片tv| av在线老鸭窝| 国产成人免费观看mmmm| 成年av动漫网址| 国产不卡一卡二| 日本黄色片子视频| 午夜福利在线在线| 麻豆成人午夜福利视频| 精品国产露脸久久av麻豆 | 好男人在线观看高清免费视频| 黄色日韩在线| 91精品伊人久久大香线蕉| 一个人看视频在线观看www免费| 99九九线精品视频在线观看视频| 少妇的逼水好多| 色综合站精品国产| 天堂网av新在线| 九九久久精品国产亚洲av麻豆| 久久久久久久国产电影| 久久精品国产自在天天线| 麻豆av噜噜一区二区三区| 亚洲激情五月婷婷啪啪| 国产老妇伦熟女老妇高清| 熟女电影av网| 午夜精品在线福利| 九九在线视频观看精品| 国产免费视频播放在线视频 | 听说在线观看完整版免费高清| a级一级毛片免费在线观看| 国产精品国产三级国产av玫瑰| 九九爱精品视频在线观看| 日韩中字成人| 日本黄色片子视频| 亚洲乱码一区二区免费版| 日韩一区二区三区影片| 国产爱豆传媒在线观看| 成人av在线播放网站| 91久久精品电影网| 久99久视频精品免费| 纵有疾风起免费观看全集完整版 | 伊人久久国产一区二区| 国产伦精品一区二区三区视频9| av线在线观看网站| 亚洲伊人久久精品综合| 国产在线一区二区三区精| 亚洲av成人精品一二三区| 亚洲av在线观看美女高潮| 亚洲精品日韩av片在线观看| 色视频www国产| 日日啪夜夜撸| 久久精品国产亚洲网站| 2022亚洲国产成人精品| 成人鲁丝片一二三区免费| 街头女战士在线观看网站| 国产亚洲一区二区精品| 只有这里有精品99| 韩国av在线不卡| 亚洲欧美精品专区久久| 国产精品伦人一区二区| 亚洲欧美日韩无卡精品| 青春草国产在线视频| 亚洲欧美日韩无卡精品| 午夜福利成人在线免费观看| 日韩欧美精品v在线| 女人被狂操c到高潮| 国产精品三级大全| 中文字幕免费在线视频6| 少妇丰满av| 九九爱精品视频在线观看| 亚洲欧洲国产日韩| 亚洲精品一区蜜桃| 美女黄网站色视频| 十八禁国产超污无遮挡网站| 亚洲av免费在线观看| av线在线观看网站| 美女国产视频在线观看| 黄色欧美视频在线观看| 亚洲内射少妇av| 99久久精品一区二区三区| 欧美另类一区| 中文资源天堂在线| 天美传媒精品一区二区| 黄色一级大片看看| 精品久久久久久久末码| 日本免费在线观看一区| 久久久久网色|