?

SOHO無線接入路由器的安全漏洞挖掘分析方法研究

2020-10-22 10:27何長鵬
網絡空間安全 2020年12期
關鍵詞:測試用例固件安全漏洞

何長鵬

(甘肅政法大學公安技術學院,甘肅蘭州 730070)

1 引言

隨著移動互聯網的迅猛發展,互聯網的影響正逐步從消費領域向傳統的社會核心領域滲透,并逐漸向產業互聯網轉型。產業互聯網時代的到來,把人類帶入了智能時代。以智能手機為代表的智能終端設備是移動互聯網的入口設備,它們不僅具有傳統的通訊功能,還具有和個人計算機類似的功能,體積小、可穿戴、攜帶方便等諸多優點。由于移動設備包含大量敏感的個人信息,電子商務、移動支付等業務涉及錢財交易,使得惡意攻擊者往往選擇移動互聯網作為攻擊目標。一方面智能終端設備的操作系統和應用程序存在大量的安全漏洞,以及一些移動惡意軟件的出現,導致移動互聯網的安全形勢更加嚴峻。另一方面,終端用戶接入網絡變的容易,人們所生活的環境中到處都有WiFi熱點。

智慧城市、智慧校園以及智慧家庭都離不開小型的SOHO無線路由器,SOHO無線接入路由器作為家庭和中小型辦公環境中普及度極高的網絡接入設備,它的安全影響著整個互聯網的安全。然而SOHO無線路由器的安全問題往往會被人們所忽略,研究者們關注的重點是大型骨干路由交互設備漏洞攻擊技術,針對SOHO無線接入路由交換設備的軟硬件漏洞挖掘分析研究較少[1-4]。

據調查研究發現,大部分對于智能手機等終端設備的入侵,其源頭是攻擊者從小型無線接入路由器進行滲透,進而控制用戶的手機從而竊取用戶隱私數據、獲取賬號密碼信息、實施網絡劫持和網絡釣魚等攻擊行為[5]。因此,針對普通的、小型的SOHO無線接入路由器的安全漏洞挖掘及漏洞相關攻防技術的研究具有重要的意義和必要性。

2 相關概述

安全漏洞[6]是指信息系統在設計、實現或者運行管理過程中存在的缺陷或不足,從而使攻擊者能夠在未授權的情況下利用這些缺陷破壞系統的安全策略,它是研究安全問題的生命線,是網絡攻擊和防御的核心問題。漏洞挖掘是指采用一定的信息技術方法去發現、分析和利用信息系統中漏洞的過程。漏洞挖掘技術分為白盒測試、黑盒測試、灰盒測試三種類型,其區別是由測試者所得到的資源決定的[7]。傳統漏洞挖掘的目標對象僅僅針對軟件系統本身,但目前越來越多的人開始關注存在于電子設備硬件電路或固件系統中的漏洞,不再局限于軟件本身[4]。

近些年來,出現了大量的漏洞挖掘系統,也涌現了種類繁多的挖掘技術及方法[1-3,7-9],但一直以來很少有研究者去探索和研究SOHO無線路由器存在的漏洞,挖掘分析SOHO無線路由的漏洞,找出對應的防護策略。SOHO無線路由器作為一臺嵌入式微型計算機,存在各種類型的漏洞,包括身份脆弱性漏洞、Web配置界面漏洞、緩沖區溢出漏洞和固有后門型漏洞等[10]。在遭受攻擊者針對漏洞和后門的攻擊時卻缺少有效的防御手段。

人們通常依據分析對象維度,把漏洞挖掘分為基于源代碼和基于可執行代碼的挖掘,這就定義了一個相對狹義的漏洞挖掘對象范疇,即只針對軟件系統的漏洞挖掘[8]。從漏洞的分析角度,將無線路由器系統漏洞分為軟硬件漏洞、設備運行的協議漏洞以及配置管理漏洞三類是較為合理的[4]。

目前,廣泛應用的漏洞挖掘技術主要分為兩大類[4]:一是靜態代碼審計;二是模糊測試[8,11,12](Fuzzing)。模糊測試是一種介于完全的手工滲透測試與完全的自動化測試之間的安全性黑盒測試類型,與靜態代碼審核相比,模糊測試有許多的優點[13]。模糊測試通過向目標程序發送大量的畸形數據,以觸發異常崩潰來發現程序潛在的漏洞[14]。模糊測試中測試用例的有效性是發現協議或系統未知漏洞的關鍵。文獻[15]通過深度學習方法省略了傳統網絡協議漏洞挖掘過程中的人工對網絡協議的分析。

文獻[3,4]認為設備的逆向剖析及代碼抽取、仿真成為挖掘的基礎。漏洞挖掘重要的前提之一是要能夠識別、提取、分析和運行設備中的代碼,而這些代碼在研究過程的測試必須是一個能夠滿足漏洞挖掘需求的仿真環境或一個在線的真實環境。然而,生活中接觸到大量的網絡,漏洞挖掘必須面對種類繁多的硬件設備和軟件系統對于設備的逆向剖析,并從中抽取代碼,提供仿真、調試和分析環境成為洞挖掘必須要做的重要的基礎工作[16]。

因此,本文將重點研究家用路由交互設備所面臨的安全問題,挖掘分析路由設備運行的固件和協議漏洞。通過搭建真實運行環境,分析SOHO接入無線路由器體系架構、固件、運行環境等,實現對網路協議安全漏洞掃描分析,并根據挖掘的漏洞研究相應的防護技術。

3 整體框架設計

3.1 路由器體系架構分析

SOHO無線寬帶路由器作為一種嵌入式設備,硬件部分通常選擇支持ARM或MIPS體系架構的微處理器,系統軟件部分則基于Linux內核定制裁剪以后進行移植[17]。上層軟件架構是主要包括:路由模塊、防火墻模塊以及用戶遠程管理模塊。SOHO無線路由設備作為一種嵌入式設備,包含文件系統在內的核心內容均以固件的形式存儲在閃存(Flash)中[3]。固件通常為二進制數據流文件,包括固件頭部、引導程序、內核鏡像、文件系統等幾部分。固件的核心內容是文件系統,其中包含全部的可執行程序、配置文件等信息。文件系統提取的方法較多,除了手動提取外,還可以利用一些現有的比較優秀的工具,比如Binwalk、Firmware-analysis-toolkit等。Binwalk可以協助安全人員從固件鏡像文件中提取數據及進行逆向工程。

為了實現SOHO路由器的漏洞挖掘分析,本文參考文獻[4]提供的方法搭建運行環境。與文獻[4]不同之處本文建立了真實的Linux運行環境,安裝配置模擬處理器軟件QEMU、交互式反匯編編譯工具IDA Pro以及MIPS交叉編譯環境。其中,模擬處理器軟件QEMU具有高速及跨平臺的特性,能模擬真實計算機的速度;IDA Pro具備強大的腳本功能,實現漏洞自動化分析,支持用戶快速開發Python腳本程序來驗證發掘的漏洞;配置MIPS交叉編譯環境,方便后期shellcode的編譯執行。

3.2 文件系統提取

模糊測試的理論和應用都已經比較成熟,基于模糊測試方法實現的工具種類也很多,比如SPIKE、Sulley、AFL、Burp Suit和ClusterFuzz等。模糊測試中生成有效的測試數據至關重要,可以利用測試用例設計、隨機生成輸入、人工協議變異、自動協議生成等方法來建立測試集。測試用例設計的好壞直接影響測試的效果,使用各種不同的測試用例對目標進行測試,通過監測目標執行情況來發現漏洞。

隨機生成輸入則需要考慮如何生成隨機但有效的輸入。人工協議變異需要測試工程師能夠通過自己豐富的工作經驗針對測試目標協議生成有效的測試數據。自動協議生成協議在理解測試程序的協議規約和文件格式的前提下,通過識別數據包或者文件中的靜態和動態部分來創建一個描述協議如何工作的語法模板,之后測試工具動態解析這些語法模板,進行改變數值變量來生成測試數據。根據目標對象的特點和挖掘工作的一般流程,需要考慮如何能夠對目標程序監控以保證及時發現,定位目標程序錯誤。模糊測試是一種黑盒測試方法,如果盲目地進行測試效率低下。因此,本文選擇以D-Link無線路由器為研究對象,根據信息安全漏洞共享平臺發布的安全公告,選擇一個可利用的安全漏洞來說明設計的模糊測試方法的可行性。

通常無線路由器漏洞的分析與利用的關鍵環節包括獲取固件、提取文件系統、漏洞分析與利用以及漏洞挖掘等幾個階段[4]。固件獲取的方法可以手工提取,也可以從路由器廠商專門的技術支持網站下載。一般情況下可以從路由器廠商獲取可用的固件,但是在廠商沒有提供固件下載時,就需要手工來提取。

手工提取主要是通過路由器硬件提供的接口將計算機與主板連接,從路由器的Flash中提取固件。手工提取方法要求安全人員熟悉與路由器硬件相關的基礎知識,操作難度較大。因此,如果能獲取到廠商提供的固件,就可以降低漏洞挖掘的難度。從D-Link技術服務網站獲取到了相應的固件文件,并使用Binwalk從固件中提取出了文件系統。接下來使用QEMU運行無線路由器中的應用程序,但出現應用程序運行失敗的情況,需要利用IDA Pro動態調試和靜態反匯編對函數代碼進行分析,編寫劫持函數動態庫來修復路由器運行環境。

3.3 基于模糊測試的漏洞挖掘分析方法

上述內容已完成漏洞挖掘分析前期準備工作,接下來詳細介紹設計基于模糊測試方法的漏洞挖掘分析過程?;谀:郎y試方法實現的工具種類很多,其中Sulley是一款使用Python語言開發的專用于網絡協議的模糊測試框架,其設計目標是為了簡化數據生成,簡化與目標系統之間的數據傳輸,以及目標系統的監控,給用戶提供友好的API編程接口。

本文研究的目標是挖掘分析SOHO無線路由器通信協議、應用服務方面的潛在漏洞。因此,參考文獻[18]給出的基于Sulley改進的工控協議模糊測試架構設計思路,同樣設計了基于Sulley的SOHO無線路由器進行模糊測試的方法。首先根據通信協議類型來自定義請求。通信協議類型發現通??梢圆捎靡恍└呒壦惴ǖ闹悄軈f議分析理論和工具。由于SOHO接入無線路由器廣泛使用HTTP、HTTPS應用層協議和D-Link MYDLINK云協議,并且從已發布的漏洞公告可知上述三種協議存在安全漏洞。因此,本文僅針對這三種協議進行模糊測試,降低了挖掘分析難度,但是缺乏普遍性。

在基于模糊測試的漏洞挖掘分析中,測試用例的設計至關重要,好的測試用例可以提高漏洞挖掘的效率。構造測試用例時,不應該局限于邊界附近區域的數據,而是分析在該協議中有哪些位置可能成為模糊測試的數據輸入點,以此來構建輸入矩陣。輸入矩陣盡可能包含引起程序奔潰的各種輸入向量。然后編寫適合模糊測試器讀取并產生測試用例的腳本文件,之后測試的過程就可以通過自動化方式進行。測試腳本文件中實現各個請求的導入,會話管理以及設置代理參數等。

其次使用QEMU啟動MIPS系統并完成網絡配置以后,執行Sulley網絡監視代理和進程監視代理模塊,開始監聽網絡數據包的傳輸和監視測試目標程序的運行情況。

最后開始運行測試腳本,此時Sulley會生成一個有向無環會話圖,Sulley模糊測試器將遍歷整個會話圖。在整個測試腳本執行過程中,網絡監視代理和進程監視代理模塊會分別記錄測試用例的發送順序編號,并將這些測試用例保存在特定為文件夾中。如果有測試用例導致目標程序出錯或者異常,進程監視代理模塊就會反饋給測試系統一個高層信息,并且將錯誤信息記錄到測試日志中,事后調出引起錯誤的測試用例并查看錯誤信息。

3.4 協議安全漏洞驗證和利用

一旦確定被檢測目標出錯或者異常,則需要確定所發現的漏洞是否重現。漏洞重現成功之后,還需要進一步判斷該漏洞是否可以利用。在上一步的模糊測試過程中模糊器捕獲并保存了幾個異常情況的網絡交互過程數據包。通過對D-Link系列SOHO無線接入路由器相關歷史漏洞的檢索,發現這些異常情況可能是由函數引起的緩沖區溢出。因此,需要進一步根據異常數據來編寫驗證腳本驗證猜測是否正確。

從已知漏洞公告可知,漏洞產生的可能原因是HTTP協議的POST參數中名為“password”參數過長導致的。因此,在構造完成HTTP請求的地址之后,設置POST參數,使用urllib庫提供的urlencode()函數偽造超長的參數,接著發起HTTP連接請求。從Boa服務器反饋的結果來看,程序運行異常情況與模糊測試捕獲到的異常情況相同,并查看當前堆棧情況,偽造的超長的“password”參數覆蓋了部分內存地址,導致程序執行出現異常,驗證了此緩沖區溢出漏洞可以被利用。

緩沖區溢出漏洞的利用通常是攻擊者根據漏洞特征編寫基于MIPS指令系統的shellcode,劫持程序正常執行流程,使程序跳轉到攻擊者注入的shellcode執行任務。SOHO無線接入路由器為了防止惡意代碼攻擊,在系統當中啟用了數據執行保護技術,因此攻擊者提前需要構建一個特殊的輸入向量以填充函數的??臻g,利用ROP Chain[1,4]將原有的各個gadget代碼片段按照順序拼接起來,最終完成復雜的功能。

4 結束語

現如今,互聯網技術已經深入滲透到了各行各業,互聯網作為社會經濟產業的支撐點,面臨著巨大的網絡安全風險。SOHO無線接入路由器作為互聯網的入口,它的安全會影響到整個互聯網的安全。因此,有必要針對無線接入路由設備的安全開展研究,重點分析挖掘潛在的一些安全漏洞,并針對這些安全漏洞提出相應的防護技術。

基于上述目的,本文針對SOHO無線路由設備的網絡協議進行漏洞挖掘,提出一種基于Sulley模糊測試的漏洞挖掘分析框架,可實現安全協議漏洞自動掃描分析。該方法僅對已知的網絡安全漏洞進行挖掘分析,驗證了其設計的有效性,并未深入挖掘分析未知的一些安全漏洞。因此,未來需要將此方法應用于不同種類的無線路由器,深入挖掘分析這些無線路由設備潛在的一些安全漏洞。

猜你喜歡
測試用例固件安全漏洞
尼康旗艦Z9升級新固件延長高速連拍時間
基于國產化IT 基礎設施的通用固件安全模型研究
芻議計算機軟件中的安全漏洞檢測技術
Evosuite和Randoop單元測試用例生成工具覆蓋率對比分析①
Randoop 和Evosuite 生成測試用例的變異檢測能力分析
智能設備安全漏洞知多少
計算機軟件安全漏洞檢測技術
英特爾發布免費固件引擎
提取ROM固件中的APP
測試用例集的優化技術分析與改進
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合