java - "Failed to load Main-Class manifest attribute from client.jar"在可能的恶意软件 .jar 文件中?

标签 java jar manifest program-entry-point malware

我在客户的计算机上找到了一个 Client.jar 文件,其中包含两个 .class 文件,我可以将其反编译为这两个文件:

Client.java

I.java

此外还有一个 I.gif,用十六进制编辑器看显然不是 GIF。

他们显然被混淆了,而我对 Java 的了解不多。我尝试在 VM 中运行,但它告诉我“无法从 Client.jar 加载 Main-Class list 属性”

可能是主类不在 list 中,但如何解决这个问题? 这是否意味着它无法在客户的计算机上运行?

还有一个 META-INF 文件夹,其中包含文件 MANIFEST.MF、ME.DSA、ME.SF。

MANIFEST.MF 看起来像这样:

Manifest-Version: 1.0
Created-By: 1.6.0_20 (Sun Microsystems Inc.)

Name: Client.class
SHA1-Digest: ex7bAth9HYUTIi8EcpeOc1OsVMg=

Name: I/I.class
SHA1-Digest: 0H6A7/XmOCNhayPI9TwC45Mky4s=

Name: I/I.gif
SHA1-Digest: AzzSpXaRFMYvtYJvrnFsHQDvJkE=

我想通过在沙盒或 VM 中运行它来进一步分析它,错误是什么意思,我该如何运行它?

这显然是某种恶意软件,所以只有专家才能回答这个问题。提前致谢!

最佳答案

为了从 jar 文件启动 Java 应用程序,它必须知道哪个类形成入口点。该类需要一个 main 方法。它可以在 jar 的 MANIFEST.MF 文件中指定,也可以在运行时指定(例如,从命令行)。

反编译的类(看起来确实被混淆了)不包含 main 方法。所以这不是一个可以作为独立应用程序运行的 jar。但是,Client 扩展了 Applet,表明它旨在作为浏览器中的 web applet 运行。检查this page了解如何运行它。

如果您怀疑它是恶意的,最好通过一堆病毒/ spy 软件/广告软件扫描程序来运行它。

编辑:更改代码并使用 gif 运行它之后(如果您不确定自己在做什么,请不要这样做!),我得出的结论是:

首先,“gif”将以一种有点迂回的方式被解码。它的前三个字节决定了将要加载 gif 其余部分的字节数组的大小。此字节数组的一部分用于构造小程序中使用的字符串。

当小程序初始化时,它将获取小程序参数AMLMAFOIEA 的值。此参数需要在包含小程序的 HTML 中设置,因此该值将取决于运行小程序的页面。 Here's the details of how this is set.

之后,它将获取环境变量TEMP 的值。就我而言,这指向我的用户目录中的 AppData\Local\Temp。它会将 \JavaLoad.exe 附加到此并使用该路径创建 FileOutputStream,因此很明显它会尝试在您的临时文件夹中写出 JavaLoad.exe 文件。

然后它将建立到 AMLMAFOIEA 小程序参数指定的 URL 的 HTTP 连接,将其请求方法设置为 GET。将从连接打开一个流,并将其内容转储到 JavaLoad.exe 文件中。

代码块的不断重复

  if ((this.b == this.c) && (this.b + I.I(1) == this.c + I.I(1)))
  {
    this.b = I.I(4);
    this.c = I.I(6);
    this.b = this.c;
  }

似乎什么都不做。它可能是由混淆器添加的,目的是让您偏离轨道,因为这似乎没有任何功能影响。所有重要的事情都是在这些测试之外完成的,字段 bc 似乎从未用于任何真正有用的东西,只有字段 a 用于保存目标 URL 字符串。

因此,总而言之,这看起来确实非常可疑。但它真正尝试从哪个 URL 下载内容取决于小程序的环境。不幸的是,这并没有向我们指出任何真正的来源。也许这是一个通用的特洛伊木马客户端,旨在供任何希望通过带有小程序的站点传送恶意负载的人使用。由于小程序在权限有限的沙箱中运行,我不确定这是否有效。我也不知道它最终将如何运行 JavaLoad.exe。我想它依赖于其他一些期望此文件存在的进程,也许通常是无害的。

这很有趣。感谢您提供的资源。如果您不是 Java 开发人员并且不知道如何从代码中去除危险部分,我建议您不要尝试自己运行这些东西。

关于java - "Failed to load Main-Class manifest attribute from client.jar"在可能的恶意软件 .jar 文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7957128/

相关文章:

java - 了解 Collections.max 中的比较器

java - 调试 HashMap 显示递归 entrySet?它是什么?

java - 数组的长度属性在哪里定义?

html - 尝试在工作区中绑定(bind) "/%PUBLIC_URL%/manifest.json"失败,因为在 Netlify 上运行时此 URI 格式错误

css - Firefox 扩展 - 在 manifest.json 中包含 CSS

java - 如何使用java 8按 'name'对对象进行分组?

java - Ant:如果类路径 jar 已更改但源代码未更改,如何强制进行 java 编译

java - 如何将java项目实现为可插拔jar

java - Jar 文件 ADD DIRECTORY ENTRIES 导出 jar 时的 Eclipse 选项

c# - 使MAF AddInProcess.exe "Long Path Aware"