0x01 概述
当攻击者通过消除将PE(可移植可执行文件)复制到磁盘驱动器的传统步骤来逃避检测时,就会发生无文件或无恶意软件的攻击。CrowdStrike将无恶意软件攻击定义为初始没有文件或文件片段被写入磁盘的攻击,例如包括代码从内存执行的攻击、或者利用盗取的凭证使用已知工具进行远程登录的攻击。无恶意软件攻击通常需要更广泛更复杂的检测技术来可靠地识别和拦截,包括行为检测和人类威胁捕获。而恶意软件攻击定义为有恶意文件被写入磁盘,导致会被防护产品检测到试图运行该文件,然后识别或阻止它。这些入侵尝试相对来说比较容易拦截和阻止,通常可以用传统的反恶意软件解决方案有效地阻止。
0x02 无文件恶意软件攻击的类型
1.内存漏洞
对于驻留在内存中的恶意软件,攻击者可以向正在运行的应用中注入恶意载荷。该技术可用于绕过某些应用程序白名单和防病毒解决方案的管控,因为攻击者的代码是在组织机构允许的应用中执行的。内存无文件攻击的初始阶段与传统的恶意攻击没有太大的区别,通常利用鱼叉式网络钓鱼和隐秘下载来攻击受害者并取得立足之地。这些恶意软件中,有很多是彻彻底底的恶意软件,它们将恶意载荷嵌入到另一种文件类型(例如DLL)中,然后从目标系统上提取出来再执行
2.注册表
甚至勒索软件攻击者,现在也在使用无文件技术,来实现他们的目标。在这类勒索软件中,恶意代码要么嵌入文档中以使用本机脚本语言(如宏),要么使用漏洞直接写入内存。然后,勒索软件使用合法的管理工具如PowerShell,来加密人质文件,而所有这些都不需要写入磁盘。通常,无文件恶意软件仅存在于计算机的随机存取存储器(RAM)中,这意味着没有任何内容直接写入硬盘存储器。但是,其不会永远保存在硬盘储存器中,一旦用户重启系统后,由无文件攻击引起的破坏就可以停止。然而,恶意攻击者使用技术来确保无文件感染不依赖端点来维持攻击。黑客可以通过设置脚本来对系统注册表进行细微更改,即使重启系统也可以运行。此外,还可以通过使用自动运行功能在注册表中存储恶意代码来破坏Windows注册表,从而即使在计算机重新启动后,攻击也会在后台继续运行。
3.脚本安装恶意软件
许多基于脚本的攻击都使用解释性脚本,因为它们直接在命令行上运行(通过PowerShell,java script,VBScript,WScript,mshta等),并可能导致任意代码执行。例如,PowerShell可以在系统中执行隐藏命令,该命令可以根据计划的攻击时间长度来设置。此后,通过在内存中执行代码以无文件方式传递了许多恶意软件类型,从而绕过了传统的端点防护工具的防御。
4.word文档等
无文件攻击还可以嵌入文档,利用Office文档(例如Microsoft Word和Excel)和PDF等已批准的应用程序中的恶意宏代码(例如java script或VBScript)。宏可以运行脚本并滥用合法工具(如PowerShell)来启动、下载或执行代码,脚本和有效负载。无文件攻击还可以通过垃圾邮件或网络钓鱼邮件进入系统,诱使接收者单击恶意链接,然后启动感染过程。
0x03 工作方式
1.PowerShell,具有Cobalt Kitty行动,Ramnit Banking木马,Emotet,TrickBot和Ryuk的三重威胁以及Fallout Exploit Kit等攻击。
2.Windows Management Instrumentation(WMI),具有像Operation Soft Cell,Shade Exploit Kit,Adobe Worm Faker和 GandCrabs Evasive攻击之类的攻击。
3..NET,带有类似新Ursnif变体的攻击;
4.恶意宏,带有类似新Ursnif变体的攻击;
0x04 为什么使用无文件恶意软件
无文件恶意软件攻击是一种黑客可以利用已经安装在计算机上的应用程序的恶意攻击,它通常利用合法或正当活动的应用程序在常驻内存中执行恶意代码
1.攻击隐蔽,避免被防护设备软件检测到
2.无文件攻击没有静态特征
3.保持权限的时间长,延长被发现的时间
4.无文件攻击方式多种多样
5.维持权限的方式多,可以通过提升权限将文件维持在一个白名单的状态
0x05 如何防御无文件恶意软件攻击
1.及时更新升级系统,打补丁
首先最重要的就是对各种网络安全威胁的及时更新,只有保持你的你的安全低于状态是最新的最良好的情况下才能抵御无文件恶意软件。
2.系统权限的维护
仅仅因为有一个用户点击了恶意附件并不意味着该恶意软件会留在电脑上。相反,一种典型的行为是恶意软件在网络中移动以找到更丰富的目标,如域控制器或Web服务器。为防止这种情况,应该仔细划分网络,并确保了解访问权限,特别是对于第三方应用程序和用户的访问权限
3.采用安全设备
通过扫描网络连接和电子邮件中是否存在恶意软件,这将帮助减少恶意软件到达端点并执行的机会。微软开发了一个反恶意软件扫描开放接口,一些供应商已经开始使用该接口来轻松检测无文件世界的“信息”,尤其是在分析脚本行为时
0x06 无文件恶意软件攻击shiro-tomcat内存马
0x06-1 漏洞环境搭建
利用shiro反序列化漏洞,注入内存马。我们启动一个shiro+spring的反序列化的漏洞环境。
0x06-2 filter内存马过程分析
(1)判断shiro漏洞及shiro是否有匹配key值及证明是否存在shiro反序列化漏洞。
(2)因shiro反序列化的利用点在cookie头,tomcat限制cookie头长度(默认为200),超过该长度tomcat会报错,所以需要对内存马代码进行打包成类。
(3)tomcat-filter内存马创建过程,将filter注入到tomcat中,首先获取context值
(4)FilterChain()通过遍历filterMaps,根据请求的URL在filterMaps中匹配filter
(5)在filterConfigs中找到filter的实例
(6)注册了恶意filter代码,实现cmd命令的执行
(7)启动shiro反序列化环境,注入filter内存马