• 配置错误的smb共享


    介绍

    Windows 是当今最流行的操作系统,不仅由个人用户使用,而且在大公司中也广泛使用。由于其操作简单性以及使用图形界面,如今,大量实体的公司网络充满了运行Windows操作系统的主机和服务器。无论这些机器针对的是最终用户、我们的员工还是现场技术团队,但由于 Windows 操作系统的演示简单性,它们很容易被错误配置,这在现实当中是广泛存在的。Windows 必须提供的机制管理群集中控件定位的差异意味着,在进行安全强化过程时,覆盖操作系统的所有隐藏角落和缝隙并不总是一件容易的事,尤其是对于新手团队。

    在此示例中,我们将查看配置错误的 SMB 共享,该共享提供两种类型的攻击媒介。一个是可发现且易于使用的。另一个涉及安装和部署流行的开发框架,虽然非常有效,但在可发现性方面也有其自身的缺点。采取正确的步骤,了解正确的路径并感知攻击媒介的原理对我们的学习和理解是非常重要。

    列举

    为了获得目标主机的信息,我们将从nmap扫描开始。然而我们将使用新的功能进行扫描。我们将使用-Pn而不是服务检测开关。在实际环境中,防火墙一般都是存在的,拦截每一步的连接并拒绝所有非标准连接请求或扫描尝试。在典型的 nmap 扫描期间,nmap 脚本将执行一种复杂的 ping 扫描形式,大多数防火墙都设置为自动拒绝,毫无疑问。反复拒绝会引起安全人员的怀疑,在典型的扫描过程中,很多相同的请求将被拒绝。该标志将跳过主机发现阶段并直接转到其他探头类型,在一定程度上使我们的主动扫描静音。可以防止我们在攻击目标前被目标发现。

    -Pn :将所有主机视为在线 -- 跳过主机发现
    nmap -sC -Pn 10.129.175.196
    
    • 1
    • 2

    在这里插入图片描述

    根据 nmap 扫描的结果,计算机在端口 445 上运行 Windows 和服务器消息块服务。我们找到了目标。下面是发现的每个端口及其功能的简短摘要,以获取有关目标的一些背景信息。在开始任何类型的攻击之前,记录这些端口和目标信息非常重要。它将帮助我们避免防火墙的阻止和警报,同时能够第一时间定位到有问题的目标的缺陷点。

    端口 135:
    
    远程过程调用 (RPC) 服务支持 Windows 应用程序之间的通信。具体来说,该服务实现 RPC 协议 — 一种进程间通信的低级形式,其中客户端进程可以向服务器进程发出请求。微软的基础COM和DCOM技术建立在RPC之上。该服务的名称为 RpcSs,它在共享服务主机进程 svchost.exe 中运行。这是任何Windows操作系统中的主要进程之一,不会停止运行。
    
    端口 139:
    
    此端口用于 NetBIOS。NetBIOS 是网络基本输入/输出系统的首字母缩写。它提供与 OSI 模型的会话层相关的服务,允许不同计算机上的应用程序通过局域网进行通信。作为严格的API,NetBIOS不是网络协议。较旧的操作系统分别使用 NetBIOS 帧 (NBF) 和 NetBIOS over IPX/SPX (NBX) 协议通过 IEEE 802.2 和 IPX/SPX 运行 NetBIOS。在现代网络中,NetBIOS 通常通过 NetBIOS over TCP/IP (NBT) 协议在 TCP/IP 上运行。这会导致网络中的每台计算机都具有与(可能不同的)主机名对应的 IP 地址和 NetBIOS 名称。NetBIOS 还用于识别 TCP/IP(Windows) 中的系统名称。
    简单地说,它是一种协议,允许通过 LAN 中 OSI 模型的会话层进行文件和打印机的通信。
    
    
    端口 445:
    
    此端口用于 SMB。SMB 是一种网络文件共享协议,需要计算机或服务器上的开放端口才能与其他系统通信。SMB 端口通常为端口号 139 和 445。端口 139 由通过 NetBIOS 进行通信的 SMB 协议使用。它是一种会话层协议,旨在通过本地网络在 Windows 操作系统中使用。端口 445 由较新版本的 SMB(Windows 2000 之后)在 TCP 堆栈之上使用,允许 SMB 通过 Internet 进行通信。这也意味着我们可以使用 IP 地址来使用 SMB 和文件共享。
    简单地说,SMB一直是一种网络文件共享协议。因此,SMB 需要计算机或服务器上的网络端口才能启用与其他系统的通信。SMB 使用 IP 端口 139 或 445。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    本质上,SMB(服务器消息块)是一种文件共享协议,这意味着我们可以通过探索smb协议来发现一些有用的东西。可以通过使用smbclient工具来实现。

    我们可以通过运行以下命令来安装它。

    apt install smbclient
    
    • 1

    在这里插入图片描述

    smbclient -h
    
    • 1

    在这里插入图片描述

    Administrator帐户适用于 Windows 操作系统。通常,SMB 服务器会请求密码,但由于我们希望涵盖可能的错误配置的所有方面,因此我们可以尝试无密码登录。

    smbclient -L 10.129.175.196 -U Administrator
    -L :列出目标上的可用共享。
    -U :要使用的登录标识。
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    立足

    从这里我们有两种攻击选择。

    1、Smbclient 通过管理员授权轻松导航到 C$ 共享

    2、PSexec.py 来自Impacket,涉及Impacket安装和常见的攻击面,大指纹。

    smbclient \\\\10.129.175.196\\ADMIN$ -U Administrator
    
    • 1

    在这里插入图片描述

    这是访问ADMIN 共 享 , 我 们 可 以 访 问 C 共享,我们可以访问C 访C共享,这是Windows的文件系统。

    smbclient \\\\10.129.175.196\\C$ -U Administrator
    
    • 1

    在这里插入图片描述

    我们将直接导航到Windows易受攻击的标准根位置:C:\Users\Administrator\Desktop。使用该命令,我们发现标志文件在我们的系统上。

    cd Users\Administrator\Desktop
    dir
    get flag.txt
    exit
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    cat flag.txt
    
    • 1

    在这里插入图片描述

    选项B

    我们设法获得了SMB命令行交互式界面。但是,由于我们可以访问分享目录,我们将尝试使用一种名为利用这种错误配置并获得交互式的工具psexec.py。它是Impacket框架的一部分。

    Impacket是一个用Python编写的框架,用于处理网络协议。它专注于提供对数据包的低级编程访问,对于某些协议(例如SMB和MSRPC)。简而言之,Impacket包含数十种用于与Windows系统和应用程序交互的工具,其中许多是攻击Windows和Active Directory的理想选择。

    impacket中最常用的工具之一是psexec.py。它以微软Sysinternals套件中的实用程序PsExec命名,因为它执行相同的功能,使我们能够在远程Windows机器上执行完全交互式的shell。

    PsExec 是 Microsoft 的便携式工具,可让我们使用任何用户的凭据远程运行进程。它有点像远程访问程序,但不是用鼠标控制计算机,而是通过命令提示符发送命令,而无需手动安装客户端软件。当我们在学习一款工具的时候,了解Impacket的psexec是如何工作的是很重要的。

    git https://github.com/SecureAuthCorp/impacket.git
    cd impacket
    ls
    pip3 install .
    pip3 install -r requirements.txt
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    Impacket 通过在共享上上传随机命名的可执行文件来创建远程服务。远程系统,会将其注册为 Windows 服务。这将导致通过 TCP端口 445 在远程 Windows 系统上提供交互式外壳。Psexec需要具有本地管理员权限或更高权限的用户的凭据,因为读取/写入权限到系统是必需的。成功进行身份验证后,它会将我们放入外壳中。

    注意:如果我们没有安装 pip3(Python3 的 pip)或 Python3,请使用以下命令安装它:

    sudo apt install python3 python3-pip

    psexec.py -h
    
    • 1

    在这里插入图片描述

    简单地从目标获取交互式 shell 的语法:

    Python psexec.py username:password@hostIP

    psexec.py administrator@10.129.175.196
    
    • 1

    从我们使用smbclient的先前方法中,我们知道“Administrator”用户没有密码。因此,我们将要运行的命令是:

    当它提示输入密码时,只需按回车键(因为没有密码)。

    在这里插入图片描述

    我们获得了具有最高权限的外壳。棒!现在,我们可以浏览文件系统并检索flag。

    在模拟测试环境中使用pkexec实用程序通常是首选,但它很容易在实际环境当中被Windows Defender 检测到。

  • 相关阅读:
    Java面试复习体系总结(2021版,持续更新)
    kubernetes 的 重要IP 概念
    腾讯mini项目-【指标监控服务重构】2023-07-17
    C++11(lambda表达式)
    ‘Could not find first log file name in binary log index file‘的解决办法
    Spring Boot总结笔记
    内切相减原理绘制CAD图形
    【MQTT基础篇(四)】ESP8266连接MQTT服务端
    APP 开发方式的优缺点有哪些?
    mysql中的正则表达式的用法
  • 原文地址:https://blog.csdn.net/m0_53008479/article/details/127931467