1、判断是否存在域
ipconfig
查看网关 IP 地址、DNS 的 IP 地址、域名、本机是否和 DNS 服务器处于同一网段。
ipconfig /all
然后,通过反向解析查询命令 nslookup 解析域名的 IP 地址,查看是否与 DNS 服务器为同一 IP
系统详细信息
systeminfo
当前登录域与域用户
net config workstation
判断主域
net time /domain
执行以上命令后,通常有三种情况:
存在域,但当前用户不是域用户
存在域,且当前用户是域用户
当前网络环境为工作组,不存在域,如图:
2、收集域内基础信息
查看域
net view /domain
查看域内计算机
net view /domain:domain_name
查看域内用户组列表
net group /domain
查看域用户组信息
net group "Enterprise Admins" /domain
查看域密码策略信息
net accounts /domain
查看域信任信息
nltest /domain_trusts
3、收集域用户和管理员信息
查询域用户列表
net user /domain
查询域用户详细信息
wmic useraccount get /all
查询存在的用户
dsquery user
4、查找域控制器
查看域控器的机器名
nltest /DCLIST:domain_name
查看域控器的主机名
nslookup -type=SRV _ldap._tcp
查看域控器组
net group "domain controllers" /domain
5、定位域管理员
psloggedon
在 Windows
上使用
net session
可以查看谁使用了本机资源,但不能查看谁在使用远程计算机资源、谁登录了本地或远程计算机,使用
psloggedon
可以查看本地登录的用户和通过本地计算机或远程计算机进行资源登录的用户。
psloggedon
下载地址:
https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon
PVEFindADUser
PVEFindADUser 用于查找活动目录用户登录的位置、枚举域用户,以及查找在特定计算机上登录的用户,包括本地用户、通过
RDP
登录的用户、用于运行服务器和计划任务的用户,该工具需要管理员权限。
PVEFindADUser
下载地址:
https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn
netview
netview 是一个枚举工具,使用
WinAPI
枚举系统,利用
NetSessionEnum
寻找登录会话,利用
NetShareEnum
寻找共享,利用
NetWkstaUserEnum
枚举登录的用户,
netview
可以查询共享入口和有价值的
用户,其绝大部分功能无需管理员权限就可使用。
Netview
下载地址:
https://github.com/mubix/netview
NSE 脚本
常用的 NSE 脚本如下:
smb-enum-domains.nse
:
对域控制器进行信息收集,可以获取主机信息、用户、可使用密码策略的用户等
smb-enum-users.nse
:在进行域渗透时,如获取了域内某台主机权限,但权限有限,无法获取更多的域户信息,可借助此脚本对域控制器进行扫描
smb-enum-shares.nse
:
遍历远程主机的共享目录
smb-enum-processes.nse
:
对主机的系统进程进行遍历,通过此信息,可知道目标主机运行着哪些软件
smb-enum-sessions.nse
:
获取域内主机的用户登陆会话,查看当前是否有用户登陆,且不需要管理员权限
smb-os-discovery.nse
:
收集目标主机的操作系统、计算机名、域名、域林名称、
NetBIOS
机器名、
NetBIOS
域名、工作组、系统时间等信息
NES
脚本下载地址:
https://nmap.org/nsedoc/scripts/
PowerView 脚本
PowerView 脚本中包含了一系列的
powershell
脚本,信息收集相关的脚本有
Invoke-StealthUserHunter
、
Invoke-UserHunter
等,要使用
PowerView
脚本需要将
PowerView
文件夹复制到
PowerShell
的 Module 文件夹内,
Module
文件夹路径可以通过在
PowerShell
中输入
$Env:PSModulePath
查看,我这里将其复制到了
C:\Program Files\WindowsPowerShell\Modules
文件夹内。
接着在 powershell
中输入
Import-Module PowerView
即可导入
PowerView
,使用
Get-Command -Module PowerView
可查看已导入的
PowerView
命令
PowerView
脚本下载地址:
http
s:/
/github.com/PowerShellEmpire/PowerTools/tree/master/PowerV
iew
注:在打开上面的下载地址时会看到该项目已被转移到其他项目下,但是当我在使用新版本的
PowerView
脚本时,发现找不到
Invoke-StealthUserHunter
命令,而旧版本的
PowerView
有
Invoke-
StealthUserHunter
命令
Invoke-StealthUserHunter:只需要进行一次查询,就可以获取域里面的所有用户。其原理为:从
user.HomeDirectories
中提取所有用户,并对每个服务器进行
Get-NetSession
获取。因不需要使用
Invoke-UserHunter
对每台机器进行操作,所以这个方法的隐蔽性相对较高(但涉及的机器不一定全面)。
PowerView
默认使用
Invoke-StealthUserHunter
如果找不到需要的信息,就会使用
Invoke- UserHunter
.
Invoke-UserHunter:找到域内特定的用户群,接受用户名、用户列表和域组查询,接收一个主机列表或查询可用的主机域名。使用
Get-NetSession
和
Get-NetLoggedon
(
调用
NetSessionEnum
和 NetWkstaUserEnumAPI )扫描每台服务器并对扫描结果进行比较,从而找出目标用户集,在使用时不需要管理员权限。
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-ADObject
:获取活动目录的对象
Get-NetGPO
:获取域内所有组的策略对象
Get-DomainPolicy
:获取域默认策略或域控制器策略
Invoke-UserHunter
:获取域用户登陆的计算机信息及该用户是否有本地管理员权限
Invoke-ProcessHunter
:通过查询域内所有的机器进程找到特定用户
Invoke-UserEventHunter
:根据用户日志查询某域用户登陆过哪些域机器
Empire
Empire
中的
user_hunter
模块用于查找域管理员登陆的机器,使用
powershell/situational_awareness/network/powerview/user_hunter
模块,可查看哪个用户登陆哪台主机。
6、查找域管理员进程
获取域管理员列表
net group "Domain Admins" /domain
列出本机的所有进程及进程用户
tasklist /v
如果在列出的进程中看到了用户名为管理员用户名的话,便是找到了域管理员进程。