AD 侦查-SMB_1
本文通过 Google 翻译 AD Recon – NetBIOS (137/138/139) and SMB (445) Part-1 这篇文章所产生,本人仅是对机器翻译中部分表达别扭的字词进行了校正及个别注释补充。导航
[*]0 前言
[*]1 NetBIOS、SMB 简介
[*]1.1 NetBIOS – Port 137/138/139
[*]1.2 SMB – Port 445
[*]1.2.1 SMB 版本
[*]1.2.2 SMB 默认管理共享
[*]1.2.3 命名管道
[*]1.2.4 MSRPC Over SMB
[*]2 初始枚举 – nmap 扫描
[*]3 NetBIOS 枚举 – UDP Port 137
[*]3.1 Nmblookup
[*]3.2 Nbtscan
[*]3.3 Nmap
[*]4 SMB 枚举 – TCP Port 445
[*]4.1 枚举 SMB 版本
[*]4.2 枚举 SMB 共享
[*]4.2.1 共享名称搜集
[*]4.2.2 共享名称爆破
[*]4.2.3 访问共享
[*]4.2.4 共享利用场景示例
0、前言
在这篇文章中,我们将回顾可用于枚举 NetBIOS(UDP 137/138 | TCP 139)和 SMB(TCP 445)服务的各种工具。
首先,我们将学习 NetBIOS 和 SMB 服务,并了解它们是如何结合在一起的,以及它们是如何用于域枚举的;然后,对一台加入域的 win10 主机进行 nmap 扫描以确认所有感兴趣的端口都已打开;接着,开始对主机 进行 NetBIOS 枚举以找到域中各个主机的主机名和 MAC 地址、进行 SMB 枚举以确认 SMB 版本以及列出共享;最后,我们将看到一个示例场景,在这个场景中我们能够对网络共享进行匿名访问,并发现了包含密码的 TXT 文件,然后展开域用户名爆破,并最终找到有效凭据。
1、NetBIOS、SMB 简介
接下来,让我们快速回顾一下 NetBIOS、SMB 服务以及它们的工作原理。
1.1、NetBIOS – Port 137/138/139
网络基本输入/输出系统(Network Basic Input/Output System)是一种应用程序接口,提供与 OSI 模型会话层相关的服务。NetBIOS 的主要用途是允许不同计算机上的应用程序通过局域网(LAN)进行通信。
在现代网络中,NetBIOS 通过 NetBIOS over TCP/IP (NBT) 协议在 TCP/IP 上运行。网络中的每台计算机都有一个 IP 地址和一个 NetBIOS 名称,名称最长为 15 个字符,通常与计算机名称一致。
NetBIOS 提供三种不同的服务:
[*]用于名称注册和解析的名称服务(137/udp、137/tcp)
[*]用于无连接通信的数据报分发服务(138/udp)
[*]面向连接通信的会话服务(139/tcp)
最常见的情况是,当一个应用程序(客户端)通过 TCP 端口 139 发送命令“调用”另一个应用程序(服务器)时,两个应用程序就会开启一个 NetBIOS 会话。
那么,这对于攻击者来说又意味着什么?
基本上,我们可以通过 NetBIOS 获取各种信息,如 域名、工作组、系统名称以及账户信息。因此,端口 137、138、139 是枚举的最佳选择,千万不能忽视。
当 SMB (445) 处于打开状态时,NetBIOS 常常得不到充分利用,这是因为人们误以为 SMB 是 NetBIOS 的“新”版本。而事实上,NetBIOS 是完全独立于 SMB 的,二者分别提供着不同的服务。因此,当发现目标系统上同时打开了 NetBIOS 和 SMB 时,SMB 将被我们用于枚举共享文件夹,而 NetBIOS 将被用于其它枚举。
1.2、SMB – Port 445
服务器消息块 (SMB) 是一种网络文件共享协议,它允许计算机上的应用程序通过网络向服务器读取和写入文件。这意味着通过使用 SMB,用户可以从远程计算机访问文件或其它资源。
SMB 是一种客户端/服务器通信协议,提供对文件、整个目录和网络资源(打印机等)的共享访问,同时它还承载着进程间通信的事务。
SMB 共享有两种类型:管理共享(用于远程访问和管理计算机)和常规共享(文件系统上已“共享”的常规文件夹)。
由于共享的文件夹是远程计算机上的文件夹,因此它们的访问权限也受 ACL(访问控制列表)控制。然而,不同之处在于共享文件夹的 ACL 与本地文件夹的 ACL 是相互独立的。这意味着,我们对文件夹的访问权限(读写等权限)取决于用户对该共享文件夹的权限。
注:假设把 SMB 共享服务看作是一个 FTP 服务,那么共享 ACL 的规则设定是在 FTP 软件中进行的,而被共享的文件夹实际所处的文件系统上还存在着一个关于系统的 ACL 规则,这个规则不归 FTP 软件所管理。因此,如果想要对外分享一个文件夹,必须两个 ACL 的访问设定均允许访客访问才行。
SMB 服务所管理的 ACL 规则位置:文件夹-属性-共享-高级共享-权限。
文件系统所管理的 ACL 规则位置:文件夹-属性-安全-编辑。
在现代 Windows 系统上,SMB 可以直接通过 TCP/IP 在端口 445 上运行。而在其它系统上,我们可能会发现某些服务和应用程序使用的是 139 端口。这意味着 SMB 是通过 TCP/IP 与 NetBIOS 一起运行的。
多年来,SMB 已发布多个版本,并已实现向后兼容。这意味着较新版本的 Windows 可以轻松地与较旧版本的 Windows 进行通信。
1.2.1、SMB 版本
如上所述,SMB 有多个版本,并且均向后兼容:
[*]CIFS (Pre-SMB) – Microsoft Windows NT 4.0(1996)。
[*]SMB-1.0/SMB1 – Windows 2000、Windows XP、Windows Server 2003、Windows Server 2003 R2。
[*]SMB-2.0/SMB2 – Windows Vista、Windows Server 2008。
[*]SMB-2.1/SMB2.1 – Windows 7、Windows Server 2008 R2。
[*]SMB-3.0/SMB3 – Windows 8、Windows Server 2012。
[*]SMB-3.02/SMB3 – Windows 8.1、Windows Server 2012 R2。
[*]SMB-3.1 – Windows 10、Windows Server 2016。
1.2.2、SMB 默认管理共享
关于 SMB 共享的另一个注意事项是默认的管理共享及其用途,其中最值得注意的是 IPC$ 共享。
(1)管理共享是隐藏的网络共享,它允许系统管理员远程访问联网系统上的每个磁盘卷。(2)管理共享可能无法永久删除,但可以禁用。(3)没有管理员权限的用户无法访问管理共享。【注:工作组环境下,只有 administrator 用户有权访问管理共享;域环境下,只有域管理组的用户有权访问。】
系统默认管理共享通常如下:
[*]ADMIN$:用于远程管理计算机。
[*]C$:系统上的每个磁盘卷都被作为管理共享以进行文件共享。
[*]IPC$:共享命名管道的资源,这些管道对于程序之间的通信至关重要,例如远程管理计算机或查看共享资源。
除了这三个默认共享之外,我们还可能会遇到PRINT$,它用于远程管理打印机。
最后,还有两个默认共享,它们仅在域控制器中出现:
[*]NETLOGON:用于存储组策略登录脚本以及可能的其它文件。
[*]SYSVOL:驻留在域中每个域控制器的本地硬盘上,专供文件复制服务 (FRS) 使用。
1.2.3、命名管道
[*]命名管道是一个被命名的单向或双向管道,用于管道服务器与一个或多个管道客户端之间的通信。
[*]与在本地计算机上提供进程间通信的匿名管道相比,命名管道提供的功能更多。
[*]每个命名管道都有一个唯一的名称,用以区别于系统命名对象列表中的其它命名管道。
[*]命名管道可用于在同一台计算机上的进程之间或网络上不同计算机上的进程之间提供通信。如果服务器服务正在运行,则所有命名管道都可以远程访问。
[*]SMB 客户端使用名为IPC$的命名管道共享来访问命名管道端点。
1.2.4、MSRPC Over SMB
关于 SMB 枚举/利用,需要注意的另一点是,我们使用的许多工具都利用了 RPC 的 SMB 命名管道。对于需要凭证的工具尤其如此,因为它们会发出远程过程调用 (RPC),使用提供的凭证在目标计算机上启动指定的进程。
MSRPC Over SMB 使用了许多不同的命名管道,其中包括但不限于以下这些:
[*]\pipe\lsarpc:本地安全机构 (LSA) – 枚举权限、信任关系、SID、策略等。
[*]\pipe\samr:本地 SAM 数据库 – 枚举域/本地用户、域/本地组等。
[*]\pipe\svcctl:服务控制管理器 – 远程创建、启动和停止服务以执行命令。【psexec.py 和 smbexec.py 的工作原理】
[*]\pipe\atsvc:任务计划程序 – 远程创建计划任务来执行命令。【atexec.py 的工作原理】
[*]\pipe\epmapper:支持 Windows 管理规范 (WMI) 的分布式组件对象模型 (DCOM) – 通过 WMI 执行远程命令。【wmiexec.py 和 dcomexec.py 的工作原理】
[*]\pipe\winreg:远程注册表服务 – 用于访问系统注册表。【reg.py 的工作原理】
既然我们已经对 NetBIOS 和 SMB 的工作原理有了一定的了解,下面我们就来举例说明一下吧。
2、初始枚举 – nmap 扫描
首先,假设我们有一台目标 Windows 10 机器,其 IP 地址为 172.16.1.200,然后使用 nmap 对其进行扫描。
nmap -A -sV -sC -T4 172.16.1.200 -p- -oN tcp_full.nmap
从扫描的输出中,我们可以看到端口 135、139、445 是开放的,以及高 RPC 端口。
接下来,进行 UDP 扫描来确认 NetBIOS 端口 137 和 138 是否打开。
nmap -A -sV -sC -sU 172.16.1.200 --script=*enum --top-ports 100 -oN udp_100.nmap
根据经验,–script=*enum 选项有助于确定哪些端口是被真正打开,而哪些端口实际上被“过滤”或被防火墙阻止。
在确定所有感兴趣的端口都已打开(TCP 139、445 | UDP 137、138)之后,接下来让我们开始枚举它们吧!
3、NetBIOS 枚举 – UDP Port 137
枚举先从 NetBIOS 服务开始,因为它的内容较为简单,没有 SMB 那么繁杂。
由于 SMB 是开放的,因此共享将通过 TCP 协议栈上的 445 端口提供。这意味着 NetBIOS 主要用于枚举给定目标或目标范围内的主机名和 MAC 地址。这是通过查询 UDP 137 端口实现的。
在旧系统(Windows 2000 之前)上,SMB 最初使用端口 139 在 NetBIOS 上运行。
3.1、Nmblookup
尽管如此,还是有一些很好的工具可用于 NetBIOS 枚举,首先是 nmblookup。
nmblookup -A 172.16.1.200
这告诉我们主机名“JUGG-VCREED”属于 IP 172.16.1.200。此外,它还显示了 MAC 地址以及“工作组”,但在本例中它指的是域“Juggernaut”。
3.2、Nbtscan
另一个工具是 nbtscan,它可以用来查询单个主机或整个网段。
nbtscan 172.16.1.200
nbtscan 172.16.1.0/24
nbtscan 还会尝试查找当前登录到主机的任何用户的用户名。
Amazing!通过扫描网段,我们还发现了另外两台主机:JUGGERNAUT-DC 和 JUGG-EFROST。
3.3、Nmap
最后一个工具是 nmap,它预装了一些很棒的脚本,其中一个就是 NetBIOS 枚举脚本,同时它也支持扫描单个 IP 地址或整个网段。
nmap -sU -sV -Pn -T4 172.16.1.200 -p137 --script nbstat.nse
nmap -sU -sV -Pn -T4 172.16.1.0/24 -p137 --script nbstat.nse
既然已经了解了可以通过 NetBIOS 枚举什么,接下来,就让我们看看通过枚举端口 445 上的 SMB 服务可以找到些什么。
4、SMB 枚举 – TCP Port 445
当发现 SMB 处于打开状态时,它便是我们首先要攻击的服务之一。起初,我们会以匿名的方式进行访问,希望能够列出/访问一两个共享。后期一旦找到凭证,我们应该回过头来继续测试 SMB,因为某些共享仅对特定用户可见/可访问,因此回头再枚举的动作很有必要。
当枚举目标主机上的 445 端口时,我们首先要了解的是 SMB 服务正在运行哪个版本。
4.1、枚举 SMB 版本
正如之前在 nmap 扫描中看到的那样,SMB 的版本是从 smb2-security-mode 脚本部分中看到的。
因此,我们可以只使用此脚本,来确定目标端口 445 的版本,如下所示:
nmap --script=smb2-security-mode 172.16.1.200 -p 445
此外,还可以使用 Metasploit 的 smb_version 模块来确定目标主机上运行的 SMB 版本。
msfconsole -q
search scanner/smb
use auxiliary/scanner/smb/smb_version
show options
set RHOSTS 172.16.1.200
exploit
正如之前使用 nmap 时看到的那样,SMB 首选版本是 3.1.1,但这台主机同时还支持 SMB 1/2/3。此外,该模块还提取了一些主机、操作系统和域信息。
接下来,作为攻击者的我们应该从 SMB 中枚举的第二件事是可用的共享及其权限。
4.2、枚举 SMB 共享
有很多很棒的工具可以用来列出/访问目标主机上可用的 SMB 共享。不过,有几件事需要考虑。
例如,我们经常会发现自己处于以下三种情况之一:
[*]能够列出共享以及通过匿名会话访问其中一些共享。(最佳情况)
[*]无法列出共享,但有权通过匿名会话访问它们。(需要暴力破解)
[*]无法通过匿名会话列出或访问任何共享。(最坏的情况)
此外,即使找到了凭证,我们也可能会遇到上述三种情况之一。但是,有了凭证,几乎总能保证能够列出共享内容。
如果我们可以列出共享,但无法访问任何共享(无论是匿名访问还是身份验证访问),此时就需要枚举共享权限。如此,我们便能够找到哪些用户可以访问特定的共享,然后将这些帐户视为“高权限目标”。理想情况下,如果可能的话,我们希望将权限提升到这些高权限目标。
4.2.1、共享名称搜集
有很多工具可以列出共享,但只有少数工具允许我们访问共享,如 smbclien 支持列出/访问共享,而 nmap 只支持列出共享。
接下来,让我们逐一对这些工具的使用进行介绍:
=Smbclient=
首先,尝试以匿名访问的方式列出共享:
smbclient -L 172.16.1.200 -N
有趣的是,我们可以看到匿名访问成功了,但却无法列出共享,而这正好符合上面的第二种情况,这就意味着我们需要通过暴力破解共享名才能找到它们。【注:暴力破解后文介绍,此处跳过。】
接着,以身份验证的方式列出共享:
smbclient -L 172.16.1.200 -U 'juggernaut.local/vcreed%Dfaster1!23'
Awesome!我们成功找到了两个可以尝试访问的自定义共享!
=Smbmap=
smbmap 一个很酷的特点是它专注于渗透测试,而 smbclient 则更适合于网络管理。
然而,smbmap 有一个很棒的特性便是,它可以列出每个共享的访问权限。
smbmap -H 172.16.1.200 -u 'vcreed' -p 'Dfaster1!23' -d 'juggernaut.local'
Amazing!可以看到,当前用户对“Share”共享拥有 RW 访问权限,而对“Users”共享则只有 R 访问权限。
=CrackMapExec=
与 smbclient 和 smbmap 不同,crackmapexec 对于访问共享不太实用。但它能够列出共享以及有关主机/域的更多信息,包括用户、组等。
列出入域主机上的所有共享,可以使用以下命令:
crackmapexec smb 172.16.1.200 -u 'vcreed' -p 'Dfaster1!23' -d 'juggernaut.local' --shares
可以看到,crackmapexec 同样标记出了共享的访问权限。
=Nmap=
nmap 内置了一个名为 smb-enum-shares 的脚本,我们可以使用它来列出 SMB 共享。
nmap -A -sV -sC -Pn --script=smb-enum-shares 172.16.1.200 -p445 --script-args smbusername='vcreed',smbpassword='Dfaster1!23',smbdomain='juggernaut.local'
与我们迄今为止使用过的其它工具不同,nmap 会同时检查当前用户对每个共享的访问权限和匿名访问权限,这一点非常酷,这使得该脚本在未找到凭据时成为一个很好的选择。
令人惊讶的是,nmap 是“唯一”能够通过匿名会话列出共享的工具!
注:上面的“唯一”是指,在可匿名访问但无共享被列出的场景之下时,只有 nmap 才有可能在此情境下能够列出一些共享,其它工具是不行的。】
然而,我们不应该误以为 nmap 会用某种神奇的手段来实现这一点。实际上,这种情况的发生是因为 nmap 会在无法列出常见共享名时尝试暴力破解。因此,如果共享名很复杂或“不常见”,那么它们依旧不能被列出,这需要进一步暴力破解。
smb-enum-shares 会尝试使用 srvsvc.NetShareEnumAll MSRPC 函数列出共享资源,并使用 srvsvc.NetShareGetInfo 检索有关它们的更多信息。如果访问这些函数被拒绝,则会检查常用共享名称列表。
=Metasploit=
与 crackmapexec 类似,Metasploit 也非常适合列出共享。
msfconsole -q
use auxiliary/scanner/smb/smb_enumshares
show options
set RHOSTS 172.16.1.200
set SMBUser 'vcreed'
set SMBPass 'Dfaster1!23'
set SMBDomain 'juggernaut.local'
exploit
现在,我们已经看到了不少可以用来列出共享名称的工具。接下来,让我们看看 在匿名可访问但无法列出共享时,如何通过暴力手段来找到可以通过匿名会话访问的共享名称。
4.2.2、共享名称爆破
首先,我们使用 smbclient 进行匿名访问尝试,可以看到匿名登录成功,但无法列出共享。
smbclient -L 172.16.1.200 -N
此时,虽然匿名身份无法列出共享内容,但我们仍然可以访问它们。唯一需要注意的是,我们需要找到共享名称,而最好的方法就是尝试猜测它们。尝试手动猜测共享名称会很繁琐,并且很可能导致我们很快便放弃这种努力。
幸运的是,有一些工具支持暴力破解 SMB 共享名,而我们只需为其提供一个共享名字典即可。这两个工具便是 enum4linux 和 smb_brute.py。
=Enum4Linux=
Enum4linux 是一个功能强大的工具,它可以枚举 MS-RPC、LDAP、NBT-NS。虽然 enum4linux 主要是一个 MSRPC 枚举工具,但它确实也能够执行一些基本的 SMB 枚举,如 列出共享名称。
enum4linux -s /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt 172.16.1.200
可以看到,enum4linux 成功破解出了两个自定义共享。同时它还告诉我们,“share”共享可以匿名访问。
=smb_brute.py=
smb_brute.py 是笔者编写的一个小脚本,可用于强制执行 SMB 共享名称。用法如下:
./smb_brute.py 172.16.1.200 /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
该脚本相比于 enum4linux,它的执行速度更快且输出内容更简洁一些。
现在,我们已经了解了如何以匿名和凭证的方式列出共享,以及如何爆力破解共享名称,接下来让我们看看如何在发现共享后访问和枚举共享。
4.2.3、访问共享
在找到有权限访问的共享之后,下一步便是访问它们以寻找有趣的文件。
=Smbclient=
通过 smbclient 匿名访问共享,命令如下:
smbclient -U '%' -N \\\\172.16.1.200\\share
Perfect!我们成功的建立了连接。
接下来,我们可以使用以下命令递归遍历共享中的文件:
prompt off
recurse on
ls
注意:如果共享很大的话,最好关闭递归功能,手动进行遍历查找。
从上面可以看到,有两个 TXT 文件很有趣。为此,我们需要将其下载到本地。
mget New_Users.txt
cd folder1
mget test.txt
或者,一次性递归下载所有文件,如下所示:
mget *
=Smbmap=
Smbmap 也可以打开共享并与其交互(列出文件、上传、下载等),但它不像 smbclient 那样提供交互式提示,而是通过单独的命令来与共享进行交互。
关于 smbmap 的另一点需要注意:它需要能够自身列出共享然后才能访问它们。这意味着在场景 2 的情况下,我们将无法使用 smbmap 来访问共享。
例如,如果我们在当前主机上匿名访问“Share”共享,我们将不会得到任何结果,尽管它确实存在且可访问。
smbmap -H 172.16.1.200 -u '' -p '' -d 'juggernaut.local' -R "share"
而如果我们使用一组有效的凭据尝试相同的命令,它就会起作用。
smbmap -H 172.16.1.200 -u 'vcreed' -p 'Dfaster1!23' -d 'juggernaut.local' -R "share"
这证实了 smbmap 确实有这个限制,但该限制可以通过使用 smbclient 匿名访问来克服。
在列出了“Share”共享的内容之后,我们可以使用 -A 选项一次性下载所有文件。
smbmap -H 172.16.1.200 -u 'vcreed' -p 'Dfaster1!23' -d 'juggernaut.local' -R "share" -A '.*'
或有选择性地下载 test.txt 文件:
smbmap -H 172.16.1.200 -u 'vcreed' -p 'Dfaster1!23' -d 'juggernaut.local' -R "share" -A 'test.txt'
smbmap 很酷的一个特性便是,要下载的文件我们只需为其提供文件名(不需提供完整的路径),然后 smbmap 就会为我们搜索并下载它。
=本地挂载共享文件夹=
有时会遇到一些包含大量文件的共享,而我们又不想将所有文件都下载到攻击者的机器上。此时,便可以通过本地挂载共享,直接从本机访问目标文件,而无需下载任何内容。挂载命令如下:
mkdir /mnt/share
mount -t cifs -o username='%',password='' //172.16.1.200/share /mnt/share
ls -laR /mnt/share
同样,如果需要提供有效的凭据才能进行挂载,则:
mount -t cifs -o username='vcreed',password='Dfaster1!23' //172.16.1.200/share /mnt/share现在,我们已经看到了三种方式去访问共享文件夹的方法。接下来,就让我们回顾一个示例场景,通过该场景说明 SMB 枚举通常是如何循环的。
4.2.4、共享利用场景示例
假设在当前情况下,我们通过匿名身份有权访问,但未列出共享。
smbclient -L 172.16.1.200 -N
然后,我们使用 smb_brute.py 暴力破解出来共享名“share”和“users”。
./smb_brute.py 172.16.1.200 /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
接着,使用 smbclient 通过匿名会话访问“share”,并提取到了两个文件:New_Users.txt 和 test.txt。
smbclient -U '%' -N \\\\172.16.1.200\\shareprompt off
recurse on
lsmget *
下一步,便是检查文件中是否有有趣的信息。
cat New_Users.txt
cat test.txt
幸运的是,我们找到了一个新员工使用的密码。现在我们可以把这个密码存入“passwords.txt”文件。
echo 'W3lc0met0Th3p4rtY!' > passwords.txt现在,既然我们已经找到了密码,那么接下来的目标便是构建一个用户名列表用来测试这个密码。此时,我们可以使用一个名为kerbrute的工具来暴力破解有效的用户名。
=使用 Kerbrute 暴力破解有效用户名=
继续这个例子,假设在进一步的枚举中并没有找到用户名。当找不到域用户名时,我们可以采取暴力破解。
使用 kerbrute,我们可以尝试暴力破解有效的用户名,而无需提供密码。这是发现有效用户名的最快方法。【注:此处利用了 Kerberos AS-REQ 阶段的域用户名枚举攻击】
kerbrute -users /usr/share/seclists/Usernames/Honeypot-Captures/multiplesources-users-fabian-fingerle.de.txt -domain juggernaut.local -dc-ip 172.16.1.5
Amazing!通过该技术,我们得到了一个相当小的词表,找到了六个有效的用户。
字典“multiplesources-users-fabian-fingerle.de.txt”包含大约 2 万个姓名,是一个不错的列表。也可以使用 xato 来尝试改进结果,但 xato 大约有 900 万个单词,这相当庞大。
现在,我们将这 6 个用户名添加到名为 users.txt 的文件中。
接下来,我们使用 kerbrute 执行密码喷洒攻击,看看这六个帐户中是否有人使用密码 - W3lc0met0Th3p4rtY!
kerbrute -users ./users.txt -passwords ./passwords.txt -domain juggernaut.local -dc-ip 172.16.1.5
BOOM!可以看到“Intern”用户账户的匹配了该密码!
同时,kerbrute 还将用户的 TGT 保存到了 ccache 文件中。这很棒,因为它允许我们通过提供票证而不是密码来使用工具(主要是 Impacket)。
=新凭证,意味着新的访问权限=
现在,我们获得了新的凭据。
intern : W3lc0met0Th3p4rtY!
根据之前的发现,我们发现可以通过匿名会话访问“share”文件夹。然而,在暴力破解共享名时也发现了“user”文件夹但却被拒绝匿名访问。
现在,我们有了一组有效的凭证,可以列出所有共享,并查看是否可以使用 smbmap 获得额外的访问权限。
smbmap -H 172.16.1.200 -u "intern" -p 'W3lc0met0Th3p4rtY!' -d 'juggernaut.local'
Perfect!现在我们可以访问“Users”共享了!
smbclient \\\\172.16.1.200\\users -U 'juggernaut.local/intern%W3lc0met0Th3p4rtY!'
可以看到,它对应的是 C:\Users 文件夹,从这里开始,我们将开始梳理不同的目录和子目录,以便找到更多有趣的文件。
无论我们是否发现任何东西,只要拥有一套有效的凭证,就能为更多的枚举机会打开大门。
好了,让我们暂停一下,这篇文章已经很长了,但还有很多内容要讲。因此,我们将在本篇文章的第二部分介绍可通过 SMB 执行的其它枚举(系统、域、用户/组等)、漏洞枚举和命令执行。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
页:
[1]