有了短信驗(yàn)證你的錢到底是怎么被強(qiáng)刷走的 警惕手機(jī)木馬

本以為有了手機(jī)短信驗(yàn)證應(yīng)該很安全了,沒(méi)想到銀行卡里的錢還是能被刷走,關(guān)鍵是一條短信都沒(méi)收到。到底是怎么回事?原來(lái)是手機(jī)木馬搞得鬼,很多奇怪的第三方軟件作為木馬攔截你的短信,發(fā)送到黑客的郵箱,然后轉(zhuǎn)走你的錢不就是分分鐘的事?各位不是大神的同志們,還是在安全的地方下載應(yīng)用吧。還好我用的IOS,并且沒(méi)有越獄。
故事梗概
今年端午節(jié)特意動(dòng)用帶薪年假,在家本著遠(yuǎn)離黑客,遠(yuǎn)離江湖,舒舒服服和家人享受幾天假期,誰(shuí)知卻早已深陷江湖。
6月11日中午叔叔找上門,說(shuō)自己的銀行卡莫名被盜刷了8萬(wàn)1千元,錢被打到了平安付科技服務(wù)有限公司客戶備付金,以及同樣摘要為平安的廣州銀聯(lián)網(wǎng)絡(luò)支付有限公司客戶備付金,如下圖:
于是上網(wǎng)搜了一下平安付科技這家公司得到如下信息:
平安付科技本身是一個(gè)第三方的支付平臺(tái)接口,錢轉(zhuǎn)到平安付科技賬上后可以用來(lái)投資、理財(cái)?shù)?,趕緊給平安付科技客服去了個(gè)電話,客服那邊問(wèn)了相關(guān)信息后卻讓等3天才能給結(jié)果,這服務(wù)態(tài)度~(此時(shí)叔叔已經(jīng)在當(dāng)?shù)匦叹?duì)報(bào)案)。
我仔細(xì)推敲了這個(gè)事情,錢是被打到平安付的旺財(cái)上,對(duì)方需要綁定銀行卡,需要用到的信息有:銀行卡、身份賬號(hào)、銀行預(yù)留的手機(jī)號(hào)碼、短信驗(yàn)證碼。前面的信息都容易掌握(目前網(wǎng)絡(luò)上有大量的泄露的銀行卡號(hào)、身份證號(hào)、手機(jī)號(hào)等信息)況且叔叔每次和客戶打款時(shí)也會(huì)把自己的銀行卡號(hào)、身份證號(hào)發(fā)給對(duì)方,所以這些信息默認(rèn)早就泄露了,這里的關(guān)鍵是如何得到的短信驗(yàn)證碼,且通過(guò)圖1可以看出,犯罪分子利用平安付轉(zhuǎn)走了4比錢,且最后一筆1000元都沒(méi)有放過(guò),說(shuō)明對(duì)方掌握了此張銀行卡的余額信息。
到這里總結(jié)出了兩點(diǎn):對(duì)方掌握了1.手機(jī)號(hào)碼實(shí)時(shí)短信驗(yàn)證碼2.銀行卡的余額信息。想到這里最先想到的是短信木馬了。于是拿出他的手機(jī),查看短信權(quán)限時(shí)赫然看到了短信權(quán)限處存在一個(gè)叫做“校訊通”的應(yīng)用,安裝日期正是6月10日。由于叔叔的孩子還在上中學(xué)所以經(jīng)常會(huì)收到相關(guān)校訊通的短信,他10日當(dāng)天正好收到了一條提示安裝校訊通的短信,也沒(méi)有多想就直接安裝上了。
到這里事情的起因已經(jīng)很接近了,很可能是這是一個(gè)木馬程序竊取了他的短信內(nèi)容,叔叔滿臉質(zhì)疑,絲毫不相信這樣的事情也會(huì)發(fā)生他自己身上。
于是我繼續(xù)訪問(wèn)這個(gè)ip地址,瀏覽器直接彈出提示下載校訊通.apk
拿到此APK后當(dāng)立即開始分析(職業(yè)病又犯了,哎,我好好的端午節(jié)假期),這里發(fā)現(xiàn)這個(gè)版本的校訊通安卓木馬程序已經(jīng)進(jìn)行了升級(jí),與以往的此類程序多了很多新功能:增加了遠(yuǎn)程更改配置功能和呼叫轉(zhuǎn)移功能,可以更改收信手機(jī)號(hào)碼或發(fā)信帳號(hào)的密碼,并能夠呼叫轉(zhuǎn)移聯(lián)通和移動(dòng)用戶電話。
本次分析的樣本特征值:
Version: 3
Serial Number: 0x936eacbe07f201df
Issuer: EMAILADDRESS=android@android.com, CN=Android, OU=Android, O=Android, L=Mountain View, ST=California, C=US
Validity: from = Fri Feb 29 09:33:46 CST 2008
to = Tue Jul 17 09:33:46 CST 2035
Subject: EMAILADDRESS=android@android.com, CN=Android, OU=Android, O=Android, L=Mountain View, ST=California, C=US
MD5 Fingerprint: E8 9B 15 8E 4B CF 98 8E BD 09 EB 83 F5 37 8E 87
SHA-1 Fingerprint: 61 ED 37 7E 85 D3 86 A8 DF EE 6B 86 4B D8 5B 0B FA A5 AF 81
SHA-256 Fingerprint: A4 0D A8 0A 59 D1 70 CA A9 50 CF 15 C1 8C 45 4D 47 A3 9B 26 98 9D 8B 64 0E CD 74 5B A7 1B F5 DC</code></p> <p>
用來(lái)接收受害人短信的郵箱賬號(hào)密碼:
進(jìn)入郵箱看了一眼,滿眼都是淚,進(jìn)去的時(shí)候此郵箱還在不停的接收著來(lái)自各地受害人的短信的郵件:
木馬程序發(fā)送的受害人手機(jī)上所有的短信內(nèi)容:
受害人手機(jī)上的通訊錄,此木馬提取被害人通訊錄后會(huì)利用偽造的號(hào)碼繼續(xù)向通訊錄好友發(fā)送偽裝成校訊通的木馬安裝短信,從而繼續(xù)擴(kuò)大安裝范圍:
受害人手機(jī)第一次感染運(yùn)行后發(fā)來(lái)的上線信息:
搜索了一下平安關(guān)鍵詞,果然找到了綁定平安付等第三方支付的短信內(nèi)容:
當(dāng)然除了平安付平臺(tái)外還有支付寶等:
這里要特別給支付寶的企業(yè)責(zé)任精神點(diǎn)個(gè)贊,我第一時(shí)間聯(lián)系了這位受害人,受害人被盜走的錢中通過(guò)支付寶劃走的這一份部分已經(jīng)得到全額賠付,而平安付的這筆仍然還在等待中。
第一次啟動(dòng)激活
asw6eih.vby.MainActivity
1.申請(qǐng)系統(tǒng)管理員權(quán)限
2.設(shè)置完畢之后檢查是否有了相應(yīng)的權(quán)限,即是否被用戶接受。
3.設(shè)置默認(rèn)處理軟件為當(dāng)前App軟件
之后檢查是否被設(shè)置為默認(rèn)處理軟件。
我們注意到了下面這一行代碼,這里的作用就是被設(shè)置為默認(rèn)短信處理應(yīng)用后就有權(quán)限攔截短信了:
而且在短信處理的Service中也確實(shí)發(fā)現(xiàn)了攔截的代碼(SmsReciver):
通過(guò)BroadCast方式進(jìn)行短信攔截僅在安卓4.4之前的版本有效,此時(shí)我們發(fā)現(xiàn)了針對(duì)安卓4.4版本,木馬作者寫了一個(gè)特殊的服務(wù)類:SmsReceiver4_4專門針對(duì)安卓4.4的版本。
4.設(shè)置短信監(jiān)聽(tīng)
asw6eih.vby.MainService
在用戶啟動(dòng)應(yīng)用的時(shí)候,不僅僅啟動(dòng)了一個(gè)Activity讓用戶做出一些響應(yīng),還啟動(dòng)了一個(gè)服務(wù)。
此時(shí)看郵箱里有不少中招的內(nèi)容,如下所示,均來(lái)自該自動(dòng)啟動(dòng)的服務(wù):
自動(dòng)啟動(dòng)方式
在用戶第一次啟動(dòng)時(shí),注冊(cè)自動(dòng)啟動(dòng)組件,BootReceiver
AndroidManifest.xml中注冊(cè)的事件
從下圖可以看到BootReceiver繼承自BroadcastReceiver
自動(dòng)啟動(dòng)組件啟動(dòng)后,會(huì)根據(jù)安卓版本啟動(dòng)對(duì)應(yīng)的MainService
所以發(fā)生以上的事件均會(huì)被觸發(fā)啟動(dòng):短信接收、系統(tǒng)啟動(dòng)、用戶進(jìn)入home界面、kill應(yīng)用等
郵箱密碼修改功能
指令:sssxxx#1002#password (xxx可為任意內(nèi)容,也可無(wú))
來(lái)看asw6eih.vby.xxttth5.c這個(gè)類
從配置文件中取出v0,然后賦值給v5
其中有這樣的一段
可以看到MailFrom_Passa是郵箱密碼,接受v1的參數(shù),其中參數(shù)v7是固定的值2,而參數(shù)asw6eih.vby.xxttth5.a.d是初始化的值,也就是最開始的時(shí)候看到的郵箱:
所以這一段作用是修改了當(dāng)前郵箱的密碼,并重新寫入了配置文件。觸發(fā)這一過(guò)程,指令是定義了特定的格式的,具體如下:
需要被執(zhí)行l(wèi)abel_129這個(gè)過(guò)程,而且v1的長(zhǎng)度必須是v9的大小,v9是固定值3。
所以v1的格式應(yīng)該為xxx#xxx#password
接下來(lái)就是switch case的過(guò)程(吐槽下這個(gè)程序效率……還好可以選擇的不多):
可以看到case 1002的時(shí)候,而v0_1是v1的下標(biāo)為1的值,現(xiàn)在的格式可以推定為(這里反編譯軟件給出的跳轉(zhuǎn)存在問(wèn)題):
xxx#1002#password
這個(gè)時(shí)候還差第一段的內(nèi)容,我們繼續(xù)看這個(gè)類,發(fā)現(xiàn)v1跟asw6eih.vby.xxttth5.a.b做了對(duì)比,如下圖所示:
而asw6eih.vby.xxttth5.a.b的值實(shí)際上也做了定義,如下所示:
之后v1跟上面的值做了比較,其實(shí)也就是sss,如下所示:
v1.substring(0, asw6eih.vby.xxttth5.a.b.length()).equals(asw6eih.vby.xxttth5.a.b))
截取了v1的前幾位跟預(yù)定義字符串sss做比較(這里截取了3位)
之后定義了v3的值,其實(shí)是手機(jī)號(hào)。
控制字符串的大致格式為sssxxx#指令id#內(nèi)容,由于流程內(nèi)容太多,不一一描述。xxx可為任意。這里修改郵箱密碼的指令應(yīng)該為sssxxx#1002#password
轉(zhuǎn)換控制端手機(jī)號(hào)碼
指令:sssxxx#1011#13333333333 (xxx可為任意內(nèi)容,也可無(wú))
在下面一個(gè)字符串引起了我們的注意:
label_177,其中“轉(zhuǎn)移號(hào)碼設(shè)置成功”,進(jìn)一步分析:
label_177來(lái)自1011指令,所以指令為sss#1011#command
c.a校驗(yàn)了手機(jī)號(hào)的格式,只能是13,14,15,17,18開頭的手機(jī),而且都是數(shù)字的,總共11位,可以說(shuō)真是“經(jīng)驗(yàn)豐富懂安全”的“開發(fā)人員”。
之后回復(fù)了:轉(zhuǎn)移號(hào)碼設(shè)置成功
并將該值放到了v5里面,也就是配置文件里面。
label_40是保存配置等,這里不多分析了。
所以,修改手機(jī)號(hào)碼的格式為sssxxx#1011#13333333333,發(fā)送這樣的信息就可以修改接收手機(jī)為1333333333了,注意手機(jī)號(hào)碼一定得是合法的11位手機(jī)。
短信攔截功能
電話轉(zhuǎn)接功能
我猜這個(gè)木馬的設(shè)計(jì)者一定是個(gè)處女座,問(wèn)題考慮的非常細(xì)致,這里竟然還設(shè)置了呼叫轉(zhuǎn)移功能,在受害者電話忙音的時(shí)候幫受害者接電話?
該類繼承了BroadcastReceiver
當(dāng)被觸發(fā)時(shí),會(huì)將電話轉(zhuǎn)移到控制端。我們知道**67*手機(jī)號(hào)碼#這是遇忙呼叫轉(zhuǎn)移(聯(lián)通/移動(dòng)可用), 被轉(zhuǎn)移到的號(hào)碼其實(shí)就是控制端的手機(jī)號(hào)碼。
木馬有效期
我們發(fā)現(xiàn)一個(gè)奇怪的現(xiàn)象,在向系統(tǒng)注冊(cè)這些組件的時(shí)候,木馬做了一個(gè)判讀,會(huì)判斷c.b(),然后決策是否注冊(cè)這些組件,如下所示:
上面的截圖來(lái)自MainActivity也就是程序啟動(dòng)的主界面。
跟進(jìn)這個(gè)方法發(fā)現(xiàn)是對(duì)時(shí)間的檢查:
發(fā)現(xiàn)如果當(dāng)前時(shí)間超過(guò)了設(shè)定的時(shí)間2016-10-01 14:01:00,會(huì)返回false,不再向系統(tǒng)注冊(cè)該組件,否則返回true。也就是這個(gè)時(shí)間以后再有新用戶安裝就已經(jīng)無(wú)效了。
處理和預(yù)防此類事件:
1.安裝手機(jī)殺毒軟件定期查殺手機(jī)木馬病毒。
2.定期檢查手機(jī)的授權(quán)管理,如小米手機(jī)的安全中心-授權(quán)管理-應(yīng)用權(quán)限管理-權(quán)限管理-短信與彩信相關(guān)權(quán)限,檢查此類敏感功能處權(quán)限授予對(duì)象是否合法。
3.不要root手機(jī)(黑客除外)。
4.不要安裝來(lái)路不明的應(yīng)用,對(duì)于小白建議只安裝手機(jī)品牌商店中的應(yīng)用(起碼安全性要高一些)。
5.購(gòu)買銀行卡盜刷理賠保險(xiǎn),任何時(shí)候多一道保險(xiǎn)才多一份放心。
相關(guān)文章
Android平臺(tái)的SQL注入漏洞淺析(一條短信控制你的手機(jī))
14年11月筆者在百度xteam博客中看到其公開了此前報(bào)告給Google的CVE-2014-8507漏洞細(xì)節(jié)——系統(tǒng)代碼在處理經(jīng)由短信承載的WAP推送內(nèi)容時(shí)產(chǎn)生的經(jīng)典SQL注入漏洞,影響Android2016-02-01手機(jī)木馬盜取網(wǎng)銀過(guò)程大揭秘 驗(yàn)證碼短信尤為關(guān)鍵
360手機(jī)安全中心接到大量用戶舉報(bào),稱其遭受短信詐騙,被騙金額多數(shù)以萬(wàn)計(jì)。最終都是因?yàn)橛脩糁姓泻?,?yàn)證碼被木馬偷偷轉(zhuǎn)發(fā)到不法分子手機(jī)中。2015-09-21手機(jī)里的信息到底安不安全?手機(jī)數(shù)據(jù)泄露大揭秘
如果你給自己的手機(jī)設(shè)置了PIN碼,甚至忘記了連自己也解不開;又或者設(shè)置了比劃甚至指紋解鎖,然后以為這樣的手機(jī)就是安全的了。是的,對(duì)于一般的人來(lái)說(shuō)算安全了,可是對(duì)于2016-06-03你的手機(jī)有沒(méi)有ROOT? ROOT后的手機(jī)漏洞防不勝防
也許你的手機(jī)ROOT只是為了安裝一款游戲,安裝一個(gè)工具。對(duì)我們普通人來(lái)說(shuō),ROOT代表著方便和自由,其實(shí)你不知道的是,它同時(shí)也為黑客帶來(lái)了侵犯你隱私的方便和自由??纯碦O2016-06-25Android 應(yīng)用有哪些常見(jiàn)的安全漏洞?及修復(fù)建議
Android應(yīng)用會(huì)遇到各種各樣的漏洞,如何從細(xì)節(jié)上了解各種安全隱患,積極采取適當(dāng)?shù)姆烙胧┍阕兊糜葹橹匾?,下面為大家詳?xì)解讀十大常見(jiàn)的Android漏洞,僅供參考2009-06-28- 手機(jī)病毒是病毒的一個(gè)分支,雖然其存在只有短短數(shù)年,但在將來(lái)很可能會(huì)隨著3G的推廣而大量涌現(xiàn)。 病毒類型:手機(jī)病毒 病毒目的:破壞手機(jī)系統(tǒng),狂發(fā)短信等2009-06-28
手機(jī)短信驗(yàn)證碼安全嗎 警惕手機(jī)短信木馬
現(xiàn)在想換個(gè)手機(jī)越來(lái)越麻煩,很多APP要重新下,手機(jī)里保存的寶貝也要轉(zhuǎn)移,有時(shí)候這些事情甚至讓我放棄了換個(gè)更好的手機(jī)的想發(fā),更不用說(shuō)換手機(jī)號(hào)了。各種網(wǎng)站、郵箱、賬號(hào)2016-07-11