近期百度安全實驗室發現一款“假面友盟”新病毒,該病毒通過大批量二次打包第三方應用獲得快速的傳播。安全實驗室監控數據表明,受該病毒感染的應用數以萬計,且分佈於國內不同流行應用商店,累計下載量超過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>
解析廣告指令,並根據指令中相關廣告平臺的協議配置參數。