安全控制枚举
虽然如何绕过常见的安全控制不是本章的内容,但是作为进攻击者方,我们必须知道企业都部署了哪些安全控制措施,知己知彼,做足准备。以下的一些命令如今,我们会在后续的章节做详细解释,如果学员可以使用 SeatBelt、WinPEAS、SharpUp 等工具协助我们现在感到有些困惑是没有问题的。需要注意的是,以下枚举主机部署的安全控制措施基本都可以使用工具SeatBelt (https://github.com/GhostPack/Seatbelt) 来进行枚举,但是考虑到无论是让我们要知道这些工具落地还又是执行过程中都会有OPSEC的问题,因此手动怎么样帮助我们枚举也很重要。以下是一出这些常见安全控制措施的枚举方法,这不是一个穷尽存在的列表。
AV/EDR 杀毒软件以及AMSI EDR/XDR/MDR
在如今企业环境里,主机基本都配备了 EDR/XDR/MDR,连AV都很少见了MDR 产品,这类产品的检测能力远比杀毒软件强大。与其说去枚举即便是没有额外安装杀毒软件的主机,不如默认它们已经存在也自带防护效果良好的 Windows Defender。而且考虑到 AV/EDR厂EDR 厂商众多,枚举方法也各不一样。但总的来说,我们可以通过查看进程名、文件以及\文件夹等方法来确认特定 AV/EDR产EDR 产品的存在。而AMSI,
AMSI,是用于扫描内存中恶意代码的接口,目前只并不是所有少数厂商的产品杀毒软件都支持AMSI, AMSI 借口,我们可以通过powershell代码 PowerShell字符串 'amsiutils'Invoke-Mimikatz' 来确认其存在。
UAC
UAC的定义我们在之前已经说的小节里讨论过了 UAC 以及绕过手段,并且UAC在UAC 在多数时候都是默认启用的,我们可以通过powershell命 PowerShell命令 (Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System).EnableLUA 来确认。
(Get-ItemProperty HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System).EnableLUA
AppLocker
AppLocker,即WDAC,可以对可执行文件、安装包文件、脚本文件、包裹文件、甚至DLL文 DLL 文件加以限制,在非白名单的情况下我们无法执行对应类型的可执行文件、脚本等。我们可以通过Powershell命 Powershell 命令 Get-ChildItem -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\SrpV2\ExeExe\ 来查询启用状态。
Get-ChildItem -Path HKLM:\SOFTWARE\Policies\Microsoft\Windows\SrpV2\Exe\
约束语言模式 CLM
CLM,即约束语言模式,实际上属于 AppLocker,只是针对一些脚本语言的。如果CLM启 CLM 启用的话,一些脚本语言例如Powershell的 Powershell 的使用会被限制,只有白名单里的脚本才不会被影响。CLM带CLM 带来最直接的影响就是限制了对 .NET框架的调用、执行C#代 C# 代码以及反射。我们可以通过Powershell代码 Powershell 命令 $ExecutionContext.SessionState.LanguageMode 来检查语言状态。
$ExecutionContext.SessionState.LanguageMode
LAPS
LAPS是微软推出的对主机本地管理员密码的管理方案,它可以使得本地管理员的密码随机、不同、且自动轮换。除了使用工具来枚举,文件夹LAPS或 LAPS 或者文件AdmPwd的 AdmPwd 的存在可以说明LAPS的 LAPS 的启用。
RunAsPPL
RunAsPPL提RunAsPPL 提供了对凭证进程的驱动级保护,即便是 SYSTEM 权限下,也无法获得目标进程的句柄。如果PPL被进程 lsass.exe 以 PPL 启用的话,默认情况下mimikatz无 mimikatz 无法提取凭证了。对于系统管理员来说,启用PPL可以花费很小的力气就达成不错的凭证防盗效果。我们可以通过powershell PowerShell 命令 Get-ItemProperty -Path
HKLM:\SYSTEM\CurrentControlSet\Control\Lsa -Name "RunAsPPL" 来查询PPL的启用状态。
Get-ItemProperty -Path
HKLM:\SYSTEM\CurrentControlSet\Control\Lsa -Name "RunAsPPL"