1. 用户权限
1.1. 查看当前用户
1
2
3
| whoami
# 域名\用户名
# 机器名\用户名
|
在域中本地普通用户只能查询本机相关信息,不能查询域内信息,而本地管理员用户和域内用户可以查询域内信息。
其原理是:域内的所有查询都是通过域控制器实现的(基于LDAP协议),而这个查询需要经过权限认证,所以,只有域用户才拥有这个权限;当域用户执行查询命令时,会自动使用 Kerberos 协议进行认证,无须额外输入账号和密码。
1.2. 用户SID

1.3. 用户详细信息
1
2
| # 查询域环境中用户 zs 的详细信息
net user lisi /domain
|
2. 判断是否存在域
2.1. ipconfig命令
1
2
| # 网络配置详细信息
ipconfig /all
|

然后,通过命令nslookup来解析域名的IP地址。用解析得到的IP地址进行对比,判断域控制器和DNS服务器是否在同一台服务器上

2.2. 查看系统详细信息

“Domain”或”域”即域名,当前域名为ly08.com,如果”域”为”WORKGROUP”,表示当前服务器不在域内
2.3. 当前登录域及登录用户信息
“工作站域DNS名称”为域名(如果为WORKGROUP”,表示当前为非域环境),“登录域”用于表示当前登录用户是域用户还是本地用户,此处表示当前登录的用户是域用户。
2.4. 查询时间判断
1
2
| # 指定在域环境中查询时间,通常是从域控制器获取
net time /domain
|
执行以上命令后,通常有如下三种情况:
- 存在域,但当前用户不是域用户

- 存在域,且当前用户是域用户

- 当前网络环境为工作组,不存在域

3. 探测域内存活主机
3.1. NetBIOS 快速探测内网
NetBIOS 是局域网程序使用的一种应用程序编程接口(API),用于局域网中设备之间的通信和资源共享。NetBIOS 也是计算机的标识名,主要用于局域网中计算机的互访。NetBIOS 的工作流程就是正常的机器名解析查询应答过程,因此推荐优先使用。
nbtscan 是一个命令行工具,用于扫描本地或远程 TCP/IP 网络上的开放 NetBIOS 名称服务器。 nbtscan 有 Windows 和 Linux 两个版本,体积很小,不需要安装特殊的库或 DLL 就能使用。
NetBIOS 的使用方法比较简单。将其上传到目标主机中,然后直接输入 IP 地址范围并运行。
下载地址: nbtscan - NETBIOS nameserver scanner
1
2
| # 对当前网段进行NetBIOS扫描
nbtscan-1.0.35.exe 192.168.66.0/24
|
显示结果的第一列为 IP 地址,第二列为机器名和所在的域名称,最后一列是机器所开启的服务的列表,具体含义如下:
Token |
含义 |
SHARING |
该机器中存在正在运行的文件和打印共享服务,但不一定有内容共享 |
DC |
该机器可能是域控制器 |
U=USER |
该机器中可能有登录名为 User 的用户 |
IIS |
该机器中可能安装了 IIS 服务器 |
EXCHANGE |
该机器中可能安装了 Exchange 服务器 |
NOTES |
该机器中可能安装了 Lotus Notes 电子邮件客户端 |
? |
没有识别出该机器的 NetBIOS 资源(可以使用-F 选项再次扫描) |
3.2. ICMP 协议快速探测内网
依次对内网中的每个 IP 地址执行 ping 命令,可以快速找出内网中所有存活的主机。在渗透测试中,可以使用一下批处理脚本,快速扫描一个子网内的所有在线主机
1
| for /L %I in (1,1,254) DO @ping -w 1 -n 1 192.168.163.%I | findstr "TTL="
|
3.3. 通过 ARP 扫描探测内网
下载 arp-scan:QbsuranAlang/arp-scan-windows-
1
| arp-scan.exe -t 192.168.66.0/24
|
下载 fscan:Releases · shadow1ng/fscan
1
| fscan.exe -h 192.168.1.0/24 -m findnet
|
4. 收集域内基础信息
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| # 查询域
net view /domain
# 查询域内所有主机
net view /domain:work
# 查询域内所有用户组列表
net group /domain
# 查询所有域成员计算机列表
net group "domain computers" /domain
# 获取域密码信息
net accounts /domain
# 获取域信任信息
nltest /domain_trusts
# 查找域控制器
Nslookup -type=SRV _ldap._tcp # 查看域控制器的主机名
net group "domain controllers" /domain # 查看域控制器组
|
5. 定位域管理员
1
2
3
4
5
6
7
8
9
10
| # 获取域内用户的详细信息
wmic useraccount get /all
# 查询本地管理员组用户
net localgroup administrators
# 查询 Domain Admins(域管理员) 组成员
net group "domain admins" /domain
# 查询 Enterprise Admins(企业管理员) 组成员
net group "Enterprise Admins" /domain
# 列出本机的所有进程及进程用户
tasklist /v
|
常用的域管理员定位工具有 psloggedon.exe、PVEFindADUser.exe、netsess.exe,以及 hunter、 NetView 等。在 PowerShell 中,常用的工具是 PowerView。
5.1. psloggedon.exe
下载: PsLoggedOn - Sysinternals
1
2
3
4
5
6
| psloggedon [- ] [-l] [-x] [\\computername | username]
- #显示支持的选项和用于输出值的度量单位。
-l #仅显示本地登录,而不是本地和网络资源登录。
-x #不显示登录时间。
\\computername # 指定要列出登录信息的计算机的名称
username # 指定用户名,在网络中搜索该用户登录的计算机
|
5.2. PVEFindADUser.exe
下载:Tools/AD/ADFindUsersLoggedOn at master · chrisdee/Tools
1
2
3
| # 显示域中所有计算机上当前登录的所有用户
# 查询结果将被输出 到report.csv文件中
pveadfindaduser.exe -current
|
1
2
3
4
5
6
7
8
9
10
11
12
| #参数说明
-h #显示帮助信息。
-u #检查是否有更新版本。
-v #显示更多的详细信息(详细模式)。
-current ["username"] #显示域中每台计算机上当前登录的用户。如果指定了用户名(用引号括起来),则仅显示该用户登录的 计算机。 如果未指定用户名,将显示所有当前有用户登录的计算机报告。
-last ["username"] #显示域中每台计算机上最后登录的用户。如果指定了用户名(用引号括起来),则仅显示最后登录该用 户的计算机。 如果未指定用户名,将显示所有计算机上最后登录用户的报告。 username格式 # 用户名应包含域名,格式为:DOMAIN\username。如果使用格式 DOMAIN\*username*(带两个星 号),将显示所有包含 username 字符串的用户。
-noping #在尝试枚举用户登录信息之前,不对目标计算机进行 ping 检测。
-p <nr of pings> #如果启用了 ping,可以设置 ping 的次数以验证主机是否在线。如果未指 定此参数,默认发送 2 次 ping。
-rootpath rootpath #指定查询的根路径,需使用 distinguishedName(DN) 格式。示例: OU=Computers,dc=domain,dc=com。
-target hostname.domain.com,hostname2.domain.com,hostname3.domain.com #可选参数,指定要查询的主机列表(FQDN 格式)。如果未指定此参数,查询将在当前域的所有主机上 执行。
-os #将操作系统信息写入 cvs 文件中。如果直接查询特定计算机,此选项不会输出任何内容。
-stopfound #在找到第一个匹配项后停止搜索。此参数仅在查询当前登录用户时有效。 '输出说明' #查询结果将同时输出到控制台和一个名为 report.csv 的文件中。
|
5.3. netview.exe
Netview 是一个枚举工具,下载:Releases · mubix/netview
1
2
3
4
5
6
7
8
9
10
| netview.exe -d work # 从指定域来枚举主机
-h :显示此帮助菜单
-f filename.txt :指定要从中提取主机列表的文件
-e filename.txt :指定要排除的主机名文件
-o filename.txt :输出到文件而不是 STDOUT
-d domain :指定要从中提取主机列表的域如果未指定,则使用当前域
-g group : 指定用户搜寻的组名如果未指定,则使用 'Domain Admins'
-c :检查找到的共享以进行读取访问
-i interval :枚举主机之间等待的秒数
-j jitter :应用于间隔的抖动百分比 (0.0-1.0)
|