定位域管理员

域管理员定位概述

在一个域中,当计算机加入域后,会默认给域管理员赋予本地系统管理员权限。因此,域管理员均可以访问本地计算机,且具备完全控制权限。

定位域内管理员的两种渠道:日志和会话。
日志是指本地机器的管理员日志,可以使用脚本或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时一直报错,后期解决再回来补坑......

posted @ 2020-04-20 14:40  riyir  阅读(1267)  评论(0编辑  收藏