彭先覺,胡 勇
(四川大學電子信息學院,四川 成都 610064)
利用軟件在線升級的攻擊*
彭先覺,胡 勇
(四川大學電子信息學院,四川 成都 610064)
隨著國家軟件產業的高速發展,各種不同功能的軟件走進人們的生活,極大地方便了人們的生活。為了軟件盡快上線,占領用戶市場,軟件開發中普遍采用“敏捷開發模式”進行軟件開發。通過這種模式開發的軟件發布后,軟件功能要在使用中不斷完善、擴充,并需要頻繁升級。而互聯網和移動互聯網的高速發展催生了在線軟件升級這種便捷的升級方式。針對這種現狀,提出了一種利用軟件在線升級的網絡攻擊方法,并針對這種攻擊提出了具體的防御措施。
攻擊方法;軟件升級;防御措施
軟件“敏捷開發”模式被越來越多的軟件開發團隊采用。敏捷開發是一種以人為核心、迭代、增量的開發過程[1]。這種軟件開發模式能夠適應需求的快速變化,在開發中通過循環迭代的流程,幫助開發者提高效率、降低成本,并盡可能地貼近市場需求[2]。采用這種開發模式開發的軟件一個很明顯的特征是軟件上線快,并且升級頻繁。另外,互聯網和移動互聯網的發展為軟件在線升級提供了便捷的渠道。以百度軟件為例,百度去年累計進行大的升級48次,平均每月4次,基本上保持每周一次的頻率。
軟件升級的目的是為了支持用戶需求的變更以及環境的變化,以此使用戶獲得更好的體驗[3]。軟件升級是軟件生命周期中非常重要的環節。它是軟件逐步完善的過程,通過對軟件進行功能的添加、刪除、替換、擴充,使軟件能夠根據市場的需求做出及時的調整。
軟件實現升級主要完成以下幾步:
(1)升級程序自啟動:啟動后連接到特定的網站,發起版本請求;
(2)服務器回復相關的版本響應信息;
(3)應用程序解析版本響應信息,向服務器請求更新;
(4)獲取服務器端新版本程序的文件目錄;
(5)文件下載:下載新版程序文件到指定的臨時目錄;
(6)文件校驗:對已下載的文件進行校驗,判斷其匹配性和完整性;
(7)備份和替換程序:壓縮舊版程序到備份目錄,并拷貝已下載文件到相應的位置;
(8)升級客戶端程序:清除下載記錄,更新客戶端版本信息,完成升級工作[4]。

圖1 軟件更新流程圖
圖1所示流程是大部分軟件采用的升級方式,從整個過程來看,軟件升級模塊采用明文方式進行通信,軟件版本判斷的方法過于簡單,下載的更新文件校驗不足,這些缺陷或漏洞對軟件的安全使用構成了嚴重威脅。
基于軟件更新的攻擊流程攻擊主要完成以下步驟,其攻擊流程如圖2所示。
(1)觸發舊版軟件更新;
(2)截獲其舊版軟件更新請求相關的服務器響應數據;
(3)解析服務器響應數據,修改并進行重放攻擊;
(4)誘導最新版軟件繼續提示更新,使其請求更新數據包;
(5)替換軟件更新數據包為其捆綁了其他軟件的偽造數據包;
(6)客戶端校驗、安裝;
(7)捆綁軟件運行。

圖2 利用在線升級的攻擊流程圖
3.1 觸發正常更新
安裝某團購網舊版軟件,觸發其正常更新,如圖3所示。

圖3 更新提示界面
如圖3所示,該軟件的最新版本為v5.3.0,并且通過彈窗提示用戶升級版本。
3.2 捕獲通信流量
配置流量捕獲工具的參數,捕獲通信流量,打開TCP流,結果如圖4所示。

圖4 升級信息的通信流量
3.3 解析請求響應數據包
服務器響應消息主體通過gzip壓縮編碼,解碼還原后如圖5所示。

圖5 響應消息主體還原結果
通過進一步分析,服務器的響應數據中包含升級軟件包的鏈接地址、軟件版本、數據包大小及MD5校驗值等信息,關鍵信息在圖5中標記。通過多次本地測試,軟件的版本由“version”字段確定,通過篡改“version”字段,可以實現虛假的軟件版本升級提醒。
3.4 偽造升級數據包
在成功觸發軟件升級提醒后,偽造軟件更新數據包。采用捆綁惡意軟件的原軟件作為偽造更新數據,用戶下載偽造更新包升級軟件后,既可以保留軟件功能,又能實現捆綁軟件的運行,具有很強的隱蔽性。本次采用的偽造升級數據包為參數為filesize:5248368 byte,MD5:10c3ed8557fdee975b1823d1ad37698。
對比偽造數據包的參數,相應修改服務器響應數據包中的參數,本文中修改的字段為”version”:”20.0.0”,”filesize”:5248368,”md5sum”: “10c3ed8557fdee975b1823d1ad37698”,從而觸發最新版本軟件進行更新提示。如圖6所示。

圖6 觸發的升級提示
3.5 升級更新
用戶點擊升級后,偽造升級數據包成功下載,并且成功替換掉原來的文件實現安裝,其中捆綁軟件靜默運行,如圖7所示。

圖7 升級安裝提示
在線升級攻擊成功源于:一是服務器反饋的更新信息過于簡單,且很多都是明文或編碼傳輸,并沒有采用加密的方式防篡改,攻擊者很容易還原其中的相關信息,并偽造響應包。二是對接收到的軟件升級數據包沒有校驗或者校驗過于簡單,攻擊者通過“中間人”來截獲軟件升級的通信數據,很容易進行重放攻擊。針對這種攻擊的特點,其防御措施如下。
(1)對版本請求信息采用加密處理,可以采用傳輸層或應用層的加密方式,防止被截獲解析;
(2)軟件判定是否升級應采用多種方式校驗,避免采用單一的方式校驗判定;
(3)對于安裝升級的數據包通過數字簽名進行校驗,防止數據包被替換;
(4)在安裝升級包時通過動態聯網獲取更新信息的完整性校驗;
(5)對于軟件升級,可以采用程序補丁方式進行升級[6],以減小升級時被捆綁的危險;
(6)防止惡意軟件捆綁,對于PC端軟件可以采用加殼的方式增大代碼被逆向的難度,Android平臺下可以采用模擬器檢測,代碼混淆方式,NDK保護等方式增大代碼被逆向的難度[7]。
在線升級是所有軟件都具備的功能,而大部分的軟件并沒有針對這種攻擊做有效防御,因而這種攻擊適用的范圍很廣。另外基于在線升級的攻擊方法使攻擊者完全占據了一個主動的位置,可以實現定點和定向的攻擊,并且在整個攻擊過程中,用戶完全無感。欺騙軟件升級后可以運行惡意捆綁軟件,與其他進行軟件惡意捆綁,然后上傳網絡平臺供用戶下載而感染的方法相比,該攻擊方法可以繞過平臺對軟件的檢測。基于軟件升級的攻擊方法是多種攻擊手段的綜合利用,如中間人攻擊,流量劫持,軟件逆向等,因而單一的防御方法不能有效對抗這種攻擊。較之平常的攻擊手段,其成功率更高,更隱蔽,因而具有很高的危害性。
[1] 鄒波.基于敏捷開發模式下的軟件測試的改進和應用[D].成都:電子科技大學,2010. ZOU Bo.Improvement and Application of Software Testing based on Agile Development Mode[D].Chengdu:UESTC,2010.
[2] 金杰.移動互聯網創新應用敏捷開發探討及實踐[J].計算機光盤軟件與應用,2013(14):277-277. JIN Jie.Explore and Practice of Mobile Internet Application Agile Developement[J].Computer CD Software and Application,2013(14):227-279.
[3] 任聲駿.基于軟件描述的軟件升級及其安全問題的研究[D].西安:電子科技大學.2006. REN Sheng-jun.Research On Software Description-based Software Update and Its Security Issues[D].Xian:Xian University.2006.
[4] 侯景新.程序自動更新系統的研究與應用[D].哈爾濱中國建筑科學研究院,2010. HOU Jin-xin.Research and Application of Automatic Update System[D]. Haerbin Academy of Building Research,2010.
[5] Chris Sanders. Wireshark數據包分析實戰[M].北京:人民郵電出版社.2012:55-66. Chris Sanders.Practical Packet Analysis[M].Beijing: Addison Wesley Publishing.2012:55-56.
[6] 郝文江.安裝系統軟件安全補丁-保證系統安全性[J].通信技術,2007(5):57-59. HAO Wen-jiang.Installing System Software Safety Patch-Promises a System Safety[J].Communications Technolog,2007(5):57-59.
[7] 豐生強.Android軟件安全與逆向分析[M].北京:人民郵電出版社.2012:78-89. FENG Sheng-qiang.Android Software Security and Reverse Analysis[M].Beijing:Addison Wesley Publishing.2012:78-89.
Attack via Software Online Upgrading
PENG Xian-jue, HU Yong
(School of Electronic Information, Sichuan University, Chengdu Sichuan 61000, China)
With the rapid development of state software industry, various softwares with different functions inevitably involve people′s life, thus bring great convenience to people’s daily lives. To make software online and occupy the market as soon as possible, Agile Development Model is generally used in software development. After the release of software developed via the above model, software functions should be modified and extended constantly,and in addition, frequently updated. However, a convenient upgrading method, i.e., online software upgrading is emerged owing to the fast development of internet and mobile internet. In light of this, a network attacking method based on software online upgrading is presented, specific defensive measures also given in this paper.
attack method; software upgrading; defensive measures
10.3969/j.issn.1002-0802.2015.10.017
2015-05-21;
2015-08-19 Received date:2015-05-21;Revised date:2015-08-19
TP393
A
1002-0802(2015)10-1183-04

彭先覺(1989—),男,碩士,主要研究方向為網絡通信、android逆向;
胡 勇(1973—),男,副教授,主要研究方向為信息安全。