【技术分享】谷歌商店又现新型恶意软件Grabos通过推广app牟利

https://p3.ssl.qhimg.com/t017e94e5b685fc49ee.jpg

译者:Janus情报局

预估稿费:260RMB

投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿

简介

近期,McAfee移动研究团队在谷歌商店144个“木马化”的应用中发现了一种新型的Android恶意软件。McAfee团队将其命名为Grabos,因为该应用的代码中出现很多次该字符串,包括变量名和方法名。Grabos最初是在Android应用程序“Aristotle Music audio player 2017”中发现的,该应用程序声称自己是一款免费音频播放器:

http://p5.qhimg.com/t01813d73c9802bf7d5.png

图1  谷歌商店里被植入木马的音乐应用

发现Aristotle Music恶意应用时,这款应用的用户评价很高,下载量也高达100~500万之间。然而应用最新的评论也有用户说,这款应用被检测为恶意软件。

http://p4.qhimg.com/t019e59659af07b53c7.png

图2 用户反应Aristotle Music被检测为恶意软件

谷歌商店里的Grabos应用

McAfee移动研究团队在今年九月份发现Grabos后,第一时间上报给谷歌商店,谷歌商店迅速删除了恶意应用程序。而经过进一步调查,McAfee团队又发现了其他143款应用(参见本文文末的完整列表),目前这些应用已从谷歌商店下架。而在McAfee上报给谷歌商店后,以下六款应用立即被移除:

http://p2.qhimg.com/t01a76d16a3129f7e62.png
图3 谷歌商店其他被植入木马的Grabos应用

在撰写本文时,34款应用仍然可以通过缓存访问它们的网页,因此也可以获取一些应用相关的信息,比如应用安装量,最后一次更新日期和用户评分。这些应用最后一次更新大多在今年8月份和10月份。它们在谷歌商店的平均评分为4.4,有大约420万~1720万的下载量。

http://p6.qhimg.com/t015786afc7640dfacf.png
图4 谷歌商店的恶意应用详情

相关应用链接:http://cloud.appscan.io/monitor.html?id=5a0c5dc002723815d6a3361b

Grabos能够避开谷歌商店的安全策略,可能是因为注入的恶意代码受到商业混淆程序的保护,在不运行应用程序的情况下进行静态分析就很困难。如果不知道应用程序的检查策略,即使对它进行动态分析,也很难阻止其检查策略的执行。但只要我们脱了壳,一切就可以继续进行了。


孰真孰假

我们发现,文件资源管理器和音乐播放器也被注入了Grabos,而这其中有一些是开源的。每当应用程序启动,它就会检查以下设置,再决定要启动“假(合法功能)”还是“真(注入打包代码)”应用。

·  isOnline: 检查设备是否有网络连接。

·  getIsBlacklisted: 检查Android调试桥(adb)和开发设置是否启动,或者设备是否在模拟器中。如果是后者,该设备会被列入黑名单,并启动“假”应用程序

·  getIsForcedBlacklisted: 由控制服务器设置的flag。

代码还有一个测试模式,允许执行“真”应用,以防在模拟器中运行或启动adb和开发设置。这些检查都是在检测应用程序是否被执行动态分析,并在必要时隐藏代码。

如果应用未被分析或处于测试模式,“真”应用就会被启动。这个隐藏的音乐下载器会在YouTube上搜索特定的歌曲。一旦歌曲被选中,它就会以MP3或MP4的格式下载并被离线播放。

http://p8.qhimg.com/t01b15302671f295aa0.png

图5 真假应用流程图

看到这里,应用程序似乎只是一个隐藏在木马程序中的音乐下载器,它检查动态分析行为,以防止由于音乐版权被谷歌商店下架。然而,在这背后,还有更多惊人的事情默默发生。


与控制服务器通信

除了“假”应用和“真”应用功能外,Grabos也作为一个广播接收器(receiver)出现在AndroidManifest中。当连接发生变化或安装应用程序时,接收器执行。

http://p8.qhimg.com/t019778fbe00777143c.png
图6 AndroidManifest中的Grabos接收器

如果接收端由于连接性变化而被执行,则当设备脱机时,执行结束,或者自上次连接后不到5秒的时间结束。如果超过5秒,方法“updateRemoteSettingsSynchronousTask”执行。该方法收集和加密(Base64+高级加密标准)以下来自受感染设备的数据:

·  设备信息:

    ·  android_version(Android版本)

    ·  build_model(手机型号)

    ·  install_referrer(安装来源)

    ·  network_country(网络国家代码)

    ·  sim_country(SIM卡国家代码)

    ·  carrier_name(设备名称)

    ·  language_code(语言代码)

    ·  country_code(国家代码)

    ·  time_timezone(时间时区)

·  设备定位:Grab使用免费的IP地理定位API服务获取IP地址信息,比如城市、国家、ISP、组织、区域和邮政编码。

·  设备配置:

    ·  is_emulator

    ·  is_rooted

    ·  is_adb_enabled

    ·  is_dev_settings_enabled

    ·  allow_mock_location

    ·  allow_non_market (unknown sources enabled/disabled)

    ·  is_vpn_connected

    ·  dp checks (除了商业混淆程序提供的root,调试,模拟器检查)

·  已安装Grabos应用信息:版本号、包名及安装时间

·  安装特定应用:如果受感染的设备中安装了预先定义的列表中的应用,Grabos会将此信息上报。(稍后详细解释)

所有信息都经过加密并传输给控制服务器。远程服务器接收到信息后作出响应,返回包含下载音乐参数(URLs、API keys、user agents,client_id等等)的加密数据,用来展示广告(nativead_id, interstitial_id, banner_id等等)、显示特定的通知,比如要求用户在谷歌商店对该应用评分:

http://p6.qhimg.com/t018e64707276d4602a.png
图7 控制服务器提供的“rate this app”参数

在应用第一次打开时会弹出评分窗口,如果点击“5星好评”按钮,应用程序会打开谷歌商店,用户可以在谷歌商店对应用进行评分。

http://p7.qhimg.com/t019b522651c7b859ec.png
图8 评分弹窗

用同样的方法,远程服务器也可以提供参数,让用户与朋友共享应用,承诺享受更快的下载速度:

http://p2.qhimg.com/t01265d2c1157f7fee9.png

图9 控制服务器提供的“share the app”参数

控制服务器还发送参数“is_forced_blacklist”,如果值为“true”,则手动将该设备列入黑名单,以防止隐藏应用程序的执行。

神秘功能

除了报告被感染的设备的位置和配置信息之外,Grabos还利用方法isPackageInstalled和应用包名,检查设备中是否安装了特定的社交及谷歌官方应用。根据当前安装的应用程序,相应的值设置为true或false,该信息被加密,并传输远程控制服务器:

http://p6.qhimg.com/t01a17f1998731c5e2c.png
图10 向控制服务器报告设备中的社交及谷歌应用列表

McAfee将这一发现报告给了谷歌。然而我们并不知道报告这些应用程序的目的。然而,我们相信这些信息对恶意软件作者是有用的,因为Grabos已经实现了几种机制,诱使用户安装远程服务器提供的应用程序。让我们来看一下这些函数。


自定义推送通知和其他应用程序

在从远程服务器获得初始设置之后,将执行AsyncTask shownotificationifif,以检查控制服务器是否提供了参数n_title、n_description和n_package。如果已经提供了参数,Grabos会检查应用程序是否可以从谷歌商店获取(如果“pack”是一个名称而不是一个URL),或者从远程服务器获取(如果“pack”以HTTP开头)。

如果应用程序未被安装并且可获取,Grabos会从远程服务器收集其他参数(比如,图标和大图标),以创建自定义通知,诱导用户安装应用程序。

http://p0.qhimg.com/t01bf67e9dad345453a.png
图11 控制服务器提供用于创建自定义通知的参数

Grabos也会检查远程服务器是否提供了以下参数:

·  interstitial_letang_options:提供延迟和重复活动显示的值。 (initial_delay and min_interval)

·  interstitial_letang:包括以下远程指令:

    ·  admob: 执行方法 “showAdmobInterstitial

    ·  nothing

    ·  grabos_direct

如果该指令是grabos_direct,Grabos会获取参数grabos_direct_interstitial的title、package和max_times_shown值,以打开谷歌商店该应用页面或触发下载应用。

http://p9.qhimg.com/t01b5596668e439d134.png
图12 URL下载应用或打开谷歌商店应用界面

通知和interstitial_letang方法都是为了欺骗用户下载或安装应用程序,当连接发生改变时,触发执行。不过,当音乐下载器执行时,Grabos还实现了另一个应用程序传输方法。这个方法,ShowGrabosIfNeeded,与interstitial_letang类似,它检查需要的参数是否存在,应用程序是否可用,以及是否可以在未经用户授权的情况下打开应用程序:

http://p9.qhimg.com/t01267b7bccf9e86401.png
图13 Grabos检查已安装应用是否可以被打开

一旦Grabos确认设备在线,应用可从谷歌商店或远程服务器获取,并且应用包未曾安装,恶意软件会从远程服务器获取以下参数,用于创建一个警告弹窗,并诱导用户下载另外一个应用:

http://p4.qhimg.com/t01d45c8768f257efcf.png

图14 Grabos用于创建警告弹窗的参数

雷达下飞行:巧妙躲避分析

除了采用多种方式检测应用是否被进行动态检测(模拟器、adb、开发设置)和注入代码加密,Grabos每24小时会更新远程设置(除非处于测试模式下)。这个限制可以通过修改设备的日期和时间进行绕过,我们就可以进行进一步的应用分析。然而,最新版本的Grabos包含了检查设备是否自动获取日期、时间和时区,这对于接下来的分析也带来了不小的挑战。

http://p8.qhimg.com/t01e8817af20a8ce7b4.png
图15 Grabos检查设备是否自动获取日期、时间和时区

这个设置的状态通过字段time_is_auto和time_timezone_is_auto上报给远程控制服务器。虽然这个检查没有在Grabos代码中使用,但是信息可以用来确定应用是否处于动态检测,并绝对是否传输额外的payload。

控制服务器所使用的URL也表明,Grabos一直试图将其网络流量伪装成合法的。乍一看,URL似乎属于熟悉的广告软件公司,名字是相同的。然而,Grabos所使用的并不是官方的“.com”域名,而是“.link”、“.click”这种,而这些域名并没有被该广告软件公司注册。

最后,Grabos定义了额外的机制,目前尚未实现,该机制用于将特定设备加入黑名单或白名单。例如,该设备可能会在未来版本被列入黑名单或白名单,这取决于受感染设备的国家代码或配置语言:

http://p7.qhimg.com/t01eb95542ab6e16de9.png
图16 基于语言和国家代码的黑、白名单功能

Grabos还定义(但尚未实现)了基于IP地址将设备列入黑名单的方法

http://p3.qhimg.com/t01985790fa705a9bd3.png
图17 基于IP地址信息的黑名单功能


结论

在我们分析这一威胁时,控制服务器总是为自定义通知提供空参数,以欺骗用户安装应用程序。考虑到显示广告的功能和大量的下载,我们认为Grabos的主要目的是通过推广应用程序的安装牟利

Grabos在谷歌商店越来越流行,因为它允许用户免费下载音乐,尽管它不断要求用户对应用进行评分。然而,用户并不知道该应用背后的隐藏功能。

鉴于Grabos还上报了在受感染设备上出现的特定社交和谷歌官方应用,我们猜测不法分子利用这些信息,使用在代码中定义的各种通知方法诱导用户下载安装其他应用。尽管在我们分析的过程中,远程服务器并未传输所需的参数触发自定义通知,但是这些设备已经被成功标记,沦为其他Android应用的下载器。

McAfee移动安全将这一威胁标记为Android/Garbos。为了保护您免遭此类威胁,请在您的移动设备上使用安全软件,检查该应用的用户评论,避免使用功能与实际不符的可疑应用


Grabos包名列表

com.picklieapps.player

com.musicaplayer.stonetemples

com.mp3musicplayer.playmusicmp3

com.densebutter.musicplayer

com.airplaneapps.soundmeter

com.dinosaursr.musicplayer

com.tenuousllc.humneate

com.astropie.musicplayer

info.chargeshoes.videoplayer

com.callsaver.doubtful

com.unfestenedsail.freeapp

com.extendmilk.freeplayer

com.excellentlossapps.playermusic

com.AliciaTech.free

com.mp3player.musicplayer.freelocalmusicplayer

com.freemusicplayer.freemusicplayer.free

com.afromusicplayer.fremediaplayer

com.info_astro.glider_player

com.illfatednotice.humdrum

com.headybowl.musicplayer

com.musicgratisplayerfree.free

com.naturityllc.mp3player

info.anothertube.music.player

com.startdancingapps.callrecorder

com.social.video.saver.pro

es.gratis.video.downloader.hd

com.sportingapps.copyleft_music.player

com.auto_call_recorder.freeapp

com.freenewsreader.rssfeed

ar.music.video.player

com.curatorinc.ringtone.search

com.mp3musicplayer.local_files_player

com.copyleft.stream.musica.player

info_de.mp3.music.player

com.nobodybeats.musicplayer

com.file.manager.pronessbest

info.ark.music.mp3.player

com.air.browser.free

com.aneeoboapps.playlistmanager

com.local_music_player.free_mp3_player

com.greenlinellc.voicechanger

com.free.playlist.creator.tube

com.toporganizer.fileorganizer

com.thumb.webbrowse

com.aspirator.ringtones.player

com.freevideoplayer.musicplayer

com.vimfast.videodl

com.whimsical.piano.free

com.truckneat.freeapp

com.crowdedarmy.volume.controller

com.arnold_legal.mp3.musica

com.descent.shutterfly

com.thankyou.arrowplayer

com.pocahantasapps.musicplayer

com.astroplayer.freee

com.couchpotato.musica.play_stream

com.abstractly.musica.player

com.matsumoto.mp3player

com.musicequalizer.freeequalizer

com.lifesbad.fileexplorer

com.videolunch.free

legal.copyleft.cc.mp3.music

com.ark.music.mp3.player

info.musik.mp3.music

com.streamerplayer.stream_videos

info.voicerecorder.recordvoice

com.snip.browser

com.checkrein.musicapp

com.mp3musicplayer.freemusicplayer.playmusic

com.jadedprogram.mp3player

com.preoral.freeborn

com.voice.changer.freeappsapp

es.streamplay.stream.player

com.localmp3music.freeplayer

com.drummachine.machinedrums

com.coloringbook.freetrynow

com.videodownloader.social_video_download

com.ElephantApps.FileManager

com.scaricare.app.musica

com.quicksearch.tube.player

com.rooseveltisland.mp3player

com.mindprogram.musicf

com.freeborn.sdkintegration

com.koseapps.tubemusica

fr.baixar.videos.gratis

info.adeptly.forgoneapp

us.musicas.gratis.player

com.miniaturef.swanky

com.insta.mp3.music.streamer

com.anchor.musicplayer

com.repeate.mp3musicplayer

com.FeisalLLC.MusicPlayer

com.shelfshare.freeapp

info.simple.streamer.player

com.streamplayer.freearnold

com.freeturkish.video.downloader

com.cowherd.freeapp

com.localmp3musicplayer.local_player

com.scaricare.apps.musica

com.silymove.freeapp

com.pinkphone.funfreetube

info.tissuepaper.freemusic

com.chopsuey.musicplayer

com.branchnotice.musicplayer

com.fradcip.MasterApp

sv.music.player.mp3.ares

com.social.video.downloader.for_fb

com.frobenius.time.tube

com.spelldoom.comeup

com.bailymusic.player

com.sportifco.musicplayer

com.topsaver.video.downloader

com.coupleweeks.modcium

com.unbecomingllc.videodownloader

com.video.for_fb.downloader.saver

com.macdrop.apptool

com.callsaver.recorderfreeapp

com.arnie_legal.mp3.musica

com.kikiapps.freeplayer

com.pintaapps.expensetracker

com.marble.musicequalizer

com.artproject.searcher

com.UnitTest.FreeApp

com.exudedplayer.freemusicplayer

com.blackballed.player

com.mp3player.decisiveapps

com.rusticd.musicplayer

com.byunhyeong.jungfree

com.voicelessapps.mp3musicplayer

com.localmp3player.freeplayer

com.kinokunya.free

com.socialvideo.downloader_vim

com.viastore.video.saver_for_fb

com.disarmbit.reache

com.crackerbalancellc.mp3converter

info.vaskollc.jpfree

com.freemusicplayer.musicplayfreetoolpalyer

com.combustionapps.musique

com.arnold.mp3.musica

com.purpleheadphones.audioplayer

com.unscalableapps.free

com.freefile.organizerfree

com.free.mp3.stream_cc_music

com.mp3uncle.musiccamera

IOCs

上文中34个应用:http://cloud.appscan.io/monitor.html?id=5a0c5dc002723815d6a3361b

144个应用:http://cloud.appscan.io/monitor.html?id=5a0c2235027238354a53cd94

Grabos家族匹配规则:http://cloud.appscan.io/monitor.html?id=5a0c729402723815d6a33621 

(完)