本文章由Jack_Jia編寫,轉載請註明出處。
文章鏈接:http://blog.csdn.net/jiazhijun/article/details/12658633
作者:Jack_Jia 郵箱: [email protected]
近期百度安全實驗室發現一款“假面友盟”新病毒,該病毒通過大批量二次打包第三方應用獲得快速的傳播。安全實驗室監控數據表明,受該病毒感染的應用數以萬計,且分佈於國內不同流行應用商店,累計下載量超過10萬餘次。該病毒惡意代碼僞裝成著名的“友盟統計”插件,具有較強的隱蔽性,導致該病毒較難被發現。
該病毒啓動後,後臺偷偷訪問遠端服務器獲取運行指令,並根據服務器端指令執行如下惡意行爲:
1、後臺私自發送短信訂閱付費服務,並攔截特定號碼短信,完成吸費。
2、後臺自動化模擬點擊訪問廣告,騙取廣告聯盟廣告推廣費,消耗大量數據流量。
目前監控到的該病毒的遠端指令服務器有以下幾個:
http://118.126.11.136
http://218.240.151.104
http://www.ppa2099.com
http://www.sese365.net
http://www.fafa7891.com
1、首先該病毒通過修改AndroidManifest.xml文件的入口Activity爲com.umeng.adutils.SplashActivity,SplashActivity啓動惡意代碼後,再啓動源程序MainActivity。這樣就達到了既啓動惡意代碼,又不破壞原有程序邏輯的目的。
代碼樹結構
通過僞裝成“友盟SDK"到達隱藏目的,逆向分析人員極易忽略此類代碼。
2、病毒惡意組件功能及交互圖
3、惡意代碼片段截圖
一、廣告模擬點擊相關
廣告指令服務器端地址:
Http請求服務器獲取廣告指令,廣告指令通過Base64編碼,解碼後的指令如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--軟件信息-->
<application>
<!--應用名稱-->
<appname>阿倫威克高清動態壁紙</appname>
<!--應用包名-->
<pkgname>com.cnr.alunweike</pkgname>
<!--應用版本-->
<appversion>2.3.3</appversion>
<!--應用版本數-->
<appversioncode>16</appversioncode>
<!--應用主界面-->
<activity>MainActivity</activity>
<!--所在廣告平臺產品ID-->
<appid>29e27c80-6a22-44e7-9c1c-1033b0bbeab5</appid>
<!--所在廣告平臺渠道ID-->
<appchannel>DTN</appchannel>
<appkey>yzwzyleoczhi</appkey>
</application>
<!--模擬平臺的參數信息-->
<advertisement>
<!--廣告平臺名稱-->
<advertname>datouniao</advertname>
<adverttimes>0</adverttimes>
<!--廣告平臺需要模擬地址信息-->
<url urlid="1">
<!--具體網絡地址,若以大括號包圍表示關鍵字-->
<detail>http://ws1.datouniao.com/AdPublisherConnect</detail>
<!--訪問方式-->
<way>get</way>
<!--是否需要UA-->
<useragent>0</useragent>
<!--延遲時間,以秒爲單位-->
<delay>0</delay>
<!--返回的正確結果-->
<statusCode>200</statusCode>
<!--所需參數-->
<param pid="1">
<name>udid</name>
<value>$deviceID</value>
</param>
<param pid="2">
<name>device_name</name>
<value>$deviceType</value>
</param>
<param pid="3">
<name>device_type</name>
<value>android</value>
</param>
<param pid="4">
<name>os_version</name>
<value>$deviceOs</value>
</param>
<param pid="5">
<name>country_code</name>
<value>CN</value>
</param>
<param pid="6">
<name>language_code</name>
<value>zh</value>
</param>
<param pid="7">
<name>app_id</name>
<value>$appId</value>
</param>
<param pid="8">
<name>screen_density</name>
<value>$deviceDensity</value>
</param>
<param pid="9">
<name>screen_width</name>
<value>$deviceWidth</value>
</param>
<param pid="10">
<name>screen_height</name>
<value>$deviceHeight</value>
</param>
<param pid="11">
<name>sdk_version</name>
<value>7</value>
</param>
<param pid="12">
<name>userID</name>
<value>$deviceID</value>
</param>
<param pid="13">
<function>netType</function>
<value>$netType</value>
</param>
<param pid="14">
<name>place_id</name>
<value>$appChannel</value>
</param>
<param pid="15">
<name>timestamp</name>
<function>$at</function>
</param>
<param pid="16">
<name>verifier</name>
<function>$verifier</function>
</param>
</url>
<url urlid="2">
<!--具體網絡地址,若以大括號包圍表示關鍵字-->
<detail>http://ws1.datouniao.com/android/AdsOffers</detail>
<!--訪問方式-->
<way>get</way>
<!--是否需要UA-->
<useragent>1</useragent>
<!--延遲時間,以秒爲單位-->
<delay>0</delay>
<!--返回的正確結果-->
<statusCode>200</statusCode>
<!--所需參數-->
<param pid="1">
<name>udid</name>
<value>$deviceID</value>
</param>
<param pid="2">
<name>device_name</name>
<value>$deviceType</value>
</param>
<param pid="3">
<name>device_type</name>
<value>android</value>
</param>
<param pid="4">
<name>os_version</name>
<value>$deviceOs</value>
</param>
<param pid="5">
<name>country_code</name>
<value>CN</value>
</param>
<param pid="6">
<name>language_code</name>
<value>zh</value>
</param>
<param pid="7">
<name>app_id</name>
<value>$appId</value>
</param>
<param pid="8">
<name>screen_density</name>
<value>$deviceDensity</value>
</param>
<param pid="9">
<name>screen_width</name>
<value>$deviceWidth</value>
</param>
<param pid="10">
<name>screen_height</name>
<value>$deviceHeight</value>
</param>
<param pid="11">
<name>sdk_version</name>
<value>7</value>
</param>
<param pid="12">
<name>userID</name>
<value>$deviceID</value>
</param>
<param pid="13">
<name>netType</name>
<function>$netType</function>
</param>
<param pid="14">
<name>place_id</name>
<value>$appChannel</value>
</param>
<param pid="15">
<name>clientParams</name>
<value></value>
</param>
<param pid="16">
<name>timestamp</name>
<!--參數值, 獲取當前時間,可在|後設置延遲時間,以毫秒爲單位-->
<function>$at|15000</function>
</param>
<param pid="17">
<name>lat</name>
<function>$location|lat</function>
</param>
<param pid="18">
<name>lng</name>
<function>$location|lng</function>
</param>
<param pid="19">
<name>city</name>
<function>$location|city</function>
</param>
<param pid="20">
<name>verifier</name>
<function>$verifier</function>
</param>
</url>
</advertisement>
</configuration>
解析廣告指令,並根據指令中相關廣告平臺的協議配置參數。
二、惡意吸費相關
吸費指令服務器地址:
Http請求獲取吸費指令,Base64解碼後的吸費指令結構爲:
爲了掩蓋發送短信行爲,惡意攻擊者通過native stringFromJNI方法調用so發送短信,使用方法名迷惑逆向分析人員。
按照短信指令配置攔截特定號碼短信: