经常我们做一些软件的时候碰到恶意代码,怎么检测出来呢?YARA就是这么一款能够帮助大家检测出恶意代码的工具,有了他能够轻松的完成工作。
YARA是一款用于检测、分析各种恶意代码的软件,它配备一个短小精悍的命令行搜索引擎,它由纯C语言编写,优化了执行的效率。规则语法的简单明了和布尔逻辑使YARA成为一个完美的IOC。它已经集成到恶意软件沙箱,蜜罐客户端,取证工具以及网络安全工具中。
检测平台:
YARA支持多平台,可以运行在Windows、Linux、Mac
OS X,并通过命令行界面或yara-python扩展的Python脚本使用。
功能介绍:
垃圾邮件分析
让我们看一下垃圾邮件分析的应用场景。如果你的团队需要在事件响应过程中分析可疑的邮件消息,你极有可能会发现携带恶意宏的文件或重定向至漏洞利用工具的站点。olevba.py是一款流行的分析可疑微软office文档的工具,它属于oletools工具包的一部分。当分析嵌入的OLE对象来识别恶意活动时,它会使用YARA功能(更多内容可参看)。在应对漏洞利用工具时,thug一款流行的低交互式蜜罐客户端,模拟成web浏览器,也会使用YARA来识别漏洞利用工具家族。在上述两种场景中,事件响应团队之间交换YARA规则可以大大增强垃圾邮件的分类和分析的能力。
取证分析
另一种值得一提的应用场景是取证。Volatility一款非常流行的内存取证工具,可以支持YARA扫描来查明可疑的对象,比如进程、文件、注册表键值或互斥体(mutex)。相对于静态文件的规则,因为它需要应对加壳器和加密器,分析内存对象的YARA规则通常可以获得更广的观察范围。在网络取证领域,yaraPcap使用YARA扫描网络数据包文件(PCAP)。类似于垃圾邮件分析的应用场景,使用YARA规则进行取证可以起到事半功倍的作用。
终端扫描
最终,还有值得留意的应用场景是端点扫描。不错,在客户端计算机上进行YARA扫描。由于YARA扫描引擎是跨平台的,我们完全可以在Windows系统上使用Linux系统上开发的特征规则。唯一需要解决的问题是如何分发扫描引擎,下发规则,以及将扫描结果发送到某个中心位置。Hipara,一款C语言开发的主机入侵防御系统,可以实现基于YARA规则文件的实时扫描,并将报告结果发回到某个中心服务器。另一种解决方案是自己编写python脚本来调用YARA模块,同时使用REST库实现推拉(pull/push)的操作。
恶意代码检测分析工具(YARA)
1、环境准备
在实战之前,我们需要一个Linux系统环境和下列工具:
需要用到:pescanner.py
此外你需要一个段恶意代码来分析,你可以从Malwr.com网站上获取样本:
警告:样本是一个真实的恶意软件,确保分析是在可控、隔离和安全环境中进行,比如临时性的虚拟机。
2、场景模拟
在周三下午4点,你的邮箱接受到一份事件报告的通知邮件。它似乎是一个可疑的HTTP文件下载(文件哈希值为f38b0f94694ae861175436fcb3981061)命中了网络IPS的特征库。你迅速检查IPS报警的详情,查看它是否把样本存入待深入分析的临时仓库中。你可以发现文件已被成功的保存下来,且文件类型是PE(可执行文件),绝对值得一看。下载文件之后,你需要进行初始的静态分析:利用Google和Virustotal查询这个哈希值,分析PE文件头来寻找恶意的企图。
3、挑战
1.
与调试信息相关的可疑字符串
2. text区块的MD5哈希值
3. 高熵值的.rsrc区块
4. GetTickCount导入符号
5.
Rich签名的XOR密钥
6. 必须是Windows可执行文件
140.5M / 09-05
76.4M / 03-25
55M / 06-05
237.9M / 04-13
900.9M / 03-02
96.2M / 07-06
311.2M / 07-06
335M / 07-06
200M / 07-06
413.8M / 07-06
484.7M / 09-27
165.4M / 09-05
353.9M / 06-05
131.8M / 04-13
195.6M / 03-03
45.6M / 09-08
665.2M / 07-06
2.84G / 07-06
93M / 07-06
338.3M / 07-06
1.38G / 07-26
488.3M / 07-16
109.8M / 06-03
142M / 01-08
1.2M / 11-23
548.8M / 04-13
1.6M / 04-13
1.48G / 03-18
646.6M / 03-03
133.7M / 03-03
110.5M / 09-05
33.4M / 09-05
325.8M / 08-12
60M / 04-29
254M / 04-25
659M / 04-23
1M / 12-26
253.4M / 12-08
253M / 12-08
1.19G / 11-16
369M / 09-22
181.5M / 09-22
201.2M / 09-05
488.3M / 07-16
248.9M / 12-08
248.9M / 12-08
100.6M / 03-06
148.9M / 03-06
1.12G / 07-06
1.25G / 07-06
1.76G / 09-22
1.92G / 04-17
116.2M / 04-10
201.5M / 04-13
7.31G / 07-01
94.3M / 07-06
2.48G / 07-06
7.63G / 07-06
1M / 07-06
778.1M / 07-06
561.8M / 07-11
72M / 07-06
548.7M / 07-06
1.00G / 07-06
9.13G / 07-06
126.2M / 07-06
72M / 07-06
105.1M / 07-06
132M / 07-06
132M / 07-06