深入解析 SMB 相关命令:smbmap、smbclient、netexec 等工具的使用指南

news2025/4/26 16:35:31

Server Message Block(SMB)协议是广泛应用于文件共享、打印机共享和进程间通信的网络协议,尤其在 Windows 环境中常见。渗透测试和网络安全审计中,SMB 是一个重要的攻击面,相关工具如 smbmapsmbclientnetexec 提供了强大的功能来枚举、访问和利用 SMB 共享。本文将详细介绍这些工具的常见命令、用法和实际应用场景,帮助安全从业者和系统管理员更好地理解和使用它们。

1. SMB 协议简介

SMB 是一种客户端-服务器协议,用于在网络中共享资源(如文件、打印机)。它最初由 IBM 开发,后由 Microsoft 广泛采用,支持 NTLM 和 Kerberos 认证,运行在 TCP 端口 139 或 445 上。SMB 的常见版本包括 SMBv1、SMBv2 和 SMBv3,其中 SMBv1 因安全漏洞(如 EternalBlue)已被许多现代系统禁用。

在渗透测试中,SMB 枚举的目标包括:

  • 发现共享目录及其权限。
  • 提取用户、组或密码策略信息。
  • 执行远程命令或上传/下载文件。
  • 利用 SMB 漏洞(如 SMBGhost、SMBleed)。

以下将逐一介绍 smbmapsmbclientnetexec 的详细用法,并补充其他相关工具的简单介绍。


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.lan
        Disk       Permissions    Comment
        ----       -----------    -------
        ADMIN$     NO ACCESS      Remote Admin
        C$         NO ACCESS      Default share
        IPC$       NO ACCESS      Remote IPC
        Public     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.lan
        Disk: Public
        dr--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 适合快速扫描和自动化任务,但可能产生较多网络流量。
  • 权限:命令执行和高级操作需要管理员权限。
  • 模块化:支持丰富的模块(如 zerologonpetitpotam),可通过 -M 参数调用。

5. 其他相关工具简介

5.1 enum4linux

enum4linux 是一个 Perl 脚本,封装了 smbclientrpcclient 等工具,用于快速枚举 SMB 环境中的用户、组、共享和密码策略。

  • 常用命令:
    enum4linux -a <目标IP>
    
    • -a: 执行所有枚举任务。
  • 适用场景:快速提取域信息,尤其在允许空会话的系统中。

5.2 Impacket

Impacket 是一个 Python 库,包含多个 SMB 相关脚本(如 smbclient.pypsexec.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:发现可写共享

  1. 使用 smbmap 扫描共享:
    smbmap -H 192.168.1.100 -u guest -p "" --writable
    
  2. 发现可写共享 Public,上传测试文件:
    smbmap -H 192.168.1.100 -u guest -p "" --upload /tmp/test.txt Public/test.txt
    
  3. 验证文件是否存在:
    smbclient //192.168.1.100/Public -U guest%"" -c "ls"
    

6.2 场景 2:批量枚举域用户

  1. 使用 netexec 扫描域内主机:
    netexec smb 192.168.1.0/24 -u admin -p password123 --users
    
  2. 提取用户列表,结合其他工具(如 hydra)进行密码喷洒。

6.3 场景 3:利用 SMB 漏洞

  1. 使用 Nmap 检测 SMB 漏洞:
    nmap --script smb-vuln* -p 445 192.168.1.100
    
  2. 若发现 SMBGhost 漏洞,使用 netexec 测试:
    netexec smb 192.168.1.100 -u "" -p "" -M smbghost
    

7. 总结

smbmapsmbclientnetexec 是 SMB 枚举和利用的三大核心工具,各自有独特优势:

  • smbmap:专注于共享枚举和文件操作,适合快速权限检查。
  • smbclient:提供类 FTP 界面,适合手动操作和脚本化。
  • netexec:自动化程度高,适合批量扫描和复杂任务。

通过结合这些工具,安全从业者可以高效地发现 SMB 相关的安全问题,同时系统管理员可以利用它们审计和加固网络环境。在实际操作中,需根据目标环境选择合适的工具和认证方式(如 NTLM 或 Kerberos),并始终遵守法律和道德规范。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2343391.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RK3562/3588 系列之0—NPU基础概念

RK3562/3588 系列之0—NPU基础概念 1.处理器分类2.算力衡量指标TOPS参考文献 1.处理器分类 中央处理器(CPU)&#xff1b; 图形处理器 (GPU)&#xff1b; 神经网络处理器(NPU)。 每个处理器擅长不同的任务:CPU擅长顺序控制和即时性&#xff1b;GPU适合并行数据流处理,NPU擅长…

canvas画板!随意画!!

希望你天天开心 代码&#xff1a; <!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 的 浮点数表示方法 然后根据浮点数表示&#xff0c;来分析总结他们是怎么控制 精度和 数值范围 的 最后再来对比的说明 Float32、Float16、BFloat16 的 应用场景 和 硬件支持 1、浮点数的表示方法 Float32 &#xff1a; 单精度浮点数…

5V 1A充电标准的由来与技术演进——从USB诞生到智能手机时代的电力革命

点击下面图片带您领略全新的嵌入式学习路线 &#x1f525;爆款热榜 88万阅读 1.6万收藏 一、起源&#xff1a;USB标准与早期电力传输需求 1. USB的诞生背景 1996年&#xff0c;由英特尔、微软、IBM等公司组成的USB-IF&#xff08;USB Implementers Forum&#xff09;发布了…

微信小程序蓝牙连接打印机打印单据完整Demo【蓝牙小票打印】

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

龙虎榜——20250425

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

计算机组成原理:指令系统

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

【Go语言】RPC 使用指南(初学者版)

RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种计算机通信协议&#xff0c;允许程序调用另一台计算机上的子程序&#xff0c;就像调用本地程序一样。Go 语言内置了 RPC 支持&#xff0c;下面我会详细介绍如何使用。 一、基本概念 在 Go 中&…

Python----深度学习(基于深度学习Pytroch簇分类,圆环分类,月牙分类)

一、引言 深度学习的重要性 深度学习是一种通过模拟人脑神经元结构来进行数据学习和模式识别的技术&#xff0c;在分类任务中展现出强大的能力。 分类任务的多样性 分类任务涵盖了各种场景&#xff0c;例如簇分类、圆环分类和月牙分类&#xff0c;每种任务都有不同的…

uniapp-商城-38-shop 购物车 选好了 进行订单确认4 配送方式1

配送方式在订单确认页面最上方&#xff0c;可以进行选中配送还是自提&#xff0c;这里先看看配送。 代码样式&#xff1a; 可以看出来是通过组件来实现的。组件名字是&#xff1a;delivery-layout 1、建立组件文件夹和页面&#xff0c;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&#xff1f; 在传统的强化学习 (Reinforcement Learning, RL) 中&#xff0c;奖励函数是已知的&#xff0c;智能体的任务是学习一个策略来最大化奖励 而在逆向强化学习 (Inverse Reinforc…

《普通逻辑》学习记录——性质命题及其推理

目录 一、性质命题概述 二、性质命题的种类 2.1、性质命题按质的分类 2.2、性质命题按量的分类 2.3、性质命题按质和量结合的分类 2.4、性质命题的基本形式归纳 三、四种命题的真假关系 3.1、性质命题与对象关系 3.2、四种命题的真假判定 3.3、四种命题的对当关系 四、四种命题…

人工智能(AI)对网络管理的影响

近年来&#xff0c;人工智能(AI)尤其是大语言模型(LLMs)的快速发展&#xff0c;正在深刻改变网络管理领域。AI的核心价值在于其能够通过自动化、模式分析和智能决策&#xff0c;显著提升网络运维效率并应对复杂挑战。具体表现为&#xff1a; 快速数据查询与分析​​&#xff1…

embedding_model模型通没有自带有归一化层该怎么处理?

embedding_model 是什么&#xff1a; 嵌入式模型&#xff08;Embedding&#xff09;是一种广泛应用于自然语言处理&#xff08;NLP&#xff09;和计算机视觉&#xff08;CV&#xff09;等领域的机器学习模型&#xff0c;它可以将高维度的数据转化为低维度的嵌入空间&#xff0…

八大排序——冒泡排序/归并排序

八大排序——冒泡排序/归并排序 一、冒泡排序 1.1 冒泡排序 1.2 冒泡排序优化 二、归并排序 1.1 归并排序&#xff08;递归&#xff09; 1.2 递归排序&#xff08;非递归&#xff09; 一、冒泡排序 1.1 冒泡排序 比较相邻的元素。如果第一个比第二个大&#xff0c;就交换…

银发科技:AI健康小屋如何破解老龄化困局

随着全球人口老龄化程度的不断加深&#xff0c;如何保障老年人的健康、提升他们的生活质量&#xff0c;成为了社会各界关注的焦点。 在这场应对老龄化挑战的战役中&#xff0c;智绅科技顺势而生&#xff0c;七彩喜智慧养老系统构筑居家养老安全网。 而AI健康小屋作为一项创新…

命令行指引的尝试

效果 步骤 首先初始化一个空的项目&#xff0c;然后安装一些依赖 npm init -y npm install inquirer execa chalk ora至于这些依赖是干嘛的&#xff0c;如下图所示&#xff1a; 然后再 package.json 中补充一个 bin 然后再根目录下新建一个 index.js , 其中的内容如下 #!/…

【Dify系列教程重置精品版】第1课 相关概念介绍

文章目录 一、Dify是什么二、Dify有什么用三、如何玩转Dify?从螺丝刀到机甲战士的进阶指南官方网站:https://dify.ai github地址:https://github.com/langgenius/dify 一、Dify是什么 Dify(D​​efine + ​​I​​mplement + ​​F​​or ​​Y​​ou)。这是一款开源的大…

leetcode0106. 从中序与后序遍历序列构造二叉树-medium

1 题目&#xff1a;从中序与后序遍历序列构造二叉树 官方标定难度&#xff1a;中 给定两个整数数组 inorder 和 postorder &#xff0c;其中 inorder 是二叉树的中序遍历&#xff0c; postorder 是同一棵树的后序遍历&#xff0c;请你构造并返回这颗 二叉树 。 示例 1: 输入…