Netwalker无文件勒索软件分析——使用混淆的ps脚本,本身充当DLL加载程序,将勒索软件DLL写入explorer.exe的内存空间并执行(进程注入)
攻击者正不断研究更复杂的方式逃避恶意软件检测,近期发现攻击者利用PowerShell编写Netwalker勒索软件,直接在内存中执行,没有将实际的勒索软件二进制文件存储到磁盘中。恶意软件利用了反射动态链接库(DLL)注入的技术,也称reflective DLL加载,可以从内存注入DLL,不需要实际DLL文件,也不需要任何Windows加载程序即可注入。
PowerShell分析
powershell脚本行为如下图:
该脚本使用了多层加密,混淆和编码技术,最顶层为base64编码:
base64解码将显示下一层代码,该层是十六进制编码XOR加密:
解码和解密后会显示主要脚本,该脚本仍有混淆,分析人员难以读懂内容:
该文件以反射方式将勒索软件DLL注入到合法进程explorer.exe中, 勒索软件以十六进制格式嵌入在脚本中。
脚本将其解码产生两个DLL,一个是勒索软件的x86版本(用于32位OS),另一个是x64版本(用于64位OS)。它会对运行环境进行检测,以便可以确定要使用的DLL版本:
它首先从kernell32.dll中找到所需功能的API地址:
然后计算内存地址:
脚本本身充当DLL加载程序,可以自行计算并解析定位其所需的内存地址。然后指定要注入的进程,搜索正在运行的Windows资源管理器进程。
通过以下代码将勒索软件DLL写入explorer.exe的内存空间并执行:
最后删除副本,防止受害者使用副本恢复文件。
无文件勒索软件分析
Netwalker使用6个随机字符作为扩展名重命名加密文件:
它将勒索信息放在系统各个文件夹中,并在对受害者数据文档加密后打开,其内容为:
添加以下注册表项:
HKEY_CURRENT_USER\SOFTWARE\{8 random characters}
{8 random characters} = {Hex values}
勒索软件会终止某些进程和服务,其中一些与软件数据备份有关。以下是勒索软件终止的一些服务示例(全部服务列表参照此报告):
*backup*
*sql*
AcronisAgent
ARSM
server Administrator
ShadowProtectSvc
wbengine
*sql*
excel.exe
ntrtscan.exe
powerpnt.exe
wbengine*
winword.exe
wrsa.exe
勒索软件还会停止与安全软件相关的进程,逃避安全软件对其恶意活动的检测防御。
Netwalker加密文件时主要针对常见用户文件,例如Office文档,PDF,图像,视频,音频和文本文件等。 它通常会避免对关键文件,可执行文件,动态链接库,注册表或其他与系统相关的文件进行加密,防止系统完全失效。
总结与建议
攻击者现在正在向勒索软件中添加反射DLL注入,从而使攻击难以被安全分析人员分析追踪。勒索软件本身对组织就具有很大的危害,成为无文件攻击后,其风险再次加大。组织必须使用各种安全技术来保护其端点,例如采用行为监控和基于行为检测的安全方案等。
以下是避免被勒索软件攻击的一些建议:
定期备份关键数据,减轻勒索软件攻击的影响;
安装来自操作系统和第三方供应商的最新软件补丁;
遵守良好的邮件和网站安全规范;
及时发现警告可疑的电子邮件和文件;
在端点上实施应用程序白名单,阻止所有未知和不需要的应用程序;
定期组织员工进行安全培训。
IOCs