域管理员定位概述
在一个域中,当计算机加入域后,会默认给域管理员赋予本地系统管理员权限。因此,域管理员均可以访问本地计算机,且具备完全控制权限。
定位域内管理员的两种渠道:日志和会话。
日志是指本地机器的管理员日志,可以使用脚本或Wevtutil工具导出并查看。
会话是指域内每台机器的登陆会话,可以使用netsess.exe或PowerView等工具查询(可以匿名查询,不需要权限)。
psloggedon.exe
通过检验注册表里HKEY_USERS的key值来查询谁登陆过机器,同样也调用到了NetSessionEnum API。
PS:该工具的某些功能需要管理员权限
下载地址:https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon
参数 | 描述 |
---|---|
- | 显示支持的选项和用于输出值的度量单位 |
-l | 仅显示本地登录,而不显示本地和网络资源登录 |
-x | 不显示登录时间 |
\computername | 指定要为其列出登录信息的计算机的名称 |
username | 指定用户名,在网络中搜索该用户登陆的计算机 |
C:\Users\Riy\Desktop\PSTools>PsLoggedon.exe
PsLoggedon v1.35 - See who's logged on
Copyright (C) 2000-2016 Mark Russinovich
Sysinternals - www.sysinternals.com
Users logged on locally:
2020/4/20 0:15:48 WIN-9H5Q3M1HLEH\Riy
No one is logged on via resource shares.
PVEFindADUser.exe
用于查找Active Directory用户的登录位置、枚举域用户,以及查找在特定计算机上登陆的用户,包括本地用户、通过RDP登陆的用户、用于运行服务和计划任务的用户。
运行该工具需要配置 .NET Framework 2.0 环境,并且需要具有管理员权限。
下载地址:https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn
参数 | 描述 |
---|---|
-h | 显示帮助信息 |
-u | 检测程序是否有新版本 |
-current ["username"] | -current参数显示每台PC上当前登录的用户在域中。如果指定用户名(在引号之间),则仅将显示该特定用户登录的PC |
-noping | 阻止尝试枚举用户登录名之前对目标计算机执行ping命令 |
-target | 此可选参数允许您指定要查询的主机。如果未指定此-target参数,则将查询当前域中的所有主机。如果决定指定-target,然后指定以逗号分隔的主机名。查询结果将被输出到report.csv文件中 |
C:\Users\Riy\Desktop>PVEFindADUser.exe -current
-----------------------------------------
PVE Find AD Users
Peter Van Eeckhoutte
(c) 2009 - http://www.corelan.be:8800
Version : 1.0.0.12
-----------------------------------------
[+] Finding currently logged on users ? true
[+] Finding last logged on users ? false
[+] Enumerating all computers...
[!] Error connecting to AD and enumerating computers
Error : 指定的域不存在,或无法联系。
netview.exe
Netview是枚举工具,使用WinAPI枚举系统,利用NetSessionEnum找寻登陆会话,利用NetShareEnum找寻共享,利用NetWkstaUserEnum枚举登陆用户。同时,netview.exe能够查询共享入口和有价值的用户。netview.exe的绝大多数功能不需要管理员权限。
下载地址:https://github.com/mubix/netview
参数 | 描述 |
---|---|
-h | 显示帮助菜单 |
-f filename.txt | 指定一个文件从中提取主机列表 |
-e filename.txt | 指定要排除的主机名文件 |
-o filename.txt | 将所有输出重定向到指定文件 |
-d domain | 指定要提取主机列表的域,如果未指定,则使用当前域 |
-g group | 指定用于用户搜寻的组名,如果未指定,则使用“域管理员” |
-c | 检查找到的共享目录/文件,以进行读取访问 |
-i interval | 设置枚举主机之间等待的秒数 |
-j jitter | 应用于间隔的抖动百分比(0 -1.0) |
C:\Users\Riy\Desktop>netview.exe
Netviewer Help
--------------------------------------------------------------------
-d domain : Specifies a domain to pull a list of hosts from
uses current domain if none specifed
-f filename.txt : Speficies a file to pull a list of hosts from
-o filename.txt : Out to file instead of STDOUT
Nmap的NSE脚本
如果存在域账户或者本地账户,就可以使用Nmap的smb-enum-sessions.nse引擎获取远程机器的登陆会话(不需要管理员权限)。
下载地址:https://nmap.org/nsedoc/scripts/smb-enum-sessions.html
脚本 | 描述 |
---|---|
smb-enum-domains | 尝试枚举系统上的域及其策略 |
smb-enum-users | 枚举远程Windows系统上的用户,并提供尽可能多的信息 |
smb-enum-shares | 便利远程主机共享目录 |
smb-enum-processes | 通过SMB从远程服务器提取进程列表,可以知道目标主机运行哪些软件。需要管理员权限 |
smb-enum-sessions | 枚举在本地或通过SMB共享登录到系统的用户 |
smb-os-discovery | 尝试通过SMB协议(端口445或139)确定操作系统,计算机名称,域,工作组和当前时间。 |
C:\Users\Riy\Desktop>nmap --script=smb-enum-sessions 192.168.1.1
Starting Nmap 7.70 ( https://nmap.org ) at 2020-04-20 11:12 ?D1ú±ê×?ê±??
Nmap scan report for 192.168.1.110
Host is up (0.0031s latency).
Not shown: 992 closed ports
PORT STATE SERVICE
135/tcp open msrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds
49152/tcp open unknown
49153/tcp open unknown
49154/tcp open unknown
49156/tcp open unknown
49159/tcp open unknown
MAC Address: 00:0C:29:58:33:FA (VMware)
Nmap done: 1 IP address (1 host up) scanned in 4.67 seconds
PowerView脚本
powerView.ps1是一款依赖powershell和wmi对内网进行查询的常用渗透测试脚本,集成在powersploit工具包中,是一个收集域信息很好用的脚本。
下载地址:https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerView
// Import-Module为powershell导入脚本命令,这里假设我们下载的powerview.ps1脚本在C:\PowerView.ps1
命令格式:powershell.exe -exec bypass -Command "& {Import-Module C:\PowerView.ps1; powerview的命令参数}"
// 定位域管理员
powershell.exe -exec bypass -Command "& {Import-Module C:\PowerView.ps1; Invoke-UserHunter}"
// 更多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-ADObiect: 获取活动目录的对象
Get-NetGPO: 获取域内所有的组策略对象
Get-DomainPolicy: 获取域默认策略或域控制器策略
Invoke-UserHunter: 获取域用户登录的计算机信息及该用户是否有本地管理员权限
Invoke-ProcessHunter: 通过查询域内所有的机器进程找到特定用户
Invoke-UserEvenHunter: 根据用户日志查询某域用户登录过哪些域机器。
Powershell的基础介绍和使用可查看:https://www.cnblogs.com/riyir/p/12585928.html
Empire的user_hunter模块
注意:该项目不再受支持
下载地址:https://github.com/EmpireProject/Empire
// Empire安装使用
wget https://raw.githubusercontent.com/backlion/demo/master/Empire-master.zip
unzip Empire-master.zip
cd Empire-master
cd setup/
./install.sh
cd Empire-master
./empire
笔者在安装Empire时一直报错,后期解决再回来补坑......