定位域管理员的6种方式
psloggedon
1、介绍
使用条件:PSLoggedOn需要启动Remote Registry Service
在 Windows 上使用 net session 可以查看谁使用了本机资源,但不能查看谁在使用远程计算机资源、谁登录了本地或远程计算机,使用 psloggedon 可以查看本地登录的用户和通过本地计算机或远程计算机进行资源登录的用户,这是一种存在的局限性。
PsLoggedOn对本地登录用户的定义是将其配置文件加载到注册表中,因此PsLoggedOn通过扫描 HKEY_USERS 键下的键来确定谁登录。对于名称为用户 SID(安全标识符)的每个密钥, PsLoggedOn 会查找相应的用户名并显示它。为了确定谁通过资源共享登录到计算机, PsLoggedOn使用NetSessionEnum API。请注意,PsLoggedOn将显示您已通过资源共享登录到您查询的远程计算机,因为PsLoggedOn需要登录才能访问远程系统的注册表。
3、使用用法
1 | psloggedon.exe [-] [-l] [-x] [\\computername|username] |
-l 仅显示本地登录,不显示本地和网络资源登录。
\\computername 指定要列出登录信息的计算机的名称,查看谁登陆过这台机器
Username 指定用户名,在网络中搜索该用户登录的计算机。
踩坑:计算机得启用网络发现,并且,默认在域内搜索,不需要指定域,直接输入域用户名称即可。
PVEFindADUser
1、介绍
pveFindADUser.exe 可用于查找 Active Directory 用户登录的位置,枚举域用户,以及查找在 特定计算机上登录的用户,包括本地用户、通过 RDP 登录的用户、用于运行服务和计划任务的用户账 户。运行该工具的计算机需要具有.NET Framework 2.0,并且需要具有管理员权限。
2、用法
1 | -h 显示帮助信息 |
获取域内所有目标计算机上当前登录的所有用户
pveFindADUser.exe -current
指定了用户名(DOMAIN\Username),则显示该用户登录的计算机
pveFindADUser.exe -current “FZM\Lisi”
netview
1.介绍
netview 是一个枚举工具,使用 WinAPI 枚举系统,利用 NetSessionEnum 寻找登录会话,利用 NetShareEnum 寻找共享,利用 NetWkstaUserEnum 枚举登录的用户,netview 可以查询共享入口和有价值的用户,其绝大部分功能无需管理员权限就可使用。
2、用法
1 | -h 显示帮助信息 |
-d 列出域内主机的NetSessionEnum,NetShareEnum,NetWkstaUserEnum
NSE 脚本
常用的 NSE 脚本如下:
smb-enum-domains.nse:对域控制器进行信息收集,可以获取主机信息、用户、可使用密码策略的用户等
smb-enum-users.nse:在进行域渗透时,如获取了域内某台主机权限,但权限有限,无法获取更多的域用户信息,可借助此脚本对域控制器进行扫描
smb-enum-shares.nse:遍历远程主机的共享目录
smb-enum-processes.nse:对主机的系统进程进行遍历,通过此信息,可知道目标主机运行着哪些软件
smb-enum-sessions.nse:获取域内主机的用户登陆会话,查看当前是否有用户登陆,且不需要管理员权限
smb-os-discovery.nse:收集目标主机的操作系统、计算机名、域名、域林名称、NetBIOS机器名、NetBIOS域名、工作组、系统时间等信息
PowerView 脚本
1、介绍
PowerView 脚本中包含了一系列的 powershell 脚本,信息收集相关的脚本有 Invoke-StealthUserHunter、Invoke-UserHunter 等,要使用 PowerView 脚本需要将 PowerView 文件夹复制到 PowerShell 的 Module 文件夹内, Module 文件夹路径可以通过在 PowerShell 中输入$Env:PSModulePath
查看,我这里将其复制到了C:\Program Files\WindowsPowerShell\Modules文件夹内。
接着在 powershell中输入Import-Module PowerView
即可导入PowerView,使用Get-Command -Module PowerView
可查看已导入的 PowerView 命令
2、使用
Invoke-StealthUserHunter:只需要进行一次查询,就可以获取域里面的所有用户。其原理为:从user.HomeDirectories
中提取所有用户,并对每个服务器进行Get-NetSession
获取。因不需要使用Invoke-UserHunter
对每台机器进行操作,所以这个方法的隐蔽性相对较高(但涉及的机器不一定全面)。PowerView 默认使用Invoke-StealthUserHunter
如果找不到需要的信息,就会使用Invoke-UserHunter
.
Invoke-UserHunter:找到域内特定的用户群,接受用户名、用户列表和域组查询,接收一个主机列表或查询可用的主机域名。使用Get-NetSession
和Get-NetLoggedon
(调用 NetSessionEnum 和 NetWkstaUserEnumAPI )扫描每台服务器并对扫描结果进行比较,从而找出目标用户集,在使用时不需要管理员权限。
PowerView 中的其他信息收集模块:
-
Get-NetDomain:获取当前用户所在域名称
-
Get-NetUser:
获取所有用户的详细信息
-
Get-NetDomainController:
获取所有域控制器的信息
-
Get-NetComputer:
获取域内所有机器的详细信息
-
Get-NetOU:
获取域中的OU信息
-
Get-NetGroup:
获取所有域内组和组成员信息
-
Get-NetFileServer:
根据SPN获取当前域使用的文件服务器信息
-
Get-NetShare:
获取当前域内所有的网络共享信息
-
Get-NetSession:
获取指定服务器的会话
-
Get-NetRDPSession:
获取指定服务器的远程连接
-
Get-NetProcess:
获取远程主机的进程
-
Get-UserEvent:
获取指定用户的日志
-
Get-ADObject:
获取活动目录的对象
-
Get-NetGPO:
获取域内所有组的策略对象
-
Get-DomainPolicy:
获取域默认策略或域控制器策略
-
Invoke-UserHunter:
获取域用户登陆的计算机信息及该用户是否有本地管理员权限
-
Invoke-ProcessHunter:
通过查询域内所有的机器进程找到特定用户
-
Invoke-UserEventHunter:
根据用户日志查询某域用户登陆过哪些域机器
Empire
不常用,暂时不看,留着坑位