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

基于TaintDroid的動態污點檢測技術分析*

2016-07-01 08:50:51王建偉金偉信吳作順
通信技術 2016年2期

王建偉,金偉信,吳作順

(1.中國人民解放軍理工大學 通信工程學院,江蘇 南京 210007;2.中國電子設備系統工程研究所,北京 100141)

?

基于TaintDroid的動態污點檢測技術分析*

王建偉1,金偉信2,吳作順2

(1.中國人民解放軍理工大學 通信工程學院,江蘇 南京 210007;2.中國電子設備系統工程研究所,北京 100141)

摘要:隨著android智能手機的普及,用戶隱私泄露成為智能終端上最嚴重的安全問題之一。TaintDroid首次在android平臺上實現了動態污點追蹤,是當前解決Android平臺隱私泄露問題的研究的熱點。在綜述TaintDroid及其基本架構的基礎上,深入分析了TaintDroid污點標記的添加、存儲、傳播和提取等關鍵技術,并通過Android實際應用對TaintDroid如何檢測隱私泄露進行了驗證。最后給出了TaintDroid存在的不足和需要的改進之處,為今后的進一步研究指出了方向。

關鍵詞:Android;TaintDroid;隱私泄露;動態污點檢測

0引言

Android系統憑借其開源、易用等特點占有中國智能手機市場的絕大多數份額。Android手機中存儲著大量的用戶隱私信息,一旦這些信息泄露,將可能給用戶帶來嚴重經濟、精神損失[1]。因此Android手機隱私泄露是一個必須關注的問題。針對這個問題,2010年Enck等人[2]在Android2.1系統上實現了動態污點跟蹤系統TaintDroid,而后一系列基于TaintDroid的系統和隱私檢測工具被提出。本文對TaintDroid的設計框架和實現原理進行了分析,研究了其核心關鍵技術,并最終給出了TaintDroid存在的不足之處。

1TaintDroid概述

Taintdroid不是一個安裝在android系統上的一個應用,它其實是一個自定義的Android ROM,是通過將android的框架層代碼改寫實現的。因此每一個版本的TaintDroid都與Android一個特定的版本相對應。到目前為止TaintDroid分別在Android2.1、Android2.3、Android4.1和Android4.3版本上進行了移植。我們可以下載android源碼,用相應TaintTroid源碼來替換android源代碼中的部分代碼并編譯,將其刷入設備(TaintDroid的官方網站上建議的設備為Galaxy Nexus,Nexus 4,Nexus 7 (2012),or a Nexus 10)或者模擬器,然后運行其自帶的應用TaintDroid Notify在后臺監控我們安裝的應用程序是否存在隱私泄露行為。一旦應用程序泄露了用戶的隱私,TaintDroid會以通知的形式來告知用戶。

TaintDroid的思想就是將所有隱私數據變成污染源,在程序運行的過程中如果對污染源進行截取、拼裝、加密、傳遞等操作,那么新生成的數據也會被污染[3]。如果有被污染的數據被泄露出去,那么就發生了隱私泄露。TaintDroid首先修改產生隱私數據的API[4](涉及攝像頭、麥克風、短信、通話記錄等)添加污點標記;然后在Davlvik虛擬機實現細粒度指令級的污點跟蹤,在文件和IPC(inter-process communication)消息級別實現粗粒度的污點跟蹤;最后在網絡出口檢測污點標記。圖1詳細描述了TaintDroid的整體設計框架[5]。

圖1 TaintDroid整體框架

(1)手機內部的敏感信息,如地理位置、通訊錄等隱私信息,在有足夠多內容的受信任應用程序中被視為污點。

(2)污點接口調用本地方法的Dalvik虛擬機解釋器的接口,同時將標記的污點存儲在虛擬的污染地圖的指定位置。

(3)在Dalvik虛擬機中,當受信任的應用程序使用了受污染的信息,受感染標簽將隨著數據流傳播。多個虛擬機解釋器會同時傳播受感染的標簽。

(4)當受信任的應用程序在進程間通信中使用了受污染的信息,修改后的Binder庫確保數據包里有污點的標簽,反映合并感染標記包含的所有數據。

(5)這個數據包是通過內核并被遠程不受信任的應用程序接收。值得注意的一點是,解釋代碼是唯一不可信的。

(6)修改后的Binder庫從數據包里檢索出污點標簽并將其分配給所有讀取的值。

(7)同樣地,不受信任的應用程序需要時,污點標簽也在遠端的Dalvik虛擬機中傳播。

(8)不受信任的應用程序調用被指定為污點標簽片,例如網絡發送、通訊錄、通話記錄等。

(9)該庫檢索污點標簽中可疑的數據,并報告這些可疑事件。

2TaintDroid的關鍵技術

2.1污點標記的添加技術

隱私數據的類型包括基本的數據類型int、double、char等,擴展數據類型包括數組、字符串等。如我們的sim卡標識可能使用的就是基本類型int,而短信息就可能是擴展類型字符串。

在TaintDroid的源代碼taint.java中提供了以下函數對隱私數據的類型進行污點標記。

addTaintInt(int val,int tag);

addTaintFloat(floatval,int tag);

……

Taintdroid通過修改該API內部實現來添加污點標記,如果隱私數據一旦被讀取,則通過以上方法將污點標記到相應的數據上。例如,如果我們想獲得用戶的位置信息,就可以通過調用getLastKnownLocation()方法[6],得到一個如下的Location對象這個對象中包含了經度、緯度、海拔等一系列的位置信息。修改getLastKnownLocation()方法,在其內部調用addTaintFloat()方法,為經緯度信息添加污點標記。

下面我們以整型為例,介紹TaintDroid如何為隱私數據添加污點。addTaintInt是一個本地方法,我們在vm/native/ dalvik_system_taint.c文件中找到了具體的實現。

首先,如圖2所示傳入參數arg0與arg1,分別代表該整數和欲添加的污點,然后建立返回污點指針,接著獲取該數據本身自帶的污點(程序在初始化整數時會為其分配初始污點標記0),最后更新該污點,整個操作過程也可以理解為實現了污點的傳播。

圖2 污點標記添加

2.2污點標記的存儲技術

Dalvik層有五種類型的變量要求存儲:局部方法變量,方法的參數,類的靜態變量,類實例的字段和數組。在Android里面的所有引用都是32 bit的,TaintDroid通過修改Dalvik 虛擬機為每個引用分配64 bit空間,程序自身使用32 bit,而TaintDroid使用剩下的32 bit。因此采用bitmap的方式可以標注32中不同類型的隱私。目前TaintDroid只定義了以下17種標記,如表1所示。

表1 污點標記定義

這種方式帶來的副作用不言而喻,它會導致程序引用的內存增加一倍,而優點是可精確定位到每個被污染的對象。

局部變量:方法內部使用的臨時變量稱作局部變量,局部變量通過dalvik虛擬機的寄存器來存儲[7](Dalvik虛擬機和jvm虛擬機的一個主要區別是,前者是基于寄存器的而后者是基于棧的)。寄存器是包含基本數據類型和對象引用類型。寄存器通常是32 bit的,對于64為的的數據類型(如long和double),dalvik虛擬機通過分配兩個相鄰的寄存器來存儲,并且通過二進制的指令來決定使用一個或者兩個寄存器。Dalvik虛擬機通過棧來管理寄存器。當應用程序調用一個方法的時候,Dalvik產生一個新的棧幀為所有的寄存器分配存儲空間。在執行過程中寄存器通過通過寄存器相對棧頂指針的偏移索引來應用該寄存器。例如我們通過fp[0]來引用寄存器v0,通過fp[1]來引用寄存器v1。方法調用結束后幀棧彈出變量。

Taintdroid為每個入棧的寄存器變量分配64 bit的空間,其中32 bit用來存儲寄存器變量,剩余的32 bit用于存儲污點標簽。寄存器變量和污點標簽交叉存儲,修改后的棧通過fp[2*i]來引用寄存器vi,通過fp[2*i+1]來引用污點標記。注意Dalvik存儲一個64 bit的變量是通過兩個相鄰的32位內部寄存器完成的。修改后的棧格式如圖3所示。

圖3 修改后的棧格式

方法的參數:Dalvik虛擬機通過寄存器為方法傳遞參數。本地方法和解釋層方法對參數的處理方式是不同的,在方法調用之前指定的參數寄存器被壓入堆棧,如果目標方法是解釋層的方法,那么新的變量存放在調用棧的棧頂。如果是本地方法必須傳遞一個指向字節數組的棧頂指針,從中解析出一個32 bit和64 bit的變量來作為方法簽名[8]。

這種不同影響了污點的存儲,對于解釋層方法,我們仍然可以像本地變量一樣污點和變量之間交叉存儲。對于系統native層污點的存儲無法像在解釋層一樣通過修改虛擬機棧的分配來實現(可以通過修改kernel來實現,但影響面太大),TaintDroid利用增加調用參數的方式來存放污染標記。如圖,有一個調用的參數有兩個:arg0和arg1,TaintDroid再多加3個參數,第3個參數是輸出參數,調用完成后return值的標記就放在這里,第4和第5個參數是輸入參數分別是arg0和arg1的污染標記。通過這種方式,在做完一次Native調用后就可以得到return值的污染標記。

類字段:類的靜態字段存儲一個變量并且被所有的實例共享而實例字段對于不同的實例有不同的值。因此靜態字段污點的存儲比較簡單直接按照數據結構交叉存儲數據和污點就可以。實例字段相對復雜,需要存儲一個相對于對象實例的偏移。

數組:為了最小化內存的開銷,TaintDroid為每個數組只存儲一個污點標簽。字符串對象采用這種方式不是很合理,因為字符串中所有的字符將會有相同的污點標記,這也可能導致假陽性污染傳播。

2.3污點標記的傳播技術

如圖4所示,TaintDroid是一個多粒度Android的污點跟蹤方法,首先TaintDroid利用VM解釋器對不可信的應用程序代碼進行變量級的跟蹤。TaintDroid只跟蹤數據不跟蹤代碼,并且利用VM解釋器的上下文提供的多種語義來避免在X86指令集中發生的污點爆炸問題[9,10]。其次TaintDroid在應用程序之間使用信息級別的跟蹤,對于進程間通信使用信息污點標記來代替數據污點標記可以最小化系統開銷來擴大分析的寬度。再次,當應用程序執行本地方法的時候,采用方法級別的跟蹤,各種污點標記被作為返回值返回。最后采用文件級別的跟蹤來保證污點標簽的持久性。

圖4 多粒度追蹤架構

2.3.1解釋代碼污點傳播

Dalvilk虛擬機運行唯一的dex機器語言[7]。TaintDroid通過分析dex語義,定義了信息流的傳播邏輯。如表2所示。其中vx,vy,vz是寄存器,fy,fz是字段ID,T()表示污點值。

從表2可以看出,污點傳播邏輯中包含了數據在dalvik虛擬機中傳播的的三大途徑:賦值、參數傳遞、返回值,換句話說就是無論在虛擬機中對隱私數據進行何種操作都會被污染。

表2 DEX指令級污點傳播

2.3.2原生代碼污點傳播

由于android系統的JNI機制,程序會脫離dalvik虛擬機進入原生代碼庫調用本地方法,taintdroid不能正常進行污點跟蹤。為了實現污點的傳播,taintdroid對所有的JNI方法進行了手動的修補,通過增加本地方法參數,在調用返回時更新污點標記。

2.3.3二級存儲污點傳播

當數據寫入文件時可能導致污點的丟失,因此TaintDroid設計了每個文件的存儲標記。當檢測到隱私數據寫入文件的時候或含有隱私數據的文件的污點被讀取的時候更新污點標記。

2.3.4IPC污點傳播

當APP之間存在交換數據時污點標記必須傳播。跟蹤的粒度直接影響了性能和內存開銷,TaintDroid使用信息級別的污染跟蹤。一個信息的污染標簽代表了信息上一次污點標記分配給的變量。TaintDroid使用了信息水平級的粒度使得在進程間通訊的性能和存儲開銷達到最小化。

由Android的體系結構可知,所有應用內與應用間通信都是通過binder實現,而關鍵部分總是寫入數據包parcel當中的。當通信內容中包含整數型時,系統提供WriteInt方法就可以將數據寫入。但此時將丟失污點信息,因此在該過程中需要添加污點傳播代碼。當數據寫入時將污點一并寫入parcel,同時在通信對方接收時一并將污點信息提取并標記到所讀取的數據污點位。

2.4污點標記的提取技術

污點標記的提取是TaintDroid污點追蹤的最后一步。污點標記的添加和提取是對應的,不同的數據類型用不同的方法來進行提取。在TaintDroid的源代碼taint.java中提供了以下方法對污點標記進行提取:

int getTaintInt(intval);

int getTaintString(String str);

int getTaintFloat(float val);

……

TaintDroid選擇在網絡出口處提取污點標記。在socket內部添加以上方法來提取污點標記,若為隱私數據就利用taint.log()方法將其寫入日志。最終利用TaintDroidNotify應用來讀取日志信息,并通知給用戶應用存在隱私泄露行為。

3實例分析

(1)創建一個TaintDroid定制版ROM的AVD。首先利用我們自定義ROM的system.img文件(在/out/target/product /generic目錄里面)替換掉原生SDK的system.img。然后利用eclipse 中的可視化工具Android Virtual Device Manager來創建一個定制的AVD(Device:Nexus,Target:Android4.3.1,cpu:ARM,RAM:768,SD Card:200)。

(2)運行模擬器并安裝“酷我音樂盒”。創建完AVD后直接點擊Start來運行模擬器。初次運行會比較慢,因為要創建sdcard.img、 userdata.img、userdata-qemu.img等等一系列相關鏡像文件。進入Android系統后打開TaintDroidNotify并開啟監控,TaintDroid服務會在后臺運行。安裝“酷我音樂盒”到系統并打開。這時我們就可以看到一個隱私泄露的系統通知。滑動即可查看具體違規的詳細情況:“酷我音樂盒”軟件會發送IMEI到ip地址60.28.210.86。IMEI(International Mobile Equipment Identity)是國際移動設備身份碼的縮寫,它與每臺手機一一對應,而且該碼是全世界唯一的。如果有人獲得你設備的IMEI,他就可以獲知你的電話號碼、中止你的通話、獲得你的位置等信息。因此所有泄露的個人信息類型中,IMEI號泄露行為最為嚴重。

(3)污點分析。應用在網絡出口處發送了含有污點信息的數據(IMEI),由此可以得知程序肯定調用了getDeviceId()方法。利用Apktools反編譯程序,在~/cn/kuwo/mod/push/pushInit.smail文件中發現了該方法,TaintDroid修改了該方法(~/telephony/gsm/GSMPhone.java)的具體實現,在內部利用addTaintString(mImei,Taint_IMEI)方法為變量mImei添加了污點,并通過getDeviceId()方法返回。這樣就完成了污點標記的添加。

雖然TaintDroid可以跟蹤數據流,但是在每個地方都打印日志信息會極大的影響系統性能。因此我們無法獲得污點變量的傳播路徑。

從DDMMS中可以看出TaintDroid在網絡出口處檢測到了應用程序泄露了手機的IMEI信息(0x400代表IMEI污點標記)。我們在該實例最終調用的sendto()方法中看到,TaintDroid在其內部添加了污點提取和生成日志的函數。Taintdroid只跟蹤數據流,因此我們只能知道程序存在隱私泄露,而不知道程序是如何產生隱私泄露的。換句話說就是TaintDroid無法跟蹤控制流,這需要結合靜態分析才能實現。

4改進方向

(1)TaintDroid不允許調用第三方動態庫。根據上文的分析,TiantDroid無法對第三方動態庫進行污點跟蹤,因此所有帶有第三方動態庫的應用都不能在taintdroid上運行。而我國的大部分的熱門應用都要用到第三方動態庫,這個問題急需解決。關鍵代碼可以查看源碼 davilk/vm/Native.cpp源文件中的dvmLoadNativeCode方法,該方法判斷如果應用加載的是應用自己實現的動態庫則直接返回,導致應用運行奔潰。

(2)只能跟蹤信息流無法跟蹤控制流。Taintdroid可以檢測出信息的泄露但不能給出程序執行的路徑信息,沒有使用控制流分析[11-12],從而無法檢測Soundcomber這類利用隱蔽信道(手機震動、選項設置等)的攻擊[13],但這類行為可利用靜態分析識別。

(3)對字符串和數組類型的跟蹤粒度不夠細。taintdroid在設計時對于字符串和數組類型只標記了一個引用位置。因此即使字符串或者數組中的污染源已經移走,他們依然存在污點標記。這導致了污點追蹤過程中可能產生污點的過度擴散[14-16],從而產生誤報。例如,定義一個整形數組a[10],其中a[0]為攜帶污點的數據。即使a[0]從數組中被移除,整個數組還是帶有污點標記的。并且我們從數組中提取任意一個索引如a[0],都是帶有污點標記的,這可能帶來大量的性能消耗和污點爆炸問題。

(4)檢測的隱私泄露點不夠多。通常情況下,TaintDroid僅僅對一般的網絡通信(Socket)進行監測,藍牙、短信等通信方式沒有被監測。

(5)沒有對隱私數據的泄露進行攔截。TaintDroid只是監測隱私數據的流向,當隱私數據產生時并沒有阻止操作也沒有可選的攔截措施。

5結語

本文首先給出了TaintDroid的整體框架,詳細分析該框架的實現原理,然后通過對“酷我音樂盒”的安裝測試實驗,用污點追蹤方法對其隱私泄露進行了檢測,驗證了TaintDroid的有效性。通過對污點的標記、存儲、傳播、提取等關鍵技術的分析,我們可以充分了解TaintDroid的多粒度污點跟蹤架構。TaintDroid作為隱私泄露的一種通用解決方案,我們分析了其存在的不足,為以后的研究指出了方向。

參考文獻:

[1]吳俊昌,蔣凡,程紹銀.基于程序分析的 Android 應用惡意行為檢測[J].通信技術,2013,46(07):69-72.

WU Jun-chang,JIANG Fan,CHENG Shao-yin.Malicious Behavior Detection of Android Application based on Program Analysis[J].Communications Technology,2013,46(07):69-72.

[2]Enck W,Gilbert P,Chun B G,et al.TaintDroid: An Information-Flow Tracking System for Realtime Privacy Monitoring on Smartphones.[C]// Usenix Conference on Operating Systems Design & Implementation.2010:99-106.

[3]蔡昌.Android平臺惡意軟件動態監測系統的設計與實現[D].北京:北京交通大學,2013.

CAI Chang.Design and Implementation of the Android Platform Malware Dynamic Detection System[D].BeiJing: Beijing Jiaotong University,2013.

[4]CHENG K,CUI Y.Design and Implementation of Network Packets Collection Tools based on the Android Platform[C]// Fuzzy Systems and Knowledge Discovery (FSKD),2012 9th International Conference on.IEEE,2012:2166-2169.

[5]湯瑾.Android平臺下隱私數據保護方法的研究與實現[D].北京:北京郵電大學,2014.

TANG Jin.Research and Implementation of Privacy Protection on Android.Beijing: Beijing University of Posts and Telecommunications,2014.

[6]Kovacheva A.Efficient Code Obfuscation for Android[M]// Advances in Information Technology.Springer International Publishing,2013:104-119.

[7]Protsenko M,Kreuter S,Muller T.Dynamic Self-Protection and Tamperproofing for Android Apps Using Native Code[C]// Availability,Reliability and Security (ARES),2015 10th International Conference on.IEEE,2015.

[8]Claiborne C L,Ncube C,Dantu R.Random Anonymization of Mobile Sensor Data: Modified Android Framework[C]// Intelligence and Security Informatics (ISI),2015 IEEE International Conference on.IEEE,2015.

[9]ZHU D,JUNG J,SONG D,et al.TaintEraser: Protecting Sensitive Data Leaks using Application-Level Taint Tracking[J].Acm Sigops Operating Systems Review,2011,45(1):142-154.

[10]Schwartz E J,Avgerinos T,Brumley D.All You Ever Wanted to Know about Dynamic Taint Analysis and Forward Symbolic Execution (but Might Have Been Afraid to Ask)[C]// Security and Privacy (SP),2010 IEEE Symposium on.IEEE,2010:317-331.

[11]YUAN J,QIANG W,JIN H,et al.CloudTaint: An Elastic Taint Tracking Framework for Malware Detection in the Cloud[J].Journal of Supercomputing,2014,70(3):1433-1450.

[12]KING D,Hicks B,Hicks M,et al.Implicit Flows: Can't Live with 'Em,Can't Live without 'Em.[M]// Information Systems Security.Springer Berlin Heidelberg,2008:56-70.

[13]彭國軍,李晶雯,孫潤康等.Android惡意軟件檢測研究與進展[J].武漢大學學報:理學版,2015,61(01):21-33.PENG Guo-jun,LI Jing-wen,SUN Run-kang,et al.Android Malware Detection Research and Development[J].Wuhan Univ (Nat.Sci.Ed) 2015,61(01):21-33.

[14]楊廣亮,龔曉銳,姚剛等.一個面向Android的隱私泄露檢測系統[J].計算機工程,2012,38(23):1-6.

YANG Guang-liang,GONG Xiao-rui,YAO Gang,et al.A Privacy Leakage Detection System for Android[J].Computer Engineering.2012,38(23): 1-6.

[15]Slowinska A,Bos H.Pointless Tainting? Evaluating the Practicality of Pointer Tainting[J].Eurosys,2009:61-74.

[16]Schutte J,Titze D,De Fuentes J M.AppCaulk: Data Leak Prevention by Injecting Targeted Taint Tracking into Android Apps[C]// 2014 IEEE 13th International Conference on Trust,Security and Privacy in Computing and Communications (TrustCom).IEEE Computer Society,2014:370-379.

Taint Droid-based Dynamic Taint Detection Technology

WANG Jian-wei1,JIN Wei-xin2,WU Zuo-shun2

(1.College of Communication Engineering,PLA University of Science and Technology,Nanjing Jiangsu 210007,China;2.Institute of Electronic Equipment System Engineering Company,Beijing 100141,China)

Abstract:With the popularity of android smart phones,user privacy disclosure becomes one of the most serious security problems.TaintDroid for the first time realizes dynamic taint tracking on the android platform and becomes the hot research topic in solving the problem of privacy disclosure.Based on the review of TaintDroid and its basic architecture,this paper analyzes in depth the key technologies including the adding,storage,dissemination and extraction of taint marks.In addition,how for TaintDriod to detect privacy disclosure is verified through practical application of Android.Finally,this paper presents the deficiencies and the points to be improved existing in TaintDroid,thus pointing out the direction for further research.

Key words:Android; TaintDroid; privacy disclosure; dynamic taint track

doi:10.3969/j.issn.1002-0802.2016.02.019

* 收稿日期:2015-09-12;修回日期:2015-12-06Received date:2015-09-12;Revised date:2015-12-06

基金項目:國家863 課題(No.2015AA011104)

Foundation Item:National 863 Programs(No.2015AA011104)

中圖分類號:TP309

文獻標志碼:A

文章編號:1002-0802(2016)02-0221-06

作者簡介:

王建偉(1986—),男,碩士研究生,主要研究方向為計算機網絡;

金偉信(1965—),副總工程師。碩士生導師,主要研究方向為信息安全;

吳作順(1974—),高級工程師,碩士生導師,主要研究方向為信息安全。

主站蜘蛛池模板: a毛片在线播放| 国产乱码精品一区二区三区中文 | 免费在线一区| 亚洲日韩Av中文字幕无码| 国产麻豆福利av在线播放| 亚洲国产av无码综合原创国产| 女人18一级毛片免费观看| 中文字幕中文字字幕码一二区| 成人国产三级在线播放| 中文天堂在线视频| 国产网站在线看| 久久综合干| 婷婷午夜天| 高h视频在线| 久久综合丝袜日本网| www.99在线观看| 亚洲色欲色欲www在线观看| 亚洲视频在线网| 性色一区| 狠狠久久综合伊人不卡| 爱爱影院18禁免费| 亚洲不卡无码av中文字幕| 亚洲人成人无码www| 狠狠色香婷婷久久亚洲精品| 久久这里只有精品8| 网久久综合| 精品福利国产| 九九九精品成人免费视频7| 美女潮喷出白浆在线观看视频| 色135综合网| 9999在线视频| 欧美人人干| 精品国产欧美精品v| 91欧洲国产日韩在线人成| 国产日韩欧美成人| 精品视频一区二区三区在线播| 免费a在线观看播放| 亚洲第一区在线| 久久精品最新免费国产成人| 波多野结衣在线一区二区| 日韩精品亚洲人旧成在线| 国产SUV精品一区二区| 亚洲AV成人一区二区三区AV| 国产在线日本| 欧美一区二区自偷自拍视频| 久久免费看片| 成人在线亚洲| 久久久久久久97| 亚洲欧洲日本在线| 毛片手机在线看| 国产白丝av| 国产一区二区人大臿蕉香蕉| 狂欢视频在线观看不卡| 国产爽妇精品| 国产欧美日韩视频一区二区三区| 亚洲综合久久成人AV| 久久久黄色片| 五月天在线网站| 99久久精品无码专区免费| 大香伊人久久| 成人av专区精品无码国产 | 国产精品 欧美激情 在线播放 | 免费看久久精品99| 99ri精品视频在线观看播放| 亚洲无码不卡网| 国产精品国产三级国产专业不 | 国产女人在线视频| av天堂最新版在线| 亚洲日韩AV无码一区二区三区人| 久久精品人妻中文系列| 国产精品女熟高潮视频| 国产午夜福利片在线观看| 亚洲色欲色欲www在线观看| 国产精品制服| 91久久偷偷做嫩草影院精品| 国产成人精品一区二区不卡| 国产另类视频| 欧美乱妇高清无乱码免费| 国产黑人在线| 国产精品成人啪精品视频| 日韩毛片视频| 国产视频只有无码精品|