卡巴斯基实验室的研究人员发现了感染 Windows 系统的 SynAck 勒索软件的一个新变种,该变种似乎是有针对性的恶意软件,因为袭击只在美国、科威特、德国和伊朗被发现。
自 2017 年9月以来,SynAck 一直在运行,起初没什么特色,但最近的 SynAck 变种采用了 Process Doppelgienging 反查杀技术,该技术直接利用微软 Windows 系统中的事务性 NTFS (TxF)Transactional NTFS 机制读写文件,研究员认为目前常见的反恶意软件供应商无法查杀 SynAck 勒索软件 ,更糟糕的是 TxF 在目前大多数 Windows 版本上默认都是启用的。
SynAck 勒索软件的最新版本包含了许多新颖且复杂的反查杀技术,包括不久前安全研究人员于 2017 年12月发布的新技术 Process Doppelgienging
Process Doppelgänging 由 enSilo 安全研究人员,@Tal_Liberman 和 Eugene Kogan 在 BlackHat 欧洲 2017 上发布。该技术利用了 Microsoft Windows 的 NTFS Transactions 机制,它存在于所有的 Windows 版本上,并且是标准配置。利用这项机制,恶意软件作者可以直接利用目标系统上的进程,而无需将其注入代码其中,这对于恶意软件作者来说是一大优势。
事务性 NTFS(TxF)Transactional NTFS 是什么
在微软 MSDN 的官方信息显示,事务性 NTFS(TxF)将事务集成到 NTFS 文件系统中,这使应用程序开发人员和管理员可以更轻松地处理错误并保持数据完整性。使用场景包括
文件的更新是一种常见且通常很简单的操作。 但是,如果系统或应用程序在应用程序更新磁盘上的信息时失败,则结果可能是灾难性的,因为用户数据可能会被部分完成的文件更新操作损坏。 强大的应用程序通常执行复杂的文件副本和文件重命名序列,以确保数据在系统出现故障时不会损坏。
TxF 使应用程序很容易保护文件更新操作免受系统或应用程序故障的影响。 要安全地更新文件,应用程序以事务处理模式打开文件,进行必要的更新,然后提交事务。 如果系统或应用程序在文件更新过程中失败,则 TxF 会自动将文件恢复到文件更新开始前的状态,从而避免文件损坏。
多文件更新 , 当单个逻辑操作影响多个文件时,TxF更为重要。 例如,如果要使用工具重命名网站上的 HTML 或 ASP 页面之一,则精心设计的工具也会修复所有链接以使用新文件名。 但是,在此操作过程中出现故障会使网站处于不一致状态,其中一些链接仍指旧文件名。 通过使文件重命名操作和链接修复操作成为单个事务,TxF可确保文件重命名和链接修复成功或失败,作为单个操作。
一致的并发更新 , TxF 隔离并发事务。 如果应用程序为事务性读取打开文件,而另一个应用程序为事务性更新打开相同的文件,则 TxF 将两个事务的影响相互隔离。 换句话说,事务性阅读器总是查看单个一致的文件版本,即使该文件正在被另一个事务更新的过程中。
应用程序可以使用此功能来让客户在其他客户进行更新时查看文件。 例如,事务性 Web 服务器可以提供单个,一致的文件视图,而另一个工具则同时更新这些文件。
但有趣的是,微软似乎意识到这个安全性问题,已经不推荐使用这个方法了,(安全加小编没有看到该通告是什么时候发布的,或者说该通告适用于多大范围的 Window s版本)
Process Doppelgänging 技术对于 MS TxF 的利用机制
据称,因为该技术利用了默认的 Windows 功能,而且不太可能被修补。作者描述了 Process Doppelgänging 技术的工作机制:
“为了实现这一目标,我们利用 NTFS Transactions 。 我们在上下文交换中覆盖合法文件。 然后,我们从修改后的文件(在上下文交换中)创建一个文件块,并创建一个进程去处理它。
看起来,在 Transactions 中扫描文件,是目前常见的供应商无法做到的(有些甚至会导致杀毒软件挂起),随后我们进行了回滚,所以我们的活动没有留下任何痕迹。“
关键是大多数反恶意软件工具,一般都是监视文件系统的意外更改,或者在内存中运行的意外代码,很少注意文件系统上的程序。通过利用 NTFS Transactions 机制,SynAck 勒索软件能够在存储在磁盘上的合法程序的伪装下运行,而不用更改会引发所有警报的文件。NTFS 事务是正常的 Windows 事件,因此一切看起来都正常于系统。
SynAck 还采用了代码混淆技术及目录白名单技术
除了 ProcessDoppelgänging,SynAck 勒索软件还采用了一些其他有趣的技术来避免检测。 基本的反恶意软件技术是查看文件并识别恶意特征。 为了避开这种检查,恶意软件作者经常对其编译的代码进行混淆,进一步加大分析它的难度。 反恶意软件防御措施,擅长识别适用于已编译代码的通用代码混淆技术,但 SynAck 勒索软件开发人员 在编译之前更进一步并对其进行了混淆。(Securelist)即使这种技术可以克服的,但它针对探测阶段就进行了很多的工作,这会让安全软件的效能大幅度下降,相信没有人喜欢较慢的安全软件。
SynAck 勒索软件还采用了相对常见的技术,识别它正在运行的目录。 如果正在从白名单之外的目录执行它,则恶意软件就会假定自己在反恶意软件工具的审查下运行,比如运行在沙箱中运行,如果是这样的话,它就不会运行。 这会进一步降低反恶意软件的防御措施的漏查漏杀。
SynAck 勒索软件还会测试目标系统的键盘语言设置。 勒索软件不会在默认语言设置为西里尔文的系统上执行。
恶意软件天生就有一种使命,那就是不断并加速变化。每次采用新的攻击技术时,都会开发新的防御技术,而不良行动者需要提出新技术。为了获得更长的利用时间,恶意软件开发人员通常会添加防御技术,来识别何时被反恶意软件工具审查,或混淆代码的真实目的,进而逃避反恶意软件工具的查杀,或将攻击的目标避免在本国,以免警方采取行动。
SynAck 勒索软件的主要攻击媒介是通过 Windows 远程桌面协议(RDP)。如果你不需要它,你应该把它关掉。除此之外,对勒索软件的正常保护仍然适用。 在勒索软件加密中没有发现任何缺陷,所以不要指望那些免费提供解密密钥的好人。
Comments