深入解析 SMB 相关命令:smbmap、smbclient、netexec 等工具的使用指南
Server Message Block(SMB)协议是广泛应用于文件共享、打印机共享和进程间通信的网络协议,尤其在 Windows 环境中常见。渗透测试和网络安全审计中,SMB 是一个重要的攻击面,相关工具如 smbmap
、smbclient
和 netexec
提供了强大的功能来枚举、访问和利用 SMB 共享。本文将详细介绍这些工具的常见命令、用法和实际应用场景,帮助安全从业者和系统管理员更好地理解和使用它们。
1. SMB 协议简介
SMB 是一种客户端-服务器协议,用于在网络中共享资源(如文件、打印机)。它最初由 IBM 开发,后由 Microsoft 广泛采用,支持 NTLM 和 Kerberos 认证,运行在 TCP 端口 139 或 445 上。SMB 的常见版本包括 SMBv1、SMBv2 和 SMBv3,其中 SMBv1 因安全漏洞(如 EternalBlue)已被许多现代系统禁用。
在渗透测试中,SMB 枚举的目标包括:
- 发现共享目录及其权限。
- 提取用户、组或密码策略信息。
- 执行远程命令或上传/下载文件。
- 利用 SMB 漏洞(如 SMBGhost、SMBleed)。
以下将逐一介绍 smbmap
、smbclient
和 netexec
的详细用法,并补充其他相关工具的简单介绍。
2. smbmap:SMB 共享枚举利器
smbmap
是一个专注于 SMB 共享枚举的工具,基于 Python 的 Impacket 库开发,广泛用于渗透测试。它可以列出共享目录、检查权限、上传/下载文件,甚至执行远程命令。以下是 smbmap
的常见命令及其用法。
2.1 安装与依赖
smbmap
通常预装在 Kali Linux 中。若需手动安装,可通过 GitHub 仓库获取:
git clone https://github.com/ShawnDEvans/smbmap.git
cd smbmap
pip install -r requirements.txt
依赖包括 Impacket、PyASN.1 和 PyCrypto。
2.2 常用命令
2.2.1 列出共享目录
用于发现目标主机上的 SMB 共享及其权限。
smbmap -H <目标IP> -u <用户名> -p <密码>
-H
: 指定目标 IP 或主机名。-u
: 用户名(为空则尝试匿名登录)。-p
: 密码(支持明文或 NTLM 哈希,格式为LMHASH:NTHASH
)。- 示例:
输出示例:smbmap -H 192.168.1.100 -u guest -p ""
[+] IP: 192.168.1.100:445 Name: server.lanDisk Permissions Comment---- ----------- -------ADMIN$ NO ACCESS Remote AdminC$ NO ACCESS Default shareIPC$ NO ACCESS Remote IPCPublic READ ONLY Public Share
2.2.2 匿名登录
尝试使用空凭据访问共享:
smbmap -H <目标IP> -u "" -p ""
2.2.3 递归列出目录内容
列出指定共享中的文件和子目录:
smbmap -H <目标IP> -u <用户名> -p <密码> -R <共享名>
-R
: 递归列出指定共享的内容。- 示例:
输出示例:smbmap -H 192.168.1.100 -u admin -p password123 -R Public
[+] IP: 192.168.1.100:445 Name: server.lanDisk: Publicdr--r--r-- 0 Mon Jan 10 12:00:00 2023 Documents-r--r--r-- 20480 Mon Jan 10 12:01:00 2023 readme.txt
2.2.4 上传文件
将本地文件上传到目标共享:
smbmap -H <目标IP> -u <用户名> -p <密码> --upload <本地文件> <共享名/目标路径>
- 示例:
smbmap -H 192.168.1.100 -u admin -p password123 --upload /tmp/payload.exe Public/payload.exe
2.2.5 下载文件
从共享下载文件到本地:
smbmap -H <目标IP> -u <用户名> -p <密码> --download <共享名/文件路径>
- 示例:
smbmap -H 192.168.1.100 -u admin -p password123 --download Public/secret.txt
2.2.6 执行远程命令
在目标主机上执行命令(需要管理员权限):
smbmap -H <目标IP> -u <用户名> -p <密码> -x <命令>
- 示例:
smbmap -H 192.168.1.100 -u admin -p password123 -x "whoami"
2.2.7 扫描多个主机
扫描 IP 范围或主机列表:
smbmap -i <IP范围> -u <用户名> -p <密码>
-i
: 支持 CIDR 格式(如192.168.1.0/24
)。- 示例:
smbmap -i 192.168.1.0/24 -u guest -p ""
2.2.8 检查可写共享
列出具有写权限的共享:
smbmap -H <目标IP> -u <用户名> -p <密码> --writable
2.2.9 指定域
在域环境中使用:
smbmap -H <目标IP> -u <用户名> -p <密码> -d <域名>
-d
: 指定域(如corp.local
)。- 示例:
smbmap -H 192.168.1.100 -u user -p password123 -d corp
2.3 注意事项
- 权限:某些操作(如命令执行)需要管理员权限。
- NTLM 限制:
smbmap
仅支持 NTLM 认证,不支持 Kerberos。 - 合法性:仅在授权范围内使用,未经许可的扫描可能违法。
3. smbclient:类 FTP 的 SMB 客户端
smbclient
是 Samba 套件的一部分,提供类似 FTP 的命令行界面,用于访问和操作 SMB 共享。它支持文件传输、目录浏览和共享枚举,适合 Linux/Unix 环境。
3.1 安装
smbclient
通常预装在 Linux 发行版中,可通过包管理器安装:
sudo apt install smbclient
3.2 常用命令
3.2.1 列出共享
显示目标主机上的共享列表:
smbclient -L <目标IP> -U <用户名>
-L
: 列出共享。-U
: 指定用户名(格式为用户名%密码
,若为空则匿名)。- 示例:
输出示例:smbclient -L 192.168.1.100 -U guest%""
Sharename Type Comment --------- ---- ------- Public Disk Public Share IPC$ IPC Remote IPC ADMIN$ Disk Remote Admin C$ Disk Default share
3.2.2 匿名访问
尝试匿名登录:
smbclient -L <目标IP> -N
-N
: 无密码(匿名)。
3.2.3 连接到共享
以交互模式连接到特定共享:
smbclient //<目标IP>/<共享名> -U <用户名>
- 示例:
进入交互模式后,提示符为smbclient //192.168.1.100/Public -U admin%password123
smb: \>
,支持以下命令:ls
: 列出目录内容。get <文件>
: 下载文件。put <文件>
: 上传文件。cd <目录>
: 切换目录。exit
: 退出。
3.2.4 非交互模式
直接执行命令:
smbclient //<目标IP>/<共享名> -U <用户名> -c "ls; get file.txt"
-c
: 指定要执行的命令(用分号分隔)。- 示例:
smbclient //192.168.1.100/Public -U admin%password123 -c "ls; get readme.txt"
3.2.5 递归下载
递归下载整个共享内容:
smbclient //<目标IP>/<共享名> -U <用户名> -c "recurse; prompt OFF; mget *"
recurse
: 启用递归。prompt OFF
: 禁用交互提示。mget *
: 下载所有文件。
3.2.6 指定域
在域环境中使用:
smbclient -L <目标IP> -U <域名>\<用户名>%<密码>
- 示例:
smbclient -L 192.168.1.100 -U corp\admin%password123
3.2.7 Kerberos 认证
在支持 Kerberos 的环境中:
smbclient //<目标IP>/<共享名> -k
-k
: 使用 Kerberos 认证(需配置 Kerberos 票据)。
3.3 注意事项
- 交互性:
smbclient
的交互模式适合手动操作,非交互模式适合脚本。 - Kerberos 支持:在 Active Directory 环境中,
-k
选项非常有用。 - 性能:递归下载可能较慢,建议结合其他工具(如
netexec
)。
4. netexec:多协议自动化渗透测试工具
netexec
(前身为 CrackMapExec)是一个强大的网络服务利用工具,支持 SMB、WinRM、RDP 等协议。它以自动化和批量操作为特色,适合快速枚举和测试大型网络。
4.1 安装
通过 GitHub 安装:
pipx install git+https://github.com/Pennyw0rth/NetExec
或使用 Docker:
docker run -it blacklanternsecurity/netexec
4.2 常用命令
4.2.1 基本扫描
扫描目标主机并获取基本信息(如主机名、域、OS 版本、SMB 版本):
netexec smb <目标IP>
- 示例:
输出示例:netexec smb 192.168.1.100
SMB 192.168.1.100 445 SERVER [*] Windows 10 Build 19041 (name:SERVER) (domain:corp.local) (signing:False) (SMBv1:True)
4.2.2 列出共享
枚举共享及其权限:
netexec smb <目标IP> -u <用户名> -p <密码> --shares
--shares
: 列出共享。- 示例:
netexec smb 192.168.1.100 -u admin -p password123 --shares
4.2.3 匿名访问
尝试匿名登录:
netexec smb <目标IP> -u "" -p "" --shares
4.2.4 执行命令
在目标主机上执行命令(需要管理员权限):
netexec smb <目标IP> -u <用户名> -p <密码> -x <命令>
-x
: 执行 cmd 命令。- 示例:
netexec smb 192.168.1.100 -u admin -p password123 -x "whoami"
4.2.5 执行 PowerShell 命令
执行 PowerShell 命令:
netexec smb <目标IP> -u <用户名> -p <密码> -X <PowerShell命令>
-X
: 执行 PowerShell 命令。- 示例:
netexec smb 192.168.1.100 -u admin -p password123 -X '$PSVersionTable'
4.2.6 递归下载共享内容
使用 spider_plus
模块递归下载共享内容:
netexec smb <目标IP> -u <用户名> -p <密码> -M spider_plus -o READ_ONLY=False
-M spider_plus
: 启用递归下载模块。-o READ_ONLY=False
: 包括可写共享。
4.2.7 用户枚举
枚举域用户:
netexec smb <目标IP> -u <用户名> -p <密码> --users
4.2.8 密码策略
获取域密码策略:
netexec smb <目标IP> -u <用户名> -p <密码> --pass-pol
4.2.9 Kerberos 认证
在 Kerberos 环境中使用:
netexec smb <目标IP> -k
-k
: 使用 Kerberos 认证。
4.2.10 批量扫描
扫描多个主机:
netexec smb <IP范围> -u <用户名> -p <密码>
- 示例:
netexec smb 192.168.1.0/24 -u guest -p ""
4.3 注意事项
- 自动化:
netexec
适合快速扫描和自动化任务,但可能产生较多网络流量。 - 权限:命令执行和高级操作需要管理员权限。
- 模块化:支持丰富的模块(如
zerologon
、petitpotam
),可通过-M
参数调用。
5. 其他相关工具简介
5.1 enum4linux
enum4linux
是一个 Perl 脚本,封装了 smbclient
、rpcclient
等工具,用于快速枚举 SMB 环境中的用户、组、共享和密码策略。
- 常用命令:
enum4linux -a <目标IP>
-a
: 执行所有枚举任务。
- 适用场景:快速提取域信息,尤其在允许空会话的系统中。
5.2 Impacket
Impacket 是一个 Python 库,包含多个 SMB 相关脚本(如 smbclient.py
、psexec.py
)。
- 示例:使用
smbclient.py
连接共享:python3 smbclient.py <域>/<用户名>:<密码>@<目标IP>
- 优势:支持 Kerberos 认证,适合复杂环境。
5.3 nmap SMB 脚本
Nmap 提供多个 SMB 相关脚本,用于漏洞扫描和共享枚举。
- 示例:枚举共享:
nmap --script smb-enum-shares -p 139,445 <目标IP>
- 示例:扫描 SMB 漏洞:
nmap --script smb-vuln* -p 139,445 <目标IP>
6. 实际应用场景
6.1 场景 1:发现可写共享
- 使用
smbmap
扫描共享:smbmap -H 192.168.1.100 -u guest -p "" --writable
- 发现可写共享
Public
,上传测试文件:smbmap -H 192.168.1.100 -u guest -p "" --upload /tmp/test.txt Public/test.txt
- 验证文件是否存在:
smbclient //192.168.1.100/Public -U guest%"" -c "ls"
6.2 场景 2:批量枚举域用户
- 使用
netexec
扫描域内主机:netexec smb 192.168.1.0/24 -u admin -p password123 --users
- 提取用户列表,结合其他工具(如
hydra
)进行密码喷洒。
6.3 场景 3:利用 SMB 漏洞
- 使用 Nmap 检测 SMB 漏洞:
nmap --script smb-vuln* -p 445 192.168.1.100
- 若发现 SMBGhost 漏洞,使用
netexec
测试:netexec smb 192.168.1.100 -u "" -p "" -M smbghost
7. 总结
smbmap
、smbclient
和 netexec
是 SMB 枚举和利用的三大核心工具,各自有独特优势:
smbmap
:专注于共享枚举和文件操作,适合快速权限检查。smbclient
:提供类 FTP 界面,适合手动操作和脚本化。netexec
:自动化程度高,适合批量扫描和复杂任务。
通过结合这些工具,安全从业者可以高效地发现 SMB 相关的安全问题,同时系统管理员可以利用它们审计和加固网络环境。在实际操作中,需根据目标环境选择合适的工具和认证方式(如 NTLM 或 Kerberos),并始终遵守法律和道德规范。
相关文章:
深入解析 SMB 相关命令:smbmap、smbclient、netexec 等工具的使用指南
Server Message Block(SMB)协议是广泛应用于文件共享、打印机共享和进程间通信的网络协议,尤其在 Windows 环境中常见。渗透测试和网络安全审计中,SMB 是一个重要的攻击面,相关工具如 smbmap、smbclient 和 netexec 提…...

RK3562/3588 系列之0—NPU基础概念
RK3562/3588 系列之0—NPU基础概念 1.处理器分类2.算力衡量指标TOPS参考文献 1.处理器分类 中央处理器(CPU); 图形处理器 (GPU); 神经网络处理器(NPU)。 每个处理器擅长不同的任务:CPU擅长顺序控制和即时性;GPU适合并行数据流处理,NPU擅长…...
springboot如何管理多数据源?
静态多数据源管理 配置多个数据源 :创建多个数据源的配置类,通常使用 @ConfigurationProperties 注解来绑定配置文件中的数据源属性,并通过 @Bean 注解定义多个 DataSource Bean 。例如: 配置类: @Configuration public class DataSourceConfig {@Bean(name = "prima…...
为什么vue的key值,不用index?
在 Vue 中,key 的作用是帮助框架高效地识别和复用 DOM 节点或组件实例。使用数组索引 (index) 作为 key 值可能会导致以下问题,因此通常不建议这样做: 1. 列表数据变化时,可能导致错误的 DOM 复用 问题:当列表的顺序…...

canvas画板!随意画!!
希望你天天开心 代码: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>绘画板</title…...

Float32、Float16、BFloat16
我们先介绍 Float32、Float16、BFloat16 的 浮点数表示方法 然后根据浮点数表示,来分析总结他们是怎么控制 精度和 数值范围 的 最后再来对比的说明 Float32、Float16、BFloat16 的 应用场景 和 硬件支持 1、浮点数的表示方法 Float32 : 单精度浮点数…...
C# new Bitmap(32043, 32043, PixelFormat.Format32bppArgb)报错:参数无效,如何将图像分块化处理?
C#处理非常大的图像(如 32043x32043 像素)时,确实需要采取分块化处理的方法来避免内存不足的问题。分块化处理可以将大图像分割成多个较小的块,分别进行处理和保存,最后再合并这些块以形成完整的图像。以下是一个详细的…...

5V 1A充电标准的由来与技术演进——从USB诞生到智能手机时代的电力革命
点击下面图片带您领略全新的嵌入式学习路线 🔥爆款热榜 88万阅读 1.6万收藏 一、起源:USB标准与早期电力传输需求 1. USB的诞生背景 1996年,由英特尔、微软、IBM等公司组成的USB-IF(USB Implementers Forum)发布了…...

微信小程序蓝牙连接打印机打印单据完整Demo【蓝牙小票打印】
文章目录 一、准备工作1. 硬件准备2. 开发环境 二、小程序配置1. 修改app.json 三、完整代码实现1. pages/index/index.wxml2. pages/index/index.wxss3. pages/index/index.js 四、ESC/POS指令说明五、测试流程六、常见问题解决七、进一步优化建议 下面我将提供一个完整的微信…...

龙虎榜——20250425
指数依然在震荡,等待方向选择,整体量能不搞但个股红多绿少。 2025年4月25日龙虎榜行业方向分析 一、核心主线方向 绿色电力(政策驱动业绩弹性) • 代表标的:华银电力(绿电运营)、西昌电力&…...

计算机组成原理:指令系统
计算机组成原理:指令集系统 指令集体系结构(ISA)ISA定义ISA包含的内容举个栗子指令的基本组成(操作码+地址码)指令分类:地址码的个数定长操作码变长操作码变长操作码的原则变长操作码的设计指令寻址寻址方式的目的寻址方式分类有效地址直接在指令中给出有效地址间接给出有效地…...

【Go语言】RPC 使用指南(初学者版)
RPC(Remote Procedure Call,远程过程调用)是一种计算机通信协议,允许程序调用另一台计算机上的子程序,就像调用本地程序一样。Go 语言内置了 RPC 支持,下面我会详细介绍如何使用。 一、基本概念 在 Go 中&…...

Python----深度学习(基于深度学习Pytroch簇分类,圆环分类,月牙分类)
一、引言 深度学习的重要性 深度学习是一种通过模拟人脑神经元结构来进行数据学习和模式识别的技术,在分类任务中展现出强大的能力。 分类任务的多样性 分类任务涵盖了各种场景,例如簇分类、圆环分类和月牙分类,每种任务都有不同的…...
入侵检测系统(IDS)与入侵防御系统(IPS):功能对比与部署实践
入侵检测系统(IDS)与入侵防御系统(IPS):功能对比与部署实践 在网络安全防御体系中,入侵检测系统(Intrusion Detection System, IDS)与入侵防御系统(Intrusion Preventio…...

uniapp-商城-38-shop 购物车 选好了 进行订单确认4 配送方式1
配送方式在订单确认页面最上方,可以进行选中配送还是自提,这里先看看配送。 代码样式: 可以看出来是通过组件来实现的。组件名字是:delivery-layout 1、建立组件文件夹和页面,delivery-layout这里就只有配送 2、具体…...

uniappx 打包配置32位64位x86安装包
{"app": {"distribute": {"android": {"abiFilters": ["armeabi-v7a","arm64-v8a","x86","x86_64"]}}} }...

【深度强化学习 DRL 快速实践】逆向强化学习算法 (IRL)
Inverse Reinforcement Learning (IRL) 详解 什么是 Inverse Reinforcement Learning? 在传统的强化学习 (Reinforcement Learning, RL) 中,奖励函数是已知的,智能体的任务是学习一个策略来最大化奖励 而在逆向强化学习 (Inverse Reinforc…...

《普通逻辑》学习记录——性质命题及其推理
目录 一、性质命题概述 二、性质命题的种类 2.1、性质命题按质的分类 2.2、性质命题按量的分类 2.3、性质命题按质和量结合的分类 2.4、性质命题的基本形式归纳 三、四种命题的真假关系 3.1、性质命题与对象关系 3.2、四种命题的真假判定 3.3、四种命题的对当关系 四、四种命题…...

人工智能(AI)对网络管理的影响
近年来,人工智能(AI)尤其是大语言模型(LLMs)的快速发展,正在深刻改变网络管理领域。AI的核心价值在于其能够通过自动化、模式分析和智能决策,显著提升网络运维效率并应对复杂挑战。具体表现为: 快速数据查询与分析࿱…...
第1讲|R语言绘图体系总览(Base、ggplot2、ComplexHeatmap等)
目录 第1讲|R语言绘图体系总览 ✨ 引言:为什么R绘图如此重要? 🧩 1. Base绘图系统 🧩 2. ggplot2生态系统 🧩 3. ComplexHeatmap超级热图系统 🧩 4. 其他特色绘图库(快速了解) ✏️ 小结一句话 📅 预告下一讲 第1讲|R语言绘图体系总览 (Base、ggplot…...

embedding_model模型通没有自带有归一化层该怎么处理?
embedding_model 是什么: 嵌入式模型(Embedding)是一种广泛应用于自然语言处理(NLP)和计算机视觉(CV)等领域的机器学习模型,它可以将高维度的数据转化为低维度的嵌入空间࿰…...
基于STM32、HAL库的MCP3421A0T模数转换器ADC驱动程序设计
一、简介: MCP3421A0T是Microchip公司生产的一款18位Δ-Σ模数转换器(ADC),具有以下特点: 18位分辨率 单通道差分输入 可编程增益放大器(PGA):1, 2, 4, 8 可选的转换速率(3.75/15/60/240SPS) 内部基准电压(2.048V 0.05%) IC…...

八大排序——冒泡排序/归并排序
八大排序——冒泡排序/归并排序 一、冒泡排序 1.1 冒泡排序 1.2 冒泡排序优化 二、归并排序 1.1 归并排序(递归) 1.2 递归排序(非递归) 一、冒泡排序 1.1 冒泡排序 比较相邻的元素。如果第一个比第二个大,就交换…...

银发科技:AI健康小屋如何破解老龄化困局
随着全球人口老龄化程度的不断加深,如何保障老年人的健康、提升他们的生活质量,成为了社会各界关注的焦点。 在这场应对老龄化挑战的战役中,智绅科技顺势而生,七彩喜智慧养老系统构筑居家养老安全网。 而AI健康小屋作为一项创新…...
Python实例题:使用Pvthon3编写系列实用脚本
目录 Python实例题 题目 1. 文件重命名脚本 csv_data_statistics.py file_rename.py web_crawler.py 2. CSV 文件数据统计脚本 3. 简单的网页爬虫脚本 运行思路 文件重命名脚本 CSV 文件数据统计脚本 简单的网页爬虫脚本 注意事项 Python实例题 题目 使用Pvthon…...

命令行指引的尝试
效果 步骤 首先初始化一个空的项目,然后安装一些依赖 npm init -y npm install inquirer execa chalk ora至于这些依赖是干嘛的,如下图所示: 然后再 package.json 中补充一个 bin 然后再根目录下新建一个 index.js , 其中的内容如下 #!/…...
Sharding-JDBC 系列专题 - 第九篇:高可用性与集群管理
Sharding-JDBC 系列专题 - 第九篇:高可用性与集群管理 本系列专题旨在帮助开发者全面掌握 Sharding-JDBC,一个轻量级的分布式数据库中间件。本篇作为系列的第九篇文章,将重点探讨 高可用性(High Availability, HA) 和 集群管理,包括数据库高可用方案、Sharding-JDBC 的故…...

【Dify系列教程重置精品版】第1课 相关概念介绍
文章目录 一、Dify是什么二、Dify有什么用三、如何玩转Dify?从螺丝刀到机甲战士的进阶指南官方网站:https://dify.ai github地址:https://github.com/langgenius/dify 一、Dify是什么 Dify(Define + Implement + For You)。这是一款开源的大…...

leetcode0106. 从中序与后序遍历序列构造二叉树-medium
1 题目:从中序与后序遍历序列构造二叉树 官方标定难度:中 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入…...
第5.5章:ModelScope-Agent:支持多种API无缝集成的开源框架
5.5.1 ModelScope-Agent概述 ModelScope-Agent,由阿里巴巴旗下ModelScope社区开发,是一个开源的、模块化的框架,旨在帮助开发者基于大型语言模型快速构建功能强大、灵活性高的智能代理。它的核心优势在于支持与多种API和外部系统的无缝集成&…...