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

    模型學習與符號執(zhí)行結(jié)合的安全協(xié)議代碼分析技術(shù)

    2021-11-10 13:10:06張協(xié)力祝躍飛顧純祥陳熹
    關(guān)鍵詞:密碼學代碼邏輯

    張協(xié)力,祝躍飛,顧純祥,陳熹

    模型學習與符號執(zhí)行結(jié)合的安全協(xié)議代碼分析技術(shù)

    張協(xié)力1,2,祝躍飛1,2,顧純祥1,2,陳熹1,2

    (1. 數(shù)學工程與先進計算國家重點實驗室,河南 鄭州 450001;2. 網(wǎng)絡(luò)密碼技術(shù)河南省重點實驗室,河南 鄭州 450002)

    符號執(zhí)行技術(shù)從理論上可以全面分析程序執(zhí)行空間,但對安全協(xié)議這樣的大型程序,路徑空間爆炸和約束求解困難的局限性導致其在實踐上不可行。結(jié)合安全協(xié)議程序自身特點,提出用模型學習得到的協(xié)議狀態(tài)機信息指導安全協(xié)議代碼符號執(zhí)行思路;同時,通過將協(xié)議代碼中的密碼學邏輯與協(xié)議交互邏輯相分離,避免了因密碼邏輯的復雜性導致路徑約束無法求解的問題。在SSH協(xié)議開源項目Dropbear上的成功實踐表明了所提方法的可行性;通過與Dropbear自帶的模糊測試套件對比,驗證了所提方法在代碼覆蓋率與錯誤點發(fā)現(xiàn)上均具有一定優(yōu)勢。

    模型學習;符號執(zhí)行;安全協(xié)議代碼;狀態(tài)驅(qū)動

    1 引言

    安全協(xié)議在理論設(shè)計和代碼實現(xiàn)中都極易出錯。針對協(xié)議規(guī)范的形式化驗證方法由于忽略了協(xié)議實現(xiàn)細節(jié),無法保證協(xié)議實現(xiàn)的安全。而安全協(xié)議較大的代碼規(guī)模和復雜的交互邏輯讓協(xié)議代碼安全審計變得更加困難。研究新的技術(shù)和方法來輔助安全協(xié)議代碼檢測是一項挑戰(zhàn)性工作。

    模型學習和模糊測試兩種技術(shù)在安全協(xié)議程序分析方面取得了許多有價值的研究成果。Paul等[1]通過MAT[2](minimally adequate teacher)模型學習框架推斷得到協(xié)議程序狀態(tài)機信息,然后用模型檢測器檢測協(xié)議程序狀態(tài)機模型中是否存在與協(xié)議規(guī)范要求不一致的路徑。文獻[3]用類似的工作思路對安全協(xié)議IpSec的開源實現(xiàn)進行了分析,發(fā)現(xiàn)了一個違反狀態(tài)機時序邏輯的bug。文獻[4]進一步將模型學習與模糊測試技術(shù)相結(jié)合,對DTLS進行了分析。直接對模型學習得到的協(xié)議程序的狀態(tài)機進行模型檢測,其局限性在于僅能發(fā)現(xiàn)與狀態(tài)機的時序問題,不能用于發(fā)掘更細節(jié)的錯誤。符號執(zhí)行技術(shù)可以用較少的測試用例達到較大覆蓋率,在安全協(xié)議分析方面,文獻[5]用符號執(zhí)行技術(shù)分析了TLS的X.509證書解析代碼;文獻[6]提出在對安全協(xié)議符號執(zhí)行時將密碼原語采用重寫技術(shù)進行處理;文獻[7]用密碼原語重寫的方式分析了WPA2的4次握手協(xié)議并發(fā)現(xiàn)了其中的脆弱性。這些工作采用符號執(zhí)行技術(shù)分析安全協(xié)議中小部分重要代碼邏輯,規(guī)避了代碼路徑空間爆炸和約束求解困難問題,但未解決將符號執(zhí)行技術(shù)用于整個安全協(xié)議代碼的分析時所面臨的這兩個主要問題。例如,文獻[8]僅分析PKCS#1 v1.5的簽名驗證邏輯,文獻[5]只對X.509的證書驗證代碼進行了符號執(zhí)行等。文獻[9]中對安全協(xié)議實施的安全性驗證問題進行了全面綜述。常規(guī)的軟件測試方法(如模糊測試)通常依賴人工專家經(jīng)驗對協(xié)議規(guī)范分析后定制模糊測試策略[10]。文獻[11]將TCP的狀態(tài)機信息用于對TCP實現(xiàn)的模糊測試中,用協(xié)議狀態(tài)機信息生成Fuzz策略。文獻[12-13]也都使用協(xié)議規(guī)范信息來減少協(xié)議程序的搜索空間。文獻[14]基于協(xié)議規(guī)范利用符號執(zhí)行技術(shù)來檢測協(xié)議實現(xiàn)的脆弱性。文獻[15-16]將模糊處理與符號執(zhí)行相結(jié)合,使用模糊測試來初步探索網(wǎng)絡(luò)協(xié)議,同時執(zhí)行符號執(zhí)行探索程序路徑和協(xié)議狀態(tài),比單獨使用兩項技術(shù)的代碼覆蓋率高。文獻[17]提出了用模型推斷指導協(xié)議的conclic執(zhí)行分析,方法的主要不足在于模型推斷和符號執(zhí)行交互迭代的過程十分耗時,且未對安全協(xié)議的密碼學模塊進行處理,仍可能面臨約束求解困難問題導致符號執(zhí)行無法繼續(xù)。

    本文方法在文獻[17]思路基礎(chǔ)上,結(jié)合了文獻[5-8]方法上的優(yōu)勢,既處理對安全協(xié)議程序符號執(zhí)行時路徑空間爆炸問題,又解決因密碼學邏輯導致的求解困難問題。該技術(shù)將模型學習與符號執(zhí)行技術(shù)相結(jié)合來探索協(xié)議代碼的執(zhí)行空間,同時將協(xié)議中的密碼原語代碼空間與協(xié)議交互邏輯的代碼執(zhí)行空間相分離,降低安全協(xié)議代碼規(guī)模,更具體地:① 采用模型學習算法獲取協(xié)議程序的Mealy machine信息;② 以協(xié)議程序的狀態(tài)機信息為基礎(chǔ),引導符號執(zhí)行來探索感興趣或重要狀態(tài)附近的代碼執(zhí)行空間;③ 在符號執(zhí)行探索代碼執(zhí)行空間時,繞過密碼原語相關(guān)函數(shù)邏輯,避免符號執(zhí)行引擎陷入復雜的密碼學相關(guān)代碼邏輯中。

    符號執(zhí)行被視為可以檢測深層次語義邏輯問題的分析技術(shù),其可以檢測深層代碼邏輯同時生成較小測試用例達到較大的代碼覆蓋率。但在實際分析復雜代碼時,通常受限于路徑空間爆炸和SMT約束求解難問題。這些技術(shù)局限性在安全協(xié)議代碼的邏輯分析上更為顯著。一方面,由于安全協(xié)議設(shè)計中并行交互執(zhí)行邏輯原本就復雜,交互邏輯中多伴隨協(xié)議狀態(tài)轉(zhuǎn)換,某些潛在的bug僅在特定的協(xié)議執(zhí)行狀態(tài)上下文中才能被觸發(fā),而符號執(zhí)行難以或更快速抵達這些狀態(tài)。另一方面,安全協(xié)議中的密碼學邏輯,增加了協(xié)議代碼執(zhí)行空間規(guī)模,尤其密碼學中的加解密及哈希算法中的混淆置換等邏輯,使協(xié)議程序執(zhí)行空間急劇膨脹。

    對于第一個問題,在協(xié)議代碼上采用符號執(zhí)行探索時,缺乏目標協(xié)議實現(xiàn)的協(xié)議狀態(tài)機信息,并未區(qū)分不同協(xié)議狀態(tài)。采用模型學習技術(shù)獲取目標協(xié)議程序的Mealy machine,以協(xié)議程序的Mealy machine信息引導符號執(zhí)行引擎進行協(xié)議執(zhí)行空間探索,從而可以靈活地切換感興趣或重要的協(xié)議狀態(tài)空間。對于第二個問題,基于完美密碼假設(shè)理論將密碼學函數(shù)的代碼邏輯與協(xié)議交互邏輯代碼空間相分離,符號執(zhí)行時不進入密碼學代碼空間。這樣既有效提高符號執(zhí)行的效率,又避免符號執(zhí)行陷入密碼學代碼邏輯或因混淆變換邏輯導致SMT無法求解得到符號公式。

    本文在SSH協(xié)議的開源項目Dropbear上實踐了該方法,并通過與Dropbear源碼中自帶的模糊測試套件進行了對比,表明本文方法在協(xié)議代碼的測試覆蓋率和發(fā)現(xiàn)錯誤點數(shù)量上均有一定提高。

    本文主要貢獻如下。

    (1)提出了協(xié)議程序的狀態(tài)驅(qū)動來指導協(xié)議源碼符號執(zhí)行的技術(shù)思路,可以有效解決對協(xié)議源碼做符號執(zhí)行分析時面臨的路徑空間爆炸問題。

    (2)基于完美密碼假設(shè)理論采用具體執(zhí)行和封裝策略處理安全協(xié)議代碼中的密碼學部分,可以避免在對安全協(xié)議代碼符號執(zhí)行時因密碼學邏輯造成的SMT求解困難問題。

    (3)在SSH開源實現(xiàn)Dropbear上成功實踐了本文方法的技術(shù)思路,并通過與Dropbear自帶的模糊測試套件的對比實驗表明了本文方法的有效性。

    2 基礎(chǔ)知識

    2.1 符號執(zhí)行

    符號執(zhí)行是一種用于為軟件生成高覆蓋率測試用例和發(fā)現(xiàn)程序中深層錯誤的技術(shù)。經(jīng)典符號執(zhí)行的基本思想是用符號變量替代具體值作為程序輸入,以模擬執(zhí)行方式為程序執(zhí)行空間中的每條執(zhí)行路徑生成輸入符號變量表達式作為路徑約束條件,通過SMT求解器對每條路徑(或感興趣路徑)的路徑約束進行求解來判斷其可達性。程序執(zhí)行時為程序維護一個當前執(zhí)行狀態(tài)和路徑約束,狀態(tài)內(nèi)容為變量到符號表達式的映射,路徑約束為符號表達式的無量詞一階邏輯公式。在程序執(zhí)行開始時,狀態(tài)為空集,路徑約束為true。在執(zhí)行過程中根據(jù)代碼邏輯不斷更新執(zhí)行狀態(tài)和路徑約束;最后通過SMT約束求解器求解路徑約束,若路徑對應的約束條件有解,則該條路徑可達,即存在具體輸入值可以使程序執(zhí)行該條路徑;反之,則該條路徑不可達。其基本思想是:如果程序在這些具體的輸入值上執(zhí)行,則將采用與符號執(zhí)行完全相同的路徑,并以相同的方式結(jié)束。

    路徑爆炸及約束求解瓶頸是符號執(zhí)行技術(shù)當前面臨的關(guān)鍵挑戰(zhàn)。在理論上程序執(zhí)行路徑的數(shù)量與代碼中的條件分支數(shù)量成指數(shù)級關(guān)系,難以在給定時間內(nèi)探索所有執(zhí)行空間;此外,因為SMT問題本身是被證明的NPC問題,盡管現(xiàn)代SMT求解器采用了技巧使SMT求解可行,但仍可能存在為每條執(zhí)行路徑生成的路徑約束無法求解的情況,導致符號執(zhí)行引擎無法終止和繼續(xù)探索其他路徑。在代碼量較多的大型程序中這些限制尤為突出,特別是安全協(xié)議實現(xiàn)這樣邏輯復雜的程序,在利用符號執(zhí)行分析時,由于協(xié)議自身復雜的執(zhí)行交互設(shè)計和密碼學相關(guān)函數(shù)的混淆變換邏輯,加劇了符號執(zhí)行引擎的負擔。

    2.2 模型學習

    為符號執(zhí)行提供協(xié)議的抽象信息來引導其對協(xié)議執(zhí)行空間的探索。本文借鑒Paul等[1]工作思路,通過模型學習算法抽取協(xié)議的Mealy machine作為協(xié)議執(zhí)行的高級狀態(tài)信息。本節(jié)介紹Mealy machine和經(jīng)典的狀態(tài)機學習框架。

    本節(jié)介紹經(jīng)典的模型學習框架MAT[2](如圖1所示)。MAT框架適用于軟件系統(tǒng)的黑盒學習模型,將目標系統(tǒng)的模型學習看作Learner和Teacher之間的query-response游戲。Learner通過向Teacher query來推斷狀態(tài)機模型。Teacher為被測軟件系統(tǒng),其擁有狀態(tài)機信息,故又稱其為SUL(system under learning)。Learner在學習初始階段,掌握輸入集合和輸出集合。

    圖1 MAT學習框架

    Figure 1 MAT framework

    Learner通過以下兩種類型的查詢來獲取狀態(tài)機信息。

    Membership query:Learner向Teacher查詢一個輸入序列對應的輸出序列,Teacher給出相應的輸出序列。如采用L*算法,從query得到的輸入序列/輸出序列信息,推斷出Mealy machine。

    3 方法

    3.1 方法概述

    本文方法主要探索如何在安全協(xié)議代碼上利用符號執(zhí)行方法進行高效的代碼空間探索,檢查協(xié)議代碼實現(xiàn)中存在的問題。由于安全協(xié)議代碼邏輯復雜,直接對安全協(xié)議代碼采用符號執(zhí)行分析是不可行的。為此采用了兩種技巧來提高符號執(zhí)行引擎在安全協(xié)議代碼探索時的效率:①為符號執(zhí)行引擎提供協(xié)議目標代碼的高級抽象信息Mealy machine作為指導,便于符號執(zhí)行引擎探索感興趣的協(xié)議狀態(tài)附近的執(zhí)行空間;②將安全協(xié)議代碼中與密碼學相關(guān)的代碼從符號執(zhí)行分析的代碼空間中去除,以減少密碼學中混淆變換引入的不必要的邏輯,從而降低協(xié)議代碼執(zhí)行空間的分支路徑。

    方案的整體思路如下。按照MAT框架,以協(xié)議二進制為學習目標(即Teacher/SUL),采用模型學習算法L*,學習出目標協(xié)議實現(xiàn)的Mealy machine;從Mealy machine中抽取從初始狀態(tài)到任意狀態(tài)的消息序列,以得到的消息序列集合近似代替Mealy machine的局部信息。對消息序列進行轉(zhuǎn)換,通過mapper程序?qū)⑵溆成錇閷嶋H的數(shù)據(jù)包序列;符號執(zhí)行引擎加載執(zhí)行協(xié)議代碼,以轉(zhuǎn)換后的數(shù)據(jù)包序列作為socket通信輸入,探索該消息序列下的安全協(xié)議代碼執(zhí)行空間。測試者可以自由選擇數(shù)據(jù)包序列并將感興趣的消息字段符號化進行定制化探索。在符號執(zhí)行引擎對協(xié)議代碼空間探索時,將密碼學相關(guān)函數(shù)套件進行屏蔽,可極大降低協(xié)議代碼復雜度,也可讓符號執(zhí)行引擎探索工作集中在協(xié)議代碼與環(huán)境交互時的協(xié)議執(zhí)行邏輯上。

    3.2 模型學習抽取Mealy machine

    本文根據(jù)MAT學習框架,以黑盒的方式學習目標協(xié)議程序的高級抽象信息Mealy machine。

    為了避免模型學習陷入無法終止或者變?yōu)椴淮_定性狀態(tài),需要保證學習的目標協(xié)議程序是一個確定性的程序,即在同一狀態(tài)下,對相同的報文數(shù)據(jù)輸入,輸出報文數(shù)據(jù)是相同的。換言之,在協(xié)議程序的初始狀態(tài)下,對于確定的報文序列,其輸出報文序列是確定的。這一點,通常需要將待學習的目標協(xié)議程序的初始化配置文件進行固定設(shè)置即可保證。本文的目標不包括檢測目標協(xié)議程序的配置是否存在問題,而關(guān)注于協(xié)議程序在其通用的初始化配置下與對等端的交互處理邏輯是否存在bug??梢酝ㄟ^重設(shè)配置,重復整個方案工作來探索某一具體配置問題。

    一個Mealy machine最根本的蘊含信息是輸入輸出序列,因為狀態(tài)是由輸入輸出序列確定的。在學習協(xié)議程序的Mealy machine前,需要先確定什么是抽象模型的輸入輸出集合。參考協(xié)議規(guī)范中狀態(tài)機描述方式,以消息類型來抽象表示一個具體的協(xié)議數(shù)據(jù)報文。自然地,一個輸入序列被抽象為輸入消息類型序列,一個輸出序列被抽象為輸出消息類型序列。根據(jù)協(xié)議規(guī)范,確定一個具體協(xié)議實現(xiàn)的輸入消息類型和輸出消息類型的有限集。

    對于每一個待分析的協(xié)議程序,需要一個轉(zhuǎn)換程序?qū)⒊橄蟮南㈩愋娃D(zhuǎn)換為具體的、程序可接收的消息報文。這個轉(zhuǎn)換程序可以通過協(xié)議程序交互的對等端代碼進行改造實現(xiàn),如在學習SSH協(xié)議服務(wù)端程序SSHD的Mealy machine信息時,通過改造SSH客戶端程序得到消息轉(zhuǎn)換程序。本文采用L*學習算法學習目標協(xié)議程序的Mealy machine信息,具體的學習步驟如下。

    ①學習程序通過決策生成輸入消息類型。

    ②轉(zhuǎn)換程序?qū)⑤斎胂㈩愋陀成錇榫唧w的輸入報文數(shù)據(jù),發(fā)送給目標協(xié)議程序。

    ③目標協(xié)議程序在接收輸入報文數(shù)據(jù)后生成輸出報文數(shù)據(jù)。

    ④轉(zhuǎn)換程序?qū)⑤敵鰣笪臄?shù)據(jù)映射為抽象的輸出消息類型。

    ⑤學習程序根據(jù)輸出消息類型更新狀態(tài)信息并生成新的輸入消息類型。

    ⑥迭代步驟②~步驟⑤,直到完成學習目標,即模型收斂或達到設(shè)定學習時間。

    ⑦對學習到的模型采用隨機抽樣檢查一致性,若存在不一致,則修正(refine)模型。

    3.3 狀態(tài)驅(qū)動:Mealy machine的抽象

    由3.1節(jié)描述的模型學習方法,本文可以采用黑盒交互的方式學習到待分析協(xié)議程序的Mealy machine信息。這里基于假設(shè)學習到的Mealy machine是一個包含(或稱為實踐上近似包含)被分析的協(xié)議程序完整狀態(tài)集合和消息集合的高級抽象結(jié)構(gòu),其中蘊含的協(xié)議狀態(tài)轉(zhuǎn)換關(guān)系是正確的。在此假設(shè)前提下,用其指導后續(xù)對協(xié)議程序代碼執(zhí)行空間的搜索分析。

    按照上文學習到的Mealy machine是一個六元組集合,直接用其指導符號執(zhí)行是難以實踐的。學習到的Mealy machine可以看作節(jié)點之間有并行邊存在的有向圖結(jié)構(gòu)。節(jié)點表示協(xié)議程序的抽象狀態(tài),邊代表狀態(tài)的變遷,而邊的屬性即input/output信息。為了將學習到的協(xié)議程序高級抽象信息Mealy machine作為安全協(xié)議代碼符號執(zhí)行時的指導信息,本文以狀態(tài)驅(qū)動集(state-driver set)來指導某一個具體協(xié)議狀態(tài)下的符號執(zhí)行。狀態(tài)驅(qū)動集定義如下。

    性質(zhì)2 在性質(zhì)1中,轉(zhuǎn)換關(guān)系均不重復出現(xiàn)。

    算法1 Mealy machine 狀態(tài)驅(qū)動集提取算法

    3.4 用狀態(tài)驅(qū)動指導符號執(zhí)行

    一個協(xié)議狀態(tài)的狀態(tài)驅(qū)動實質(zhì)是從協(xié)議程序的初始狀態(tài)到達該狀態(tài)的抽象消息序列。要將協(xié)議程序從初始的reset狀態(tài)引導到具體的協(xié)議狀態(tài)需要具體的數(shù)據(jù)包序列來觸發(fā)。這里可以重復利用模型學習時抽象消息到具體數(shù)據(jù)包的轉(zhuǎn)換器(Mapper)。轉(zhuǎn)換器可以根據(jù)協(xié)議規(guī)范,將一個狀態(tài)驅(qū)動中不同抽象消息拓展成具體的、協(xié)議程序可接收的數(shù)據(jù)包流。且因為Mealy machine是從協(xié)議程序中學習推斷得到的,這些具體的數(shù)據(jù)包按照狀態(tài)驅(qū)動中的順序可以依次被協(xié)議程序接收,并將協(xié)議程序的狀態(tài)調(diào)整到該狀態(tài)驅(qū)動對應的狀態(tài)上。

    采用L*算法獲取到目標協(xié)議程序的狀態(tài)機信息后,可以根據(jù)分析需要選擇一個或多個協(xié)議狀態(tài)對其采用符號執(zhí)行技術(shù)做分析。首先依據(jù)算法1獲取感興趣狀態(tài)的驅(qū)動集,通過將狀態(tài)驅(qū)動集中的狀態(tài)驅(qū)動映射到具體數(shù)據(jù)流后輸入?yún)f(xié)議程序中,調(diào)整協(xié)議程序達到相應的協(xié)議狀態(tài)。盡管一個狀態(tài)的不同狀態(tài)驅(qū)動都能夠?qū)f(xié)議程序引導到該協(xié)議狀態(tài),但不同狀態(tài)驅(qū)動引導的同一協(xié)議狀態(tài)的程序上下文會有差別。同一抽象狀態(tài)的不同上下文,也會造成符號執(zhí)行在分析過程中所覆蓋的路徑有所差異。僅一條狀態(tài)驅(qū)動不能完全覆蓋該協(xié)議狀態(tài)的執(zhí)行路徑。為此,在分析某一狀態(tài)時,多個協(xié)議程序在初始狀態(tài)下并行執(zhí)行,通過不同狀態(tài)驅(qū)動對應的packets flow來調(diào)整其符號執(zhí)行時的起始狀態(tài),如圖2所示。

    圖2 狀態(tài)驅(qū)動指導協(xié)議符號執(zhí)行

    Figure 2 Protocol symbol execution under the guidance of state-driver set

    因為有目標協(xié)議程序的Mealy machine的輔助信息,通過如圖2所示的操作過程,可以靈活選取某個協(xié)議狀態(tài),自由控制協(xié)議程序執(zhí)行到該狀態(tài)并以此為起點對協(xié)議程序進行符號執(zhí)行分析。讓符號執(zhí)行引擎的注意力集中在某個指定狀態(tài)上,避免了因協(xié)議程序路徑復雜,符號執(zhí)行分析時無法及時有效探索重要程序空間。在由state-driver調(diào)整好協(xié)議程序到目標狀態(tài)后,利用該狀態(tài)的state-explorer集來制定具體的符號執(zhí)行策略,即確定一個state-explorer對應的數(shù)據(jù)包中哪些域是symbolic域,哪些是conclic域。一個狀態(tài)的state-explorer對應協(xié)議程序在該狀態(tài)下可接收的一個消息類型,所以該方法的符號執(zhí)行策略是一次符號執(zhí)行且僅利用一個數(shù)據(jù)包為基礎(chǔ)語料庫,即符號執(zhí)行所探索的協(xié)議狀態(tài)機的深度僅為1,如圖3所示。一方面,深度為2的探索空間可以在對該條state-driver對應的下一個狀態(tài)探索時覆蓋,更大的深度依次類推;另一方面,將探索空間限定在該協(xié)議狀態(tài)的局部可以進一步為符號執(zhí)行引擎減輕工作負荷。

    3.5 密碼學代碼的處理

    上文介紹了在對安全協(xié)議代碼采用符號執(zhí)行時路徑空間爆炸問題的解決方案,即用狀態(tài)驅(qū)動有針對性地引導符號執(zhí)行的路徑空間探索,而非常規(guī)地扁平化地執(zhí)行分析。本節(jié)介紹在安全協(xié)議代碼符號執(zhí)行時面臨的另一個典型問題,即符號表達式約束求解難的解決方法。

    安全協(xié)議代碼中密碼學操作函數(shù)占據(jù)一定的比例,且屬于頻繁被調(diào)用的處理邏輯模塊。典型的安全協(xié)議(如TLS、SSH等)在會話協(xié)商完成之后,所有的消息都會有加解密和認證碼操作,用于確保通信數(shù)據(jù)的機密性和不可篡改性等。經(jīng)典的密碼算法會采取如擴散、混淆等技術(shù)對輸入進行處理,一般還要求具備雪崩效應,即對輸入的微小改變會導致輸出完全不同。但這些復雜的處理邏輯嚴重阻礙了協(xié)議代碼的符號執(zhí)行分析過程,主要原因有兩方面:第一,進入密碼算法中的迭代、混淆等處理邏輯內(nèi)部進行分析是復雜且收效甚微的,因為多數(shù)情況下安全協(xié)議中的密碼算法會采用NIST標準算法和成熟的密碼庫實現(xiàn),這些算法由草案成為標準的過程中經(jīng)過了密碼學家和學者的專業(yè)經(jīng)驗分析;第二,當符號化變量經(jīng)過這些密碼算法的處理代碼后,路徑約束表達式會變得很復雜,當前最先進的SMT求解器(如Z3、STP等)需消耗大量運算時間來求解這些表達式。本文嘗試對常用的加密算法(AES、chacha20等),以及哈希算法(SHA-1、MD5等)的C代碼實現(xiàn)采用符號執(zhí)行分析,實踐結(jié)果表明,產(chǎn)生的路徑約束表達式會讓SMT求解器消耗相當長時間而致使符號執(zhí)行引擎難以有效分析。以AES-128-CBC的加密函數(shù)為例,僅將輸入的1字節(jié)符號化后產(chǎn)生的符號表達式,STP求解器耗費數(shù)十分鐘才求解完畢。即便采用具體執(zhí)行的窮舉策略,數(shù)秒內(nèi)就可窮盡出該問題的求解,這與符號執(zhí)行的技術(shù)原理有關(guān)。

    為解決安全協(xié)議代碼中密碼學相關(guān)邏輯造成的路徑約束表達式復雜而難求解的問題,本文基于經(jīng)典協(xié)議形式化驗證理論中的Dolev-Yao模型來解決,即把Dolev-Yao敵手模型中的完美密碼假設(shè)理論拓展到密碼算法實現(xiàn)上。在分析時,本文將協(xié)議交互邏輯和密碼學模塊邏輯分離,并假設(shè)密碼學相關(guān)模塊的代碼實現(xiàn)是完美和值得信任的。盡管其中仍可能存在脆弱點,但這些問題的發(fā)掘需依賴較高的密碼學專業(yè)知識和經(jīng)驗,對密碼學相關(guān)代碼的安全性分析超出本文的研究范圍。當符號執(zhí)行分析到密碼學函數(shù)模塊時,根據(jù)協(xié)議狀態(tài)所處的不同階段分情況采取具體執(zhí)行和“繞過”兩種策略來分析密碼函數(shù)的代碼邏輯,以避免增加符號約束公式的求解復雜度。

    典型的安全協(xié)議通??梢苑譃闀拝f(xié)商和傳輸通信兩個階段,如圖4(a)所示。會話協(xié)商階段通信雙方除確定協(xié)議軟件和協(xié)議版本外,還會通過密鑰交換協(xié)商出后續(xù)傳輸通信階段所要使用的各種密碼套件和相應的密鑰。會話協(xié)商階段完成后,通信雙方或多方后續(xù)通信所使用的加解密、簽名、完整性校驗等各類密碼算法及密鑰信息已經(jīng)確定。在這之后的會話傳輸通信將在由會話協(xié)商階段產(chǎn)生的密鑰及密碼套件構(gòu)建的安全信道中進行。圖4(b)是相應的狀態(tài)轉(zhuǎn)換圖,此處省略了轉(zhuǎn)移條件信息。從初始狀態(tài)經(jīng)歷會話協(xié)商后到達會話協(xié)商完成狀態(tài),會話通信階段的各個狀態(tài)均在此狀態(tài)基礎(chǔ)上根據(jù)相應的轉(zhuǎn)移條件觸發(fā)到達。

    圖3 將state-driver和state-explorer組合對某一協(xié)議狀態(tài)符號執(zhí)行

    Figure 3 Analyze a protocol state by combining state-driver and state-explorer

    圖4 安全協(xié)議會話階段和狀態(tài)轉(zhuǎn)換

    Figure 4 Session phases and state transitions of a security protocol

    根據(jù)安全協(xié)議密碼算法應用的不同階段,對其處理有所不同。在會話協(xié)商階段的各個狀態(tài)探索時,輸入數(shù)據(jù)包序列中的密鑰參數(shù)字段,即密碼算法的輸入采用concrete execution策略;同時對非密鑰參數(shù)字段符號化來探索其他的路徑分支。采用具體值可以快速通過密碼算法代碼處理過程,而不至造成分析引擎停留在密碼函數(shù)處理邏輯的時間過長,更不會形成復雜的約束條件,concrete輸入即使經(jīng)過復雜處理過程的輸出仍是concrete值。對于會話通信階段,所有的數(shù)據(jù)都會被加密,若全都采用具體值分析,則僅能分析單一的執(zhí)行路徑,而采用符號執(zhí)行,則仍面臨約束表達式求解困難的問題。本文把一個密碼函數(shù)的符號執(zhí)行分析,改為對其替代封裝(wrapper)函數(shù)wrap_f的執(zhí)行。wrapper函數(shù)wrap_f與原密碼函數(shù)的輸入輸出具有相同的形式,但僅從代碼形式上的模擬并非執(zhí)行邏輯。圖5是加密函數(shù)cipher的wrapper函數(shù)wrap_cipher示例,經(jīng)過模擬函數(shù)wrap_cipher后得到的密文和明文是相同的,僅會對傳入?yún)?shù)做一些基本的合規(guī)性檢測。對密碼函數(shù)的輸入長度與輸出長度不等的情況,采用簡單的截取或填充的方式處理。符號變量sym_var經(jīng)過密碼函數(shù)后變?yōu)?sym_var),在對應的path condtion符號公式求解時,會被替換成wrap_f(sym_var)。由于函數(shù)是一個復雜函數(shù),而wrap_f是一個簡單函數(shù),這樣的替換會極大降低SMT求解器的工作負擔。

    圖5 密碼模塊模擬函數(shù)示例

    Figure 5 An example of a cipher simulation function

    4 實驗評估:在Dropbear上的實踐

    為了評估方法在安全協(xié)議實現(xiàn)分析方面的有效性,本文選取了被廣泛使用的安全協(xié)議SSH以及其開源項目實現(xiàn)Dropbear源碼作為分析測試對象。SSH協(xié)議被設(shè)計用于在不受信任的網(wǎng)絡(luò)中實現(xiàn)安全遠程登錄和其他安全網(wǎng)絡(luò)服務(wù),具體協(xié)議細節(jié)可參考RFC4251[18]。該協(xié)議由傳輸協(xié)議、用戶身份驗證協(xié)議和連接協(xié)議3個組件構(gòu)成。傳輸協(xié)議主要任務(wù)是在不安全網(wǎng)絡(luò)上提供安全通道,包括通信的機密性和完整性、可選的壓縮方案以及客戶端對服務(wù)端的身份認證方式等;用戶身份驗證協(xié)議規(guī)定了服務(wù)端對客戶端登錄用戶身份認證的機制;連接協(xié)議用于在安全的(機密性和完整性)和認證授權(quán)過的通道上以多路復用的方式傳輸應用數(shù)據(jù)。SSH協(xié)議被視為當前服務(wù)器遠程配置和運維的首選方案。Dropbear是輕量級的SSH協(xié)議開源項目,支持POSIX平臺且內(nèi)存占用量小,可以作為Openssh替代方案,當前被廣泛部署在嵌入式設(shè)備上。本文選取SSH協(xié)議和Dropbear作為評估測試對象的主要原因有兩點:第一,SSH協(xié)議是應用廣泛的典型安全協(xié)議,協(xié)議的復雜度適中且具有眾多開源實現(xiàn),便于研究分析;第二,Dropbear是C代碼開源項目,代碼量適中,適合后續(xù)采用基于源碼的符號執(zhí)行KLEE來作分析,且Dropbear項目中自帶基于libFuzzer庫的模糊測試用例,便于測試方案的評估對比。

    4.1 對Dropbear進行模型學習

    方案實施的第一階段是模型學習,即利用MAT模型學習框架對DropbearSSH進行模型學習,推導其Mealy machine模型。這部分工作主要基于Paul等[1]SSH模型學習的開源工作并有少許細節(jié)上的改動。實驗設(shè)置如下:被測對象為在vmware虛擬機 ubuntu16.04系統(tǒng)中編譯運行Dropbear v2020.80版本服務(wù)端程序;Learner運行在4 GB內(nèi)存、處理器為Intel core i5-8500. Ubuntu16.04系統(tǒng)的虛擬機中。

    在采用modellearning技術(shù)對Dropbear的模型之前,需要先確定輸入集合。本文沿用文獻[1]的策略把SSH消息類型作為輸入集合。同時,為了簡化狀態(tài)機規(guī)模便于后續(xù)符號執(zhí)行工作,本文對輸入集合進行了篩選,如去除了IGNORE、UNIMPL、DEBUG等。表1列出了實驗時采用的輸入消息集合、對應的消息類型,有關(guān)這些消息類型的詳細說明可參考SSH的RFC文檔[18]和文獻[1]。

    最終確定的狀態(tài)數(shù)量為25個。如圖6所示,紅色軌跡標注了常規(guī)測試套件的協(xié)議測試路徑,將其稱為主干路徑。主干路徑的狀態(tài)遷移如下。

    表1 Dropbear的模型學習輸入/輸出字母表

    Figure 6 Learnedstatemachine (Mealy machine) model forDropbear

    經(jīng)過簡單的分析,可以辨別出狀態(tài)編號對應的實際狀態(tài)含義。如s0為初始化狀態(tài),s4為密鑰協(xié)商完成狀態(tài),s6為用戶通過認證后的狀態(tài)等。學習得出的Mealy machine中包含的主干路徑為常規(guī)測試套件的測試路徑,因此可以得出初步的定性結(jié)論:學習得到的Mealy machine信息來指導符號執(zhí)行,在理論上不低于常規(guī)測試套件的代碼覆蓋率。

    4.2 Dropbear源碼的符號執(zhí)行

    在得到Dropbear程序的Mealy machine信息后,可以選取感興趣的協(xié)議狀態(tài),用算法1獲取該狀態(tài)的狀態(tài)驅(qū)動集。表2列出了Dropbear的各抽象狀態(tài)對應的狀態(tài)驅(qū)動集數(shù)量,即驅(qū)動集的基數(shù)。

    表2 Dropbear各狀態(tài)對應的狀態(tài)驅(qū)動數(shù)(狀態(tài)驅(qū)動集基數(shù))

    以s15狀態(tài)為例,根據(jù)算法1得到的狀態(tài)驅(qū)動集共有54條狀態(tài)驅(qū)動,如圖7所示。從表1中可以看出,一部分狀態(tài)的狀態(tài)驅(qū)動數(shù)量達到幾百條甚至近千條的規(guī)模,如狀態(tài)s24的狀態(tài)驅(qū)動數(shù)量達972條。這意味著有972種不同的輸入可以讓Dropbear服務(wù)端程序從初始狀態(tài)到達狀態(tài)s24。Mealy machine僅是協(xié)議程序的高級抽象信息,到達一個狀態(tài)的路徑數(shù)量達幾百條,當對應到協(xié)議程序的執(zhí)行空間時,執(zhí)行路徑的分支數(shù)量會急劇增加。在沒有狀態(tài)信息指導的情況下,符號執(zhí)行引擎很難快速分析這些路徑分支。

    圖7 狀態(tài)s15狀態(tài)驅(qū)動集

    Figure 7 The state driver set of state s15

    狀態(tài)驅(qū)動到具體數(shù)據(jù)包序列的轉(zhuǎn)換器mapper重用了模型學習階段的轉(zhuǎn)換模塊,調(diào)用了手工改寫的Paramiko庫。符號執(zhí)行工具采用了基于llvm的開源分析引擎KLEE,它可以對源碼編譯后的llvm字節(jié)碼進行符號執(zhí)行。由于KLEE不支持socket函數(shù)建模,但可以支持文件的靜態(tài)讀寫。為此,在實驗時socket相關(guān)的函數(shù)都采用文件讀寫操作進行了替代。

    為了說明本文方法的有效性,對比實驗對象為Dropbear自帶的fuzz測試模塊fuzzer-preauth。主要對比SSH傳輸協(xié)議階段代碼的分析效率,主要的評價指標為代碼覆蓋率和檢出錯誤率。其中,代碼覆蓋率采用Clang基于源碼的覆蓋率功能(-fprofile-instr-generate -fcoverage-mapping選項)測算結(jié)果,以執(zhí)行的源代碼行數(shù)占比作為代碼覆蓋率的計算方式,并去除為測試添加的代碼及覆蓋率0%的代碼文件。檢測的目標代碼錯誤為人工設(shè)計并添加到分析對象代碼中的代碼問題。添加錯誤的位置平均分布在傳輸協(xié)議階段相關(guān)的4個消息處理例程(recv_msg_kexinit,recv_msg_ kexdh_init, recv_msg_newkeys, recv_msg_service_ request)以及公共代碼中,各部分各4個,即共有20個代碼錯誤,具體實驗結(jié)果如表3所示。

    由于本文方法在NEWKEYS消息之前采用具體合法值輸入密碼學函數(shù)代碼中,NEWKEYS之后采用繞過策略,而Libfuzzer測試套件未對此有特殊區(qū)分,因此將Dropbear源碼中的libtocrypt庫源碼不計入源碼覆蓋率的計算中時,LibFuzzer測試套件的代碼覆蓋率上下降了約4%;而state-driver方式在不含libtocrypt庫時代碼覆蓋率優(yōu)于代碼覆蓋率。在檢測出錯誤方面,Libfuzzer測試套件可以檢測出13個設(shè)計的錯誤,而State-driver方式可以覆蓋到這些錯誤的執(zhí)行點。這與20個錯誤的構(gòu)造位置有關(guān),在設(shè)計這些錯誤時特意選取了常規(guī)方式不容易到達的分支執(zhí)行點上,而這正是符號執(zhí)行技術(shù)的優(yōu)勢所在。對比實驗未采用Mealy machine信息指引的常規(guī)執(zhí)行策略,經(jīng)實踐發(fā)現(xiàn),即使KLEE這樣先進的符號執(zhí)行引擎在處理類似Dropbear的安全協(xié)議源碼時也不能直接適用,最終會因系統(tǒng)資源耗盡而終止。

    表3 方法與自帶測試套件對比

    5 結(jié)束語

    符號執(zhí)行在對安全協(xié)議程序分析時,存在路徑SMT求解困難等兩個顯著問題,這也是符號執(zhí)行技術(shù)對大型軟件程序分析所面臨的局限性。本文方法不改進通用符號執(zhí)行技術(shù),而從安全協(xié)議程序的自身特點出發(fā),提出了一種對安全協(xié)議代碼空間進行符號執(zhí)行的技術(shù)思路。通過將模型學習得到的狀態(tài)機信息轉(zhuǎn)換為狀態(tài)驅(qū)動集,以狀態(tài)驅(qū)動集指導符號執(zhí)行引擎對協(xié)議程序的某一狀態(tài)進行符號執(zhí)行分析,可以靈活高效地控制協(xié)議程序空間的路徑探索;基于Dolev-Yao模型的完美密碼假設(shè)理論,將密碼學函數(shù)邏輯空間與協(xié)議交互邏輯空間分離,可以避免因密碼學邏輯的復雜性造成路徑約束求解困難問題。

    [1] FITER?U-BRO?TEAN P. Model learning and model checking of SSH implementations[C]//Proceedings of the 24th ACM SIGSOFT International SPIN Symposium on Model Checking of Software. 2017.

    [2] ANGLUIN D. Learning regular sets from queries and counterexamples[J]. Information and Computation, 1987, 75(2): 87-106.

    [3] GUO J, GU C, CHEN X, et al. Model learning and model checking of IPSec implementations for internet of things[J]. IEEE Access, 2019, 7: 171322-171332.

    [4] FITERAU-BROSTEAN P, JONSSON B, MERGET R, et al. Analysis of DTLS implementations using protocol state fuzzing[C]//29th {USENIX} Security Symposium ({USENIX} Security 20). 2020: 2523-2540.

    [5] CHAU S Y, CHOWDHURY O, HOQUE E, et al. Symcerts: practical symbolic execution for exposing noncompliance in X.509 certificate validation implementations[C]//2017 IEEE Symposium on Security and Privacy (SP). 2017: 503-520.

    [6] CORIN R, MANZANO F A. Efficient symbolic execution for analysing cryptographic protocol implementations[C]//International Symposium on Engineering Secure Software and Systems. 2011: 58-72.

    [7] VANHOEF M, PIESSENS F. Symbolic execution of security protocol implementations: handling cryptographic primitives[C]//12th {USENIX} Workshop on Offensive Technologies ({WOOT} 18). 2018.

    [8] CHAU S Y, YAHYAZADEH M, CHOWDHURY O, et al. Analyzing semantic correctness with symbolic execution: a case study on pkcs# 1 v1. 5 signature verification[C]//Network and Distributed Systems Security (NDSS) Symposium 2019. 2019.

    [9] 孟博, 魯金鈿, 王德軍,等. 安全協(xié)議實施安全性分析綜述[J]. 山東大學學報:理學版, 2018, 53(1): 1-18.

    MENG B, LU J T, WANG D J, et al. Survey of security analysis of security protocol implementations[J]. Journal of Shandong University (Natural Science), 2018, 53(1): 1-18.

    [10] AICHERNIG B K, MOSTOWSKI W, MOUSAVI M R, et al. Model learning and model-based testing[M]//Machine Learning for Dynamic Software Analysis: Potentials and Limits. 2018: 74-100.

    [11] JERO S, HOQUE M E, CHOFFNES D R, et al. Automated attack discovery in TCP congestion control using a model-guided approach[C]//NDSS. 2018.

    [12] JERO S, LEE H, NITA-ROTARU C. Leveraging state information for automated attack discovery in transport protocol implementations[C]//2015 45th Annual IEEE/IFIP International Conference on Dependable Systems and Networks. 2015: 1-12.

    [13] WALLS R J, BRUN Y, LIBERATORE M, et al. Discovering specification violations in networked software systems[C]//2015 IEEE 26th International Symposium on Software Reliability Engineering (ISSRE). 2015: 496-506.

    [14] SONG J S, CADAR C, PIETZUCH P. SymbexNet: testing network protocol implementations with symbolic execution and rule-based specifications[J]. IEEE Transactions on Software Engineering, 2014, 40(7): 695-709.

    [15] ALSHMRANY K, CORDEIRO L. Finding security vulnerabilities in network protocol implementations[J]. arXiv preprint arXiv: 2001.09592, 2020.

    [16] 謝肖飛, 李曉紅, 陳翔, 等.基于符號執(zhí)行與模糊測試的混合測試方法[J].軟件學報, 2019, 30(10): 3071-3089.

    XIE X F, LI X H, CHEN X, et al. Hybrid testing based on symbolic execution and fuzzing[J]. Journal of Software, 2019, 30(10): 3071-3089.

    [17] CHO C Y, BABIC D, POOSANKAM P, et al. MACE: model-inference-assisted concolic exploration for protocol and vulnerability discovery[C]//USENIX Security Symposium. 2011: 139.

    [18] YLONEN T, LONVICK C. The secure shell (SSH) protocol architecture[S]. RFC4251, Internet Engineering Task Force, 2006.

    Security protocol code analysis method combining model learning and symbolic execution

    ZHANG Xieli1,2, ZHU Yuefei1,2, GU Chunxiang1,2, CHEN Xi1,2

    1. State Key Laboratory of Mathematical Engineering and Advanced Computing, Zhengzhou 450001, China 2.Henan Key Laboratory of Network Cryptography Technology, Zhengzhou 450002, China

    Symbolic execution can comprehensively analyze program execution space in theory, but it is not feasible in practice for large programs like security protocols, due to the explosion of path space and the limitation of difficulty in solving path constraints. According to the characteristics of security protocol program, a method to guide the symbolic execution of security protocol code by using protocol state machine information obtained from model learning was proposed. At the same time, by separating cryptographic logic from protocol interaction logic, the problem that path constraints cannot be solved caused by the complexity of cryptographic logic is avoided. The feasibility of the method is demonstrated by the practice on the SSH open source project Dropbear. Compared with Dropbear's test suite, the proposed method has advantages in code coverage and error point discovery.

    model learning, symbolic execution, security protocol code, state-driver

    TP311

    A

    10.11959/j.issn.2096?109x.2021067

    2021?02?19;

    2021?03?29

    顧純祥,gcxiang520@aliyun.com

    國家重點研發(fā)計劃(2019QY1302)

    TheNational Key R&D Program of China (2019QY1302)

    張協(xié)力, 祝躍飛, 顧純祥, 等. 模型學習與符號執(zhí)行結(jié)合的安全協(xié)議代碼分析技術(shù)[J]. 網(wǎng)絡(luò)與信息安全學報, 2021, 7(5): 93-104.

    ZHANG X L, ZHU Y F, GU C X, et al. Security protocol code analysis method combining model learning and symbolic execution[J]. Chinese Journal of Network and Information Security, 2021, 7(5): 93-104.

    張協(xié)力(1992?),男,陜西興平人,數(shù)學工程與先進計算國家重點實驗室博士生,主要研究方向為網(wǎng)絡(luò)安全協(xié)議。

    顧純祥(1976?),男,安徽霍山人,博士,數(shù)學工程與先進計算國家重點實驗室教授,主要研究方向為網(wǎng)絡(luò)安全、密碼學。

    祝躍飛(1962?),男,浙江蘭溪人,博士,數(shù)學工程與先進計算國家重點實驗室教授、博士生導師,主要研究方向為網(wǎng)絡(luò)安全、密碼學。

    陳熹(1988?),男,湖北建始人,碩士,數(shù)學工程與先進計算國家重點實驗室講師,主要研究方向為網(wǎng)絡(luò)安全、密碼學。

    猜你喜歡
    密碼學代碼邏輯
    刑事印證證明準確達成的邏輯反思
    法律方法(2022年2期)2022-10-20 06:44:24
    邏輯
    創(chuàng)新的邏輯
    圖靈獎獲得者、美國國家工程院院士馬丁·愛德華·海爾曼:我們正處于密鑰學革命前夕
    創(chuàng)世代碼
    動漫星空(2018年11期)2018-10-26 02:24:02
    創(chuàng)世代碼
    動漫星空(2018年2期)2018-10-26 02:11:00
    創(chuàng)世代碼
    動漫星空(2018年9期)2018-10-26 01:16:48
    創(chuàng)世代碼
    動漫星空(2018年5期)2018-10-26 01:15:02
    密碼學課程教學中的“破”與“立”
    計算機教育(2018年3期)2018-04-02 01:24:40
    女人買買買的神邏輯
    37°女人(2017年11期)2017-11-14 20:27:40
    女的被弄到高潮叫床怎么办| 女的被弄到高潮叫床怎么办| 亚洲七黄色美女视频| 亚洲综合色惰| 人妻夜夜爽99麻豆av| 欧美潮喷喷水| 国产精品伦人一区二区| or卡值多少钱| 亚洲成人精品中文字幕电影| 伦理电影大哥的女人| 成熟少妇高潮喷水视频| 99久久无色码亚洲精品果冻| www.色视频.com| 人妻夜夜爽99麻豆av| 免费一级毛片在线播放高清视频| 国产麻豆成人av免费视频| 舔av片在线| 亚洲自拍偷在线| 九草在线视频观看| 亚洲美女搞黄在线观看| 99riav亚洲国产免费| 亚洲av免费在线观看| 国产精品久久久久久亚洲av鲁大| av在线亚洲专区| 亚洲图色成人| 亚洲四区av| 色综合站精品国产| 亚洲精品成人久久久久久| 夫妻性生交免费视频一级片| 精品国内亚洲2022精品成人| 午夜激情欧美在线| 91在线精品国自产拍蜜月| 高清日韩中文字幕在线| 天天躁夜夜躁狠狠久久av| 久久久久久久久久成人| 一卡2卡三卡四卡精品乱码亚洲| videossex国产| 长腿黑丝高跟| 色哟哟·www| 国产一区二区在线观看日韩| 三级经典国产精品| 国产成人精品一,二区 | 天天一区二区日本电影三级| 精品久久久久久成人av| 午夜免费激情av| 青春草亚洲视频在线观看| 欧美bdsm另类| 永久网站在线| 少妇的逼水好多| 免费黄网站久久成人精品| 1024手机看黄色片| 91在线精品国自产拍蜜月| 亚洲一级一片aⅴ在线观看| 久久99精品国语久久久| 在线a可以看的网站| 欧美一级a爱片免费观看看| 青春草国产在线视频 | 久久九九热精品免费| 偷拍熟女少妇极品色| 少妇被粗大猛烈的视频| 1000部很黄的大片| 国产毛片a区久久久久| 国产精品麻豆人妻色哟哟久久 | 国产精品一区二区三区四区免费观看| 欧美一级a爱片免费观看看| 欧美极品一区二区三区四区| 午夜爱爱视频在线播放| 69人妻影院| 一边亲一边摸免费视频| 一区福利在线观看| 天天躁夜夜躁狠狠久久av| 国产精品.久久久| 十八禁国产超污无遮挡网站| 久久精品国产99精品国产亚洲性色| 给我免费播放毛片高清在线观看| 国产高清有码在线观看视频| 黑人高潮一二区| 亚洲自拍偷在线| 不卡一级毛片| 欧美+日韩+精品| 午夜精品一区二区三区免费看| 成人亚洲精品av一区二区| 熟女人妻精品中文字幕| 午夜福利在线观看吧| 精品久久久久久久久av| 国产成人精品久久久久久| 久久久欧美国产精品| 天堂网av新在线| 亚洲高清免费不卡视频| 国产蜜桃级精品一区二区三区| 日本成人三级电影网站| 亚洲国产日韩欧美精品在线观看| 真实男女啪啪啪动态图| 午夜福利成人在线免费观看| 最近的中文字幕免费完整| 一级毛片我不卡| 搡老妇女老女人老熟妇| 亚洲av成人av| 色综合亚洲欧美另类图片| 国产三级在线视频| 男的添女的下面高潮视频| 九九在线视频观看精品| 欧美人与善性xxx| 国产伦精品一区二区三区四那| 日本三级黄在线观看| 国产亚洲欧美98| 99在线视频只有这里精品首页| 国产黄片视频在线免费观看| 99在线人妻在线中文字幕| 男女下面进入的视频免费午夜| 国产蜜桃级精品一区二区三区| av免费观看日本| 在线a可以看的网站| 欧美潮喷喷水| 亚洲国产精品久久男人天堂| 亚洲人与动物交配视频| 一本一本综合久久| 亚洲国产精品成人综合色| 观看美女的网站| 欧美性猛交╳xxx乱大交人| 亚洲内射少妇av| av免费在线看不卡| 久久亚洲精品不卡| 欧美日韩精品成人综合77777| 久久久成人免费电影| 黄片wwwwww| 久久99蜜桃精品久久| 人人妻人人澡欧美一区二区| 亚洲成人久久性| 国产免费一级a男人的天堂| 性欧美人与动物交配| 国产亚洲欧美98| 成熟少妇高潮喷水视频| 蜜桃久久精品国产亚洲av| 人妻久久中文字幕网| 韩国av在线不卡| 狂野欧美白嫩少妇大欣赏| 乱系列少妇在线播放| 午夜精品在线福利| 美女cb高潮喷水在线观看| 午夜免费激情av| 在线观看午夜福利视频| 男女视频在线观看网站免费| 亚洲精品影视一区二区三区av| 亚洲熟妇中文字幕五十中出| 日日撸夜夜添| 亚洲欧美成人综合另类久久久 | 人妻制服诱惑在线中文字幕| 黄色日韩在线| 国产精品一区二区性色av| ponron亚洲| 边亲边吃奶的免费视频| 国产高潮美女av| 国产三级中文精品| 国产极品精品免费视频能看的| 亚洲成人av在线免费| 夫妻性生交免费视频一级片| 久久久久久久久久成人| 国产伦一二天堂av在线观看| 美女被艹到高潮喷水动态| 丝袜喷水一区| 男女那种视频在线观看| 久久人妻av系列| 黄色欧美视频在线观看| 中文在线观看免费www的网站| 国产91av在线免费观看| 成年免费大片在线观看| 热99re8久久精品国产| 国产人妻一区二区三区在| 六月丁香七月| 又粗又硬又长又爽又黄的视频 | 狂野欧美激情性xxxx在线观看| 国产视频首页在线观看| 久久久精品欧美日韩精品| 中文字幕熟女人妻在线| 亚洲aⅴ乱码一区二区在线播放| 嫩草影院入口| 99久久无色码亚洲精品果冻| 日韩av在线大香蕉| 一边摸一边抽搐一进一小说| 午夜精品在线福利| 美女 人体艺术 gogo| 一级二级三级毛片免费看| 成人毛片60女人毛片免费| 欧美xxxx性猛交bbbb| 午夜老司机福利剧场| 我的老师免费观看完整版| 日韩欧美在线乱码| 精品人妻熟女av久视频| 99久久精品热视频| 免费电影在线观看免费观看| 亚洲美女视频黄频| 亚洲综合色惰| 免费不卡的大黄色大毛片视频在线观看 | 中文字幕人妻熟人妻熟丝袜美| kizo精华| 一卡2卡三卡四卡精品乱码亚洲| 亚洲久久久久久中文字幕| 国产久久久一区二区三区| 国产av一区在线观看免费| 久久久久久久亚洲中文字幕| 午夜久久久久精精品| 日本一本二区三区精品| 欧美人与善性xxx| 久久久久久九九精品二区国产| 亚洲真实伦在线观看| 亚洲精品粉嫩美女一区| 卡戴珊不雅视频在线播放| 禁无遮挡网站| 婷婷色av中文字幕| 国产v大片淫在线免费观看| 人妻少妇偷人精品九色| 国产亚洲av片在线观看秒播厂 | 久久久久久久久久久免费av| 欧美精品一区二区大全| av免费观看日本| 床上黄色一级片| 亚洲欧美日韩高清专用| 国产日韩欧美在线精品| 网址你懂的国产日韩在线| 国产精品综合久久久久久久免费| 又粗又爽又猛毛片免费看| 中文欧美无线码| 久久精品夜夜夜夜夜久久蜜豆| 久久99热这里只有精品18| 国产精品国产三级国产av玫瑰| 长腿黑丝高跟| 欧美一区二区亚洲| 校园人妻丝袜中文字幕| 国产精品久久久久久av不卡| 插阴视频在线观看视频| 精品一区二区三区视频在线| 麻豆精品久久久久久蜜桃| 中出人妻视频一区二区| 99久久人妻综合| 午夜精品一区二区三区免费看| 亚洲人成网站在线观看播放| 免费看光身美女| 国语自产精品视频在线第100页| 国内精品美女久久久久久| 91午夜精品亚洲一区二区三区| 久久精品国产自在天天线| 国产亚洲91精品色在线| 超碰av人人做人人爽久久| 亚洲精品久久国产高清桃花| 日本一二三区视频观看| 人妻系列 视频| 在线播放国产精品三级| 国产激情偷乱视频一区二区| 亚洲欧美日韩东京热| 亚洲一区二区三区色噜噜| 国产 一区精品| 亚州av有码| 搡老妇女老女人老熟妇| 99久国产av精品国产电影| 精品无人区乱码1区二区| 内地一区二区视频在线| 国产伦精品一区二区三区四那| 国产探花极品一区二区| 欧美日韩综合久久久久久| 麻豆久久精品国产亚洲av| 3wmmmm亚洲av在线观看| 国产高清视频在线观看网站| 免费看美女性在线毛片视频| 久久午夜福利片| 成人av在线播放网站| 欧美在线一区亚洲| 亚洲va在线va天堂va国产| 国产中年淑女户外野战色| 最近手机中文字幕大全| 国产精品嫩草影院av在线观看| 两个人视频免费观看高清| 国模一区二区三区四区视频| 亚洲欧美中文字幕日韩二区| 晚上一个人看的免费电影| 天堂网av新在线| 日韩国内少妇激情av| 不卡一级毛片| 哪个播放器可以免费观看大片| 一边亲一边摸免费视频| 狠狠狠狠99中文字幕| 麻豆成人午夜福利视频| 人妻久久中文字幕网| 午夜精品一区二区三区免费看| 国产成人一区二区在线| 夜夜看夜夜爽夜夜摸| 日本与韩国留学比较| 爱豆传媒免费全集在线观看| 超碰av人人做人人爽久久| 老司机影院成人| 国产精品蜜桃在线观看 | 日韩,欧美,国产一区二区三区 | 精品不卡国产一区二区三区| 2022亚洲国产成人精品| av免费在线看不卡| 亚洲高清免费不卡视频| 国产av一区在线观看免费| 黄色一级大片看看| 亚洲国产精品sss在线观看| 亚洲熟妇中文字幕五十中出| 亚洲aⅴ乱码一区二区在线播放| 日本撒尿小便嘘嘘汇集6| 日韩视频在线欧美| 成人亚洲欧美一区二区av| 精华霜和精华液先用哪个| 久久久久久大精品| 精品一区二区三区视频在线| 国产在视频线在精品| 一个人看的www免费观看视频| 神马国产精品三级电影在线观看| 菩萨蛮人人尽说江南好唐韦庄 | 久久久久久久久久成人| 国产午夜福利久久久久久| 久久精品国产亚洲av香蕉五月| 乱人视频在线观看| 亚洲欧美中文字幕日韩二区| 午夜爱爱视频在线播放| 欧美另类亚洲清纯唯美| 成人永久免费在线观看视频| 男女啪啪激烈高潮av片| 麻豆国产97在线/欧美| 中国美女看黄片| 国产精品蜜桃在线观看 | 夫妻性生交免费视频一级片| 日韩中字成人| 亚洲aⅴ乱码一区二区在线播放| 婷婷色av中文字幕| 欧美高清成人免费视频www| 我的老师免费观看完整版| 91麻豆精品激情在线观看国产| 日日摸夜夜添夜夜爱| 国产美女午夜福利| 久久久a久久爽久久v久久| 婷婷亚洲欧美| 日韩欧美精品v在线| АⅤ资源中文在线天堂| 亚洲va在线va天堂va国产| 欧美极品一区二区三区四区| 国产成人一区二区在线| 我的老师免费观看完整版| 免费av毛片视频| 亚洲七黄色美女视频| 少妇熟女欧美另类| 国产伦精品一区二区三区四那| 久久精品91蜜桃| 日韩欧美一区二区三区在线观看| 亚洲国产精品成人综合色| 午夜精品国产一区二区电影 | 国内精品宾馆在线| 国产综合懂色| 国产精品一区二区三区四区免费观看| 亚洲欧美日韩无卡精品| 美女xxoo啪啪120秒动态图| 少妇熟女欧美另类| a级一级毛片免费在线观看| 99久久久亚洲精品蜜臀av| 在线免费观看的www视频| 久久综合国产亚洲精品| 精品一区二区三区视频在线| 如何舔出高潮| 三级男女做爰猛烈吃奶摸视频| 国产私拍福利视频在线观看| 日本一二三区视频观看| 亚洲在线观看片| 麻豆久久精品国产亚洲av| 久久精品影院6| 国产中年淑女户外野战色| 国产精品99久久久久久久久| 精品人妻视频免费看| 欧美一区二区亚洲| 亚洲成a人片在线一区二区| 18+在线观看网站| 欧美又色又爽又黄视频| 欧美性猛交黑人性爽| 韩国av在线不卡| 国产精品人妻久久久久久| 22中文网久久字幕| 变态另类丝袜制服| 熟女人妻精品中文字幕| 国产av麻豆久久久久久久| 亚洲电影在线观看av| 我的女老师完整版在线观看| videossex国产| av黄色大香蕉| 女同久久另类99精品国产91| 菩萨蛮人人尽说江南好唐韦庄 | 欧美+亚洲+日韩+国产| 亚洲国产欧美人成| 午夜爱爱视频在线播放| 在线播放无遮挡| 国产一区二区在线观看日韩| 欧美激情在线99| 国产在视频线在精品| 亚洲中文字幕日韩| 亚洲熟妇中文字幕五十中出| 亚洲成人久久爱视频| 久久久久久久久中文| 国产精品福利在线免费观看| 国产黄色小视频在线观看| 日韩一区二区三区影片| 久久久久久久亚洲中文字幕| 在线观看免费视频日本深夜| www日本黄色视频网| 床上黄色一级片| 国产精品美女特级片免费视频播放器| 欧美潮喷喷水| 国产爱豆传媒在线观看| 亚州av有码| 久久久久网色| 成人午夜精彩视频在线观看| 亚洲精品自拍成人| 中文精品一卡2卡3卡4更新| 成人无遮挡网站| 蜜桃久久精品国产亚洲av| 免费看光身美女| av免费观看日本| 狠狠狠狠99中文字幕| 麻豆av噜噜一区二区三区| 日韩在线高清观看一区二区三区| 国产精品综合久久久久久久免费| 亚洲精品色激情综合| 一本久久精品| 日韩欧美国产在线观看| 欧美日韩综合久久久久久| 丰满的人妻完整版| 一边摸一边抽搐一进一小说| 中文字幕制服av| 少妇熟女aⅴ在线视频| 成人三级黄色视频| 偷拍熟女少妇极品色| 成人鲁丝片一二三区免费| 日韩国内少妇激情av| 在线免费观看的www视频| 18禁裸乳无遮挡免费网站照片| 亚洲人成网站高清观看| 成人特级黄色片久久久久久久| 免费电影在线观看免费观看| 在线观看午夜福利视频| av黄色大香蕉| av专区在线播放| 国内精品美女久久久久久| 有码 亚洲区| 日韩 亚洲 欧美在线| 国产伦精品一区二区三区四那| 我的老师免费观看完整版| 99在线人妻在线中文字幕| 国产精品久久久久久精品电影小说 | 日日干狠狠操夜夜爽| 久久久久久久久久久丰满| 人体艺术视频欧美日本| 精品午夜福利在线看| 日韩亚洲欧美综合| 日韩在线高清观看一区二区三区| avwww免费| 在线免费十八禁| 欧美激情久久久久久爽电影| 高清日韩中文字幕在线| 国产美女午夜福利| 亚洲经典国产精华液单| 亚州av有码| 美女 人体艺术 gogo| 麻豆久久精品国产亚洲av| 欧美日本亚洲视频在线播放| 国产一区二区三区在线臀色熟女| 内地一区二区视频在线| 亚洲一区二区三区色噜噜| 黄色视频,在线免费观看| 亚洲av电影不卡..在线观看| 精品熟女少妇av免费看| 嫩草影院精品99| 久久久久久久久久久丰满| 国产乱人视频| 亚洲av第一区精品v没综合| 国产在视频线在精品| 亚洲精品久久久久久婷婷小说 | 日本黄色视频三级网站网址| 最近视频中文字幕2019在线8| 精品99又大又爽又粗少妇毛片| 精品一区二区三区人妻视频| 我要搜黄色片| 国产亚洲av片在线观看秒播厂 | 日韩欧美一区二区三区在线观看| 久久久色成人| 亚洲国产精品合色在线| 日韩三级伦理在线观看| 婷婷色av中文字幕| 永久网站在线| 听说在线观看完整版免费高清| 直男gayav资源| 亚洲精品亚洲一区二区| 美女内射精品一级片tv| 天堂av国产一区二区熟女人妻| 18禁黄网站禁片免费观看直播| 99久久精品国产国产毛片| 九草在线视频观看| 九色成人免费人妻av| 国产单亲对白刺激| 身体一侧抽搐| 日韩av在线大香蕉| 波多野结衣巨乳人妻| 亚洲综合色惰| 国产日本99.免费观看| 欧美日韩综合久久久久久| 色综合站精品国产| 日本三级黄在线观看| 欧美+亚洲+日韩+国产| 国产精品三级大全| 啦啦啦啦在线视频资源| 日本黄色视频三级网站网址| 在线观看美女被高潮喷水网站| 亚洲成人久久爱视频| 免费观看精品视频网站| 97人妻精品一区二区三区麻豆| 成人特级av手机在线观看| 极品教师在线视频| 一进一出抽搐gif免费好疼| 99久久无色码亚洲精品果冻| 波多野结衣巨乳人妻| 国产成人91sexporn| 夜夜夜夜夜久久久久| 身体一侧抽搐| 男女视频在线观看网站免费| 人人妻人人看人人澡| 免费电影在线观看免费观看| 啦啦啦啦在线视频资源| 国产午夜福利久久久久久| 亚洲av第一区精品v没综合| 级片在线观看| 亚洲欧美精品专区久久| 一本一本综合久久| 亚洲色图av天堂| 欧美性感艳星| 欧美潮喷喷水| 99久久中文字幕三级久久日本| 久久草成人影院| 又粗又爽又猛毛片免费看| 日韩欧美精品免费久久| 欧美不卡视频在线免费观看| 成人午夜高清在线视频| 国产午夜精品论理片| 床上黄色一级片| 黄色欧美视频在线观看| 菩萨蛮人人尽说江南好唐韦庄 | av国产免费在线观看| 可以在线观看的亚洲视频| 国内精品美女久久久久久| 亚洲精品久久国产高清桃花| 成人高潮视频无遮挡免费网站| 国国产精品蜜臀av免费| 精品久久久噜噜| 国产私拍福利视频在线观看| 成熟少妇高潮喷水视频| 99国产极品粉嫩在线观看| 老司机影院成人| 国语自产精品视频在线第100页| 一级毛片电影观看 | 黄色视频,在线免费观看| 国产精品电影一区二区三区| 国产男人的电影天堂91| 丝袜喷水一区| 又粗又硬又长又爽又黄的视频 | 亚洲无线观看免费| АⅤ资源中文在线天堂| av在线老鸭窝| 国产高清激情床上av| 男人狂女人下面高潮的视频| 午夜老司机福利剧场| 在线播放无遮挡| 国产精品日韩av在线免费观看| 国产综合懂色| av在线观看视频网站免费| 乱系列少妇在线播放| 22中文网久久字幕| 最近的中文字幕免费完整| 中文字幕av成人在线电影| 日韩 亚洲 欧美在线| 国产女主播在线喷水免费视频网站 | 一本久久精品| 黄色日韩在线| 亚洲欧美日韩卡通动漫| 欧美+日韩+精品| 综合色丁香网| 亚洲在久久综合| 日韩成人av中文字幕在线观看| 日韩成人伦理影院| 淫秽高清视频在线观看| 国产午夜精品一二区理论片| 国国产精品蜜臀av免费| 亚洲天堂国产精品一区在线| 久久精品国产清高在天天线| 精品人妻一区二区三区麻豆| 99久久精品热视频| 久久99热6这里只有精品| 久久精品人妻少妇| 午夜激情福利司机影院| 亚洲精品自拍成人| 热99re8久久精品国产| 午夜福利高清视频| 熟女人妻精品中文字幕| ponron亚洲| 可以在线观看的亚洲视频| 又粗又爽又猛毛片免费看| 一进一出抽搐动态| 精品人妻偷拍中文字幕| 可以在线观看的亚洲视频| 大型黄色视频在线免费观看| 国产真实乱freesex| 99久久久亚洲精品蜜臀av| 一进一出抽搐动态| 精品人妻偷拍中文字幕| 午夜激情欧美在线| 国产精品久久久久久亚洲av鲁大| 精品无人区乱码1区二区| 免费看a级黄色片| 男人狂女人下面高潮的视频|