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小时倒退。

示例(推荐):

Invoke-DetectPTH -TargetComputers "MARS-7" -LogFile "C:\tmp\log.txt"

例:

Invoke-DetectPTH -TargetComputers "ComputerName" -StartTime ([datetime]"2017-12-14 12:50:00 PM") -LogFile "C:\tmp\log.txt" -UseKerberosCheck -UseNewCredentialsCheck

调试

因为它使用线程,所以不能调试主函数的脚本块。解决方法可以通过在Detect-PTHMultithreaded之前使用Invoke-Command:
Invoke-Command -ScriptBlock $detectPTHScriptBlock -ArgumentList $TargetComputers, $startTime, $LogFile, $UseKerberosCheck, $UseNewCredentialsCheck, $MaxHoursOfLegitLogonPriorToNTLMEvent

只检测一台目标计算机:
Invoke-DetectPTH -TargetComputers "" ...

更改$TargetComputer要[string]代替[array]。这样就可以在主函数的脚本块中使用断点。


文章转载请注明出处:https://www.freearoot.com/index.php/ketshash.html

文章来源:https://github.com/cyberark/ketshash