SMB - Server Message Block
Server Message Block
Samba Basic information
如前所述,SMB 服务器有一个替代变体,称为 Samba,是为基于 Unix 的操作系统开发的。Samba 实现Common Internet File System( CIFS) 网络协议。CIFS是SMB的一种“方言”。换句话说,CIFS 是 SMB 协议的一种非常具体的实现,而 SMB 协议又是由 Microsoft 创建的。这允许 Samba 与较新的 Windows 系统进行通信。因此,通常将其称为SMB / CIFS。
不过,CIFS 是 SMB 协议的扩展。因此,当我们通过 Samba 向旧版 NetBIOS 服务传递 SMB 命令时,它通常会通过 TCP 端口 137、138 和 139 连接到 Samba 服务器,但 CIFS 只使用 TCP 端口 445。SMB 有多个版本,包括仍在特定基础设施中使用的过时版本。
SMB Version
Supported
Features(特征)
CIFS
Windows NT 4.0
通过 NetBIOS 接口进行通信
SMB 1.0
Windows 2000
通过 TCP 直接连接
SMB 2.0
Windows Vista、Windows Server 2008
性能升级、改进的消息签名、缓存功能
SMB 2.1
Windows 7、Windows Server 2008 R2
锁定机制
SMB 3.0
Windows 8、Windows Server 2012
多通道连接、端到端加密、远程存储访问
SMB 3.0.2
Windows 8.1、Windows Server 2012 R2
SMB 3.1.1
Windows 10、Windows Server 2016
完整性检查、AES-128 加密
在Version 3 中,Samba 服务器获得了成为 Active Directory 域的正式成员的能力。在第 4 版中,Samba 甚至提供了 Active Directory 域控制器。为此,它包含几个所谓的守护进程(Unix 后台程序)。属于 Samba 的 SMB 服务器守护进程(smbd)提供了前两个功能,而 NetBIOS 消息块守护进程(nmbd)实现了后两个功能。SMB 服务控制着这两个后台程序。
我们知道,Samba 既适用于 Linux 系统,也适用于 Windows 系统。在网络中,每台主机都参与同一个workgroup。工作组是一个组名,用于标识 SMB 网络上的任意计算机集合及其资源。任何时候,网络上都可能有多个工作组。IBM 为联网计算机开发了一个application programming interface (API),称为Network basic Input/Output System (NetBIOS)。
NetBIOS 应用程序接口为应用程序提供了与其他计算机连接和共享数据的蓝图。在 NetBIOS 环境中,当一台机器上线时,它需要一个名称,这需要通过所谓的name registration程序来完成。要么每台主机在网络上保留自己的主机名,要么为此使用 NetBIOS 名称服务器(NBNS)。Windows Internet 名称服务(WINS)也增强了这一功能。
默认配置
Setting
Description 描述
[sharename]
网络共享的名称。
workgroup = WORKGROUP/DOMAIN
客户查询时会出现的工作组。
path = /path/here/
将授予用户访问权限的目录。
server string = STRING
启动连接时将显示的字符串。
unix password sync = yes
是否将 UNIX 密码与 SMB 密码同步?
usershare allow guests = yes
允许未经身份验证的用户访问定义的共享吗?
map to guest = bad user
当用户登录请求与有效的 UNIX 用户不匹配时该怎么办?
browseable = yes
该股票是否应该显示在可用股票列表中?
guest ok = yes
允许在不使用密码的情况下连接到服务吗?
read only = yes
只允许用户读取文件?
create mask = 0700
新创建的文件需要设置什么权限?
危险环境
Setting
Description 描述
browseable = yes
允许在当前股票中列出可用股票吗?
read only = no
禁止创建和修改文件?
writable = yes
允许用户创建和修改文件?
guest ok = yes
允许在不使用密码的情况下连接到服务吗?
enable privileges = yes
是否尊重分配给特定 SID 的特权?
create mask = 0777
必须为新创建的文件分配哪些权限?
directory mask = 0777
必须为新创建的目录分配哪些权限?
logon script = script.sh
用户登录时需要执行什么脚本?
magic script = script.sh
脚本关闭时应该执行哪个脚本?
magic output = script.out
魔术脚本的输出需要存储在哪里?
Restart Samba
SMBclient - 连接到Share
Samba 服务器上现在有五个不同的共享。因此,正如我们已经看到的,print$和 anIPC$已经默认包含在基本设置中。由于我们处理共享[notes]
RPCclient
Query 询问
Description 描述
srvinfo
服务器信息。
enumdomains
枚举网络中部署的所有域。
querydominfo
提供已部署域的域、服务器和用户信息。
netshareenumall
枚举所有可用的共享。
netsharegetinfo <share>
提供有关特定共享的信息。
enumdomusers
枚举所有域用户。
queryuser <RID>
提供有关特定用户的信息。
Rpcclient - 用户枚举
暴力破解用户 RID
Impacket - Samrdump.py
smbmap
crackmapexec
Enum4Linux-ng - 安装
Enum4Linux-ng - 枚举
我们需要使用两种以上的工具进行枚举。因为可能会出现这样的情况,即由于工具的编程,我们得到了不同的信息,而我们必须手动检查这些信息。因此,在我们不清楚自动工具是如何编写的情况下,我们绝不能仅仅依赖这些工具。
最后更新于
这有帮助吗?