亚洲日本免费-啊轻点灬太粗太长了三男一女-麻豆av电影在线观看-日韩一级片毛片|www.grbbt.com

走進科學(xué):對七夕“超級病毒”XX神器的逆向分析

  首先給各位無良媒體記者跪了。七夕那天剛從公司拿到樣本的時候還以為是主管隨便到網(wǎng)上扒了個木馬demo給我練手,第二天看新聞才知道這小玩具已經(jīng)搞得滿城風(fēng)雨,媒體竟然稱它為“超級手機病毒”(-_-#)不得不感嘆混安全圈想裝逼簡直太容易了。在此強烈譴責(zé)這種夸張報道,不僅向公眾傳遞錯誤信息,也會影響孩子的價值觀。短短今天說這個apk沒有任何研究價值,雖然技術(shù)是非常拙劣,但是其利用短信不會審核惡意鏈接的性質(zhì)傳播的方式倒是令人眼前一亮。

  下面就來瞧瞧這個“XX神器”的真面目

  從惡意鏈接上下載到“XXshenqi.apk”,考慮到是惡意應(yīng)用,先不急著安裝,反編譯一下看看這到底是個什么玩意。

  直接拖進APKIDE,查看AndroidManifest.xml:

  乍一看,似乎除了聲明了發(fā)送短信和讀取聯(lián)系人的權(quán)限比較可疑,沒其他什么特點。組件部分也只有Activity,沒有Service,沒有BroadcastReceiver,并不具備木馬特征。觀察到主Activity是WelcomeActivity,那就先進這個Activity看看在搞什么名堂。

  這個木馬并沒有做代碼混淆,直接反編譯WelcomeActivity就能看到Java源代碼,首先看到的東西很令人驚訝:

  不需要仔細看就知道是在群發(fā)短信,但是真正讓人驚訝的是這段代碼里居然藏了一個手機號(っ °Д °;)っ把自己的ID藏在病毒里的事情中已經(jīng)見怪不怪了,這種赤裸裸暴露自己手機號的還是第一次見(;?_?)別急,下面還有更臥槽的。

  這一句話就是木馬傳播的核心,獲取通訊錄并向聯(lián)系人發(fā)送包含該木馬下載鏈接的短信。通常在QQ或者郵件里發(fā)送惡意鏈接的話都會被檢查,而現(xiàn)在的短信卻不具備檢查內(nèi)容的安全機制,這是該木馬最大的亮點。

  WelcomeActivity開啟群發(fā)短信的進程后,繼續(xù)啟動MainActivity,在MainActivity里找到三個if語句:

  不難看出,這就是登陸按鈕的事件處理,三個if語句以各種理由拒絕用戶登陸,這樣做的原因就只有一個,這個所謂的登錄窗口是假的,這個“XX神器”根本沒有任何功能,當(dāng)然沒辦法讓人登陸了。

  那MainActivty的主要目的是干什么呢?找到retrieveApkFromAssets方法:

  可以看到,該方法從assets文件夾里釋放了一個文件。那就趕緊到assets文件夾下找到這個文件吧ヽ(`Д′)?

  居然聲稱自己的包名前綴是com.android (;?_?)

  反編譯這個apk,打開AndroidManifest.xml,看看到底在搞什么名堂:

  看到這些基本上什么都懂了,“XXshenqi.apk”其實是個外殼,其真正目的是釋放隱藏在assets文件夾下的com.android.Trogoogle.apk,這才是木馬本體。

  查看smali目錄,發(fā)現(xiàn)有如下幾個包:

  簡略看了看源碼,其他幾個包跟com包雜亂無章的代碼風(fēng)格不一樣,應(yīng)該是作者找的開源包,只有com包才是木馬功能真正的實現(xiàn)部分,所以只需要把精力放在這個包上就可以了。

  查看com包的源碼,首先注意到的是BroadcastAutoBoot,這是個接收開機事件的BroadcastReceiver:

  可以看到收到開機事件后,啟動了ListenMessageService,這是木馬常用的開機自啟方式。

  跟進ListenMessageService看看,注意到以下兩個方法:

  private String ReadAllMessage(Context paramContext):

  private void ReadCONTACTS(Context paramContext, String paramString)

  在ReadAllMessage中找到下面這一行:

  在ReadCONTACTS中找到下面一行:

  不難判斷出ReadAllMessage的目的是讀取所有短信,ReadCONTACTS則是讀取通話記錄。

  繼續(xù)往下看,跟蹤onStart(),看看服務(wù)啟動后做了哪些事情,注意下面這一行是關(guān)鍵:

  ListenMessageService.this.getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, new ListenMessageService.SmsObserver(ListenMessageService.this, new ListenMessageService.SmsHandler(ListenMessageService.this, ListenMessageService.this)));

  ListenMessageService啟動后注冊了一個ContentObserver監(jiān)視短信數(shù)據(jù)庫,處理Handler為ListenMessageService.SmsHandler,繼續(xù)跟進實現(xiàn)處理Uri改變的onChange()方法,發(fā)現(xiàn)下面關(guān)鍵行:

  木馬通過監(jiān)視短信收件箱,當(dāng)手機收到短信時將其截獲,并且發(fā)送到181****7397這個號碼。

  繼續(xù)看:

  木馬特別留意了186****9904這個號碼的短信,將其視為命令消息,繼續(xù)往下找到處理邏輯:

  該短信共有5個操作命令:

  readmessage:發(fā)送郵件命令,啟動MySendEmailService,將收件箱和發(fā)件箱的短信以郵件形式發(fā)送

  sendmessage:發(fā)送短信命令,能控制該手機發(fā)送任意短信到任意號碼

  test:測試命令,將“【數(shù)據(jù)庫截獲】TEST數(shù)據(jù)截獲(廣播失效)”以短信發(fā)送至186****9904

  makemessage:偽造任意地址、任意內(nèi)容的短信

  ??sendlink:讀取聯(lián)系人信息,以郵件方式發(fā)送

  在此明晰了該木馬的大體架構(gòu),該木馬利用指定號碼發(fā)送短信,控制肉雞將隱私信息以郵件形式發(fā)送到自己的郵箱。

  一個有趣的細節(jié)是,木馬作者將自己的QQ郵箱和密碼全部暴露在了代碼里(;?_?),拿到密碼后,興沖沖地去登陸這個郵箱,卻發(fā)現(xiàn)密碼已經(jīng)被改了,估計是被前輩們搶先了吧。

  有關(guān)這個木馬的關(guān)鍵點就講到這兒,有興趣的朋友可以自己找樣本分析,代碼沒做混淆,肉眼就能看懂。雖然木馬使用的技術(shù)很小兒科,但是能其利用短信廣泛傳播的特點令人深思,余弦前輩說:很多時候,工程化能力遠比單點技術(shù)研究重要多了。

 

上一篇:智能無懼挑戰(zhàn) 山石網(wǎng)科轟動RSA2015

下一篇:超哪門子級?“XX神器”博的是安全意識