何長鵬
(甘肅政法大學公安技術學院,甘肅蘭州 730070)
隨著移動互聯(lián)網(wǎng)的迅猛發(fā)展,互聯(lián)網(wǎng)的影響正逐步從消費領域向傳統(tǒng)的社會核心領域滲透,并逐漸向產(chǎn)業(yè)互聯(lián)網(wǎng)轉(zhuǎn)型。產(chǎn)業(yè)互聯(lián)網(wǎng)時代的到來,把人類帶入了智能時代。以智能手機為代表的智能終端設備是移動互聯(lián)網(wǎng)的入口設備,它們不僅具有傳統(tǒng)的通訊功能,還具有和個人計算機類似的功能,體積小、可穿戴、攜帶方便等諸多優(yōu)點。由于移動設備包含大量敏感的個人信息,電子商務、移動支付等業(yè)務涉及錢財交易,使得惡意攻擊者往往選擇移動互聯(lián)網(wǎng)作為攻擊目標。一方面智能終端設備的操作系統(tǒng)和應用程序存在大量的安全漏洞,以及一些移動惡意軟件的出現(xiàn),導致移動互聯(lián)網(wǎng)的安全形勢更加嚴峻。另一方面,終端用戶接入網(wǎng)絡變的容易,人們所生活的環(huán)境中到處都有WiFi熱點。
智慧城市、智慧校園以及智慧家庭都離不開小型的SOHO無線路由器,SOHO無線接入路由器作為家庭和中小型辦公環(huán)境中普及度極高的網(wǎng)絡接入設備,它的安全影響著整個互聯(lián)網(wǎng)的安全。然而SOHO無線路由器的安全問題往往會被人們所忽略,研究者們關注的重點是大型骨干路由交互設備漏洞攻擊技術,針對SOHO無線接入路由交換設備的軟硬件漏洞挖掘分析研究較少[1-4]。
據(jù)調(diào)查研究發(fā)現(xiàn),大部分對于智能手機等終端設備的入侵,其源頭是攻擊者從小型無線接入路由器進行滲透,進而控制用戶的手機從而竊取用戶隱私數(shù)據(jù)、獲取賬號密碼信息、實施網(wǎng)絡劫持和網(wǎng)絡釣魚等攻擊行為[5]。因此,針對普通的、小型的SOHO無線接入路由器的安全漏洞挖掘及漏洞相關攻防技術的研究具有重要的意義和必要性。
安全漏洞[6]是指信息系統(tǒng)在設計、實現(xiàn)或者運行管理過程中存在的缺陷或不足,從而使攻擊者能夠在未授權的情況下利用這些缺陷破壞系統(tǒng)的安全策略,它是研究安全問題的生命線,是網(wǎng)絡攻擊和防御的核心問題。漏洞挖掘是指采用一定的信息技術方法去發(fā)現(xiàn)、分析和利用信息系統(tǒng)中漏洞的過程。漏洞挖掘技術分為白盒測試、黑盒測試、灰盒測試三種類型,其區(qū)別是由測試者所得到的資源決定的[7]。傳統(tǒng)漏洞挖掘的目標對象僅僅針對軟件系統(tǒng)本身,但目前越來越多的人開始關注存在于電子設備硬件電路或固件系統(tǒng)中的漏洞,不再局限于軟件本身[4]。
近些年來,出現(xiàn)了大量的漏洞挖掘系統(tǒng),也涌現(xiàn)了種類繁多的挖掘技術及方法[1-3,7-9],但一直以來很少有研究者去探索和研究SOHO無線路由器存在的漏洞,挖掘分析SOHO無線路由的漏洞,找出對應的防護策略。SOHO無線路由器作為一臺嵌入式微型計算機,存在各種類型的漏洞,包括身份脆弱性漏洞、Web配置界面漏洞、緩沖區(qū)溢出漏洞和固有后門型漏洞等[10]。在遭受攻擊者針對漏洞和后門的攻擊時卻缺少有效的防御手段。
人們通常依據(jù)分析對象維度,把漏洞挖掘分為基于源代碼和基于可執(zhí)行代碼的挖掘,這就定義了一個相對狹義的漏洞挖掘?qū)ο蠓懂牐粗会槍浖到y(tǒng)的漏洞挖掘[8]。從漏洞的分析角度,將無線路由器系統(tǒng)漏洞分為軟硬件漏洞、設備運行的協(xié)議漏洞以及配置管理漏洞三類是較為合理的[4]。
目前,廣泛應用的漏洞挖掘技術主要分為兩大類[4]:一是靜態(tài)代碼審計;二是模糊測試[8,11,12](Fuzzing)。模糊測試是一種介于完全的手工滲透測試與完全的自動化測試之間的安全性黑盒測試類型,與靜態(tài)代碼審核相比,模糊測試有許多的優(yōu)點[13]。模糊測試通過向目標程序發(fā)送大量的畸形數(shù)據(jù),以觸發(fā)異常崩潰來發(fā)現(xiàn)程序潛在的漏洞[14]。模糊測試中測試用例的有效性是發(fā)現(xiàn)協(xié)議或系統(tǒng)未知漏洞的關鍵。文獻[15]通過深度學習方法省略了傳統(tǒng)網(wǎng)絡協(xié)議漏洞挖掘過程中的人工對網(wǎng)絡協(xié)議的分析。
文獻[3,4]認為設備的逆向剖析及代碼抽取、仿真成為挖掘的基礎。漏洞挖掘重要的前提之一是要能夠識別、提取、分析和運行設備中的代碼,而這些代碼在研究過程的測試必須是一個能夠滿足漏洞挖掘需求的仿真環(huán)境或一個在線的真實環(huán)境。然而,生活中接觸到大量的網(wǎng)絡,漏洞挖掘必須面對種類繁多的硬件設備和軟件系統(tǒng)對于設備的逆向剖析,并從中抽取代碼,提供仿真、調(diào)試和分析環(huán)境成為洞挖掘必須要做的重要的基礎工作[16]。
因此,本文將重點研究家用路由交互設備所面臨的安全問題,挖掘分析路由設備運行的固件和協(xié)議漏洞。通過搭建真實運行環(huán)境,分析SOHO接入無線路由器體系架構、固件、運行環(huán)境等,實現(xiàn)對網(wǎng)路協(xié)議安全漏洞掃描分析,并根據(jù)挖掘的漏洞研究相應的防護技術。
SOHO無線寬帶路由器作為一種嵌入式設備,硬件部分通常選擇支持ARM或MIPS體系架構的微處理器,系統(tǒng)軟件部分則基于Linux內(nèi)核定制裁剪以后進行移植[17]。上層軟件架構是主要包括:路由模塊、防火墻模塊以及用戶遠程管理模塊。SOHO無線路由設備作為一種嵌入式設備,包含文件系統(tǒng)在內(nèi)的核心內(nèi)容均以固件的形式存儲在閃存(Flash)中[3]。固件通常為二進制數(shù)據(jù)流文件,包括固件頭部、引導程序、內(nèi)核鏡像、文件系統(tǒng)等幾部分。固件的核心內(nèi)容是文件系統(tǒng),其中包含全部的可執(zhí)行程序、配置文件等信息。文件系統(tǒng)提取的方法較多,除了手動提取外,還可以利用一些現(xiàn)有的比較優(yōu)秀的工具,比如Binwalk、Firmware-analysis-toolkit等。Binwalk可以協(xié)助安全人員從固件鏡像文件中提取數(shù)據(jù)及進行逆向工程。
為了實現(xiàn)SOHO路由器的漏洞挖掘分析,本文參考文獻[4]提供的方法搭建運行環(huán)境。與文獻[4]不同之處本文建立了真實的Linux運行環(huán)境,安裝配置模擬處理器軟件QEMU、交互式反匯編編譯工具IDA Pro以及MIPS交叉編譯環(huán)境。其中,模擬處理器軟件QEMU具有高速及跨平臺的特性,能模擬真實計算機的速度;IDA Pro具備強大的腳本功能,實現(xiàn)漏洞自動化分析,支持用戶快速開發(fā)Python腳本程序來驗證發(fā)掘的漏洞;配置MIPS交叉編譯環(huán)境,方便后期shellcode的編譯執(zhí)行。
模糊測試的理論和應用都已經(jīng)比較成熟,基于模糊測試方法實現(xiàn)的工具種類也很多,比如SPIKE、Sulley、AFL、Burp Suit和ClusterFuzz等。模糊測試中生成有效的測試數(shù)據(jù)至關重要,可以利用測試用例設計、隨機生成輸入、人工協(xié)議變異、自動協(xié)議生成等方法來建立測試集。測試用例設計的好壞直接影響測試的效果,使用各種不同的測試用例對目標進行測試,通過監(jiān)測目標執(zhí)行情況來發(fā)現(xiàn)漏洞。
隨機生成輸入則需要考慮如何生成隨機但有效的輸入。人工協(xié)議變異需要測試工程師能夠通過自己豐富的工作經(jīng)驗針對測試目標協(xié)議生成有效的測試數(shù)據(jù)。自動協(xié)議生成協(xié)議在理解測試程序的協(xié)議規(guī)約和文件格式的前提下,通過識別數(shù)據(jù)包或者文件中的靜態(tài)和動態(tài)部分來創(chuàng)建一個描述協(xié)議如何工作的語法模板,之后測試工具動態(tài)解析這些語法模板,進行改變數(shù)值變量來生成測試數(shù)據(jù)。根據(jù)目標對象的特點和挖掘工作的一般流程,需要考慮如何能夠?qū)δ繕顺绦虮O(jiān)控以保證及時發(fā)現(xiàn),定位目標程序錯誤。模糊測試是一種黑盒測試方法,如果盲目地進行測試效率低下。因此,本文選擇以D-Link無線路由器為研究對象,根據(jù)信息安全漏洞共享平臺發(fā)布的安全公告,選擇一個可利用的安全漏洞來說明設計的模糊測試方法的可行性。
通常無線路由器漏洞的分析與利用的關鍵環(huán)節(jié)包括獲取固件、提取文件系統(tǒng)、漏洞分析與利用以及漏洞挖掘等幾個階段[4]。固件獲取的方法可以手工提取,也可以從路由器廠商專門的技術支持網(wǎng)站下載。一般情況下可以從路由器廠商獲取可用的固件,但是在廠商沒有提供固件下載時,就需要手工來提取。
手工提取主要是通過路由器硬件提供的接口將計算機與主板連接,從路由器的Flash中提取固件。手工提取方法要求安全人員熟悉與路由器硬件相關的基礎知識,操作難度較大。因此,如果能獲取到廠商提供的固件,就可以降低漏洞挖掘的難度。從D-Link技術服務網(wǎng)站獲取到了相應的固件文件,并使用Binwalk從固件中提取出了文件系統(tǒng)。接下來使用QEMU運行無線路由器中的應用程序,但出現(xiàn)應用程序運行失敗的情況,需要利用IDA Pro動態(tài)調(diào)試和靜態(tài)反匯編對函數(shù)代碼進行分析,編寫劫持函數(shù)動態(tài)庫來修復路由器運行環(huán)境。
上述內(nèi)容已完成漏洞挖掘分析前期準備工作,接下來詳細介紹設計基于模糊測試方法的漏洞挖掘分析過程。基于模糊測試方法實現(xiàn)的工具種類很多,其中Sulley是一款使用Python語言開發(fā)的專用于網(wǎng)絡協(xié)議的模糊測試框架,其設計目標是為了簡化數(shù)據(jù)生成,簡化與目標系統(tǒng)之間的數(shù)據(jù)傳輸,以及目標系統(tǒng)的監(jiān)控,給用戶提供友好的API編程接口。
本文研究的目標是挖掘分析SOHO無線路由器通信協(xié)議、應用服務方面的潛在漏洞。因此,參考文獻[18]給出的基于Sulley改進的工控協(xié)議模糊測試架構設計思路,同樣設計了基于Sulley的SOHO無線路由器進行模糊測試的方法。首先根據(jù)通信協(xié)議類型來自定義請求。通信協(xié)議類型發(fā)現(xiàn)通??梢圆捎靡恍└呒壦惴ǖ闹悄軈f(xié)議分析理論和工具。由于SOHO接入無線路由器廣泛使用HTTP、HTTPS應用層協(xié)議和D-Link MYDLINK云協(xié)議,并且從已發(fā)布的漏洞公告可知上述三種協(xié)議存在安全漏洞。因此,本文僅針對這三種協(xié)議進行模糊測試,降低了挖掘分析難度,但是缺乏普遍性。
在基于模糊測試的漏洞挖掘分析中,測試用例的設計至關重要,好的測試用例可以提高漏洞挖掘的效率。構造測試用例時,不應該局限于邊界附近區(qū)域的數(shù)據(jù),而是分析在該協(xié)議中有哪些位置可能成為模糊測試的數(shù)據(jù)輸入點,以此來構建輸入矩陣。輸入矩陣盡可能包含引起程序奔潰的各種輸入向量。然后編寫適合模糊測試器讀取并產(chǎn)生測試用例的腳本文件,之后測試的過程就可以通過自動化方式進行。測試腳本文件中實現(xiàn)各個請求的導入,會話管理以及設置代理參數(shù)等。
其次使用QEMU啟動MIPS系統(tǒng)并完成網(wǎng)絡配置以后,執(zhí)行Sulley網(wǎng)絡監(jiān)視代理和進程監(jiān)視代理模塊,開始監(jiān)聽網(wǎng)絡數(shù)據(jù)包的傳輸和監(jiān)視測試目標程序的運行情況。
最后開始運行測試腳本,此時Sulley會生成一個有向無環(huán)會話圖,Sulley模糊測試器將遍歷整個會話圖。在整個測試腳本執(zhí)行過程中,網(wǎng)絡監(jiān)視代理和進程監(jiān)視代理模塊會分別記錄測試用例的發(fā)送順序編號,并將這些測試用例保存在特定為文件夾中。如果有測試用例導致目標程序出錯或者異常,進程監(jiān)視代理模塊就會反饋給測試系統(tǒng)一個高層信息,并且將錯誤信息記錄到測試日志中,事后調(diào)出引起錯誤的測試用例并查看錯誤信息。
一旦確定被檢測目標出錯或者異常,則需要確定所發(fā)現(xiàn)的漏洞是否重現(xiàn)。漏洞重現(xiàn)成功之后,還需要進一步判斷該漏洞是否可以利用。在上一步的模糊測試過程中模糊器捕獲并保存了幾個異常情況的網(wǎng)絡交互過程數(shù)據(jù)包。通過對D-Link系列SOHO無線接入路由器相關歷史漏洞的檢索,發(fā)現(xiàn)這些異常情況可能是由函數(shù)引起的緩沖區(qū)溢出。因此,需要進一步根據(jù)異常數(shù)據(jù)來編寫驗證腳本驗證猜測是否正確。
從已知漏洞公告可知,漏洞產(chǎn)生的可能原因是HTTP協(xié)議的POST參數(shù)中名為“password”參數(shù)過長導致的。因此,在構造完成HTTP請求的地址之后,設置POST參數(shù),使用urllib庫提供的urlencode()函數(shù)偽造超長的參數(shù),接著發(fā)起HTTP連接請求。從Boa服務器反饋的結(jié)果來看,程序運行異常情況與模糊測試捕獲到的異常情況相同,并查看當前堆棧情況,偽造的超長的“password”參數(shù)覆蓋了部分內(nèi)存地址,導致程序執(zhí)行出現(xiàn)異常,驗證了此緩沖區(qū)溢出漏洞可以被利用。
緩沖區(qū)溢出漏洞的利用通常是攻擊者根據(jù)漏洞特征編寫基于MIPS指令系統(tǒng)的shellcode,劫持程序正常執(zhí)行流程,使程序跳轉(zhuǎn)到攻擊者注入的shellcode執(zhí)行任務。SOHO無線接入路由器為了防止惡意代碼攻擊,在系統(tǒng)當中啟用了數(shù)據(jù)執(zhí)行保護技術,因此攻擊者提前需要構建一個特殊的輸入向量以填充函數(shù)的??臻g,利用ROP Chain[1,4]將原有的各個gadget代碼片段按照順序拼接起來,最終完成復雜的功能。
現(xiàn)如今,互聯(lián)網(wǎng)技術已經(jīng)深入滲透到了各行各業(yè),互聯(lián)網(wǎng)作為社會經(jīng)濟產(chǎn)業(yè)的支撐點,面臨著巨大的網(wǎng)絡安全風險。SOHO無線接入路由器作為互聯(lián)網(wǎng)的入口,它的安全會影響到整個互聯(lián)網(wǎng)的安全。因此,有必要針對無線接入路由設備的安全開展研究,重點分析挖掘潛在的一些安全漏洞,并針對這些安全漏洞提出相應的防護技術。
基于上述目的,本文針對SOHO無線路由設備的網(wǎng)絡協(xié)議進行漏洞挖掘,提出一種基于Sulley模糊測試的漏洞挖掘分析框架,可實現(xiàn)安全協(xié)議漏洞自動掃描分析。該方法僅對已知的網(wǎng)絡安全漏洞進行挖掘分析,驗證了其設計的有效性,并未深入挖掘分析未知的一些安全漏洞。因此,未來需要將此方法應用于不同種類的無線路由器,深入挖掘分析這些無線路由設備潛在的一些安全漏洞。