木马和远控的区别(远控木马NetWireRAT升级)(1)

NetWire是一种远程访问木马(RAT,Remote Access Trojan),已经被广泛使用了多年。

最近,FortiGuard实验室发现了一种通过网络钓鱼电子邮件传播的恶意软件。分析表明,它正是NetWire RAT的新变种。

正通过钓鱼邮件传播的NetWire RAT新变种

图1展示的就是网络钓鱼电子邮件中的一个示例,它的底部包含一张带有超链接的图片。一旦点击,就会导致一个恶意文件被下载到计算机上。

木马和远控的区别(远控木马NetWireRAT升级)(2)

图1.包含图片的网络钓鱼电子邮件示例

如你所见,恶意文件的下载链接为“hxxps[:]//www[.]mediafire[.]com/file/d86hz5qj21lmhrb/PROFORMA-INVOICE_0990.7z/file”。

下载的文件是一个.7z压缩文件,NetWire RAT的新变种就包含在其中。

解压缩后,你会得到一个名为“PROFORMA-INVOICE 0990.exe”的可执行文件。

木马和远控的区别(远控木马NetWireRAT升级)(3)

图2.解压缩.7z文件

NetWire RAT新变种的反分析技术

FortiGuard实验室表示,这个新的NetWire RAT变种是采用MS Visual Basic编译的,且使用了多种反分析技术。

1.动态地将恶意代码提取到内存中并执行,这使得静态分析变得非常困难;

2.在安装完成后,并不会运行,直到受害者移动鼠标(通过对比鼠标光标的位置来实现),此技术被指用于反沙箱。

如图3所示,这个NetWire RAT新变种会通过两次调用API USER32.GetCursorPos()来获取鼠标光标的位置,然后对他们进行比较。

如果两次位置是相同的,则表明受害者没有移动鼠标,它则会停止运行,并在休眠一定时间后再次检查,直到位置不同为止。

木马和远控的区别(远控木马NetWireRAT升级)(4)

图3.检查受害者是否移动了鼠标

3.调用API ntdll.ZwGetContextThread来获取当前线程上下文结构,以获取受感染计算机的CPU调试寄存器状态,此技术被指用于反调试。

首先,如果调试器设置了硬件断点,那么CPU寄存器中的Dr0、Dr1、Dr2、Dr3、Dr6和Dr7就不再为“0”。

其次,寄存器EAX是一个API地址,这个NetWire RAT新变种会在运行时检查地址是否是0CC、3CD和0B0F,因为这是软件断点(Int 3)的操作码。

一旦触发上述条件之一,这个NetWire RAT新变种就会跳转到一个随机地址,以终止运行。然后,一个崩溃小窗口将弹出,如图4所示:

木马和远控的区别(远控木马NetWireRAT升级)(5)

图4.触发反调试

4. 与大多数恶意软件一样,这个NetWire RAT新变种会生成自身的挂起子进程,然后修改其内存和线程上下文数据,如OEP值。

当一切准备就绪后,父进程将恢复子进程并退出。如此一来,这个NetWire RAT新变种的真实代码就将覆盖子进程中的现有代码,然后在子进程中执行,这会使得对它的分析变得异常困难。

NetWire RAT新变种子进程分析

首先,这个NetWire RAT新变种会通过调用API WSAStartup()来初始化几个全局变量和Windows套接字。紧接着,它会解密一些加密的字符串。

接下来,它会查看当前的可执行文件是否位于正确的文件夹(%AppData%\Install)中以及是否具有正确的文件名(Host.exe)。如果不是,它则会将文件重新放置到“%AppData%\Install”并将其重命名为“Host.exe”。

然后,它将运行重新放置的文件并退出当前进程,并再次执行上述所有过程。

木马和远控的区别(远控木马NetWireRAT升级)(6)

图5.重新放置的文件

为了实现持久性,这个NetWire RAT新变种会创建一个注册表项(HKCU\SOFTWARE\NetWire),以实现随受感染系统的重启而自动运行。

木马和远控的区别(远控木马NetWireRAT升级)(7)

图6.恶意软件将自身添加到系统注册表的“自运行”组中

同时被创建的还有一个日志文件夹,被用于存储从受感染系统收集的信息,位于“%AppData%\Logs”。

此外,还会通过调用这个NetWire RAT新变种_beginthreadex()函数来执行一个线程,以实现按键记录功能(记录受害者的所有键盘动作、时间,以及受害者正在键入的内容)。

木马和远控的区别(远控木马NetWireRAT升级)(8)

图7.键盘记录日志文件

与命令和控制(C2)服务器通信

这个NetWire RAT新变种的C2服务器为“gbam0001.duckdns[.]org:3366”,目前处于关闭状态。

分析显示,一旦建立起了通信,C2服务器就会发来一个编号为“9B”的命令,而这个NetWire RAT新变种则会用一个名为“Task_Fun()”的函数来进行处理(将收集的信息上传到C2服务器)。

木马和远控的区别(远控木马NetWireRAT升级)(9)

图8. 将收集的信息上传到C2服务器

通过对数据包的分析,FortiGuard实验室发现这个NetWire RAT新变种从受感染系统中搜集了以下信息:

NetWire RAT新变种还能干什么?

如上所述,函数Task_Fun()被用于处理来自C2服务器的命令,并为一个命令调用一个子过程。

分析显示,它共有80多个子程序。这也就意味着,除了“9B”命令外,它还可以处理来自C2服务器的80多个命令:

在完成上述操作后,这个NetWire RAT新变种会将收集到的所有数据上传到C2服务器。

,