Bootstrap

[内网信息收集] 域信息收集 —— 域环境中定位域管理员

关注这个专栏的其他相关笔记:[内网安全] 内网渗透 - 学习手册-CSDN博客

在内网中,通常会部署大量的网络安全系统和设备,例如 IDS、IPS、日志审计、安全网关、防病毒软件等。在域网络攻击测试中,当我们获取到域内的一个支点后,接下来就要尝试获取域管理员权限。

在一个域中,当计算机加入域后,会默认给域管理员组赋予本地系统管理员权限。也就是说,当你的机器加入域后,成为域成员主机后,系统会自动将域管理员组成员添加到本地系统管理员组中,因此域管理员组的成员就都可以访问本地计算机,而且具有相当高的权限。

那么本章,我们就是尝试定位域管理员登录过的机器,为我们后面的渗透提供信息支撑。

0x01:定位域管 — 谁是域管理员?

要定位域管,我们首先得了解谁是域管,即 “域管理员组” 成员有哪些?通过下面的命令,我们可以对当前的域环境有一个大致的了解,并且能知道谁是域管理员组成员(具体用法看之前的文章):

net config workstation                # 判断是否是域环境
net view /domain                      # 查看当前域名
net view /domain:域名                  # 查看域内部所有计算机名
net group /domain                     # 查看域内部所有用户组列表
net group /domain "domain computers"  # 查看所有域成员计算机列表
net accounts /domain                  # 查看域密码规则信息
nltest /domain_trusts                 # 获取域信任信息
nltest /DCLIST:域名                    # 查看域控制器机器名
net time /domain       # 查看当前时间,因为时间服务器也是主域服务器,可以看到域服务器的机器名
net group /domain "Domain Controllers" # 查看域控制器组,因为可能有不止一台域控,有主备之分
net user /domain                       # 查询域内用户,会看到熟悉的 krbtgt 用户
wmic useraccount get /all              # 获取域内用户详细信息
dsquery user                           # 查看域内存在的用户
net localgroup administrators          # 查看本地管理员用户组
net group /domain "domain admins"      # 查询域管理员用户
net group /domain "Enterprise Admins"  # 查询企业管理员用户

比如,通过上面的语句,我们发现在 Domain Admins (别忘了查询企业管理员组中的成员)中包含两个管理员账户,分别是 Blue17 和 Administrator,那么接下来,我们就要定位它们两个登录过的域内计算机。

0x02:Psloggedom.exe 定位域管

0x0201:Psloggedom.exe 工具简介

附件资源

Psloggedon.exe 可以查看本地登录的用户和用过本地计算机或远程计算机的资源登录的用户。如果指定的是用户名而不是计算机名,Psloggedon.exe 还会搜索网上邻居中的计算机,并显示该用户当前是否已经登录。

Psloggedon.exe 的原理是通过检查注册表 HKEY_USERS 项的 Key 值来查询谁登陆过(需要调用 NetSessionEnum API),某些功能需要管理员权限才能使用。

0x0202:Psloggedom.exe 快速使用

psloggedon.exe [‐] [‐l] [‐x] [\\computername或username]

将上面提供的压缩包解压,找到解压后文件夹中的 psloggedon.exe,上传到靶机中,然后就可以通过命令行使用它了。

1. 查看登录过本地的计算机

使用下面的命令可以查看登录过本地的计算机,如果当前权限不是最高管理员权限(没有绕过 UAC)它是会弹窗的:

psloggedon.exe -l # -l 仅显示本地登录,不显示本地和网络资源登录

2. 查询远程计算机当前登录的用户名

使用下面的命令可以查询指定计算机当前登录的用户名(如果计算机处于关机状态是查询不到的):

psloggedon.exe \\PC-2003  # 查询 PC-2003 机器上正在登录的用户

3. 查询域内账号登录过的计算机

使用如下命令可以查询到域内指定账号登录过的计算机:

psloggedon.exe zs   # 查询域内的 zs 账号登录过的电脑信息

0x03:PVEDFindADUser.exe 定位域管

0x0301:PVEDFindADUser.exe 工具简介

附件资源

PVEDFindADUser.exe 可用于查找 Active Directory 用户登录的位置,枚举域用户,以及查找在特定计算机上登录的用户,包括本地用户、通过 RDP 登录的用户、用于运行服务和计划任务的用户账户。

运行该工具需要有 .NETFramework 2.0,并且需要具有管理员权限。

0x0302:PVEDFindADUser.exe 快速使用

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

1. 查询域中所有主机当前登录的用户

使用下面的命令可以显示当前域中所有计算机当前登录的用户(查询完后,他会自动将数据写到 report.csv 文件中):

pvedfindaduser.exe -current # 需要切换到 SYSTEM 用户(域用户)

2. 查询指定用户正在登录的计算机名

使用下面这条命令可以查询指定用户正在登录的计算机名:

pvedfindaduser.exe -current hack3rx/blue17 # 查询域用户 blue17 登录过的计算机

0x04:NetView.exe 定位域管

0x0401:NetView.exe 工具简介

附件资源

NetView.exe 是一个枚举工具,使用 WinAPI 枚举系统,利用 NetSessionEnum 寻找登录会话,利用 NetShareEnum 寻找共享,利用 NetWkstaUserEnum 枚举登录的用户。

NetView.exe 能够查询共享入口和有价值的用户,并且该工具绝大部分功能都是不需要管理员权限就可以使用的。

0x0402:NetView.exe 快速使用

使用语法:netview.exe <参数>
‐h:显示帮助菜单。
‐f filename.txt:指定从中提取主机列表的文件。
‐e filename.txt:指定要排除的主机名文件。
‐o filename.txt:将所有输出重定向到文件。
‐d domain:指定从中提取主机列表的域。如果没有指定,则使用当前域。
‐g group:指定用户搜寻的组名。如果没有指定,则使用 Domain Admins。
‐c:检查对已找到共享的访问权限。

1. 枚举指定域中的信息

使用下面这条命令可以让 netview.exe 枚举指定域(适用于多个域的情况)中的信息,包括 IP、共享目录、目标机器当前登录的用户:

netview.exe -d hack # 枚举 hack 域中的信息

0x05:NSE 脚本定位域管

如果存在域账户或者本地账户就可以使用 Nmap 的 smb-enum-sessions.nes 引擎获取远程计算机的登录会话(不需要管理员权限)。

值得注意的是,该脚本依赖于 Nmap 而 Nmap 需要下载,如果你不想在目标内网机器上下载的话,建议在目标内网机器上搭建隧道,通过隧道代理,将攻击流量传入内网中。

以下是 Nmap 常用的一些针对内网进行信息收集的脚本:

smb‐enum‐domain
    # 对域控制器进行信息收集,可以获取主机的信息、用户、可使用密码策略的用户等
smb‐enum‐users
    # 在进行域渗透测试时,如果获得了域内某台主机的权限,无法获取更多的域用户信息,就可以借助这个脚本对域控制器进行扫描
smb‐enum‐shares
    # 遍历远程主机的共享目录
smb‐enum‐processes
    # 对主机的系统进行遍历。通过这些信息,可以知道目标主机上正在运行哪些软件。
smb‐enum‐sessions
    # 获取域内主机的用户登录会话,查看当前是否有用户登录。
smb‐os‐discovery
    # 收集目标主机的操作系统、计算机名、域名域林名称、NetBIOS机器名、NetBIOS域名,工作组。

0x06:PowerView.ps1 定位域管

0x0601:PowerView.ps1 工具简介

PowerView 脚本中包含了一系列的 powershell 脚本,信息收集相关的脚本主要有 Invoke-StealthUserHunter、Invoke-UserHunter 等。

由于 PowerView 是 PowerShell 脚本,所以其可以通过三种方式进行利用(之前的文章介绍过,这里主要是再提一下):

  • 上传使用:将 .ps1 文件上传到靶机后使用。

  • 远程加载:使用 Web 服务器,让目标远程加载恶意的 .ps1 脚本内容并执行,进行无文件落地攻击。

  • CS 本地导入:通过 Cobalt Strike 进行本地导入,不用 Web 服务器也能进行无文件落地攻击。

0x0602:PowerView.ps1 快速使用

将 PowerView.ps1 上传到靶机中,然后运行下面的命令即可使用该脚本进行信息收集(需要使用域用户):

powershell.exe -exec bypass -command "& { import-module .\PowerView.ps1;Invoke-UserHunter}"


针对内网收集的这些工具,建议读者自己尝试,找到适合自己的。不同工具的利用链可能都不太一样,有的能扫出来,有的就是扫不出来,建议读者多多尝试。另外,建议尝试的时候每个工具采用不同的用户来进行尝试,比如本地用户(Administrator)和域内用户(SYSTEM),可能会有惊喜。

;