这些年无文件(Fileless)和不落地(Living off the Land)攻击已经非常流行,几乎成为攻击者的标配。理想的无文件攻击是只存在于内存中的后门,网络上有很多无文件攻击的验证性代码,比如最早的powershell downloadstring,远程文件是被当成字符串直接下载到powershell进程内存中执行,然后发展到利用mshta、rundll32等执行脚本的各种奇技淫巧,再到现在流行的各种.NET assembly托管代码注入技术,当然还有一些完全脱离操作系统的高端无文件攻击。而微软有一个无文件攻击模型能够非常好的解析这些无文件攻击,我给大家做个简单的参考解读。
这个攻击模型按磁盘文件的活动将攻击分成了3个类型
Type1,没有任何的文件活动。简单说就是攻击活动没有任何的磁盘文件落地和磁盘文件的操作行为,一般这种攻击的实施都脱离了操作系统,是由更上层的硬件固件和软件层发起的。
Type2,没有磁盘落地文件,但通过文件间接活动,恶意代码一般通过白文件间接加载到内存中执行。这类攻击恶意代码的载体大多数都是脚本,通过程序命令执行,也有通过磁盘引导记录等特定机制的执行。
Type3,需要操作文件进行活动。比较容易能理解的意思是恶意代码变成了数据,利用文件相关的程序漏洞或功能特性将恶意数据转换为恶意代码执行。
接着是颗粒度更细的分类描叙,是基于被攻击宿主进行的分类
漏洞攻击,基于软件和操作系统安全漏洞的无文件攻击
基于文件(Type3)
各种各样的office、flash、java漏洞文件和浏览器漏洞,一般都是通过恶意文件触发漏洞使文件解析引擎、浏览器等执行恶意代码,通过shellcode直接在内存中执行恶意代码。
基于网络(Type1)
永恒之蓝是个好例子,直接通过网络协议的远程代码执行漏洞来执行恶意代码。
硬件攻击,脱离操作系统的无文件攻击
基于设备(Type1)
通过网卡、磁盘固件执行恶意代码,经典的如方程式的KillSuit,基于硬盘固件、磁盘引导区执行恶意代码。
基于CPU(Type1)
CPU自己本身也会有子系统,比如被白金改造的Intel cpu的主动管理技术(AMT)后门。
基于外置USB(Type1)
USB可以外接的设备类型很多,比如最常见的模拟键盘和网关的badusb设备。
基于BIOS(Type1)
主板BIOS能植入恶意代码大伙也是耳熟能详了,象今年eset发现的LoJax Rootkit,通过改造 BIOS固件中的防盗功能植入的后门。
基于虚拟机管理层(Type1)
这是属于上帝视角的攻击了,虚拟机管理层执行恶意代码,已经脱离虚拟机操作系统之外了。
执行和注入,无文件攻击执行恶意代码的常见形式
基于文件(Type3)
从执行代码的角度看,这是无文件攻击最基础的执行向量,可以是可执行文件、dll、lnk快捷方式、计划任务等,它的攻击过程通常是将恶意代码远程注入到其他进程或加载到自身进程内存执行。
基于宏(Type3)
office文档相关的宏脚本,这是基于office文档类自身的脚本语言,在office进程中执行恶意代码。
基于脚本(Type2)
基于js、vbs、powershell脚本执行恶意代码, 这个就不再赘述了,大量的系统程序都有各种奇技淫巧能执行恶意脚本。
基于磁盘(Type2)
通过磁盘的引导记录执行恶意代码,恶意的mbr、vbr都在这一类里面。
以上就是这个攻击模型的大体情况,这个攻击模型将现代安全软件要应对的刁钻攻击展现得一览无遗。我们可以看到微软在攻击模型和攻击知识库方面确实是业界标杆,我想不是一线技术专家,很难做出这样的攻击模型,一个安全产品所要经历攻防的点,是没有接触过攻防的人难以想象的。
参考:
https://docs.microsoft.com/en-us/windows/security/threat-protection/intelligence/fileless-threats