专栏首页FreeBufPowershell最佳安全实践

Powershell最佳安全实践

写在前面的话

其实很早之前,攻击者就已经开始使用合法工具来渗透目标网络并实现横向攻击了。理由很简单:使用合法工具可以降低被检测到的几率,而且进过授权的工具(而并非恶意工具)可以更容易绕过安全防护机制。因此对于攻击者来说,PowerShell就成为了一个绝佳的工具。在这篇文章中,我们将跟大家讨论PowerShell的最佳实践方式,而本文的内容将能够帮助你对抗那些使用PowerShell来攻击你的人。

PowerShell是什么?

PowerShell是一种专为MicrosoftWindows和Windows Server设计的自动化平台兼脚本语言,它可以简化系统管理步骤。与其他基于文本的shell不同,PowerShell还可以利用Microsoft .Net Framework的强大功能,并给用户提供多种对象和内置功能来帮助用户管理自己的Windows环境。

为什么是PowerShell?

目前有很多网络攻击都在使用PowerShell,尤其是近期的Petya/NotPetya攻击活动。对于攻击者来说,最重要的是PowerShell是Windows自带的工具,并且整合了.NET Framework组件,而在攻击者的入侵和感染活动中,这个框架组件能够提供多种操作选项。

对于攻击者而言,PowerShell最吸引人的方面有以下几个:

  1. 可以轻松访问网络套接字;
  2. 可以在内存中动态编译恶意代码;
  3. 可直接访问Win32应用程序编程接口(API);
  4. 可以轻松访问WMI接口;
  5. 强大的脚本环境;
  6. 动态、运行时方法调用;
  7. 轻松访问加密库,例如IPSec和各种哈希算法;
  8. 轻松绑定COM;

上面列出的这些因素让PowerShell成为了一种高效的攻击向量。

PowerShell首次被当作一种攻击平台被提出是在2010年,当时在DefCon18上有研究人员演示了利用PowerShell的PoC。

目前,社区中有很多类似Nishang、PowerSploit和PowerShell Empire平台的攻击工具,攻击者可以利用这些工具来进行网络侦察、持续性感染以及横向攻击活动。当然了,考虑到PowerShell的自身属性,它还可以进行各种形式的编程,攻击者可以采用编程的方式将其打造成一款自定义工具。

PowerShell安全最佳实践

考虑到某些组织因为需求关系不能禁用或删除PowerShell,下面给出的几条安全实践建议可以帮助你在享受PowerShell的高效性时免受网络威胁的困扰。

1. PSLockDownPloicy以及PowerShell的受限语言模式

受限语言模式能够将PowerShell限制在基础功能状态,并移除其高级功能的支持,例如.NET和Windows API调用以及COM访问。一旦PowerShell失去了这些高级功能,那么绝大多数的基于PowerShell的攻击工具都将会失效。但是在企业环境中,这种方法将会对合法脚本产生负面影响,因此我们建议在采用这种方法之前,一定要进行多次测试,以保证合法代码的正常运行。【 配置参考资料】

启用受限语言模式:

通过组策略启动:

2. PowerShell v.5+Applocker+DeviceGuard

PowerShell v.5自带了很多优秀的安全增强功能,非常适合企业环境使用。这些安全增强功能包括:

脚本块日志:将反混淆化的PowerShell代码记录到事件日志中; 系统范围的脚本拷贝:该功能可通过组策略开启,可记录下每一条在系统中执行过的PowerShell命令和代码块; 受限语言模式的PowerShell:进入受限语言模式; 整合反恶意软件(Windows 10):Windows 10的反恶意软件扫描接口(AMSI)允许所有的脚本引擎(PowerShell、VBScript和JScript)请求对动态内容进行安全分析,包括脚本文件、命令行输入的命令以及内存中下载和执行的代码。它可以在PowerShell代码执行之前对其进行安全扫描。

除此之外,用户还可以使用Applocker来阻止未知来源的PowerShell代码。

Device Guard是Windows 10和Windows Server2016新推出的功能,它可以利用先进的硬件功能来增强受限语言模式和应用程序白名单功能。

3. 记录PowerShell活动

我们可以通过组策略来开启PowerShell模块记录功能:

Microsoft.PowerShell.* (例如Microsoft.PowerShell.Managementmodule):记录大多数PowerShell的核心功能; ActiveDirectory:记录活动目录的使用; BITS Transfer:记录BITS(后台智能传输服务)的使用; CimCmdlets (2012R2/8.1) :记录CIM(公共信息模型)的使用; Microsoft.WSMan.Management:记录WS-Management以及WinRM的使用; NetAdapter/NetConnection:记录与网络相关的活动情况; PSScheduledJob/ScheduledTasks (PSv5) :记录管理计划任务; SmbShare:记录SMB共享活动;

为了让这些日志发挥作用,我们需要将其提供给一个中央日志系统,并针对已知的攻击方法进行警告配置。

相关活动:

涉及到.Net的下载活动(New-Object Net.WebClient).DownloadString) Invoke-Expression BITS活动 计划任务创建/删除 远程PowerShell

检测PowerShell攻击代码最好的方法就是查找关键标识符,即关键代码段。

例子:检测Mimikatz(一种收集登录用户凭证的工具)

相关的Mimikatz事件日志关键词:

“System.Reflection.AssemblyName” “System.Reflection.Emit.AssemblyBuilderAccess “ “System.Runtime.InteropServices.MarshalAsAttribute” “TOKEN_PRIVILEGES” “SE_PRIVILEGE_ENABLED”

对于经过混淆处理的PowerShell,我们应该设计自定义规则。比如说:

寻找大括号{ } 寻找单引号或双引号’ “

因为它们都是在混淆技术中会经常使用的,而合法软件或正常的管理员一般是不会使用它们的。

4. 移除PowerShell V.2

由于微软给最新版本PowerShell整合的安全增强功能并不适用于PowerShell v.2,因此v.2版本的PowerShell将有可能被用于攻击者的横向渗透或持久化攻击之中。处于类似原因,微软近期宣布将在下一个Windows10更新中废除PowerShell v.2。因此,我们建议广大用户尽快移除系统中的PowerShell v.2。

5. 脚本代码签名

如果你需要在企业环境中使用PowerShell脚本的话,代码签名也是另一种可以增强安全性的方法。这种功能将只允许经过数字签名的脚本代码在计算机中运行。但是我们haixuya噢考虑到某些攻击者可能会使用恶意文件签名来绕过这种防护机制,因此我们还需要添加额外的安全层以防止这种绕过技术。

6. PowerShell检测绕过技术

由于使用PowerShell的攻击事件越来越多,因此PowerShell也逐渐开始吸引到了社区研究人员的注意。而针对各种各样的检测技术,攻击者也研发出了相应的绕过方法。其中包括:

将目标主机中的PowerShell降级至PowerShellv.2 自定义使用.NET Framework(不涉及到PowerShell.exe的执行) PowerShell脚本混淆

上面列举出的只是其中的一小部分技术,但“记录PowerShell活动”那部分的安全实践建议可以检测其中的绝大部分绕过行为。

总结-PowerShell的安全并没有那么容易实现

在对目前绝大多数已知的攻击技术进行了分析之后,我们强烈建议大家升级至Windows 10和PowerShell v.5,并移除PowerShell v.2。虽然这种操作可能不适用于某些特殊的企业环境,但相关的网络管理员也应该尽量部署并激活本文所介绍的安全保护技术,并及时更新攻击识别信息。

本文分享自微信公众号 - FreeBuf(freebuf),作者:Alpha_h4ck

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-10-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何利用日志来监控和限制PowerShell攻击活动

    写在前面的话 近期,我一直在我客户的网络环境中分析PowerShell攻击,根据我的分析以及研究结果,我发现了几种方法来帮助研究人员检测潜在的PowerShel...

    FB客服
  • 传播恶意软件最有效帮手:超95%的PowerShell脚本都是恶意脚本

    对很多IT专业人士来说,Powershell的确是Windows系统中一个相当强大的工具,而且微软也有意将PowerShell作为Windows系统的默认命令行...

    FB客服
  • 恶意软件分析:xHunt活动又使用了新型后门

    xHunt活动从2018年7月份一直活跃至今,这个组织的主要目标针对的是科威特政府和航运运输组织。近期研究人员发现,xHunt的攻击者又攻击了科威特一家机构的M...

    FB客服
  • Windows PowerShell 2.0十大新特性

      新的cmdlet、操作符和变量,再加上诸如脚本调试以及后台任务这样的新功能,PowerShell 2.0将帮助你开启PowerShell脚本编程的新世界。 ...

    张善友
  • Windows+PowerShell+实战指南

    PowerShell既是编程语言,也是一种管理Shell。通过PowerShell几乎可以管理Windows的方方面面。本书是为忙于运维的管理员所编写的参考指南...

    用户3157710
  • 微软发布PowerShell 7.0,兼容性大升级,全平台可用,开发人员:自7以后才是真·PowerShell

    那个模糊了脚本和正经程序的边界,让一切皆有可能的PowerShell,7.0正式版发布啦。

    量子位
  • Shell|秒杀cmd的PowerShell

    随着Windows的不断更新,在2018年初,微软终于正式发布了PowerShell Core 6.0。新版本的出现,再次更加确立了它替代cmd的地位。它专为开...

    算法与编程之美
  • 如何利用日志来监控和限制PowerShell攻击活动

    写在前面的话 近期,我一直在我客户的网络环境中分析PowerShell攻击,根据我的分析以及研究结果,我发现了几种方法来帮助研究人员检测潜在的PowerShel...

    FB客服
  • PowerShell安装及基础介绍

    方式二,在windows开始,下方的搜索框中输入powershell进行搜索,然后启动之,如下图所示。

    苦叶子
  • 细数那些在2017年被黑客滥用的系统管理工具和协议

    “用指尖改变世界” ? 系统管理工具和合法协议原本是为了给系统管理员、信息安全专业人员、开发人员和程序员的日常工作提供灵活性和高效性而设计的。然而,当被黑客、网...

    企鹅号小编

扫码关注云+社区

领取腾讯云代金券