4.5 凭证转储工具Mimikatz的分析与检测
Mimikatz是一种凭证转储工具,通常被攻击者、渗透测试人员和红队用来提取密码。作为一个开源项目,项目拥有者还在积极更新Mimikatz。2020年,Mimikatz还增加了几个新的功能。
1. 凭证转储工具Mimikatz的介绍
Mimikatz是一个开源的凭证转储工具,由本杰明•德尔皮(Benjamin Delpy)于2007年开发,可以用于各种Windows身份认证组件的利用。Mimikatz最初的0.1版本主要采用哈希传递攻击,但随着其应用范围的逐渐扩大,于2011年公开发布了Mimikatz 1.0版。截至本书编写时,Mimikatz仍然是攻击者在组织机构内横向移动、窃取凭证的绝佳工具之一。
有时候,攻击者会把Mimikatz二进制文件保存到C:\PerfLogs\目录中,并重命名Mimikatz二进制文件以绕过基于文件名的检测。Mimikatz可能会写入的目录C:\PerfLogs\也值得关注,这个目录曾被Ryuk等其他攻击者使用过。C:\PerfLogs\是Windows Performance Monitor(Windows性能监控器)使用的合法目录,默认情况下需要取得管理权限才能写入。一般说来,如果攻击者在企业内自由使用Mimikatz,那么一般是取得了很高的访问权限。虽然我们无法确切地了解为什么攻击者选择这个目录存储数据,但通过这个目录,防守方可以监测可疑二进制文件的执行情况,从而有可能检测到Mimikatz的利用行为。许多防守方通常会监测来自C:\Windows\Temp目录的异常事件,C:\PerfLogs\目录也需要注意。
虽然我们可以通过观察了解攻击者基于Mimikatz的一些恶意行为,但大多数检测都是根据测试确定的,包括模拟攻击框架(例如Atomic Red Team)以及进行测试的红队。尽管Mimikatz包含多个功能模块,但需要测试的功能模块并没有多少变化。sekurlsa::logonpasswords功能模块是使用率最高的,它可以提取最近在主机上登录过的账户的用户名和密码。
2. 检测:Mimikatz模块命令行参数
要检测Mimikatz的执行情况,就需要查找有哪些进程将模块名称当作了命令行参数。Mimikatz包含许多与凭证转储有关的模块,其中Sekurlsa::logonpasswords是检测Mimikatz的明显特征(如图4-9所示)。为了提高检测效率,也可以检测Mimikatz中其他模块的名称。尽管这样做可能不够全面,但这是一个很好的入手点,可以建立一个命令行参数列表用于检测。想要了解其他模块,可以关注该项目的提交历史或在Twitter上关注维护人员,以便及时了解新模块信息。和其他开源项目一样,可以修改代码特征,以便绕过检测,所以想要有效地抵挡攻击,不要只依赖一个检测点,而是要建立纵深防御体系。
图4-9 通过Mimikatz模块名称查找异常情况