好几天没学内网了,回顾一下内网三主要是在本地计算机组中收集信息,今天要学的是如何在域内收集信息。本次实验是同时在本地组用户和域用户共同实验的。
查看网关IP地址、DNS的IP地址、域名、本机是否和DNS服务器处于同一网段的信息
ipconfig /all
可以通过nslookup或者直接ping来解析域名的IP地址
nslookup可以判断域控和DNS服务器是否在同一台服务器上。
systeminfo
“登录服务器”为域控。如果域为一个域名如上"god.org",则说明当前服务器在域内,但是如果遇到域为“WORKGROUP”,表示当前服务器不在域内,如下。
net config workstation
“工作站域DNS名称” 即为域名,同理如果是WORKGROUP表示为非域环境,“登录域” 用于判断当前登录用户是域用户还是本地用户。
net time /domain
不存在域:
存在域,且当前用户是域用户:
net view /domain
net view /domian:域
可以看到域内有三台主机,分别是\\DC、\\OWA、\\STU1。
net group /domain
net group "domain computers" /domain
net accounts /domain
nltest /domain_trusts
这个是第一次说到的域和域之间会通过信任关系建立连接。
nltest /DCLIST:域(GOD)
netdom query pdc
一般DC是域控,但是并不排除我为了误导你故意把一个普通域用户设置为DC然后把域控名设置如上“OWA”。所以可以使用nltest这个命令查询一下。
Nslookup -type=SRV _ldap._tcp
主机名为“owa”,小写的域控机器名。
这个上面提到过
net group "Domain Controllers" /domain
虽然我的虚拟机只设置了一台DC域控,但在内网渗透第一篇文章我就写了,一个域内一般存在两台DC,有一台是备用的,防止服务器瘫痪整个域失去域控。
net user /domain
wmic useraccount get /all
这个看的头疼
dsquery user
可以看到域内存在5个用户。
常用的dsquery命令如下:
dsquery computer | 查找目录中的计算机 |
dsquery contact | 查找目录中的联系人 |
dsquery subnet | 查找目录中的子网 |
dsquery group | 查找目录中的组 |
dsquery ou | 查找目录中的组织单位 |
dsquery site | 查找目录中的站点 |
dsquery server | 查找目录中的 AD DC/LDS 实例 |
dsquery user | 查找目录中的用户 |
dsquery quota | 查找目录中的配额规定 |
dsquery partition | 查找目录中的分区 |
net localgroup administrators
net group "domain admins" /domain
net group "Enterprise Admins" /domain
在Windows平台上,可以执行“net session”查看谁使用了本机资源,但是没有命令可以查看谁在使用远程计算机资源、谁登录了本地或远程计算机。使用psloggedon.exe可以查看本地登录的用户和通过本地计算机或远程计算机的资源登录的用户。
psloggedon 下载地址:PsLoggedOn - Windows Sysinternals | Microsoft Docs
psloggedon.exe [-] [-l] [-x] [\\computername | username]
* - : 显示支持的选项和用于输出值的单位。
* -l: 仅显示本地登录,不显示本地和网络资源登录。
* -x: 不显示登录时间。
* \\computername: 指定要列出登录信息的计算机的名称。
* username: 指定用户名,在网络中搜索该用户登录的计算机
PVEFindADUser.exe可用于查找活动目录用户登录的位置、枚举域用户,以及查找坐在特定计算机上登录的用户,包括本地用户、通过RDP登录的用户、用于运行服务和计划任务的用户。运行该工具需要管理员权限。
PVEFindADUser 下载地址:https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn
参数使用:
* -h: 显示帮助信息。
* -u:检查程序是否有新版本。
* -current["username"]: 如果仅指定了 -current参数,将获取目标计算机上当前登录的所有用户。如果指定了用户名,则显示该用户登录的计算机。
* -last["name"]: 如果仅指定了 -last参数,将获取目标计算机的最后一个登录用户。如果指定了用户名,则显示此用户上次登录的计算机。
* -noping: 阻止尝试枚举用户登录名之前对目标计算机执行ping命令
* -target: 用于指定要查询的主机。如果未指定此-target参数,则将查询当前域中的所有主机。如果决定指定-target,然后指定以逗号分隔的主机名。查询结果将被输出到report.csv文件中。
netview 是一个枚举工具,使用 WinAPI 枚举系统,利用 NetSessionEnum 寻找登录会话,利用 NetShareEnum 寻找共享,利用 NetWkstaUserEnum 枚举登录的用户,netview 可以查询共享入口和有价值的用户,其绝大部分功能无需管理员权限就可使用。
Netview 下载地址:GitHub - mubix/netview: Netview enumerates systems using WinAPI calls
netview.exe <参数>
* -h : 显示帮助信息
* -f filename.txt : 指定要提取主机列表的文件。
* -e filename.txt : 指定要排除的主机名的文件。
* -o filename.txt : 将所有输出重定向到指定的文件。
* -d domain : 指定要提取主机列表的域。如果没有指定,则从当前域中提取主机列表。
* -g group : 指定搜索的组名。如果没有指定,则在Domain Admins组中搜索。
* -c : 对已找到的共享目录/文件的访问权限进行检查。
NES 脚本下载地址:NSEDoc Reference Portal: NSE Scripts — Nmap Scripting Engine documentation
* 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域名、工作组、系统时间等信息。
net group "Domain Admins" /domain
可以看到有两个域管理员。
tasklist /v
查询域控制器的域用户会话,其原理为:在域控制器中查询域用户会话列表,并将其与域管理员列表进行交叉引用,从而得到域管理会话的系统列表。
net group "Domain Controllers" /domain
在定位域管理员那一个学习点上还有两个可以用的脚本,一个是PowerView,另一个是Empire的user_hunter模块。想学习的可以自行了解,因为PowerView脚本我在github里一直找不到就摆烂直接跳过了。
参考:【内网学习笔记】4、域内信息收集 | TeamsSix
《内网安全攻防》(徐焱 编写)