这才攻防演练第三天,某家单位就接到指挥部通知,靶标丢失。
这家单位的安全负责人老李已经懵了,明明已经尽力做了安全防护,连终端杀软都安装了三个不同供应商产品,为什么结局还是来得这么快?关键是,三个杀软和约好了一样,静悄悄地,连一条告警信息都没有!
经外部专家历时两周的溯源,最终报告出来了。老李看着各种专业术语:域前置、远控马、反射加载、Payload、横向移动……依旧不明白为什么杀软不告警?
老李横竖看了半夜,终于从字缝里看出来歪歪扭扭的几个字——无文件攻击。
无文件攻击:来自黑客对杀软的降维打击
“无文件”攻击的精髓在于“恶意程序文件不写盘”,所以能从根本上绕过基于文件检测技术的安全产品(比如杀软)。一般而言,无文件攻击分为“无文件投递”和“无文件持久化”两个阶段。
“无文件投递”指的是恶意程序被投递到目标主机上这个过程中所使用的技术,主要针对杀软的“实时防护”功能,恶意程序投递阶段如果按传统的“先写盘再运行”的方式,则大概率能被扫描到;但如果这个过程中没有恶意程序文件写盘,则能从根本上绕过“实时防护”。无文件投递通常有利用脚本(如Powershell、JS等)远程加载恶意程序、利用Loader反射加载PE文件与漏洞利用等三种主要方法。
“无文件持久化”指的是恶意程序已经植入到目标主机上,但需要保证每次主机重启,恶意程序都能被重新运行起来,这个过程叫做“持久化”。按传统的方式,持久化也需要“从磁盘启动可执行文件”;但如果在这个阶段没有恶意程序从磁盘启动,也能绕过“实时防护”。
杀软为什么不告警?
上文提到的“实时防护”是主流杀软的三大功能之一,其他两个是文件扫描与主动防御。实时防护与文件扫描都是基于特征的文件检测技术,主要针对写入硬盘的文件进行检测。但如果落盘文件没有恶意代码或恶意特征,杀软难以检出,也就没有告警。
主动防御则是一种基于规则的行为检测与拦截技术,通常作为实时防护的补充,在实时防护无法检测某些威胁的时候能够给予一定的兜底能力。但从实践经验来看,主动防御所发挥的作用有限,因为传统杀软的主动防御功能通常偏向于单个进程的单点行为检测,在实战中限制较为明显。
针对杀软这三大功能特点,在实战对抗中,已经有比较成熟的方法去绕过,比如利用代码混淆或移除杀软检测特征等来实现免杀。而无文件攻击使用几乎没有恶意代码/特征的文件,杀软自然也就更无法检出。
需要注意的是,无文件这个看似高阶的攻击技术已经越来越“平民化”,出现了诸多可轻松实现无文件攻击的平台,其中最知名的可能就是CobaltStrike平台。此外,还有开源PoshC2平台与新兴的Sliver开源平台,以及专注于Powershell无文件攻击的Empire软件等。
并且,无文件攻击步骤之简单,超乎你想象!来看一起真实的黑客攻击案例。
一份Word简历 HR点开就被“黑”
小燕(化名)是某企业HR,她根本没想到,只是打开了一份名为“张xx-大客户经理-7年经验”的Word文档,然后电脑就被“黑”了。
这是一起典型的无文件攻击事件,黑客利用Word程序的宏功能发起攻击,整个攻击过程仅持续8秒,6步即完成:
1.HR打开Word文档,允许运行宏后,会运行文件中携带的VBA程序
2.VBA宏通过加密协议反连C2,下载Shellcode代码
3.VBA宏启动 Rundll32.exe 程序,这是操作系统可信程序
4.通过writeProcessMemory与CreateRemoteThread命令注入Shellcode
5.运行恶意代码
6.写入计划任务,Powershell命令下载Shellcode,实现无文件持久化
这一攻击过程可分为两个阶段:
步骤1~步骤5:属于无文件投递阶段,黑客向目标投递了一个看似正常的Word文件,Word中的宏仅仅是一个加载Shellcode的loader,实际的Shellcode是在loader运行时才反连C2下载,这是非常典型的利用反射加载手法实现的无文件投递。整个过程中没有新的恶意文件写盘,且Shellcode也只会驻留在内存中,不会写盘,所以,到目前为止杀软都检测不到,更不会告警。
步骤6:属于无文件持久化阶段,Word文档利用宏写入“计划任务”,在开机后会自动执行一段命令,这段命令中嵌入了编码后的Powershell脚本,会连接C2下载Shellcode并加载执行,典型的利用脚本远程加载恶意代码的技术手法,同样没有文件写盘,完美绕过杀软。
如果无文件攻击不能被有效阻断,那么后续攻击行为将接踵而至:盗取密码、获取凭证、内网横移、进入生产网、数据窃取……将给公司带来不可预估的后果。包括APT、挖矿、勒索攻击等网络攻击事件都有可能源自这一份小小的Word文档。
那么遭遇无文件攻击真的就只能束手就范吗?下篇文章将从无文件攻击原理出发,揭秘如何快速、有效地检测并反制无文件攻击,敬请关注!
发表评论
您还未登录,请先登录。
登录