猫头鹰
信安舆情早知道

解析Mimikatz日志文件

概述

在内网渗透和模拟攻击中,Mimikatz(或其衍生物)通常是标准工具包的一部分。它具有很强大的功能,其中最亮的功能是直接从 lsass.exe 进程里获取windows处于active状态账号的明文密码。它通常以以下形式显示输出:

  • Username :
  • Domain :
  • Password :

虽然一些工具将解析这个输出,但在有些情况下,能够解析多个文件很有用,也可能包括mimikatz的输出,也许与其他输出交错。示例包括当使用一个LSASS内存dump取文件或者分析来自一系列RAT以及shells原始输出时Mimikatz的输出,这可能不包括内置Mimikatz解析功能。我对这个问题的解决方案是编写一个相对快速的工具,它使用正则表达式从流输入定位有趣的mimikatz输出,并将其插入SQLite数据库。这是具有能够快速检索的优势,与其他参考材料(例如ADOffline的帖子,这可以允许你通过访问的组/访问级别快速关联受损凭证),或以其他简单格式导出。

位置

获取源代码:https://github.com/stufus/parse-mimikatz-log,或者通过克隆git存储库。

git clone https://github.com/stufus/parse-mimikatz-log.git

用法

这是一个命令行工具,它接受两个选项,每一个都需要一个参数:

选项 说明
-d 指定要使用的数据库文件。
如果存在,则假设模式是正确的。
如果它不存在,它将被创建。
如果未指定此参数,将创建一个临时文件。
-i 要使用的mimikatz输出文件。
如果 – 作为参数传递给它,将使用STDIN。

数据库

数据库只有一个table – creds-存储已导入的证书。

内容 说明
domain 凭据所关联的域。
这是从日志文件的“* Domain:”部分捕获的。
username 用户名,从日志文件的“* Username:”部分捕获。 这始终是日志文件中显示的凭据块的第一部分。
password 已恢复的明文口令,从凭据块的“* Password:”部分捕获。
ntlm 已恢复的NTLM散列,从凭证块的’* NTLM:’部分捕获。
sha1 已恢复的SHA1散列,从凭证块的“* SHA1:”部分捕获。

还有一个视图(查看用户凭据),其中包含用户名,域和密码并排除所有用户名后面有$的(这将指定一个计算机帐户)。

Example

填充数据库

一个选项是使用命令来捕获整个日志文件到屏幕以及从标准输入读取:

$ find ./ -name \*.log -exec cat {} \; | pml.py -d /tmp/passwords.db -i -

       .mMMMMMm.             MMm    M   WW   W   WW   RRRRR
      mMMMMMMMMMMM.           MM   MM    W   W   W    R   R
     /MMMM-    -MM.           MM   MM    W   W   W    R   R
    /MMM.    _  \/  ^         M M M M     W W W W     RRRR
    |M.    aRRr    /W|        M M M M     W W W W     R  R
    \/  .. ^^^   wWWW|        M  M  M      W   W      R   R
       /WW\.  .wWWWW/         M  M  M      W   W      R    R
       |WWWWWWWWWWW/
         .WWWWWW.           Quick & Dirty Mimikatz Log Parser
                        stuart.morgan@mwrinfosecurity.com | @ukstufus

Opening database: /tmp/passwords.db
Reading from STDIN
  Processing line 236676/236676 (100%)

        Sets of credentials: 949
    Unique 'user' usernames: 355
    Unique 'user' passwords: 278

另一种选择是找到所有的日志文件,并单独运行每个日志文件:

find ./ -name \*.log -exec ./pml.py -d /tmp/passwords.db -i {} \;

提取凭据

数据库需要加载到SQLite中:

b2f5

可以列出所有用户凭据:

d804

凭据可以以username:password格式(’||’是SQLite中的并列运算符,’.once’将输出写入文件)导出:

9180

凭据也可以使用与上述相同的技术以DOMAIN \ username:password格式导出:

e114

共享相同密码的用户的数量可以通过诸如以下的查询找到,其将显示每个密码和具有该密码的用户的数量:

9bcb

*原文:mwrinfosecurity MottoIN翻译发布

转载请注明来自MottoIN,未经允许不得转载!MottoIN » 解析Mimikatz日志文件

分享到:更多 ()

评论 1

评论前必须登录!

 

MottoIN 换一个角度看安全

寻求报道联系我们