定位用户登录的主机
- 开源代码
- 2025-08-26 03:00:01

域控机器账户:WIN-0V0GAORDC17
域控 ip:192.168.72.163
域内攻击者机器 ip:192.168.72.158,host:WIN10-01
攻击者 kali 机器 ip:192.168.72.162
横向或拿下域控的时候,要精确定位当前某些用户在哪台机器登录。
注册表查询使用普通与用户枚举域内服务器当前登录的用户。
原理:当用户登陆了某台主机,在该主机的 HKEY_USERS 注册表中会有该用户的文件夹,我们通过远程连接此主机,查看这台主机的注册表,就能得到此主机正在登陆的用户。
使用 adfind 查询此 SID 的用户:
AdFind.exe -f "objectSid=" -dn查询此主机的注册表可以使用 api 来实现,但要注意以下三点:
默认 PC 机器是没有开启注册表远程连接的,因此 PC 机器无法查询当前登录的用户。
默认服务器开启了注册表远程连接,因此服务器可以查询当前登录的用户。
域内任何用户,即使配置了不能本地 RDP 登录域内机器 A,但是只要域内机器 A 开启了远程注册表连接,我们就可以通过 API 查询机器 A 的注册表,查询正在登陆的用户。
工具:Psloggedon.exe
PVEFindADUser.exe
Psloggedon.exe(能查询出目标主机通过资源共享远程登录的用户)查询本地登录的用户:
PsLoggedon.exe /accepteula \\查询指定主机登录的用户:
在域中,仅需要一个普通域用户权限,就可枚举出域内所有服务器(包括域控)当前的登录用户,但是 PC 机器没开启远程注册表连接,而服务器开启了,所以默认情况下,只能对服务器进行当前登录用户的查询,查询命令如下: # 查询域控当前登录的用户 PsLoggedon.exe /accepteula \\WIN-0V0GAORDC17当查询服务器时,可能还会查询出目标主机通过资源共享远程登录的用户,因为这个接口是通过NetSessionEnum API 来枚举网络会话的,需要先登录才能枚举该网络会话。
PVEFindADUser通过检查注册表 HKEY_USERS 项的 Key 值来确定目标主机当前登录的用户(此工具运行不需要域管理员权限,只需要普通域用户即可)。
查询所有主机当前登录用户:
查询结果将被输出到 report.csv 文件中 # 查询域中所有机器当前登录的用户 PVEFindADUser.exe -current # 查询域中所有机器当前登录的用户,不通过 ping 检测目标机器是否开启 PVEFindADUser.exe -current -noping # 查询域中所有机器当前登录的用户,不通过 ping 检测目标机器是否开启,并且将主机的操作系统写入 report.csv 文件 PVEFindADUser.exe -current -noping -os查询指定主机当前的登录用户:
# 查询目标主机当前登录的用户 PVEFindADUser.exe -current -target 192.168.72.163查询指定用户当前登录的主机:
# 查询 HACKER\deandean 用户当前登录的主机 PVEFindADUser.exe -current HACKER\deandean -noping # 查询 HACKER\deandean 用户当前登录的主机,找到了一个即停止寻找 PVEFindADUser.exe -current HACKER\deandean -noping -stopfound 域控日志查询获取到域控权限的时候,想要定位特定用户登录的主机,此时可以从域控制器上导出登录日志来进行查询,域内用户登录域内主机的时候,要经过域控制器的认证,因此在域控制器上会有相应的登录日志。该登录日志的事件ID 为 4624,登录类型为 3
wevtutilwevtutil 来过滤事件 ID 为 4624,登录类型为 3 的日志:
wevtutil epl Security C:\Users\Administrator\Desktop\1.evtx /q:"*[System[(EventID=4624)] and EventData[Data[@Name='LogonType']='3']] 执行完该命令后会生成 1.evtx 文件 LogParser.exeLogParser.exe 工具执行如下命令来解析 1.evtx 日志文件内容
LogParser.exe -i:EVT -o:CSV "SELECT TO_UPPERCASE(EXTRACT_TOKEN(Strings,5,'|')) as USERNAME,TO_UPPERCASE(EXTRACT_TOKEN(Strings,18,'|')) as SOURCE_IP FROM 1.evtx" >log.csv # USERNAME, SOURCE_IP Bash命令 #查询 administrator 用户登录过的主机 cat log.csv | grep ADMINISTRATOR | sort | uniq #查询 deandean 用户登录过的主机 cat log.csv | grep DEANDEAN | sort | uniq SharpADUserIP这是一款使用 C#语言写的用于从域控制器上提取出登录日志的工具,然后对结果进行过滤去重。该工具支持查询域控上 1-365 天内的登录日志,使用时直接指定天数即可。如下,在域控上运行该工具查询 7 天内域内的登录日志信息
SharpADUserIP.exe 7
上一篇
蓝桥杯1.语言基础