如何知道 PDF 文件是否被感染?

信息安全 pdf
2021-08-28 02:24:34

我害怕打开 PDF 书。通过pdfid检查文件时,我得到这个:

PDF Header:% PDF-1.6  
 obj 4175  
 endobj 4174  
 stream 3379  
 endstream 3379  
 xref 0  
 trailer 0  
 startxref 1  
 / Page 794  
 / Encrypt 0  
 / ObjStm 6  
 / JS 3  
 / JavaScript 0  
 / AA 6  
 / OpenAction 0  
 / AcroForm 1  
 / JBIG2Decode 0  
 / RichMedia 0  
 / Launch 0  
 / EmbeddedFile 0  
 / XFA 0  
 / Colors> 2 ^ 24 0  

我还用virustotal检查了文件,它说文件是干净的。但是防病毒软件并不总能找出问题所在,对吧?

所以我有这些问题:

  1. 其中哪些(AA、ObjStm、XFA 等)真的很危险是的,我在这里读到了这些物品的价值,但仍然不知道如何对它们做出反应。如果可能的话,用简单的例子来解释。
  2. pdfid -d使用该命令后我可以安全地阅读 pdf吗?
  3. /JS 和 /JavaScript 表示 PDF 文档包含 JavaScript。我在野外发现的几乎所有恶意 PDF 文档都包含 JavaScript(以利用 JavaScript 漏洞和/或执行堆喷射)。当然,您也可以在没有恶意的情况下在 PDF 文档中找到 JavaScript。

    /AA 和 /OpenAction 指示在查看页面/文档时要执行的自动操作。我在野外看到的所有带有 JavaScript 的恶意 PDF 文档都有一个自动操作来启动 JavaScript,而无需用户交互。

    如果 JS 和 JavaScript、AA 和 OpenAction 显示相同的东西,它们之间有什么区别?

2个回答

分析恶意 PDF 有时可能非常棘手,攻击者在感染人的方式上变得越来越有创意。

但是让我们简单点,这里有一些例子表明 PDF 是恶意的。

基于 JavaScript 的漏洞利用

PDF 规范支持 JavaScript 编程,并以 API 的形式为程序员提供了许多 JavaScript 函数。

由于其灵活性和易用性,JavaScript 被广泛用于恶意 PDF,它被用于利用易受攻击的 JavaScript API 并使用恶意代码(又名堆喷射)设置 PDF 阅读器程序的内存。

基于非 JavaScript 的漏洞利用

尽管在野外观察到的大多数恶意 PDF 都使用 JavaScript,用于利用或设置内存以供进一步利用,但我们也观察到其他技术也被使用。使用 JavaScript 的一种替代方法是在 PDF 中嵌入 Flash 对象。

来自 PDF 文档:PDF 恶意软件的兴起

这里也是分析恶意文档的不错的备忘单

另请查看“如何判断我发送的 PDF 文件是否包含恶意软件?'

经过一番查看,您用于调查此 PDF 文档的工具似乎是由“安全研究人员”编写的独立 python(?) 工具。我把这个标题加上引号只是因为我对他一无所知,除了他声称自己是一名安全研究员并且喜欢把他的名字放在他的网站上。

也许更像是 PDF 专家的人可以过来提供一些更好的信息,但从我目前看到的情况来看,他的工具似乎对于尝试确定特定 PDF 文件是否包含恶意 javascript 并没有太大帮助. 考虑到javascript操作是 PDF 文件的 Adob​​e 标准的一部分,因此假设 PDF 文件包含可能是恶意的 javascript/操作似乎很疯狂。他自己并没有说明这一点,但他确实说明了“我看到的每个恶意 PDF 文件都包含 javascript/actions”这一非常无用的限定词。这是一个同样正确的陈述:“我见过的每个恶意网站都包含 javascript”。因此,我应该在浏览器中禁用 javascript 还是避免使用带有 javascript 的页面?明显不是。从我的角度来看,我看到的最大问题是可能不了解相关性和因果关系之间区别的研究。

话虽如此,该文档可能包含恶意 javascript。找出答案的最佳方法是尝试提取有问题的 javascript,并在不运行它的情况下查看它的实际作用。由于有问题的工具已经在解析 PDF 文件,因此有可能从所述工具中获取该信息。然后,您可能必须再次找到其他工具或自己尝试。

如果这些选项都不吸引您,我会尝试将此视为风险/收益分析:

  1. 您有任何理由不信任此 PDF 文件吗?
  2. 它是否来自有信誉的来源?

如果它来自信誉良好的来源并且您没有理由不信任它,我可能会直接打开它。如果您担心,您可以随时尝试在虚拟机中打开它,或者找到不处理 javascript 的 PDF 阅读器。您还可以尝试找到一种在查看之前从 PDF 中删除任何 javascript 的方法。我想这是pdfid -d应该做的,但考虑到我对最适合作者的工具一无所知。

如果你在linux上,那么简单:

pdf2ps input.pdf - | ps2pdf - output.pdf

可能工作。这会将其从 pdf 转换为 ps 并返回为 pdf。基本上,它打印文件,(我相信)会删除所有元信息。我想pdf2ps没有内置的javascript库,所以我认为可以安全地假设任何恶意javascript都会在这个过程中被安全删除。

再说一次,所有这一切都是一个“我的头顶”的答案,所以你最好的办法是问另一个关于如何安全地从 PDF 文件中删除 javascript 的问题。我确信这是一个比“如何知道 PDF 文件是否被感染?”更具体(并且容易回答)的问题。