MENU

解析Mimikatz日志文件

October 16, 2016 • Security

概述

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

 - Username :
 - Domain :
 - Password :

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

位置

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

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

用法

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

4.png

数据库

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

5.png

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

示例

填充数据库

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

$ 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中:

sqlite3 /tmp/tmpyIJeAn.20161011103852.mimikatz.db
SQLite version 3.14.1 2016-08-11 18:53:32
Enter ".help" for usage hints.
sqlite> 

可以列出所有用户凭据:

sqlite> select * from view_usercreds;

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

sqlite> .once /tmp/credentials.txt
sqlite> select distinct username||':'||password from view_usercreds;

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

sqlite> select distinct domain||'\'||username||':'||password from view_usercreds;

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

sqlite> select password,count(username) from view_usercreds group by password;
Archives QR Code
QR Code for this page
Tipping QR Code