内网渗透基础之Windows中获取用户凭据
2021-12-18 17:8:23 Author: mp.weixin.qq.com(查看原文) 阅读量:22 收藏

0x01 前置知识

    1、什么是SAM文件?

    Windows对用户账户的安全管理使用了安全账号管理器(Security Account Manager,简称SAM)的机制。

    SAM文件即账号密码数据库文件。当我们登录系统的时候,系统会自动地和Config中的SAM自动校对,如发现此次密码和用户名都与SAM文件中的加密数据符合时,你就会顺利登录;如果错误则无法登录。登陆Windows系统后SAM是被锁死的,不能复制、移动,打开是乱码或空白。SAM数据库中包含所有组、账户的信息,包括密码的HASH、账户的SID等。

    Windows的用户HASH一般是存储在C:\windows\system32\config\SAM文件中(域控存在NTDS.dit文件中),只不过,就算是管理员权限,也是无法正常打开并读取文件内容,因此一般无法直接通过SAM文件获取用户HASH

    2、什么是用户hash?

    Windows操作系统中的密码一般由两部分组成:一部分为LM HASH,另一部分为NTLM HASH。在Windows中,HASH的结构通常如下:

用户名:RID:LM-HASH:NT-HASH

    需要注意的是:

  • 自Windows Vista和Windows Server 2008开始,Windows取消LM HASH

  • 当系统为Windows 7以上或Windows Server 2012R2以上时,默认在内存缓存中禁止保存明文密码,原因是微软在之后的系统安装了KB2871997补丁,所以只能抓到用户的HASH

    3、什么是lsass.exe?

    lsass.exe是一个系统进程,用于本地安全认证。在本地认证的流程中,作为本地安全权限服务进程lsass.exe也会把用户凭据缓存在内存中,所以我们同样可以以lsass.exe进程为目标,dump出来已登录用户的HASH

0x02 通过SAM文件获取用户HASH

    1、通过注册表导出SAM文件拖到本地进行破解

    以下命令可从注册表提取SAM文件,需要本地管理员bypassUAC权限。

reg save HKLM\SYSTEM system.hivreg save HKLM\SAM sam.hiv

    通过CS执行命令

    将导出的两个文件下载到本地,通过本地mimikatz对其进行解密(这里mimikatz并不需要开启debug)

    2、通过mimikatz对SAM文件直接进行破解

    首先在目标机器上传mimikatz,在CS中执行以下命令(需要本地管理员bypassUAC权限):

shell mimikatz.exe "token::elevate" "lsadump::sam" "exit"> password.txt

    如果没有bypassUAC权限,即使加上了“privilege::debug”也是不行的。

    (注:这里开始使用的是CS自带的mimikatz,但是发现无法导出获取的结果)

    可以看到已经导出了密码。

0x03 通过dump lsass.exe进程获取用户hash

    1、通过mimikatz来对lsass.exe进行dump

    CS中直接执行logonpasswords命令,没啥可讲的。

    2、通过procdump来对lsass.exe进行dump

    procdump已经被玩坏了,现在基本也是比较鸡肋的一种方式了。

    使用以下命令来dump:

procdump.exe -accepteula -ma lsass.exe lsass.dmp

    在相同系统版本下使用mimikatz进行读取:

mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" exit

    3、使用sqldumper.exe来对lsass进行dump

    sqldumper是sqlserver自带的工具存在于SQL Server文件夹中,大多数杀软不会拦截。默认存放在C:\Program Files\Microsoft SQL Server\number\Sharednumber代表SQL Server的版本。如果目标机器没有安装SQL Server,可以自己上传SqlDumper.exe。

    使用命令如下:

tasklist /svc | findstr lsass.exe  #查看lsass.exe 的PID号Sqldumper.exe PID号 0 0x01100  #导出mdmp文件

    这里我的lsass.exe进程PID号为992

    使用相同系统的mimikatz进行解密

mimikatz.exe "sekurlsa::minidump SQLDmpr0001.mdmp" "sekurlsa::logonPasswords full" exit


文章来源: https://mp.weixin.qq.com/s?__biz=MzU3MTU3NDk4Mw==&mid=2247484913&idx=1&sn=dca253a6f4d5684ae3a191f1586edb10&chksm=fcdf5a59cba8d34fa318f80ee302742f01822b3e329f6c6d68f3c864e5e56b917e21a4150d20&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh