首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >内网基础-定位域管理员

内网基础-定位域管理员

作者头像
Gamma实验室
发布2021-03-24 17:03:21
发布2021-03-24 17:03:21
2.2K0
举报
文章被收录于专栏:Gamma安全实验室Gamma安全实验室

前言

在域渗透中,需要对有目的性的渗透,快速控制一个域最快的办法(不包括直接利用提升为域管的漏洞)就是拿到域管理员的hash,然后对域控进行dcsync,拿到域内所有成员的hash,那么我们如何定位域管理员在哪台机器上登录过?

当然窃取凭据域管理员进程也是一个不错的选择!

1.通过net group "domain admins" /domain 列出域管理员组成员

2.通过tasklist /v 列出本地进程的所有者

3.进行交叉处理,找到域管理进程

通过域搭建的原理来看,在机器加入域之后,域管理员组成员会自动加入到本地的管理员组。

定位域管理员的常规渠道:

1.日志(本地管理员日志)

2.会话(域内每台机器的登陆回话)

常用工具

psloggedon.exe

这是微软的自带的pstool工具包的一个非常实用的工具,其原理为检查注册表HKey_USER项的key来查询,会调用NetSession api,所以有些功能需要管理员权限。

命令:

代码语言:javascript
复制
psloggedon 要列出登陆信息的机器名或者用户名#如果没有填 则默认为本地如果指定用户名,则会搜索次用户登陆过哪些机器

描述

-

显示支持的选项和用于输出值的度量单位

-l

仅显示本地登录,而不显示本地和网络资源登录

-x

不显示登录时间

\computername

指定要为其列出登录信息的计算机的名称

username

指定用户名,在网络中搜索该用户登陆的计算机

配合net localgroup administrators 找到域管登陆过的机器

PVEFindaduser.exe

用于查找AD用户的登录位置、枚举域用户,以及查找在特定计算机上登陆的用户,包括本地用户、通过RDP登陆的用户、用于运行服务和计划任务的用户。

命令:

代码语言:javascript
复制
PVEFindADUser.exe -current#将获取域内所有计算机上当前登陆的所有用户结果保存到report.csv文件

参数

描述

-last

将获取目标计算机的最后一个登陆用户

-target

指定要查询的计算机

-current ["username"]

-current参数显示每台PC上当前登录的用户在域中。如果指定用户名(在引号之间),则仅将显示该特定用户登录的PC

-noping

阻止尝试枚举用户登录名之前对目标计算机执行ping命令

netview.exe

netview.exe是一个枚举工具,使用WinAPI枚举系统,利用NetSessionEnum找寻登录会话,利用NetShareEnum找寻共享,利用NetWkstaUserEnum枚举登录的用户,netview.exe还可以查询共享入口和有价值的用户。

代码语言:javascript
复制
netview.exe <参数>

-h

显示帮助信息

-f

filename.txt:指定要提取主机列表的文件

-e

filename.txt:指定要排除的主机名的文件

-o

filename.txt:将所有输出重定向到指定的文件

-d

filename.txt:指定要提取主机列表的域。如果没有指定,则从当前域中提取主机列表

-g

group:指定搜索的组名。如果没有指定,则在Domain Admins组中搜索

-c

对已找到的共享目录/文件的访问权限进行检查

nmap 脚本

可以使用nmap的smb-enum-sessions.nse引擎获取远程主机的登陆会话(不需要管理员权限)

其他域渗透脚本:

1.smb-enum-domains.nse:对域控制器进行信息收集,可以获取主机信息、用户、可使用密码策略的用户等

2.smb-enum-users.nse:在进行域渗透时,如获取了域内某台主机权限,但权限有限,无法获取更多的域用户信息,可借助此脚本对域控制器进行扫描

3.smb-enum-shares.nse:遍历远程主机的共享目录

4.smb-enum-processes.nse:对主机的系统进程进行遍历,通过此信息,可知道目标主机运行着哪些软件

5.smb-enum-sessions.nse:获取域内主机的用户登陆会话,查看当前是否有用户登陆

6.smb-enum-discovery.nse:收集目标主机的操作系统、计算机名、域名、域林名称、NetBIOS机器名、NetBIOS域名、工作组、系统时间等信息

Powerview脚本

主要涉及到定位关键用户的功能如下两个模块:

Invoke-StealthUserHunter:只需要进行一次查询,就可以获取域里面的所有用户,使用方法为,从user.HomeDirectories中提取所有用户,并对没太服务器进行Get-NetSession获取。因不需要使用Invoke-UserHunter对没太机器进行操作,所以这个方法的隐蔽性相对较高(但涉及的机器不一定全面)。PowerView默认使用Invoke-StealthUserHunter如果找不到需要的信息,就使用Invoke-UserHunter

Invoke-UserHunter:找到域内特定的用户群,接受用户名、用户了表和域组查询,接收一个主机列表或查询可用的主机域名。可以使用Get-NetSession和Get-NetLoggedon(调用NetSessionEnum和NetWkstaUserEnumAPI)扫描每台服务器并对扫描结果进行比较,从而找出目标用户集,在使用时不需要管理员权限,在本地执行该脚本

Empire 模块

Empire 模块中也有功能和invoke-userhunter一样的模块,user_hunter,Empire我平时也不咋用,可能是我太菜了,还得反弹shell到Empire属实有点麻烦,了解了解就行。

实际的域里面,大规模的枚举是会惊动ids等防护设备的

介绍完工具再来说说手动:

手工配合Netsess筛选数据

首先收集域控列表:

代码语言:javascript
复制
net group “Domain Controllers” /domainNslookup –type=SRV _ldap._tcp。。。。。。。。

收集域管列表

代码语言:javascript
复制
net group “Domain Admins” /domain

通过Netsess.exe查询每个域控制器,收集所有活动域会话的列表

Netsess.exe -help #获取帮助

  • -full Full session info (requires admin)
  • -h servername Alternate method to specify server
  • -u username Username to filter for
  • -c client name Alternate method to specify client name

cmd联合命令:

代码语言:javascript
复制
FOR /F %i in (dc.txt) do @echo [+] Querying DC %i && @netsess -h %i 2>nul > sessions.txt && FOR /F %a in (domain_admins.txt) DO @type sessions.txt | @findstr /I %a

Dc.txt为收集的域控制器列表,domain_admins.txt为收集的域管列表

Get-NetLocalGroupMember 枚举远程计算机本地组

安装Recon模块

代码语言:javascript
复制
Set-ExecutionPolicy -ExecutionPolicy Bypassimport-module .\Recon.psd1

指定远程计算机,指定枚举管理员组

代码语言:javascript
复制
Get-NetLocalGroupMember -ComputerName 主机名 -GroupName administrators
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Gamma安全实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档