首页
社区
课程
招聘
[翻译]如何应对手机勒索软件
发表于: 2017-1-23 23:43 4597

[翻译]如何应对手机勒索软件

2017-1-23 23:43
4597

标 题: 【翻译】如何应对手机勒索软件
译者:山有木
原文发表于2016年12月15日上午2:11
原文作者:Federico Maggi (Senior Threat Researcher)

在之前的帖子中,我们研究了恶意软件如何锁定设备,以及采取何种方法恐吓受害者支付赎金。现在我们知道坏人能够做到什么,接下来我们将讨论安全厂商如何检测和应对勒索软件的技术。通过与其他研究人员分享这些细节,我们希望能够改善行业内对于移动勒索软件的的安全意识。

检测和对抗

通过观察这些手机勒索软件的技术特点,我们可以去设计并实施相应的检测和应对方法。有时存在多种解决问题的方案:我们的观点是这些应用程序中必然存在相应的恶意代码。我们可以通过静态静态分析并用一些技巧来解决这些典型案例(如通过反射混淆)。

 
图 1. 各种移动勒索软件发现的方法

典型的“威胁信息”是十分明确的,并且包括指示受害者支付赎金的详细说明。通过机器学习的方法可以检测这一威胁信息,自动将文本分类为“威胁”或“正常”。用一些预先处理去删掉一些词(例如“the,” “at,” “an”)和把一些词换成基本形式(如,“locked”变成了“lock”)之后,我们在其余文本中训练一个分类器,用来显示典型的“威胁”文本样本和无害的文本样本。通过一段时间的学习,分类器将学到如何区分安全与不安全的文本。

已知的典型锁定技术可以通过轻量级的符号命令执行检测。尤其是当我们搜索应用程序Android.app所有子类的覆盖onKeyUp和onKeyDown的指令行为字节码时。然后我们象征性地用上述行为执行代码来发现是否处理了home或back按钮的代码路径(下图中蓝色箭头),并最终返回“true”(红色箭头),表明该事件不应进一步执行。相反的,这意味着没有其他应用程序(即使是合法的主屏幕启动器)将被发送到前台。

 
图2.代码路径处理按钮

应用程序需要在清单中声明它要调用的设备管理API。并将API链接到定义了管理员应用程序被允许的“政策”的一个单独文件中。通过关注一些危险行为(如:重置密码,强制锁定,清除和加密存储数据),我们可以检索应用程序控制流图去发现是否在没有用户干预的情况下存在非法调用。


为此我们使用一个定制版的FlowDroid(一个静态分析Java和Android字节码的功能强大的开源工具)。从所有的输入点开始,我们优先广度访问控制流图,寻找对lockNow()和其他函数的调用。如果没有找到,我们开始第二次通过所有可能实现反射调用的检索,找到所有调用Java 反射的API,然后反向执行直到能够重建称为“反射式”的有时被混淆处理的函数。一旦我们确定函数名称,我们可以将他们做为控制流图中的节点,并勾勒出相应的边界。如果函数名称经过混淆处理,那么我们按照继续执行直到包含(混淆)名称的字符串对象的声明出现,然后使用反射来重新执行所有后续语句,直到我们开始调用invoke()。


图3.查找设备管理API的调用

我们以类似的方式检测隐匿的文件加密程序。 更确切地说,我们试图寻找所有包含循环调用的案例,当然也包括一些变体程序。

为此,我们使用FlowDroid的流分析功能,配置它来检测有实际意义的流,例如listFiles()到CipherOutputStream()的程序流。 在加密和设备管理API调用分析中,我们寻找不是用户启动的代码路径,也就是那些不需要用户操作就能激活的函数功能。 另外我们会检测(可能作为误报)所有这些合法的应用程序加密我们设备上的文件。

不幸的是,整个过程中每个应用程序都需要长达几分钟的时间来检测。通过再次使用机器学习,我们可以用高精确度的预处理程序来简化处理过程,当然这需要确保绝对安全。 那些有问题的部分我们将进一步分析。该方法可以减少一批程序检测所需的时间大约一个数量级。


趋势科技的解决方案



[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 1
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回