本發(fā)明屬于計算機網(wǎng)絡(luò)技術(shù)領(lǐng)域,特別涉及了一種安卓應(yīng)用程序安裝包的下載劫持方法。
背景技術(shù):
隨著移動互聯(lián)網(wǎng)的發(fā)展,使用android操作系統(tǒng)的智能移動設(shè)備被廣泛應(yīng)用于各個行業(yè)。android操作系統(tǒng)下的應(yīng)用程序,通常以android應(yīng)用程序安裝包(androidpackage)的形式進行分發(fā)。
由于android應(yīng)用程序開發(fā)的便捷性和廉價性,互聯(lián)網(wǎng)上開始出現(xiàn)大量被用于惡意目的的android應(yīng)用程序安裝包,涉及廣告群發(fā)、個人信息買賣、違禁品交易、詐騙、洗錢等多種違法行為。
如何對此類android應(yīng)用程序安裝包在互聯(lián)網(wǎng)上的傳播、分發(fā)和下載進行攔截,控制其傳播途徑,并在必要的時候替換其安裝包內(nèi)容,對下載用戶遠(yuǎn)程植入后門(backdoor)程序,以便于偵查和取證,是一個具有較高研究及應(yīng)用價值的課題。
技術(shù)實現(xiàn)要素:
為了解決上述背景技術(shù)提出的技術(shù)問題,本發(fā)明旨在提供一種安卓應(yīng)用程序安裝包的下載劫持方法,基于中間人攻擊技術(shù)實現(xiàn)對特定目標(biāo)用戶在特定目標(biāo)服務(wù)器地址下載的android應(yīng)用程序安裝包的動態(tài)攔截和替換,增強網(wǎng)絡(luò)安全性。
為了實現(xiàn)上述技術(shù)目的,本發(fā)明的技術(shù)方案為:
一種安卓應(yīng)用程序安裝包的下載劫持方法,包括以下步驟:
(1)在目標(biāo)用戶網(wǎng)絡(luò)設(shè)備廣域網(wǎng)接口和目標(biāo)服務(wù)器網(wǎng)絡(luò)設(shè)備廣域網(wǎng)接口之間部署中間人設(shè)備,中間人設(shè)備能夠監(jiān)聽和修改所有經(jīng)過自身的網(wǎng)絡(luò)報文;
(2)中間人設(shè)備啟動后,執(zhí)行初始化過程ip,讀取需劫持的目標(biāo)用戶地址cl、需劫持的目標(biāo)服務(wù)器地址sl以及劫持地址hl;
(3)初始化過程ip完成后,中間人設(shè)備執(zhí)行監(jiān)聽過程lp,依次對所有經(jīng)過中間人設(shè)備的網(wǎng)絡(luò)報文進行檢查;
(4)中間人設(shè)備執(zhí)行劫持過程hp,中間人設(shè)備偽造并發(fā)送sl的tcp響應(yīng)報文p1,使得sl真實的tcp響應(yīng)報文到達(dá)cl時,因tcp確認(rèn)號已被p1占用而產(chǎn)生tcp序列錯誤,后續(xù)tcp響應(yīng)報文將被cl自動舍棄,從而使得sl上的安卓應(yīng)用程序安裝包無法被目標(biāo)用戶獲??;
(5)偽造的sl的響應(yīng)報文p1發(fā)送成功后,中間人設(shè)備偽造并發(fā)送sl的http響應(yīng)報文p2,使得cl在收到p2后觸發(fā)url重定向事件,轉(zhuǎn)而請求hl上的安卓應(yīng)用程序安裝包,從而實現(xiàn)替換安裝包地址和內(nèi)容的目的。
進一步地,步驟(2)的具體過程如下:
從配置文件讀取需劫持的目標(biāo)用戶地址cl,cl通常為惡意android應(yīng)用程序用戶所用設(shè)備的網(wǎng)絡(luò)地址,cl的數(shù)據(jù)類型為字符串、格式為ipv4/ipv6;從配置文件讀取需劫持的目標(biāo)服務(wù)器地址sl,sl通常為惡意android應(yīng)用程序開發(fā)者或分發(fā)者提供的安裝包下載服務(wù)器的網(wǎng)絡(luò)地址,sl的數(shù)據(jù)類型為字符串、格式為ipv4/ipv6地址;從配置文件讀取劫持地址hl,hl的數(shù)據(jù)類型為字符串、格式為統(tǒng)一資源標(biāo)識符。
進一步地,步驟(3)的具體過程如下:
檢查報文網(wǎng)際網(wǎng)絡(luò)協(xié)議層源地址字段值是否為cl,若否,則繼續(xù)執(zhí)行監(jiān)聽進程,檢查下一個報文;
若是,則說明該報文由cl發(fā)出,檢查報文網(wǎng)際網(wǎng)絡(luò)協(xié)議層目的地址字段值是否為目標(biāo)服務(wù)器地址sl,若否,則繼續(xù)執(zhí)行監(jiān)聽進程,檢查下一個報文;
若是,則說明該報文目的地為sl,檢查報文應(yīng)用層協(xié)議是否為高文本傳輸協(xié)議http,若否,則繼續(xù)執(zhí)行監(jiān)聽進程,檢查下一個報文;
若是,則說明該報文為http報文,檢查報文http層首部請求行中的請求方法字段值是否為get,若否,則繼續(xù)執(zhí)行監(jiān)聽進程,檢查下一個報文;
若是,則檢查報文http層首部請求行中的url字段值中是否包含字符串“.apk”,若否,則繼續(xù)執(zhí)行監(jiān)聽進程,檢查下一個報文;
若是,則說明該報文請求了安卓應(yīng)用程序安裝包,將該報文記為pk,將報文pk中的傳輸控制協(xié)議層首部的tcp段長度字段值記為len,len數(shù)據(jù)類型為整型;tcp序列號字段值記為seq,seq數(shù)據(jù)類型為整型;tcp源端口字段值記為sp,數(shù)據(jù)類型為整型;tcp目的端口號字段值記為dp,數(shù)據(jù)類型為整型;
然后,開始執(zhí)行劫持過程hp,同時監(jiān)聽過程lp繼續(xù)檢查下一個報文。
進一步地,步驟(4)的具體過程如下:
劫持過程hp開始執(zhí)行后,中間人設(shè)備首先計算len與seq之和,記為ack,數(shù)據(jù)類型為整型;然后,構(gòu)造一個報文p1,將p1的傳輸控制協(xié)議層首部的tcp確認(rèn)號字段值設(shè)為ack,tcp源端口字段值設(shè)為dp,tcp目的端口號字段值設(shè)為sp;將p1的網(wǎng)際網(wǎng)絡(luò)協(xié)議層首部源地址字段值設(shè)為sl,目的地址字段值設(shè)為cl;最后,將構(gòu)造好的報文p1通過網(wǎng)絡(luò)接口發(fā)送。
進一步地,步驟(5)的具體過程如下:
p1發(fā)送成功后,中間人設(shè)備構(gòu)造報文p2,將p2的應(yīng)用層協(xié)議設(shè)為高文本傳輸協(xié)議;將p2的http層首部的狀態(tài)行字段值設(shè)為“http/1.1302movedtemporarily”,內(nèi)容類型字段值設(shè)為“text/html”,地址字段值設(shè)為hl;將p2的tcp層首部的tcp確認(rèn)號字段值設(shè)為1,tcp序列號字段值設(shè)為1,tcp源端口字段值設(shè)為dp,tcp目的端口號字段值設(shè)為sp;將p2的網(wǎng)際網(wǎng)絡(luò)協(xié)議層首部源地址字段值設(shè)為sl,目的地址字段值設(shè)為cl;最后,將構(gòu)造好的p2通過網(wǎng)絡(luò)接口發(fā)送。
進一步地,所述中間人設(shè)備為物理設(shè)備或者虛擬設(shè)備。
采用上述技術(shù)方案帶來的有益效果:
本發(fā)明通過中間人設(shè)備的部署,實現(xiàn)目標(biāo)用戶和目標(biāo)服務(wù)器之間android應(yīng)用程序安裝包下載行為的發(fā)現(xiàn)和識別;通過偽造目標(biāo)服務(wù)器的tcp響應(yīng)報文,使得目標(biāo)服務(wù)器真實tcp響應(yīng)報文到達(dá)目標(biāo)用戶時,由于發(fā)生tcp確認(rèn)號被占用而導(dǎo)致報文被舍棄,從而使得sl上的android應(yīng)用程序安裝包無法被目標(biāo)用戶獲取,實現(xiàn)了android應(yīng)用程序安裝包的下載攔截,在攔截過程中并未中斷目標(biāo)用戶和目標(biāo)服務(wù)器之間的連接,故攔截行為難以被雙方察覺,隱蔽性較高;通過偽造目標(biāo)服務(wù)器的http響應(yīng)報文,使得目標(biāo)用戶轉(zhuǎn)而請求預(yù)設(shè)的劫持地址上的android應(yīng)用程序安裝包,實現(xiàn)了安裝包地址和內(nèi)容的替換,便于遠(yuǎn)程植入后門程序,開展后續(xù)偵查、取證工作。
附圖說明
圖1是本發(fā)明的基本流程圖
具體實施方式
以下將結(jié)合附圖,對本發(fā)明的技術(shù)方案進行詳細(xì)說明。
設(shè)目標(biāo)用戶網(wǎng)絡(luò)設(shè)備和目標(biāo)服務(wù)器網(wǎng)絡(luò)設(shè)備均為標(biāo)準(zhǔn)以太網(wǎng)(ethernet)接入設(shè)備,在目標(biāo)用戶網(wǎng)絡(luò)設(shè)備和目標(biāo)服務(wù)器網(wǎng)絡(luò)設(shè)備廣域網(wǎng)(wideareanetwork)接口(interface)之間部署中間人(man-in-the-middle)設(shè)備mimd。mimd為具有以太網(wǎng)接口的x86架構(gòu)微型計算機,通過以太網(wǎng)交換機(switch)端口鏡像(portmirroring)訪問用戶網(wǎng)絡(luò)設(shè)備和目標(biāo)服務(wù)器網(wǎng)絡(luò)設(shè)備廣域網(wǎng)接口。mimd操作系統(tǒng)為linux,初始化過程ip、監(jiān)聽過程lp、劫持過程hp為使用c++語言編寫的應(yīng)用程序,使用標(biāo)準(zhǔn)gnu編譯器編譯為可執(zhí)行二進制文件。
mimd啟動后,開始執(zhí)行初始化過程ip,具體步驟如下:
首先,從配置文件讀取需劫持的目標(biāo)用戶地址cl,設(shè)cl為ipv4(internetprotocolversion4)地址,值為“117.62.188.164”;從配置文件讀取需劫持的目標(biāo)服務(wù)器地址sl,設(shè)sl為ipv4(internetprotocolversion4)地址,值為“58.222.18.2”;從配置文件讀取劫持地址hl,hl數(shù)據(jù)類型為字符串,格式為統(tǒng)一資源標(biāo)識符(uniformresourceidentifier),值為“http://115.231.86.10:9780/l06/w_d_j.apk”。初始化過程ip結(jié)束。
初始化過程ip完成之后,mimd開始執(zhí)行監(jiān)聽過程lp,依次對所有經(jīng)過mimd的網(wǎng)絡(luò)報文進行檢查。設(shè)目標(biāo)用戶試圖下載地址“http://58.222.18.2/vst/apk/updatedownload/z2j9kvytbjcflyyqewtx.apk”上的android應(yīng)用程序安裝包,產(chǎn)生了請求報文p0,p0經(jīng)過mimd時,監(jiān)聽過程lp對報文p0的處理步驟如下:
首先,檢查報文p0網(wǎng)際網(wǎng)絡(luò)協(xié)議層(internetprotocollayer,iplayer)源地址(source)字段值是否為目標(biāo)用戶地址cl,報文p0網(wǎng)際網(wǎng)絡(luò)協(xié)議層源地址字段值為“117.62.188.164”,說明該報文由cl發(fā)出;
檢查報文p0網(wǎng)際網(wǎng)絡(luò)協(xié)議層(internetprotocollayer,iplayer)目的地址(destination)字段值是否為目標(biāo)服務(wù)器地址sl,報文p0網(wǎng)際網(wǎng)絡(luò)協(xié)議層目的地址字段值為“58.222.18.2”,說明該報文目的地為sl;
檢查報文p0應(yīng)用層協(xié)議(applicationlayerprotocol)是否為高文本傳輸協(xié)議(hypertexttransferprotocol,http),報文p0應(yīng)用層協(xié)議(applicationlayerprotocol)為高文本傳輸協(xié)議(hypertexttransferprotocol,http),說明該報文為http報文;
檢查報文p0的http層首部(head)請求行(requestline)中的請求方法(method)字段值是否為get,報文p0的http層首部(head)請求行(requestline)為“get/vst/apk/updatedownload/z2j9kvytbjcflyyqewtx.apkhttp/1.1\r\n”,說明請求方法(method)字段值為get;
檢查報文p0的http層首部(head)請求行(requestline)中的url字段值中是否包含字符串“.apk”,根據(jù)p0的請求行內(nèi)容,報文p0的http層首部請求行url字段值為“/vst/apk/updatedownload/z2j9kvytbjcflyyqewtx.apkhttp/1.1\r\n”,包含字符串“.apk”,說明報文p0請求了android應(yīng)用程序安裝包,將報文p0記為pk。報文pk中的傳輸控制協(xié)議層(transmissioncontrolprotocollayer,tcplayer)首部(header)的tcp段長度(segmentlen)字段值為344,設(shè)整型len=344;tcp序列號(sequencenumber)字段值為1,設(shè)整型seq=1;tcp源端口(sourceport)字段值為3771,設(shè)整型sp=3771;tcp目的端口號(destinationport)字段值為80,設(shè)整型dp=80。
然后,開始執(zhí)行劫持過程hp,同時監(jiān)聽過程lp繼續(xù)檢查下一個報文。
劫持過程hp開始執(zhí)行后,mimd首先計算len與seq之和,記為整型ack;因為len=344,seq=1,得到ack=345;然后,構(gòu)造一個報文p1,將p1的傳輸控制協(xié)議層(transmissioncontrolprotocollayer,tcplayer)首部(header)的tcp確認(rèn)號(acknowledgmentnumber)字段值設(shè)為ack,即345,tcp源端口(sourceport)字段值設(shè)為dp,即80,tcp目的端口號(destinationport)字段值設(shè)為sp,即3771;將p1的網(wǎng)際網(wǎng)絡(luò)協(xié)議層(internetprotocollayer,iplayer)首部源地址(source)字段值設(shè)為sl,即“58.222.18.2”,目的地址(destination)字段值設(shè)為cl,即“117.62.188.164”;最后,構(gòu)造好的p1通過mimd的網(wǎng)絡(luò)接口發(fā)送。
由于p1的傳輸控制協(xié)議層首部tcp確認(rèn)號字段值345與目標(biāo)服務(wù)器的tcp響應(yīng)報文的tcp確認(rèn)號字段值相同,故目標(biāo)服務(wù)器sl的tcp響應(yīng)報文到達(dá)目標(biāo)用戶cl時,由于tcp確認(rèn)號重復(fù)導(dǎo)致產(chǎn)生tcp序列錯誤(tcpout-of-order),目標(biāo)服務(wù)器sl的后續(xù)tcp響應(yīng)報文被目標(biāo)用戶cl舍棄,從而使得sl上的android應(yīng)用程序安裝包無法被目標(biāo)用戶cl獲取。在該過程中,目標(biāo)服務(wù)器sl仍然在正常響應(yīng)目標(biāo)用戶cl的請求報文p0,故難以發(fā)現(xiàn)android應(yīng)用程序安裝包的下載已被中間人設(shè)備mimd攔截。
p1被成功發(fā)送之后,mimd構(gòu)造報文p2,將p2的應(yīng)用層協(xié)議(applicationlayerprotocol)設(shè)為高文本傳輸協(xié)議(hypertexttransferprotocol,http);將p2的http層首部(head)的狀態(tài)行(statusline)字段值設(shè)為“http/1.1302movedtemporarily”,內(nèi)容類型(content-type)字段值設(shè)為“text/html”,地址(location)字段值設(shè)為hl,即“http://115.231.86.10:9780/l06/w_d_j.apk”;將p2的tcp層首部(head)的tcp確認(rèn)號(acknowledgmentnumber)字段值設(shè)為1,tcp序列號(sequencenumber)字段值設(shè)為1,tcp源端口(sourceport)字段值設(shè)為dp,即80,tcp目的端口號(destinationport)字段值設(shè)為sp,即3771;將p2的網(wǎng)際網(wǎng)絡(luò)協(xié)議層(internetprotocollayer,iplayer)首部源地址(source)字段值設(shè)為sl,即“58.222.18.2”,目的地址(destination)字段值設(shè)為cl,即117.62.188.164”;最后,構(gòu)造好的p2通過mimd的網(wǎng)絡(luò)接口發(fā)送。p2被成功發(fā)送之后,劫持過程hp結(jié)束。
目標(biāo)用戶cl在接收到報文p2后,觸發(fā)url重定向(urlredirect)事件,轉(zhuǎn)而請求劫持地址“http://115.231.86.10:9780/l06/w_d_j.apk”上的android應(yīng)用程序安裝包,而不是原來的地址“http://58.222.18.2/vst/apk/updatedownload/z2j9kvytbjcflyyqewtx.apk”,從而實現(xiàn)了安裝包地址和內(nèi)容的替換。通過在劫持地址“http://115.231.86.10:9780/l06/w_d_j.apk”上的android應(yīng)用程序安裝包中加入后門代碼,即可實現(xiàn)對目標(biāo)用戶遠(yuǎn)程植入后門程序,便于開展后續(xù)的偵查、取證工作。
實施例僅為說明本發(fā)明的技術(shù)思想,不能以此限定本發(fā)明的保護范圍,凡是按照本發(fā)明提出的技術(shù)思想,在技術(shù)方案基礎(chǔ)上所做的任何改動,均落入本發(fā)明保護范圍之內(nèi)。