怎么定位域管曾经登录哪些机器
1. 利用事件日志(Event Logs)
这是最直接,也是最基础的方法。Windows 服务器和客户端都会记录用户的登录事件,我们可以通过分析这些日志来追踪域管理员的行踪
- 事件 ID 4624:这是成功登录的事件 ID。我们需要关注以下几个关键信息:
Account Name
:登录的账户名,我们要寻找域管理员账户,通常会包含Domain Admins
组的成员Logon Type
:登录类型Type 2
:交互式登录(Interactive),意味着用户直接在机器上操作Type 10
:远程交互式登录(RemoteInteractive),意味着通过远程桌面(RDP)登录Type 3
:网络登录(Network),这意味着通过网络服务访问,比如文件共享
- 如何收集:
- 手动收集:登录到域控制器或其他服务器上,打开
事件查看器
(Event Viewer),在Windows 日志
->安全
中筛选事件 ID 4624。这对于小型网络尚可,但对于大型网络效率很低 - 脚本自动化:使用 PowerShell 脚本可以批量查询多台机器上的事件日志。例如,可以编写脚本遍历所有机器,然后筛选出域管理员的登录记录
- 集中式日志管理:在大型企业中,通常会有 ELK Stack (Elasticsearch, Logstash, Kibana) 或 Splunk 等集中式日志管理系统。如果有权限访问这些系统,可以直接通过强大的搜索功能来查询域管理员的登录历史,这是效率最高的方式
- 手动收集:登录到域控制器或其他服务器上,打开
2. 利用 LAPS 或 GPO
有些企业为了安全,会使用 LAPS(本地管理员密码解决方案)或 GPO(组策略对象)来管理本地管理员账户的密码。如果一个域管理员账户曾登录过这些机器并修改过本地管理员密码,那么这些信息可能会被记录下来
- 攻击思路:
- LAPS 日志:LAPS 会记录管理员账户对本地密码的修改历史。我们可以通过查看这些日志来反推出是哪个域管理员在何时操作了哪台机器
- GPO 日志:如果管理员使用了 GPO 批量下发或修改了配置,这些操作也会在日志中留下痕迹
3. 利用渗透工具自动化发现
对于渗透测试工程师来说,手动分析日志太慢了。我们通常会使用专门的工具来自动化这个过程
- BloodHound:这是内网渗透中最强大的关系图分析工具之一。它能够收集域内的各种信息,包括用户、组、机器、会话等等,然后将这些信息可视化
- 核心功能:BloodHound 的一个强大功能是会话(Session)分析。它可以识别出哪些账户登录了哪些机器,并用图表清晰地展示出来
- 查询:在 BloodHound 中,你可以直接运行内置查询,例如“Find Computers to which a Domain Admin has logged on”(查找域管理员登录过的机器),它会立即返回所有相关机器列表
- PowerView:这是一款基于 PowerShell 的信息收集工具,也是我们常用的利器
- 命令示例:
Get-NetSession
可以用来枚举当前机器上的网络会话,从中筛选出域管理员的会话。Get-NetLoggedon
可以用来枚举本地机器上的登录用户,从中找到域管理员 - 结合使用:我们会编写脚本,在多台机器上运行这些命令,然后将结果汇总起来,分析出域管理员的登录痕迹
- 命令示例: