林甜酒 發表於 2016-7-13 09:04:26

你看到的APP排行不一定是真的 揭秘手机软件恶意刷榜推广

<p><strong>随着移动端应用市场数量爆炸式增长,App推广和曝光率也越来越难。哪里有需求哪里就有生财之道,自然,App刷榜也就形成了一条产业链,它能够在短期内大幅提高下载量和用户量,进而提高应用的曝光率。</strong>当你打开应用市场想要下载一个功能性的APP,搜索结果出来后是不是都要看一下旁边的下载量?有时候还会看一下用户评论,那么,下载量大的就是好的吗?真的大家都在下吗?今天为你揭秘一个APP捆绑病毒木马利用你的手机恶意刷榜的案例,揭秘这个行业不为人知的一面。</p>
<p><strong>近期,阿里移动安全发现一款名叫&ldquo;魔百Wi-Fi&rdquo;应用,该应用官方的一个版本捆绑了多个病毒,目的是对GooglePlay </strong><strong>商店应用刷榜和刷大量未知应用安装量。</strong></p>
<p>该病毒在该设备锁屏时对设备root,root成功后向系统目录植入&ldquo;刷榜僵尸&rdquo;病毒,&ldquo;刷榜僵尸&rdquo;对指定应用在 GooglePlay商店上恶意刷量,同时还会诱骗用户安装&ldquo;下载者&rdquo;病毒,&ldquo;下载者&rdquo;病毒会在设备屏幕亮起状态会弹出广告页面,<strong>若用户触碰广告页面推广的应用将会自动安装运行。</strong>该病毒技术相当成熟,root 提权使用最高广的漏洞(CVE-2014-3153 TOAWELROOT、CVE-2015-3636 PINGPONG和PUTUSER 等),2015年10月之前的设备全部受影响。<strong>我们对恶意应用的证书对比,惊人的发现并非被重打包!</strong></p>
<p>&ldquo;魔百Wi-Fi&rdquo;在2015年末首次发布,向用户打着安全Wi-Fi 旗号,短短半年用户安装量已高达300万。我们发现它具备专业的应用推广团队,目前已在国内知名渠道发布多篇宣传文章,并与国内多家应用商店合作,下图是&rdquo;魔百Wifi&rdquo; 前不久的一篇文章,文中还提到&ldquo;截至目前,魔百WiFi拥有超过2亿的国内外热点,已覆盖商场、酒店,热点全线接入&rdquo;。</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" width="700" height="608" src="https://img.jbzj.com/file_images/article/201607/201607130901251.png" /></p>
<p align="left">&ldquo;魔百Wifi&rdquo;目前最新版本为2.3.18。根据应用证书md5(5919ee638614c467152ab4d07c9cc2dc) 排查,发现版本2.3.5~2.3.10被官方插入了恶意代码。值得注意的是,官方发布的2.3.8 版本打了两个不同的包,一个增加root提权向系统目录植入&ldquo;刷榜僵尸&rdquo;,另外一个包和2.3.10版本应用都捆绑了&ldquo;下载者&rdquo;病毒。捆绑了&ldquo;刷榜僵尸&rdquo;和&ldquo;下载者&rdquo;的&ldquo;魔百 Wifi&rdquo;,利用自身的用户量对应用刷榜和安装,进而非法牟利。以下是对&ldquo;魔百Wi-Fi&rdquo;2.3.8带 root包的应用分析。</p>
<p><strong>一、主包分析:</strong></p>
<p>该病毒捆绑了多个子包,以下是各个模块关系图:</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/201607130901252.png" /></p>
<p>1. 解密assets目录下sdk.data、__image 数据,解密后sdk.data是一个目录,目录下包括MainJson.txt、dexhostinjection.jar 、libDaemonProcess.so, __image是apk文件;</p>
<p>2. 唤起PushDexService、PushJobService完成dexhostinjection.jar 加载,以及执行dexhostinjection.jar的com.hostinjectiondex.external.ExternalInterfaces类的startExternalBody 方法,子包下载&ldquo;下载者&rdquo;病毒update,并诱导用户安装。</p>
<p>3. 开启后台服务利用libgodlikelib.so进行root提权,提权成功将libgodlikelib.so 提权工具库写入系统库文件;__image解密的apk文件植入系统目录,取名AndroidDaemonFrame.apk 即是&ldquo;刷榜僵尸&rdquo;病毒;</p>
<p><strong>二、root提权</strong></p>
<p>该样本是基于开源的RUN_ROOT_SHELL 改写而成,可以对2015年10月份之前的全部设备root ,主要利用了以下漏洞进行提权:</p>
<p>(1) CVE-2012-4220</p>
<p>影响设备:Android2.3~4.2</p>
<p>使用的QualcommInnovation Center(QuIC)Diagnostics内核模式驱动程序diagchar_core.c在实现上存在整数溢出漏洞 ,通过向diagchar_ioctl内传递特制的输入,远程攻击者可利用此漏洞执行任意代码或造成拒绝服务。</p>
<p>(2) /dev/graphics/fb0</p>
<p>fb0设备mmap漏洞(触发参数FBIOGET_FSCREENINFO)</p>
<p>(3) /dev/hdcp</p>
<p>hdcp设备mmap漏洞</p>
<p>(4) CVE-2013-6282</p>
<p>影响版本:linux kernel3.2.1、Linux kernel3.2.2、Linux kernel3.2.13</p>
<p>Linux kernel对ARM上的get_user/put_user缺少访问权限检查,本地攻击者可利用此漏洞读写内核内存,获取权限提升。</p>
<p>(5) /dev/msm_acdb</p>
<p>高通设备漏洞</p>
<p>(6) CVE-2013-2595</p>
<p>/dev/msm_camera/config0高通设备MMAP漏洞。</p>
<p>(7) CVE-2013-2094</p>
<p>影响版本:linux kernel3.8.9之前开启了PERF_EVENT的设备</p>
<p>利用该漏洞,通过perf_event_open系统调用,本地用户可以获得系统的最高权限。</p>
<p>(8) CVE-2015-3636</p>
<p>影响设备:2015年9月份之前的设备</p>
<p>pingpong该漏洞是Linux&nbsp;kernel的ping套接字上存在的一个Use-After-Free 漏洞。</p>
<p>(9) CVE-2014-3153</p>
<p>影响设备:2014年6月以前的设备</p>
<p>漏洞利用了futex_requeue、futex_lock_pi、futex_wait_requeue_pi 三个函数存在的RELOCK漏洞和REQUEUE漏洞,造成了对内核栈上的数据修改。</p>
<p><br /></p>
<p>对设备成功提权后,会将解密的__image植入/system/priv-app目录并命名为AndroidDaemonFrame.apk ,将libgodlikelib.so提权工具库植入/system/lib目录。下图提权并向系统目录植入恶意文件。</p>
<p><br /></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/201607130901253.png" /></p>
<p><strong>三、AndroidDaemonFrame.apk&ldquo;刷榜僵尸&rdquo;分析</strong></p>
<p>AndroidDaemonFrame应用是主包解密后植入到系统目录的应用,该应用是一款转用于恶意刷榜的病毒,利用用户设备账户信息作为刷榜僵尸,完成对C&amp;C控制端指定应用的恶意刷榜。&ldquo;刷榜僵尸&rdquo;工作流程如下:</p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/201607130901254.png" /></p>
<p></p>
<p>1.&ldquo;刷榜僵尸&rdquo;C&amp;C控制端配置keywords和package_name。</p>
<p>2.&ldquo;刷榜僵尸&rdquo;向googleplay发起认证,通过获取的设备googleplay账号和密码,或authtoken。</p>
<p>3. 模拟googleplay协议对目标应用搜索、浏览和下载。</p>
<p>刷榜僵尸病毒在设备启动、屏幕解锁和网络改变触发BootReceiver组件执行,随后启动核心服务DispatcherService,该服务创建updateTask和googlePlayTask定时任务。</p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/201607130901265.png" /></p>
<p><strong>定时任务googlePlayTask</strong></p>
<p></p>
<p>googlePlayTask每3小时执行一次,对配置文件里的keywords 和package_name指定的应用从GooglePlay爬取。下图root提权重定向设备账户文件。</p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/201607130901266.png" /></p>
<p><strong>病毒通过</strong><strong>GooglePlay</strong><strong>验证有两种方式,一使用</strong><strong>authtoken</strong> ,全称authentication token,有了它病毒无须每次操作都向google服务器发送密码,&nbsp; 执行语句:sql.rawQuery(&ldquo;select type,authtoken from authtokens where type like \&rsquo;com.android.vending%\&rsquo; and accounts_id=&rdquo;+ accounts_id, null);<strong>二是获取</strong> <strong>google</strong><strong>账户</strong><strong>name</strong><strong>、</strong><strong>password</strong> <strong>和</strong><strong>_id</strong><strong>值。</strong>执行语句:sql.rawQuery(&ldquo;select * from accounts where type = ?&rdquo;, new String []{&ldquo;com.google&rdquo;}) 。如下图。</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/201607130901267.png" /></p>
<p>成功与google play服务器连接后,通过配置文件提供的keywords和package_name完成应用搜索、浏览和下载</p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/201607130901268.png" /></p>
<p>当前配置文件如下图,发现病毒正在对package_name是com.felink.shine的应用刷量。</p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/201607130901269.png" /></p>
<p>病毒完全模拟google play下载协议,包括设置cookie(AndroidId + authToken)、User-agent(AndroidDownloadManager)等,GooglePlay应用下载请求流程大致如下图(https://github.com/egirault/googleplay-api/issues/30 github已屏蔽,但我想既然你看到这里,应该知道怎么打开):</p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012610.png" /></p>
<p></p>
<p>&ldquo;刷榜僵尸&rdquo;病毒的GooglePlayRequester工具类模拟了以上过程,实现google play商店应用下载。</p>
<p></p>
<p><strong>四、子包dexhostinjection.jar</strong></p>
<p></p>
<p>子包dexhostinjection.jar由assets目录下sdk_data文件解密得到,完成了以下几个功能:</p>
<p></p>
<strong>4.1 服务保活</strong>
<p></p>
<p>解析主包传递的000(m_pkgname)、001(m_class_name)、002(m_sdk_data)、003(libDaemonProcess)、004(1.apk)参数,利用libDaemonProcess库服务保活,在底层执行am startservice启动主包传递的service,也就是主包中的com.hostinjectionmain.control.DexService。如下图。</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012611.png" /></p>
<p></p>
<p><strong>4.2 下载&ldquo;下载者&rdquo;病毒</strong></p>
<p></p>
<p>主包004参数传递的应用名,并拷贝到设备sdcard/database目录命名为5supdate.apk,同时配置&ldquo;下载者&rdquo;病毒相关文件,存放目录在sdcard/database目录下。包括actiondown记录包名以及启动服务名、actionsuk应用最近一次运行时间、install.ab服务器推广应用安装情况、mychannel应用渠道,这些文件数据全部都AES加密存放。Actiondown记录下载者病毒包名以及入口服务。</p>
<p></p>
<p>actiondown:{&ldquo;downLoadPackageName&rdquo;:&rdquo;com.android.ucgmap&rdquo;,&rdquo;downLoadVersionKey&rdquo;:1,&rdquo;downLoadStartMethod&rdquo;:&rdquo;com.android.ucgmap\/com.android.ucgmap.AimService&rdquo;}</p>
<p></p>
<strong>4.3 诱骗用户安装,并启动&ldquo;下载者&rdquo;病毒</strong>
<p></p>
<p>子包动态注册监听android.intent.action.PACKAGE_ADDED、android.intent.action.USER_PRESENT消息广播。处理包安装完毕消息,若此次安装包名是actiondown里downLoadPackageName字段记录的&ldquo;下载者&rdquo;病毒,读取downLoadStartMethod字段启动&ldquo;下载者&rdquo;。</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012612.png" /></p>
<p></p>
<p><strong>使用两种策略诱骗用户安装&ldquo;下载者&rdquo;病毒(其应用名为update),一默认模式以应用更新诱骗用户点击安装;二由服务器设置,弹出系统更新诱骗用户点击安装。</strong></p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" width="500" height="407" src="https://img.jbzj.com/file_images/article/201607/2016071309012613.jpg" /></p>
<p></p>
<p><strong>4.4 子包自更新</strong></p>
<p></p>
<p>子包的连接并不是直接暴露的,而是做了两层跳板。配置下一跳转访问地址http://dispatch.smartchoiceads.com/v2.1/2000,参数设备aid、imsi、gaid、mac(wifi),request和response数据全部AES加密。服务端会根据上传的设备信息返回次设备对应的url地址,随后设备会使用该地址下载服务端推广的应用。 <strong>下图访问url_1(http://dispatch.smartchoiceads.com/v2.1/2000)返回加密的数据,经AES解密提取data值获取当前设备的对应访问的服务器地址url_2。</strong> </p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012614.png" /></p>
<p></p>
<p>解密后的数据为:{&ldquo;upstream&rdquo;:&rdquo;http:\/\/sdk.smartchoiceads.com&rdquo;},这样获取了下一跳板的地址。 访问跳板地址,下载、加载和运行最新版子包。 访问服务器配置的url_2,服务器同样返回AES加密数据,解密后的数据如下:</p>
<p></p>
<p>{&ldquo;solib_name&rdquo;:&rdquo;libDaemonProcess.so&rdquo;,&rdquo;download_url&rdquo;:&rdquo;http:\/\/u.smartchoiceads.com\/sdk\/HostDex_20160623163035.jar&rdquo;,&rdquo;classname&rdquo;:&ldquo;com.hostinjectiondex.external.ExternalInterfaces&rdquo;,&rdquo;filename&rdquo;: &ldquo;dexhostinjection.jar&rdquo;,&rdquo;start_method&rdquo;:&ldquo;startExternalBody&rdquo;,&rdquo;solib_url&rdquo;:&rdquo;http:\/\/u.smartchoiceads.com\/sdk\/libDaemonProcess_20160520175142.so&rdquo;,&rdquo;stop_method&rdquo;:&ldquo;stopExternalBody&rdquo;,&rdquo;request_interval&rdquo;:&rdquo;1800&Prime;,&rdquo;version&rdquo;:&rdquo;8&Prime;}。</p>
<p></p>
<p>根据解密获取的字段,下载新版本的dexhostinjection.jar包,以及lib库,目前服务器最新版本dexhostinjection_8.jar。子包通过向主包的DexService发送com.injection.action.RELOAD_DEX消息意图,完成子包更新加载。</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012615.png" /></p>
<p></p>
<p><strong>五、&ldquo;下载者&rdquo;分析</strong></p>
<p></p>
<p>子包dexhostinject.jar下载的5supdate.apk存放位置在sdcard/database目录下,既是&ldquo;下载者&rdquo;病毒安装包,通过应用更新或系统更新诱骗用户安装,安装后dexhostinject.jar启动&ldquo;下载者&rdquo;导出服务AimService。&ldquo;下载者&rdquo;病毒工作流程图如下:</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012616.png" /></p>
<p></p>
<p><strong>5.1 ChatActivity组件,强制激活设备管理</strong></p>
<p></p>
<p>dexhostinject.jar启动应用的参数会唤起ChatActivity组件运行。ChatActivity进行设备管理激活,一旦用户激活设备管理,应用将很难被卸载。用户在取消截获设备管理时,AdminReciver会进行锁屏操作并跳转到桌面。</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012717.png" /></p>
<p></p>
<p><strong>5.2 组件AimService</strong></p>
<p></p>
<p>1. 加载target.jar子包,保护&ldquo;下载者&rdquo;核心服务AimService不死</p>
<p></p>
<p>2. 启动ApsService,组件ApsService是云端推送服务,注册时钟广播每10分钟发送广播转交给ApsAdReceiver处理</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012718.png" /><br /></p>
<p></p>
<p>3. onStartCommand处理消息意图,包括:</p>
<p></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;a)com.injection.action.RELOAD_DEX,更新target.jar子包;</p>
<p></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;b)com.injection.action.stopJobService,停止JobScheduler并进程自杀;</p>
<p></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;c)-a com.android.startadmin &ndash;es isadmin true,唤起ChatActivity组件,进行激活设备管理。该意图消息是dexhostinject.jar发送给AimService的。</p>
<p></p>
<strong>5.3&ldquo;下载者&rdquo;应用推送分析</strong>
<p></p>
<p>应用下载、安装和启动由ApsService和ApsAdReceiver联合完成。当update 应用处于后台运行,并且屏幕处于亮起状态,&ldquo;下载者&rdquo;向C&amp;C服务器发起请求,下图访问C&amp;C控制。</p>
<p></p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012719.png" /></p>
<p></p>
<p>&ldquo;下载者&rdquo;病毒会每隔10分钟访问http://www.gamecpi.com/tapcash/com.android.ucgmap/control.json,返回数据结构如下。</p>
<p></p>
<p></p>
<p><code></code></p>
<pre></pre>
<p></p>
<p>该数据结构信息是当前推广应用的信息,随后通过消息handler转交给startAdWork函数处理。</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012720.png" /></p>
<p></p>
<p>每隔120分钟请求控制端下载推广应用,http://www.gamescpa.com/SDKManager/cpa/downloadlink.php?country=cn&amp;packageName=com.android.ucgmapC&amp;C,控制端返回推送的应用信息,包括packgae(应用包名)、url(应用下载链接)、size(应用大小),返回数据转交给消息handler处理,进行应用下载安装。</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012721.png" /><br /></p>
<p></p>
<p>再配合之前注册的时钟广播ApsAdReceiver,完美完成推广应用启动。</p>
<p></p>
<p align="center"><img alt="APP应用是如何恶意刷榜推广的" src="https://img.jbzj.com/file_images/article/201607/2016071309012722.png" /></p>
<p></p>
<p><strong>六、 病毒sha1:</strong></p>
<p>01b3e575791642278b7decf70f5783ecd638564d <br /><br />5900fabbe36e71933b3c739ec62ba89ac15f5453 <br /><br />7ebdd80761813da708bad3325b098dac9fa6e4f5 <br /><br />ea781498268ced8dbb892d02aeaad23f4b87a510 <br /><br />44e81be6f7242be77582671d6a11de7e33d19aca <br /><br />34b7b38ce1ccdd899ae14b15dd83241584cee32b <br /><br />74a55e9ea67d5baf90c1ad231e02f6183195e564 <br /><br />4e5af777fe28f450a670e789b23fb3669dc6e6b6 <br /><br />d59f97297de38db7f85349c9486413e914ff35b5 <br /><br />b219db613284a3dd0e87edea67da744be59e7732 <br /><br />9b9109ecfa38d9664084a513392ffc3f41349f02 <br /><br />2b1da376212e63cb25a19900642c4bbca6e49c01 <br /><br />18d9546193a354aec0c76d141dd66fbf99181bad <br /><br />63c20ee3c1e1b39921d2b3d86aade39de738ea9b <br /><br />5d2a08d7c1f665ea3affa7f9607601ffae387e8b <br /><br />70105591ea9f2b42534062278f31dbf9788575b3 <br /><br />34b7b38ce1ccdd899ae14b15dd83241584cee32b <br /><br />78e9c7e0510b0c28abf28dd46910ab14c56ab4df <br /><br />88745ecb3114fc0539ca05db388e1c77d3e76109 <br /><br />885fe0dca39d0fe281aad78cbce2fb73f27f3aea <br /><br />50bdc0195ed3c6f9909e62d4926f26d312cc39fa <br /><br /><br />{ <br /><br />&quot;isOpened&quot;:true, <br /><br />&quot;isOpenHideNativeAd&quot;:true, <br /><br />&quot;fid&quot;:&quot;&quot;, <br /><br />&quot;fnid&quot;:&quot;558734714274962_641985812616518&quot;, <br /><br />&quot;aid&quot;:&quot;ca-app-pub-2499265864844132/2514086206&quot;, <br /><br />&quot;bnid&quot;:660078, <br /><br />&quot;solaid&quot;:5011, <br /><br />&quot;soltid&quot;:1000171, <br /><br />&quot;ad_interval&quot;:10, <br /><br />&quot;no_ad_start&quot;:0, <br /><br />&quot;no_ad_end&quot;:6 <br /><br />} <br /><br /><strong>七、总结</strong></p>
<p></p>
<p><strong><font color="#ff0000">该病毒应用通过版本更新,进行恶意版本下发,在完成&ldquo;刷榜僵尸&rdquo;和&ldquo;下载者&rdquo;病毒后又利用版本更新替换成线上安全版本,如此在各大应用市场上期存活</font></strong>。阿里移动安全建议,用户下载此类App请认准大厂商品牌应用;谨慎点击软件内的推送广告;来源不明的应用不要随意点击;请定期使用阿里钱盾等手机安全软件查杀病毒。</p>
<p></p>
<p>&nbsp;<div class="arc_down"><img src="https://img.jbzj.com/do/uploads/160318/160318/_154500107.png"><p class="arc_down_title">魔百WiFi for androidV2.3.18 安卓版</p><ul><li><span>类型:</span>网络通讯</li><li><span>大小:</span>8.50MB</li><li><span>语言:</span>简体中文</li><li><span>时间:</span>2016-07-13</li></ul>查看详情</div></p>
<p>这个版本不知道是否含有以上说的刷榜病毒,但是如果不点击广告,应该没什么问题,就等它自己更新成安全版本也不错。需要的可以试试。</p>
頁: [1]
查看完整版本: 你看到的APP排行不一定是真的 揭秘手机软件恶意刷榜推广