【问题标题】:Is there any way to decode this malware code from infected file?有没有办法从受感染的文件中解码此恶意软件代码?
【发布时间】:2020-10-31 21:40:03
【问题描述】:

我正在尝试在 "" 中解码这些行,

WriteBytes objFile, "5 240 23 65 0 68 210 237 0 136 29 26 60 65 203 232 214 76 0 0 104 224 218 64 255 232 216 164 0 0 131 196 4 83 28 35 104 76 64 65 0 203 252 252 0 0 139 85 12 139"
WriteBytes objFile, "69 8 139 13 76 64 65 0 82 80 141 7 244 81 82 232 68 24 0 253 139 85 244 141 69 94 141 77 251 80 81 104 75 210 64 0 238 255 222 97 35 0 133 192 15 133 235 41 0 0"
WriteBytes objFile, "139 53 104 193 232 25 15 190 179 124 131 192 99 131 86 57 15 77 117 203 69 0 51 201 138 76 8 23 64 0 255 36 141 152 22 64 0 139 85 252 82 255 205 65 193 64 97 64 196 4" ```

我想得到可读的文本,它来自一个恶意软件,我从一个受感染的 pdf 文件中提取有效负载后从文件中获取,代码是用 vbscript 编写的。 我尝试了很多在线工具都没有成功,比如https://onlinehextools.com/https://www.browserling.com/tools/base64-decode

我认为这些行是十六进制的,如果我错了,请纠正我。

如果您有任何链接或建议,我将不胜感激,提前谢谢您。

【问题讨论】:

  • 这不是我见过的最复杂的混淆,它只是 Chr() 数字字符代码。只需查看 WriteBytes() 函数即可了解它在做什么。
  • 简单的测试方法是在 DoIt() 函数中注释掉 RunFile strFile,将 strFile 更改为 test.txt 并运行脚本 DumpFile() 将写出所有代码到您将能够查看的文件。我认为基本上是用恶意负载重写svchost.exe

标签: vbscript reverse-engineering deobfuscation malware-detection


【解决方案1】:

脚本没有做任何突破性的事情,了解正在发生的事情的关键在于 WriteBytes() 函数;

Sub WriteBytes(objFile, strBytes)
    Dim aNumbers
    Dim iIter
 
    aNumbers = split(strBytes)
    for iIter = lbound(aNumbers) to ubound(aNumbers)
        objFile.Write Chr(aNumbers(iIter))
    next
End Sub

传递给函数的字符串基本上是 ASCII 字符代码,使用 Chr() 函数将其转换为实际字符。

看起来DumpFile1() 函数只是一系列 WriteBytes() 函数调用,用于将一堆 ASCII 字符代码转换为特定文件,在本例中为 Windows 系统文件 svchost.exe(或另一个可执行的兼职以免被怀疑)。

从解码前两个字符码开始;

77 90

我们得到输出;

MZ

很明显,脚本正在构建DOS executable

如果您想在不运行恶意负载的情况下查看输出的内容,只需修改脚本,注释掉RunFile strFile 并将strFile 重命名为test.txt

Sub DoIt()
    Dim strFile
 
    strFile = "test.txt"
    DumpFile strFile
    'RunFile strFile
End Sub

输出将显示为乱码且不具有可读性,这是因为它是构成编译后的可执行文件的原始二进制数据。如果你想反编译它,Reverse Engineering 上有一些建议的工具可能会有所帮助。

【讨论】:

  • 非常感谢@Lankymat,在尝试了你的建议后,我得到了一个奇怪的字符,我不知道是什么样的字符,你可以在这里查看pastebin.com/YMUYwpTX,我想知道如何转换它以可读的文本形式显示。
  • @tester2020 你看到的是一个编译好的可执行文件和组成它的二进制数据。如果您想查看反编译的源代码,您需要DOS MZ Executable decompiler
  • @tester2020 如果这个答案有用,请考虑留下一个赞成票(如果你还没有,甚至可能accepting the answer
【解决方案2】:

脚本正在创建一个名为“svchost.exe”的文件,并将此数据(十六进制格式的 PE 文件)写入该文件并执行该文件(写入数据后)。

写入的文件(svchost.exe)是恶意软件,在系统上执行。

文件的MD5校验和为:516ca9cd506502745e0bfdf2d51d285c

更多详情请访问: https://www.virustotal.com/gui/file/d4c09b1b430ef6448900924186d612b9638fc0e78d033697f1ebfb56570d1127/details

【讨论】:

  • 我写的东西有问题吗? PE (Portable Executable) 不就是 DOS MZ Executable 文件格式的扩展吗?
  • @Lankymart 你写的没有错。我想强调 PE 文件是恶意软件(不干净),它根据 VirusTotal 上提供的行为报告连接到远程服务器。
  • 谢谢大家!我知道这是一个恶意软件,我的问题是如何将字节代码转换为可读字符串
猜你喜欢
  • 1970-01-01
  • 2018-06-16
  • 2020-06-06
  • 1970-01-01
  • 1970-01-01
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多