主页 > 开源代码  > 

定位用户登录的主机

定位用户登录的主机

域控机器账户: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

wevtutil

wevtutil 来过滤事件 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.exe

LogParser.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

 

标签:

定位用户登录的主机由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“定位用户登录的主机