9
今年端午節特意動用帶薪年假,在家本著遠離黑客,遠離江湖,舒舒服服和家人享受幾天假期,誰知卻早已深陷江湖。
6月11日中午叔叔找上門,說自己的銀行卡莫名被盜刷了8萬1千元,錢被打到了平安付科技服務有限公司客戶備付金,以及同樣摘要為平安的廣州銀聯網絡支付有限公司客戶備付金,如下圖:

于是上網搜了一下平安付科技這家公司得到如下信息:



平安付科技本身是一個第三方的支付平臺接口,錢轉到平安付科技賬上后可以用來投資、理財等,趕緊給平安付科技客服去了個電話,客服那邊問了相關信息后卻讓等3天才能給結果,這服務態度~(此時叔叔已經在當地刑警隊報案)。
我仔細推敲了這個事情,錢是被打到平安付的旺財上,對方需要綁定銀行卡,需要用到的信息有:銀行卡、身份賬號、銀行預留的手機號碼、短信驗證碼。前面的信息都容易掌握(目前網絡上有大量的泄露的銀行卡號、身份證號、手機號等信息)況且叔叔每次和客戶打款時也會把自己的銀行卡號、身份證號發給對方,所以這些信息默認早就泄露了,這里的關鍵是如何得到的短信驗證碼,且通過圖1可以看出,犯罪分子利用平安付轉走了4比錢,且最后一筆1000元都沒有放過,說明對方掌握了此張銀行卡的余額信息。
到這里總結出了兩點:
對方掌握了1、手機號碼實時短信驗證碼;2、銀行卡的余額信息。
想到這里最先想到的是短信木馬了。于是拿出他的手機,查看短信權限時赫然看到了短信權限處存在一個叫做“校訊通”的應用,安裝日期正是6月10日。由于叔叔的孩子還在上中學所以經常會收到相關校訊通的短信,他10日當天正好收到了一條提示安裝校訊通的短信,也沒有多想就直接安裝上了。

到這里事情的起因已經很接近了,很可能是這是一個木馬程序竊取了他的短信內容,叔叔滿臉質疑,絲毫不相信這樣的事情也會發生他自己身上。
于是我繼續訪問這個IP地址,瀏覽器直接彈出提示下載校訊通.apk

拿到此APK后當立即開始分析(職業病又犯了,哎,我好好的端午節假期),這里發現這個版本的校訊通安卓木馬程序已經進行了升級,與以往的此類程序多了很多新功能:增加了遠程更改配置功能和呼叫轉移功能,可以更改收信手機號碼或發信帳號的密碼,并能夠呼叫轉移聯通和移動用戶電話。
本次分析的樣本特征值:

用來接收受害人短信的郵箱賬號密碼:

進入郵箱看了一眼,滿眼都是淚,進去的時候此郵箱還在不停的接收著來自各地受害人的短信的郵件:
木馬程序發送的受害人手機上所有的短信內容:

受害人手機上的通訊錄,此木馬提取被害人通訊錄后會利用偽造的號碼繼續向通訊錄好友發送偽裝成校訊通的木馬安裝短信,從而繼續擴大安裝范圍:

受害人手機第一次感染運行后發來的上線信息:

搜索了一下平安關鍵詞,果然找到了綁定平安付等第三方支付的短信內容:



當然除了平安付平臺外還有支付寶等:

這里要特別給支付寶的企業責任精神點個贊,我第一時間聯系了這位受害人,受害人被盜走的錢中通過支付寶劃走的這一份部分已經得到全額賠付,而平安付的這筆仍然還在等待中。
asw6eih.vby.MainActivity
1、申請系統管理員權限

2、設置完畢之后檢查是否有了相應的權限,即是否被用戶接受。

3、設置默認處理軟件為當前App軟件

之后檢查是否被設置為默認處理軟件。

我們注意到了下面這一行代碼,這里的作用就是被設置為默認短信處理應用后就有權限攔截短信了:

而且在短信處理的Service中也確實發現了攔截的代碼(SmsReciver):

通過BroadCast方式進行短信攔截僅在安卓4.4之前的版本有效,此時我們發現了針對安卓4.4版本,木馬作者寫了一個特殊的服務類:SmsReceiver4_4專門針對安卓4.4的版本。
4、 設置短信監聽

asw6eih.vby.MainService
在用戶啟動應用的時候,不僅僅啟動了一個Activity讓用戶做出一些響應,還啟動了一個服務。


此時看郵箱里有不少中招的內容,如下所示,均來自該自動啟動的服務:


在用戶第一次啟動時,注冊自動啟動組件,BootReceiver
![]()
AndroidManifest.xml中注冊的事件

從下圖可以看到BootReceiver繼承自BroadcastReceiver

自動啟動組件啟動后,會根據安卓版本啟動對應的MainService

所以發生以上的事件均會被觸發啟動:短信接收、系統啟動、用戶進入home界面、kill應用等
指令:sssxxx#1002#password (xxx可為任意內容,也可無)
來看asw6eih.vby.xxttth5.c這個類
從配置文件中取出v0,然后賦值給v5

其中有這樣的一段

可以看到MailFrom_Passa是郵箱密碼,接受v1的參數,其中參數v7是固定的值2,而參數asw6eih.vby.xxttth5.a.d是初始化的值,也就是最開始的時候看到的郵箱:

所以這一段作用是修改了當前郵箱的密碼,并重新寫入了配置文件。觸發這一過程,指令是定義了特定的格式的,具體如下:

需要被執行label_129這個過程,而且v1的長度必須是v9的大小,v9是固定值3。

所以v1的格式應該為xxx#xxx#password
接下來就是switch case的過程(吐槽下這個程序效率……還好可以選擇的不多):

可以看到case 1002的時候,而v0_1是v1的下標為1的值,現在的格式可以推定為(這里反編譯軟件給出的跳轉存在問題):
xxx#1002#password
這個時候還差第一段的內容,我們繼續看這個類,發現v1跟asw6eih.vby.xxttth5.a.b做了對比,如下圖所示:

而asw6eih.vby.xxttth5.a.b的值實際上也做了定義,如下所示:

之后v1跟上面的值做了比較,其實也就是sss,如下所示:


截取了v1的前幾位跟預定義字符串sss做比較(這里截取了3位)
之后定義了v3的值,其實是手機號。
控制字符串的大致格式為sssxxx#指令id#內容,由于流程內容太多,不一一描述。xxx可為任意。這里修改郵箱密碼的指令應該為sssxxx#1002#password
指令:sssxxx#1011#13333333333 (xxx可為任意內容,也可無)
在下面一個字符串引起了我們的注意:

label_177,其中“轉移號碼設置成功”,進一步分析:

label_177來自1011指令,所以指令為sss#1011#command

c.a校驗了手機號的格式,只能是13,14,15,17,18開頭的手機,而且都是數字的,總共11位,可以說真是“經驗豐富懂安全”的“開發人員”。

之后回復了:轉移號碼設置成功
并將該值放到了v5里面,也就是配置文件里面。

label_40是保存配置等,這里不多分析了。
所以,修改手機號碼的格式為sssxxx#1011#13333333333,發送這樣的信息就可以修改接收手機為1333333333了,注意手機號碼一定得是合法的11位手機。
短信攔截功能

電話轉接功能
我猜這個木馬的設計者一定是個處女座,問題考慮的非常細致,這里竟然還設置了呼叫轉移功能,在受騙者電話忙音的時候幫受害者接電話?

該類繼承了BroadcastReceiver
![]()
當被觸發時,會將電話轉移到控制端。我們知道**67*手機號碼#這是遇忙呼叫轉移(聯通/移動可用), 被轉移到的號碼其實就是控制端的手機號碼。
木馬有效期
我們發現一個奇怪的現象,在向系統注冊這些組件的時候,木馬做了一個判讀,會判斷c.b(),然后決策是否注冊這些組件,如下所示:

上面的截圖來自MainActivity也就是程序啟動的主界面。
跟進這個方法發現是對時間的檢查:

發現如果當前時間超過了設定的時間2016-10-01 14:01:00,會返回false,不再向系統注冊該組件,否則返回true。也就是這個時間以后再有新用戶安裝就已經無效了。
1.安裝手機殺毒軟件定期查殺手機木馬病毒。
2.定期檢查手機的授權管理,如小米手機的安全中心-授權管理-應用權限管理-權限管理-短信與彩信相關權限,檢查此類敏感功能處權限授予對象是否合法。
3.不要root手機(黑客除外)。
4.不要安裝來路不明的應用,對于小白建議只安裝手機品牌商店中的應用(起碼安全性要高一些)。
5.購買銀行卡盜刷理賠保險,任何時候多一道保險才多一份放心。
最后一句話也是最重要的:鑒于地下黑產牛的強大,我只能找個馬甲來發表此文了。
雷鋒網注: 本文作者豆芽菜,轉載請注明來自FreeBuf黑客與極客(FreeBuf.COM)
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。