新聞中心
[[174931]]

專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)望花免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
0x01 初衷以及適用場景
android的usb調(diào)試模式本是為開發(fā)者而設(shè)計(jì)的,開發(fā)者在應(yīng)用開發(fā)的過程中可用其對應(yīng)用進(jìn)行調(diào)試或測試。
adb提供一系列有助于開發(fā)的功能,例如應(yīng)用安裝與卸載,備份與恢復(fù),日志的輸出與過濾,并且,它還提供一個(gè)權(quán)限相當(dāng)可觀的、很人性化的adb shell。
除開發(fā)者外,逆向分析人員在對應(yīng)用進(jìn)行逆向分析以及動態(tài)調(diào)試的時(shí)候,也會使用到adb接口,例如通過該接口對so或者smali進(jìn)行動態(tài)調(diào)試與跟蹤,動態(tài)對一些功能性的代碼進(jìn)行驗(yàn)證等等。
然而便利性與安全性在一定程度上是成反比的,在其豐富的功能之下,也存在著一系列安全問題。
0x02 adb的信息泄露與權(quán)限泄露問題
如果應(yīng)用在發(fā)布時(shí),沒有把logcat所輸出的調(diào)試信息刪除掉,那么很有可能造成敏感信息的泄露,輕微的情況,例如logcat可能打印出應(yīng)用所訪問的網(wǎng)頁鏈接或者一些其它的中間變量,重則可能把賬號密碼也給泄露出來,畢竟安卓開發(fā)門檻低,開發(fā)者水平難免參差不齊。
為了方便調(diào)試,開發(fā)者甚至可能會這么寫:
安卓logcat信息泄露的情況在曾經(jīng)的烏云上披露過很多起,例如:
WooYun: 途牛網(wǎng)app logcat信息泄露用戶的同團(tuán)聊的聊天內(nèi)容
WooYun: 沖浪瀏覽器logcat出用戶短信
WooYun: 杭州銀行Android客戶端登錄賬號密碼信息本地泄露
此外,當(dāng)前市面上很多安卓應(yīng)用漏洞掃描平臺也會著重把logcat的濫用掃描出來呈現(xiàn)于報(bào)告中,例如騰訊金剛審計(jì)系統(tǒng)、阿里聚安全、360顯危鏡(前捉蟲獵手)等。這也從側(cè)面體現(xiàn)了這個(gè)問題的普遍性。
除了開發(fā)者的失誤之外,adb本身的設(shè)計(jì)方面也有一些瑕疵,曾經(jīng)有一篇論文專門對該問題進(jìn)行過研究:《Bittersweet ADB : Attacks and Defenses》。
通過ADB或者一個(gè)申請了ADB權(quán)限的Android應(yīng)用程序,可以在不申請權(quán)限的情況下監(jiān)控短信、電話記錄等隱私信息,監(jiān)控/模擬屏幕點(diǎn)擊事件,訪問其它應(yīng)用程序的私有目錄,對Android設(shè)備進(jìn)行DoS攻擊等。
而上述行為大部分可以通過adb shell dumpsys命令得到,更具體內(nèi)容可查看參考鏈接[2]。
0x03 安卓備份問題
這是一個(gè)相當(dāng)古老的問題了,在低版本的安卓系統(tǒng)中,在對某個(gè)應(yīng)用進(jìn)行備份操作時(shí),會將其私有數(shù)據(jù)一并給備份出來,然后即可通過特定的工具把它們提取出來,如下圖:
那么應(yīng)用的私有數(shù)據(jù)中一般有些什么?首先便會有個(gè)人的身份憑證,或者是賬號密碼或者是別的憑證,一般應(yīng)用對私有數(shù)據(jù)是比較有信心的,畢竟它被稱為“私有數(shù)據(jù)”,因而挺多應(yīng)用都直接明文存著,有些雖然有加密處理,但是通過對應(yīng)用的逆向分析,即可將數(shù)據(jù)進(jìn)行解密,例如從某客戶端中backup出的內(nèi)容中含有如下文件:
通過對apk進(jìn)行逆向可發(fā)現(xiàn)其解密過程,照著解密類與方法抄一遍即可解密:
又如微信的數(shù)據(jù)庫,有文章曾分析過微信數(shù)據(jù)庫的加密過程,并給出了其加密密鑰的生成方式,如果微信本地?cái)?shù)據(jù)庫,uin,imei同時(shí)被拿到,便可根據(jù)后兩者算出數(shù)據(jù)庫的加密密鑰,并對加密后的數(shù)據(jù)庫進(jìn)行解密,這時(shí)你的所有聊天記錄都直接曬在太陽下了。
除了直接手動解密數(shù)據(jù)以外,還可以將這些數(shù)據(jù)通過adb restore原封不動地恢復(fù)到另一個(gè)手機(jī)上,從而進(jìn)行身份偽造,例如droidsec上的文章《兩分鐘竊取身邊女神微博帳號》(參考鏈接[4])
有人注意到在使用adb backup時(shí)需要手動點(diǎn)擊確認(rèn)才可進(jìn)行備份,如果攻擊者沒有機(jī)會點(diǎn)擊屏幕,就沒有問題了,不過安卓有個(gè)機(jī)制叫做輸入輸出子系統(tǒng),在adb shell 下可以執(zhí)行sendevent命令,可以模擬各種用戶輸入,具體每種機(jī)型不一樣,在我的機(jī)器上發(fā)送如下event便可模擬點(diǎn)擊允許操作:
- #EV_KEY BTN_TOUCH DOWN
- sendevent /dev/input/event7 1 330 1
- #EV_ABS ABS_MT_POSITION_X 366
- sendevent /dev/input/event7 3 53 366
- #EV_ABS ABS_MT_POSITION_Y 690
- sendevent /dev/input/event7 3 54 690
- #EV_SYN SYN_REPORT 00000000
- sendevent /dev/input/event7 0 0 0
- #EV_KEY BTN_TOUCH UP
- sendevent /dev/input/event7 1 330 0
- #EV_SYN SYN_REPORT 00000000
- sendevent /dev/input/event7 0 0 0
0x04 通過adb種馬
既然通過adb可以安裝應(yīng)用,而且還是靜默的,那么自然也可以在用戶沒有感知的情況下給你種個(gè)馬。
不過一般的馬可能并沒有圖標(biāo)與界面等等增加被發(fā)現(xiàn)幾率的東西,而沒有被launch過的應(yīng)用是不能運(yùn)行的,也就是說它們所注冊的BroadcastReceiver都是收不到東西的, 它需要一個(gè)喚醒的過程。
所幸adb shell也可以實(shí)現(xiàn)這個(gè)喚醒過程,通過adb shell am命令可以啟動特定應(yīng)用包的特定組件,如此小馬就可以成功跑起來了。
當(dāng)然,如果攻擊者有更強(qiáng)勁的方式,例如直接adb push一個(gè)exploit上去,提權(quán)到root,就更加簡單粗暴了。
0x05 惡意代碼注入
這種手段就相對優(yōu)雅一些了,在連接usb調(diào)試的情況下,可以通過一系列命令,向手機(jī)上已安裝的應(yīng)用中注入一段自定義的惡意代碼,這段代碼可以是簡單地彈一聲問候,也可以是非常復(fù)雜的遠(yuǎn)控。
為了進(jìn)一步增加可信度,可以選本來就申請了很高權(quán)限的應(yīng)用進(jìn)行注入,例如對一款通訊錄管理軟件進(jìn)行注入后,它請求讀取你的聯(lián)系人列表,看起來沒毛病。
盡管學(xué)術(shù)界與工業(yè)界有很多防止重打包的措施,但是在實(shí)際測試中,這種攻擊手段的成功率著實(shí)不低,并且,就算對某個(gè)應(yīng)用注入失敗了,最粗暴的方法還可以pm list packages -3把所有的包都列出來都搞一遍試試。
以下我自己寫了一個(gè)簡單的程序,對開啟USB調(diào)試的手機(jī)上某應(yīng)用注入一段metasploit meterpreter http reverse shell的payload,整個(gè)過程中不需要對手機(jī)進(jìn)行任何操作,大體工作流程如下:
當(dāng)再次點(diǎn)擊注入后的應(yīng)用之后,在監(jiān)聽服務(wù)器上開啟的handler上即可接收到一個(gè)meterpreter的shell :
以上,便可在服務(wù)端對安卓應(yīng)用進(jìn)行遠(yuǎn)程控制了,拿到Android meterpreter shell之后,可以做的事情很多,包括隱私竊取、發(fā)送短信,打開網(wǎng)頁,截圖、照相。
甚至,可以調(diào)用你的前置后置攝像頭進(jìn)行實(shí)時(shí)監(jiān)控。
所支持的部分指令如下:
0x06 最后
在4.4以后的安卓版本,若要連接android設(shè)備上的adbd,需要對host機(jī)器進(jìn)行指紋的驗(yàn)證,這在很大程度上又降低了通過這些方式被攻擊的可能性。不過如今PC上的安卓管理軟件都是大力提倡你打開usb調(diào)試,甚至?xí)徊揭徊浇棠阍趺创蜷_,因此還是會有相當(dāng)大一部分人暴露在此風(fēng)險(xiǎn)之下。
如上可見,通過adb可以做的事情還是很多的,以上只是列舉了一部分,并且是當(dāng)前常用的一些小手段,想要完全防止被上述手段攻擊,最簡單而有效的辦法便是關(guān)閉USB調(diào)試,并且盡量在正規(guī)的應(yīng)用市場下載可信的應(yīng)用。
畢竟,設(shè)想如果你正在火車站或者某公共場所,使用不知誰放在那兒的公共充電插口,其背后是一臺惡意的計(jì)算機(jī),而你剛好打開了,或者在它的誘導(dǎo)下,打開了USB調(diào)試...
本文題目:Android開啟USB調(diào)試可以做到什么程度的攻擊
地址分享:http://www.dlmjj.cn/article/cdgcojg.html


咨詢
建站咨詢
