enumerating-SMB
枚举 SMB (Kioptrix)
SMB 是一种主要在 Windows 上使用的协议,允许同一网络上的设备共享文件。 SMB 允许写入、读取、下载文件等。
SMB/“samba”服务(通常托管在端口 445 或 139 上)可以在 Linux 上使用 smbclient 命令进行访问。 SMB 上托管的文件称为“共享”,要访问它们,您需要通过“工作组”登录。
在 Kioptrix 框中,我们可以从 nmap 扫描中看到端口 445 上识别的工作组是 MYGROUP。
版本控制
确定正在运行的 SMB 服务的版本很有用(并被视为一项发现),因为您可以使用该版本来查找 CVE 以及已开发并成功针对该服务使用的漏洞。
如果 Nmap 无法找到带有 -sV 标志的确切版本(并且 --version-intensity 设置为 9),那么您可以使用其他工具。
Metasploit
Metasploit 是一个命令行工具,可用于漏洞利用的大多数阶段。它可以执行侦察、扫描、枚举、利用等操作。在 Kioptrix 中,目前我们要做的就是获取目标正在使用的 SMB 版本:
msfconsole
使用此命令启动metasploit框架控制台。这是我们构建漏洞的环境。
在新的shell环境中,使用search命令查找与SMB相关的模块。
1 | =[ metasploit v6.3.27-dev ] |
一旦结果弹出,我们就会寻找一个与版本控制有关的辅助模块:
1 | ... |
该扫描仪模块看起来正确,因此要使用它,我们使用 use 命令并为其指定编号,即:use 111。使用此命令,我们已经设置了模块,并且 shell 应该反映这一点:
1 | msf6 auxiliary(scanner/smb/smb_version) > |
设置变量:
一旦我们设置了要针对目标使用的模块,我们需要设置环境变量以供其使用。其中包括目标的 IP 地址、我们想要访问的端口等。
要查看模块所需的变量列表,请使用 options 和/或 info 命令:
1 | msf6 auxiliary(scanner/smb/smb_version) > options |
我们想要设置 RHOSTS 变量,它将成为我们目标的 IP 地址。为此,只需使用 set 命令:
1 | msf6 auxiliary(scanner/smb/smb_version) > set RHOSTS 10.0.3.5 |
保存输出:
在运行模块之前我们可能希望将输出保存到文件中。为此,您可以使用带有目标文件的 spool 命令:
1 | msf6 auxiliary(scanner/smb/smb_version) > spool output.txt |
启动模块:
现在我们已经选择了一个模块并给了它一个目标,我们可以使用 run 命令运行该模块。
1 | msf6 auxiliary(scanner/smb/smb_version) > run |
现在我们知道目标正在运行 Samba 2.2.1a,我们可以在其中查找相关的漏洞/CVE。
其他 SMB 枚举工具:
nmblookup
nmblookup 是一个 CLI 工具,它将网络上设备的 NetBIOS 名称解析为其 IP 地址。它通过利用网络上进行的查询来实现这一点。
nbtscan
nbtscan 是另一个 CLI 命令,它将通过向提供的 IP 地址或 IP 地址范围发送 NetBIOS 状态查询来返回有关网络上计算机的信息。它可以返回以下信息:
- IP地址
- NetBIOS 计算机名称
- 当前登录用户
- MAC 地址
enum4linux
enum4linux 是一个专门用于枚举目标上的 SMB 信息的枚举工具(但也可以返回附加信息)。
只需给 enum4linux 我们的目标 IP,并且没有标志,我们就可以得到很多信息:
1 | enum4linux 10.0.3.5 |
返回了很多输出,包括有趣的信息,例如:
- 目标的密码策略
- 用户帐户和组
3.RID - 用户
- 工作组
- 域名
- NetBIOS
- 股份
- 等等
嵌入命令:
enum4linux通过使用其他常见的SMB命令来枚举目标信息。其中包括 smbclient、smbget、rpcclient、net、nmblookup 等。
Nmap nbstat.nse 脚本
此 Nmap 脚本专门用于枚举目标上的 NetBIOS 名称和 MAC 地址。它返回登录计算机的名称以及用户的名称。如果您增加详细程度,它还可以返回它*认为系统拥有的所有名称。
它还将为我们提供与 nmblookup 相同的标志。

Nmap smb-os-discovery.nse 脚本
此 Nmap 脚本使用匿名帐户通过 SMB *启动与目标的连接。在此过程中,它能够收集并返回信息,包括操作系统、计算机名称、域、工作组和当前时间。
这是可能的,因为 SMB 服务器在您发起与其的连接时会发回所有这些信息。该脚本可以返回的其他信息包括:
- 森林名称
- 完全限定域名


提示
检查/etc/samba/smb.conf
转到 min protocol:这需要匹配远程目标的协议和/或目标版本需要落在该范围内。
摆脱
RID 基本上就像使用机器的 SID 并在最后添加某些用户已知的数字,然后查询它是否存在……
[!资源]
[!我以前的笔记(在文本中链接)]