学习
实践
活动
专区
工具
TVP
写文章
专栏首页安恒网络空间安全讲武堂渗透测试中SMB服务漏洞检查checklist

渗透测试中SMB服务漏洞检查checklist

来源: https://0xdf.gitlab.io/2018/12/02/pwk-notes-smb-enumeration-checklist-update1.html#list-shares 由于我上个月一直在使用PWK / OSCP,在这个过程中,我注意到渗透SMB服务是一件很棘手的事情,不同的工具在不同的主机上有的失败有的成功。通过参考NetSecFocus发布的一些内容,我整理了一份在渗透测试中扫描SMB服务漏洞的检查列表。我将在每个部分中包含示例,但在我使用PWK实验室的地方,我会按照规则对数据进行脱敏展示。

  • 清单
  • 工具
  • 细节
  • 枚举主机名 - nmblookup
  • 扫描共享 - smbmap - smbclient - NMAP
  • 检查空会话 - smbmap - rpcclient - smbclient
  • 检查漏洞 - NMAP
  • 整体扫描 - enum4linux
  • 手动检查
  • Samba服务 - Windows

检查清单

  • 枚举主机名 - nmblookup -A [ip]
  • 列出共享文件
smbmap -H [ip/hostname]
echo exit | smbclient -L \\\\[ip]
nmap --script smb-enum-shares -p 139,445 [ip]

检查空会话

smbmap -H [ip/hostname]
rpcclient -U "" -N [ip]
smbclient \\\\[ip]\\[share name]

检查漏洞

nmap --script smb-vuln* -p 139,445 [ip]

整体扫描

enum4linux -a [ip]

手动检查

smbver.sh [IP] (port) [samba]
- 检查pcap

工具

  • nmblookup - 收集用于查找NetBIOS名称的TCP / IP客户端上的NetBIOS信息
  • smbclient - 一个类似于ftp的客户端,用于访问SMB共享
  • nmap - 通用的扫描工具,自带检查脚本
  • rpcclient - 执行客户端MS-RPC功能的工具
  • enum4linux - 枚举各种smb功能
  • wireshark

操作细节

枚举主机名

  • nmblookup
nmblookup -A [IP]
    -A - 按IP地址查找

使用示例:


    root@kali:~# nmblookup -A [ip]
    Looking up status of [ip]
        [hostname]      <00> -         M <ACTIVE>
        [hostname]      <20> -         M <ACTIVE>
        WORKGROUP       <00> - <GROUP> M <ACTIVE>
        WORKGROUP       <1e> - <GROUP> M <ACTIVE>
                       <03> -         M <ACTIVE>
        INet~Services   <1c> - <GROUP> M <ACTIVE>
        IS~[hostname]   <00> -         M <ACTIVE>
        MAC Address = 00-50-56-XX-XX-XX

扫描共享

  • smbmap
smbmap -H [ip/hostname]

此命令将显示主机上的共享以及你拥有的访问权限。 使用示例:

root@kali:/# smbmap -H [ip]
[+] Finding open SMB ports....
[+] User SMB session establishd on [ip]...
[+] IP: [ip]:445        Name: [ip]                                      
        Disk                                                    Permissions
        ----                                                    -----------
        ADMIN$                                                  NO ACCESS
        C$                                                      NO ACCESS
        IPC$                                                    NO ACCESS
        NETLOGON                                                NO ACCESS
        Replication                                             READ ONLY
        SYSVOL                                                  NO ACCESS

如果你获得了登录凭据,则可以重新运行来显示新访问权限:

root@kali:/# smbmap -H [ip] -d [domain] -u [user] -p [password]
    [+] Finding open SMB ports....
    [+] User SMB session establishd on [ip]...
    [+] IP: [ip]:445        Name: [ip]                                      
            Disk                                                    Permissions
            ----                                                    -----------
            ADMIN$                                                  NO ACCESS
            C$                                                      NO ACCESS
            IPC$                                                    NO ACCESS
            NETLOGON                                                READ ONLY
            Replication                                             READ ONLY
            SYSVOL                                                  READ ONLY
  • smbclient
echo exit | smbclient -L \\\\[ip]

exit会处理可能弹出的任何密码请求,因为我们正在检查null登录

-L - 获取给定主机的共享列表

使用示例:

root@kali:~# smbclient -L \\[ip]
Enter WORKGROUP\root's password:
        Sharename       Type      Comment
        ---------       ----      -------
        IPC$            IPC       Remote IPC
        share           Disk
        wwwroot         Disk
        ADMIN$          Disk      Remote Admin
        C$              Disk      Default share
Reconnecting with SMB1 for workgroup listing.
        Server               Comment
        ---------            -------
        Workgroup            Master
        ---------            -------
  • NMAP
nmap --script smb-enum-shares -p 139,445 [ip]
--script smb-enum-shares - 指定smb枚举脚本
-p 139,445 - 指定smb端口

使用示例:

root@kali:~# nmap --script smb-enum-shares -p 139,445 [ip]
    Starting Nmap 7.70 ( https://nmap.org ) at 2018-09-27 16:25 EDT
    Nmap scan report for [ip]
    Host is up (0.037s latency).
    PORT    STATE SERVICE
    139/tcp open  netbios-ssn
    445/tcp open  microsoft-ds
    MAC Address: 00:50:56:XX:XX:XX (VMware)
    Host script results:
    | smb-enum-shares:
    |   account_used: guest
    |   \\[ip]\ADMIN$:
    |     Type: STYPE_DISKTREE_HIDDEN
    |     Comment: Remote Admin
    |     Anonymous access: <none>
    |     Current user access: <none>
    |   \\[ip]\C$:
    |     Type: STYPE_DISKTREE_HIDDEN
    |     Comment: Default share
    |     Anonymous access: <none>
    |     Current user access: <none>
    |   \\[ip]\IPC$:
    |     Type: STYPE_IPC_HIDDEN
    |     Comment: Remote IPC
    |     Anonymous access: READ
    |     Current user access: READ/WRITE
    |   \\[ip]\share:
    |     Type: STYPE_DISKTREE
    |     Comment:
    |     Anonymous access: <none>
    |     Current user access: READ/WRITE
    |   \\[ip]\wwwroot:
    |     Type: STYPE_DISKTREE
    |     Comment:
    |     Anonymous access: <none>
    |_    Current user access: READ
    Nmap done: 1 IP address (1 host up) scanned in 10.93 seconds

检查空会话

  • smbmap
smbmap -H [ip/hostname]

将显示你可以使用给定凭据执行的操作(如果没有凭据,则显示空会话)。请参阅上一节中的示例。

  • rpcclient
rpcclient -U "" -N [ip]
-U "" -空会话
-N -没有密码

使用示例:

root@kali:~# rpcclient -U "" -N [ip]
rpcclient $>

之后,你可以运行rpc命令。

smbclient
smbclient \\\\[ip]\\[share name]

此命令会尝试连接到共享。包括尝试无密码(或发送空密码),这仍然有可能连接成功。 使用示例:

root@kali:~/pwk/lab/public# smbclient \\\\[ip]\\share
Enter WORKGROUP\root's password:
Try "help" to get a list of possible commands.
smb: \> ls
.                                   D        0  Thu Sep 27 16:26:00 2018
..                                  D        0  Thu Sep 27 16:26:00 2018
New Folder (9)                      D        0  Sun Dec 13 05:26:59 2015
New Folder - 6                      D        0  Sun Dec 13 06:55:42 2015
Shortcut to New Folder (2).lnk      A      420  Sun Dec 13 05:24:51 2015
1690825 blocks of size 2048. 794699 blocks available

检查漏洞

  • NMAP
nmap --script smb-vuln* -p 139,445 [ip]

--script smb-vuln* - 将运行所有smb漏洞扫描脚本 -p 139,445 - smb端口使用示例:

root@kali:~# nmap --script smb-vuln* -p 139,445 [ip]
        Starting Nmap 7.70 ( https://nmap.org ) at 2018-09-27 16:37 EDT
        Nmap scan report for [ip]
        Host is up (0.030s latency).
        PORT    STATE SERVICE
        139/tcp open  netbios-ssn
        445/tcp open  microsoft-ds
        MAC Address: 00:50:56:XX:XX:XX (VMware)
        Host script results:
        | smb-vuln-ms06-025:
        |   VULNERABLE:
        |   RRAS Memory Corruption vulnerability (MS06-025)
        |     State: VULNERABLE
        |     IDs:  CVE:CVE-2006-2370
        |           A buffer overflow vulnerability in the Routing and Remote Access service (RRAS) in Microsoft Windows 2000 SP4, XP SP1
        |           and SP2, and Server 2003 SP1 and earlier allows remote unauthenticated or authenticated attackers to
        |           execute arbitrary code via certain crafted "RPC related requests" aka the "RRAS Memory Corruption Vulnerability."
        |
        |     Disclosure date: 2006-6-27
        |     References:
        |       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2006-2370
        |_      https://technet.microsoft.com/en-us/library/security/ms06-025.aspx
        |_smb-vuln-ms10-054: false
        |_smb-vuln-ms10-061: false
        | smb-vuln-ms17-010:
        |   VULNERABLE:
        |   Remote Code Execution vulnerability in Microsoft SMBv1 servers (ms17-010)
        |     State: VULNERABLE
        |     IDs:  CVE:CVE-2017-0143
        |     Risk factor: HIGH
        |       A critical remote code execution vulnerability exists in Microsoft SMBv1
        |        servers (ms17-010).
        |
        |     Disclosure date: 2017-03-14
        |     References:
        |       https://technet.microsoft.com/en-us/library/security/ms17-010.aspx
        |       https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-0143
        |_      https://blogs.technet.microsoft.com/msrc/2017/05/12/customer-guidance-for-wannacrypt-attacks/
        |_smb-vuln-regsvc-dos: ERROR: Script execution failed (use -d to debug)
        Nmap done: 1 IP address (1 host up) scanned in 5.58 seconds

整体扫描

  • enum4linux
enum4linux -a [ip]

-a - 枚举所有 使用示例的输出很长,但要查找一些要点:

  • 输出类似于nmblookup
    • 检查空会话
  • 共享文件
    • 密码策略
    • RID循环输出
    • 域名信息

手动检查

  • samba ngrep是一个很好用的网络数据工具。在一个终端中运行
ngrep -i -d tap0 's.?a.?m.?b.?a.*[[:digit:]]' port 139

然后在另一个终端中运行

echo exit | smbclient -L [IP]

将丢弃包括版本在内的大量信息。 在PWK论坛上的rewardone发布了一个简洁的脚本来轻松获得Samba版本:

#!/bin/sh
#Author: rewardone
#Description:
# Requires root or enough permissions to use tcpdump
# Will listen for the first 7 packets of a null login
# and grab the SMB Version
#Notes:
# Will sometimes not capture or will print multiple
# lines. May need to run a second time for success.
if [ -z $1 ]; then echo "Usage: ./smbver.sh RHOST {RPORT}" && exit; else rhost=$1; fi
if [ ! -z $2 ]; then rport=$2; else rport=139; fi
tcpdump -s0 -n -i tap0 src $rhost and port $rport -A -c 7 2>/dev/null | grep -i "samba\|s.a.m" | tr -d '.' | grep -oP 'UnixSamba.*[0-9a-z]' | tr -d '\n' & echo -n "$rhost: " &
echo "exit" | smbclient -L $rhost 1>/dev/null 2>/dev/null
sleep 0.5 && echo ""
当您在运行Samba的盒子上运行它时,您会得到结果:
root@kali:~/pwk/lab/public# ./smbver.sh [IP]
[IP]: UnixSamba 227a

如有疑问,我们可以在PCAP中检查smb版本。下面是Unix Samba 2.2.3a的一个例子:

Window环境的渗透——Windows SMB版本比较复杂,但通过查看wireshark的抓取的数据包,会提供有关连接的大量信息。例如,我们可以过滤ntlmssp.ntlmv2_response来查看NTLMv2流量,就可以获取很多关于目标主机的系统信息。

文章分享自微信公众号:
恒星EDU

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!

作者:bat16361
原始发表时间:2018-12-29
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 渗透测试中SMB服务(139、445端口)枚举汇总

    # msfconsole -r /usr/share/metasploit-framwork/scripts/resource/smb_checks.rc"

    字节脉搏实验室
  • 渗透测试中网站代码漏洞审计服务

    渗透测试系统漏洞如何找到:在信息收集的根本上找到目标软件系统的系统漏洞。系统漏洞找到我来为大伙儿梳理了4个层面:框架结构模块透明化系统漏洞:依据所APP的的框架...

    技术分享达人
  • 网站渗透测试服务 域名跳转劫持漏洞

    网站渗透测试是指在没有获得网站源代码以及服务器的情况下,模拟入侵者的攻击手法对网站进行漏洞检测,以及渗透测试,可以很好的对网站安全进行全面的安全检测,把安全做到...

    技术分享达人
  • APP渗透测试服务账户越权操作漏洞

    网络上,大家经常可以看到数据库被脱裤、用户信息泄露等由于安全漏洞引发的问题,给用户和企业都带来了很大的损失。由于公司业务发展迅速,功能不断增加,用户数量不断增加...

    网站安全专家
  • 渗透测试中网站代码漏洞审计服务

    渗透测试系统漏洞如何找到:在信息收集的根本上找到目标软件系统的系统漏洞。系统漏洞找到我来为大伙儿梳理了4个层面:框架结构模块透明化系统漏洞:依据所APP的的框架...

    网站安全专家
  • APP渗透测试服务 该如何对越权漏洞进行测试

    渗透测试在网站,APP刚上线之前是一定要做的一项安全服务,提前检测网站,APP存在的漏洞以及安全隐患,避免在后期出现漏洞,给网站APP运营者带来重大经济损失,很...

    技术分享达人
  • 渗透测试服务 多个角度去分析漏洞问题

    首先是渗透接口测试:在安全工程师角度看这就是1个十分好的知识要点积累的方式,不仅有利于你现在每次的网站渗透测试中不遗漏掉某一点,而且还能够在队伍里面开展分享有利...

    技术分享达人
  • APP存在漏洞隐患需要做渗透测试服务

    现实生活中小企业面对的网络安全风险多种多样。而真正的隐患,是公司觉得自己自身非常安全,却不知道隐患早就渗透到里面,见机行事。随着安全产业的发展和技术人员安全防范...

    技术分享达人
  • PHP网站渗透中的奇技淫巧:检查相等时的漏洞

    PHP是现在网站中最为常用的后端语言之一,是一种类型系统 动态、弱类型的面向对象式编程语言。可以嵌入HTML文本中,是目前最流行的web后端语言之一,并且可以和...

    FB客服
  • 渗透测试服务 针对CSRF漏洞检测与代码防御办法

    XSS跨站以及CSRF攻击,在目前的渗透测试,以及网站漏洞检测中 ,经常的被爆出有高危漏洞,我们SINE安全公司在对客户网站进行渗透测试时,也常有的发现客户网站...

    技术分享达人
  • 渗透测试服务中的工具有哪些

    渗透测试涵盖了广泛的内容,所以渗透测试工具也是多种多样的。渗透测试工具可根据不同的功能分为以下四类:

    技术分享达人
  • 渗透测试|常见危险端口服务及对应的漏洞

    msmq? :默认对于的是1801端口,是 MSMQ Microsoft Message Queuing微软消息队列的简称,是windows系统提供的一个功能,...

    谢公子
  • Wiki | Red Team攻击思维

    一个 Red Team 攻击的生命周期,整个生命周期包括: 信息收集、攻击尝试获得权限、持久性控制、权限提升、网络信息收集、横向移动、数据分析(在这个基础上再做...

    HACK学习
  • HackReport - 一些渗透文件分享

    │ │ └── 安恒信息:红队视角下又一个突破口,再看大国独有小程序.pdf

    drunk_kk
  • 分享两个渗透测试中容易忽略的小漏洞

    Nginx整数溢出漏洞 CVE-2017-7529 • 漏洞信息 • 当使用nginx标准模块时,攻击者可以通过发送包含恶意构造range 域的 heade...

    用户1467662
  • APP逻辑漏洞在渗透测试中 该如何安全的检测

    IOS端的APP渗透测试在整个互联网上相关的安全文章较少,前几天有位客户的APP数据被篡改,导致用户被随意提现,任意的提币,转币给平台的运营造成了很大的经济损失...

    网站安全专家
  • SDL流程控制工作心得

    推动SDL流程控制不仅仅是符合等保要求,在工作中落实SDL还能控制安全成本,提高产品上线质量和速度,保障业务安全。近来借鉴了不少SDL的文章,初步落实SDL。在...

    FB客服

扫码关注腾讯云开发者

领取腾讯云代金券