-
-
[翻译]俄罗斯人黑俄罗斯人?正经应用外衣下的恶意广告木马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期)