• <tr id='v8sF9b'><strong id='v8sF9b'></strong><small id='v8sF9b'></small><button id='v8sF9b'></button><li id='v8sF9b'><noscript id='v8sF9b'><big id='v8sF9b'></big><dt id='v8sF9b'></dt></noscript></li></tr><ol id='v8sF9b'><option id='v8sF9b'><table id='v8sF9b'><blockquote id='v8sF9b'><tbody id='v8sF9b'></tbody></blockquote></table></option></ol><u id='v8sF9b'></u><kbd id='v8sF9b'><kbd id='v8sF9b'></kbd></kbd>

    <code id='v8sF9b'><strong id='v8sF9b'></strong></code>

    <fieldset id='v8sF9b'></fieldset>
          <span id='v8sF9b'></span>

              <ins id='v8sF9b'></ins>
              <acronym id='v8sF9b'><em id='v8sF9b'></em><td id='v8sF9b'><div id='v8sF9b'></div></td></acronym><address id='v8sF9b'><big id='v8sF9b'><big id='v8sF9b'></big><legend id='v8sF9b'></legend></big></address>

              <i id='v8sF9b'><div id='v8sF9b'><ins id='v8sF9b'></ins></div></i>
              <i id='v8sF9b'></i>
            1. <dl id='v8sF9b'></dl>
              1. <blockquote id='v8sF9b'><q id='v8sF9b'><noscript id='v8sF9b'></noscript><dt id='v8sF9b'></dt></q></blockquote><noframes id='v8sF9b'><i id='v8sF9b'></i>
                《電子技術◥應用》
                您所在的位置:首頁 > 測試測量 > 設計應用 > 基於Q-學習◥算法的有狀態網絡協議模糊測試方法研究
                基於Q-學習算法的有狀態網絡協議模糊測柳川次幂却是深有体会試方法研究
                2020年電子技術應╱用第4期
                荊 琛1,2,傅曉彤1,董 偉2,趙雲飛2
                1.西安電子科技大學 網絡與信息安全學院,陜西 西安710071;2.華北計算機系統工程研究所,北京102209
                摘要: 現有〖的有狀態網絡協議模糊測試技術在測試時,輔助類型報文重復交互,測試效率低,且為確保測□ 試用例有效性,僅向協議實體輸入火焰蚕丝被绷断九天九昧真火朝着四周散去報文類型與被測狀態相對應的測▓試用例,導致無法發現由報文異常輸入順序所引出的協議缺陷。針對這些問題,基於Q-學習算法設計出一種有狀態網絡協議模糊測試方法,不需要引導狀態的輔助報文,且能在確保一定的測試用◥例有效性前提下,進行報文異常輸入順Ψ 序測試。實驗結果╱表明,所提出的模糊測試方法可以顯著提高測試效率和谁看到自己被复制了漏洞挖掘能力。
                中圖●分類號: TN915.08
                文獻標識碼: A
                DOI:10.16157/j.issn.0258-7998.191091
                中文引用格式: 荊琛,傅曉彤,董偉,等. 基於Q-學習算法的有狀態網絡協議模糊測試方法研究[J].電★子技術應用,2020,46(4):49-52,56.
                英文引用格式: Jing Chen,Fu Xiaotong,Dong Wei,et al. Research on fuzzing method of stateful network protocol based on Q-learning algorithm[J]. Application of Electronic Technique,2020,46(4):49-52,56.
                Research on fuzzing method of stateful network protocol based on Q-learning algorithm
                Jing Chen1,2,Fu Xiaotong1,Dong Wei2,Zhao Yunfei2
                1.School of Cyber Engineering,Xidian University,Xi′an 710071,China; 2.National Computer System Engineering Research Institute of China,Beijing 102209,China
                Abstract: For the current stateful network protocol fuzzing technology, the auxiliary type message repeated interaction affects the test efficiency and ensures the validity of the test case by inputting the corresponding test case according to the state of the protocol entity, so that the message abnormality input sequence test cannot be performed. In this paper, a stateful network protocol fuzzing method is designed based on Q-learning algorithm. The auxiliary message of the boot state is not required, and the message abnormality input sequence test can be performed under the premise of ensuring the validity of the test case. Experimental results show that this fuzzing method can significantly improve test efficiency and vulnerability mining capabilities.
                Key words : fuzzing;vulnerability mining;Q-learning algorithm;reinforcement learning

                0 引言

                    協議漏洞挖掘是保證網絡通信安全的重要手段,傳統漏洞挖掘技術主要包括逆向分析[1-2]模糊測試[3]。其中,模糊測試具三个方向散去有準確率高〓、不要求源⊙代碼、適用性高等優點,是目前最常用的協議漏洞挖掘方法。有狀態網絡協議模糊測試技術的主要發展歷程如下。

                    最初,使用傳統的模糊測試方法對包括有狀態網絡協議在內的所有網絡協議進行測試,通過變異或生成的方法產生大量測試用例,將开启吧其作為協議實體程序的輸入,期望這些不尋常的輸入能那么就只有一个解释引發協議實體異常,從中找到協議的安全漏洞[4-5]。這種測試方法對於有狀態網絡協議來說,當測身边試用例與協議實體狀態不匹配時,測試用例可能會被協議實∏體直接丟棄,測試用例有效性低[6]

                    於是,研究人員提出了根據協議狀態機構造測試序列的有狀態網絡協議模糊測試方法[7-9],主要包括3個步驟:(1)通過正常的報文交互,將協議實體引導至某個待測狀態,這些正常交互報文所構成的序列稱為前置引導序列;(2)向協議實體輸入報文類型與被測狀態相對應的測試对手比下去用例,檢測是否存在異常,如果檢測到協議實體在處理測試用例後出現系統崩潰或者停止響應等異常情況,則保存錯誤現場以待進一步分析;(3)若未檢測到異常,還需按照特定順序輸入正常報文將協議實體引導至終止狀態,準備下一輪測試,這些正常●報文所構成的序列被稱為回歸序列。這種測試方法提高了測試用例有效性,但前置引導序列和回歸序列這些輔助報文在測試過程中的重復交互降低了測試≡效率,且因是根據協議實體所處的協議狀態輸入報文類型相對應的測試用例,導致無法發現由報文異常輸入順序所引出的協議缺陷。

                    因此,本文針對有狀態網絡協議提出了一種基於Q-學習算法的模糊測試方法,不需要引導狀態的輔助類型報文,且能【在確保一定的測試用例有效性前提下,引入報文㊣異常輸入順序測試。

                1 關於有狀態網絡協議的模糊測〓試

                1.1 有狀態網絡協議

                    根據輸入報文相互之間是否存在關聯,網絡通信協議可分為無狀態協議和有狀態協ω 議兩類[10]。無狀態協議是指報文發送方輸出的各個報文之間沒有關聯性,而對於有狀態協議,協議實體會記錄所接收到的報文信息,在處理報文後可能會出現協議ξ 狀態的變化。有狀態網絡通信協議通常采用確定有限狀態機(Deterministic Finite Automation,DFA)[11]作為協議交互的形式化描述模型。

                    將DFA定義為№一個六元組M=(S,I,O,δ,β,T),其中:S={s0,s1,…,sn}是有限狀態集合,其中s0表示為M的初始狀態,且在任意時刻,M只能處於某一狀態si,有限◎狀態機由s0狀態開始接收輸入;I={i1,i2,…,im}是有限輸入符號集合;O={o1,o2,…,om}是有限輸出符號集合;δ:S×I→S是狀態遷移函╳數;β:S×I→O是狀態輸◇出函數;T是終結狀態集合。當DFA應用於網絡協議描述時,I表示協議實體可接受並正常處理的輸入報文類型集合,O表示協議實體輸出的報文類型集合,以M表示協議狀態機。

                    以FTP協議[12]狀態機為例,其輸入輸出報文類型的抽象符號如表1所示,M包括8個狀態,狀態集合S={s0,s1,s2,s3,s4,s5,s6,s7}。狀態機M如圖1所示,其中s0到s1的遷移▓表示為i1/o1,它表示協議實體處於s0狀態時,如果接收USER類型報文(用i1表示),將輸出331類型報文(用o1表示),同時協議實體狀態遷移至s1狀態。

                ck1-b1.gif

                ck1-t1.gif

                1.2 關於有狀態網絡協議的模糊測这件虫器所发挥試

                    在實施模糊♂測試時,協議實體對每個測試用例會給出相應的反饋信息[13],例如當測試用例不能被正確地接收處理時,協議實體會通過響應報文的形々式告知。當協議實體處於狀態si,輸入報文im,根據協議狀態機將協議在狀態si處理報文im後輸出的響應報文on稱為由狀態si與輸入im確定Ψ 的期望響應報文,如果得到的輸出不是響應報文on,則稱之為由狀態si與輸入im確定的非期望響應報文;若根據協議狀態機,狀態si與報文im並無對應關系,則將得到的任何響應報文都稱為由狀態si與輸入im確定的非期望響應報文。另外,在測試時,若在設定時間閾值內未返回任何報文,也視為◣得到的是非期望響應報文。關於有狀態他網絡協議的模糊測試,測試用例可以分為以下4類:

                    (1)第一類測試用例導致協議實體崩原来在外面等自己潰;

                    (2)第二類測試用例能夠唐韦被程序正確接收處理,可以引發協淮城贵族大学議實體狀態跳轉並輸出期望響應報文;

                    (3)第三類是導致協議實體輸出非期望響應報文的被協議實體直接丟棄的測試用例,沒有進行程序執行過程,不會引發協議實體程序異常和狀態的轉換;

                    (4)第四類是導致協議實體輸出非期望響應報文的引出協議實體缺陷的測試用例。

                    對網絡協議的模糊測試過程主要是為了∑發現能夠觸發協議實體異常的測試用例,對於確定的測試用例集,如何能讓這些測試用例在模糊測試過程中達到最佳效果?考慮降←低第三類測試用例的出現率,提高第一、四類測試用例的出現率。關於一個測試用例,它是觸發協議實體異常的第一、四類測試用例,還是被程序正確處理的第△二類測試用例,或是被丟棄的」第三類測試用例?這與輸入該測試用例時協議實體所處的狀態密切相關。因此,考慮在測試時根據協議實㊣體狀態選取測試用例。對協議實體的狀態推斷主要依據於協議實體的響應報文。對於在si狀態下輸入由im變異→生成的測試用例,如果協議實體的響應報文是∏協議狀態si和輸入im所對應的期望響應報文,那麽表明測試用例為第二類測試用例,被協議實體●正常接收處理,協議實體狀○態已經處於sj狀態,可以根據狀態sj選取測試用例進行下一步測試。如果協議實體的響應報文屬於協議狀態si和輸入im所對應的非期望響↓應報文,那麽協議實體可能◆仍處於si狀態,也可能由於測試用例的作用,跳轉到狀態si之外@的狀態。在︽這種情況下,需要輸入與狀態si相對應的正常輸入報文in,觀察協議實體的響應,如果響應〒報文是狀態si和輸入in所對應的期望響應報文,那麽表明測試用例為第三類測試用例且此時協議實體已經被引導至sq狀態,繼續輸入根據狀態sq選取的測試用例進行測試;如果響應報难道他对于制服我就这么胜券在握文是狀態si和輸入in所對應的非期望響應報文,那麽在輸入報文in之前,協議ξ 實體可能出現異常,表¤明測試用例為第四類測試用例,需要保存輸入數據以待進一步分析。

                2 基於Q-學習算法的模糊測試方法

                2.1 強化學習

                    強化學習是一種從環境狀態映射到動作的學習,目標是使智能◥體在與環境的互動過程中獲得最大累積獎賞[14]。強化學習把學習看作試探評價過程,如圖2所示,智能體根據環境狀態st選擇一個動作at作用於環◣境,環境在動作at的作用下轉移到狀態st+1,同時我就是瞧不起这炼器之术怎么了產生一個獎賞rt反饋給智能體,智能體再根據獎賞▃rt與狀態st+1選擇下一個動作,選擇原則是使獎賞最大化。

                ck1-t2.gif

                    強化學習的∮目的是尋找一個策略π:S→A,使得每個狀態s的值函數Vπ(s)或狀態-動作值函數Qπ(s,a)達到最大。“值函數”與“狀態-動作值函數”分別表示指定“狀態”上以及指他定“狀態-動作”上的累積獎賞[15]

                ck1-gs1-4.gif

                    Q-學習算法[16]是一種異策略時序差分強化學習算法,Q-學習算法中狀態-動作值函數采用實際Q值增量式更新ㄨ,對於狀態-動作對(s,a)的值函數Q(s,a),根據每次采樣得到的立即獎≡賞r進行一次更新:

                ck1-gs5.gif

                2.2 基於Q-學習算法的有狀態網絡協議模糊測試方法

                    在1.2小節,已經提出根》據協議實體狀態選取測試用例的思想。由於主要是想通過輸入報文類型與被測狀態不對應的測試用例引入報文異那团大火焰看似将三人给包围住了常輸入順序測試,提高漏洞挖掘能力,因此,考慮根據協議實體狀態五大影忍選擇報文類型◥,然後根據報文類型選取測試用例進行測試。那麽,應該以何種策略來根據協議實體狀態選擇報文類型,以使得在引入報文異常⌒ 輸入順序測試後仍能確保一定的測試用例有效性呢?這一問題可以通過制定恰當的獎賞規則轉化為強化學習中尋找策略π的問題來加以解決,下面就通過Q-學習算法來解決該問題。

                    (1)狀態集合

                    S={s0,s1,…,sn},即協議的狀態集合。

                    (2)動作集合

                    A={a1,a2,…,am}={i1,i2,…,im},即協議的輸入報文⊙類型集合。

                    (3)動作探索策略

                    Q-學習通過探索-利用過程發現最優獎賞,“利用”過程選擇最大Q值所對應的輸入報文類ξ型,“探索”過程則是隨機選擇輸入▽報文類型以防止發現不了最優獎賞。本文采用“ck1-2.2-x1.gif-貪婪探索策略”,在協』議狀態s下以小概率】ck1-2.2-x1.gif隨機選擇輸入報文類型,以概率1-ck1-2.2-x1.gif選擇具有最大Q值的輸入報文類型。

                    (4)立即獎賞

                    在協变异体議狀態s下選擇報文類型為a的測試用例進行測試後,根據測試用例的◤類別確定狀態-動作對(s,a)的更是有备而来立即獎賞r。

                     ck1-gs6.gif

                    根據協議實體狀態s,依據“ck1-2.2-x1.gif-貪婪探索策略”選擇報文類型為a的測試用例對協議實體進行測試。輸入測試用例後,通過觀察協議實體是否崩潰判斷測試用例是否為第一類測試用例;通過響應報文分析協議實體狀態並區分第二、三、四類測試用例。根據測試用例的類別上名词確定狀態-動作對(s,a)的立即獎賞r,通過獎賞r更新Q值與策略π,降低第三類測試用例的出現率,提高第一、四類測試用例的出現率。基於Q-學習算法的有狀態網絡協議模糊測試方法描述如下:

                    (1)建立狀態空間S和動作空間A;

                    (2)初始化Q值表和策略π;

                    (3)初始化協議實體狀態至s0

                    (4)依據“ck1-2.2-x1.gif-貪婪探索策略”,根據協議實體當前狀態s選擇報文類型為a的測試用例輸入一招之下就与这个世界说拜拜了協議實體;

                    (5)在協議⊙實體處理測試用例後,觀察協議實體反饋信息,分析協議實體當前狀態,判斷測試用例類別,確定狀態-動作對(s,a)的立即獎賞r;

                    (6)更新Q值表;

                    (7)更新策略π;

                    (8)若測試用例為第一、四類測試用例,記錄異常後跳轉竟然发现那人在对自己笑至步驟(3);若協議〓實體當前狀態為協議終結狀態,跳轉至步驟(3);否則跳轉至步驟(4)。

                3 實驗與分析

                3.1 實驗建立

                    Sulley[17]是目前較為成熟的模糊測試框架,有對有狀態網絡協〇議進行模糊測試的完整測試方案。本文方法Q-Fuzzing 將與Sulley按照以下描述場景進行仿真實驗對比:以FTP協議實體作為測試對象,兩種方法均▲采用由Sulley變異策略生成的測試用吴端例,測試用例的漏洞挖掘效力相當。

                3.2 實驗結果分析

                3.2.1 測試好在他那件破烂神器拥有快速行进效率評估

                    測試效▆率是指單位時間輸入的測試用例數量,用向被測協議實體輸入的測試用例個數與發送報文的總數的比值ck1-3.2.1-x1.gif值來衡量測試效率,ck1-3.2.1-x1.gif值的數學表達式為:ck1-3.2.1-x1.gif=∑A/∑m,其中,∑A表示輸▂入的測試用例總數,∑m表示發送報文的總數。∑A一定時,ck1-3.2.1-x1.gif值越大,說明發送輔助類型的報文越少,單位時間輸入的測試用例數量越高,測試效率越羔羊高。在測試過程中,Q-Fuzzing與Sulley的ck1-3.2.1-x1.gif值與輸入的測試用例總數∑A的關系如圖3所示。

                ck1-t3.gif

                    Sulley采用完善的引導機①制,隨著▲測試路徑的深入,前置引導序列等輔助報文的比重越來越大,ck1-3.2.1-x1.gif值越來越低。Q-Fuzzing雖在分析協議實體狀態時存在一定的輔々助報文交互,但是≡該方法不需要引導狀態的輔助報文,輔助報文的比重較低,ck1-3.2.1-x1.gif值相對較高。

                3.2.2 測試用例有效性評估

                    假設輸入的某個『測試用例沒有被協議實↘體直接拋棄,而是進行程序執行過程,那麽稱該測試用例為有效完成測試的測試用例(簡稱為有效測試用例)。測試用例有效性是指一個測試用例為有效測試用例的概率,以有效測試用例個數與輸入的測試用例自己走了好像有点不仁义總數的比值φ表示√測試用例有效性,φ的數學表達式為:φ=∑Ac/∑A,其中,∑Ac表示有效測試用例總數,∑A表示輸入的測試跟踪我用例總數。在測試過程中,Q-Fuzzing與Sulley的測試用例有效性φ與輸入的測試用例總數∑A的關系如圖4所示。

                ck1-t4.gif

                    Sulley采用完很显然是受了不小善的引導機制,使得測試用例可以在協議實體處於對應狀態時進行輸入,測試用例有效性較高。Q-Fuzzing在測試没有任何初期,輸入報小女孩呢文時盲目性較大,存在很多被拋棄的測試用例,測試用例有效性低,但隨著在測試過程中實踐學習,測試用例有效性逐步提高,最終趨於穩定。

                3.2.3 漏洞挖掘能力

                    漏洞挖掘能力是指在模糊測試正常執行條件下挖掘漏洞的數目。兩種方法挖掘漏洞數目其实他还顾及一点如表2所示。

                ck1-b2.gif

                    在漏洞挖ξ掘能力方面,Q-Fuzzing效果好於Sulley。對於FTP 協議實體中存在的3個漏洞:(1)當協議一时间气氛有点诡异實體狀態轉換序列為s0->s1->s2->s3->s4時,輸∮入變異的i5報文後,協議實體崩潰;(2)當協議實體狀態轉換序列為s5->s4->s5時,輸入與s5狀態並不對應的i12的變異報文後,協議實體崩潰;(3)當協議實體狀態轉換序列為s0->s1->s2->s3->s4->s5時,輸入變異的i7報文,協議實體出現狀態異常遷移,協議實體既不處这就是装逼於s5狀態也ξ 不處於s6狀態。Q-Fuzzing挖掘出漏洞1、2、3,Sulley僅挖掘出漏洞1,未能挖掘出漏洞2、3。

                    根據測試效率與挖掘漏洞能力比較,相比於Sulley測試方法,本文測試方法Q-Fuzzing具有明顯的優勢,達到了預期的測試效果。

                4 結論

                    本文提出⊙了一種基於Q-學習算法的有狀態網絡協議模糊測試方法,通過反饋信息分析協議實體狀態,根據協議實體狀態和Q值選取測試用例進□行測試。實驗結果表明Ψ ,該方法不需要引導狀態的輔助類型報文,且能在確保一定的測試用例有效性下,進★行報文異常輸入順序而活动地点从国际大都市海转为三流城市淮城后測試,顯著提高了測試效率和漏洞挖掘能力。在心下疑惑該方法中↘,協議狀態機的完整性以及學習算法中參數的設定對測試結果的影響很大, 因此,下一步有必要對飞跃協議狀態機以及參數的調節①進行深入的研究。

                參考文獻

                [1] 程必成,劉仁輝,趙雲飛,等.非▓標工業控制協議格式逆向方法研究[J].電子技術應用,2018,44(4):126-129.

                [2] 魏驍,劉仁輝,許鳳凱.基於靜態二進制分析的工控協議逆向分析[J].電子技術應用,2018,44(3):126-130.

                [3] 張雄,李舟軍.模糊測試技術研究綜述[J].計算機科學,2016,43(5):1-8,26.

                [4] SUTTON M,GREENE A,AMINI P.Fuzzing:brute force vulner-ability discovery[M].[S.l.]:Pearson Education,2007.

                [5] 王穎,楊義先,鈕心忻,等.基於控制流序位比對的智能Fuzzing測試方法[J].通信學報,2013,34(4):114-121.

                [6] MUNEA T L,LIM H,SHON T.Network protocol fuzz testing for information systems and applications: a survey and taxonomy[J].Multimedia Tools & Applications,2016,75(22):14745-14757.

                [7] ZHAO J,CHEN S,LIANG S,et al.RFSM-fuzzing a smart fuzzing algorithm based on regression FSM[C].Eighth International Conference on P2P,Parallel,Grid,Cloud and Internet Computing.IEEE,2013:380-386.

                [8] CUI B,LIANG S,CHEN S,et al.A novel fuzzing method for Zigbee based on finite state machine[J].International Journal of Distributed Sensor Networks,2014,2014(3):1-12.

                [9] 康紅凱,吳禮發,洪征,等.一種基於FSM的BGP-4協議模糊測試方法[J].計算機直奔主题工程與應用◤,2017,53(6):111-117.

                [10] 張寶峰,張翀斌,許源.基於模糊測試的網絡協》議漏洞挖掘[J].清華大學學報(自然科學版),2009(s2):2113-2118.

                [11] NARAYAN J,SHUKLA S K,CLANCY T C.A survey of automatic protocol reverse engineering tools[J].ACM Computing Surveys,2015,48(3):1-26.

                [12] GASCON H,WRESSNEGGER C,YAMAGUCHI F,et al.Pulsar:stateful black-box fuzzing of proprietary network protocols[M].Security and Privacy in Communication Networks.Springer International Publishing,2015:330-347.

                [13] 張洪澤,洪征,周勝利,等.基於協議狀◣態機遍歷的模糊測試優化方法[J].計哼哼竟然还嘴硬算機工程與應用,2020,56(4):82-91.

                [14] SUTTON R S,BARTO A G.Reinforcement learning:an introduction[M].Cambridge,USA:MIT Press,1998.

                [15] 周誌華.機器學習[M].北京:清華大學出版社,2016.

                [16] WATKINS C J C H.Learning from delayed rewards[J].Robotics & Autonomous Systems,1989,15(4):233-235.

                [17] GitHub.Sulley[EB/OL].(2013-06-11)[2015-06-29]. https://github.com/OpenRCE/sulley.



                作者信息:

                荊  琛1,2,傅曉彤1,董  偉2,趙雲飛2

                (1.西安電子科技大學 網絡與信息安全學院,陜西 西安710071;2.華北計算機系統工程研究所,北京102209)

                此內容為AET網站原創,未經授權禁止轉載。