跳转到帖子

近期内网入侵链路研判:从边界设备失陷到域权限扩张的日志验证与修复

精选回复

发布于

近期公开威胁情报和多起事件复盘中,一条较为稳定的入侵路径反复出现:攻击者先通过边界设备、远程接入系统或暴露的管理接口获得初始访问,再利用有效账号进入内网,随后开展资产发现、凭据滥用、远程服务横向移动,最终尝试获取域管理员权限。对授权渗透测试和蓝队排查而言,重点不只是确认某个漏洞是否存在,而是验证漏洞利用后是否能够穿透权限边界,并在日志中还原完整时间线。

一、当前威胁动态的共同特征

  • 初始访问集中在边界系统:VPN、SSL 远程接入、邮件网关、虚拟化管理平台和公网 Web 管理面是高频入口。
  • 账号滥用比持久化木马更常见:攻击者倾向于复用泄露凭据、窃取会话令牌或滥用远程管理权限,降低落地文件和恶意软件暴露概率。
  • 横向移动依赖原生工具:常见行为包括 RDP、SMB、WinRM、WMI、远程计划任务和 PowerShell,单纯依赖杀毒软件特征容易漏报。
  • 权限边界失效是扩大影响面的关键:普通运维账号同时拥有多台服务器本地管理员权限,或服务账号具备过高域权限,会让一次边界失陷迅速演变为域级事件。

二、授权验证场景与问题定位

在获得书面授权、明确目标范围和测试时间窗后,可将验证拆成三个阶段。

1. 确认边界暴露面

检查公网系统是否开放不必要的管理端口,重点关注管理界面、VPN、远程桌面和遗留 Web 服务。验证时应优先采用版本识别、访问控制检查和安全配置核验,不应直接对生产系统执行破坏性利用。

# 仅用于已授权资产的端口和服务确认,限制速率并保存输出
nmap -Pn -sT -sV --version-light --max-rate 100 -p 80,443,445,3389,5985,5986,8443 <AUTHORIZED_TARGET> -oA perimeter-check

# 检查 HTTPS 响应头、证书和重定向,避免提交账号或执行状态改变操作
curl -k -I --max-time 10 

如果发现公网可直接访问的管理接口,应进一步核对:是否强制 MFA、是否限制来源地址、是否存在默认账号、是否启用登录失败锁定、是否记录管理员登录来源和设备指纹。

2. 验证权限边界

在测试账号下确认其实际权限,而不是只看账号名称。重点检查该账号是否属于本地 Administrators、Remote Desktop Users、Remote Management Users,是否拥有域组写入权限,是否能够读取敏感共享目录或调用高权限服务。

whoami /all
net user %USERNAME% /domain
whoami /groups
net localgroup administrators
net localgroup "Remote Management Users"

# 查询当前主机的有效网络连接,辅助确认是否存在异常横向通信
netstat -ano | findstr /R ":445 :3389 :5985 :5986"

授权测试中应记录“测试账号—目标主机—访问方式—实际权限—日志事件”的对应关系。例如,普通运维账号通过 WinRM 访问不在职责范围内的服务器,若能够成功认证并执行命令,就说明网络隔离或账号授权边界存在缺陷。

3. 还原从初始访问到横向移动的时间线

Windows 环境优先关联以下事件:

  • 4624、4625:成功和失败登录;重点看 Logon Type 3、10,以及来源 IP 是否异常。
  • 4648:使用显式凭据登录,常用于定位凭据复用或脚本调用。
  • 4672:特殊权限分配,需结合账号身份判断是否合理。
  • 4688:进程创建;建议开启命令行记录,关注 powershell、wmic、rundll32、schtasks、psexec 类行为。
  • 4768、4769、4776:Kerberos 票据和 NTLM 验证,可用于发现异常服务票据请求和域控认证集中爆发。
  • 7045:新服务安装;7040:服务启动类型变化。
  • Sysmon 1、3、11:进程创建、网络连接和文件创建,适合补充原生日志。

Linux 主机则重点查看 /var/log/auth.log 或 /var/log/secure 中的 sshd 登录、sudo、用户切换和密钥认证记录,同时核对 auditd 是否覆盖敏感命令及关键配置文件。

三、可落地的日志检索示例

下面示例适用于已接入 SIEM 的 Windows 日志环境,用于发现短时间内从单一来源访问多台主机的情况。字段名称需按具体平台调整。

index=windows sourcetype=WinEventLog:Security EventCode=4624 Logon_Type IN (3,10)
| eval src=coalesce(src_ip,Source_Network_Address,IpAddress)
| where isnotnull(src) AND src!="-" AND src!="127.0.0.1"
| stats dc(dest) as host_count values(dest) as hosts values(user) as users count by src
| where host_count >= 5
| sort - host_count

用于关联显式凭据、特殊权限和新服务安装的查询可以采用以下思路:

index=windows sourcetype=WinEventLog:Security (EventCode=4648 OR EventCode=4672 OR EventCode=7045)
| eval account=coalesce(TargetUserName,SubjectUserName,Account_Name)
| stats values(EventCode) as events values(Process_Name) as processes values(Service_Name) as services by _time, host, account, src_ip
| where mvcount(events) >= 2

告警不应只依赖单个事件。更有价值的判断是:同一账号在短时间内从未出现过的源地址登录多台服务器,随后出现 PowerShell 或远程服务行为,并伴随高权限分配、服务创建或异常 Kerberos 请求。

四、修复与加固建议

  • 收敛公网暴露面:管理接口只允许通过堡垒机或专用管理网访问;VPN、云控制台和远程接入系统强制 MFA,禁用默认账号和弱认证方式。
  • 落实分层管理模型:普通办公账号、服务器运维账号、域管理员账号分离,禁止域管理员登录普通终端;限制服务器本地管理员组成员和远程登录来源。
  • 降低横向移动能力:按业务划分 VLAN 或安全组,限制 SMB、RDP、WinRM 仅在必要主机之间通信;对服务器启用 Windows 防火墙出入站规则。
  • 保护服务账号:优先使用 gMSA 或短周期轮换密码,禁止服务账号交互式登录,定期审计 SPN、委派配置和高权限组成员。
  • 完善日志留存:启用高级审核策略、PowerShell Script Block Logging 和 Transcription;Sysmon 重点采集进程、网络连接、驱动及计划任务事件,并将日志集中保存,避免攻击者清理本机记录后无法追溯。
  • 验证修复有效性:修复后使用相同授权账号重复验证,确认边界访问被拒绝、横向端口不可达、权限组已收敛,同时检查是否产生预期的失败登录和策略阻断日志。

五、风险判断与响应优先级

若同时出现以下组合,应按高优先级事件处理:公网入口出现异常登录;同一账号访问多台不相关服务器;随后出现 4648、4672、4688 或 7045;域控出现异常 Kerberos 服务票据请求;终端安全产品未发现明显恶意文件但网络行为持续异常。此时不宜只删除单个账号或重启主机,应先保留内存、认证、VPN、域控和终端日志,立即冻结可疑凭据,检查高权限组、计划任务、服务、远程管理配置及异常票据,再进行密码轮换和主机隔离。

总结

当前公开威胁动态显示,内网入侵的关键变化不是某一种工具,而是“边界账号失陷—原生远程管理—权限边界扩张”的组合。授权测试应同时验证漏洞、账号权限和网络可达性;防守方则需要把登录、进程、网络连接、Kerberos 和服务安装日志串成时间线。只有确认攻击路径在权限和网络层面都被切断,修复才算真正完成。

服务器与云环境安全示意图
服务器、云资产与权限边界梳理示意

这个链路建议先别急着“全网杀毒”,优先把时间线钉死:边界设备登录/配置变更时间、首次内网横向时间、域控异常认证时间三段要能互相对上。很多案子里真正有价值的证据在边界设备和域控日志,终端反而被清过。

1)边界设备侧先确认三类痕迹

  • 异常管理登录:非运维源 IP、非常规时间、失败后成功。
  • 配置变更:新增 VPN 账号、策略放通、端口映射、ACL 修改、认证服务器变更。
  • 异常隧道/会话:同一账号多地登录、长时间在线、内网扫描型流量。

如果边界设备支持导出 syslog,建议按攻击窗口过滤关键词:

grep -Ei "login|logout|admin|config|commit|vpn|ssl|ipsec|user|failed|success|policy|nat|acl" edge.log \
  | grep "2024-xx-xx"

这里要特别注意“配置保存/提交”时间,不只是登录成功时间。很多设备被拿下后会短时间内创建临时账号,再删掉,单看当前配置看不到。

2)域控上重点查认证与权限变化

建议先拉出攻击窗口内的关键事件,不要只看 4624。比较有用的是:

  • 4624:登录成功,关注 LogonType 3/10。
  • 4625:登录失败,判断爆破或密码喷洒。
  • 4672:分配特殊权限,常见于管理员登录。
  • 4720/4726:用户创建/删除。
  • 4728/4732/4756:加入高权限组。
  • 4738:用户属性修改。
  • 4768/4769/4771:Kerberos 认证、TGS 请求、失败。
  • 7045:服务安装,常见横向执行痕迹。

PowerShell 可以先这样粗筛:

$start = Get-Date "2024-xx-xx 00:00:00"
$end   = Get-Date "2024-xx-xx 23:59:59"

$ids = 4624,4625,4672,4720,4726,4728,4732,4738,4756,4768,4769,4771,7045

Get-WinEvent -FilterHashtable @{
    LogName   = 'Security'
    Id        = $ids
    StartTime = $start
    EndTime   = $end
} | Select-Object TimeCreated, Id, ProviderName, Message |
Export-Csv .\dc_security_window.csv -NoTypeInformation -Encoding UTF8

如果日志量太大,可以先按可疑源 IP、VPN 地址池、跳板机 IP 过滤。尤其要把边界 VPN 分配的内网地址池拿来对比域控 4624 的 IpAddress 字段。

Get-WinEvent -FilterHashtable @{
    LogName='Security'
    Id=4624
    StartTime=$start
    EndTime=$end
} | Where-Object {
    $_.Message -match "Logon Type:\s+(3|10)" -and
    $_.Message -match "Source Network Address:\s+10\.10\.50\."
} | Select-Object TimeCreated, Message

3)验证是否发生域权限扩张

不要只看 Domain Admins,也要看这些组:

  • Enterprise Admins
  • Schema Admins
  • Administrators
  • Account Operators
  • Backup Operators
  • Remote Management Users
  • DNSAdmins
  • 组策略相关委派权限

可以导出现有高权限组成员做快照:

Import-Module ActiveDirectory

$groups = @(
  "Domain Admins",
  "Enterprise Admins",
  "Schema Admins",
  "Administrators",
  "Account Operators",
  "Backup Operators",
  "DNSAdmins",
  "Remote Management Users"
)

foreach ($g in $groups) {
    "`n==== $g ===="
    Get-ADGroupMember $g -Recursive |
      Select-Object Name, SamAccountName, objectClass
}

如果怀疑攻击者改过 ACL,建议重点查 AdminSDHolder 和异常委派:

Import-Module ActiveDirectory

# 查看 AdminSDHolder ACL
(Get-Acl "AD:\CN=AdminSDHolder,CN=System,DC=example,DC=com").Access |
  Select-Object IdentityReference, ActiveDirectoryRights, AccessControlType, IsInherited

# 查带有 SPN 的普通用户,排查 Kerberoasting 面
Get-ADUser -LDAPFilter '(servicePrincipalName=*)' -Properties servicePrincipalName |
  Select-Object SamAccountName, Enabled, servicePrincipalName

4)横向移动证据别漏掉主机侧日志

常见落点是服务器、运维机、文件服务器。重点看:

  • 7045:远程创建服务。
  • 4697:服务安装。
  • 4688:进程创建,前提是已开启命令行审计。
  • Sysmon Event ID 1/3/10/11:进程、网络、句柄访问、文件创建。
  • PowerShell 4104:脚本块日志。
  • WinRM:Microsoft-Windows-WinRM/Operational。

可先在服务器上查服务安装:

Get-WinEvent -FilterHashtable @{
  LogName='System'
  Id=7045
  StartTime=$start
  EndTime=$end
} | Select-Object TimeCreated, ProviderName, Message

如果发现类似 psexesvc、随机服务名、指向 ADMIN$、Temp、ProgramData 的路径,基本就可以往横向执行方向验证。

5)修复顺序很关键

建议顺序是:

  1. 先保全边界设备配置、日志、当前会话、VPN 在线用户。
  2. 临时限制边界管理面,只允许堡垒机或固定运维 IP。
  3. 禁用可疑 VPN/本地管理员账号,不要直接删除,先留证。
  4. 重置边界设备管理员密码、VPN 账号密码、对接的 RADIUS/LDAP 凭据。
  5. 排查并清理域内新增账号、异常组成员、异常 ACL、异常 GPO。
  6. 重置高权限账号密码,必要时执行两次 krbtgt 重置,中间间隔一个完整票据生命周期。
  7. 最后再做终端清理和漏洞修复,否则容易被残留域权限重新打回来。

krbtgt 不建议一上来就重置,先确认没有业务依赖问题,并且域控复制正常。可以先查复制状态:

repadmin /replsummary
repadmin /showrepl

6)后续加固建议

  • 边界设备管理面关闭公网访问,必须走 VPN/堡垒机,并开启 MFA。
  • VPN 地址池单独划 VLAN,只允许访问必要系统,不要直通域控。
  • 域管账号禁止登录普通服务器和办公终端。
  • 开启 PowerShell Script Block Logging、进程命令行审计、Sysmon。
  • 边界设备日志远程 syslog 到独立日志服务器,避免设备被控后本地日志被清。

这个场景里最容易误判的是:只看到域控异常登录,就从域内开始查,忽略了 VPN/边界设备作为初始入口。建议把 VPN 地址池、边界管理登录 IP、域控 4624 源地址三者做一次交叉,通常能很快把入侵链路串起来。

最近浏览 0

  • 没有会员查看此页面。

SiteMap HACKHAT © 2026 All rights reserved.