差异恶意软件分析:样本种类比较
分析恶意软件的方法有很多种。在这篇文章中,我们举例说明了一种典型的分析方法:将未知样本与已知样本进行比较,以确定未知样本是否为恶意样本。
据悉,在一次约会中,遇到了一个触发反病毒的PDF文档。引起了兴趣的是,该文件具有与被认为良性的另一文件相同的标题和几乎相同的大小。那防毒软件找到了被攻占的文件吗?下面将揭晓。
通常,在执行PDF文档分析时,首先是PDFiD:最起码知道了可以在文档中找到什么。下面在这里采取同样的开端,但并不打算详细研究PDFiD制作的报告。
首先,下面是比较已知和未知样本的报告:
使用diffdump.py比较两个报告可以知道这些报告是相同的(文件名除外,它包含在报告中)。然后可以更进一步,使用选项-a为PDF中找到的所有名称生成报告,而不是仅显示可能表示恶意行为的名称。
但有相同的结果:报告是相同的。从词汇PDF语言的角度来看,这些文档是相同的。但知道它们并不是,它们有一个不同的加密哈希,触发了反病毒,而另一个没有。
是时候在pdf-parser的帮助下深入研究这些文档的语法和语义。pdf-parser有一个鲜为人知的选项(-a)来计算PDF文档中找到的元素和对象的统计信息:
比较了2个样本的统计数据,发现它们是相同的:
这是重要的信息:说明样本和原始文档具有相同数量和类型的元素和对象,强烈表明它们是相关的。
为了尝试更多地了解这些差异,就让pdf-parser为这两个文档生成完整的报告:
除了报告开头的一些字符之外,报告几乎完全相同。这是关于这些文件差异的第一个重要线索。而且当比较这些文件开头的注释时,更令人注意到它们是相同的,除了行尾字符:/n表示样本,/r/n表示原始字符:
在Windows上,行尾定义为2个字符:回车+换行符(0x0D 0x0A或/r/n)。在Linux上,它是一个单一字符:换行符。
也许因为示例是在Linux机器上以某种方式处理的原始文档的版本,从而导致行尾字符的更改。定义和测试假设的时间:文档是相同的,除了行尾字符。
使用流编辑器sed用/n替换原始文档中的所有/r/n实例,然后将样本与已转换的原始文件进行比较:
文件完全相同!
结论
通过此分析得出:明显显示两个文档是相同的,除了行尾字符。相信这些原来的并不是恶意的,因为可以很简单地将原始版本转换为具有eol转换的样本,所以能得出结论,样本不能是恶意的。通常,差异分析不会那么明确,但它仍然是逆向工程师的重要方法。
本文内容由 曲速未来 (WarpFuture.com) 安全咨询公司编译,转载请注明。
(编译:曲速未来安全区,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)