内网安全-信息收集-域内资源探测

判断是否存在域环境

net config workstation

查看当前工作站的信息,包括当前计算机名、用户名、系统版本、工作站、登录的域等信息。

一、收集域内基础信息

1.查询域

net view /domain

2.查询此域内所有计算机

net view /domain:XXX(域名)

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

net group /domain

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

net group "``domain computers``" /domain

5.获取域密码信息

net accounts /domain

6.获取域信任信息

nltest /domain_trusts

二、查找域控制器

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

nltest /DCLIST:XXX

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

Nslookup -type=SRV _ldap._tcp

3.查看当前时间

net time /domain

4.查看域控制器组

真实环境中,一般存在两台或两台以上的域控制器,其目的是:一旦主域控制器发生故障,备用的域控制器可以使域内服务验证正常进行。

net group "Domain Controllers" /domain
netdom query pdc

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

1.查询所有域用户列表
向域控制器进行查询

`net user /domain`

获取域内用户详细信息

`wmic useraccount get /all`

查看存在的用户

`dsquery user`

查询域内置本地管理员组用户

`net localgroup administrators /domain`
2.查询域管理员用户组
查询域管理员用户

`net group “domain admins” /domain`

查询管理员用户组
`net group “Enterprise Admins” /domain`

四、定位域管理员

   内网渗透测试与常规的渗透测试是截然不同的。内网渗透测试的需求是拿到内网中特定用户或特定机器的权限,进而获得特定资源,完成内网渗透测试任务。在通常的网络环境里,内网中部署了大量的网络安全设备,如 IDS、IPS、日志审计、安全网关、反病毒软件等。所以,在域网络攻击测试场景中,如果渗透测试人员获取了域内的一个支点,为了实现对域网络的整体控制,渗透测试人员就需要获取域管理员权限。

常用域管理员定位工具

   psloggedon.exe 可以显示本地登录的用户和通过本地计算机或远程计算机的资源登录的用户。如果指定了用户名而不是计算机,psloggedon.exe 会搜索网络邻居中的计算机,并显示该用户当前是否已登录,其原理是通过检 验注册表里HKEY_USERS 项的 key 值来查询谁登录过机器(同样调用了 NetSessionEnumAPI),某些功能需要拥有管理员权限才能使用。
psloggedon [-] [-l] [-x] [\\computername|username]
-:显示支持的选项和用于输出值的单位。
-l:仅显示本地登录,不显示本地和网络资源登录。
-x:不显示登录时间。
\\computername:指定要列出登录信息的计算机的名称。
Username:指定用户名,在网络中搜索该用户登录的计算机。

下载链接:https://docs.microsoft.com/en-us/sysinternals/downloads/psloggedon

   pveFindADUser.exe 可用于查找 Active Directory 用户登录的位置,枚举域用户,以及查找在特定计算机上登录的用户,包括本地用户、通过 RDP 登录的用户、用于运行服务和计划任务的用户账户。[运行该工具的计算机需要具有.NET](http://xn--h6qa856gr9i7gt25f29hpp0avncmwhjva898axqx.NET) Framework 2.0,并且需要具有管理员权限。
pveFindADUser.exe <参数>
-h:显示帮助。
-u:检查是否有更新版本的实用程序。
-current [''username'']:如果仅指定了-current 参数,将获取所有目标计算机上当前登录的所有用户。如果指定了用户名(DOMAIN\Username),则显示该用户登录的计算机。
-last [''username'']:如果仅指定了-last 参数,将获取目标计算机上的最后一个登录用户。如果指定了用户名(DOMAIN\Username),则显示具有此用户账户作为上次登录的计算机。根据网络的策略,可能会隐藏最后一个登录用户名,且该工具可能无法得到该用户名。
-noping:阻止该工具在尝试获取用户登录信息之前对目标计算机执行 ping 命令。
-target:可选参数,用于指定要查询的主机。如果未指定此参数,将查询当前域中的所有主机。如果指定此参数,则后跟一个由逗号分隔的主机名列表。

下载链接:https://github.com/chrisdee/Tools/tree/master/AD/ADFindUsersLoggedOn

netview.exe 是一个枚举工具,使用 WinAPI 枚举系统,利用 NetSessionEnum 找寻登录会话,利用 NetShareEnum 找寻共享,利用 NetWkstaUserEnum 枚举登录的用户。同时,netview.exe 能够查询共享入口和有价值用户。netview.exe 的绝大部分功能不需要管理员权限即可执行

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

下载链接:https://github.com/mubix/netview

如果有域账户或者本地账户,就可以使用 Nmap 的 smb-enum-sessions.nse 引擎来获取远程机器的登录会话,并且不需要管理员权限

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 域名、工作组、系统时间。

下载链接:https://nmap.org/nsedoc/scripts/smb-enum-sessions.html

PowerView 是一款 PowerShell 脚本,里面有一些功能可以辅助找寻定位关键用户

Invoke-StealthUserHunter :只需要一次查询,就可以获取域内的所有用户。从user.HomeDirectories 中提取所有用户,并对每个服务器进行 Get-NetSessions 获取。因为不需要使用 Invoke-UserHunter 对每台机器进行操作,所以这个方法的隐蔽性相对较高,但涉及的机器面不一定完整。默认使用 Invoke-StealthUserHunter,如果找不到需要的信息,就接着使用 Invoke-UserHunter 方法。
Invoke-UserHunter:找到域内特定的用户群。它接收用户名、用户列表或域组查询,并接收一个主机列表或查询可用的主机域名。它会使用 Get-NetSessions 和 Get-NetLoggedon(调用 NetSessionEnum 和 NetWkstaUserEnum API)扫描每个服务器,而且会比较结果,筛选出目标用户集。使用这个工具是不需要管理员权限的。在本地绕过执行该脚本,如图 2-72所示。

下载链接:https://github.com/PowerShellEmpire/PowerTools/tree/master/PowerView

Empire 下的 user_hunter 模块;在 Empire 下也存在类似 Invoke-UserHunter 的模块——user_hunter,这个模块就是用来查找域管理员登录的机器的。

使用 usemodule situational_awareness/network/powerview/user_hunter 模块可以清楚地看到哪个用户登录了哪台主机。

五、查找域管理进程

1.本机检查

1. 获取域管理员列表
   net group "Domain Admins" /domain
2.列出本机所有进程及进程用户
   Tasklist /v
3.寻找是否有进程所有者为域管理员的进程

2. 查询域控制器的域用户会话

查询域控制器的域用户会话,其原理是:在域控制器中查询域用户会话列表,并将其与域管理员列表交叉引用,从而找出域管理会话的系统列表。

1.查询域控制器列表
   net group "Domain Controllers" /domain
2.收集域管理员列表
   net group "Domain Admins" /domain
3.收集所有活动域会话列表
   Netsess.exe –h
4.交叉引用域管理员列表与活动会话列表
   将域控制器列表添加到 dcs.txt 中,将域管理员列表添加到 admins.txt 中,并和 netsess.exe 放在同一个目录下。运行如下脚本后,会在当前目录下生成一个 sessions.txt 文本文件
   FOR /F %i in (dcs.txt) do @echo [+] Querying DC %i && @netsess -h %i 2>nul > sessions.txt && FOR /F %a in (admins.txt) DO @type sessions.txt | @findstr/I %a
5. 其他脚本下载
    [GDA](https://github.com/nullbind/Other-Projects/tree/master/GDA)

3. 扫描远程系统上运行的任务

如果渗透目标在域系统上使用共享本地管理员账户运行后,可以用下列脚本来扫描系统中的域管理任务。

同样首先从“域管理员”组中收集域管理员的列表。
net group "Domain Admins" /domain
然后使用下列脚本,其中 ips.txt 填入目标域系统的列表,在 names.txt 填入收集来的域管理员的列表。
FOR /F %i in (ips.txt) DO @echo [+] %i && @tasklist /V /S %i /U user /P password 2>NUL > output.txt && FOR /F %n in (names.txt) DO @type output.txt | findstr %n > NUL && echo [!] %n was found running a process on %i && pause

4. 扫描远程系统上 NetBIOS 信息

在一些 Windows 系统中,允许用户通过 NetBIOS 查询已登录用户。下面这个 Windows 命令行脚本将扫描远程系统活跃域管理会话。

同样,先收集域管理员列表,然后将目标域系统列表添加到 ips.txt 文件中,将收集到的域管理员列表添加到 admins.txt 文件中,并置于同一目录下.
for /F %i in (ips.txt) do @echo [+] Checking %i && nbtstat -A %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i
这里也可以使用 nbtscan 工具。先收集域管理员列表,然后将目标域系统列表添加到ips.txt 文件中,将收集到的域管理员列表添加到 admins.txt 文件中,和 nbtscan 工具置于同一目录下.
for /F %i in (ips.txt) do @echo [+] Checking %i && nbtscan -f %i 2>NUL >nbsessions.txt && FOR /F %n in (admins.txt) DO @type nbsessions.txt | findstr /I %n > NUL && echo [!] %n was found logged into %i

5. 利用PowerShell 收集域信息

PowerView 是一款依赖 PowerShell 和 WMI 对内网域情况进行查询的常用渗透脚本。PowerView 集成在 PowerSploit 工具包中。

通过以下命令收集域信息:

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-ADObject:获取活动目录的对象信息。
Get-NetGPO:获取域所有组策略对象。
Get-DomainPolicy:获取域默认或域控制器策略。
Invoke-UserHunter:用于获取域用户登录计算机及该用户是否有本地管理权限。
Invoke-ProcessHunter:查找域内所有机器进程用于找到某特定用户。
Invoke-UserEventHunter:根据用户日志获取某域用户登录过哪些域机器。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸟-宇的个人博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值