SMB445端口利用


SMB协议是一种在局域网上共享文件、打印机、串行端口等资源的网络通信协议。它最初由IBM开发,后来被微软广泛采用,并成为Windows操作系统中文件共享的基础协议之一。SMB协议通常在TCP/IP网络上运行,使用TCP端口445进行通信。

1. SMB协议的主要特点包括:

  1. **文件和打印共享:**SMB协议允许网络中的计算机共享文件和打印机资源。用户可以在网络上访问共享的文件夹,并打印文档到共享的打印机。
    1. 目录浏览和操作: SMB协议允许客户端浏览远程计算机上的目录结构,并进行文件和文件夹的创建、删除、移动等操作。
    2. 文件传输和访问控制: 通过SMB,用户可以在网络上传输文件,并可以根据访问控制列表(ACL)对共享资源进行权限管理。
    3. 身份验证和会话管理: SMB协议支持用户身份验证机制,以确保只有授权用户可以访问共享资源。它还管理与服务器的会话,以跟踪客户端与服务器之间的连接状态。
    4. 消息传递和通知: SMB协议还支持客户端和服务器之间的消息传递,用于通知客户端有关资源状态的变化或其他事件的发生。

2. 常见访问端口

  1. 139

  2. 445

  3. **NetBIOS服务(端口139)

    • NetBIOS(Network Basic Input/Output System)是一种网络通信协议,旨在使不同计算机之间能够进行通信和资源共享。它提供了一种简单的方法来发现和连接其他计算机,并允许它们在网络上共享文件和打印机等资源。通常,NetBIOS服务使用TCP端口139。
    • NetBIOS服务在早期的局域网环境中得到了广泛应用,但随着时间的推移,它已被更现代化的网络服务所取代,如SMB(Server Message Block)。
  4. *Microsoft-DS服务(端口445)

    • Microsoft-DS(Microsoft Directory Services)是微软的文件共享服务,也称为SMB(Server Message Block)。它是用于在Windows操作系统上进行文件和打印机共享的通信协议。
    • Microsoft-DS服务通过TCP端口445进行通信。它提供了更强大和安全的文件共享功能,支持更多的操作系统和网络环境。与NetBIOS相比,Microsoft-DS在性能和安全性方面更加先进和可靠。

3. namp 脚本探测

nmap -p 445 –script=smb-enum-shares.nse,smb-enum-users.nse 10.10.29.173

使用工具扫描[[端口信息深入收集#enum4linux#]]

  • nmap: 这是一个网络探测和安全审核工具,用于发现主机和服务,以及识别网络中的漏洞。
  • -p 445: 这个参数指定了要扫描的目标端口,即445端口,这是用于Microsoft-DS(SMB)服务的默认端口。
  • --script=smb-enum-shares.nse,smb-enum-users.nse: 这个参数指定了要在扫描期间运行的Nmap脚本。具体来说,smb-enum-shares.nse用于枚举共享资源,smb-enum-users.nse用于枚举用户信息。
  • 10.10.29.173: 这是目标主机的IP地址,即要进行扫描和脚本运行的主机。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
   
Host script results:
| smb-enum-shares:
| account_used: guest
| \\10.10.29.173\IPC$:
| Type: STYPE_IPC_HIDDEN
| Comment: IPC Service (kenobi server (Samba, Ubuntu))
| Users: 2
| Max Users: <unlimited>
Path: C:\tmp
| Anonymous access: READ/WRITE
r| Current user access: READ/WRITE
| \\10.10.29.173\anonymous:
| Type: STYPE_DISKTREE
| Comment:
| Users: 0
| Max Users: <unlimited>
| Path: C:\home\kenobi\share
| Anonymous access: READ/WRITE
| Current user access: READ/WRITE

| \\10.10.29.173\print$:
| Type: STYPE_DISKTREE
| Comment: Printer Drives
| Users: 0
| Max Users: <unlimited>
| Path: C:\var\lib\samba\printers
| 匿名用户
Anonymous access: <none>
当前用户
|_ Current user access: <none
So? 到底什么是共享文件?

共享资源是计算机网络中可供多个用户访问和使用的文件夹、打印机、文件等资源。通过共享资源,用户可以在网络上共享数据、打印机等设备,从而方便多人协作和资源共享。
在Windows系统中,SMB(Server Message Block)协议通常用于实现共享资源。通过SMB,计算机可以共享文件和打印机,其他计算机则可以通过网络连接到这些共享资源并访问它们。

  • IPC$:IPC共享用于进程间通信,允许进程在不同的计算机之间进行通信。通常情况下,IPC共享不需要用户进行访问,但这里显示了匿名访问和当前用户访问都具有读写权限。
  • anonymous:匿名共享允许任何人在网络上访问指定的路径,而无需提供用户名和密码。在这种情况下,匿名用户可以在C:\home\kenobi\share路径上进行读写操作。
  • print$:打印机共享用于共享打印机驱动程序。这个共享没有匿名访问或当前用户访问权限,因此只能被特定用户或者具有特定权限的用户访问。

4. smbclient

smbclient是一个用于与SMB(Server Message Block)协议兼容的服务器进行通信的命令行工具。它通常用于在UNIX和Linux系统中访问Windows共享文件夹,但也可以在Windows系统上使用。

通过smbclient,你可以执行各种操作,包括列出共享资源、访问共享文件夹、上传和下载文件等。下面是一些smbclient的常用用法:

  1. 列出共享资源:

    smbclient -L //server_ip

  2. 使用用户名和密码登录到共享文件夹:

    smbclient //server_ip/share_name -U username

  3. 查看共享文件夹中的文件和目录:
    smb: \> dir

  4. 下载文件到本地系统:
    smb: \> get filename

  5. 上传文件到共享文件夹:
    smb: \> put local_filename

1
2
3
4
5
6
7
8
9
10
11
12
13
proxychains4 smbclient.py gapfactories.local/mspadmin@10.2.40.90 --hashes ":e20e81c5c06ccf288474c581f13423b9"

# shares
ADMIN$
C$
E$
Insurances
IPC$
it

# use E$
# tree

***全部下载smbget -R smb://10.10.29.173/anonymous

上述get命令smbget 是两个不同的命令,它们在功能和用法上有所不同。

  • get 是一个基本的文件传输命令,通常在FTP和类似协议中使用。在SMB(Server Message Block)协议中,您也可以使用 get 命令来下载单个文件,例如:smbclient //10.10.29.173/anonymous -c 'get filename.txt',其中 filename.txt 是要下载的文件名。这个命令将会把 filename.txt 文件从 anonymous 共享目录下载到当前工作目录。

  • smbget 是一个专门用于通过SMB协议下载文件的命令行工具。它的功能更加强大,可以递归下载整个目录结构,包括所有子目录和文件。在您提供的命令中,-R 参数表示递归下载。

因此,主要区别在于 get 命令只能下载单个文件,而 smbget 命令可以递归下载整个目录。根据您的需求,您可以选择使用其中的一个命令来下载所需的文件或目录。

匿名登陆

使用上述例子匿名访问看看能不能登陆一波

***smbclient //10.10.29.173/anonymous
或者smbclient //10.10.29.173 -N

  1. smbclient -L \10.10.14.193 -N
    这里的-N选项表示尝试匿名登录。如果成功连接并列出了共享资源,说明匿名访问是被允许的。
用户登陆
  1. 登录到 SMB 共享资源:一旦 smbclient 安装完成,可以使用以下命令登录到 SMB 共享资源:
    smbclient //server/share -U username%password

    • //server/share 是 SMB 服务器的地址和共享资源名称。替换 server 为实际的 SMB 服务器地址,share 为实际的共享资源名称。
    • username 是你的 SMB 账户的用户名。
    • password 是你的 SMB 账户的密码。

    例如,假设你要连接到地址为 10.0.0.1 的 SMB 服务器上的名为 public 的共享资源,用户名是 user1,密码是 pass123,那么命令将是:

    smbclient //10.0.0.1/public -U user1%pass123

5. Msf中的smb

SMB (Server Message Block) 是一种网络通信协议,主要用于在Windows网络环境中实现文件和打印服务的共享。SMB最初是由IBM和Sytek于1987年开发,后来被Microsoft采纳并发展成为其Windows操作系统中的核心网络协议之一。
SMB协议允许应用程序在客户端和服务器之间进行通信,以读取、写入和管理共享的文件、打印机以及其他资源。它通常运行在TCP/IP协议之上,使用端口445(SMB over TCP)或端口139(SMB over NetBIOS)。

***您还可以遇到一些共享文件和文件夹,这些文件和文件夹可以在没有密码的情况下访问或使用简单密码(例如 admin、administrator、root、toor 等)进行保护。

SMB有几个不同的版本,包括:

  1. SMB 1.0 (也称为CIFS,Common Internet File System):这是最初的SMB版本,已经过时并且存在安全漏洞。Microsoft推荐不再使用SMB 1.0。
  2. SMB 2.0:这是一个更新的版本,提供了更高的性能、安全性和功能。它支持更大的文件、加密、多通道通信以及其他特性。
  3. SMB 2.1 和 SMB 3.0:这些后续版本进一步增强了SMB协议的性能和安全性,提供了如目录租赁、加密和身份验证等新特性。
  4. SMB 3.1 和 SMB 3.1.1:这些版本进一步扩展了SMB的功能,包括支持存储空间的直接访问、文件透明加密、更高效的身份验证等
5.1 永恒之蓝漏洞:

SMB协议通常使用TCP 139和TCP 445端口。然而,需要注意的是,即使SMB端口是开放的,并不意味着系统就一定会受到永恒之蓝漏洞的攻击。为了成功利用这个漏洞,攻击者还需要满足其他条件,例如目标系统必须未打补丁或未采取其他安全措施等。

5.2 “DoublePulsar” 漏洞:

“DoublePulsar” 漏洞是一个在 Windows 系统的 Server Message Block (SMB) 中发现的严重安全漏洞。这个漏洞允许远程攻击者在目标系统上执行恶意代码,从而实现对该系统的完全控制。

“DoublePulsar” 是一个后门程序,由黑客组织 Shadow Brokers 在 2017 年泄露的一系列 NSA(美国国家安全局)工具中被公开。这个后门程序最初被设计用于NSA进行网络监听和监控活动,但泄露后,它成为了公众关注的焦点,并被广泛用于恶意活动和网络攻击中。

“DoublePulsar” 漏洞的利用过程涉及到攻击者向目标系统发送特制的 SMB 数据包,利用该漏洞在目标系统上执行恶意代码。一旦成功利用该漏洞,攻击者可以获得对目标系统的完全控制权,执行任意命令,收集敏感信息,进行进一步的网络渗透等。

6. Msf smb协议模块弱点利用:

auxiliary/scanner/smb/impacket/dcomexec

auxiliary/scanner/smb/impacket/dcomexec 是一个在 Metasploit 框架中用于扫描和利用 Microsoft DCOM (Distributed Component Object Model) 漏洞的模块。这个模块利用了 impacket 库,这是一个用于处理 Microsoft 网络协议(如 SMB, LDAP, HTTP 等)的 Python 库。

DCOM 是 Microsoft 的一种组件对象模型 (COM) 的分布式扩展,它允许对象跨网络边界进行通信。然而,由于 DCOM 的某些实现存在安全漏洞,攻击者可以利用这些漏洞来执行远程代码或提升权限。

auxiliary/scanner/smb/impacket/dcomexec 模块通常用于识别和利用这些 DCOM 相关的漏洞。这个模块会尝试与目标系统建立 DCOM 会话,并执行恶意代码或命令。

auxiliary/scanner/smb/impacket/secretsdump

auxiliary/scanner/smb/impacket/secretsdump 是 Metasploit 框架中的一个辅助模块,它利用 impacket 库来从 SMB(Server Message Block)会话中提取密码和其他敏感信息。这个模块特别针对 Windows 系统,并且经常被用于渗透测试和安全评估中,以获取存储在系统上的明文或哈希密码。

具体来说,secretsdump 模块可以:

  1. 提取 NTLM 哈希:它可以尝试从目标系统中提取存储的 NTLM(NT LAN Manager)哈希。这些哈希通常用于 Windows 身份验证,并且可以被用来进行密码破解。
  2. 获取明文密码:在某些情况下,如果攻击者具有足够的权限,secretsdump 还能够提取明文密码。这通常发生在密码被以明文形式存储在注册表或其他位置时。
  3. 获取 Kerberos 票据:这个模块还可以提取 Kerberos 票据,这些票据用于在 Windows 域环境中进行身份验证。

要使用 secretsdump 模块,攻击者需要能够与目标 Windows 系统建立有效的 SMB 会话。这通常意味着攻击者需要知道有效的用户名和密码,或者使用其他技术(如 SMB 中继、中间人攻击等)来拦截或模拟合法的 SMB 会话。

Msf exp

exploit/windows/smb/ms17_010_eternalblue

是 Metasploit 框架中的一个攻击模块,用于利用前面提到的 MS17-010 漏洞(也称为“永恒之蓝”漏洞)。这个模块允许攻击者远程执行代码并获得对受影响 Windows 系统的完全控制权。

要使用这个攻击模块,你需要先确保目标系统存在 MS17-010 漏洞,这通常通过使用 auxiliary/scanner/smb/smb_ms17_010 辅助模块进行扫描来确认。一旦确认目标系统存在漏洞,你就可以使用 exploit/windows/smb/ms17_010_eternalblue 模块来发起攻击。

在使用这个模块时,你需要设置一些参数,如目标主机的 IP 地址(RHOST)、要使用的有效载荷(payload)等。有效载荷是在成功利用漏洞后要在目标系统上执行的代码或命令。

exploit/windows/smb/ms17_010_psexec

是 Metasploit Framework 中的一个攻击模块,用于利用 Microsoft Windows 系统中的 MS17-010 漏洞(也称为“永恒之蓝”漏洞)。这个模块利用该漏洞执行远程代码,允许攻击者在目标系统上执行任意命令。

这个模块特别有用,因为它提供了一个在成功利用漏洞后执行任意 PowerShell 命令的能力。通过执行 PowerShell 脚本,攻击者可以获得对目标系统的完全控制,并执行各种恶意操作,如安装软件、删除文件、窃取敏感信息等。

要使用 exploit/windows/smb/ms17_010_psexec 模块,你需要先确保目标系统存在 MS17-010 漏洞。这通常通过使用 auxiliary/scanner/smb/smb_ms17_010 辅助模块进行扫描来确认。一旦确认目标系统存在漏洞,你可以设置攻击模块的参数,如目标主机的 IP 地址(RHOST)、要执行的 PowerShell 命令等。

exploit/windows/smb/smb_doublepulsar_rce

exploit/windows/smb/smb_doublepulsar_rce 是 Metasploit Framework 中的一个攻击模块,它利用了所谓的 “DoublePulsar” 漏洞。这个漏洞是在 Windows 的 Server Message Block (SMB) 实现中发现的,允许远程攻击者执行任意代码。

DoublePulsar 漏洞最初是在 2017 年被公开的,它与 EternalBlue 漏洞(MS17-010)类似,但它是针对不同的 SMB 版本和配置。由于 DoublePulsar 漏洞的存在,攻击者可以在目标系统上植入恶意软件,实现持久化控制,并收集敏感信息或执行其他恶意操作。

要使用 exploit/windows/smb/smb_doublepulsar_rce 模块,你需要确保目标系统存在 DoublePulsar 漏洞。这通常涉及到对目标系统的详细侦查和分析,以确定其是否容易受到该漏洞的攻击。

一旦确认目标系统存在漏洞,你可以设置攻击模块的相关参数,如目标主机的 IP 地址(RHOST)、端口号(如果适用)、有效载荷(payload)等。有效载荷是在成功利用漏洞后要在目标系统上执行的代码或命令

exploit/windows/smb/psexec

这不是工具psexec的问题 而是根据 smb和它叠加起来的效应 只要可以smb通信就有可能执行命令

exploit/windows/smb/psexec 是 Metasploit Framework(MSF)中的一个模块,用于利用 Windows 系统上的 Server Message Block (SMB) 服务进行远程代码执行。这个模块特别针对 Microsoft Windows 系统上的 psexec 工具,该工具允许用户以其他用户的身份在远程系统上执行命令。

psexec 是一个合法的、由 Microsoft 提供的工具,它通常用于管理目的,允许管理员以其他用户身份在远程或本地系统上执行程序。然而,如果攻击者能够利用某些漏洞或配置不当来执行恶意 psexec 命令,他们就可能获得对目标系统的完全控制。

在 MSF 的 exploit/windows/smb/psexec 模块中,攻击者会尝试利用目标系统上 SMB 服务的漏洞,以执行恶意 psexec 命令。这个模块会发送一个特殊构造的网络请求,以触发目标系统上的漏洞,并尝试执行恶意代码或命令。

要成功利用这个模块,攻击者需要满足以下条件:

  1. 目标系统必须运行着一个易受攻击的 SMB 服务版本。
  2. 攻击者必须能够与目标系统的 SMB 服务建立连接。
  3. 攻击者需要拥有适当的权限来执行恶意 psexec 命令。

7. 软件

samba

Samba是一个开源软件套件,它允许UNIX和Linux系统上的计算机与Windows操作系统上的计算机进行文件和打印机共享。通过Samba,你可以将UNIX或Linux系统上的文件和打印机共享给Windows客户端,实现跨平台的文件共享和打印服务。
Samba提供了一种基于SMB/CIFS协议的服务,这是Windows操作系统所使用的文件共享协议。它允许Windows客户端通过网络访问UNIX或Linux系统上的共享文件和打印机,就像它们在Windows网络中的本地资源一样。

除了文件共享和打印服务外,Samba还支持许多其他功能,如身份验证和授权(通过整合到现有的LDAP或Active Directory环境)、目录服务(通过LDAP)、文件和打印机管理等。

总的来说,Samba是一个强大的工具,使得UNIX和Linux系统可以与Windows系统无缝集成,为用户提供了便利的文件共享和打印服务。

8. psexec 命令执行

这基本上只会在内网看见,因为需要admin$ 的验证,一般都是利用内网的管理员的hash进行pth攻击。

[[凭据横向#2. Psexec 执行程序]]


文章作者: K1T0
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 K1T0 !
  目录