> 本文由 [简悦 SimpRead](http://ksria.com/simpread/) 转码, 原文地址 [mp.weixin.qq.com](https://mp.weixin.qq.com/s/JRBqGzG5BVfZzWQR3iq0VA)
点击蓝字关注我哦
前言
在域渗透中,需要对有目的性的渗透,快速控制一个域最快的办法(不包括直接利用提升为域管的漏洞)就是拿到域管理员的 hash,然后对域控进行 dcsync,拿到域内所有成员的 hash,那么我们如何定位域管理员在哪台机器上登录过?
当然窃取凭据域管理员进程也是一个不错的选择!
1. 通过 net group "domain admins" /domain 列出域管理员组成员
2. 通过 tasklist /v 列出本地进程的所有者
3. 进行交叉处理,找到域管理进程
通过域搭建的原理来看,在机器加入域之后,域管理员组成员会自动加入到本地的管理员组。
定位域管理员的常规渠道:
1. 日志(本地管理员日志)
2. 会话(域内每台机器的登陆回话)
常用工具
**psloggedon.exe**
这是微软的自带的 pstool 工具包的一个非常实用的工具,其原理为检查注册表 HKey_USER 项的 key 来查询,会调用 NetSession api, 所以有些功能需要管理员权限。
命令:
```
psloggedon 要列出登陆信息的机器名或者用户名#如果没有填 则默认为本地
如果指定用户名,则会搜索次用户登陆过哪些机器
```
描述
|
|
- | 显示支持的选项和用于输出值的度量单位 |
-l | 仅显示本地登录,而不显示本地和网络资源登录 |
-x | 不显示登录时间 |
\computername | 指定要为其列出登录信息的计算机的名称 |
username | 指定用户名,在网络中搜索该用户登陆的计算机 |
配合 net localgroup administrators 找到域管登陆过的机器
**PVEFindaduser.exe**
用于查找 AD 用户的登录位置、枚举域用户,以及查找在特定计算机上登陆的用户,包括本地用户、通过 RDP 登陆的用户、用于运行服务和计划任务的用户。
命令:
```
PVEFindADUser.exe -current#将获取域内所有计算机上当前登陆的所有用户
结果保存到report.csv文件
```
参数 | 描述 |
-last | 将获取目标计算机的最后一个登陆用户 |
-target | 指定要查询的计算机 |
-current ["username"] | -current 参数显示每台 PC 上当前登录的用户在域中。如果指定用户名(在引号之间),则仅将显示该特定用户登录的 PC |
-noping | 阻止尝试枚举用户登录名之前对目标计算机执行 ping 命令 |
**netview.exe**
netview.exe 是一个枚举工具,使用 WinAPI 枚举系统,利用 NetSessionEnum 找寻登录会话,利用 NetShareEnum 找寻共享,利用 NetWkstaUserEnum 枚举登录的用户,netview.exe 还可以查询共享入口和有价值的用户。
```
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 筛选数据**
首先收集域控列表:
```
net group “Domain Controllers” /domain
Nslookup –type=SRV _ldap._tcp
。。。。。。。。
```
收集域管列表
```
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 联合命令:
```
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 模块
```
Set-ExecutionPolicy -ExecutionPolicy Bypass
import-module .\Recon.psd1
```
指定远程计算机,指定枚举管理员组
```
Get-NetLocalGroupMember -ComputerName 主机名 -GroupName administrators
```

END


**看完记得点赞,关注哟,爱您!**
**请严格遵守网络安全法相关条例!此分享主要用于学习,切勿走上违法犯罪的不归路,一切后果自付!**
关注此公众号,回复 "Gamma" 关键字免费领取一套网络安全视频以及相关书籍,公众号内还有收集的常用工具!
**在看你就赞赞我!**




扫码关注我们

扫码领 hacker 资料,常用工具,以及各种福利

转载是一种动力 分享是一种美德