无文件恶意软件真的没有文件?
作者: 日期:2017年03月18日 阅:4,024

据说无文件恶意软件的目标,就是进驻内存以保持隐身。除了驻扎在内存,无文件恶意软件的第二个特点,就是对系统管理工具的利用,比如PowerShell。

攻击者为什么要利用无文件恶意软件?

其一,不是每种终端解决方案都直接检查内存。这让内存成为了理想的藏身地点。其二,PowerShell之类的工具已经存在于系统中了。这就给攻击者留下了多个好处。能够靠局域网为生,便削减了因在受害者主机上部署恶意软件而产生的动静。

因为每个终端解决方案都会监视文件系统,写磁盘的操作会触动防御布网。让恶意软件仅进入内存则可避免该风险。这些工具也是广为使用的管理工具,偶尔的恶意用途也可以混进环境常见噪音中。

Windows是现有无文件恶意软件的主要目标。我们可以探究一下为什么无文件恶意软件并非真的没有文件。恶意软件可被狭义定义为操作系统上执行的代码,所以无文件恶意软件确实可以无文件。

甚至最好的终端产品都会错过内存中运行的高级恶意软件,甚少有公司会采用Volatility之类的内存分析工具。

跳出上述狭义定义,恶意软件背后黑手的目的,是尽可能多地收集目标用户的信息。为此,恶意软件需要能够从中断中恢复,而达到该功能的途径,就是能够挺过系统重启。想要驻留,总得往磁盘上写点儿什么东西。

Ars Technica 的文章中提到了某无文件恶意软件的IoC,该恶意软件创建了一个服务来挺过重启。注册表中留下的两个键是:

  • HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services
  • HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\PortProxy\v4tov4\tcp

ControlSet中的服务部分,就是系统服务在注册表中存在的地方。恶意软件能够随系统重启的奥秘就在于此。该注册表项有CurrentControlSet、ControlSet001和ControlSet002。微软知识库文章中介绍说:

ControlSet001可能是你最近一次重启的控制集,而ControlSet002则是最近已知良好状态,或者最近一次成功启动的 Windows NT 控制集。CurrentControlSet子键,不过是指向某个ControlSetXXX的指针而已。

注册表是存放于System32目录下的一个文件。上面提到的SYSTEM项里填入的是操作系统里%WINDIR%\System32\config\SYSTEM中的一个文件。这是无文件恶意软件实际上并非没有文件的铁证。

任何希望长期生存的恶意软件,最终都需要留下点什么东西,这东西很可能就在磁盘的某个地方。

 

申明:本文系厂商投稿收录,所涉观点不代表安全牛立场!


相关文章