打破“无文件落地”的神话

文摘   2024-06-23 17:30   新加坡  

在网络安全行业,新词汇层出不穷,“无文件落地”就是其中之一。这个术语的意思是恶意代码并不以文件的形式存在于本地硬盘上。对于不了解这一点的人来说,这个术语可能会误导他们认为完全没有使用文件,但事实并非如此。要使恶意软件得以运作并持续存在,硬盘上总得有某些文件。


无文件恶意软件通常指的是恶意代码通过注册表、内存或合法的系统进程来运行,而不是通过传统的可执行文件。然而,这并不意味着完全没有文件。例如,通过计划任务实现权限维持,这些任务保存在XML文件中,也保存在注册表(文件)中。

从基本角度来说,注册表位于磁盘上,它也是一个文件,可以被视为“文件中的文件系统”。尽管注册表采用二进制格式,但这并不意味着在注册表中存储其配置或权限维持的内容没有使用文件。

此外“从内存或脚本运行……而不是可执行文件”,这个意思是说该脚本不是真正的恶意软件本身,而是从系统外下载真正的恶意软件,然后在内存中运行,这样理想情况下,恶意代码就不会接触磁盘。但这种说法其实很悖论,因为即便该脚本不是恶意的,或许它只是一个简单的下载功能,但脚本本身也是文件。即使恶意软件主要在内存中运行,它仍需要某种形式的文件来启动和维持其运行。而且这种下流流量很容易被提取识别其用途,这里推荐一款恶意流量提取器

最后还有一种“离地攻击”(Living Off The Land Attack)的“无文件”说法。这是一种利用目标系统已存在的合法功能、工具或脚本的方法。这些攻击通常不需要下载外部恶意软件,而是利用目标系统已经具有的资源和功能来实施攻击,从而更难以检测和防御。比如通过脚本或合法的系统进程(如cmd.exe或PowerShell)来执行一些操作。

“从而更难以检测和防御”这种说法其实很离谱,这种技术实际上会产生相当多的IOC,其实反而更容易检测。通过适当的日志记录和监控进程父子关系及进程命令行,可以识别并应对这种攻击

一个很简单的道理:

一般组内或域内用户或管理员运行“cmdkey /list   net stat -ano Get-WmiObject”等这些命令的频率有多高?一般普通用户连CMD都碰不了几次?更别说一大堆powershell certutil -urlcache.了

结论

“无文件”一词被滥用被不恰当地应用于根本不无文件的恶意软件

现在的“无文件”恶意软件并不意味着完全没有文件存在,而是指恶意软件在运行过程中尽量避免在硬盘上留下明显的文件痕迹。通过注册表、内存和合法系统进程等途径运行恶意代码,试图避开传统的文件系统检测。


而真正的无文件攻击:

https://en.wikipedia.org/wiki/SQL_Slammer

https://en.wikipedia.org/wiki/Code_Red_(computer_worm)


老鑫安全
真正的大师永远都怀着一颗学徒的心,专注于渗透测试,红蓝对抗,漏洞挖掘等安全技术培训 B站:老鑫安全 知识星球:老鑫安全 官网论坛:https://www.laoxinsec.com