国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Android應(yīng)用程序安裝包隱蔽下載劫持漏洞

2018-10-16 08:23王志堅(jiān)
計(jì)算機(jī)應(yīng)用 2018年9期
關(guān)鍵詞:發(fā)布者旁路攻擊者

朱 珠,傅 曉,王志堅(jiān)

(河海大學(xué) 計(jì)算機(jī)與信息學(xué)院,南京 211100)

0 引言

當(dāng)下,Android系統(tǒng)已成為國(guó)內(nèi)智能移動(dòng)終端設(shè)備使用最多的操作系統(tǒng):到2016年末為止,中國(guó)移動(dòng)手機(jī)用戶(hù)已突破13億人[1]。僅在2016年一年,中國(guó)智能手機(jī)出貨量即達(dá)到5.22億部[2],其中,使用Android操作系統(tǒng)的設(shè)備占中國(guó)全部智能設(shè)備比例為83.2%,處于絕對(duì)主流地位[3]。

由于眾所周知的因素,國(guó)內(nèi)Android用戶(hù)無(wú)法通過(guò)Google Play市場(chǎng)獲取應(yīng)用程序,因此,第三方應(yīng)用市場(chǎng)和應(yīng)用程序開(kāi)發(fā)者自行提供的下載地址成為Android應(yīng)用程序分發(fā)、下載的重要渠道。由于第三方應(yīng)用市場(chǎng)及應(yīng)用程序開(kāi)發(fā)者自身較低的安全意識(shí),上述Android應(yīng)用程序下載渠道也成為惡意攻擊者的攻擊目標(biāo),其中,下載劫持(Download Hijacking)是最常見(jiàn)的攻擊手段之一。

下載劫持屬于典型的中間人攻擊(Man-In-The-Middle Attack):攻擊者在用戶(hù)與目標(biāo)服務(wù)器之間的鏈路上部署旁路設(shè)備(By-pass Equipment)用以監(jiān)聽(tīng)用戶(hù)下載報(bào)文;當(dāng)捕獲用戶(hù)向特定服務(wù)器請(qǐng)求下載Android應(yīng)用程序的報(bào)文時(shí),旁路設(shè)備便冒充目標(biāo)服務(wù)器向用戶(hù)發(fā)送虛假應(yīng)答,將用戶(hù)請(qǐng)求重定向到攻擊者指定的地址。中間人攻擊是一種常見(jiàn)的網(wǎng)絡(luò)攻擊行為,使用范圍廣泛,極具破壞力,也以其他多種形式出現(xiàn),從會(huì)話(huà)劫持、瀏覽器劫持到網(wǎng)站掛馬(Drive-by download)。

在會(huì)話(huà)劫持中,攻擊者攔截并接管用戶(hù)和主機(jī)之間建立的合法會(huì)話(huà),可以訪(fǎng)問(wèn)任何需要身份驗(yàn)證的資源[4],此時(shí)攻擊者已經(jīng)得到了合法的會(huì)話(huà)ID,可以使用該合法會(huì)話(huà)ID直接登錄,在會(huì)話(huà)ID沒(méi)有被泄露的情況下,該攻擊者便擁有了合法用戶(hù)的身份。如今,會(huì)話(huà)劫持可以通過(guò)使用單點(diǎn)登錄(Single Sign On)技術(shù)輕松檢測(cè)到[5]。一旦會(huì)話(huà)被攻擊者劫持,受害者可以立即發(fā)現(xiàn)并采取措施產(chǎn)生新的會(huì)話(huà)。

在瀏覽器劫持中,用戶(hù)并不是感染常規(guī)的惡意軟件,而是當(dāng)連接到惡意或受到攻擊的網(wǎng)站時(shí),前端語(yǔ)言(如JavaScript)允許用戶(hù)的瀏覽器執(zhí)行惡意活動(dòng)。實(shí)際上,攻擊者通常是在瀏覽器的允許操作范圍內(nèi)進(jìn)行活動(dòng)的,系統(tǒng)默認(rèn)其行為是合法的,因此,即使是最新的殺毒軟件也無(wú)法察覺(jué)此劫持。目前這種劫持可以通過(guò)部署在用戶(hù)網(wǎng)頁(yè)瀏覽器的某種檢測(cè)器來(lái)檢測(cè)[6],即根據(jù)瀏覽器行為的上下文關(guān)聯(lián)性,通過(guò)對(duì)瀏覽器的正常模式和被劫持模式的狀態(tài)訓(xùn)練,設(shè)計(jì)的一種能夠發(fā)現(xiàn)并終止瀏覽器可疑行為的檢測(cè)器。

網(wǎng)站掛馬(Drive-by download)攻擊比上述兩種劫持更常見(jiàn)。當(dāng)互聯(lián)網(wǎng)用戶(hù)訪(fǎng)問(wèn)惡意網(wǎng)頁(yè)時(shí),惡意網(wǎng)站服務(wù)器將包含木馬的HTML文檔傳遞給用戶(hù)的計(jì)算機(jī)系統(tǒng),惡意內(nèi)容利用用戶(hù)計(jì)算機(jī)系統(tǒng)上的漏洞,執(zhí)行攻擊者提供的惡意代碼以及安裝惡意軟件。網(wǎng)站掛馬的檢測(cè)是一個(gè)熱門(mén)的研究領(lǐng)域,包括利用數(shù)據(jù)挖掘技術(shù)對(duì)網(wǎng)頁(yè)惡意內(nèi)容進(jìn)行惡意或良性分類(lèi)。其中有一種異常檢測(cè),就是在加載網(wǎng)頁(yè)時(shí)監(jiān)視用戶(hù)計(jì)算機(jī)系統(tǒng)的異常變化[7]。

Android應(yīng)用程序包下載劫持則包含了以上所有劫持的特點(diǎn)。通常情況下,發(fā)布者(一般是第三方應(yīng)用市場(chǎng)及應(yīng)用程序開(kāi)發(fā)者)使用超文本傳輸協(xié)議(Hyper Text Transfer Protocol, HTTP)發(fā)布Android應(yīng)用程序安裝包的統(tǒng)一資源定位符(University Resource Locator,URL)地址,用戶(hù)通過(guò)瀏覽器或其他下載工具請(qǐng)求該地址上的資源。當(dāng)用戶(hù)瀏覽器發(fā)出的HTTP請(qǐng)求(可能是GET方法,也可能是POST方法)被攻擊者部署的旁路設(shè)備發(fā)覺(jué)并攔截,便會(huì)收到一個(gè)旁路設(shè)備偽造的HTTP暫時(shí)性轉(zhuǎn)移(302 Temporarily Moved)響應(yīng),將用戶(hù)請(qǐng)求重定向到一個(gè)攻擊者指定的地址,再次發(fā)出下載請(qǐng)求(通常指定惡意應(yīng)用程序包)。該過(guò)程中,就應(yīng)用層方面而言,存在HTTP會(huì)話(huà)被劫持;就下載方法方面而言,存在用戶(hù)的瀏覽器被劫持;就結(jié)果方面而言,惡意應(yīng)用程序被隱蔽強(qiáng)迫下載。所以可以說(shuō),Android應(yīng)用程序包下載劫持是一種涉及了多種劫持的多功能劫持,跟之前所有的劫持攻擊相比,更加復(fù)雜和難以檢測(cè)。

上述方法可以將用戶(hù)下載的安裝包替換為任意數(shù)據(jù),故存在一定的危害性,但是,由于發(fā)布者的資源并未真正被用戶(hù)下載,發(fā)布者通過(guò)Web流量分析(Traffic Analytic)可以輕易地判斷出自身是否受到下載劫持攻擊:頁(yè)面訪(fǎng)問(wèn)量(Page View,PV)相對(duì)于獨(dú)立訪(fǎng)問(wèn)者(Unique Visitor,UV)的不正常降低,是受到下載劫持的顯著特征之一。

為了與本文中將要研究的對(duì)象進(jìn)行區(qū)分,將上述傳統(tǒng)的下載劫持稱(chēng)為常規(guī)下載劫持(Regular Download Hijacking);與常規(guī)下載劫持不同,隱蔽下載劫持(Stealth Download Hijacking)無(wú)法通過(guò)發(fā)布者自身進(jìn)行的Web流量分析進(jìn)行發(fā)現(xiàn),除非用戶(hù)發(fā)現(xiàn)受到劫持攻擊并報(bào)告給發(fā)布者,否則該攻擊行為對(duì)發(fā)布者完全隱蔽。

圖1 下載劫持攻擊中各報(bào)文時(shí)序關(guān)系

以往,認(rèn)為隱蔽下載劫持技術(shù)屬于高級(jí)網(wǎng)絡(luò)武器(Advanced Cyber Weapon,ACW)的一部分,一般被高級(jí)持續(xù)性威脅(Advanced Persistent Threat, APT)應(yīng)用于針對(duì)特定高價(jià)值目標(biāo)的網(wǎng)絡(luò)攻擊中,普通用戶(hù)難以接觸到該類(lèi)攻擊,但是,在2017年年初,發(fā)現(xiàn)該技術(shù)被應(yīng)用于針對(duì)普通電信用戶(hù)的大規(guī)模下載劫持攻擊。該事件與2017年4月Shadow Brokers竊取NSA下屬Equation Group的網(wǎng)絡(luò)武器庫(kù)類(lèi)似,標(biāo)志著流入民間的ACW開(kāi)始被應(yīng)用于針對(duì)一般人群的大規(guī)模網(wǎng)絡(luò)攻擊,同時(shí)APT的行動(dòng)模式也從早期的黑客行動(dòng)主義逐漸染上鮮明的功利指向性色彩。

1 攻擊行為的發(fā)現(xiàn)

2017年初,江蘇省內(nèi)某互聯(lián)網(wǎng)服務(wù)提供商(Internet Service Provider, ISP)光纖寬帶接入用戶(hù)在上網(wǎng)時(shí)發(fā)現(xiàn),從Android應(yīng)用程序開(kāi)發(fā)者網(wǎng)站以及第三方應(yīng)用市場(chǎng)下載的.apk(Android Package)格式安裝包被替換為360手機(jī)助手、PP助手、豌豆莢等與用戶(hù)所下載應(yīng)用無(wú)關(guān)的第三方應(yīng)用安裝包。用戶(hù)向該ISP客服反映后,被告知出現(xiàn)此現(xiàn)象的原因是受到病毒和木馬攻擊,建議用戶(hù)安裝360殺毒軟件。

在注意到這一問(wèn)題之后,聯(lián)系了部分被替換安裝包的應(yīng)用程序開(kāi)發(fā)者,通過(guò)網(wǎng)站W(wǎng)eb流量分析發(fā)現(xiàn),相關(guān)省份與ISP的PV及UV均未出現(xiàn)異常降低的情況。這一表現(xiàn)明顯與以往下載劫持攻擊的模式不相匹配,因此嘗試通過(guò)實(shí)驗(yàn)證明攻擊行為的存在。

2 仿真實(shí)驗(yàn)評(píng)估

為了避免干擾,在全新的虛擬機(jī)VMware環(huán)境下,安裝了 Windows 7 sp1旗艦版操作系統(tǒng),其中瀏覽器選擇的是Internet Explorer 11,通過(guò)江蘇省某ISP光纖寬帶以太網(wǎng)點(diǎn)對(duì)點(diǎn)協(xié)議(Point to Point Protocol over Ethernet,PPPoE)虛擬撥號(hào)接入互聯(lián)網(wǎng)。根據(jù)用戶(hù)反饋信息,使用瀏覽器直接下載www.91vst.com首頁(yè)提供的CIBN微視聽(tīng)?wèi)?yīng)用下載鏈接,該鏈接指向位于江蘇省泰州市的內(nèi)容分發(fā)網(wǎng)絡(luò)(Content Delivery Network, CDN)節(jié)點(diǎn),該節(jié)點(diǎn)地址為58.222.18.2。重復(fù)該操作3次。

下載開(kāi)始后,瀏覽器收到的響應(yīng)流來(lái)自于115.231.86.9或115.231.86.10,該地址位于浙江省義烏市,且內(nèi)容并非CIBN微視聽(tīng)?wèi)?yīng)用安裝包,其內(nèi)容依次是360手機(jī)助手、PP助手、豌豆莢。

圖2 被替換的安裝包

然后,在虛擬機(jī)操作系統(tǒng)中通過(guò)設(shè)置虛擬私有網(wǎng)絡(luò)(Virtual Private Network,VPN)代理服務(wù)器下載該鏈接,上述現(xiàn)象沒(méi)有發(fā)生,瀏覽器收到的響應(yīng)流來(lái)自58.222.18.2,確為CIBN微視聽(tīng)?wèi)?yīng)用。

通過(guò)上述比較實(shí)驗(yàn),在排除病毒、木馬等干擾因素之后,可以初步確定,在該ISP接入網(wǎng)絡(luò)與該CDN節(jié)點(diǎn)之間存在下載劫持攻擊。

3 網(wǎng)絡(luò)報(bào)文分析

為了確定攻擊者利用何種漏洞在發(fā)布者網(wǎng)站與用戶(hù)之間實(shí)現(xiàn)了隱蔽下載劫持,在測(cè)試環(huán)境中安裝Wireshark和WinPcap進(jìn)行網(wǎng)絡(luò)抓包分析。

用戶(hù)點(diǎn)擊下載鏈接之后,瀏覽器向服務(wù)器58.222.18.2發(fā)出HTTP請(qǐng)求報(bào)文,記為Request0,Request0的HTTP頭部如下所示:

GET/vst/apk/updateDownload/Z2J9KVYTBJCFLYYQEWTX.apk HTTP/1.1〗r〗n

Accept: text/html, application/xhtml+xml, */*〗r〗n

Referer: http://www.91vst.com/〗r〗n

隨后,瀏覽器收到來(lái)自服務(wù)器58.222.18.2的HTTP響應(yīng)報(bào)文,記為Response1,Response1的HTTP頭部如下所示:

HTTP/1.1 302 Moved Temporarily〗r〗n

Content-Type: text/html〗r〗n

Location: http://115.231.86.10:9780/L06/W_D_J.apk〗r〗n

可以看出,該報(bào)文為HTTP暫時(shí)性轉(zhuǎn)移(302 Temporarily Moved)響應(yīng),內(nèi)容是通知瀏覽器Request0所請(qǐng)求的資源已暫時(shí)轉(zhuǎn)移,應(yīng)重新請(qǐng)求http://115.231.86.10:9780/L06/W_D_J.apk上的資源。Response1的Time to live值為113,事先已經(jīng)知道服務(wù)器58.222.18.2正常響應(yīng)的Time to live為56,故可以判斷Response1為攻擊者部署的旁路設(shè)備偽造的HTTP響應(yīng)。測(cè)試環(huán)境中,瀏覽器收到Response1之后,轉(zhuǎn)而請(qǐng)求地址http://115.231.86.10:9780/L06/W_D_J.apk上的資源,向服務(wù)器115.231.86.10發(fā)出HTTP請(qǐng)求報(bào)文,記為Request1,Request1的HTTP頭部如下所示:

GET /L06/W_D_J.apk HTTP/1.1〗r〗n

Accept: text/html, application/xhtml+xml, */*〗r〗n

Referer: http://www.91vst.com/〗r〗n

服務(wù)器115.231.86.10響應(yīng)Request1之后,此時(shí)瀏覽器所下載的安裝包已被替換為豌豆莢。

至此為止,攻擊者的劫持手法與常規(guī)下載劫持完全一致:通過(guò)偽造來(lái)源地址,冒充發(fā)布者網(wǎng)站向用戶(hù)瀏覽器返回偽造的HTTP暫時(shí)性轉(zhuǎn)移報(bào)文,將瀏覽器請(qǐng)求重定向到服務(wù)器115.231.86.10,下載指定服務(wù)器路徑上的安裝包。問(wèn)題在于,在這一過(guò)程中,用戶(hù)并未下載服務(wù)器58.222.18.2上的資源,但是CDN節(jié)點(diǎn),即服務(wù)器58.222.18.2的統(tǒng)計(jì)數(shù)據(jù)上,卻顯示了用戶(hù)進(jìn)行了一次正常下載。這意味著,若不在用戶(hù)端進(jìn)行抓包分析,發(fā)布者無(wú)法憑借在服務(wù)器端統(tǒng)計(jì)信息分析出自身是否受到了下載劫持攻擊。這種攻擊模式具有隱蔽下載劫持的鮮明特征,與以往所接觸的下載劫持攻擊具有顯著的差異。

因此,將報(bào)文分析的范圍從原先的HTTP報(bào)文,擴(kuò)大到全部TCP/IP(Transmission Control Protocol/Internet Protocol)報(bào)文。

Request0的TCP/IP頭部如下所示:

Internet Protocol Version 4, Src: 192.168.1.110, Dst: 58.222.18.2

Transmission Control Protocol, Src Port: 3771, Dst Port: 80, Seq: 1, Ack: 1, Len: 344

Response1的TCP/IP頭部如下所示:

Internet Protocol Version 4, Src: 58.222.18.2, Dst: 192.168.1.110

Transmission Control Protocol, Src Port: 80, Dst Port: 3771, Seq: 1, Ack: 1, Len: 129

Request1的TCP/IP頭部如下所示:

Internet Protocol Version 4, Src: 192.168.1.110, Dst: 58.222.18.2

Transmission Control Protocol, Src Port: 3772, Dst Port: 9780, Seq: 1, Ack: 1, Len: 306

可以看出,Request0、Response1、Request1的TCP/IP頭部序列號(hào)(Sequence number, Seq)和確認(rèn)號(hào)(Acknowledgment number, Ack)均為1,這意味著上述請(qǐng)求與響應(yīng)報(bào)文在發(fā)送過(guò)程中都各自創(chuàng)建了一個(gè)新的TCP會(huì)話(huà)連接,而不是在同一個(gè)TCP會(huì)話(huà)連接中[8];并且,服務(wù)器和客戶(hù)端也都正確處理了對(duì)方的請(qǐng)求和響應(yīng),這是由HTTP的無(wú)狀態(tài)性質(zhì)所決定的[9]。

在HTTP中,所有客戶(hù)端與服務(wù)器之間的請(qǐng)求與響應(yīng)都是無(wú)狀態(tài)、無(wú)連接的,這意味著服務(wù)器的每一次響應(yīng)不需要與客戶(hù)端的上一個(gè)請(qǐng)求在上下文上語(yǔ)義相關(guān)。HTTP的這一特性是為了在請(qǐng)求與響應(yīng)過(guò)程中,服務(wù)器與客戶(hù)端之間可以不保持活動(dòng)連接,而是重新發(fā)起TCP會(huì)話(huà)連接,從而節(jié)省服務(wù)器資源。

以Request0為例,該請(qǐng)求報(bào)文TCP頭部中Seq為1,段長(zhǎng)度(segment Length, Len)為344,則在同一個(gè)TCP會(huì)話(huà)連接中,服務(wù)器響應(yīng)報(bào)文Response1的TCP頭部中,Seq應(yīng)為1,與請(qǐng)求報(bào)文在同一序列中;Ack應(yīng)為345,由請(qǐng)求報(bào)文的Seq加上Len得出。而實(shí)際上,Response1并未遵守這一規(guī)則,客戶(hù)端瀏覽器依然認(rèn)為Response1是服務(wù)器對(duì)Request0的應(yīng)答響應(yīng)。

通過(guò)搜索TCP/IP報(bào)文發(fā)現(xiàn),在Request0和Response1報(bào)文之間,確實(shí)存在一個(gè)TCP/IP報(bào)文,其Seq為1,Ack為345。將該報(bào)文記為Response0,其TCP/IP頭部如下所示:

Internet Protocol Version 4, Src: 58.222.18.2, Dst: 192.168.1.110

Transmission Control Protocol, Src Port: 80, Dst Port: 3771, Seq: 1, Ack: 345, Len: 0

從以上內(nèi)容可以看出,Response0僅存在頭部信息,其段長(zhǎng)度為0,內(nèi)容為空。

而在Respons1和Request1報(bào)文之間,也存在一個(gè)TCP/IP報(bào)文,與Response0具有相同的Seq和Ack值。將該報(bào)文記為Response2,其TCP/IP頭部如下所示:

Internet Protocol Version 4, Src: 58.222.18.2, Dst: 192.168.1.110

Transmission Control Protocol, Src Port: 80, Dst Port: 3771, Seq: 1, Ack: 345, Len: 1412

由于Response2和Response0報(bào)文的TCP/IP頭部具有相同的Seq和Ack,故在測(cè)試環(huán)境的TCP堆棧中,后到達(dá)的Response2被當(dāng)作TCP序列錯(cuò)誤(TCP Out-Of-Order)報(bào)文而舍棄。

圖3 報(bào)文Response2的內(nèi)容

分辨出報(bào)文Response0和Response2哪一個(gè)是真正的響應(yīng)報(bào)文并不是很復(fù)雜。將Response2中正文內(nèi)容的十六進(jìn)制轉(zhuǎn)換為文本形式,可以看到Response2包含了HTTP響應(yīng)的首部,內(nèi)容類(lèi)型為Android包,長(zhǎng)度為26 615 091字節(jié)。在時(shí)間軸上搜索了所有的包,發(fā)現(xiàn)了一系列跟隨著Respnose2的HTTP 延續(xù)包。將它們合并起來(lái),便得到了真正想要下載的Android包的一個(gè)副本。而Response0雖然與Response2有相同的Seq和Ack,但它的實(shí)體內(nèi)容項(xiàng)卻是空的。

通過(guò)分析Response2報(bào)文內(nèi)容,發(fā)現(xiàn)該報(bào)文正是來(lái)自服務(wù)器58.222.18.2的CIBN微視聽(tīng)?wèi)?yīng)用安裝包。

4 攻擊方法的分析

如上文所述,劫持的攻擊機(jī)制已經(jīng)很明確了。服務(wù)器58.222.18.2將數(shù)據(jù)串傳輸?shù)紿TTP響應(yīng)中,把Request0所請(qǐng)求的Android包的完整副本發(fā)送給瀏覽器。由于MTU(最大傳輸單元)的限制,HTTP響應(yīng)在通過(guò)網(wǎng)關(guān)時(shí)被分成多個(gè)包。而第一個(gè)包(即Response2)包含的首部信息對(duì)瀏覽器決定如何處理該報(bào)文有著至關(guān)重要的作用。檢測(cè)到該信息,旁路設(shè)備便發(fā)送一個(gè)偽裝的響應(yīng)報(bào)文Response0欺騙瀏覽器丟棄真實(shí)的響應(yīng)報(bào)文Response2,Response0便占用了Response2的Req和Ack。一旦Response2被瀏覽器丟棄,其所有跟進(jìn)的延續(xù)包到達(dá)瀏覽器都會(huì)變成無(wú)效。

在一次正常下載過(guò)程中,用戶(hù)瀏覽器發(fā)出下載請(qǐng)求Request0,發(fā)布者服務(wù)器對(duì)此請(qǐng)求進(jìn)行響應(yīng),用戶(hù)瀏覽器收到該響應(yīng)Response2后,完成下載過(guò)程。

而在隱蔽下載劫持過(guò)程中,攻擊者部署的旁路設(shè)備在監(jiān)聽(tīng)到下載請(qǐng)求Request0之后,偽裝成發(fā)布者服務(wù)器,發(fā)出虛假的響應(yīng)Response0和Response1。

其中,Response0的Len為0,內(nèi)容為空;其TCP/IP頭部的Seq為1,Ack為Response0的Seq加上Len。Response0的目的在于,占用發(fā)布者服務(wù)器對(duì)Request0的真實(shí)響應(yīng)報(bào)文Response2的Ack,使Response2在到達(dá)用戶(hù)瀏覽器之后,因?yàn)镾eq和Ack被Response0占用而被當(dāng)作TCP序列錯(cuò)誤報(bào)文舍棄。在這一過(guò)程中,由于服務(wù)器實(shí)際上正常響應(yīng)了Request0,只是在Response2到達(dá)用戶(hù)瀏覽器之后才被舍棄,故仍然統(tǒng)計(jì)為一次正常下載。

Response1是一個(gè)HTTP暫時(shí)性轉(zhuǎn)移響應(yīng),目的則是將用戶(hù)瀏覽器的請(qǐng)求Request0重定向到攻擊者指定的URL,使瀏覽器重新發(fā)出請(qǐng)求Request1,轉(zhuǎn)而下載攻擊者指定URL上的安裝包,從而完成整個(gè)下載劫持過(guò)程。

圖4 隱蔽下載劫持攻擊中各報(bào)文時(shí)序關(guān)系

攻擊者能夠成功實(shí)施隱蔽下載劫持的充分條件是,旁路設(shè)備偽造的響應(yīng)報(bào)文Response0和Response1先于服務(wù)器真實(shí)響應(yīng)報(bào)文Response2到達(dá)用戶(hù)端:若Response2先于Response0到達(dá),則后到達(dá)的Response0會(huì)被當(dāng)作TCP序列錯(cuò)誤而舍棄,用戶(hù)開(kāi)始正常下載未被劫持的資源。因此,攻擊者部署的旁路設(shè)備與用戶(hù)端之間的距離必定小于服務(wù)器到用戶(hù)端的距離,這一點(diǎn)可以通過(guò)響應(yīng)報(bào)文Response1的TTL(Time To Live)值進(jìn)行證明:服務(wù)器正常響應(yīng)報(bào)文的TTL為56,而偽造的響應(yīng)報(bào)文為113??紤]到旁路設(shè)備有可能進(jìn)行了TTL欺騙(TTL Spoofing),113不是其真實(shí)值,TTL的高低不一定反映設(shè)備間的路由跳數(shù)或距離,因此難以通過(guò)TTL和Tracert命令確定旁路設(shè)備的地址(實(shí)際上,由于ISP在主干網(wǎng)上限制了ICMP協(xié)議端口,未能通過(guò)該方法確定TTL為113的設(shè)備地址)。

但是,可以確定的一點(diǎn)是,旁路設(shè)備的偽造響應(yīng)報(bào)文總是在時(shí)序上早于真實(shí)響應(yīng)報(bào)文。

5 漏洞的影響

如上文所述,攻擊者利用了HTTP的無(wú)連接特性,通過(guò)偽造響應(yīng)報(bào)文,在不中斷服務(wù)器正常響應(yīng)的情況下,率先占用真實(shí)的響應(yīng)報(bào)文的TCP序列,使真實(shí)報(bào)文被瀏覽器端錯(cuò)誤舍棄;同時(shí),通過(guò)偽造重定向使瀏覽器轉(zhuǎn)而請(qǐng)求攻擊者指定的資源。

該漏洞存在于HTTP協(xié)議層,理論上影響所有基于該協(xié)議下載的資源。通過(guò)實(shí)驗(yàn)發(fā)現(xiàn),攻擊者僅劫持HTTP GET請(qǐng)求路徑中包含“.apk”關(guān)鍵字的下載內(nèi)容,這意味著攻擊者最初的目標(biāo)很可能是安裝Android操作系統(tǒng)的智能設(shè)備,因?yàn)橐栽撽P(guān)鍵字為后綴名的文件均為Android應(yīng)用程序安裝包(Android Package Kit,MIME類(lèi)型為application/vnd.android.package-archive)[10],但是在測(cè)試中,Android、Windows以及Ubuntu、Debian等操作系統(tǒng)無(wú)一例外地受到影響,本文認(rèn)為這是由于攻擊者未能正確識(shí)別用戶(hù)瀏覽器的User Agent值所導(dǎo)致的[11],攻擊者可能僅想劫持安裝Android操作系統(tǒng)的智能設(shè)備的下載請(qǐng)求,但是由于技術(shù)缺陷未能實(shí)現(xiàn)HTTP請(qǐng)求頭部中User-Agent字段的判斷。

iOS和macOS等操作系統(tǒng)的用戶(hù)不是該攻擊者的目標(biāo),因?yàn)榘惭b了這些操作系統(tǒng)的設(shè)備默認(rèn)不允許從第三方發(fā)布者下載和安裝應(yīng)用程序安裝包,而從Apple Store下載的安裝包不受該漏洞影響。

在江蘇省內(nèi),使用HTTP提供下載的Android應(yīng)用程序安裝包均受到了此漏洞的影響,包括開(kāi)發(fā)者網(wǎng)站和第三方應(yīng)用市場(chǎng)。部分具有應(yīng)用內(nèi)更新功能(又稱(chēng)Hot swapping,熱更新[12])的Android應(yīng)用程序也受到了該漏洞的影響,原因是在更新過(guò)程中使用了HTTP,被中間設(shè)備視同單獨(dú)的一次HTTP下載請(qǐng)求而進(jìn)行劫持。

至2016年末,江蘇省內(nèi)互聯(lián)網(wǎng)寬帶接入用戶(hù)數(shù)為2 877.2萬(wàn)戶(hù)[13],其中該ISP光纖寬帶接入用戶(hù)數(shù)超過(guò)1 000萬(wàn)戶(hù)[14],據(jù)此估計(jì),此次受該下載劫持攻擊的用戶(hù)數(shù)不少于1 000萬(wàn)戶(hù)。按平均每個(gè)用戶(hù)每天5次下載計(jì)算,攻擊者單日劫持下載量即可突破5 000萬(wàn)次。按照50元/萬(wàn)次下載計(jì)算(安卓應(yīng)用程序推廣平均價(jià)格),攻擊者單日獲利即可超過(guò)25萬(wàn)元。

6 特殊的攻擊模式

在實(shí)驗(yàn)中,發(fā)現(xiàn)攻擊者的一般攻擊模式是,將用戶(hù)下載的安裝包隨機(jī)替換為豌豆莢、360手機(jī)助手、PP助手等。這一模式似乎是由旁路設(shè)備根據(jù)115.231.86.9和115.231.86.10的負(fù)載均衡情況即時(shí)進(jìn)行調(diào)整,然而,在這一模式之外,也發(fā)現(xiàn)了更為特殊的攻擊模式:

蘇寧易購(gòu)網(wǎng)站及其應(yīng)用程序安裝包(m.suning.com)受到了此次下載劫持攻擊的影響,與其他應(yīng)用不同的是,蘇寧易購(gòu)安裝包總是被攻擊者替換為手機(jī)京東。該情況是在其他測(cè)試用例中從來(lái)沒(méi)有發(fā)生過(guò)的。

有理由相信,攻擊者具備了識(shí)別用戶(hù)下載請(qǐng)求中的地址,并根據(jù)地址預(yù)設(shè)重定向目標(biāo)的能力。據(jù)此判斷,攻擊者已具備能力對(duì)于不同網(wǎng)站、地址上的應(yīng)用程序安裝包,分別設(shè)定具體的劫持規(guī)則。這一模式的目的很可能是為了從被劫持應(yīng)用開(kāi)發(fā)者的競(jìng)爭(zhēng)對(duì)手中獲取商業(yè)報(bào)酬。

圖5 受到劫持的蘇寧易購(gòu)安裝包

7 漏洞的預(yù)防

如上文所述,攻擊者通過(guò)部署旁路設(shè)備向用戶(hù)發(fā)送虛假的響應(yīng)報(bào)文Response0和Response1來(lái)實(shí)現(xiàn)隱蔽劫持。如果路由端或客戶(hù)端能對(duì)上述兩個(gè)響應(yīng)報(bào)文進(jìn)行過(guò)濾,便可預(yù)防攻擊者利用該漏洞進(jìn)行攻擊。

經(jīng)測(cè)試,部署防火墻和入侵檢測(cè)系統(tǒng)(Intrusion Detection Systems, IDS)無(wú)法過(guò)濾Response0和Response1,因?yàn)檫@兩個(gè)包并沒(méi)有非法的信息結(jié)構(gòu)。

響應(yīng)報(bào)文Response0的目的在于占用真實(shí)的響應(yīng)報(bào)文的Seq和Ack值,故攻擊者未對(duì)其內(nèi)容進(jìn)行填充,其僅有頭部信息,沒(méi)有內(nèi)容信息,段長(zhǎng)度為0(Len=0)。將符合上述特征的報(bào)文進(jìn)行過(guò)濾后,即可正常下載所請(qǐng)求的安裝包,但是并非所有段長(zhǎng)度為0的TCP包都是虛假報(bào)文。在建立一個(gè)TCP會(huì)話(huà)時(shí),通信雙方會(huì)發(fā)送三個(gè)報(bào)文段,這三個(gè)報(bào)文段中的Len均為0,但是其Ack和Seq的值都不會(huì)超過(guò)1。因此,設(shè)置這樣一個(gè)規(guī)則來(lái)過(guò)濾Response0:如果某個(gè)TCP包的Len是0,Ack或Seq中的任何一個(gè)大于1,便認(rèn)為該包無(wú)效。但是這個(gè)規(guī)則也會(huì)發(fā)生誤判:當(dāng)關(guān)閉一個(gè)TCP會(huì)話(huà)時(shí),依舊需要發(fā)送一些報(bào)文段來(lái)進(jìn)行會(huì)話(huà)釋放,此時(shí)的Seq值無(wú)法滿(mǎn)足不超過(guò)1。因此將此規(guī)則添加到防火墻或IDS中會(huì)使會(huì)話(huà)中的計(jì)算機(jī)無(wú)法及時(shí)斷開(kāi)連接直到超時(shí),白白浪費(fèi)了資源。

一旦Response0被過(guò)濾了,Response2就可以被用戶(hù)瀏覽器接受,即可以對(duì)需要的應(yīng)用程序包進(jìn)行下載,但問(wèn)題還沒(méi)有完全解決:點(diǎn)擊下載鏈接時(shí),會(huì)有兩個(gè)應(yīng)用程序包被下載下來(lái),其中一個(gè)是用戶(hù)請(qǐng)求的應(yīng)用程序,另一個(gè)是隨機(jī)選擇的115.231.86.9或115.231.86.10上的應(yīng)用程序包。為了解決這個(gè)問(wèn)題,需要對(duì)Response1進(jìn)行過(guò)濾。

響應(yīng)報(bào)文Response1是用于將用戶(hù)請(qǐng)求重定向到攻擊者指定的地址。在實(shí)驗(yàn)中,已知目標(biāo)地址為115.231.86.9和115.231.86.10,故只需將頭部包含上述兩個(gè)地址的響應(yīng)報(bào)文過(guò)濾掉,即可對(duì)Response1進(jìn)行屏蔽。

在安裝了Linux系統(tǒng)的終端或軟路由中,可以通過(guò)配置iptables/netfilter對(duì)該漏洞進(jìn)行預(yù)防。而在安裝了其他操作系統(tǒng)的設(shè)備上,則需要通過(guò)安裝第三方模塊或應(yīng)用程序來(lái)實(shí)現(xiàn)相同的效果。本文在一些基于Linux操作系統(tǒng)(如Debian,Ubuntu和CentOS)的設(shè)備上測(cè)試了上述兩條規(guī)則,都有很好的運(yùn)行效果。

為了有效預(yù)防Android應(yīng)用下載劫持所引發(fā)的風(fēng)險(xiǎn),可以從分布式檢測(cè)、集中分析以及主動(dòng)預(yù)防等方面從根源上阻止此類(lèi)劫持攻擊。

MITM設(shè)備可能部署于網(wǎng)絡(luò)的任何一個(gè)節(jié)點(diǎn),僅依靠部分用戶(hù)自行檢測(cè)難以有效地發(fā)現(xiàn)。由于下載劫持可被APK安裝包的HTTP下載請(qǐng)求觸發(fā),故而可以在整個(gè)Internet中部署大量分布式節(jié)點(diǎn),模擬用戶(hù)行為發(fā)送下載請(qǐng)求,并對(duì)響應(yīng)報(bào)文進(jìn)行檢查。如果響應(yīng)報(bào)文符合下載劫持攻擊的特征,則可認(rèn)為該節(jié)點(diǎn)與服務(wù)器之間的鏈路存在MITM設(shè)備。節(jié)點(diǎn)將相關(guān)信息上傳至數(shù)據(jù)中心進(jìn)行下一步分析。

數(shù)據(jù)中心在搜集到一定數(shù)量的攻擊信息后,通過(guò)數(shù)據(jù)挖掘和在線(xiàn)實(shí)時(shí)分析,統(tǒng)計(jì)受劫持用戶(hù)范圍、攻擊者所在位置、線(xiàn)路、網(wǎng)絡(luò)地址、受影響站點(diǎn)等,形成劫持特征庫(kù)并實(shí)時(shí)向運(yùn)營(yíng)商、站點(diǎn)、用戶(hù)、行政主管部門(mén)和執(zhí)法單位公布。

受影響用戶(hù)根據(jù)特征庫(kù)主動(dòng)將相關(guān)劫持站點(diǎn)加入黑名單,并更新防火墻策略過(guò)濾惡意報(bào)文;受影響站點(diǎn)根據(jù)特征庫(kù)適時(shí)調(diào)整加密策略,避免使用HTTP明文進(jìn)行安裝包發(fā)布及應(yīng)用內(nèi)更新;運(yùn)營(yíng)商根據(jù)特征庫(kù)及時(shí)開(kāi)展內(nèi)部審計(jì)工作,清查涉及流量劫持等灰色產(chǎn)業(yè)鏈的內(nèi)部機(jī)構(gòu)及人員。

除了上述技術(shù)手段,社會(huì)各界也應(yīng)該意識(shí)到,打擊下載劫持不僅僅要通過(guò)技術(shù)手段,更需要通過(guò)行政管理手段和法律手段。通過(guò)建立檢測(cè)、分析、預(yù)防的全過(guò)程控制措施,將用戶(hù)、運(yùn)營(yíng)商、站點(diǎn)、行政主管部門(mén)及執(zhí)法單位緊密聯(lián)系起來(lái),廣泛參與其中。只有使社會(huì)各界意識(shí)到下載劫持的危害性,才能夠?qū)ο嚓P(guān)灰色產(chǎn)業(yè)從業(yè)人員形成威懾,從而杜絕此類(lèi)違法行為。

8 結(jié)語(yǔ)

本文通過(guò)案例分析,提出了一種針對(duì)Android應(yīng)用程序安裝包的隱蔽下載劫持攻擊漏洞。對(duì)于該漏洞的形成原理、利用機(jī)制、攻擊者模式、預(yù)防方法等問(wèn)題,本文進(jìn)行了分析與研究,期望能夠給之后的國(guó)內(nèi)外網(wǎng)絡(luò)安全研究人員提供研究數(shù)據(jù)與參考資料。

該漏洞相較以往傳統(tǒng)下載劫持漏洞,無(wú)法通過(guò)服務(wù)器端流量分析進(jìn)行發(fā)現(xiàn),具有較強(qiáng)的隱蔽性和危害性。利用該漏洞的攻擊者具有利益指向性明確、手法隱蔽、背景深厚等特征,符合對(duì)于APT的一般性描述[15],應(yīng)及早引起運(yùn)營(yíng)商內(nèi)控部門(mén)、通信主管部門(mén)以及網(wǎng)絡(luò)執(zhí)法部門(mén)的警惕。

[4] ORIYANO S P. CEH v9: Certified Ethical Hacker Version 9 Study Guide [M]. Hoboken, NJ: John Wiley and Sons, 2016: 331.

[5] ARMANDO A, CARBONE R, COMPAGNA L, et al. An authentication flaw in browser-based single sign-on protocols: impact and remediations [J]. Computers and Security, 2013, 33(4): 41-58.

[6] MNICA D, RIBEIRO C. An IDS for browser hijacking [EB/OL]. [2018- 01- 07]. http://www.thinkmind.org/download.php?articleid=securware_2015_6_10_30083.

[7] van LE L, WELCH I, GAO X, et al. Anatomy of drive-by download attack [C]// AISC ’13: Proceedings of the 11th Australasian Information Security Conference. Darlinghurst, Australia: Australian Computer Society, 2013, 138: 49-58.

[8] POSTEL J. RFC 793—transmission control protocol [S/OL]. [2018- 01- 07]. http://www.faqs.org/rfcs/rfc793.html.

[9] FIELDING R, GETTYS J, MOGUL J, et al. RFC 2616: hypertext transfer protocol [J]. Computer Science and Communications Dictionary, 1999, 7(9): 3969-3973.

[10] YANG A, STEELE S, FREED N. RFC 6532: Internationalized email headers [S/OL]. [2018- 01- 08]. https://datatracker.ietf.org/doc/rfc6532/?include_text=1.

[11] FIELDING E R, RESCHKE E J. RFC 7231: HyperText Transfer Protocol (HTTP/1.1): semantics and content [S/OL]. [2018- 01- 08]. https://tools.ietf.org/html/rfc7231.

[12] HENNESSY J L, PATTERSON D A. Computer Architecture: A Quantitative Approach [M]. San Francisco, CA: Morgan Kaufmann, 2003: 707.

[13] 江蘇省通信管理局.江蘇省信息通信業(yè)二〇一七年年度滾動(dòng)發(fā)展計(jì)劃[EB/OL]. [2018- 01- 18]. http://www.jsca.gov.cn:8080/pub/jstx/jstxglj/201711/t20171113_46662.html.(Jiangsu Communications Administration. Annual rolling development plan of information and communications industry in Jiangsu in 2017 [EB/OL]. [2018- 01- 18]. http://www.jsca.gov.cn:8080/pub/jstx/jstxglj/201711/t20171113_46662.html.)

[14] 朱秀霞.江蘇電信光網(wǎng)用戶(hù)數(shù)居全國(guó)各省之首[N].新華日?qǐng)?bào), 2015- 12- 15.(ZHU X X. Jiangsu Telecom optical network user number ranking first in the country’s provinces [N]. Xinhua News, 2015- 12- 15.)

[15] LACEY D. Advanced Persistent Threats: How to Manage the Risk to Your Business [M]. [S.l.]: Information Systems Audit and Control Association, 2013: 11-13.

猜你喜歡
發(fā)布者旁路攻擊者
數(shù)據(jù)中心UPS 系統(tǒng)外置維修旁路安全方案探討
基于貝葉斯博弈的防御資源調(diào)配模型研究
銀星電廠旁路系統(tǒng)的優(yōu)化設(shè)計(jì)與應(yīng)用
旁路放風(fēng)效果理論計(jì)算
新加坡新法規(guī)引爭(zhēng)議
超超臨界二次再熱機(jī)組旁路控制策略設(shè)計(jì)及應(yīng)用
帶隱私保護(hù)的群智感知任務(wù)分配機(jī)制
正面迎接批判
軟件眾包任務(wù)發(fā)布優(yōu)先級(jí)計(jì)算方法
正面迎接批判