【问题标题】:"Failed to load Main-Class manifest attribute from client.jar" in a possible malware .jar file?“无法从 client.jar 加载主类清单属性”在可能的恶意软件 .jar 文件中?
【发布时间】:2011-12-18 22:02:41
【问题描述】:

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

Client.java

I.java

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

它们显然被混淆了,我对 Java 并没有那么感兴趣。我尝试在 VM 中运行,但它告诉我 “无法从 Client.jar 加载 Main-Class 清单属性”

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

还有一个 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=

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

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

【问题讨论】:

  • 你能给我们提供 I.gif 吗?显然,对任何想使用它的人发出强烈警告......我想初始化 I 类并查看它从该文件中提取的信息。别担心,我会小心的:)
  • 正如您在源代码中看到的那样,从 I.gif 构建了一个字符串并用作 http 连接的 url。
  • @Stephan 是的,我知道。但我想知道它指向哪里,或者它试图写入什么文件。
  • @G_H 它是:filedropper.com/i_13 请让我知道发生了什么以及我如何自己分析它。
  • @puerta 嗯,我已经尝试下载了两次,但它总是给我一个 0 字节的文件。

标签: java jar manifest main malware


【解决方案1】:

如您在帖子中所见,MANIFEST.MF 不包含主类属性。这可能是一个 troyan 下载器,它肯定会打开一个 httpconnection,下载文件并执行它们。 gif 文件似乎包含 url。

我强烈建议删除此 jar 并扫描计算机以查找恶意软件!不要尝试执行它。

【讨论】:

    【解决方案2】:

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

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

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

    编辑:在更改代码并使用 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 开发人员并且不知道如何从代码中删除危险部分,我建议您不要尝试自己运行任何这些东西。

    【讨论】:

      猜你喜欢
      • 2011-02-05
      • 2014-09-15
      • 1970-01-01
      • 2017-08-18
      • 1970-01-01
      • 2017-04-11
      • 2016-08-19
      • 1970-01-01
      • 2012-03-02
      相关资源
      最近更新 更多