本發(fā)明涉及智能家居設(shè)備的測(cè)試技術(shù)領(lǐng)域,尤其涉及一種智能家居設(shè)備的通信協(xié)議測(cè)試方法及系統(tǒng)。
背景技術(shù):
隨著物聯(lián)網(wǎng)、大數(shù)據(jù)分析等技術(shù)的快速發(fā)展,智能家居設(shè)備應(yīng)用越來(lái)越廣泛,給日常生活帶來(lái)極大便利。與此同時(shí),作為與消費(fèi)者生活緊密相關(guān)的消費(fèi)領(lǐng)域,其所面臨的安全威脅也越來(lái)越嚴(yán)峻,針對(duì)智能家居的網(wǎng)絡(luò)攻擊種類不斷更新、事件層出不窮,通信協(xié)議作為智能家居設(shè)備互聯(lián)互通的重要環(huán)節(jié),其安全性測(cè)試已經(jīng)引起了業(yè)界越來(lái)越廣泛的關(guān)注。
通信協(xié)議作為智能家居節(jié)點(diǎn)之間完成通信或服務(wù)所必須遵循的規(guī)則和約定,是智能家居領(lǐng)域的關(guān)鍵實(shí)現(xiàn)技術(shù)之一,是保證數(shù)據(jù)在節(jié)點(diǎn)之間穩(wěn)定安全傳輸?shù)幕A(chǔ)。由于數(shù)據(jù)傳播、節(jié)點(diǎn)計(jì)算、存儲(chǔ)、供電能力有限等特點(diǎn),網(wǎng)絡(luò)傳輸過(guò)程中面臨數(shù)據(jù)監(jiān)聽(tīng)、中間人攻擊、節(jié)點(diǎn)身份偽造、拒絕服務(wù)攻擊等各類威脅。然而,協(xié)議在設(shè)計(jì)和實(shí)現(xiàn)的過(guò)程中,由于安全考慮不足、理解有偏差或編碼失誤等原因,很容易造成紕漏。因此,檢測(cè)通信協(xié)議的安全性,發(fā)現(xiàn)協(xié)議潛在的安全問(wèn)題,對(duì)于提高智能家居應(yīng)用的安全性具有非常重要的意義。
Fuzzing是一種常用的網(wǎng)絡(luò)協(xié)議測(cè)試技術(shù),通過(guò)不斷生成大量畸形數(shù)據(jù)來(lái)檢驗(yàn)網(wǎng)絡(luò)協(xié)議等測(cè)試對(duì)象中存在于輸入驗(yàn)證和應(yīng)用邏輯中的安全脆弱點(diǎn),具有自動(dòng)化程度高、適用性廣等特點(diǎn)。通過(guò)Fuzzing測(cè)試可以快速有效地發(fā)現(xiàn)協(xié)議或程序的漏洞,近年來(lái)已被開(kāi)發(fā)商和安全研究者應(yīng)用推廣,統(tǒng)計(jì)數(shù)據(jù)表明大約20%~25%的安全漏洞是通過(guò)Fuzzing測(cè)試發(fā)現(xiàn)的。
一般來(lái)說(shuō)Fuzzing測(cè)試包括協(xié)議解析、測(cè)試用例生成、測(cè)試用例執(zhí)行、異常捕獲和定位四個(gè)步驟。協(xié)議解析是通過(guò)網(wǎng)絡(luò)數(shù)據(jù)流量分析或程序二進(jìn)制動(dòng)態(tài)跟蹤分析等方法對(duì)協(xié)議實(shí)現(xiàn)進(jìn)行逆向,獲取包括協(xié)議的層次、字段結(jié)構(gòu)、會(huì)話過(guò)程等在內(nèi)的協(xié)議結(jié)構(gòu)信息的;測(cè)試用例生成階段需要依據(jù)協(xié)議解析階段整理出來(lái)的字段結(jié)構(gòu),采用變異的方式生成畸形測(cè)試用例;測(cè)試用例執(zhí)行階段將生成的變異用例發(fā)向被測(cè)對(duì)象并執(zhí)行;異常捕獲和定位階段是指通過(guò)多種探測(cè)手段發(fā)現(xiàn)由測(cè)試用例出發(fā)的異常,并獲取保存異常相關(guān)信息輔助異常定位。
由于實(shí)際應(yīng)用中各步驟所采用的具體方法各異,不同F(xiàn)uzzing測(cè)試的執(zhí)行效率也會(huì)有很大區(qū)別。生成測(cè)試用例對(duì)目標(biāo)對(duì)象執(zhí)行路徑的覆蓋率,以及異常觸發(fā)率是影響Fuzzing測(cè)試方法有效性的兩個(gè)關(guān)鍵指標(biāo)。
目前,國(guó)內(nèi)尚沒(méi)有專門(mén)針對(duì)智能家居通信協(xié)議的Fuzzing測(cè)試框架提出。現(xiàn)有的Fuzzing測(cè)試框架分為兩類,一類是通用Fuzzing測(cè)試框架,需要根據(jù)目標(biāo)協(xié)議特征進(jìn)行二次開(kāi)發(fā),要求使用者精確了解網(wǎng)絡(luò)協(xié)議細(xì)節(jié)并通過(guò)繁重的手工配置工作來(lái)構(gòu)造大量測(cè)試數(shù)據(jù)集,一般來(lái)說(shuō)手工配置方法所獲得的測(cè)試用例覆蓋率有限,且執(zhí)行效率較低;另一類是針對(duì)具體某一種協(xié)議如智能家居領(lǐng)域的藍(lán)牙、Zigbee等協(xié)議提出的具體Fuzzing測(cè)試框架,此類框架局限性較大,通用性不高且開(kāi)發(fā)周期長(zhǎng)。另外,面向智能家居通信協(xié)議的Fuzzing測(cè)試由于自身特點(diǎn)還面臨其它兩方面挑戰(zhàn):1)許多智能家居廠商采用非公開(kāi)的私有協(xié)議,且未公開(kāi)所采用的協(xié)議細(xì)節(jié),針對(duì)這類未知協(xié)議,已有的測(cè)試框架暫不能支持有效的自動(dòng)化測(cè)試;2)由于智能家居系統(tǒng)中,通信協(xié)議具有面向控制的特點(diǎn),為了保證傳輸信令的CIA特性,協(xié)議一般引入身份認(rèn)證、會(huì)話加密等機(jī)制,加大了協(xié)議解析和變異數(shù)據(jù)包的難度,目前尚無(wú)較好的解決方案。
Fuzzing測(cè)試框架的有效性主要基于所生成測(cè)試用例對(duì)測(cè)試對(duì)象執(zhí)行路徑的覆蓋率和異常觸發(fā)率,因此Fuzzing測(cè)試系統(tǒng)的關(guān)鍵是需要產(chǎn)生路徑覆蓋深且多的測(cè)試用例。傳統(tǒng)Fuzzing測(cè)試方法按照測(cè)試用例生成方式,大致可分為三類:1)基于變異的Fuzzing測(cè)試方法。即通過(guò)用戶端配置和網(wǎng)絡(luò)抓包,收集典型輸入數(shù)據(jù),然后通過(guò)插入畸形字節(jié)或變換字節(jié)的方式生成測(cè)試用例。這類方法不需要任何先驗(yàn)知識(shí),但后續(xù)生成的變異測(cè)試用例對(duì)初始值有著很強(qiáng)的依賴性,容易導(dǎo)致代碼覆蓋率較低;2)基于生成的Fuzzing測(cè)試方法。即通過(guò)分析被測(cè)對(duì)象的形式化模型,來(lái)分析構(gòu)造測(cè)試用例,這類方法需要在已知協(xié)議邏輯描述的前提下,進(jìn)行分析建模,需要手工配置,難度和工作量較大;3)基于白盒的Fuzzing測(cè)試方法。即通過(guò)對(duì)被測(cè)系統(tǒng)的源代碼進(jìn)行分析,構(gòu)造測(cè)試用例,這類方法需要獲取被測(cè)對(duì)象源代碼,具有一定局限性。
目前,國(guó)內(nèi)尚無(wú)針對(duì)智能家居系統(tǒng)通信協(xié)議安全性分析和測(cè)試的專用工具。且對(duì)于私有或加密的通信協(xié)議的Fuzzing測(cè)試也尚無(wú)有效方案,一般只能依靠人工對(duì)協(xié)議進(jìn)行逆向分析,效率非常低。
傳統(tǒng)對(duì)于私有協(xié)議的測(cè)試,一般會(huì)選擇基于變異的非智能Fuzzing測(cè)試方法,這樣雖然可以避開(kāi)對(duì)協(xié)議解析的艱難過(guò)程,但是由于缺少對(duì)協(xié)議本身的認(rèn)識(shí),可能會(huì)因?yàn)槊つ繕?gòu)造數(shù)據(jù)包導(dǎo)致產(chǎn)生大量無(wú)效測(cè)試用例,從而大幅降低測(cè)試效率。而對(duì)于加密協(xié)議,傳統(tǒng)方法只能通過(guò)逆向分析手段先將其解密,該過(guò)程實(shí)現(xiàn)困難較大,且在測(cè)試用例執(zhí)行階段還需要重新把數(shù)據(jù)恢復(fù)成加密形式發(fā)送給目標(biāo)對(duì)象,使得整個(gè)Fuzzing過(guò)程時(shí)耗較大。
技術(shù)實(shí)現(xiàn)要素:
為解決上述技術(shù)問(wèn)題,本發(fā)明提供了一種智能家居設(shè)備的通信協(xié)議測(cè)試方法及系統(tǒng)。
本發(fā)明實(shí)施例一方面提供了一種智能家居設(shè)備的通信協(xié)議測(cè)試方法,所述測(cè)試方法包括:
獲取被測(cè)對(duì)象與對(duì)端系統(tǒng)之間基于協(xié)議會(huì)話的數(shù)據(jù)包;
對(duì)所述數(shù)據(jù)包進(jìn)行協(xié)議解析,判斷被測(cè)對(duì)象所用通信協(xié)議是否為已知協(xié)議;
當(dāng)被測(cè)對(duì)象所用通信協(xié)議為非已知協(xié)議時(shí),獲取所述數(shù)據(jù)包的可變字段;
根據(jù)所述可變字段對(duì)對(duì)端系統(tǒng)發(fā)給被測(cè)對(duì)象的基于協(xié)議會(huì)話的數(shù)據(jù)包進(jìn)行變異操作,生成被測(cè)對(duì)象的測(cè)試用例;
將所述測(cè)試用例發(fā)送給被測(cè)對(duì)象執(zhí)行,監(jiān)測(cè)被測(cè)對(duì)象是否發(fā)生異常。
本發(fā)明實(shí)施例還提供了一種智能家居設(shè)備的通信協(xié)議測(cè)試系統(tǒng),所述測(cè)試系統(tǒng)包括:
數(shù)據(jù)包獲取單元,用于獲取被測(cè)對(duì)象與對(duì)端系統(tǒng)之間基于協(xié)議會(huì)話的數(shù)據(jù)包;
協(xié)議解析單元,用于對(duì)所述數(shù)據(jù)包進(jìn)行協(xié)議解析,判斷被測(cè)對(duì)象所用通信協(xié)議是否為已知協(xié)議,并當(dāng)被測(cè)對(duì)象所用通信協(xié)議為非已知協(xié)議時(shí),獲取所述數(shù)據(jù)包的可變字段;
測(cè)試用例生成單元,用于根據(jù)所述可變字段對(duì)對(duì)端系統(tǒng)發(fā)給被測(cè)對(duì)象的基于協(xié)議會(huì)話的數(shù)據(jù)包進(jìn)行變異操作,生成被測(cè)對(duì)象的測(cè)試用例;
異常監(jiān)測(cè)單元,用于將所述測(cè)試用例發(fā)送給被測(cè)對(duì)象執(zhí)行,監(jiān)測(cè)被測(cè)對(duì)象是否發(fā)生異常。
本發(fā)明適用于智能家居系統(tǒng)通信協(xié)議的通信協(xié)議測(cè)試方法及系統(tǒng),可針對(duì)智能家居協(xié)議私有、加密等特點(diǎn),對(duì)傳統(tǒng)Fuzzing基礎(chǔ)框架改進(jìn)和二次開(kāi)發(fā),引入包含已知協(xié)議模型和異常測(cè)試用例生成規(guī)則的協(xié)議知識(shí)庫(kù),以及加密算法知識(shí)庫(kù),提出一種基于知識(shí)驅(qū)動(dòng)的協(xié)議解析和用例生成方法,有效提高了協(xié)議解析效率,并支持對(duì)加密協(xié)議的測(cè)試。
附圖說(shuō)明
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明實(shí)施例智能家居設(shè)備的通信協(xié)議測(cè)試方法的流程示意圖;
圖2為本發(fā)明實(shí)施例判斷被測(cè)對(duì)象所用通信協(xié)議是否為已知協(xié)議的流程示意圖;
圖3為本發(fā)明實(shí)施例當(dāng)數(shù)據(jù)包加密時(shí)生成可用測(cè)試用例的流程示意圖;
圖4為本發(fā)明實(shí)施例智能家居設(shè)備的通信協(xié)議測(cè)試系統(tǒng)的結(jié)構(gòu)示意圖;
圖5為本發(fā)明實(shí)施例協(xié)議解析單元2的結(jié)構(gòu)示意圖;
圖6為本發(fā)明實(shí)施例測(cè)試用例生成單元3的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
圖1為本發(fā)明實(shí)施例提供的智能家居設(shè)備的通信協(xié)議測(cè)試方法的流程示意圖。如圖1所示,上述測(cè)試方法主要包括以下步驟:
步驟S1、獲取被測(cè)對(duì)象與對(duì)端系統(tǒng)之間基于協(xié)議會(huì)話的數(shù)據(jù)包。測(cè)試時(shí),需要抓取被測(cè)對(duì)象與對(duì)端系統(tǒng)之間協(xié)議會(huì)話的數(shù)據(jù)包,以便后續(xù)處理。
步驟S2、對(duì)步驟S1中獲取的數(shù)據(jù)包進(jìn)行協(xié)議解析,判斷被測(cè)對(duì)象所用通信協(xié)議是否為已知協(xié)議。若智能家居設(shè)備所用的通信協(xié)議為已知協(xié)議,則可以按照對(duì)已知協(xié)議進(jìn)行測(cè)試時(shí)的變異規(guī)則來(lái)生成測(cè)試用例對(duì)其進(jìn)行測(cè)試。
步驟S3、當(dāng)被測(cè)對(duì)象所用通信協(xié)議為非已知協(xié)議時(shí),獲取步驟S1獲取的數(shù)據(jù)包的可變字段。如果被測(cè)對(duì)象所用的通信協(xié)議為私有協(xié)議,例如智能家居設(shè)備的生產(chǎn)廠家采用非公開(kāi)的私有協(xié)議,且未公開(kāi)所采用的協(xié)議細(xì)節(jié),則需要對(duì)被測(cè)對(duì)象與其對(duì)端系統(tǒng)之間基于協(xié)議會(huì)話的數(shù)據(jù)包進(jìn)行解析,獲取其可變字段。
步驟S4、根據(jù)步驟S3中獲取的可變字段對(duì)對(duì)端系統(tǒng)發(fā)給被測(cè)對(duì)象的基于協(xié)議會(huì)話的數(shù)據(jù)包進(jìn)行變異操作,生成被測(cè)對(duì)象的測(cè)試用例。
步驟S5、將步驟S4生成的測(cè)試用例發(fā)送給被測(cè)對(duì)象執(zhí)行,監(jiān)測(cè)被測(cè)對(duì)象是否發(fā)生異常。
本發(fā)明實(shí)施例適用于智能家居系統(tǒng)通信協(xié)議的通信協(xié)議測(cè)試方法,可針對(duì)智能家居協(xié)議私有的特點(diǎn),通過(guò)根據(jù)被測(cè)對(duì)象與其對(duì)端系統(tǒng)之間基于協(xié)議會(huì)話的數(shù)據(jù)包的可變字段生成測(cè)試用例的方式,構(gòu)造被測(cè)系統(tǒng)所用通信協(xié)議的有效測(cè)試用例,大大提高了測(cè)試效率。
在一實(shí)施例中,步驟S2判斷被測(cè)對(duì)象所用通信協(xié)議是否為已知協(xié)議時(shí),可調(diào)用包含已知協(xié)議模型的預(yù)設(shè)的協(xié)議知識(shí)庫(kù),將步驟S1中獲取的數(shù)據(jù)包與協(xié)議知識(shí)庫(kù)中的已知協(xié)議模型進(jìn)行匹配,判斷被測(cè)對(duì)象所用通信協(xié)議是否為已知協(xié)議。具體實(shí)施時(shí),可按照?qǐng)D2所示步驟進(jìn)行,主要包括以下步驟:
步驟S21、采用多模式匹配算法,將步驟S1中獲取的數(shù)據(jù)包與預(yù)設(shè)的協(xié)議知識(shí)庫(kù)中的已知協(xié)議模型進(jìn)行匹配。
如上述數(shù)據(jù)包可與協(xié)議知識(shí)庫(kù)中的已知協(xié)議模型匹配,說(shuō)明被測(cè)對(duì)象所用通信協(xié)議是已知協(xié)議,進(jìn)行步驟S22。否則,可確定被測(cè)對(duì)象所用通信協(xié)議為非已知協(xié)議,即其所用協(xié)議為私有協(xié)議,利用多序列比對(duì)算法猜測(cè)步驟S1中獲取的數(shù)據(jù)包的可變字段(步驟S23)。
步驟S22、從協(xié)議知識(shí)庫(kù)中調(diào)取對(duì)應(yīng)的已知協(xié)議的變異規(guī)則等信息,此處的變異規(guī)則用于生成對(duì)應(yīng)協(xié)議的異常測(cè)試用例。
步驟S24、將步驟S22獲取的已知協(xié)議的變異規(guī)則等信息,或者或步驟S23中獲取的數(shù)據(jù)包的可變字段信息發(fā)送給測(cè)試用例生成器以生成測(cè)試用例。此處的測(cè)試用例生成器用于根據(jù)協(xié)議解析結(jié)果生成被測(cè)對(duì)象所用通信協(xié)議的測(cè)試用例。
本發(fā)明實(shí)施例引入包含已知協(xié)議模型和異常測(cè)試用例生成規(guī)則的協(xié)議知識(shí)庫(kù),提出一種基于知識(shí)驅(qū)動(dòng)的協(xié)議解析和用例生成方法,有效提高了協(xié)議解析效率,并支持對(duì)私有協(xié)議的測(cè)試。
在步驟S23中,利用多序列比對(duì)算法猜測(cè)數(shù)據(jù)包的可變字段時(shí),可先采用類型匹配,將同類型的數(shù)據(jù)包提取出來(lái),作為一個(gè)數(shù)據(jù)包組,然后對(duì)這些數(shù)據(jù)包組中的數(shù)據(jù)包進(jìn)行多序列比對(duì),得到反映數(shù)據(jù)包共性和差異的比對(duì)結(jié)果,即把不變域和可變域分了出來(lái),得到了數(shù)據(jù)包的可變字段。
具體實(shí)施時(shí),將一個(gè)數(shù)據(jù)包組用序列表示:seqs={seq1,seq2,....,seqn},其中seqi為經(jīng)過(guò)填充空位后的數(shù)據(jù)包。首先,根據(jù)狀態(tài)轉(zhuǎn)換函數(shù)計(jì)算上述數(shù)據(jù)包組中兩個(gè)數(shù)據(jù)包的相似值,得到一個(gè)相似度矩陣。然后,根據(jù)相似度矩陣按照動(dòng)態(tài)規(guī)劃算法回溯尋找最優(yōu)的比對(duì)Bestmatch(seqi,seqj)。狀態(tài)轉(zhuǎn)換函數(shù)定義如下:
其中,Matrixij表示當(dāng)前狀態(tài)得分,mi,j是字節(jié)匹配得分,n為連續(xù)匹配的字節(jié)個(gè)數(shù),b為連續(xù)匹配獎(jiǎng)勵(lì),w是空位懲罰值,因?yàn)榭瘴徊粚儆谠紨?shù)據(jù)包。
通過(guò)比較數(shù)據(jù)包長(zhǎng)度,將長(zhǎng)度最為接近的數(shù)據(jù)包兩兩分組,構(gòu)建匹配的向?qū)?shù)??梢园凑杖缦滤舅惴ùa構(gòu)建向?qū)?shù):
然后,依據(jù)向?qū)?shù)進(jìn)行漸進(jìn)比對(duì)數(shù)據(jù)包的結(jié)構(gòu),從根節(jié)點(diǎn)開(kāi)始,遞歸調(diào)用上面整個(gè)流程,將所有的插入空格位置列表gapList應(yīng)用到葉子節(jié)點(diǎn),最終可以猜測(cè)到數(shù)據(jù)包的可變字段。
在一實(shí)施例中,當(dāng)被測(cè)對(duì)象所用通信協(xié)議為非已知協(xié)議時(shí),在利用步驟S4生成測(cè)試用例時(shí),可按照?qǐng)D3所示步驟進(jìn)行:
步驟S41、判斷步驟S1中獲取的被測(cè)對(duì)象與對(duì)端系統(tǒng)之間基于協(xié)議會(huì)話的數(shù)據(jù)包是否為加密數(shù)據(jù)包。當(dāng)所述數(shù)據(jù)包為加密數(shù)據(jù)包時(shí),進(jìn)行步驟S42。當(dāng)所述數(shù)據(jù)包未加密時(shí),按照步驟S47,在對(duì)端系統(tǒng)發(fā)給被測(cè)對(duì)象的基于協(xié)議會(huì)話的數(shù)據(jù)包的可變字段處進(jìn)行變異操作即可,然后跳轉(zhuǎn)至步驟S46,更新經(jīng)過(guò)變異操作的數(shù)據(jù)包的校驗(yàn)值,即可生成有效的測(cè)試用例。
步驟S42、當(dāng)所述數(shù)據(jù)包為加密數(shù)據(jù)包時(shí),重啟對(duì)端系統(tǒng),重新獲取對(duì)端系統(tǒng)發(fā)給被測(cè)對(duì)象的基于協(xié)議會(huì)話的新數(shù)據(jù)包。
步驟S43、根據(jù)對(duì)端系統(tǒng)的加密算法及會(huì)話密鑰對(duì)所述新數(shù)據(jù)包進(jìn)行解密。
步驟S44、根據(jù)步驟S3中獲取的可變字段,在新數(shù)據(jù)包的所述可變字段處進(jìn)行變異操作。
步驟S45、利用對(duì)端系統(tǒng)的加密算法及會(huì)話密鑰對(duì)經(jīng)過(guò)變異操作的新數(shù)據(jù)包進(jìn)行加密。
步驟S46、更新加密后的數(shù)據(jù)包的校驗(yàn)值,生成被測(cè)對(duì)象的測(cè)試用例。
在對(duì)所述數(shù)據(jù)包進(jìn)行解密之前,需要預(yù)先遍歷所述對(duì)端系統(tǒng)的內(nèi)存,定位對(duì)端系統(tǒng)的加密處理切入點(diǎn),獲取該對(duì)端系統(tǒng)所用的加密算法及會(huì)話密鑰并存儲(chǔ)至一共享加密信息文件中,以便于調(diào)用??蛇x地,還可將將對(duì)端系統(tǒng)所用的加密算法存儲(chǔ)至一加密算法庫(kù)中,在共享加密信息文件與加密算法庫(kù)之間建立映射關(guān)系,當(dāng)獲知對(duì)端系統(tǒng)所用的加密算法后即可從加密算法庫(kù)中調(diào)用相應(yīng)的算法來(lái)對(duì)數(shù)據(jù)包進(jìn)行解密。
當(dāng)被測(cè)對(duì)象所用通信協(xié)議為已知協(xié)議時(shí),可直接從協(xié)議知識(shí)庫(kù)中調(diào)用該已知協(xié)議的變異規(guī)則等信息,然后判斷所述被測(cè)對(duì)象與對(duì)端系統(tǒng)之間基于協(xié)議會(huì)話的數(shù)據(jù)包是否為加密數(shù)據(jù)包,并當(dāng)所述初始數(shù)據(jù)包為加密數(shù)據(jù)包時(shí),重啟對(duì)端系統(tǒng),重新獲取對(duì)端系統(tǒng)發(fā)給被測(cè)對(duì)象的基于協(xié)議會(huì)話的新數(shù)據(jù)包。接著,根據(jù)所述對(duì)端系統(tǒng)的加密算法及會(huì)話密鑰對(duì)所述新數(shù)據(jù)包進(jìn)行解密,再根據(jù)所述通信協(xié)議的變異規(guī)則對(duì)所述新數(shù)據(jù)包進(jìn)行變異操作。最后利用所述加密算法及會(huì)話密鑰對(duì)經(jīng)過(guò)變異操作的新數(shù)據(jù)包進(jìn)行加密,并更新加密后的數(shù)據(jù)包的校驗(yàn)值,生成被測(cè)對(duì)象的測(cè)試用例。其整體流程與圖3類似,不過(guò)當(dāng)被測(cè)對(duì)象所用通信協(xié)議為已知協(xié)議時(shí),生成測(cè)試用例時(shí)需要將圖3中所示步驟S44的內(nèi)容修改為:根據(jù)所述通信協(xié)議的對(duì)應(yīng)的已知協(xié)議的變異規(guī)則對(duì)重啟對(duì)端系統(tǒng)后獲取的新數(shù)據(jù)包進(jìn)行變異操作,還需將步驟S47的內(nèi)容修改為:根據(jù)所述通信協(xié)議的對(duì)應(yīng)的已知協(xié)議的變異規(guī)則對(duì)對(duì)端系統(tǒng)發(fā)給被測(cè)對(duì)象基于協(xié)議會(huì)話的數(shù)據(jù)包進(jìn)行變異操作。除此兩步驟之外,解密操作、加密操作以及校驗(yàn)值更新的步驟與被測(cè)對(duì)象所用通信協(xié)議為私有協(xié)議時(shí)的解密操作和加密操作大體相同。
另外,如被測(cè)對(duì)象發(fā)生異常,需要將這些異常信息記錄下來(lái),將引發(fā)異常的測(cè)試用例及其對(duì)應(yīng)的變異規(guī)則發(fā)送給上述的協(xié)議知識(shí)庫(kù),采用自學(xué)習(xí)算法完善協(xié)議知識(shí)庫(kù)中相應(yīng)通信協(xié)議的變異規(guī)則。
本發(fā)明實(shí)施例針對(duì)智能家居協(xié)議私有、加密等特點(diǎn),對(duì)傳統(tǒng)Fuzzing基礎(chǔ)框架進(jìn)行了改進(jìn)和二次開(kāi)發(fā),引入包含已知協(xié)議模型和異常測(cè)試用例生成規(guī)則的協(xié)議知識(shí)庫(kù),以及加密算法知識(shí)庫(kù),提出一種基于知識(shí)驅(qū)動(dòng)的協(xié)議解析和用例生成方法,實(shí)現(xiàn)了對(duì)智能家居系統(tǒng)私有、加密通信協(xié)議的測(cè)試支持,提高測(cè)試效率,并具有較強(qiáng)的可擴(kuò)展性。
基于與圖1至圖3所示的智能家居設(shè)備的通信協(xié)議測(cè)試方法相同的發(fā)明構(gòu)思,發(fā)明實(shí)施例還提供了一種智能家居設(shè)備的通信協(xié)議測(cè)試系統(tǒng),如下面實(shí)施例所述。由于該智能家居設(shè)備的通信協(xié)議測(cè)試系統(tǒng)解決問(wèn)題的原理與智能家居設(shè)備的通信協(xié)議測(cè)試方法相似,因此該智能家居設(shè)備的通信協(xié)議測(cè)試系統(tǒng)的實(shí)施可以參見(jiàn)智能家居設(shè)備的通信協(xié)議測(cè)試方法的實(shí)施,重復(fù)之處不再贅述。
圖4為本發(fā)明實(shí)施例智能家具設(shè)備的通信協(xié)議測(cè)試系統(tǒng)的結(jié)構(gòu)示意圖,如圖4所示,該測(cè)試系統(tǒng)主要包括:數(shù)據(jù)包獲取單元1、協(xié)議解析單元2、測(cè)試用例生成單元3及異常監(jiān)測(cè)單元4。
其中,數(shù)據(jù)包獲取單元1用于獲取被測(cè)對(duì)象與對(duì)端系統(tǒng)之間基于協(xié)議會(huì)話的數(shù)據(jù)包。協(xié)議解析單元2用于對(duì)所述數(shù)據(jù)包進(jìn)行協(xié)議解析,判斷被測(cè)對(duì)象所用通信協(xié)議是否為已知協(xié)議,并當(dāng)被測(cè)對(duì)象所用通信協(xié)議為非已知協(xié)議時(shí),獲取所述數(shù)據(jù)包的可變字段。測(cè)試用例生成單元3用于根據(jù)所述可變字段對(duì)對(duì)端系統(tǒng)發(fā)給被測(cè)對(duì)象的基于協(xié)議會(huì)話的數(shù)據(jù)包進(jìn)行變異操作,生成被測(cè)對(duì)象的測(cè)試用例。異常監(jiān)測(cè)單元4用于將所述測(cè)試用例發(fā)送給被測(cè)對(duì)象執(zhí)行,監(jiān)測(cè)被測(cè)對(duì)象是否發(fā)生異常。
為了在被測(cè)對(duì)象發(fā)生異常時(shí)更精確地定位異常,以及使上述的協(xié)議知識(shí)庫(kù)更加完善,本發(fā)明實(shí)施例提供的測(cè)試系統(tǒng)還包括一異常記錄單元及自學(xué)習(xí)單元(圖4中未示出),異常記錄單元用于當(dāng)被測(cè)對(duì)象發(fā)生異常時(shí)記錄異常信息,并將引發(fā)異常的測(cè)試用例信息及其對(duì)應(yīng)的變異規(guī)則發(fā)送給所述協(xié)議知識(shí)庫(kù),自學(xué)習(xí)單元用于采用自學(xué)習(xí)算法完善所述協(xié)議知識(shí)庫(kù)中相應(yīng)通信協(xié)議的變異規(guī)則。
本發(fā)明實(shí)施例針對(duì)智能家居協(xié)議私有、加密等特點(diǎn),對(duì)傳統(tǒng)Fuzzing基礎(chǔ)框架進(jìn)行了改進(jìn)和二次開(kāi)發(fā),引入包含已知協(xié)議模型和異常測(cè)試用例生成規(guī)則的協(xié)議知識(shí)庫(kù),以及加密算法知識(shí)庫(kù),提出一種基于知識(shí)驅(qū)動(dòng)的協(xié)議解析和用例生成方法,實(shí)現(xiàn)了對(duì)智能家居系統(tǒng)私有、加密通信協(xié)議的測(cè)試支持,提高測(cè)試效率,并具有較強(qiáng)的可擴(kuò)展性。
在一實(shí)施例中,協(xié)議解析單元2包括協(xié)議判斷模塊31(見(jiàn)圖5),用于采用多模式匹配算法,將所述數(shù)據(jù)包與預(yù)設(shè)的協(xié)議知識(shí)庫(kù)中的已知協(xié)議模型進(jìn)行匹配,判斷被測(cè)對(duì)象所用通信協(xié)議是否為已知協(xié)議。
在協(xié)議解析單元2中引入基于知識(shí)驅(qū)動(dòng)的預(yù)處理機(jī)制,采用多模式匹配算法,根據(jù)抽取對(duì)端系統(tǒng)與被測(cè)系統(tǒng)交互的數(shù)據(jù)包與協(xié)議知識(shí)庫(kù)中的協(xié)議模型進(jìn)行匹配,從而區(qū)分已知協(xié)議與私有協(xié)議,并將相關(guān)結(jié)果信息發(fā)送給測(cè)試用例生成單元3。具體實(shí)施時(shí),需要在協(xié)議知識(shí)庫(kù)中預(yù)先設(shè)置已知協(xié)議信息,包括協(xié)議邏輯、數(shù)據(jù)包格式、容易引起異常的變異規(guī)則信息等??紤]到智能家居系統(tǒng)通信協(xié)議測(cè)試對(duì)實(shí)時(shí)性、準(zhǔn)確性的需求和處理能力有效的特點(diǎn),本發(fā)明實(shí)施例采用多模式匹配算法判斷協(xié)議是否為協(xié)議知識(shí)庫(kù)中的已有協(xié)議。
如圖5所示,協(xié)議解析單元3還包括加密判斷模塊22及重啟模塊23,加密判斷模塊22用于判斷所述被測(cè)對(duì)象與對(duì)端系統(tǒng)之間基于協(xié)議會(huì)話的數(shù)據(jù)包是否為加密數(shù)據(jù)包,重啟模塊23用于當(dāng)加密判斷模塊22的判斷結(jié)果為是時(shí)重啟對(duì)端系統(tǒng),以使所述數(shù)據(jù)包獲取單元1重新獲取對(duì)端系統(tǒng)發(fā)給被測(cè)對(duì)象的基于協(xié)議會(huì)話的新數(shù)據(jù)包。
傳統(tǒng)Fuzzer(如codenomicon等工具)主要利用“舊包”即以前獲取的數(shù)據(jù)包來(lái)生成測(cè)試用例,但因?yàn)橹悄芗揖酉到y(tǒng)中的為了提高會(huì)話的安全性通信協(xié)議一般采用動(dòng)態(tài)會(huì)話密鑰的方式,這樣“舊包”就不能被重用。因此,當(dāng)被測(cè)對(duì)象與其對(duì)端系統(tǒng)之間互發(fā)的數(shù)據(jù)包如為加密數(shù)據(jù)包時(shí),本發(fā)明實(shí)施例在測(cè)試用例生成階段需要基于協(xié)議會(huì)話的“新鮮數(shù)據(jù)包”,為了解決這個(gè)問(wèn)題,本發(fā)明實(shí)施例提供的測(cè)試系統(tǒng)通常作為“中間人”節(jié)點(diǎn),置于對(duì)端系統(tǒng)與被測(cè)對(duì)象的通信鏈路上,利用重啟模塊23重啟對(duì)端系統(tǒng)獲取“新鮮數(shù)據(jù)包”。
測(cè)試用例生成單元3根據(jù)上一階段發(fā)送的信息,分別調(diào)用不同的用例生成處理程序。如果上一階段匹配結(jié)果判斷是已知協(xié)議,則按照已知協(xié)議的變異規(guī)則,對(duì)抓取的數(shù)據(jù)包進(jìn)行變異操作來(lái)生成畸形測(cè)試用例。如果上一階段匹配結(jié)果判斷是已知協(xié)議,則按照按可變字段等信息,對(duì)數(shù)據(jù)包進(jìn)行變異操作形成測(cè)試用例。
在一實(shí)施例中,測(cè)試用例生成單元3包括:解密模塊31、變異模塊32、加密模塊33及重打包模塊34,如圖6所示。其中,解密模塊31用于根據(jù)所述對(duì)端系統(tǒng)的加密算法及會(huì)話密鑰對(duì)所述新數(shù)據(jù)包進(jìn)行解密。變異模塊32用于在所述新數(shù)據(jù)包的所述可變字段處進(jìn)行變異操作。加密模塊33用于利用所述加密算法及會(huì)話密鑰對(duì)經(jīng)過(guò)變異操作的新數(shù)據(jù)包進(jìn)行加密。重打包模塊34用于更新加密后的數(shù)據(jù)包的校驗(yàn)值,生成被測(cè)對(duì)象的測(cè)試用例。
在一實(shí)施例中,當(dāng)協(xié)議判斷模塊21的判斷結(jié)果為已知協(xié)議時(shí),上述的變異模塊32還用于根據(jù)所述通信協(xié)議的變異規(guī)則對(duì)所述新數(shù)據(jù)包進(jìn)行變異操作。
為了獲取對(duì)端系統(tǒng)的加密算法和會(huì)話密鑰等信息,需要在被測(cè)對(duì)象與對(duì)端系統(tǒng)建立測(cè)試會(huì)話之前,預(yù)先獲得對(duì)端系統(tǒng)所使用的加密算法、會(huì)話密鑰等信息,將這些信息寫(xiě)入共享加密文件,測(cè)試用例生成單元3在需要時(shí)會(huì)自動(dòng)讀取共享加密文件信息。該項(xiàng)功能實(shí)現(xiàn),需要對(duì)對(duì)端系統(tǒng)進(jìn)行逆向工程并對(duì)內(nèi)存進(jìn)行遍歷,定位加密處理切入點(diǎn),對(duì)程序進(jìn)行改造。一般智能家居通信協(xié)議會(huì)采用標(biāo)準(zhǔn)加密算法,因此,本發(fā)明實(shí)施例提供的測(cè)試系統(tǒng)可以外聯(lián)一個(gè)加密算法庫(kù)提高消息處理效率。只在測(cè)試用例生成單元3對(duì)加密數(shù)據(jù)報(bào)文進(jìn)行變異操作時(shí),才會(huì)執(zhí)行解密和重新加密的操作。因此,本發(fā)明實(shí)施例提供的測(cè)試系統(tǒng)還包括一預(yù)處理單元(圖4中未示出),用于遍歷對(duì)端系統(tǒng)的內(nèi)存,定位對(duì)端系統(tǒng)的加密處理切入點(diǎn),以獲取該對(duì)端系統(tǒng)的加密算法及會(huì)話密鑰并存儲(chǔ)。
在協(xié)議解析和測(cè)試用例生成階段,要保持本發(fā)明實(shí)施例提供的測(cè)試系統(tǒng)與被測(cè)對(duì)象的會(huì)話鏈接,并將所生成的測(cè)試用例發(fā)送給被測(cè)對(duì)象進(jìn)行測(cè)試。
由于智能家居終端設(shè)備難以安裝第三方軟件,且由于嵌入式系統(tǒng)計(jì)算、存儲(chǔ)均受到嚴(yán)格的制約,因此傳統(tǒng)調(diào)試和日志跟蹤方法,不適用于智能家居通信協(xié)議的Fuzzing異常監(jiān)測(cè),所以采用返回信息監(jiān)測(cè)分析的方式,異常監(jiān)測(cè)單元4可使用一個(gè)探側(cè)包來(lái)確定測(cè)試過(guò)程中被測(cè)對(duì)象是否可用,如果被測(cè)對(duì)象出現(xiàn)異常,則會(huì)返回錯(cuò)誤信息。異常記錄單元會(huì)記錄下是哪個(gè)測(cè)試用例觸發(fā)了異常以及被測(cè)對(duì)象返回信息,為后續(xù)異常的定位和重現(xiàn)提供依據(jù)。由于一些智能家居通信協(xié)議具有自修復(fù)和守護(hù)能力,異常發(fā)生后會(huì)自動(dòng)重啟,因此異常監(jiān)測(cè)單元4的探測(cè)包應(yīng)該達(dá)到一定的收發(fā)頻率,否則無(wú)法捕獲發(fā)生的異常。
本發(fā)明實(shí)施例提供的測(cè)試系統(tǒng)可以采用內(nèi)聯(lián)的部署方式,通過(guò)ARP欺騙方法,將本發(fā)明提供的測(cè)試系統(tǒng)插入被測(cè)對(duì)象與對(duì)端實(shí)現(xiàn)之間,作為“中間人”采用重放的方式對(duì)截獲的數(shù)據(jù)包進(jìn)行處理。即,在利用本發(fā)明實(shí)施例提供的測(cè)試系統(tǒng)進(jìn)行測(cè)試時(shí),也可按照如下流程進(jìn)行:1)對(duì)端系統(tǒng)向被測(cè)系統(tǒng)發(fā)起一個(gè)新的協(xié)議會(huì)話;2)協(xié)議解析單元2在數(shù)據(jù)包獲取單元1獲取足夠數(shù)據(jù)報(bào)文時(shí),進(jìn)行協(xié)議字段解析,調(diào)用協(xié)議知識(shí)庫(kù)信息進(jìn)行匹配,判斷是否為已知協(xié)議;3)如非已知協(xié)議,則調(diào)用多序列比對(duì)算法猜測(cè)數(shù)據(jù)包的可變字段;4)將解析到的信息發(fā)送測(cè)試用例生成單元3;5)當(dāng)被測(cè)對(duì)象與對(duì)端系統(tǒng)之間互發(fā)的數(shù)據(jù)包為加密數(shù)據(jù)包時(shí),重啟對(duì)端系統(tǒng),開(kāi)啟新會(huì)話,向共加密享文件中寫(xiě)入加密算法、密鑰和隨機(jī)數(shù)種子,如非加密數(shù)據(jù)包,則寫(xiě)入空;6)數(shù)據(jù)包獲取單元1攔截對(duì)端系統(tǒng)重啟后與被測(cè)對(duì)象互發(fā)的新數(shù)據(jù)包,讀取共享加密文件信息,調(diào)用加密算法庫(kù),對(duì)數(shù)據(jù)報(bào)文進(jìn)行解密和變異操作,重新生成測(cè)試用例報(bào)文;7)將生成的測(cè)試用例發(fā)給被測(cè)對(duì)象;8)異常監(jiān)測(cè)單元4對(duì)被測(cè)對(duì)象返回信息進(jìn)行分析,判斷目標(biāo)被測(cè)系統(tǒng)是否出錯(cuò);9)如異常則記錄出錯(cuò)信息,并將引發(fā)異常的測(cè)試用例報(bào)文及其變異規(guī)則發(fā)送協(xié)議知識(shí)庫(kù),協(xié)議知識(shí)庫(kù)采用自學(xué)習(xí)算法完善對(duì)應(yīng)協(xié)議的變異規(guī)則信息;10)如無(wú)異常則跳轉(zhuǎn)至步驟5),重復(fù)步驟5)~步驟10),直至測(cè)試完成。
本發(fā)明實(shí)施例針對(duì)智能家居協(xié)議私有、加密等特點(diǎn),對(duì)傳統(tǒng)Fuzzing基礎(chǔ)框架進(jìn)行了改進(jìn)和二次開(kāi)發(fā),引入包含已知協(xié)議模型和異常測(cè)試用例生成規(guī)則的協(xié)議知識(shí)庫(kù),以及加密算法知識(shí)庫(kù),提出一種基于知識(shí)驅(qū)動(dòng)的協(xié)議解析和用例生成方法,實(shí)現(xiàn)了對(duì)智能家居系統(tǒng)私有、加密通信協(xié)議的測(cè)試支持,提高測(cè)試效率,并具有較強(qiáng)的可擴(kuò)展性。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、系統(tǒng)、或計(jì)算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤(pán)存儲(chǔ)器、CD-ROM、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、設(shè)備(系統(tǒng))、和計(jì)算機(jī)程序產(chǎn)品的流程圖和/或方框圖來(lái)描述的。應(yīng)理解可由計(jì)算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計(jì)算機(jī)程序指令到通用計(jì)算機(jī)、專用計(jì)算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個(gè)機(jī)器,使得通過(guò)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的裝置。
這些計(jì)算機(jī)程序指令也可存儲(chǔ)在能引導(dǎo)計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計(jì)算機(jī)可讀存儲(chǔ)器中,使得存儲(chǔ)在該計(jì)算機(jī)可讀存儲(chǔ)器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能。
這些計(jì)算機(jī)程序指令也可裝載到計(jì)算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計(jì)算機(jī)實(shí)現(xiàn)的處理,從而在計(jì)算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個(gè)流程或多個(gè)流程和/或方框圖一個(gè)方框或多個(gè)方框中指定的功能的步驟。
本發(fā)明中應(yīng)用了具體實(shí)施例對(duì)本發(fā)明的原理及實(shí)施方式進(jìn)行了闡述,以上實(shí)施例的說(shuō)明只是用于幫助理解本發(fā)明的方法及其核心思想;同時(shí),對(duì)于本領(lǐng)域的一般技術(shù)人員,依據(jù)本發(fā)明的思想,在具體實(shí)施方式及應(yīng)用范圍上均會(huì)有改變之處,綜上所述,本說(shuō)明書(shū)內(nèi)容不應(yīng)理解為對(duì)本發(fā)明的限制。