参考书籍《内网安全攻防》.徐焱 贾晓璐 著
如有侵权,请联系,立删

收集域内基础信息

需要域用户或system权限
1.查询域

net view /domain

需要关闭防火墙执行

2.查询域内所有计算机

net view /domain:GOD    //GOD为查询到的域 根据实际修改

3.查询域内所有用户组列表

net group /domain

4.查询所有域成员计算机列表

net group "domain computers" /domain

5.获取密码信息

net accounts /domain

6.获取域信任信息

nltest /domain_trusts

查找域控制器

1.查看域控制器的机器名

nltest /DCLIST:GOD      //GOD为查询到的域 根据实际修改

2.查看域控制器的主机名

nslookup -type=SRV _1dap._tcp

3.查看当前时间
通常情况下时间服务器作为主域控制器

net time /domain

4.查看域控制器组

net group "Domain Controllers" /domain

发现机器名为GOD的域控制器
server的服务器上可执行

netdom query dc

获取域内的用户和管理员信息

查询所有域用户列表

1.向域控制器进行查询
执行如下命令,向域控制器进行查询。其中krbtgt用户不仅可以创建票据传授权服务(TGS)的加密密钥,还可以实现多种域内权限持久化方法

net user /domain

net group "Domain users" /domian

2.获取域内用户的详细信息

wmic useraccount get /all

3.查看存在的用户

dsquery user    //在server服务器上可执行

常用dsquery命令

dsquery computer 查找目录中的计算机
dsquery contact 查找目录中的联系人
dsquery subnet 查找目录中的子网
dsquery group 查找目录中的组
dsquery ou 查找目录中的组织单位
dsquery site 查找目录中的站点
dsquery server 查找目录中的AD DC/LDS实例
dsquery user 查找目录中的用户
dsquery quota 查找目录中的配额规定
dsquery partition 查找目录中的分区
dsquery * 用通用的LDAP查询来查找目录中的任何对象

4.查询本地管理员组用户

net localgroup administrators

可以看到本地管理员组内有3个用户1个组

查询域管理员用户组

1.查询域管理员用户

net group "domain admins" /domain

2.查询域管理员用户组

net group "Enterprise Admins" /domain

定位域管理员

当计算机被加入域后,系统会自动将域管理员组添加到本地系统管理员组中。因此域管理员组的成员均可访问本地计算机,且具备完全控制权限。在环境复杂的内网中定位域管理员会事半功倍。假设已经在Windows域中取得了普通用户权限,希望在域内横向移动,需要知道域内用户登录位置、他是否是任何系统的本地管理员、他所属的组、他是否有权访问文件共享等。枚举主机、用户和组,有助于更好的了解域的布局

1.psloggedon.exe
使用psloggedon.exe指定计算机名可以查看本地登录用户和通过本地计算机或远程计算机的资源登录用户。如果指定的是用户名,psloggedon.exe会搜索网络邻居中的计算机,并显示该用户当前是否是已登录。其原理是通过检查注册表HKEY_USERS项的key值来查询谁登陆过,某些功能需要管理员权限才能使用

psloggedon.exe [-] [-l] [-x] [\computername | username]

-:显示支持的选项和用于输出值的单位
-l:仅显示本地登录,不显示本地和网络资源登录
-x:不显示登录时间
\computername:指定要列出登录信息的计算机名
username:指定用户名,在网络中搜索该用户登录的计算机

2.PVEFindADUser.exe
运行该工具的计算机需要配置.NET Framework2.0环境,并且需要管理员权限

PVEFindADUser.exe -current

-h:显示帮助信息
-current["username"]:如果仅指定-current参数,将获取目标计算机上当前登录的所有用户。如果指定了用户名(DomainUsername),则显示该用户登录的计算机
-last["username"]:如果仅指定-last参数,将获取目标计算机上最后一个登录用户。如果指定了用户名(DomainUsername),则显示此用户上次登录的计算机。根据网络的安全策略,可能会隐藏最后一个登录用户的用户名,此时使用该工具可能无法得到用户名
-noping:阻止该工具在获取用户登陆信息之前对目标执行ping命令
-target:可选参数,用于指定要查询的主机。如果未指定该参数,将查询域中的所有主机。如果指定了此参数,主机名列表由逗号分隔
直接运行"pvefindaduser.exe -current",即可显示域中所有计算机上当前登录的用户

3.netview.exe
netview.exe是一个枚举工具,使用WinAPI枚举系统

-h:显示帮助信息
-f filename.txt:指定要提取主机列表上的文件
-e fliename.txt:指定要排除的文件
-o filename.txt:将所有输出重定向到指定文件
-d domain:指定要提取主机列表的域。如果没有指定,则从当前域中提取主机列表
-g group:指定搜索的组名。如果没有指定,则从Domain Admin组中搜索
-c:对已找到的共享目录/文件的访问权限进行检查

4.nmap的NSE脚本(smb-enum-session.nse)

nmap --script=smb-enum-sessions ip

5.PowerView脚本

powershell.exe -exec bypass -Command "& {Import-Module C:usersadministratordesktoppowerview.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: 根据用户日志查询某域用户登录过哪些域机器

内容来源于网络如有侵权请私信删除