首页
社区
课程
招聘
[翻译]俄罗斯人黑俄罗斯人?正经应用外衣下的恶意广告木马Ewind及其背后的始作俑者
发表于: 2017-4-15 21:29 4696

[翻译]俄罗斯人黑俄罗斯人?正经应用外衣下的恶意广告木马Ewind及其背后的始作俑者

2017-4-15 21:29
4696

        2016年中以来,我们已观察到多个“Ewind”(一个Android恶意广告软件家族)的新样本。这个adware(恶意广告软件)背后的actor(注:指恶意软件作者,可理解为始作俑者、活跃者)利用一种简单而又有效的方法—他们下载一个流行的、合法的Android应用,反编译它,添加恶意例程,然后重新打包成Android应用程序包(APK)。然后他们使用自己面向俄语的Android应用程序网站来分发这个木马化了的Android应用。

        Ewind盯上了一些流行Android应用程序,其中包括:GTA Vice City, AVG cleaner, Minecraft – Pocket Edition, Avast! Ransomware Removal, VKontakte,和Opera Mobile.

        虽然Ewind从根本上讲算是adware,通过在受害者设备上显示广告来获利,但它还拥有其他功能,如收集设备数据,以及向攻击者转发SMS消息。这个adware木马实际上潜在地使得可以远程完全操控被感染的设备。

        我们相信此应用,被注入广告,应用站点以及攻击者都来自俄罗斯。

        我们在AutoFocus(https://www.paloaltonetworks.com/products/secure-the-network/subscriptions/autofocus)观察到大量重打包的APK,用相同的可疑证书签名。使用命令行工具“keytool”,我们识别一些特有的签名证书元素。证书位于所有样品中的“META-INF/APP.RSA”中:

        owner=CN=app

        issuer=CN=app

        md5=962C0C32705B3623CBC4574E15649948

        sha1=405E03DF2194D1BC0DDBFF8057F634B5C40CC2BD

        sha256=F9B5169DEB4EAB19E5D50EAEAB664E3BCC598F201F87F3ED33DF9D4095BAE008

        注意到许多APK包括Anti-Virus和其他知名应用程序的名字,我们就更怀疑了。

        尽管Ewind有多种变体,但我们选择分析重打包“AVG Cleaner”的样本。

        9c61616a66918820c936297d930f22df5832063d6e5fc2bea7576f873e7a5cf3

        该特定样本是从承载多个Android应用商店的IP地址88.99.112[.]169下载的。

        可以很容易地识别出被添加进AndroidManifest.xml中的木马组件,因为它们都以“b93478b8cdba429894e2a63b70766f91”开头:

        b93478b8cdba429894e2a63b70766f91.ads.Receiver

        b93478b8cdba429894e2a63b70766f91.ads.admin.AdminReceiver

        b93478b8cdba429894e2a63b70766f91.ads.AdDialogActivity

        b93478b8cdba429894e2a63b70766f91.ads.AdActivity

        b93478b8cdba429894e2a63b70766f91.ads.admin.AdminActivity

        b93478b8cdba429894e2a63b70766f91.ads.services.MonitorService

        b93478b8cdba429894e2a63b70766f91.ads.services.SystemService

        Ewind为以下事件注册ads.Receiver:

        启动完成(“android.intent.action.BOOT_COMPLETED”)

        屏幕关闭(“android.intent.action.SCREEN_OFF”)

        用户出现(“android.intent.action.USER_PRESENT”)

        ads.Receiver第一次被调用时,它从设备收集环境信息,并将其发送到Command-and-Control(C2)服务器。收集的信息可以在下面的图1中看到。Ewind会为每个安装生成唯一的ID,并将其作为URL参数传输。URL参数“type=init”表示首次运行。

图1-Ewind将受害者信息传送给C2

        C2使用以下命令语法响应HTTP纯文本:

        Ewind将每个接收的命令存储在名为“main”的本地SQLite数据库中,然后按顺序处理。完成每个命令后,Ewind将结果报告给C2。结果用URL参数“type=response”标记(图2)。

图2-受害者对C2命令的响应

        我们观察到命令“adminActivate”仅在初始化阶段接收到。该命令指示Ewind打开“AdminActivity”,其试图欺骗受害者授予Ewind设备管理员权限。消息的翻译是对应用“点击激活”以正确完成安装(图3)。

图3-Ewind试图欺骗用户授予管理员权限

        还不清楚为什么Ewind试图获得设备管理员权限。成为设备管理员的好处是,对于非技术用户来说卸载特洛伊木马程序有点困难。观察到的另一种技术是,在设备管理屏幕中单击停止激活时,Ewind使用自身能力将屏幕锁定5秒,解锁时将屏幕切换回常规设置屏幕。

        虽然这应该使得更难卸载Ewind,但在这个具体的样本中,有一个bug阻止了“锁定屏幕”功能的调用。为了锁定屏幕,Ewind创建AsyncTask(注:异步任务),它无限循环。Ewind无法再次执行此AsyncTask,直到第一个完成(Android平台限制)。

        有趣的是,虽然Ewind会检查手机是否被监禁,但我们没有观察到利用这种功能的任何代码路径。

        看起来,Ewind并不仅用于展示广告。Ewind有一个名为“ads.Monitor”的服务,它监控前台应用程序(此功能仅适用于Android 4.4及更低版本,因为Android更高版本限制了“getRunningTasks”API的使用)。如果应用程序的软件包名称与Ewind的“目标应用程序”(列表在https://github.com/pan-unit42/iocs/blob/master/ewind/apps.csv)中列出的软件包相匹配,Ewind会向C2发送一个“type=event”(图4)。如果应用程序不再在前台,Ewind也会发送一个“stopApp”事件。其他事件包括“userPresent”,“screenOff”,“install”(已经在设备上的包的),“uninstall”,“adminActivated”和“adminDisabled”,“click”(用户点击显示的广告时)“receive.sms”和“sms.filter”。

图4-Ewind将应用程序活动报告给C2

        服务器会响应(图5),以指示Ewind执行一个动作—通常是显示一个广告。服务器还提供要显示的广告的URL。该广告使用简单的webview显示。

图5-C2命令受害者显示广告

        在我们的测试中,只有在金融相关的应用程序处于前台时,受害者才会收到一个显示广告的命令(没有一个目标浏览器在前台时接收到命令)。另外,无论应用程序启动还是停止,它总是触发命令“showFullScreen”。该命令的参数是“URL”(是广告的)和“delay”(Ewind要等待多久才显示广告(秒))。

        发送给我们实验受害者的广告都只来自于网址mobincome[.]org/banners/banner-720×1184-24.html(图6)。点击后,它会尝试从应用程序商店androidsky[.]ru下载应用程序“mobCoin”。在我们分析Ewind示例时,下载链接不起作用了。我们发现了一个Ewind木马化了的MobCoin应用程序样本(393ffeceae27421500c54e1cf29658869699095e5bca7b39100bf5f5ca90856b),不过不清楚这是否是以前由androidsky[.]ru提供的文件。

图6-Ewind显示的广告

        最后一种通信类型是“type=timer”,用作保持链路功能。Ewind以预定义的间隔(通常为180上下随机秒数)发送,请求如下图7所示。通常,除了保持活动功能之外,这个请求没什么意思,但是我们观察到,每天一次,服务器将使用更新的目标应用程序列表来响应此请求。

图7-Ewind发送的Keep-alive请求

        Ewind可被指示使用“smsFilters”命令转发任何符合过滤条件的SMS消息到C2。过滤器包括匹配电话号码或消息文本。如果从匹配的电话号码或匹配的文本收到消息,Ewind会向C2发送包含完整短信和发送电话号码的请求事件“receive.sms”。如果电话号码和文本过滤器都匹配,Ewind会通过事件“sms.filter”通知C2。

        此功能可能旨在通过SMS破坏双因素身份验证。我们没有观察到使用此命令的actors(注:如前所述指作者),但是当我们手动将过滤器插入Ewind受害者数据库时,我们可以观察到它生效了。

图-receive.sms

        如果包名称与目标应用程序列表匹配,则每次应用程序处于前台或后台时,Ewind都会通知C2。C2回复一个命令给Ewind执行,通常是显示一个广告。目标应用程序列表在首次执行Ewind时由服务器初始化,并且每天更新。该列表存储在{data_dir_of_the_app}/shared_prefs/a5ca9525-c9ff-4a1d-bb42-87fed1ea0117.xml。

        就我们所看到的,目标应用程序列表主要包含浏览器和金融相关的应用程序。我们还注意到,在浏览器执行时,没(至少现在)看到C2发送命令到Ewind,而只有金融应用程序被上报了。

        Ewind使用简单的与其共享preferences–“a5ca9525-c9ff-4a1d-bb42-87fed1ea0117”的文件名的XOR 来混淆了其部分字符串。在去掉混淆后,我们得到以下一个字符串数组的json片段:

        以下的Ewind中的命令列表既包括我们看到生效的功能,还包括我们没观察到被使用的:

        showFullscreen - 显示广告

        showDialog - 显示一个对话框,点击后会打开一个广告

        showNotification - 在通知栏中显示通知

        createShortcut - 下载APK并创建一个快捷方式

        openUrl - 使用webview打开一个URL

        changeTimerInterval - 更改保持活动ping之间的间隔

        sleep - 休眠一段时间

        getInstalledApps - 检索已安装应用程序的列表

        changeMonitoringApps - 定义目标应用程序列表

        wifiToMobile - 启用/禁用连接,不过似乎什么都没做

        openUrlInBackground - 在后台打开一个URL

        webClick - 在特定网页的webview中执行提供的javascript


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//