对很多it专业人士来说,powershell的确是windows系统中一个相当强大的工具,而且微软也有意将powershell作为windows系统的默认命令行工具。但赛门铁克最近的一份报告指出,超过95%的powershell脚本实际上都是恶意脚本。
赛门铁克在报告(传送门)中指出,绝大部分恶意powershell脚本都是扮演下载的角色。当然powershell脚本的终极目标还是要在设备上执行恶意代码,在整个网络传播恶意软件。
绝大多数powershell脚本是恶意脚本
由于powershell框架极具灵活性,攻击者可以滥用它来下载恶意payload、进行恶意侦查、或者是遍历网络。赛门铁克分析,95.4%的powershell脚本为恶意脚本,这个结果表明来自外部的powershell脚本程序对企业构成了重大威胁,尤其是在使用shell
框架的企业中。
下载并执行远程文件的简单脚本程序示例
如今的很多针对性攻击均使用了powershell脚本,无论是odinaff集团发起的攻击还是kovter
trojan木马作者编写的脚本(都是采用powershell)。powershell脚本甚至不需要以文件为载体就能感染目标,因此越来越多银行木马和其他类型的威胁都选择了powershell。
比如最近有款名为“august”的恶意程序就采用powershell进行感染,而且并没有以文件为载体(传送门):在这次攻击中,恶意脚本企图窃取身份凭证和敏感文件。它通过包含恶意宏的word文档进行传播,一旦打开文档,powershell命令行就会启动,然后下载并安装最终的payload。
赛门铁克在例证中特别提到了nemucod
downloader——如果你对locky勒索软件熟的话,应该也很清楚nemucod用的就是powershell。不过实际上,报告中一直在强调,最常与powershell匹配的还是office宏;另外各种exploit
kits漏洞利用工具也经常采用powershell,比如说相当知名的rig、neutrino、magnitude和sundown。
恶意powershell脚本的一些数据
我们接收到的样本数量在2016年急剧增长。赛门铁克在第二季度收到的样本数量是第一季度的14倍,而第三季度更是第二季度的22倍。
基本代码混淆
赛门铁克的这份报告对大量样本进行了观察分析。这些数据均来自赛门铁克恶意软件分析沙盒(symantec blue
coat)。在这个沙盒中,仅今年就有49127例powershell脚本提交。而且,安全研究员还手动分析了4782例不同的样本,发现其中的111个恶意软件系列存在滥用powershell命令行的情况。而在这111例中,仅有8%的恶意软件使用了如大小写混合字母之类的混淆技术;没有脚本会对命令参数做随机化之类的混淆。
研究人员表示,他们观察到目前比较流行的,正在使用powershell、三个最常见的恶意软件,分别是w97m.downloader(在分析样本当中占比9.4%),trojan.kotver(占比4.5%)和js.downloader(占比4.0%)。
分析样本中,最常用的powershell命令行参数是“noprofile”(占比34%),“windowsstyle”(占比24%)和“executionpolicy”(占比23%)。
研究人员还提到,在今年观察的10797个powershell脚本中——也包括那些没有恶意的脚本,55%的脚本是以cmd.exe开始执行的。如果只考虑恶意脚本,95%都是通过cmd.exe执行。不过,绝大部分宏downloader还没运行就已经被系统禁止了,所以都并不需要赛门铁克的行为引擎分析。
针对已经被攻陷的网络,攻击者采用的powershell手法注入invoke-command、enter-pssession、wmi/wmic/invoke-wmimethod、task
scheduler,还有psexe这样一般的工具。而且为了能够保证存在的持久性,powershell也会安排任务、替换启动文件夹中的脚本、采用组策略或者wmi、感染本地配置文件,在注册表中存储脚本(如2014年的trojan.poweliks)等。
除此之外,赛门铁克的这份报告还详细谈到了黑客针对powershell脚本的混淆技术;列出了不少powershell恶意程序的相关信息,包括勒索软件,键盘记录器,以及银行和后门木马。有兴趣的可点击这里下载查看完整报告。
如何应对?
防御此类威胁的最好方法是运行最新版本的安全软件以及powershell。另外,恶意脚本大都是通过电子邮件传播,因此最好是不要打开来自不信任源的脚本、文件或者是链接。
公司内部的it专业人士需要对企业内部应用对powershell的调用进行更加严密的监控,记录powershell的活动并通过分析日志来发现异常行为,创建规则,以便在发生异常行为时能够报警。
另外,我们也应该(尤其是安全人士)经常审视powershell的命令行,通常合法脚本的内容和目的都很直观,而攻击脚本通常都使用base64加密命令行,并且经常把各种脚本团塞在一行内,出现这种情况时,我们一眼就能看出端倪。
作者:latiaojun
来源:51cto