【Android病毒分析汇报】 - 新病毒FakeUmg “假面友盟”
本文章由Jack_Jia编写,转载请注明出处。
文章链接:http://blog.csdn.net/jiazhijun/article/details/12658633
作者:Jack_Jia 邮箱: 309zhijun@163.com
近期百度安全实验室发现一款“假面友盟”新病毒,该病毒通过大批量二次打包第三方应用获得快速的传播。安全实验室监控数据表明,受该病毒感染的应用数以万计,且分布于国内不同流行应用商店,累计下载量超过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发送短信,使用方法名迷惑逆向分析人员。
按照短信指令配置拦截特定号码短信:
- 2楼suannai0314昨天 11:11
- 您的文章已被推荐到CSDN首页,感谢您的分享。
- 1楼xiaoniuhong昨天 18:59
- 好厉害的样子!