Samba 介绍
Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS网络协议做链接的自由软件。第三版不仅可访问及分享SMB的文件夹及打印机,本身还可以集成入Windows Server的网域,扮演为网域控制站以及加入Active Directory成员。
安装samba
sudo apt install samba
查看samba版本
samba -V
Version 4.13.14-Ubuntu
修改smb.conf配置
samba的配置文件在/etc/samba/路径下,文件名为smb.conf,注意需要root用户权限才能编辑该文件,我是用root用户下使用vim进行编辑修改的。
在文件末尾添加以下内容
[test]
comment = samba test
path = /home/d/share //共享文件路径
browseable = yes
read only = no
guest ok = yes
writable = yes
添加samba用户
smbpasswd -a 用户名
接着需要两次输入密码
此处设置的用户和密码,是用来登录用的
安装smbclient
sudo apt install smbclient
打开samba SMBV1 enable
服务器端在/etc/samba/smb.conf文件中[global]段中加入
server min protocol NT1
客户端在/etc/samba/smb.conf文件中[global]段中加入
client min protocol NT1
启动samba
systemctl start smbd
重启samba
systemctl restart smbd
nmap 扫描Samba服务支持的SMB协议版本
nmap -p445 -Pn --script smb-protocols 192.168.10.64
Nmap scan report for 192.168.10.64
Host is up (0.000071s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
Host script results:
| smb-protocols:
| dialects:
| NT LM 0.12 (SMBv1) [dangerous, but default]
| 2.02
| 2.10
| 3.00
| 3.02
|_ 3.11
Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds
错误解决:Max protocol NT1 is less than min protocol SMB2_02
一般出现在使用smbclient 连接samba服务器时,这是由于smb.conf的client min protocol配置默认是SMB2_02,将client min protocol 配置为NT1即可。
smbclient 连接samba服务器
sudo smbpasswd -a hehe
smbclient //192.168.10.64/test -U hehe
指定协议版本连接Samba服务器
smbclient //192.168.10.64/test -m NT1 -U hehe
指定SMB默认端口连接Samba服务器
smbclient //192.168.10.64/test -p 9445 -m NT1 -U hehe
smb 端口
TCP 139 和 TCP 445 端口
smb-protocols.nse not found
使用nmap --script smb-protocols.nse 192.168.10.64
提示smb-protocols.nse not found,应该是没有相应的script,网上下载即可。
扫描smb版本方法
nmap --script smb-protocols 192.168.10.64 -p139
nmap --script smb-protocols 192.168.10.64 -p445
nmap --script smb-protocols 192.168.10.64
输出类似
Host script results:
| smb-protocols:
| dialects:
| NT LM 0.12 (SMBv1) [dangerous, but default]
| 2.02
| 2.10
| 3.00
| 3.02
|_ 3.11
smbclient - 類似FTP操作方式的訪問SMB/CIFS服務器資源的客戶端
smbclient 是個可以和SMB/CIFS服務器“交談”的客戶端程序。它提供 了類似FTP程序(參見ftp
(1))的用戶界面。它可以完成的操作包括象從服務
器下載文件到本地,上傳本地文件到服務器及在服務器上查找目錄信息等。
http://manpages.ubuntu.com/manpages/bionic/zh_TW/man1/smbclient.1.html
smbclient url port
通过-p port 参数可指定端口,windows默认的网络共享好像不能够指定端口。只能使用默认的端口。
smbclient 示例
列出某个IP地址所提供的共享文件夹
smbclient -L 198.168.10.64 -U username%password
像ftp客户端一样使用smbclient
smbclient //192.168.10.64/tmp -U username%password
执行smbclient命令成功后,进入smbclient环境,出现提示符:smb:/>
这里有许多命令和ftp命令相似,如cd 、lcd、get、megt、put、mput等。通过这些命令,我们可以访问远程主机的共享资源。
直接一次性使用smbclient命令
smbclient -c "ls" //192.168.10.64/tmp -U username%password
和
smbclient //192.168.10.64/tmp -U username%password
smb:/>ls
功能一样的。
创建一个共享文件夹
smbclient -c "mkdir share1" //192.168.10.64/tmp -U username%password
smb-protocols对应说明
SMB3_00: Windows 8
SMB3_02: Windows 8.1
SMB3_10: early Windows 10
SMB3_11: Windows 10
By default SMB3 in smb.conf selects the SMB3_11 variant.*
server min protocol = nt1
设置samba 支持的SMB协议版本,因为SMBv1(NT1)不安全,默认被禁用。导致很多只支持SMBv1的设备(电视盒子之类很多都只支持SMBv1协议)无法查看共享文件。
nmap smb 扫描脚本相关
cd /usr/share/nmap/scripts; ls | grep smb
smb2-capabilities.nse
smb2-security-mode.nse
smb2-time.nse
smb2-vuln-uptime.nse
smb-brute.nse
smb-double-pulsar-backdoor.nse
smb-enum-domains.nse
smb-enum-groups.nse
smb-enum-processes.nse
smb-enum-services.nse
smb-enum-sessions.nse
smb-enum-shares.nse
smb-enum-users.nse
smb-flood.nse
smb-ls.nse
smb-mbenum.nse
smb-os-discovery.nse
smb-print-text.nse
smb-protocols.nse
smb-psexec.nse
smb-security-mode.nse
smb-server-stats.nse
smb-system-info.nse
smb-vuln-conficker.nse
smb-vuln-cve2009-3103.nse
smb-vuln-cve-2017-7494.nse
smb-vuln-ms06-025.nse
smb-vuln-ms07-029.nse
smb-vuln-ms08-067.nse
smb-vuln-ms10-054.nse
smb-vuln-ms10-061.nse
smb-vuln-ms17-010.nse
smb-vuln-regsvc-dos.nse
smb-vuln-webexec.nse
smb-webexec-exploit.nse
nmap --script smb-os-discovery.nse -p445 192.168.10.64
输出:
Nmap scan report for 192.168.10.64
Host is up (0.000074s latency).
PORT STATE SERVICE
445/tcp open microsoft-ds
Host script results:
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.13.14-Ubuntu)
| Computer name: xxx
| NetBIOS computer name: xxx\x00
| Domain name: \x00
| FQDN: xxx-1
|_ System time: 2022-01-28T10:49:04+08:00
Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds
nmap 遍历samba共享
nmap --script smb-enum-shares.nse -p445 192.168.10.64
nmap 遍历samba用户
nmap –script smb-enum-users.nse -p445 192.168.10.64
nmap 同时运行多个脚本
nmap --script smb-enum-domains.nse,smb-enum-groups.nse,smb-enum-processes.nse,smb-enum-services.nse,smb-enum-sessions.nse,smb-enum-shares.nse,smb-enum-users.nse -p445 192.168.10.64
更多内容:https://www.infosecademy.com/nmap-smb-scripts-enumeration/
server min protocol (G)
This setting controls the minimum protocol version that the server will allow the client to use.
Normally this option should not be set as the automatic negotiation phase in the SMB protocol takes care of choosing the appropriate protocol unless you have legacy clients which are SMB1 capable only.
Default: server min protocol = SMB2_02
Example: server min protocol = NT1
所有的smb协议版本
- LANMAN1: First modern version of the protocol. Long filename support.
- LANMAN2: Updates to Lanman1 protocol.
- NT1: Current up to date version of the protocol. Used by Windows NT. Known as CIFS.
SMB2: Re-implementation of the SMB protocol. Used by Windows Vista and later versions of Windows. SMB2 has sub protocols available.
- SMB2_02: The earliest SMB2 version.
- SMB2_10: Windows 7 SMB2 version.
By default SMB2 selects the SMB2_10 variant.
SMB3: The same as SMB2. Used by Windows 8. SMB3 has sub protocols available.
- SMB3_00: Windows 8 SMB3 version.
- SMB3_02: Windows 8.1 SMB3 version.
- SMB3_11: Windows 10 SMB3 version.
By default SMB3 selects the SMB3_11 variant.
Configuring 20.04 samba for SMBv1
client min protocol = NT1
server min protocol = NT1
sudo service smbd restart
sudo service nmbd restart
How do I enable SMBv1 on my Raspberry Pi file server?
On the CLIENT and/or SERVER machine add to /etc/samba/smb.conf in the [global] section
client min protocol = NT1
server min protocol = NT1