导语:研究人员最近发现了一个新的勒索软件家族,研究人员称之为HavanaCrypt,它伪装成一个谷歌软件更新应用程序,并使用一个微软的网络托管服务IP地址作为它的命令和控制服务器来规避检测。
研究人员最近发现了一个新的勒索软件家族,研究人员称之为HavanaCrypt,它伪装成一个谷歌软件更新应用程序,并使用一个微软的网络托管服务IP地址作为它的命令和控制服务器来规避检测。
根据趋势科技智能防护网络的数据,研究人员在2022年第一季度通过电子邮件、URL和文件层检测和阻止了超过440万勒索软件威胁,比2021年第四季增加了37%。
勒索软件之所以如此普遍,还在于它的进化能力:它使用不断变化的策略和计划来欺骗不知情的受害者,并成功地渗透到环境中。例如,今年就有报道称,一些勒索软件冒充Windows 10、Google Chrome 和 Microsoft Exchange 更新的形式传播,以欺骗潜在的受害者下载恶意文件。
最近,趋势科技的研究人员发现了一个全新的勒索软件家族,它采用了一个类似的方案:它把自己伪装成一个谷歌软件更新应用程序,并使用一个微软网络托管服务IP地址作为它的命令和控制(C&C)服务器来规避检测。研究人员的调查还显示,该勒索软件在其文件加密例程中使用了 QueueUserWorkItem 函数、一个 .NET System.Threading 命名空间方法,该函数将方法排队等待执行,以及开源密码管理器 KeePass Password Safe 的模块。
在这篇文章中,研究人员对这个新的勒索软件家族(研究人员称之为HavanaCrypt)的感染技术进行了深入的技术分析。
HavanaCrypt是假冒的谷歌软件更新应用程序。
HavanaCrypt二进制文件的文件描述
该恶意软件是一个 .NET 编译的应用程序,受 Obfuscar 保护,Obfuscar 是一种开源 .NET 混淆器,用于帮助保护 .NET 程序集中的代码。
Detect It Easy 工具中显示的 HavanaCrypt 二进制文件的属性,该工具用于确定文件类型
该恶意软件还具有多种反虚拟化技术,帮助它在虚拟机中执行时避免动态分析。为了分析示例并生成去混淆代码,研究人员使用了de4dot和DeObfuscar等工具。
混淆的 HavanaCrypt 勒索软件代码示例
去除混淆的HavanaCrypt勒索软件代码样本
执行后,HavanaCrypt 使用带有参数 0 (SW_HIDE) 的 ShowWindow 函数隐藏其窗口。
HavanaCrypt使用的ShowWindow函数
HavanaCrypt 然后检查 AutoRun 注册表以查看是否存在“GoogleUpdate”注册表。如果注册表不存在,恶意软件将继续执行其恶意程序。
包含 HavanaCrypt 在检查注册表项时使用的参数的函数
然后,它继续执行反虚拟化例程,如果发现系统运行在虚拟机环境中,它会自行终止。
反虚拟化
HavanaCrypt有四个阶段来检查受感染的计算机是否在虚拟化环境中运行。
HavanaCrypt 用于实现其反虚拟化机制的函数
HavanaCrypt的整个反虚拟化程序
首先,它会检查 VMWare Tools 和 vmmouse 等虚拟机使用的服务。
HavanaCrypt 检查的服务
其次,它检查与虚拟机应用程序相关的常用文件。
HavanaCrypt 检查的虚拟机文件
它检查虚拟机为其可执行文件使用的文件名:
HavanaCrypt 检查的虚拟机可执行文件
最后,它检查计算机的MAC地址,并将其与虚拟机通常使用的组织唯一标识符(OUI)前缀进行比较。
HavanaCrypt正在检查OUI前缀
虚拟机的OUI范围或前缀
在验证受害计算机没有在虚拟机中运行后,HavanaCrypt 从 20[.]227[.]128[.]33(Microsoft Web 托管服务 IP 地址)下载名为“2.txt”的文件并保存作为批处理 (.bat) 文件,其文件名包含 20 到 25 个随机字符。
Microsoft Web 托管服务 IP 地址的详细信息
然后,它使用带有“/c start”参数的 cmd.exe 继续执行批处理文件。批处理文件包含用于配置 Windows Defender 扫描首选项的命令,以允许在“%Windows%”和“%User%”目录中检测到任何威胁。
包含下载和执行批处理文件的函数
在Microsoft web托管服务IP地址上看到的base64编码的2.txt文件
从 Microsoft Web 托管服务 IP 地址下载的解码批处理文件
HavanaCrypt还会终止计算机中运行的某些进程:
agntsvc axlbridge ccevtmgr ccsetmgr contoso1 culserver culture dbeng50 dbeng8 dbsnmp dbsrv12 defwatch encsvc excel fdlauncher firefoxconfig httpd infopath isqlplussvc msaccess msdtc msdtsrvr msftesql msmdsrv mspub mssql mssqlserver mydesktopqos mydesktopservice mysqld mysqld-nt mysqld-opt ocautoupds ocomm ocssd onenote oracle outlook powerpnt qbcfmonitorservice qbdbmgr qbidpservice qbupdate qbw32 quickboooks.fcs ragui rtvscan savroam sqbcoreservice sqladhlp sqlagent sqlbrowser sqlserv sqlserveragent sqlservr sqlwriter steam supervise synctime tbirdconfig thebat thebat64 thunderbird tomcat6 vds visio vmware-converter vmware-usbarbitator64 winword word wordpad wrapper wxserver wxserverview xfssvccon zhudongfangyu zhundongfangyu
HavanaCrypt终止的进程
需要注意的是,这个列表包括与数据库相关的应用程序(如Microsoft SQL Server和MySQL)的进程。Microsoft Office和Steam等桌面应用程序也被终止。
在它终止所有相关进程之后,HavanaCrypt查询所有可用的磁盘驱动器,并继续删除影子副本,并将最大存储空间大小调整为401 MB。
HavanaCrypt 删除卷影副本并将可用驱动器的最大存储空间调整为 401 MB
它还通过Windows Management Instrumentation (WMI)检查系统恢复示例,并通过使用SRRemoveRestorePoint函数继续删除它们。
HavanaCrypt通过WMI删除系统恢复示例
然后,它以可执行文件(.exe)的形式在%ProgramData%和%StartUp%文件夹中删除自己的副本,这些文件的文件名包含10到15个随机字符。然后它们的属性被设置为“隐藏”和“系统文件”。
HavanaCrypt在%ProgramData%和%StartUp%文件夹中删除自己的副本
HavanaCrypt将删除的文件设置为“隐藏”和“系统文件”
HavanaCrypt还将名为“vallo.bat”的文件放到%User Startup%上,其中包含可以禁用任务管理器的函数。
HavanaCrypt 将 vallo.bat 放到 %User Startup%
vallo.bat的内容
收集计算机信息
HavanaCrypt使用QueueUserWorkItem函数为其其他有效负载和加密线程实现线程池。此函数用于在线程池变为可用时执行任务。
HavanaCrypt使用的QueueUserWorkItem函数
它还使用DebuggerStepThrough属性,该属性使它在调试期间逐步遍历代码,而不是进入代码。在分析函数内部之前,必须删除此属性。
HavanaCrypt使用的DebuggerStepThrough属性
在继续其加密程序之前,HavanaCrypt 收集某些信息并将它们发送到其 C&C 服务器 20[.]227[.]128[.]33/index.php。这些是唯一标识符 (UID) 以及令牌和日期。
UID
UID包含计算机的系统指纹。HavanaCrypt收集计算机信息片段,并通过将它们附加到另一个来组合它们,然后将信息转换为其格式的 SHA-256 哈希:
HavanaCrypt用于收集计算机信息的功能
HavanaCrypt将收集到的计算机信息转换成SHA-256哈希
HavanaCrypt收集的计算机信息包括:
The number of processor cores The processor ID The processor name The socket designation The motherboard manufacturer The motherboard name The BIOS version The product number
令牌和日期
HavanaCrypt将字符串" index.php "替换为" ham.php ",以" Havana/1.0 "作为用户代理向其C&C服务器(hxxp[:]//20[.]227[.]128[.]33/ham.php)发送GET请求。
HavanaCrypt 用于向其 C&C 服务器发送 GET 请求的函数
研究人员通过Fiddler(一个web应用程序调试工具)获得的来自20[.]227[.]128[.]33/ham.php的响应
HavanaCrypt在Base64中解码ham.php的响应,并使用以下参数通过AES解密算法解密:
HavanaCrypt然后将输出存储在两个不同的数组中,以“-”作为分隔符。第一个数组用作标记,而第二个数组用作日期。
HavanaCrypt在AES解密中使用的参数的初始化
HavanaCrypt通过AES解密
使用CyberChef(一个提供编码和加密等操作的web应用程序),研究人员使用20[.]227[.]128[.]33/ham.php的响应复制了HavanaCrypt的解密程序:
研究人员用CyberChef软件复制了HavanaCrypt的解密程序
在收集所有必要的计算机信息后,HavanaCrypt使用" Havana/1.0 "作为用户代理,通过POST请求发送到hxxp://20[.]227[.]128[.]33/index.php。
研究使用 Fiddler 获得的 HavanaCrypt 对 hxxp[:]20[.]227[.]128[.]33/index[.]php 的 POST 请求
如果请求成功,HavanaCrypt将收到一个包含加密密钥、秘密密钥和其他详细信息的响应。
研究人员使用 Fiddler 获得的来自 hxxp[:]20[.]227[.]128[.]33/index[.]php 的响应
HavanaCrypt检查“%AppDataLocal%/Google/Google Software Update/1.0.0.0”中是否已经存在hava.info。如果它没有找到该文件,它将删除hava.info文件,该文件包含HavanaCrypt使用RSACryptoServiceProvider函数生成的RSA密钥。
研究人员使用控制台十六进制编辑器HIEW获得的hava.info的内容
HavanaCrypt使用RSACryptoServiceProvider函数生成的RSA密钥
加密程序
研究人员已经注意到HavanaCrypt在其加密程序中使用了KeePass Password Safe模块。特别是,它使用CryptoRandom函数来生成加密所需的随机密钥。HavanaCrypt所使用的功能和GitHub上的KeePass密码安全模块之间的相似性是显而易见的。
HavanaCrypt用于生成随机字节的函数
来自 GitHub 的 KeePass Password Safe 代码片段
HavanaCrypt 加密文件并附加“.Havana”作为文件扩展名。
HavanaCrypt的加密程序
它避免加密具有某些扩展名的文件,包括已经附加了“.Havana”扩展名的文件。
HavanaCrypt用来避免某些文件扩展名的函数
HavanaCrypt避免加密的文件扩展名文件
HavanaCrypt还避免对某些目录中的文件进行加密。
HavanaCrypt避免加密文件的目录
HavanaCrypt用来避开某些目录的函数
一些被HavanaCrypt加密的文件
在加密过程中,HavanaCrypt创建一个名为“foo.txt”的文本文件,该文件记录了包含加密文件的所有目录。
foo.txt 文本文件,其中包含包含加密文件的目录日志
结论
HavanaCrypt勒索软件将自己伪装成谷歌软件更新应用程序,目的是诱骗潜在的受害者执行恶意二进制文件。该恶意软件还通过检查与虚拟机应用程序相关的进程、文件和服务来实现许多反虚拟化技术。
勒索软件使用C&C服务器是微软网络托管服务的一部分,可能被用作网络托管服务以避免检测,这种情况并不常见。除了不同寻常的C&C服务器,HavanaCrypt还在加密阶段使用KeePass密码安全的合法模块。
该勒索软件的作者极有可能计划通过Tor浏览器进行通信,因为Tor是该软件避免加密文件的目录之一。需要注意的是,HavanaCrypt还加密了文本文件foo.txt,并没有放弃赎金通知。这可能表明HavanaCrypt仍处于开发阶段。
本文翻译自:https://www.trendmicro.com/en_us/research/22/g/brand-new-havanacrypt-ransomware-poses-as-google-software-update.html如若转载,请注明原文地址