☰
enum4linux 报 Server doesn‘t allow session 与 SMB 主机信息枚举
2026/10/15 8:09:29 网站建设 项目流程

enum4linux 报 Server doesn't allow session 与 SMB 主机信息枚举

enum4linux 是一个封装 Samba 套件(rpcclient、net、nmblookup、smbclient)的枚举脚本,用于从一个 IP 上提取 Windows 或 Samba 主机的用户、共享、工作组与密码策略等信息。它本身不实现协议,只是把几条 SMB/NBT 命令串起来并解析输出。

仅供已获得书面授权的安全测试使用。

安装与版本

Kali 自带。先看脚本本体:

head -12 /usr/bin/enum4linux

输出说明它只是一层包装:

#!/usr/bin/env sh set -e cd /usr/share/enum4linux/ exec ./enum4linux.pl "$@"

版本信息在帮助里:

enum4linux -h

首行即版本:

enum4linux v0.9.1 (http://labs.portcullis.co.uk/application/enum4linux/)

Kali 2025.4 同时装了重写版:

enum4linux-ng --help
ENUM4LINUX - next generation (v1.3.7)

基本用法

-a是最常用的参数,等价于同时开启-U -S -G -P -r -o -n -i:

enum4linux -a 192.168.1.20

对一个没有开放 SMB 的主机执行时,它会逐段报错但继续跑:

Starting enum4linux v0.9.1 on Wed Oct 14 16:32:39 2026 =========================================( Target Information )========================================= Target ........... 127.0.0.1 RID Range ........ 500-550,1000-1050 =============================( Enumerating Workgroup/Domain on 127.0.0.1 )============================= [E] Can't find workgroup/domain =================================( Nbtstat Information for 127.0.0.1 )================================= Looking up status of 127.0.0.1 No reply from 127.0.0.1 =====================================( Session Check on 127.0.0.1 )===================================== [E] Server doesn't allow session using username '', password ''. Aborting remainder of tests.

各段独立,前面的失败不会中断整体,只有 Session Check 失败才会Aborting remainder of tests。

报错 Server doesn't allow session

[E] Server doesn't allow session using username '', password ''. Aborting remainder of tests.

含义是用空用户名空密码建立 SMB 会话被拒绝,后续依赖会话的枚举(用户、共享、组)整段跳过。三种常见情形:

  • 目标是 Windows 10/11 或较新的 Server,默认禁止匿名会话,这属于正常加固,不是漏洞;
  • 目标根本不是 SMB 服务,445/139 没开。先把端口确认掉:
nmap -p 139,445 192.168.1.20
  • 已经拿到低权限账号,直接带凭据枚举:
enum4linux -u user -p 'Passw0rd' -a 192.168.1.20

若目标只开放 139 而 445 不通,脚本会走 NetBIOS 会话,成功率明显下降。用-v可以看到它实际执行的每条net与rpcclient命令。

报错 Can't find workgroup/domain

[E] Can't find workgroup/domain

这是nmblookup拿不到 NetBIOS 名称。主机名解析依赖 NBT,只开 TCP 445 的现代 SMB 可能不回 NetBIOS 查询。用-w手动指定工作组可以跳过这一步:

enum4linux -w WORKGROUP -a 192.168.1.20

它不影响后续基于 445 的 RPC 枚举,属于可忽略的噪声。

enum4linux 与 enum4linux-ng 的差别

两者同机共存。enum4linux是 2011 年的 Perl 老脚本,enum4linux-ng是重写版,差异主要在结果处理:

[-oJ OUT_JSON_FILE | -oY OUT_YAML_FILE | -oA OUT_FILE]

新版支持把枚举结果直接导出成 JSON 或 YAML,便于批量收集后统一处理:

enum4linux-ng -A -oJ host.json 192.168.1.20

新目标建议直接用enum4linux-ng,老字典与老教程里的命令仍可用enum4linux等价执行。

分场景用法

只取用户列表:

enum4linux -U 192.168.1.20

只取共享列表:

enum4linux -S 192.168.1.20

取密码策略,包含最短长度、锁定阈值与历史次数:

enum4linux -P 192.168.1.20

匿名被限时用 RID 循环枚举用户:

enum4linux -r -R 500-550 192.168.1.20

对域控补充 LDAP 389 段的信息:

enum4linux -l 192.168.1.20

拿到凭据后的枚举顺序

匿名会话被拒、又拿到一组低权限账号时,按下面的顺序推进。

先确认会话可用:

smbclient -L //192.168.1.20 -U user%'Passw0rd'

再带凭据让 enum4linux 跑全量:

enum4linux -u user -p 'Passw0rd' -a 192.168.1.20

对列出的共享逐个尝试读取,重点看是否有可写目录:

smbclient //192.168.1.20/share -U user%'Passw0rd'

域环境里再用 LDAP 段补齐组织信息:

enum4linux-ng -A -u user -p 'Passw0rd' 192.168.1.20

顺序的原则是先证明会话可用,再枚举,最后验证可读写性,避免在无效凭据上反复试。

适用边界

enum4linux 面向 SMB/NetBIOS 与少量 LDAP,不覆盖 WinRM、RDP、WMI 等其它管理面。它的输出偏清单性质,用户、组、共享、密码策略这些信息本身不代表漏洞,价值在于为后续的凭据猜解与横向移动提供素材。只开 SMB3 且关闭匿名访问的主机,能拿到的信息会明显减少,这是加固生效的表现。

注意事项

  • Server doesn't allow session在新版 Windows 上是常态,说明对方做了基线加固,不要当成漏洞上报。
  • enum4linux 的结果都来自 SMB/NBT 的公开可读信息,本身不写入目标;但-A(Aggressive)会尝试写检查,测试前确认授权范围。
  • 老脚本依赖 Samba 客户端,缺smbclient、rpcclient、polenum时会静默少输出几段,先用-v确认命令是否真的执行。
  • 同一网段批量枚举时把结果导出成 JSON,比逐个看终端滚动更可靠。
  • 结果里的用户名与共享名只是线索,是否可利用要回到具体漏洞与凭据继续验证。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询