暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

网络安全实战 | PowerShell,工具还是武器?

Azure云科技 2023-12-19
330



# 网络安全实战

PowerShell 无所不能的自动化管理平台 


我很喜欢 PowerShell,它是我核心使用的脚本语言。如果您是一个 IT 管理人员,那么应该了解 PowerShell。PowerShell 又被称为“下一代 CMD”,是一个基于 .Net 语言开发的、跨平台的自动化管理任务解决方案,由命令行 Shell、脚本语言和配置管理框架组成,并且自 Windows Server 2008 开始已经集成到 Windows 操作系统中。作为下一代的、先进的跨平台自动化管理平台,PowerShell 可以说是无所不能的。

例如通过 PowerShell,你可以实现: 


【1】可以直接访问操作系统的各个组件,无论是文件、注册表、事件日志、服务和程序等;

【2】可以直接使用并运行 .Net 代码;

【3】可以直接访问外部 Web 站点并下载文件;

【4】允许在内存中直接执行代码,而无需将文件预先存储在磁盘上(无需文件实体); 

【5】支持远程管理访问和远程命令执行。 


因此可见,PowerShell 真是居家旅行、上下通吃的必备工具,大量企业在日常的 IT 运维管理操作中也是广泛使用 PowerShell。 



1

PowerShell 无文件攻击的核心平台


但是技术是中立的,取决于谁在使用而已,网络安全无论攻防双方都是在充分利用先进技术进行快速进化。PowerShell 所拥有的强大特性,也被攻击者所充分地利用。甚至基于 PowerShell,还发展出了一种新的攻击方式:无文件攻击(Fileless Attack,又被称为 Living off the Land (LotL) attack)。无文件攻击是一种非常先进的攻击技术,它充分利用操作系统内置或目标系统上现有的程序/工具(主要是 PowerShell)来实现攻击行为,无需引入其他恶意可执行实体程序或文件,加上很多企业使用 PowerShell 进行日常的 IT 运维管理操作,再利用 PowerShell 的代码混淆功能,更加容易规避安全防护、监测和审计措施,成功实现攻击操作。 

鉴于 PowerShell 广泛的存在与强大的功能,几乎所有的攻击场景下均能够利用 PowerShell,例如: 


【1】利用 PowerShell 本地或远程执行命令进行环境侦测;

【2】利用 PowerShell 本地或远程执行代码利用系统漏洞进行提权;

【3】利用 PowerShell 本地或远程执行命令进行横向移动;

【4】利用 PowerShell 本地或远程下载外部恶意代码,并在内存中直接执行; 

【5】Office 文档宏病毒调用 PowerShell 恶意代码发起攻击行为;

【6】利用 PowerShell 实现本地或远程持续保有系统控制权。


以下是一个 APT 攻击中所使用的 PowerShell 无文件攻击实例,由于攻击技术的敏感性,在此我不就具体的攻击技术做更多分享。 

总体而言,目前无文件攻击技术在攻击实战中得到广泛应用,我们目前所处理的安全事件响应中,基本上十次 APT 攻击里面,有九到十次都有使用 PowerShell 进行无文件攻击操作。如何防范 PowerShell 被恶意利用发起攻击行为,就成为了我们在安全防护与安全监测中的重要目标。 



2

PowerShell 安全防护与安全监测


鉴于 PowerShell 的重要性,为了更好地保护 PowerShell 的安全性,防范 PowerShell 被恶意利用,我们也加强了 Windows 系统中 PowerShell 的默认安全配置,例如: 

【1】默认情况下,在 Windows 10/Windows Server 2016 及其后的操作系统版本中,执行 PowerShell 脚本时会预先通过系统内置 Microsoft Defender 杀毒的安全扫描;

【2】默认情况下,Windows 操作系统禁止 PowerShell 的远程管理/远程执行; 

【3】对于 PowerShell 的脚本执行策略,Windows 客户端默认配置为禁止(Restricted),Windows 服务器默认配置为对于 Internet 下载的脚本文件要求签名(RemoteSigned)


同时我们也提供了多样化的 PowerShell 安全策略配置和日志审计功能,从而有助于企业实现有效的 PowerShell 安全防护与安全监测。接下来我为大家分享一下 PowerShell 在实战中的核心安全防护与安全监测措施,注意这并非全部安全措施。另外由于 PowerShell 也大量用于企业的日常 IT 运维管理操作,因此部署相关安全措施前,最好能够评估一下对 IT 运维管理操作的相关影响。


第一种

PowerShell 核心安全防护措施 


限制执行 PowerShell 脚本

我们可以通过 PowerShell 执行策略来限制 PowerShell 的脚本执行。对于 PowerShell 的脚本执行策略,Windows 客户端默认配置为禁止,Windows 服务器默认配置为 RemoteSigned。但在 PowerShell 执行策略中禁止执行脚本不会限制执行 PowerShell 程序,从而有绕过 PowerShell 执行策略执行脚本的方式,例如可以通过执行单条命令的方式来执行脚本。 


具体配置方式有两种: 


【1】通过 Set-ExecutionPolicy 命令来配置本地计算机上的 PowerShell 执行脚本策略,可以针对计算机、用户或 PowerShell 进程来进行配置,例如以下命令配置本地计算机策略,禁止运行 PowerShell 脚本。如果具有本地计算机的管理员或系统权限,则可以修改此配置。 

【2】通过组策略命令来配置 PowerShell 执行脚本策略,具体路径如下所示。组策略中的相关配置将优先于 Set-ExecutionPolicy 命令中的相关配置。


限制执行 PowerShell 程序 

在 PowerShell 执行策略中禁止执行脚本不会限制执行 PowerShell 程序,因此对于安全要求较高的计算机系统,可以考虑直接通过 AppLocker 策略来禁止运行 PowerShell 相关进程,如下图所示。但是 AppLocker 的 Executable Rules 这种路径限制类规则均无法限制文件夹/文件复制或改名,因此需要结合其他安全防护措施一起使用,否则该限制策略可以被绕过。 


第二种

PowerShell 日志审计  


系统安全审计日志

通过启用操作系统安全审计日志中的进程创建审计日志,可以审核 PowerShell/PowerShell_ISE 的进程创建信息。

该日志中可以包含执行时的命令行参数信息,但是无法记录 PowerShell 的具体执行内容。


PowerShell 审计日志

从 PowerShell 5.0 开始引入了针对具体 PowerShell 执行命令的日志记录。从 Windows 10/Windows Server 2016 开始操作系统即内置 Windows PowerShell 5.1 版本,因此支持该日志特性。


针对操作系统内置的 PowerShell 5.x 的相关审计日志配置如下图所示:


其中最重要的是启用 PowerShell Script Block Logging,如下图所示:

PowerShell Script Block Logging 可以记录所有通过 PowerShell 执行的实际代码(包括解混淆前后),无论是通过单条命令调用、或者通过脚本执行调用,包括变量转换过程等和调用脚本具体路径,均会正常记录到日志中,如下图所示,但不记录命令输出结果。如果单条记录超出日志记录限制,则会生成多条日志。相关日志记录到  Microsoft-Windows-PowerShell/Operational 日志中,启用该日志记录会产生相对较小的日志信息,建议调整该日志的存储限制到128MB。 

其次可以考虑启用 PowerShell Module Logging:

PowerShell Module Logging 可以记录所有或特定 PowerShell 模块中的具体每条命令的执行情况和部分输出结果,无论通过单条命令调用,或者通过脚本执行调用,均会正常记录到日志中,包括记录调用脚本的具体路径和实际调用参数值,但不记录变量转换过程及名称,如下图所示。如果单条记录超出日志记录限制,则会生成多条日志。相关日志记录到Microsoft-Windows-PowerShell/Operational 日志中,启用该日志记录会产生大量的日志信息,建议调整该日志的存储限制到256MB。 



3

PowerShell 7.x 相关策略配置


PowerShell 7.x(原名 PowerShell Core)是新发布的一个支持全平台操作系统的 PowerShell 版本,它与 Windows 系统内置的 PowerShell 5.x 不同,需要独立下载安装,具有完全不同的可执行程序名称("C:\Program Files\PowerShell\7\pwsh.exe"),并且可以与 PowerShell 5.x 共存。 


同样的,PowerShell 7.x 所使用的组策略配置也与 Windows PowerShell 5.x 不同,首先需要在 PowerShell 7.x 中运行以下脚本 C:\Program Files\PowerShell\7\InstallPSCorePolicyDefinitions.ps1 来安装相关组策略配置选项, 

新的 PowerShell 7.x 组策略配置选项位于以下位置: 



4

端点安全还是要靠

Microsoft Defender for Endpoint 


以上 PowerShell 的安全措施,其实都是防君子而不防小人。在没有配合的其他系统安全加固措施的情况下,对于高手而言,依然会有一些方式可以绕过相关限制并成功运行 PowerShell。因此对于端点安全或者操作系统安全而言,见效最快、性价比最高的方式就是部署我们的 EDR 系统 Microsoft Defender for Endpoint。Microsoft Defender for Endpoint 是 AI 驱动地、智能集成地下一代端点安全防护引擎,是 Gartner 和 Forrester 双加持的全球网络安全端点安全解决方案领导者。 

Microsoft Defender for Endpoint 对 PowerShell 具有非常完善的安全防护能力,例如以下警告示例,可以直接解码相关的命令执行: 


并且在结合 Microsoft Security Copilot 这个强大的安全 AI 助手时,它甚至可以直接帮您完成更加深入和完整地技术分析和调查,让您更进一步事半功倍: 


除了部署 Microsoft Defender for Endpoint 来保护端点安全之外,后续也建议通过完善而强大的微软智能集成安全解决方案来守护企业网络安全。关于微软的智能集成安全解决方案的相关概要说明可以参考以下架构图。无论是安全、身份、端点、数据、SOC 还是隐私合规,所有微软安全产品系列作为一个跨云和跨平台的智能集成综合安全解决方案协同工作,帮助客户实现统一集成的、自动化的安全防护和管理,利用全球领先地安全产品和技术,在避免冗余和重叠的同时,最大限度地发挥其现有产品的价值,同时简化包含部署成本、管理成本在内的总体拥有成本,并降低整体复杂性。 



张美波先生现任微软(中国)有限公司成就客户事业部网络安全和现代化办公架构师团队总监,并兼任网络安全首席架构师。他以“展现微软价值,守护客户安全”为己任,带领微软网络安全架构师团队主要负责微软大中型企业客户的网络安全产品技术与服务支持,推动微软网络安全产品在中国的高速增长与应用。他曾是微软全球企业服务体系级别最高的技术专家之一,在多个具有全球排名前列的 Top 超大规模环境企业客户担任微软方的基础架构/网络安全架构师和“红军/蓝军”顾问,负责相关的安全架构体系规划设计与部署实施、APT 攻击相关防范、安全运营及安全响应等。同时他在帮助和支持跨国企业(MNC)进入中国、中国企业出海发展等业务场景满足安全合规要求方面也具有非常丰富的经验。


网络安全和现代化办公架构师团队总监

微软(中国)有限公司

张美波


 1 CISO 聚焦 | 如何抵御超过99%的网络安全攻击?

 2 CISO 聚焦 | 微软云计算安全架构与最佳实践

 3 网络安全实战 | 一次“其疾如风、侵掠如火”的挖矿攻击

 4 网络安全实战 | 一次教科书式的勒索攻击 

 5 网络安全实战 | 绕过 MFA 的精巧 APT 攻击案例 

 6 CISO 聚焦 | 从软到硬,从内到外,从云到端 - 微软如何守护企业物联网安全 

 7 CISO 聚焦 | 公司靠经营,安全靠运营:Microsoft Sentinel——下一代企业现代化安全运营中心(SOC)

 8 CISO 聚焦 | AI 驱动的微软安全防护:安全不仅仅是默认的,也是可以预测的

 9 CISO 聚焦 | 关于微软自身零信任之路的十大关键问题

 10 CISO 聚焦 | 深度解密:微软自身的零信任之路

 11 CISO 聚焦 | 如何抵御超过 98% 的网络安全攻击行为

 12  CISO 聚焦 | 如何构建企业组织的网络安全韧性和数字连续性

 13 CISO 聚焦丨寒气来临,企业安全如何实现降本增效、事半功倍?

 14 CISO聚焦丨“上兵伐谋” – 定义您的现代化安全战略

# 网络安全实战

文章转载自Azure云科技,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论