smb

  1. Port 139
  2. Port 445
    1. $IPC
  3. 枚举
    1. 对网段中的主机搜索SMB服务
    2. 版本信息
    3. 搜索对应版本的exploit

SMB(Server Message Block) 是被设计通过LAN来远程读写文件的协议。是微软的主要通讯协议。

SMB使用了NetBIOS接口,所以为什么smb通常是139,445两个端口?

Port 139

端口139是 NBT over IP。

NetBIOS(Network Basic Input Output System) 可以使软件、PC等设备通过LAN网络进行通讯。

在NetBIOS网络上运行的软件通过NetBIOS名称进行互相识别。NetBIOS名称长度为16个字符,与计算机名称分开。

139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn

Port 445

445端口是 SMB over IP, 现在也称为CIFS(Common Internet File System)。运行在应用层,用于提供访问文件、打印机、串口以及其他基于网络的两端节点通讯。

在Windows中,SMB直接基于TCP/IP运行,不需要NetBIOS,所以一般只有445。
而其他操作系统就会有139端口一起,这说明SMB的运行是基于BetBIOS的TCP/IP的。

$IPC

当使用匿名用户或者空用户的时候,可以访问IPC$。使用Post not found: enum4linux-工具使用从这里可以获取:

  1. 操作系统信息
  2. 域的详细信息
  3. 本地用户和组的列表
  4. 可用SMB共享的详细信息
  5. 生效的系统安全策略

枚举

对网段中的主机搜索SMB服务

nbtscan -r 192.168.0.1/24

版本信息

msf> use  auxiliary/scanner/smb/smb_version  
#!/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
echo "" && sleep .1

搜索对应版本的exploit

msf> search type:exploit platform:windows target:2008 smb
searchsploit microsoft smb

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 365433079@qq.com