因为电脑坏掉了,所以暂时没有截图 QQ
SMB 针对网路传输档案的协定,提供给网路芳邻与印表机使用。
可透过未经身分验证的 inter-process communication (IPC) 机制,处理共享的资料。
最新的版本为 SMB 3.1.1 (Windows 10 与 Windows Server 2016)
以下为版本与作业系统:
SMB Version | Windows version |
---|---|
CIFS | Microsoft Windows NT 4.0 |
SMB 1.0 | Windows 2000, Windows XP, Windows Server 2003 & Windows Server 2003 R2 |
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 |
假设使用端和服务器端使用不同的作业系统与 SMB 版本,则会以最高可支援的版本进行连线,如 Windwos 8 与 Widnow Server 2016 则会以 SMB 3.0 进行连线。
现今有许多 SMB 相关的已知漏洞,如 CVE-2017-0143,影响大量的设备与系统。
使用的 TCP 与 UDP 的 port
名称 | port | 说明 | |
---|---|---|---|
netbios-ns | 137/tcp | NETBIOS Name Service | |
netbios-ns | 137/udp | NETBIOS Name Service | |
netbios-dgm | 138/tcp | NETBIOS Datagram Service | |
netbios-dgm | 138/udp | NETBIOS Datagram Service | |
netbios-ssn | 139/tcp | NETBIOS session service | |
netbios-ssn | 139/udp | NETBIOS session service | |
microsoft-ds | 445/tcp | 用於 AD |
於 Linux 中有一个工具名 Rpcclient,可执行使用者端的 MS-RPC 的函式。
null session
null session 用於 Samba 或 SMB 服务器的连接使用,不需要密码进行身分验证,预设情况下较旧的系统为开启的,而 Windows XP SP2 和 Windows Server 2003 禁止使用。
利用空的帐号名称
rpcclient -U "" [target]
输入以上的指令,会要求输入密码,可以将密码留空。
会看到rpcclient $>
可输入指令
取得帮助清单
help
查看功能变数名称与使用者数量
rpcclient $> querydominfo
该指令可看到 Domain、Server、Comment、Total Users、Total Group、Total Aliases 等资讯
查看使用者清单
rpcclient $> enumdomusers
可看到目前使用者的清单,其中 RID 以十六进位表示(0x3E8 = 1000)
user:[fei] rid:[0x3e8]
指定使用者帐号取得资讯
rpcclient $> queryuser [username]
指定使用者 RID(binary) 取得资讯
rpcclient $> queryuser 1000
指定使用者 RID(Hex) 取得资讯
rpcclient $> queryuser 0x3e8
以上的指令可以针对该使用者,查询使用者路径、home drive、密码相关资讯。
利用 TAB 取得可用的指令
rpcclient $> enum <TAB><TAB>
enumalsgroups enumdomgroups enumjobs enumprinters enumtrust
enumdata enumdomusers enumkey enumprivs
enumdataex enumdrivers enummonitors enumprocdatatypes
enumdomains enumforms enumports enumprocs
如果出现 NT_STATUS_CONNECTION_DISCONNECTED
表示可能因为 smbclient 版本太低,可以在 /etc/samba/smb.conf
编辑 client min protocol = CORE
并不是每一个系统都可以使用 enumdomusers
列出所有使用者,有一些系统没有支援,没有支援的系统,若使用 querydominfo
中的使用者数量为 0。
我们需要使用 RID cycling 来取得使用者列表。
lookupnames
查询 up name
rpcclient $> lookupnames pbx
查询 SID,会输出使用者帐号
rpcclient $> lookupsids [domain]
查询以中使用者群组
rpcclient $> lookupnames administrators
穷举 System RID
rpcclient $> lookupsids S-1-5-32-[501-1000]
利用 Perl 撰写而成的 Linux 版本 enum.exe
可以列举 Windows 主机的 Samba 资讯,
./enum4linux.pl [options] [ip]
参数 | 说明 |
---|---|
-U | 取得使用者的清单 |
-M | 取得机器的清单 |
-S | 取得共享的清单 |
-P | 取得密码策略资讯 |
-G | 取得群组和成员列表 |
-d | 详细资讯,使用於参数 -U 与 -S |
-u user | 特别指定帐号,预设为"" |
-p pass | 特别指定密码,预设为"" |
-a | 执行所有的猎取包含 -U -S -G -P -r -o -n -i |
-o | 取得作业系统资讯 |
-i | 取得印表机资讯 |
基本列举
enum4linux [target]
Nmap 中的 NSE 包含许多与 SMB 相关的扫描脚本,路径於 /usr/share/nmap/scripts/smb*
ls -ls /usr/share/nmap/scripts/smb*
若找到想要使用的扫描脚本,可利用以下的指令,指定脚本:
nmap --script=[scriptname] [target ip]
确认 SMB 版本与作业系统版本
nmap -p 139,445 --script=smb-os-discovery [target]
利用所有与 SMB 相关的脚本进行扫描
nmap -p 139,445 --script=smb-vuln* [target]
扫描结果可能有 false 或是详细的扫描资讯(State:VULNERABLE)。
确认目标是否存在 MS08-067 漏洞
nmap -p 139,445 --script=smb-vuln-ms08-067 [target]
Eternalblue 是 2017 年 04 月利用 SMBv1 协定的漏洞,影响以下版本:
该漏洞将造成远端服务器任意执行指令,属高风险漏洞。
确认目标是否存在 MS17-010 漏洞
nmap -p 445 [target] --script=smb-vuln-ms17-010
可下载 NSE 到系统内部
wget https://svn.nmap.org/nmap/scripts/smb-vuln-ms17-010.nse -O /usr/share/nmap/scripts/smb-vuln-ms17-010.nse
更新 NSE 资料库
nmap --script-updatedb
GitHub Repo https://github.com/b2etw/Spring-Kotlin...
Toasts 有时又叫做 Snackbar 用来提醒用户一些小事的元件 也有几种不同的使用情境,在 ...
询问各位大大,我在网路上看到要转移空间,就是按下延伸磁碟机。 但是我的的C槽却一直无法出现,延伸磁...
天亮了 昨晚是平安夜 关於迷雾森林故事 粉红烟花三个月 由於黑洞把12只 animal 吸走後的烟 ...
一、前言 网路上有很多创建个人 GitHub Pages 的教学文章,这边就先跳过此环节与相关原...