我注意到,通过广告将恶意软件引入移动应用程序或 Web 应用程序(应用程序开发人员不知道)正变得越来越流行。我一直在寻找一种工具或方法来检测或监控引入到恶意软件应用程序的广告。我的搜索没有出现太多。我每次都可以手动查看广告代码,尽管这很乏味、非自动化并且只是一个松散的解决方案。是否有人对监控移动应用程序中的恶意软件广告有任何想法或经验?
在移动设备上监控恶意软件广告的方法
这种类型的问题确实需要在几个不同的层次上解决,用户、出版商和程序员。每个人都有一定程度的责任,因此无论您的角色如何,您都有责任。根据您检查单个代码的计划,我怀疑您是最终用户而不是程序员。因此,我将主要关注该领域。
作为最终用户降低风险的方法
最终用户可以做一些事情来确定广告是否是恶意的。这包括基础知识,例如安装移动 AV(例如Android 上的 Sophos)。您当前正在采取的步骤(调查有效负载)通常比大多数最终用户想要做的要深入得多。这个空白可以很容易地用 AV 和可能的移动 IDS/IPS(例如zIPS)来填补。如今,基于主机的 IPS 和 AV 的界限非常模糊,可能会导致一些重叠。关键是 IPS 旨在防止您的系统遭到破坏。而 AV 正在努力在事后清理漏洞。
一个普通的广告交易的例子:
以下是导致投放广告的步骤示例:
- 你打开应用程序
- 该应用程序打开并允许您使用它 X 秒数
- 在达到固定时间限制或特定标准(例如,您在游戏中完成一个关卡)后,应用决定投放广告。
- 应用程序触发对包含库的请求
- 然后,包含的库向外部站点发出包含您的一些信息的 API 请求
- 外部站点接受请求并处理请求以确定要投放的最佳广告
- 广告已投放到您的设备
- 广告完成后,您可以继续再次使用该应用,直到达到另一个限制条件
恶意广告的一个例子
- 项目清单
- 你打开应用程序
- 该应用程序打开并允许您使用它 X 秒数
- 在达到固定时间限制或特定标准(例如,您在游戏中完成一个关卡)后,应用决定投放广告。
- 应用程序触发对包含库的请求
- 然后,包含的库向外部站点发出包含您的一些信息的 API 请求
- 外部站点使用这些数据来确定您是否容易受到特定漏洞的攻击。这是根据许多不同的因素确定的,其中大多数包括用户代理检查,但可能包括诸如 javascript 检查之类的因素。
- 一旦确定了最有效的漏洞利用,将发送到设备的有效负载。这是测试设备安全性的地方。
- 有效负载将在您的机器上运行或运行然后编译。如果感染成功,您可能无法分辨。
IPS 会做什么
使用 IPS 的好处是,当请求网站(在您的情况下是广告)时,它将检查请求和响应是否存在恶意活动的迹象。恶意软件在广告中传播的一种常见方式是通过没有实际用途的基本编码和解码公式。智能 IPS 将检测何时在许多不同的实例中使用基本编码公式,并将结果连接在一起,然后对整个有效负载进行最终解码。
对于上述 IPS 解决方案,它还会在您面临 MITM 攻击和其他各种问题的风险时通知您。它还具有内置的 AV 功能。这又回到了我所说的不同工具之间的界限非常模糊的地方。
作为发布者降低风险的方法
以下是发布者可以降低风险的一些方法: - 确保您的代码没有重大漏洞或对最终用户造成漏洞。- 监控您的广告网络上发生的任何可疑行为。这应该检查异常的广告负载以及您的广告网络已被入侵的迹象。- 对在您的网络上投放的广告执行代码审查
作为程序员降低风险的方法
当用户存在漏洞并且广告是从您的广告合作伙伴处投放时,很难降低风险。最大的收获是确保您选择的广告网络是值得信赖的。这通常意味着远离提供过高 PPC(按点击付费)的未知第三方或网络。这些通常是警告信号。此外,您应该向用户提供以下内容:
- 提供一种在应用程序中报告恶意广告的方法
- 对恶意代码执行独立检查(这可能难以维护,因为签名集每天都在变化。)
- 记录投放的广告以向广告网络运营商提交反馈。
- 对众多不同操作系统版本和设备类型的广告执行广泛的 QA,以检查任何明显的恶意广告活动。
概要
这实际上只能使用分层防御策略来解决。如果只依赖链条中的一个环节,必然会断裂。我发现最近的一项研究《麦迪逊大道的黑暗小巷:了解恶意广告》表明,高达 1% 的广告包含恶意广告代码。考虑到有多少网站提供广告,这是一个非常令人难以置信的统计数据。它还强调,如果我们仅依靠广告商来确保广告的安全性,我们将陷入严重困境。