压在透明的玻璃上c-国产精品国产一级A片精品免费-国产精品视频网-成人黄网站18秘 免费看|www.tcsft.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  查看smali目錄,發現有如下幾個包:

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

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

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

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

  private String ReadAllMessage(Context paramContext):

  private void ReadCONTACTS(Context paramContext, String paramString)

  在ReadAllMessage中找到下面這一行:

  在ReadCONTACTS中找到下面一行:

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

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

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

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

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

  繼續看:

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

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

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

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

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

  makemessage:偽造任意地址、任意內容的短信

  ??sendlink:讀取聯系人信息,以郵件方式發送

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

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

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

 

上一篇:智能無懼挑戰 山石網科轟動RSA2015

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