騰金輝,光焱,舒輝,張冰
基于流量分析的軟件升級漏洞自動檢測方法
騰金輝,光焱,舒輝,張冰
(戰(zhàn)略支援部隊信息工程大學,河南 鄭州 450001)
軟件升級過程中,缺乏對升級信息或升級包的認證可能會導致基于中間人攻擊的遠程代碼執(zhí)行漏洞。為此,提出一種升級漏洞自動檢測方法。該方法通過提取升級過程中的網(wǎng)絡流量,對升級機制自動畫像,將其與漏洞特征向量匹配,預判升級漏洞;在模擬驗證環(huán)境中,利用畫像信息實施中間人攻擊,驗證檢測結(jié)果?;谠摲椒ㄔO計了升級漏洞自動分析與驗證系統(tǒng),對184個Windows應用軟件樣本進行測試,檢測出117個樣本的升級漏洞,證明了本方法的有效性。
軟件升級;流量分析;漏洞檢測;自動化分析與驗證
在整個軟件生命周期中,軟件的維護升級工作是最重要的環(huán)節(jié)[1],通過升級至新版本,可以達到增添軟件功能、修復已知錯誤與漏洞、提升用戶體驗等目的。然而,從軟件安全性角度考慮,一方面,升級過程通常包括可執(zhí)行文件的下載與自動執(zhí)行;另一方面,用戶對升級過程中下載的可執(zhí)行文件,往往有著遠超一般可執(zhí)行文件的信任程度。因此,若升級過程存在漏洞,由此引發(fā)的升級文件被篡改或替換,極易導致用戶遭受遠程代碼自動執(zhí)行攻擊,對用戶系統(tǒng)的安全性造成嚴重損害。此外,基于軟件升級的攻擊方法是多種攻擊手段的綜合利用,如中間人攻擊、流量劫持、軟件逆向等,因而單一的防御方法不能有效對抗這種攻擊,較之平常的攻擊手段,其成功率更高,更隱蔽[2]。升級過程產(chǎn)生的流量也能更順利地通過基于流量檢測方法的防火墻、殺毒軟件、IDS等的防御監(jiān)控體系,即使用戶終端建立了較為完善的邊界安全防護機制、用戶具備較高的安全意識水平,也依然難以填補這一缺陷。
基于軟件升級漏洞的攻擊有較多案例。2017年7月,中國山東、山西、浙江、福建等省爆發(fā)大規(guī)模軟件升級劫持事件,大量計算機在升級過程中感染木馬病毒;2017年8月,攻擊者通過劫持烏克蘭流行專用會計軟件M.E.Doc的升級服務器,向用戶推送包含NotPetya病毒的升級包,對政府、銀行、電力系統(tǒng)、通信系統(tǒng)等實施攻擊;2018年12月,一款木馬通過“驅(qū)動人生”的升級通道,利用“永恒之藍”漏洞攻擊了超過10萬用戶;2019年3月,卡巴斯基實驗室曝光華碩(ASUS)的軟件升級服務器遭到入侵,攻擊者通過軟件升級,在用戶電腦中安裝惡意程序。上述安全事件都反映出軟件升級機制漏洞會導致巨大安全風險。
目前,已有的針對軟件升級漏洞的相關研究主要圍繞升級漏洞利用、檢測以及安全防御展開。在升級漏洞利用方面,2017年,360天擎團隊發(fā)布關于國內(nèi)政企類軟件安全性的分析報告,其中包含了針對軟件升級的相關漏洞的案例以及攻擊原理分析;2015年,彭先覺等[2]提出一種HTTP協(xié)議通信校驗值誤用類型軟件升級漏洞的攻擊方法,并對某團購網(wǎng)站的舊版軟件進行了實際攻擊測試,驗證了該攻擊的可行性。在升級漏洞檢測方面,2015年,傅建明等[3]提出一種靜態(tài)分析與動態(tài)分析相結(jié)合的針對殺毒軟件升級流程安全性分析方法。2017年,Adam K提出了一種基于特征信息匹配的升級漏洞自動檢測方法,能夠捕獲針對軟件升級過程的攻擊。在安全防御方面,2018年,周振飛[4]從機理與防御兩個方面,對軟件供應鏈污染攻擊進行研究,并提出了針對特定種類攻擊的解決方案;2015年,Catuogno等[5]提出一種升級框架,不同于已有的升級框架(如WinGup)使用SSL協(xié)議保證升級過程的安全性,該框架基于非交互式密鑰進行升級,同時依賴于靜態(tài)屬性策略的軟件安裝與升級框架,并對該方案進行了性能分析。
上述工作從多個方面揭示了軟件升級漏洞的原理以及相應的檢測方法。然而,這些工作存在兩方面問題:一是缺乏清晰明確的升級漏洞分類特征描述模型,影響漏洞檢測的范圍和準確性;二是漏洞分析與檢測的自動化程度較低,難以滿足大批量樣本條件下的檢測要求。
為解決上述問題,本文提出一種基于流量分析的軟件升級漏洞自動檢測方法。該方法通過對軟件升級過程中網(wǎng)絡通信流量特征的分析,建立面向流量特征的升級漏洞特征分類模型;綜合使用字符串模糊匹配和頻率加權(quán)比對等方法,實現(xiàn)對升級過程網(wǎng)絡數(shù)據(jù)流特征的提取與分析,實現(xiàn)對升級過程的自動畫像,進而通過特征向量匹配,實現(xiàn)對多種類型升級漏洞的自動化檢測。同時,設計漏洞自動化驗證平臺,通過模擬攻擊的方法,對漏洞檢測的結(jié)果進行自動驗證,提高檢測結(jié)果的準確性。
軟件在線升級的內(nèi)容本身,無論是程序組件還是完整的升級包,都可視為公開的數(shù)據(jù)和資源,無須進行保密。軟件升級過程的漏洞,主要體現(xiàn)為對升級服務器和升級包的認證機制漏洞,主要包括對升級服務器身份認證缺失,以及對升級包的真實性、完整性與新鮮性認證的缺失等。從升級漏洞的具體形式來看,主要體現(xiàn)在升級過程的3個不同階段。分別是發(fā)起階段,客戶端與服務器交互,獲取相關配置信息與升級包URL;下載階段,客戶端根據(jù)URL下載升級包;安裝階段,安裝升級包。涉及網(wǎng)絡數(shù)據(jù)的主要為前兩個階段,根據(jù)這兩個階段網(wǎng)絡數(shù)據(jù)特征,對升級漏洞進行分類,如表1所示。
(1) HTTP協(xié)議通信類漏洞
對于無防護,在流量側(cè)可直接通過中間人的方式劫持并篡改發(fā)起階段的數(shù)據(jù)包中的升級包下載鏈接,將其替換為惡意代碼的下載鏈接從而實現(xiàn)惡意代碼的下載,并在安裝階段實現(xiàn)遠程代碼與程序的自動執(zhí)行,具體實例如CNTV央視影音客戶端(測試版本4.4.0.0,受影響版本4.6.2.1及以下,CNNVD=201903-1283)。
對于校驗誤用,在流量側(cè)可直接通過中間人的方式劫持并篡改發(fā)起階段的數(shù)據(jù)包中的新版本下載鏈接以及對應的校驗值,將其替換為惡意代碼的下載鏈接以及對應的校驗值,從而實現(xiàn)惡意代碼的下載并在安裝階段實現(xiàn)遠程代碼與程序的自動執(zhí)行,具體實例如優(yōu)酷視頻播放器(測試版本7.2.6.8110,受影響版本7.7.7.4191及以下,CNVD-2018-06299)。
(2) HTTPS協(xié)議通信類漏洞
對于HTTPS保護缺失,在流量側(cè)可通過中間人的方式劫持篡改完成。對于發(fā)起階段使用HTTP協(xié)議的,可劫持該階段的配置信息并進行篡改。對于下載階段可通過強制返回虛假重定向數(shù)據(jù)包,完成發(fā)起階段或下載階段的HTTPS協(xié)議繞過,實現(xiàn)惡意代碼的下載,從而在安裝階段實現(xiàn)遠程代碼與程序的自動執(zhí)行,具體實例如5K Player(加密傳輸配置信息,下載階段使用HTTP協(xié)議,測試版本5.0,受影響版本5.7及以下),GOM AUDIO(HTTP協(xié)議傳輸HTTPS鏈接以及配置信息,測試版本2.3.35.5296,受影響版本2.3.38.5300及以下)。
對于HTTP重定向誤用,在流量側(cè)可分別劫持下載階段或發(fā)起階段的重定向的返回數(shù)據(jù)包并對重定向鏈接進行篡改,完成HTTPS協(xié)議繞過,實現(xiàn)惡意代碼的下載,從而在安裝階段實現(xiàn)遠程代碼與程序的自動執(zhí)行,具體實例如SweetHome3D(下載過程使用重定向,測試版本5.5,受影響版本5.7及以下),TunesKit Audiobook Converter (發(fā)起階段使用重定向,測試版本3.0.3,受影響版本3.0.8及以下)。
表1 漏洞分類特征描述
為實現(xiàn)軟件升級漏洞的自動化檢測,首先需要對升級漏洞特征進行定義和描述。然后通過對實例分析總結(jié),從升級過程的網(wǎng)絡流量數(shù)據(jù)中,篩選出與升級漏洞檢測相關的22種關鍵信息要素,將其取值對應的向量。作為升級漏洞的檢測依據(jù),即升級漏洞特征向量,信息要素按照升級的發(fā)起和下載兩個階段劃分如表2所示。
將表1中的漏洞分類與表2中信息要素相結(jié)合,得到不同類型的升級漏洞特征向量,如表3所示。
基于漏洞特征向量,本節(jié)給出一種軟件升級漏洞自動化檢測方法,以關鍵信息要素的提取與分析為基礎,按照“升級畫像—漏洞檢測—漏洞驗證—結(jié)果確認”的方法,實現(xiàn)升級漏洞自動分析與檢測,流程如圖1所示。
漏洞流程分為4步。
Step1 升級畫像。結(jié)合文件操作記錄與升級流量記錄,對升級過程中與漏洞檢測相關的關鍵數(shù)據(jù)包進行定位,提取其中的關鍵信息要素,構(gòu)建描述升級過程與機制的“升級畫像”。
Step2 漏洞檢測。根據(jù)升級畫像的向量描述,結(jié)合漏洞特征向量,進行基于向量匹配的漏洞檢測,得到漏洞檢測預結(jié)果。
Step3 漏洞驗證。在模擬攻擊環(huán)境下,根據(jù)檢測結(jié)果進行驗證形成最終的檢測結(jié)論。該方法綜合了理論分析與實際驗證,有效確保了分析的準確性。
Step4 結(jié)果確認。根據(jù)模擬攻擊結(jié)果對檢測結(jié)論進行確認,并輸出畫像、檢測結(jié)果、漏洞驗證配置文件。
表2 升級關鍵信息要素
【注】*項目實際情況可為空,括號中內(nèi)容為表3中漏洞特征向量的對應值。
表3 升級漏洞特征向量
【注】*項目根據(jù)實際情況可選(具體值可為空/0/1),空白為使用HTTPS協(xié)議無法提取具體值,值的說明參見表2括號中內(nèi)容。
圖1 漏洞檢測流程
Figure 1 The flow of vulnerability detection
下面按照流程分別介紹各個步驟所使用的具體方法。
升級過程中軟件客戶端與升級服務器之間的網(wǎng)絡通信數(shù)據(jù)中,包含關于升級方式、升級流程、升級安裝包格式等一系列關鍵信息。為了對升級過程網(wǎng)絡數(shù)據(jù)進行提取與分析,本文使用tshark進行實現(xiàn)。為便于對網(wǎng)絡流量數(shù)據(jù)包的自動化分析,將流量記錄以json格式保存,單個json格式流量包結(jié)構(gòu)示例如圖2所示。
圖2 json數(shù)據(jù)包結(jié)構(gòu)
Figure 2 The structure diagram of json data packet
升級畫像所需的信息提取關鍵在于對發(fā)起階段和下載階段的相關數(shù)據(jù)包進行準確定位。根據(jù)目標軟件升級模式的不同,采用分別基于下載階段信息和發(fā)起階段信息兩種信息定位和提取方法。
3.2.1 基于下載階段信息的升級畫像
該方法首先在流量記錄的同時,通過文件監(jiān)控,獲取升級包文件名,并計算該文件對應的各種可能校驗值(校驗值類型見表2 發(fā)起階段prog_verify信息欄)。在此基礎上,按照4個步驟實現(xiàn)基于下載階段的升級畫像,流程如圖3所示。
Step1 通信協(xié)議掃描記錄
對所有的通信數(shù)據(jù)包進行掃描,判斷通信協(xié)議并記錄,如果存在HTTP協(xié)議,進行Step2,否則結(jié)束。
Step2 下載階段數(shù)據(jù)包定位
采用兩種算法對下載階段數(shù)據(jù)包進行定位
算法1 基于升級包文件名的精確搜索定位
輸入 升級包文件名,升級流量數(shù)據(jù)包
輸出 下載階段數(shù)據(jù)包信息
算法步驟:
1) 對所有HTTP協(xié)議的流量數(shù)據(jù)包進行“GET”關鍵字匹配,提取下載請求及其對應的URL;
2) 在1)提取的所有下載請求及其對應的URL中,搜索文件監(jiān)控到的升級包文件名,提取該文件下載請求的URL及其所在數(shù)據(jù)包的通信五元組并輸出。
算法結(jié)束
算法2 基于文件類型的模糊匹配定位
輸入 軟件名,升級流量數(shù)據(jù)包
輸出 下載階段數(shù)據(jù)包信息
圖3 基于下載階段信息的升級畫像流程
算法步驟:
1) 對所有HTTP協(xié)議的流量數(shù)據(jù)包進行“GET”關鍵字匹配,提取下載請求及其對應的URL;
2) 在1)提取的所有下載請求及其對應的URL中,篩選exe、msi、rar、zip等類型的可執(zhí)行文件的下載請求及其URL;
3) 根據(jù)Levenshtein Distance算法[6]分別計算所有下載請求URL中的文件名和測試軟件名之間的相似度為:
4) 選取與舊版本程序文件名相似度最大的新下載程序文件名,提取對應下載請求中的升級包URL及通信五元組,并輸出。
算法結(jié)束
Step3 發(fā)起階段數(shù)據(jù)包定位
根據(jù)Step2提取到的升級包URL,采用基于加權(quán)向量的配置信息數(shù)據(jù)包定位算法對數(shù)據(jù)包進行定位。
算法3 基于加權(quán)向量的發(fā)起階段數(shù)據(jù)包定位
輸入 升級包URL,升級流量數(shù)據(jù)包
輸出 發(fā)起階段數(shù)據(jù)包信息
算法步驟:
1) 對算法2提取的升級包URL按照協(xié)議名稱://服務器名稱(IP地址)/路徑/文件名進行拆分,形成搜索字典;
2) 對1)中的搜索字典,在所有HTTP協(xié)議的流量數(shù)據(jù)包的http_file_data數(shù)據(jù)段內(nèi)容中進行搜索匹配,統(tǒng)計搜索字典中各個字符串在該數(shù)據(jù)段中出現(xiàn)的次數(shù),形成各個數(shù)據(jù)包相應的字典統(tǒng)計向量;
3) 分別計算各個數(shù)據(jù)包對應的字典統(tǒng)計向量加權(quán)和,權(quán)重及計算公式如表4所示。
表4 權(quán)重信息
4) 在所有HTTP協(xié)議的流量數(shù)據(jù)包的http_file_data數(shù)據(jù)段內(nèi)容中,對以http://或https://開頭,以.ini/.dat/.xml/.cfg等配置文件類型擴展名結(jié)尾的URL進行搜索匹配,匹配成功,則截取其URL,通信五元組并輸出,轉(zhuǎn)至5);
5)根據(jù)3)、4)定位數(shù)據(jù)包對應的通信五元組進行發(fā)起階段數(shù)據(jù)包定位,提取發(fā)起升級請求的內(nèi)容及對應的升級請求URL并輸出。
算法結(jié)束
Step4 重定向掃描
算法4 重定向掃描
輸入 發(fā)起階段和下載階段通信五元組,升級流量數(shù)據(jù)包
輸出 升級過程重定向信息
算法步驟:
1) 對所有HTTP協(xié)議的流量數(shù)據(jù)包進行“301/302/303 Found”匹配,記錄所有的重定向請求包以及回應包;
2) 在1)提取的所有重定向數(shù)據(jù)包中,對Step2中發(fā)起階段請求URL和Step3中下載階段升級包URL進行掃描匹配,記錄匹配結(jié)果中重定向請求包以及響應包中的URL、協(xié)議類型以及對應的升級階段并輸出。
算法結(jié)束
Step5 畫像信息輸出
將Step1~Step4輸出的信息進行整理,填充到表2升級畫像的對應位置,輸出畫像。
3.2.2 基于發(fā)起階段信息的升級畫像
該方法首先在流量記錄的同時,通過文件監(jiān)控,獲取升級包文件名,并計算該文件對應的各種可能校驗值(校驗值類型見表2 發(fā)起階段prog_verify信息欄)。在此基礎上,按照4個步驟實現(xiàn)基于下載階段的升級畫像,流程如圖4所示。
圖4 基于發(fā)起階段信息的升級畫像流程
Figure 4 The flow of upgrade process based on request stage information
Step1 通信協(xié)議判別
對所有的通信數(shù)據(jù)包進行掃描,判斷通信協(xié)議并記錄,如果存在HTTP協(xié)議,則進行Step2,否則結(jié)束。
Step2 發(fā)起階段數(shù)據(jù)包定位
采用兩種算法對新版本程序下載數(shù)據(jù)包進行定位。
算法5 基于升級包文件名的精確搜索定位
輸入 升級包文件名,升級流量數(shù)據(jù)包
輸出 發(fā)起階段數(shù)據(jù)包信息
算法步驟:
1) 在所有HTTP協(xié)議的流量數(shù)據(jù)包的http_file_data數(shù)據(jù)段內(nèi)容中進行搜索匹配,截取所有以http://或https://開頭,以.exe/.msi/.zip/.rar等可執(zhí)行文件后綴名結(jié)尾的URL字符串,并記錄;
2) 在1)提取的結(jié)果中,對文件監(jiān)控獲得的升級包文件名進行匹配,如果匹配成功,記錄該URL及其所在數(shù)據(jù)包的通信五元組,并在該數(shù)據(jù)段中搜索相關的校驗信息,記錄使用的相關校驗方法以及校驗值并輸出,轉(zhuǎn)至4),如果URL提取失敗,轉(zhuǎn)至3);
3) 在所有HTTP協(xié)議的流量數(shù)據(jù)包的http_file_data數(shù)據(jù)段內(nèi)容中對以http://或https://開頭,以.ini/.dat/.xml/.cfg等配置文件類型擴展名結(jié)尾的URL進行搜索匹配,若匹配成功,則將其URL進行截取,提取其通信五元組并輸出;
4) 根據(jù)2)3)定位數(shù)據(jù)包對應的通信五元組進行發(fā)起階段數(shù)據(jù)包定位,提取發(fā)起升級請求的內(nèi)容及對應的升級請求URL并輸出。
算法結(jié)束
算法6 基于文件類型的模糊匹配定位
輸入 程序名,升級流量數(shù)據(jù)包
輸出 發(fā)起階段數(shù)據(jù)包信息
算法步驟:
1) 在所有HTTP協(xié)議的流量數(shù)據(jù)包的http_file_data數(shù)據(jù)段內(nèi)容中進行搜索匹配,截取數(shù)據(jù)包中所有以http://或https://開頭,以.exe/.msi/.zip/.rar等可執(zhí)行文件后綴名結(jié)尾的字符串,并記錄;
2) 在1)提取的結(jié)果中,提取所有URL中文件名部分,根據(jù)Levenshtein Distance算法分別計算每個URL中文件名與舊版本程序文件名的相似度,選取超過閾值且最大的即為升級包URL,并在該數(shù)據(jù)段中搜索相關的校驗信息,記錄使用的相關校驗方法以及校驗值,提取其所在數(shù)據(jù)包的通信五元組并輸出,轉(zhuǎn)至4),如果URL提取失敗,轉(zhuǎn)至3);
3) 在所有HTTP協(xié)議的流量數(shù)據(jù)包的http_file_data數(shù)據(jù)段內(nèi)容中對以http://或https://開頭,以.ini/.dat/.xml/.cfg等配置文件類型擴展名結(jié)尾的URL進行搜索匹配,匹配成功,則截取其URL,提取其通信五元組并輸出,轉(zhuǎn)至4);
4) 根據(jù)2)、3)定位數(shù)據(jù)包對應的通信五元組進行發(fā)起階段數(shù)據(jù)包定位,提取發(fā)起升級請求的內(nèi)容及對應的升級請求URL并輸出。
算法結(jié)束
Step3 下載階段數(shù)據(jù)包定位
算法7 基于搜索匹配的下載階段數(shù)據(jù)包定位
輸入 升級包URL,升級流量數(shù)據(jù)包
輸出 下載階段數(shù)據(jù)包信息
算法步驟:
1) 對所有HTTP協(xié)議的包進行“GET”關鍵字匹配,提取下載請求及其對應的URL
2) 在1)提取的所有下載請求及其對應的URL中,搜索匹配Step2中提取的升級包URL,記錄匹配成功的下載請求數(shù)據(jù)包及其信五元組并輸出。
算法結(jié)束
Step4 重定向掃描
方法同基于下載階段信息的升級畫像中對應部分。
Step5 畫像信息輸出
將Step1—Step4輸出的信息進行整理,填充到表2升級畫像的對應位置,輸出畫像。
以上兩種算法相結(jié)合可針對表1中包含的四大類升級漏洞完成信息提取,對比如表5所示。
兩種升級畫像算法的核心都是獲取升級包的URL,并以此為線索完成對發(fā)起階段和下載階段數(shù)據(jù)包的定位,基于發(fā)起階段信息的升級畫像算法是先通過對HTTP協(xié)議數(shù)據(jù)包http_file_data數(shù)據(jù)段掃描獲取升級包的URL及其配置信息,然后根據(jù)該URL完成對下載階段數(shù)據(jù)包的定位,基于下載階段信息的升級畫像算法是先通過對HTTP 協(xié)議數(shù)據(jù)包中所有的“GET”請求掃描獲取升級包URL,然后根據(jù)該升級包URL完成對發(fā)起階段數(shù)據(jù)包的定位。
以央視影音客戶端(無防護類,漏洞編號:CNNVD=201903-1283)為示例,升級畫像算法在分析過程中提取的關鍵信息如紅框所示,升級畫像如圖5所示。
表5 算法能力分析
【注】“√”表示算法可提取該情況下畫像信息,“×”表示算法不可提取該情況下畫像信息。
圖5 央視影音客戶端升級發(fā)起階段數(shù)據(jù)包
Figure 5 The data packet of request stage during CNTV client upgrade process
發(fā)起階段:程序使用HTTP協(xié)議請求新版本的配置信息(編號178),隨后服務器使用HTTP協(xié)議對請求進行了回應(編號181)。
回應的配置信息以明文方式傳輸,其中包含了新版本程序的下載鏈接以及相關校驗值如圖6所示。
下載階段:程序根據(jù)配置信息中的URL使用HTTP協(xié)議進行升級包的下載(編號2256)。央視影音客戶端升級下載階段數(shù)據(jù)包如圖7所示。
央視影音客戶端升級畫像如圖8所示。
圖6 央視影音客戶端升級發(fā)起階段信息
Figure 6 The infomation of request stage during CNTV client upgrade process
圖7 央視影音客戶端升級下載階段數(shù)據(jù)包
Figure 7 The data packet of download stage during CNTV client upgrade process
圖8 央視影音客戶端升級畫像
Figure 8 The portrait of CNTV client upgrade process
本節(jié)采用基于自動驗證的漏洞檢測模式并提出基于畫像信息升級向量匹配算法進行升級流程漏洞的自動化檢測,其中漏洞檢測算法具體實現(xiàn)如下。
算法8 漏洞檢測算法
輸入 升級流程預畫像,漏洞檢測規(guī)則集
輸出 升級流程漏洞檢測預結(jié)果
算法步驟:
1) 讀入升級流程預畫像,用于漏洞檢測;
2) 對升級流程預畫像各個階段信息數(shù)據(jù)進行處理,形成升級流程向量形式的描述;
3) 根據(jù)漏洞檢測規(guī)則集中的向量特征進行匹配,如果匹配成功,輸出對應的匹配結(jié)果。
算法結(jié)束
以央視影音客戶端為例,如圖9所示,根據(jù)其畫像,得到的升級流程向量為[0 1 0 0 1 1 1 1 1 0 0 0 0 0 0 1 0 0 0 1 1 1],將該向量與表3中的漏洞特征向量進行匹配,可判定其漏洞類型為無防護漏洞。
圖9 央視影音漏洞檢測向量
Figure 9 The vulnerability detection vectors of CNTV client
為提高檢測結(jié)果的準確性,防止漏報、誤報,構(gòu)建模擬驗證環(huán)境,對漏洞檢測結(jié)果進行驗證,整體思路如圖10所示。
圖10 漏洞驗證思路
Figure 10 The method of vulnerability validation
(1) 目標載荷預處理
對目標載荷進行預處理,處理內(nèi)容如下。
1) 根據(jù)畫像檢查升級包是否有壓縮,是否特殊格式,若有則在不影響載荷功效的情況下將載荷調(diào)整為相同格式。
2) 根據(jù)畫像檢查升級包是否有校驗,且讀取出是哪一類校驗,調(diào)用openssl庫函數(shù)的對應校驗函數(shù)對步驟1)處理后的載荷計算校驗值,將計算出的校驗值替換原升級包的散列值。
3) 根據(jù)畫像檢查升級包是否有文件大小校驗,計算經(jīng)過步驟2)處理后的載荷大小,將結(jié)果替換原有畫像的數(shù)值。
4) 根據(jù)畫像信息更改惡意載荷名稱與原升級包名稱一致。
5) 惡意載荷上傳至惡意程序服務器等待目標主機下載。
(2) 漏洞驗證配置文件生成
驗證配置信息中包含幾項內(nèi)容。
1) 升級關鍵數(shù)據(jù)包定位信息
依據(jù)畫像信息中的發(fā)起階段和下載階段相關的協(xié)議類型以及關鍵信息如URL、檢驗信息等進行實時流量的劫持與定位。
2) 中間人攻擊待篡改信息
根據(jù)漏洞檢測預結(jié)論,針對不同類型的漏洞,結(jié)合畫像信息和惡意載荷信息將實時升級過程中的配置文件數(shù)據(jù)包,重定向數(shù)據(jù)包中的URL、相關校驗信息等關鍵字段信息篡改為惡意載荷的信息。
漏洞驗證配置文件生成如圖11所示。
(3) 模擬攻擊目標主機
將漏洞驗證配置文件輸入到監(jiān)聽執(zhí)行模塊,惡意程序服務器啟動,目標主機進行軟件升級時進行關鍵數(shù)據(jù)劫持與篡改,促使目標主機下載惡意載荷,完成攻擊。
以央視影音客戶端為例,漏洞驗證過程如圖12所示。
根據(jù)漏洞檢測預結(jié)論,指導提取畫像中升級流量定位信息與待篡改關鍵信息,同時將惡意載荷上傳至服務器并獲取URL,將以上信息整理形成漏洞驗證配置文件并上傳至中間人攻擊監(jiān)聽執(zhí)行模塊,實施中間人攻擊。
圖11 漏洞驗證配置文件生成
Figure 11 The generation of configuration files for vulnerability validation
圖12 漏洞驗證過程
Figure 12 The vulnerability validation process
驗證過程中,若模擬環(huán)境監(jiān)測到目標主機完成了惡意載荷的下載,校驗與自動執(zhí)行則判定預檢測結(jié)果正確,輸出最終的升級漏洞檢測結(jié)果。
為了驗證上述檢測方法的有效性,本文設計并實現(xiàn)了一個基于該方法的升級漏洞自動分析與驗證系統(tǒng)。系統(tǒng)包含數(shù)據(jù)分析模塊、漏洞檢測模塊與漏洞驗證模塊,分別實現(xiàn)升級流量記錄與畫像生成、升級過程漏洞檢測,以及對檢測結(jié)果驗證的功能。利用該系統(tǒng),對184個Windows應用軟件樣本進行了分析測試,證明了方法的有效性。
設計升級漏洞自動分析與驗證系統(tǒng),系統(tǒng)架構(gòu)如圖13所示。
數(shù)據(jù)分析模塊:由升級流量記錄模塊和升級流程畫像生成模塊兩部分組成,該部分負責升級流程的網(wǎng)絡數(shù)據(jù)信息的記錄與分析,系統(tǒng)使用tshark(wireshark的命令行工具)對升級流程的所有網(wǎng)絡數(shù)據(jù)流量進行記錄,并將記錄的pcapng格式數(shù)據(jù)包轉(zhuǎn)為json格式數(shù)據(jù)包后,進行流量數(shù)據(jù)分析,形成升級流程畫像。
漏洞檢測模塊:根據(jù)輸入的畫像信息,結(jié)合升級流程漏洞檢測規(guī)則集,依據(jù)升級漏洞檢測算法對升級漏洞進行檢測并生成檢測結(jié)論。
漏洞驗證模塊:驗證檢測結(jié)果的正確性,模塊基于Kali Ettercap中間人攻擊框架[7]實現(xiàn),根據(jù)畫像信息和漏洞檢測預結(jié)論生成指導中間人攻擊的Ettercap配置文件,在攻擊配置文件的指導下,在模擬環(huán)境中對軟件升級過程進行攻擊,根據(jù)驗證結(jié)果,得到最終的漏洞檢測結(jié)論。
圖13 升級漏洞自動分析與驗證系統(tǒng)架構(gòu)
Figure 13 The structure of automatic vulnerability analysis and verification system
升級漏洞自動化檢測系統(tǒng)分為宿主機和虛擬機兩部分,主程序Updanalyze.exe運行在宿主機上,負責將待測程序安裝包、自動化分析腳本上傳至虛擬機與從虛擬機回傳結(jié)果。由VMware Workstation構(gòu)建的虛擬化Windows操作系統(tǒng)負責安裝待測程序、自動化分析升級過程與自動化驗證。測試環(huán)境網(wǎng)絡拓撲如圖14所示。
圖14 測試環(huán)境網(wǎng)絡拓撲
Figure 14 The network topology diagram of testing environment
(1) 軟件樣本測試結(jié)果
對12類184款國內(nèi)外的Windows應用軟件進行測試,包含有升級漏洞的樣本數(shù)量為117個,所占比例超過60%,涵蓋了瀏覽器、輸入法等12個軟件功能類別,根據(jù)漏洞類型和目標類別,對測試結(jié)果進行統(tǒng)計。漏洞分布統(tǒng)計如圖15所示,不同軟件類別含漏洞占比如圖16所示。
圖15 漏洞分布統(tǒng)計
Figure 15 The statistics of vulnerability distribution
圖16 不同軟件類別含漏洞占比
Figure 16 The proportion of vulnerabilities in different software types
從圖15可以看出,目前主要的漏洞形式是無防護與校驗誤用兩個類型,占全部已分析樣本總數(shù)的58%,而重定向誤用和HTTPS防護缺失的情況相對較少,合計僅占全部樣本的12%。
從圖16可以看出,在目前已分析的12類軟件樣本中,瀏覽器類中漏洞樣本占比相對較少,僅為20%,下載工具類中漏洞的樣本占比例最高,達到100%,其余類別中,含漏洞軟件的比例從40%到80%不等。
(2) 系統(tǒng)性能測試結(jié)果
系統(tǒng)性能測試分析如表6所示。
經(jīng)過實際測試,系統(tǒng)誤報率為7%,系統(tǒng)漏報率為10%,原因分析如下。
表6 系統(tǒng)性能測試分析
系統(tǒng)誤報的樣本共8個,其中3個樣本在校驗過程中使用了非標準密碼算法,如截短MD5,系統(tǒng)未能有效檢測,誤報為“無防護”,實際應為“校驗誤用”;5個樣本由于發(fā)起階段使用HTTPS協(xié)議傳輸配置信息時,其中包含了校驗信息,由于使用加密傳輸,僅根據(jù)流量數(shù)據(jù)無法檢測,導致在下載階段使用了HTTP協(xié)議情況下誤報為“HTTPS保護缺失”,實際應為“無漏洞”。針對以上問題,可在后續(xù)的工作中,通過動態(tài)二進制插樁監(jiān)控軟件升級過程中的關鍵函數(shù)調(diào)用并提取其參數(shù)[8]的方法對其加解密并在校驗過程進行詳細分析。
系統(tǒng)漏報的漏洞共7個,其中3個樣本在軟件安裝結(jié)束后,立刻自動完成了升級的發(fā)起階段,系統(tǒng)未能記錄到該階段的流量數(shù)據(jù),實際2個樣本應為“無防護”,1個樣本應為“散列誤用”,針對此問題,可在軟件安裝前即開始網(wǎng)絡流量記錄,確保升級流量記錄的完整性;4個樣本在升級過程中未進行發(fā)起階段,直接通過HTTP協(xié)議訪問固定域名下載升級包,實際應為“無防護”,針對此問題,可通過人工進行輔助判斷以提高準確性。
軟件升級是應用軟件的必備模塊,如果在線升級的流程設計或代碼實現(xiàn)中存在漏洞,將對用戶主機的安全性構(gòu)成嚴重威脅。然而現(xiàn)有的升級漏洞檢測方法和手段,缺乏統(tǒng)一的方法和標準,效率低下、嚴重依賴人工,難以滿足對大批量高效分析和檢測的要求。
為解決這一問題,對大量軟件樣本升級流程和機制進行分析與研究,本文提出了一種基于網(wǎng)絡流量的升級漏洞檢測方法。首先記錄和分析流量,生成畫像,并根據(jù)畫像通過特征匹配進行漏洞檢測,最后對檢測結(jié)果進行驗證得出最終結(jié)論。本文還設計并實現(xiàn)基于此方法的面向Windows應用軟件的升級漏洞自動檢測與驗證系統(tǒng),系統(tǒng)由數(shù)據(jù)提取與分析、漏洞檢測與漏洞自動驗證3個子系統(tǒng)組成,實現(xiàn)了升級流程信息的自動提取和分析,以及基于此的漏洞檢測與驗證功能。通過對184個軟件樣本的分析測試,檢測出117個樣本的升級漏洞,證明了該方法和系統(tǒng)能夠高效準確地發(fā)現(xiàn)軟件升級機制中存在的漏洞。
[1] 張海藩. 軟件工程導論[M]. 北京: 清華大學出版社, 1998.
ZHANG H F. Introduction to software engineering[M]. Beijing: Tsinghua University Press, 1998.
[2] 彭先覺, 胡勇. 利用軟件在線升級的攻擊[J]. 通信技術, 2015(10): 1183-1186.
PENG X J, HU Y. Attacks using online software upgrade[J]. Communications Technology, 2015 (10): 1183-1186.
[3] 傅建明, 劉高, 李鵬偉. 一種殺毒軟件升級流程的安全性分析方法[J]. 武漢大學學報(理學版). 2015(6): 509-516.
FU J M, LIU G, LI P W. A security analysis method of antivirus software upgrade process[J] .Journal of Wuhan University (Natrual Science Edition). 2015 (6): 509-516.
[4] 周振飛. 軟件供應鏈污染機理與防御研究[D]. 北京: 北京郵電大學, 2018.
ZHOU Z F. Research on software supply chain pollution mechanism and defense[D] .Beijing: Beijing University of Posts and Telecommunications, 2018.
[5] CATUOGNO L, GALDI C, PERSIANO G. Guaranteeing dependency enforcement in software updates[M]. Secure IT Systems. Springer International Publishing, 2015.
[6] 趙作鵬, 尹志民, 王潛平, 等. 一種改進的編輯距離算法及其在數(shù)據(jù)處理中的應用[J]. 計算機應用, 2009, 29(2): 424-426.
ZHAO Z P, YIN Z M, WANG Q P, et al. An improved edit distance algorithm and its application in data processing [J]. Journal of Computer Applications, 2009, 29 (2): 424-426.
[7] 劉倩. 基于Kali Linux的網(wǎng)絡安全技術探討與研究[D]. 長春: 吉林大學, 2018.
LIU Q. Discussion and research on network security technology based on Kali Linux [D]. Changchun: Jilin University, 2018.
[8] 王乾. 基于動態(tài)二進制分析的關鍵函數(shù)定位技術研究[D]. 鄭州: 信息工程大學, 2012.
WANG Q. Research on key function location technology based on dynamic binary analysis [D]. Zhengzhou: Information Engineering University, 2012.
Automatic detection method of software upgrade vulnerabilitybased on network traffic analysis
TENG Jinhui, GUANG Yan, SHU Hui, ZHANG Bing
Strategic Support Force Information Engineering University, Zhengzhou 450001, China
During the software upgrade process, the lack of authentication for upgrade information or packages can lead to remote code execution vulnerabilities based on man-in-the-middle attack. An automatic detection method for upgrading vulnerabilities was proposed. The method described the upgrade mechanism by extracting the network traffic during the upgrade process, then matched it with the vulnerability feature vector to anticipate upgrading vulnerabilities. In a validation environment, the man-in-the-middle attack using the portrait information was carried out to verify the detection results. In addition, an automatic vulnerability analysis and verification system based on this method was designed. 184 Windows applications samples was test and 117 upgrade vulnerabilities were detected in these samples, which proved validity of the method.
software upgrade, network traffic analysis, vulnerability detection, automated analysis and validation
TheNational Key R & D Program of China(No.2018YFB08011601)
TP309.5
A
10.11959/j.issn.2096?109x.2020004
騰金輝(1996? ),男,河南洛陽人,戰(zhàn)略支援部隊信息工程大學助理研究員,主要研究方向為基于大數(shù)據(jù)的安全機制分析以及漏洞利用。
光焱(1983? ),男,安徽樅陽人,博士,戰(zhàn)略支援部隊信息工程大學講師,主要研究方向為安全機制分析與漏洞挖掘。
舒輝(1974? ),男,江蘇鹽城人,戰(zhàn)略支援部隊信息工程大學教授、博士生導師,主要研究方向為網(wǎng)絡安全、漏洞檢測。
張冰(1989? ),男,河南鄭州人,碩士,主要研究方向為軟件工程。
論文引用格式:騰金輝, 光焱, 舒輝, 等. 基于流量分析的軟件升級漏洞自動檢測方法[J]. 網(wǎng)絡與信息安全學報, 2020, 6(1): 94-108.
TENG J H, GUANG Y, SHU H, et al. Automatic detection method of software upgrade vulnerability based on network traffic analysis [J]. Chinese Journal of Network and Information Security, 2020, 6(1): 94-108.
2019?05?14;
2019?08?12
騰金輝,1013787991@qq.com
國家重點研發(fā)計劃基金資助項目(No.2018YFB08011601)