在域渗透中,获取域内的一个支点后,需要获取管理员权限。在一个域中,当计算机加入域后,会默认给域管理员组赋予本地系统管理员权限。当计算机被添加到域中,成为域的成员主机时,系统会自动将域管理员组添加到本地系统管理员组中。因此,域管理员组的成员可以登陆域内的所有主机,且权限为完全控制的权限。
一,常规定位域内管理员方法
- 日志
- 会话
日志指的是本地机器的管理员日志,可以使用脚本或wevtuil导出查看。
会话是域内每个机器的登陆会话,可以匿名查询,无需权限,可以使用netsess.exe或powerview等工具查询。
二,定位管理员工具
psloggedon.exe
pvefindaduser.exe
netsess.exe
powerview脚本-invoke-userhunter
netview.exe:GitHub - mubix/netview: Netview enumerates systems using WinAPI calls
nmap的nse脚本
empire下 user_hunter模块
psloggedon.exe
下载地址:PsLoggedOn - Sysinternals | Microsoft Learn
介绍
您可以使用“net”命令(“net session”)确定谁在使用本地计算机上的资源,但是,没有内置方法可以确定谁在使用远程计算机的资源。此外,NT 没有提供工具来查看谁在本地或远程登录到计算机。PsLoggedOn是一个小程序,它显示本地登录的用户和通过本地计算机或远程计算机的资源登录的用户。如果您指定用户名而不是计算机,PsLoggedOn会搜索网络邻居中的计算机并告诉您该用户当前是否已登录。
PsLoggedOn对本地登录用户的定义是将其配置文件加载到注册表中的用户,因此PsLoggedOn通过扫描 HKEY_USERS 键下的键来确定谁登录了。对于名称为用户 SID(安全标识符)的每个键, PsLoggedOn查找相应的用户名并显示它。要确定谁通过资源共享登录到计算机, PsLoggedOn使用NetSessionEnum API。请注意,PsLoggedOn将显示您已通过资源共享登录到您查询的远程计算机,因为PsLoggedOn需要登录才能访问远程系统的注册表。
1,查看登陆过本地计算机的账户
用法:psloggedon [-] [-l] [-x] [\\计算机名 | 用户名]
psloggedon -l
- | 显示支持的选项和用于输出值的测量单位。 |
-l | 仅显示本地登录,而不显示本地和网络资源登录。 |
-X | 不显示登录时间。 |
\\计算机名 | 指定要为其列出登录信息的计算机的名称。 |
用户名 | 如果指定用户名,PsLoggedOn会在网络中搜索该用户登录的计算机。如果您要确保在您要更改用户配置文件配置时特定用户未登录,这将很有用。 |
pvefindaduser.exe
下载地址: Tools/AD/ADFindUsersLoggedOn at master · chrisdee/Tools · GitHub
实用程序可用于找出 Active Directory 用户登录的位置,和/或找出谁在特定机器上登录。这应该包括本地用户、通过 RDP 登录的用户、用于运行服务和计划任务的用户帐户(仅当任务正在运行时)。运行该工具需要计算机配置.NET framework2.0环境。.NET大于2.0版本也不行。运行此工具无需管理员权限。
1,查询域中所有主机当前登陆的用户
pvefindaduser.exe <参数>
pvefindaduser.exe - current
powerview脚本
下载地址:PowerSploit/PowerView.ps1 at master · PowerShellMafia/PowerSploit · GitHub
powerview脚本可以用来获取当前域管理员在线登陆的服务器。
invoke-userhunter:搜索本地中域管理员在线的主机,并验证当前用户是否具有对这些主机的本地管理员访问权限。它可以使用get-netsessions和get-netloggedon扫描每台服务器并对扫描结果进行比较,从而找出目标用户集,并且无需管理员权限。
打开powershell,进入脚本目录,输入Import-Module .\PowerView.ps1 导入脚本
然后输入Invoke-UserHunter即可
三,查询域管理进程
- 本机检查
- 查询域控制器的域用户会话
- 扫描远程系统上运行的任务
- 扫描远程系统上netbios信息
四,模拟域管理员