安全路透社
当前位置:安全路透社 > 安全客 > 正文

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

简介


近期,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包名列表


picklieapps.player

musicaplayer.stonetemples

mp3musicplayer.playmusicmp3

densebutter.musicplayer

airplaneapps.soundmeter

dinosaursr.musicplayer

tenuousllc.humneate

astropie.musicplayer

chargeshoes.videoplayer

callsaver.doubtful

unfestenedsail.freeapp

extendmilk.freeplayer

excellentlossapps.playermusic

AliciaTech.free

mp3player.musicplayer.freelocalmusicplayer

freemusicplayer.freemusicplayer.free

afromusicplayer.fremediaplayer

info_astro.glider_player

illfatednotice.humdrum

headybowl.musicplayer

musicgratisplayerfree.free

naturityllc.mp3player

anothertube.music.player

startdancingapps.callrecorder

social.video.saver.pro

gratis.video.downloader.hd

sportingapps.copyleft_music.player

auto_call_recorder.freeapp

freenewsreader.rssfeed

music.video.player

curatorinc.ringtone.search

mp3musicplayer.local_files_player

copyleft.stream.musica.player

mp3.music.player

nobodybeats.musicplayer

file.manager.pronessbest

ark.music.mp3.player

air.browser.free

aneeoboapps.playlistmanager

local_music_player.free_mp3_player

greenlinellc.voicechanger

free.playlist.creator.tube

toporganizer.fileorganizer

thumb.webbrowse

aspirator.ringtones.player

freevideoplayer.musicplayer

vimfast.videodl

whimsical.piano.free

truckneat.freeapp

crowdedarmy.volume.controller

arnold_legal.mp3.musica

descent.shutterfly

thankyou.arrowplayer

pocahantasapps.musicplayer

astroplayer.freee

couchpotato.musica.play_stream

abstractly.musica.player

matsumoto.mp3player

musicequalizer.freeequalizer

lifesbad.fileexplorer

videolunch.free

copyleft.cc.mp3.music

ark.music.mp3.player

musik.mp3.music

streamerplayer.stream_videos

voicerecorder.recordvoice

snip.browser

checkrein.musicapp

mp3musicplayer.freemusicplayer.playmusic

jadedprogram.mp3player

preoral.freeborn

voice.changer.freeappsapp

streamplay.stream.player

localmp3music.freeplayer

drummachine.machinedrums

coloringbook.freetrynow

videodownloader.social_video_download

ElephantApps.FileManager

scaricare.app.musica

quicksearch.tube.player

rooseveltisland.mp3player

mindprogram.musicf

freeborn.sdkintegration

koseapps.tubemusica

baixar.videos.gratis

adeptly.forgoneapp

musicas.gratis.player

miniaturef.swanky

insta.mp3.music.streamer

anchor.musicplayer

repeate.mp3musicplayer

FeisalLLC.MusicPlayer

shelfshare.freeapp

simple.streamer.player

streamplayer.freearnold

freeturkish.video.downloader

cowherd.freeapp

localmp3musicplayer.local_player

scaricare.apps.musica

silymove.freeapp

pinkphone.funfreetube

tissuepaper.freemusic

chopsuey.musicplayer

branchnotice.musicplayer

fradcip.MasterApp

music.player.mp3.ares

social.video.downloader.for_fb

frobenius.time.tube

spelldoom.comeup

bailymusic.player

sportifco.musicplayer

topsaver.video.downloader

coupleweeks.modcium

unbecomingllc.videodownloader

video.for_fb.downloader.saver

macdrop.apptool

callsaver.recorderfreeapp

arnie_legal.mp3.musica

kikiapps.freeplayer

pintaapps.expensetracker

marble.musicequalizer

artproject.searcher

UnitTest.FreeApp

exudedplayer.freemusicplayer

blackballed.player

mp3player.decisiveapps

rusticd.musicplayer

byunhyeong.jungfree

voicelessapps.mp3musicplayer

localmp3player.freeplayer

kinokunya.free

socialvideo.downloader_vim

viastore.video.saver_for_fb

disarmbit.reache

crackerbalancellc.mp3converter

vaskollc.jpfree

freemusicplayer.musicplayfreetoolpalyer

combustionapps.musique

arnold.mp3.musica

purpleheadphones.audioplayer

unscalableapps.free

freefile.organizerfree

free.mp3.stream_cc_music

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 


原文链接:https://securingtomorrow.mcafee.com/mcafee-labs/android-malware-grabos-exposed-millions-to-pay-per-install-scam-on-google-play/

未经允许不得转载:安全路透社 » 【技术分享】谷歌商店又现新型恶意软件Graboso通过推广app牟利

赞 (0)
分享到:更多 ()

评论 0

评论前必须登录!

登陆 注册