gtxyzz

美国NSA发布:保留PowerShell使用和接受的安全措施

gtxyzz 安全防护 2023-01-17 371浏览 0

来自美国,新西兰和英国的网络安全当局建议正确配置和监控PowerShell,而不是完全删除或禁用PowerShell。这将从PowerShell可以启用的安全功能中受益,同时降低恶意行为者在访问受害者网络后未被发现使用它的可能性。以下建议将帮助防御者检测和防止恶意网络行为者的滥用,同时使管理员和防御者能够合法使用。 本来自国家安全局(NSA)、网络安全和基础设施安全局(CISA)、新西兰国家网络安全中心(NZNCSC)和英国国家网络安全中心(NCSC-UK)的网络安全信息表提供了有关使用PowerShell®及其安全措施的详细信息。 PowerShell®是MicrosoftWindows®中包含的脚本语言和命令行工具。与开源操作系统(例如Linux®)的Bash类似,PowerShell将用户体验作为界面扩展到操作系统中。PowerShell是在WindowsVista中引入的,®并且随着每个Windows版本的发展而发展。PowerShell可以帮助防御者管理Windows操作系统,通过以下方式:

    实现取证工作, 改进事件响应,以及 允许常见或重复性任务的自动化。

在微软的云平台Azure中®,PowerShell可以帮助管理Azure资源,允许管理员和防御者构建自动化工具和安全措施。但是,PowerShell的可扩展性,易用性和可用性也为恶意网络行为者提供了机会。许多公开承认的网络入侵,包括勒索软件参与者的网络入侵,已经使用PowerShell作为利用后工具。这种技术并不新鲜,因为恶意行为者经常会找到针对或使用合法系统软件的方法。

PowerShell的当前防御环境​

PowerShell 7.2是最新版本,但早期版本5.1包含在Windows10中。版本7.2由Microsoft进行管理和开源。在配置正确的Windows10+中,PowerShell7.2可以与为版本5.1创建的所有组件完全集成和访问,从而允许继续使用现有脚本、模块和命令。在5.0版之前的恶意PowerShell使用促使公众努力检测这些有针对性的PowerShell操作。最近的PowerShell版本(请参阅表1)包括增强的安全措施,例如以下各节中详细介绍的预防、检测和身份验证功能。作者建议在Windows10+上明确禁用并卸载已弃用的PowerShell第二版(即版本2),以防止绕过下面描述的防御措施。

减少滥用的PowerShell方法​

PowerShell中提供的内置Windows安全功能可以减少网络攻击者的滥用。作者建议在可行的情况下使用这些功能。

PowerShell远程处理期间的凭据保护​

PowerShell远程处理是一项Windows功能,它使管理员、网络安全分析师和用户能够在Windows主机上远程执行命令。WindowsRemoteManagement(WinRM)是PowerShell远程处理使用的基础协议,并使用Kerberos或NewTechnologyLANManager(NTLM)作为默认身份验证协议。这些身份验证协议不会将实际凭据发送到远程主机,从而避免了凭据的直接暴露和通过泄露的凭据被盗的风险。

PowerShell远程处理的网络保护​

远程连接可用于强大的远程管理功能,因此应适当配置终结点上的Windows防火墙规则以控制允许的连接。Windows的客户端和服务器版本包括PowerShell远程处理,默认情况下,此功能在Windows服务器上以Windows 2012 R2开头启用。默认情况下,使用PowerShell远程处理访问终结点要求请求用户帐户在目标位置具有管理权限。在专用网络上启用PowerShell远程处理将引入Windows防火墙规则以接受所有连接。权限要求和Windows防火墙规则是可自定义的,用于将连接限制为仅受信任的终结点和网络,以减少横向移动的机会。组织可以在可行的情况下实施这些规则来加强网络安全。

反恶意软件扫描接口(AMSI)集成​

反恶意软件扫描界面功能首先在Windows 10上可用,已集成到不同的Windows组件中。它支持使用在Windows注册的防病毒产品扫描内存中和动态文件内容,并公开一个接口,供应用程序扫描潜在的恶意内容。内置脚本语言(例如,PowerShell、VBScript和JScript®)使用AMSI,以便通过注册和支持的防病毒软件扫描脚本。此功能需要AMSI感知防病毒产品,如WindowsDefender、McAfee和Symantec。

具有应用程序控制的受约束的PowerShell​

将AppLocker或Windows Defender应用程序控制(WDAC)配置为阻止Windows主机上的操作将导致PowerShell在受限语言模式(CLM)下运行,从而限制PowerShell操作,除非管理员定义的策略允许。此功能纠正了AppLocker脚本强制的缺点,该缺陷阻止脚本中的PowerShell命令,但允许以交互方式将相同的命令输入到PowerShell命令控制台中。在Windows10+上正确配置WDAC或AppLocker有助于防止恶意执行组件获得对PowerShell会话和主机的完全控制。通过控制脚本和模块的来源和执行,可以提高组织内的安全要求和代码签名管道。签名要求也可以通过PowerShell的安全功能(称为执行策略)强制执行。但是,执行策略不会限制所有PowerShell内容的执行。

用于检测滥用的PowerShell方法​

PowerShell活动的日志记录可以记录网络威胁何时利用PowerShell,并且持续监视PowerShell日志可以检测潜在的滥用行为并发出警报。默认情况下,深度脚本块日志记录、模块日志记录和肩过传听处于禁用状态。作者建议在可行的情况下启用这些功能。

深度脚本块日志记录(DSBL)和模块日志记录​

深度脚本块日志记录在Windows事件日志中记录每个PowerShell命令,从而在集中式存储和分析平台上启用其他分析。DSBL甚至记录隐藏的恶意PowerShell活动和执行的命令,如命令调用和部分脚本。同样,模块日志记录捕获PowerShell的管道执行详细信息,目标是记录PowerShell操作。虽然可能不会记录完整的详细信息和输出,但这些模块日志和事件日志可防止PowerShell命令被防御者遮盖(例如,混淆或加密)。

肩过肩(OTS)转录

记录在PowerShell5中执行的所有活动的功能可以应用于Windows7及更高版本,以实现即时记录保存和受限安全跟踪。OTS记录每个PowerShell输入和输出,无论是否有效,以使防御者能够破译预期的行动。PowerShell 5.0扩展了转录范围,可通过组策略进行企业范围的配置。

提供身份验证的PowerShell过程​

PowerShell中的多种身份验证方法允许在非Windows设备上使用。

通过SSH进行远程处理​

PowerShell 7除了支持WinRM连接外,还允许通过安全外壳(SSH)进行远程连接。这允许公钥身份验证,并通过PowerShell对计算机进行远程管理,方便且安全。PowerShell中新的SSH远程处理功能可以建立远程连接,而无需使用超文本传输协议安全(HTTPS)和安全套接字层/传输层安全性(SSL/TLS)证书。PowerShell over SSH不需要受信任的主机,因为在域外部通过Win RM进行远程处理时。这允许通过SSH进行安全的远程管理,而无需所有命令和连接的密码,并启用Windows和Linux主机之间的PowerShell远程处理。

PowerShell版本和安全功能可用性

下表列出了使用特定版本的PowerShell时可用的功能: 表1:每个版本和操作系统的可用PowerShell功能

PowerShellVersion(v) OperatingSystem AMSI CLM CLMwithAppLocker andWDAC DSBL Over-the-Shoulder Transcription ModuleLogging SSH Remoting
v3 Windows 8
v4 Windows 8.1
v5 Windows 10
v5 Windows 11
v7 Windows 10
v7 Windows 11
v7 Linux

结论​

PowerShell对于保护Windows操作系统至关重要,特别是因为较新的版本通过更新和增强功能解决了以前的限制和问题。删除或不当限制PowerShell将阻止管理员和防御者利用PowerShell来协助系统维护、取证、自动化和安全性。PowerShell及其管理能力和安全措施应该得到妥善管理和采用。

继续浏览有关 安全 的文章
发表评论