内网后渗透攻击过程(实验环境)--4、权限维持(3)
用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技术操作,可能对目标系统造成数据损坏、服务中断等风险。读者需充分评估技术能力与潜在后果,在合法合规前提下谨慎实践。
这次我们讲述第三个权限维持技术,域控制器权限持久化以及防范。
在我以前的文章中,我也讲述了内网渗透的重要一步,权限提升内网后渗透攻击过程(实验环境)--2、权限提升_域用户无法显示delegation token-CSDN博客
假设通过一系列的操作成功获得域控制器权限
1、域控制器权限持久化以及防范
定义: 指攻击者在获得Active Directory域管理员权限后,在域控制器或Active Directory数据库层面植入的机制,确保即使初始入侵点被清除、管理员密码被更改,攻击者仍能快速恢复对整个域的控制权。这些技术通常影响整个域环境。接下来就是讲述几个常见的域控制器权限持久化的方法
1)DSRM域后门
简述:DSRM(Directory Services Restore Mode,目录服务恢复模式)是 Windows Server 域控制器的一种特殊启动模式,主要用于 Active Directory(AD)数据库损坏、误操作等场景下的修复或还原。而 “DSRM 域后门” 则是攻击者利用 DSRM 机制的特性,通过篡改配置或同步密码等方式,实现对域控制器的持久化、隐蔽性控制的技术手段。
DSRM 域后门的本质是打破 “DSRM 账户仅在 DSRM 模式可用” 的限制,让攻击者能在正常模式下使用 DSRM 账户登录域控制器,从而实现持久化控制。其核心思路有两个:
篡改 DSRM 登录行为配置
Windows 通过注册表项DSRMAdminLogonBehavior
控制 DSRM 账户在正常模式下的登录权限,该键值位于:
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\DSRMAdminLogonBehavior
2. 同步 DSRM 账户与域管理员密码哈希
DSRM 账户的密码哈希存储在本地 SAM 数据库,而域管理员密码哈希存储在 AD 数据库。攻击者可通过工具将域管理员的密码哈希同步到 DSRM 账户,使两者密码一致(或保持 DSRM 密码不变)。
修改DSRM密码的方法
利用ntdsutil
工具(域控制器自带)可将指定域账户的密码哈希同步到 DSRM 账户,实现密码 “绑定”:
# 1. 打开命令行,输入ntdsutil进入交互模式
ntdsutil# 2. 进入DSRM密码设置模块
set dsrm password# 3. 同步指定域管理员账户的密码哈希到DSRM账户(需当前账户有管理员权限)
sync from domain account [域管理员用户名] # 例如:sync from domain account admin# 4. 退出
quit
quit
执行后,DSRM 账户的密码哈希将与指定域管理员一致,后续即使域管理员密码修改,DSRM 密码仍保持同步时的状态(除非再次同步)。
DSRM域后门的方法
1)使用mimikatz查看本地管理员的ntlm hash
2)将DSRM账号与Administrator的ntlm hash同步
NTDSUTIL
SET DSRM PASSWORD
SYNC FROM DOMAIN account Administrator
4)查看DSRM的NTLM Hash是否同步
5)修改DSRM的登陆方式
注册表路径:
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\DSRMAdminLogonBehavior
键值含义:
- 0(默认值):仅允许在 DSRM 模式下登录,正常模式无法使用 DSRM 账户。
- 1:允许在正常模式下通过本地控制台登录,但需先停止 Active Directory 服务(
net stop ntds
)。 - 2:允许在正常模式下通过远程方式(如 RDP、PowerShell 远程)直接登录,无需停止服务。
我们要通过DSRM账号通过网络登录域控制,所以需要将值设为2,命令如下
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v DSRMAdminLogonBehavior /t REG_DWORD /d 2 /f
6)使用DSRM账号通过网络远程登录域控制器
7)使用mimikatz的dcysnc功能远程转储Administrator的ntlm hash
lsadump::dcsync /domain:hack.com /dc:dc /user:Administrator
DSRM域后门的防御措施
默认情况下,DSRM 账号仅能在域控制器启动至 “目录服务恢复模式” 时使用。攻击者常通过修改注册表,允许 DSRM 账号在正常模式下登录域控制器(即 “DSRM 后门” 的核心手段),因此需严格限制其使用场景。
-
禁用 DSRM 账号的 “被禁用后仍可登录” 特性
- 攻击者可能修改注册表项
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\fAllowToBeDisabled
(REG_DWORD),使其值为1
(允许 DSRM 账号被禁用后仍能登录)。 - 安全值:
0
(默认值,禁用此特性),需定期检查并确保未被篡改。
- 攻击者可能修改注册表项
- 定期修改域中所有域控制器的DSRM账号
- 经常检查ID为4794的日志。
2)SSP维持域控权限
简介:在域渗透中,SSP(Security Support Provider,安全支持提供程序) 是 Windows 系统中负责处理身份验证、凭证管理、会话安全等核心安全功能的模块。攻击者可通过植入恶意 SSP,实现对域控(Domain Controller)权限的长期维持,核心原理是记录或劫持系统中的敏感凭证(如明文密码、NTLM 哈希等),从而持续获取域内权限。
原理:SSP 与系统凭证流程
Windows 的身份验证流程依赖于LSA(Local Security Authority,本地安全机构),而 SSP 是 LSA 的关键组件(如默认的msv1_0.dll
负责 NTLM 验证、kerberos.dll
负责 Kerberos 验证)。所有凭证的生成、验证、存储过程都会经过 SSP 模块。
若攻击者将恶意 SSP DLL注入到 LSA 进程(lsass.exe
)中,该 DLL 会被系统加载并参与凭证处理流程,从而实现:
- 记录用户登录时的明文密码、NTLM 哈希、Kerberos 票据等;
- 甚至修改凭证验证逻辑,劫持合法用户的身份。
通过以下步骤利用 SSP 维持域控权限:
1. 准备恶意 SSP DLL
最典型的恶意 SSP 是 Mimikatz 中的memssp.dll
(内存 SSP),其功能是记录所有经过 LSA 的明文密码和 NTLM 哈希,并写入日志文件。
- 生成方式:通过 Mimikatz 的
memssp
模块编译生成(或直接使用现成的memssp.dll
)。
2. 加载恶意 SSP 到域控的 LSA 中
要让系统加载恶意 SSP,需修改注册表中 LSA 加载 SSP 的配置,具体路径为:
HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Security Packages
该注册表项存储了系统默认加载的 SSP DLL 列表(如msv1_0
、kerberos
等)。攻击者需将恶意 SSP 的文件名(不含路径)添加到该列表中,例如:
- 原列表值:
msv1_0
、kerberos
、wdigest
- 修改后:
msv1_0
、kerberos
、wdigest
、memssp
3. 生效与凭证记录
- 加载时机:修改注册表后,重启域控(或重启
lsass.exe
,但lsass.exe
是关键进程,强制重启可能导致系统崩溃,通常选择重启系统),系统会自动从%SystemRoot%\system32\
目录加载memssp.dll
(需将恶意 DLL 提前放入该目录)。 - 凭证记录:加载后,
memssp.dll
会在%SystemRoot%\system32\mimikatz.log
中记录所有登录事件的凭证(如用户远程登录、服务启动、任务计划执行等场景的密码 / 哈希)。
接下来使用mimikatz来伪造SSP并注入内存
privilege::debug
misc::memssp
然后注销当前用户。输入用户名和密码后重新登录,获取明文密码。密码存储在日志文件C:\\Windows\System32\mimilsa.log
这是一次性的,也就是说当域控制器重启时无法再次使用
还有一种持久性的方法,将mimikatz中的mimilib.dll放到系统的C:\\Windows\System32的目录下,将mimikib.dll添加到注册表中即可持久。
先将mimikatz中的mimilib.dll文件复制到C:\\Windows\System32的目录下
然后修改HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\Authentication Packages项,加载新的DLL文件,如图所示
然后系统重启,登录时输入账号和密码明文会被记录在C:\\windows\system32\kiwissp.log
SSP维持域控权限的防御措施
-
注册表变更
- 使用工具(如 Sysinternals Process Monitor)监控
Authentication Packages
和Security Packages
注册表项的修改。 - 定期检查注册表值,识别非微软官方的 SSP 名称(如
memssp
、evilsssp
等)。
- 使用工具(如 Sysinternals Process Monitor)监控
-
system32 目录异常 DLL
- 使用文件完整性检查工具(如微软的 SFC 命令)扫描
%SystemRoot%\system32\
目录,识别未签名或异常的 DLL。
- 使用文件完整性检查工具(如微软的 SFC 命令)扫描
-
LSA 保护机制
- 启用 LSA Protection(LSASS 保护):
此设置会将 LSASS 进程置于受保护模式,阻止未授权的 DLL 注入。# 通过 PowerShell 启用 LSA 保护 Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Lsa" -Name "RunAsPPL" -Value 1 -Type DWord
- 启用 LSA Protection(LSASS 保护):
3)SID History域后门
简介:“SID History”(安全标识符历史)是 Windows 活动目录(AD)中的一个属性,主要用于域迁移场景 —— 当用户、组或计算机从一个域迁移到另一个域时,保留其原域的 SID,确保迁移后仍能访问原域的资源(因为访问控制列表 ACL 依赖 SID 识别权限)。
然而,这一机制可能被攻击者滥用,形成 “SID History 域后门”,即通过修改低权限账号的 SID History 属性,注入高权限账号(如域管理员)的 SID,使低权限账号继承高权限,从而长期控制域环境。
原理:Windows 权限检查时,不仅会验证账号自身的 SID,还会检查其 SID History 中包含的所有 SID。若低权限账号的 SID History 中存在域管理员的 SID,该账号将被识别为 “域管理员”,拥有对应的所有权限。
即使高权限账号(如原域管理员)被删除或密码修改,只要低权限账号的 SID History 中仍保留其 SID,后门依然有效(因为 SID 是唯一且不可更改的,删除账号后 SID 不会被重用)。
攻击步骤:
-
获取高权限 SID:通过
whoami /all
或 AD 查询工具(如Get-ADUser
)获取域管理员的 SID(格式如S-1-5-21-xxx-xxx-xxx-500
)。 -
修改低权限账号的 SID History:使用工具(如 Mimikatz)向目标低权限账号注入高权限 SID。
示例(Mimikatz 命令):# 加载模块并修补LSASS(绕过限制) mimikatz # privilege::debug mimikatz # sid::patch # 向账号"backdoor"的SID History中添加域管理员的SID mimikatz # sid::add /sam:backdoor /new:S-1-5-21-xxx-xxx-xxx-500
-
验证权限:使用修改后的账号登录,通过
whoami /groups
确认已获得高权限。
先查看高权限 SID
然后使用mimikatz进行注入,命令在上面已有
然后能够进行登录并且使用相关权限即为成功。
SID History域后门的防御措施
-
监控 SID History 修改:
# 启用审计策略 auditpol /set /subcategory:"Directory Service Changes" /success:enable# 检测异常SID History修改 Get-WinEvent -FilterHashtable @{LogName='Security';Id=4765} | Where {$_.Message -notlike "*Migration*"}
-
限制 SID History 权限:
通过 ADSI Edit 修改ntds.dit
的 ACL,禁止非必要账号修改sidHistory
属性。
4)Golden Ticket
简介:黄金票据(Golden Ticket)是利用 Kerberos 协议漏洞构建的一种持久化域后门技术,通过伪造票据授予票据(TGT,Ticket-Granting Ticket),实现对域内资源的长期、高权限访问。由于其无需与域控制器(DC)实时交互即可生成有效票据,且隐蔽性极强,是渗透测试中常用的域持久化手段。
生成黄金票据的必要条件
要生成黄金票据,需提前收集以下信息:
- 域名称(如
hack.com
); - 域 SID(如
S-1-5-21-4088468992-3050488396-4187551528
,可通过whoami /user
获取); - KRBTGT 账户的 NTLM 哈希或 AES 密钥(这是核心,需通过域管理员权限从 DC 的
ntds.dit
或内存中提取); - 目标用户名(通常伪造为高权限用户,如
Administrator
或Domain Admins
组用户); - 票据有效期(默认 10 年,可自定义)。
使用 Mimikatz 生成黄金票据
1. 收集必要信息
- 获取域 SID:
whoami /user # 输出格式:S-1-5-21-xxx-xxx-xxx-1104,去掉最后一段(-1104)即为域SID
- 获取 域用户的 NTLM 哈希:
(需域管理员权限,从 DC 的ntds.dit
提取,或通过 Mimikatz 从内存读取)mimikatz # lsadump::dcsync /domain:hack.com /user:krbtgt # 从DC同步KRBTGT信息
2. 生成黄金票据
使用kerberos::golden
命令生成.kirbi
格式票据:
mimikatz #kerberos::golden /admin:Administrator /domain:hack.com sid: S-1-5-21-4088468992-3050488396-4187551528 /krbtgt:f2f3244d7563afc3ee1e521e90cb4337 /ticket:Administrator.kiribi
- 参数说明:
/domain
:域名称(如hack.com
);/sid
:域 SID(不含用户 ID 的部分);/krbtgt
:KRBTGT 账户的 NTLM 哈希或 AES 密钥;/user
:伪造的用户名(如Administrator
);/ticket
:生成的票据保存路径。
3. 加载并使用黄金票据
通过kerberos::ptt
(Pass The Ticket)加载票据,获取访问权限:
mimikatz # kerberos::ptt Administrator.kirbi # 加载票据到内存
mimikatz # misc::cmd # 打开新CMD窗口,使用伪造的票据访问域资源
在krbtgt用户下访问c盘,成功说明伪造成功
使用krbtgt的AES-256值生成的票据并注入内存,也可以伪造用户,只需要将ntlm hash换成AES-256即可,这里不再展示。
Golden Ticket攻击的防御措施
-
定期更换 KRBTGT 密码(核心防御手段):
- 需两次更换(第一次更换后,旧哈希失效,新哈希生效;第二次更换确保所有旧票据失效);
- 操作步骤:通过 ADUC(Active Directory 用户和计算机)找到
KRBTGT
账户,重置密码(两次间隔 24 小时以上)。
-
监控 Kerberos 异常活动:
- 启用审计策略:开启 “Kerberos 服务票证请求”(事件 ID 4769)和 “Kerberos TGT 请求”(事件 ID 4768)审计;
- 检测异常:
- 票据有效期超过默认值(如超过 10 小时);
- 来自非 DC 主机的高权限 TGT 请求;
- 频繁使用
Administrator
等特权用户的票据。
5)Silver Ticket
白银票据(Silver Ticket)是另一种基于 Kerberos 协议的域持久化技术,与黄金票据(Golden Ticket)的核心区别在于:白银票据伪造的是 “服务票据(ST,Service Ticket)”,而非黄金票据伪造的 “票据授予票据(TGT)”。它仅针对特定服务(如文件共享、HTTP、SQL 等)授予权限,权限范围更局限,但隐蔽性更强,且获取条件相对宽松。
白银票据的原理
在 Kerberos 认证流程中,用户获取 TGT 后,会向 KDC 的票据授予服务(TGS)请求 “服务票据(ST)”,用于访问特定服务(如访问 DC 的 CIFS 文件共享服务)。ST 由目标服务对应的服务账户(如DC01$
计算机账户,或IISService
应用账户)的密钥签发,且仅对该服务有效。
白银票据的核心是直接伪造 ST:利用目标服务账户的 NTLM 哈希(或 AES 密钥),跳过 KDC 的 TGS 流程,直接生成一个 “合法” 的 ST。由于 ST 的验证仅依赖服务账户的密钥,因此只要该服务账户的哈希未变,伪造的 ST 就始终有效,且无需与域控制器(DC)交互,隐蔽性极高。
生成白银票据的必要条件
白银票据的适用场景是 “仅需访问特定服务”(而非控制整个域),因此所需信息与黄金票据不同,更易获取:
- 目标服务的 SPN(服务主体名称)(如
cifs/DC01.hack.com
,用于标识服务的唯一名称); - 服务账户的 NTLM 哈希或 AES 密钥(服务运行所依赖的账户,如计算机账户
DC01$
或用户账户IISAdmin
); - 域 SID(可通过
whoami /user
获取,格式同上); - 伪造的用户名(通常为高权限用户,如
Administrator
); - 服务类型(如
cifs
对应文件共享、http
对应 Web 服务、mssql
对应 SQL Server 等)。
使用 Mimikatz 生成银票据
1. 收集必要信息
-
获取服务账户的 NTLM 哈希:
(需对服务账户有一定权限,例如通过lsadump::dcsync
提取计算机账户哈希,或从服务内存中读取)# 提取DC01$计算机账户的哈希(假设目标服务是DC01的CIFS服务,依赖DC01$账户) mimikatz # privilege::debug mimikatz # seturlsa::logonpasswords
-
-
生成票据:
kerberos::golden /domain:hack.com /sid:S-1-5-21-4088468992-3050488396-4187551528 /domain:hack.com /target:dc.hack.com /service:cifs /rc4:ee884c60a8b2fb9c096dc4a344216793 /user:dm /ptt
再次验证权限,在使用mimikatz生成票据之前,都要使用命令klist purge进行票据删除
成功访问,伪造成功
白银票据的特点(与黄金票据对比)
特性 | 银票据(Silver Ticket) | 黄金票据(Golden Ticket) |
---|---|---|
伪造对象 | 服务票据(ST) | 票据授予票据(TGT) |
依赖密钥 | 目标服务账户的哈希(如DC01$ ) | KRBTGT 账户的哈希 |
权限范围 | 仅针对特定服务(如 CIFS、HTTP) | 全域权限(可访问所有服务) |
与 DC 交互 | 无需(生成和使用均不与 DC 通信) | 生成无需,使用时需向 DC 请求 ST |
获取难度 | 较低(服务账户权限可能较弱) | 较高(需 KRBTGT 哈希,依赖域管权限) |
隐蔽性 | 更强(无 DC 交互,审计日志少) | 较强,但 ST 请求会被 DC 记录 |
有效期默认值 | 10 小时(可自定义,最长 10 年) | 10 年(可自定义) |
Silver Ticket攻击的防御措施
-
定期更换服务账户密码(核心):
- 服务账户(如计算机账户、应用账户)的密码定期轮换(例如每 90 天),使旧哈希失效;
- 计算机账户密码默认每 30 天自动轮换(可通过组策略调整),但需确保生效。
-
限制服务账户权限:
- 遵循最小权限原则:服务账户仅授予运行服务所需的最低权限(如 CIFS 服务账户无需
Domain Admins
权限); - 禁止服务账户交互式登录(通过 ADUC 配置 “账户选项”)。
- 遵循最小权限原则:服务账户仅授予运行服务所需的最低权限(如 CIFS 服务账户无需
-
监控服务票据异常:
- 启用审计策略:监控 “Kerberos 服务票证请求”(事件 ID 4769),检测异常:
- 票据有效期超过默认值(如超过 10 小时);
- 非授权用户(如
Administrator
)频繁请求特定服务的 ST; - 来自异常主机的服务访问请求。
- 启用审计策略:监控 “Kerberos 服务票证请求”(事件 ID 4769),检测异常:
6)Skeleton Key
简介:Skeleton Key(骨架密钥或者万能密码)是一种针对 Active Directory 域环境的经典后门技术,其核心是通过修改域控制器的认证逻辑,实现对域内资源的未授权访问。
核心原理
Skeleton Key 的本质是篡改域控制器上负责认证的 LSASS(Local Security Authority Subsystem Service)服务,注入恶意逻辑后,使得除用户的正常密码外,一个预设的 “万能密码”(即 “骨架密钥”)也能通过认证。
简单来说:正常情况下,LSASS 仅验证用户输入的密码是否与存储的哈希匹配;注入 Skeleton Key 后,LSASS 会额外接受一个预设的固定密钥(例如mimikatz
默认的mimikatz
)作为有效凭证 —— 只要用户名正确,输入这个万能密码就能通过认证。
工作流程
获取域控制器权限:攻击者需先获得域管理员权限(或等效高权限),并能在域控制器上执行代码(通常通过远程命令执行、漏洞利用等方式)。
注入 Skeleton Key:通过工具(如Mimikatz
)向域控制器的 LSASS 进程注入恶意代码,修改其认证逻辑。
示例命令(Mimikatz):
mimikatz # privilege::debug # 提升权限(需本地管理员权限)
mimikatz # misc::skeleton # 注入骨架密钥(默认万能密码为“mimikatz”)
利用万能密码访问:注入成功后,攻击者可使用任意有效的域用户名 + 预设的万能密码(如mimikatz
),通过以下方式访问域内资源:
- 访问共享资源:
net use \\目标主机\共享名 /user:域\用户名 万能密码
; - 执行远程命令(如 WMIC、PowerShell 远程)等。
-
时效性:Skeleton Key 的效果是临时的—— 域控制器重启后,LSASS 服务会恢复正常,万能密码失效,需重新注入。
通过域账户的域后门以及万能密码成功登录连接。
除了mimikatz以外,empire有一个模块也能够实现此功能,这里不进行展示。
Skeleton Key的防御措施
-
限制高权限滥用:
- 严格控制域管理员权限,避免直接使用域管理员登录域控制器或普通主机;
- 启用 “管理员批准模式”(UAC),限制特权进程的非授权执行。
-
监控 LSASS 异常:
- 启用 LSASS 保护(
RunAsPPL
):通过组策略配置 “将 LSASS 作为受保护进程运行”(RunAsPPL),阻止未授权进程修改 LSASS 内存(需 Windows 8/2012 及以上系统)。 - 部署 EDR 工具:监控针对 LSASS 的进程注入(如
CreateRemoteThread
、NtCreateThreadEx
等 API 调用)、内存修改行为,以及异常的调试权限(SeDebugPrivilege
)启用。
- 启用 LSASS 保护(
7)Hook PasswordChangeNotify
简介:Hook PasswordChangeNotify 是一种通过拦截域用户密码变更事件来持久化获取域凭证的后门技术,其核心原理是 挂钩(Hook)Windows 系统中负责处理密码变更通知的 PasswordChangeNotify
函数,从而在用户修改密码时自动捕获新密码,实现对域账户的长期控制。
技术原理
PasswordChangeNotify
是 Windows 认证子系统(MSV1_0
认证包,位于 msv1_0.dll
)中的一个关键函数,作用是:当用户修改密码时,系统会调用该函数通知相关服务(如域控制器、本地安全策略)更新密码哈希。
通过 Hook 技术(如修改函数入口地址、注入恶意 DLL 替换原函数逻辑),攻击者可以在密码变更时拦截并记录新密码(或新的 NTLM 哈希),即使目标用户后续修改密码,攻击者仍能获取最新凭证,避免因密码更新而失去访问权限。
Hook PasswordChangeNotify 通常需要在 域控制器(DC) 上操作(因为域用户密码变更的核心验证和同步发生在 DC 上),操作不再展示,具体步骤如下:
-
定位目标函数
PasswordChangeNotify
函数位于msv1_0.dll
中,通过解析该 DLL 的导出表可获取其内存地址。 -
自定义 DLL 注入:
-
编写恶意 DLL(包含替换
PasswordChangeNotify
逻辑的代码),通过CreateRemoteThread
等方式注入到lsass.exe
进程(LSASS 是负责认证的核心进程,加载msv1_0.dll
),实现持久化拦截。
-
-
持久化 Hook
为避免重启后 Hook 失效,可通过修改注册表(如HKLM\SYSTEM\CurrentControlSet\Control\Lsa\Notification Packages
)将恶意 DLL 注册为系统通知包,使系统启动时自动加载 DLL 并重新挂钩。
以上就是域控制权限的常见维持技术以及工具,在进行此步之前,你需要掌握横向移动,因为这是获得域控制权限的方法以及掌握好mimikatz工具的使用,这是内网渗透中的重要工具,接下来再介绍Nishang下的脚本后门以及防范。
2、Nishang下的脚本后门以及防范
工具已经介绍过,不再提及。这里仅介绍一些后门作用,不再进行操作,自行进行操作尝试。
工具地址:samratashok/nishang: Nishang - Offensive PowerShell for red team, penetration testing and offensive security.
1、HTTP-Backdoor:远程指令控制后门
核心功能
从指定 HTTP/S URL 下载 PowerShell 脚本并在内存中执行(无文件落地),支持攻击者远程下发命令。
域控制器中的作用
-
实时接管域控:
DC 存储域内所有用户 / 计算机账户、组策略、Kerberos 票据等核心数据。攻击者通过该后门可实时执行:lsadump::krbtgt
提取域管哈希(用于伪造黄金票据);- 修改域策略(如添加恶意登录脚本,感染全域机器);
- 创建影子账户(隐藏的高权限域账户)。
-
隐蔽通信:
伪装成域内合法服务(如软件更新服务器)的 URL,规避防火墙拦截;无文件落地特性可绕过传统杀毒软件检测。 -
横向渗透跳板:
以 DC 的高权限(NT AUTHORITY\SYSTEM
)为起点,横向攻击其他域内服务器(如 Exchange、文件服务器)。
2、Add-ScrnSaveBackdoor:屏幕保护程序后门
核心功能
篡改 Windows 屏幕保护程序 配置(注册表 HKCU\Control Panel\Desktop
或 HKLM
键值),将屏保替换为恶意程序(如反向 Shell、凭证窃取工具)。
域控制器中的作用
-
空闲时段触发:
DC 作为核心服务器,通常 7×24 运行,但管理员操作间隙会进入屏保(如设置超时 10 分钟)。后门在屏保启动时执行:- 抓取 DC 内存中的明文凭证(利用
mimikatz
读取 LSASS 数据); - 注入 Skeleton Key(域万能密码,所有账户可用统一密码登录)。
- 抓取 DC 内存中的明文凭证(利用
-
伪装系统功能:
屏保属于系统个性化设置,管理员易忽略审计;若篡改域级屏保策略(通过组策略推送到全域),可感染所有域内机器。 -
持久化生存:
屏保配置随系统启动加载,即使 DC 重启,后门仍会在空闲时激活。
3、Execute-OnTime:定时触发后门
核心功能
按指定时间(如 -Time 03:00
)执行 PowerShell 脚本,支持通过 URL 检测 “停止标记”(-CheckURL
)动态控制启停。
域控制器中的作用
-
规避监控高峰:
选择 DC 负载最低的时段(如凌晨 3 点)执行高危操作:ntdsutil
导出ntds.dit
(获取所有域账户哈希,破解后接管全域);- 清除安全日志(删除攻击痕迹);
- 植入 WMI 后门(更隐蔽的持久化方式)。
-
伪装系统任务:
定时任务命名为System Update
等伪装名称,混入合法系统任务(如备份、时间同步),躲避审计。 -
远程可控性:
通过更新CheckURL
内容,可随时暂停 / 恢复后门,灵活应对防御措施。
4、Invoke-ADSBackdoor:NTFS 数据流后门
核心功能
利用 NTFS 交替数据流(ADS),将恶意代码嵌入合法文件(如 C:\Windows\System32\
下的系统文件),通过访问文件触发后门(如 type file.txt:backdoor
)。
域控制器中的作用
-
隐藏在关键文件中:
感染 DC 上的域策略脚本(如SysVol\Domain\Scripts
下的登录脚本),当域内机器同步策略时,ADS 中的后门自动执行,实现全域感染。
甚至感染ntds.dit
的 ADS(虽风险极高,但隐蔽性极强,常规工具无法检测)。 -
极低检测率:
ADS 是 NTFS 合法特性,dir
等命令默认不显示;需通过Get-Item -Path "C:\file.txt" -Stream *
等 PowerShell 命令排查,管理员极易忽视。 -
持久化生存:
只要宿主文件未被删除,ADS 后门就会一直存在;即使修复系统漏洞,仍可通过 ADS 复活。
伏,实现对整个域的 “永久控制权”。
防御建议
-
监控 DC 关键行为:
- 审计屏保配置变更(注册表
HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\ScreenSave*
); - 检测 PowerShell 异常网络请求(如访问未知 URL 并执行脚本);
- 排查 NTFS 数据流(定期运行
Get-Item -Path "C:\" -Recurse -Stream * | Where-Object Stream -ne ':$DATA'
)。
- 审计屏保配置变更(注册表
-
加固 DC 权限:
- 启用 LSASS 保护(RunAsPPL),阻止内存注入;
- 限制 DC 上的 PowerShell 执行策略(仅允许签名脚本);
- 禁用未使用的屏幕保护程序,锁定屏保配置权限。
-
日志审计:
- 监控事件 ID 4688(新进程创建),重点排查
powershell.exe
执行异常脚本; - 跟踪 计划任务创建 / 修改 事件(ID 4698/4702),识别伪装任务。
- 监控事件 ID 4688(新进程创建),重点排查
ok,历时半个月,从环境搭建,信息收集,权限提升,横向移动,权限维持,内网渗透所涉及的步骤,工具,以及知识,技术等都有所提及,这只是内网渗透的开始,面对真实环境下的内网渗透,还需要继续学学学,兄弟们,嘎嘎加油啊。最后,感谢大家的关注与支持!!!