导语:在进行恶意软件分析研究时,研究人员往往会用一些得手的工具和系统来帮助他们自动搜索并分析大量的恶意样本,以便高效的找出自己想找的那类型恶意软件。
在进行恶意软件分析研究时,研究人员往往会用一些得手的工具和系统来帮助他们自动搜索并分析大量的恶意样本,以便高效的找出自己想找的那类型恶意软件。这些工具在研究变种快且跨度时间较长的APT攻击活动时非常有用。
其中最常用的一种用于寻找新的恶意软件变种的工具叫做YARA,YARA是一款旨在帮助恶意软件研究人员识别和分类恶意软件样本的开源工具,使用YARA可以基于文本或二进制模式创建恶意软件家族描述与匹配信息。现在已经被多家公司所运用于自身的产品,比如卡巴斯基实验室正在研发的Klara工具,Klara工具是一个分布式YARA恶意软件扫描系统,旨在帮助研究人员使用Yara搜索发现新的恶意软件。
YARA是什么?
YARA被定义为“旨在(但不限于)帮助恶意软件研究人员识别和分类恶意软件样本的工具”,换句话说,它是一个模式匹配的工具,它可以支持复杂的匹配规则,还可以搜索带有特定元数据的文件,例如,它可以搜索所有使用包含字符串“Microsoft Corporation” 但却没有被“Microsoft”签名的证书文件。
YARA如何帮助你找到网络中的下一个APT?
在当今复杂的威胁环境下,传统的保护措施已经不够用了,所以只有利用YARA部署现代保护系统,并结合不断的网络监控和事件响应,才能成功保护设备。
过往有效的保护措施并不能保证未来的安全要求,虽然利用IoC可以帮助你搜索已知恶意软件的感染足迹,但高级恶意软件的开发者已经开始自定义各种攻击工具,以有效针对每个受害者,从而使IoC的效率更低。因此,良好的YARA检测规则仍然允许分析人员发现无法以其他方式找到的恶意软件,漏洞利用和零日漏洞,YARA可以部署在网络和各种扫描系统中。
如何发现零日漏洞?
卡巴斯基实验室的GReAT使用YARA的最有名的案例之一就是发现了非常有名的Silverlight零日漏洞,具体的过程如下:
2015年七月,代号为Phineas Fisher的黑客攻击了意大利公司Hacking Team,并窃取400GB的公司数据,并将拿到的内部邮件公布在了网上。这次入侵将该公司的业务记录公之于众,同时暴露了一些想要向Hacking Team销售零日漏洞的黑客,比如Toropov,资料显示Toropov曾试图将微软Silverlight的零日漏洞出售给Hacking Team,但该漏洞却无法引起Hacking Team的兴趣,不过却引起了卡巴斯基的注意。据卡巴斯基的说法,利用YARA规则特殊的shell代码和函数名,然后分析出了代码中的一些独特的字符串。
如上所述,任何执行恶意软件搜索的团队都需要一种强大的工具,以便尽快找到最新的威胁并检测攻击。
什么是KLara?
为了有效地搜索恶意软件,你需要大量样本搜索。研究人员通常需要针对收集的一组恶意文件启动YARA规则,然后再将匹配结果返回。在某些情况下,规则需要调整。不幸的是,扫描大量文件需要时间。但是,如果使用自定义架构,则扫描10TB的文件可能仅需要大约30分钟。当然,如果有多个YARA规则需要同时运行,那么系统也是分布式的。Klara是一个用Python编写的分布式系统,它允许研究人员扫描一个或多个带有样本集合的Yara规则,在扫描完成后,研究人员可以通过电子邮件和Web界面获得通知。当涉及大量数据时,像KLara这样的系统非常重要。当然,研究人员在他们的电脑上都会有自己的小型病毒收集器,以确保他们的YARA规则正确无误,但是当在野外搜索恶意软件时,就需要大量处理能力,而这只能通过云系统来实现。
为什么要使用分布式YARA恶意软件扫描系统?
无论黑客的攻击目标是企业、用户还是政府部门,使用APT进行攻击都能带来非常危险的结果。根据卡巴斯基实验室的经验,对日志、网络流、警报和任何可疑文件的持续监控有助于减少在侦察阶段的攻击。目前虽然有些类似于KLara的工具已经出现,但都仅限内部使用。
另外,KLara允许运行任何类型硬件的人建立自己的私人YARA扫描仪,以便保持本地的TLP RED YARA规则。
KLara架构
KLara工具使用了dispatcher/worker模型,具有一个dispatcher和多个worker的常用架构。因为Worker和dispatcher代理是用Python编写的,所以它们可以部署在任何兼容的生态系统(Windows或UNIX)中,包括YARA扫描系统。
KLara可以使用基于Web的门户提交搜索任务,同时每个用户都有自己的个人帐户,以便他们成为一个小组的成员,并且可以使用任何其他有效帐户分享他们的KLara任务状态。
账户有多个属性,可以由管理员设置,比如账户所属的工作小组是否可以运行他们的YARA规则的扫描存储库,是否可以查看其他组的任务状态。
通过使用KLara的任务仪表板,经过身份验证的用户可以在“添加新任务”页面上提交任务:
并在“当前工作”页面上查看任务进程的状态:
一旦用户提交任务,用户便可以查看其状态,也可以重新提交或删除任务。其中一名Worker将从dispatcher那里获取任务。如果其文件系统上有符合条件的扫描存储库,将启动YARA扫描。完成后,通过电子邮件通知用户检测结果。
每个任务的元数据都由一个或多个YARA规则,任务提交者的账户信息和一组可选择的扫描存储库组成。
任务页上显示的信息包括:
· 任务状态:新建、分配、完成、错误;
· 任务管理:重新启动、删除任务;
· 已经匹配了多少个文件?
· 第一个规则的名称;
· YARA扫描匹配的存储库路径;
一旦你点击了一个任务后,就可以看到更详细的状态:
任何YARA结果以及匹配的MD5列表将显示在仪表盘底部,另外,每个用户都可以拥有一次搜索权限并成为一个组的一员。该组的管理员可以选择限制小组成员的权限,比如防止看到其他工作组成员提交的任务内容。
最后,如果用户希望将通知发送到其他电子邮件帐户,则可以随时更改其电子邮件地址。
API访问
为了便于任务自动提交以及实现结果自动检索,KLara实现了一个简单的REST API,允许任何有效的帐户和有效的API密钥来查询任何允许的任务状态。它允许脚本:
· 提交新任务;
· 获取工作结果以及工作详情,比如是在扫描还是在分配任务;
· 获取特定任务的所有YARA结果;
· 获取所有匹配的MD5哈希;
如何安装KLara?
该软件于2018年3月9日已在卡巴斯基实验室GitHub账户上发布,该软件在GNU通用公共许可证第3版下是开源的。
Klara运行环境:
· GNU/Linux(推荐使用Ubuntu 16.04或最新的LTS版)
· MySQL/MariaDB DB
· Python 2.7
· Python virtualenv package
· Yara(安装在workers)
Klara的安装步骤:
· 数据库安装
· Woker安装
· Dispatcher安装
· Web界面安装
详细安装过程请点此链接:https://github.com/KasperskyLab/klara/tree/master/install