Ketshash
一个基于事件查看器日志检测可疑特权NTLM连接的小工具,特别是Pass-the-Hash攻击。
该工具作为“通过哈希检测”研究的一部分发布 - 关于“通过哈希检测”的更多细节位于博客文章中:https://www.cyberark.com/threat-research-blog /检出通最散列与-窗口事件观看者
完整的研究可以在白皮书中找到:
https://www.cyberark.com/resource/pass-hash-detection-using-windows-events/
演示
https://fast.wistia.com/embed/iframe/e9px19i61p
要求拥有以下权限的帐户:
访问远程机器的安全事件日志
ActiveDirectory读取权限(标准域帐户)
电脑同步同步,否则会影响结果
最小的PowerShell 2.0
概观Ketshash是基于以下信息检测可疑特权NTLM连接的工具:
受监控计算机上的安全事件日志(登录事件)
来自Active Directory的身份验证事件
用法
有两个选项:
基本用法
打开PowerShell并运行:
Import-Module .\Ketshash.ps1 或将Ketshash.ps1内容复制并粘贴到PowerShell会话中
Invoke-DetectPTH
Ketshash Runner
确保Ketshash.ps1位于KetshashRunner.exe的相同目录中
双击KetshashRunner.exe,如果需要更改设置,然后按运行
调用-DetectPTH
参数:
TargetComputers - 要检测NTLM连接的目标计算机的数组。
TargetComputersFile - 用目标计算机列表检索NTLM连接的路径。
开始时间 -检测启动时的时间。默认值是当前时间。
使用KerberosCheck - 检查组织中的DC上的TGT \ TGS登录。默认是搜索源机器上的合法登录。无论如何,有或没有这个开关仍然有源机器上的事件ID 4648查询。
UseNewCredentialsCheck - 检查登录类型为9的登录事件(如Mimikatz)。这是可选的,默认算法已经覆盖它。它只是为了显示另一个选项来检测可疑的NTLM连接。在Windows 10和Server 2016上,应在事件查看器中启用“Microsoft-Windows-LSA / Operational”。在Windows 10和Server 2016上,启用“内核对象审计”将提供更准确的信息,例如写入LSASS。
LogFile - 记录文件路径以保存结果。
MaxHoursOfLegitLogonPriorToNTLMEvent - 从NTLM事件的时间开始向后查看并搜索合法登录的时间。默认值是2小时倒退。
示例(推荐):
例:
调试
因为它使用线程,所以不能调试主函数的脚本块。解决方法可以通过在Detect-PTHMultithreaded之前使用Invoke-Command:
Invoke-Command -ScriptBlock $detectPTHScriptBlock -ArgumentList $TargetComputers, $startTime, $LogFile, $UseKerberosCheck, $UseNewCredentialsCheck, $MaxHoursOfLegitLogonPriorToNTLMEvent
只检测一台目标计算机:
Invoke-DetectPTH -TargetComputers "" ...
更改$TargetComputer要[string]代替[array]。这样就可以在主函数的脚本块中使用断点。
领取专属 10元无门槛券
私享最新 技术干货