Neshta 样本分析

前言

最近群里一位师傅开远程桌面暴露3389端口时被人打了,然后上传了一个勒索程序,并触发了,在该师傅一番抢救后留下了一个样本,丢到微步上看了看之前好像还没人提交,猜测应该是某种方式内嵌的一个样本。然后找该师傅要了个被杀毒处理后剩下的东西看了看。

分析之前样本就被Windows Defender识别为 Neshta.A,但是换到火绒下又是 Neshta.C,有点摸不着头脑,同时网上相关资料也比较少,只能自己分析看看了

7z 程序分析

样本哈希:8acf5c0049c39a19d42c66c1769874726789160438cec6ceeeb877ce805529d3

样本其本身是一个 7z 压缩的自解压程序,但是中间会释放一个可执行程序。根据这个特征又是MZP勒索了…但是本样本却是Neshta木马…

经过多次在虚拟机里测试,尝试运行此自解压程序,同时开启Process Monitor来监控对应程序操作,也没观察到对应释放的操作过程,这就有点奇怪了…

但是输入错误的密码可以大致窥探到内压缩的程序:

感觉上可能也就vbs以及bat程序有威胁?

但是也不知道密码是个啥…

无奈之举,只能硬看大几个兆的文件,来找不同了,比较遗憾的是盯了许久没有多大进度有点破防了,乖乖的从沙箱分析提取出的程序进行下载了…最抽象的是从沙箱下载下来的同名文件使用Bindiff来确定对应的差异,对应存在的不同点的函数只是简单的返回个数字…

就很奇怪?有点琢磨不透这个东西到底是怎么释放的文件,同时也找不到svchost.com这个玩意…

再次下载沙箱的东西,准备分析一下本体svchost.com干了啥东西…

对于svchost.com这个文件就出现的比较早了,最早提交分析是 2021年12月 出现的,那就是说明这个东西依然在利用

对应哈希:cab9a40acca9666c85d6f1712e97622b7982a14622b017210bfa155431de75b5

svchost.com 程序分析

这是一个Delphi写的东西,拿IDA分析一下,一些函数没办法识别出来,看对应的库函数有点难受。查了一下资料,有推荐使用DEDE来进行反编译逆向,这个工具可能有些年头了,又找了一下找到个IDR来进行Delphi的反编译

crypto2011/IDR: Interactive Delphi Reconstructor (github.com)

用了用发现甚至不如IDA…只能显示汇编,于是在IDA里折腾了…

首先要做的便是让IDA导入Delphi的一些库

1
File -> Load File -> FLIRT Signature File

之后我们加入对应的库

之后重新加载一下就可以看到一部分的库函数,虽然还是比较难看,但聊胜于无

对于Delphi所编写的程序,一般来说这块在分析时不用太关心,猜测为设置对应的异常处理

1
2
3
4
v4 = &savedregs;
v3 = (LPDWORD)&loc_408220;
ExceptionList = NtCurrentTeb()->NtTib.ExceptionList;
__writefsdword(0, (unsigned int)&ExceptionList);

之后比较显眼的便是下面的几个函数:

DecodeData

其调用了一个伪随机来进行异或解密数据,可以直接调试拿一下数据,之后便有了后面的注释信息

sub_404AE8

此函数用来进入判断是否为大文件进而释放的,其本质上是获取了一个启动路径信息,之后进入到内部的sub_406FE4进行下一轮的分支判断

sub_406FE4

此函数用来获取到对应文件的扩展名(如:.exe、.pdf),之后进行比较判断当前执行的程序是否为exe,如果是则进入分支内部

sub_407D9C

此函数大致判断了对应执行的文件是否为一个大文件(核心本体大小为40.5kb,如果大于此则为大文件),即通过文件的大小来判断是否嵌入在其他程序上,如果是则将其进行释放,反之则将其感染(于sub_4079A0进行)

sub_4071D0

具体实现感染的部分,将自身PE进行嵌入

比较有意思的是其似乎还会获取对应的ico图标来将自身修改后的程序进行一个伪装,之前测试的时候似乎出现了程序图标加载不出来的问题,或许是这块调试的时候突然被Windows Defender干掉了的原因?

sub_4079A0

这一部分主要便是感染了,会在内存中将svchost.com进行解密出来,并将其进行读入内存创建对应的注册表项目

1
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\exefile\shell\open\command C:\\Windows\\svchost.com "%1" %*

sub_40759C

这块便是在对应用户处创建一个tmp5023.tmp文件,随后创建一个互斥量来对逻辑盘信息进行遍历(sub_406D40),而其选择感染的逻辑盘中也有选择:

其会避开A、B盘以及CD-ROM驱动器

之后进入到WebForm::_16623内部进行获取对应盘下的所有文件了,通过拼接盘号以及*.*来进行获取内容

sub_405634

其会获取对应路径文件,同时递归往下进行查找对应的内容

image-20231130145336041

sub_406E0C

此函数下会创建一个tmp5023.tmp

而在sub_406E94对其进行读取对应的 8 个字节

有点搞不懂读入的对应文件内容是具体什么含义,感觉可能是时间戳之类的东西

样本技术信息

此样本本质上通过植入自身文件来进行感染,属于感染型样本。整体感觉上此程序更像是一个恶意程序启动器,以及判断文件是否被感染

其会释放以下文件:

1
2
3
4
xxx.exe  	 # 原先被感染的干净程序
tmp5023.tmp # 暂时还不知道干什么用
svchost.com # 检测是否为PE文件以及进行感染和释放
%User Temp%\3582-490\ # 创建此文件夹

之后会创建以下进程:

1
%User Temp%\3582-490\xxx.exe      # xxx.exe为恶意程序进程

创建互斥体:MutexPolesskayaGlush用来确保一次只会运行一个副本

主要感染对象:exe文件

避免感染含有以下字符串的对象:

1
2
3
PROGRA~1
%Windows%
%Temp%

避免感染下列文件大小:

1
小于 41,472 字节或大于 10,000,000 字节的文件

避免感染以下驱动器的文件:

1
2
3
A:\
B:\
CD-ROM

解决方案

HKEY_MACHINE\SOFTWARE\Classes\exefile\shell\open\注册表项中的默认选项进行以下修改:

1
2
From: (Default) = %Windows%\svchost.com "%1" %*"
To:(Default) = "%1" %*"

删除对应的恶意软件、以及临时文件目录下的

1
2
svchost.com
tmp5023.tmp

同时安装对应的杀毒软件进行全盘扫描,将对应恶意程序进行清除

参考

PE_NESHTA.A - 威胁百科全书 - Trend Micro CN

PE_NESHTA.A-O - Threat Encyclopedia (trendmicro.com)

Neshta Malware - Malware removal instructions (updated) (pcrisk.com)


Neshta 样本分析
https://equinox-shame.github.io/2023/11/30/Neshta样本分析/
作者
梓曰
发布于
2023年11月30日
许可协议