前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SMB扫描

SMB扫描

作者头像
意大利的猫
发布2020-08-20 11:09:35
2.9K0
发布2020-08-20 11:09:35
举报
文章被收录于专栏:漫流砂漫流砂

ServerMessage Block

SMB协议大家应该都有所了解,毕竟2017年的MS17-010血洗整个互联网,加上之前的MS08-067 漏洞,这些都是SMB协议上出现过的著名漏洞

SMB 主要完成的工作主要就是文件共享,假如同一个工作组使用smb 互相传输文件

SMB 协议还可以被用在sql注入的带外通道上,我曾经遇到的一个CTF的题目就是考察这个考点·,遗憾的是当时没有公网IP,后来发现很多网站已经集成了接收SMB信息的功能

端口

139,445

直至Windows10,微软才默认SMB服务关闭状态(即使很多人根本就没有感知)

版本信息

SMB1 win2000/xp/win2003

SMB2 winvista sp1/win2008

SMB2.1 win7/win2008 r2

SMB3 win8/win2012

SMB最初版本的时候存在一个空会话访问的问题,这可以说是一个很古老的漏洞了,如果你看08年左右的书应该会看到IPC$ 空会话连接等攻击手段,我在两年前尝试过复现这个漏洞,由于当时技术差也没有复现成功,如果现在再进行复现也没有太大的意义了

空会话访问我们可以获取到的信息

密码策略

用户名

组名

机器名

用户和组的 sid

这些信息都是对于我们十分重要的,就拿一个不起眼的密码策略来说明吧!

密码策略规则规定了密码的最基本条件,比如至少多少位,包含几种字符,很多时候我们在提权建立账号时候就因为不满足密码策略而失败,失败之后还一头雾水

由于Windows用户众多,而且SMB协议也是经常使用的一个协议,所以Linux也自己实现了一个类似的Samba服务,这个服务也是这两个端口,并且可以与windows 上的SMB服务对接


关于RID

windows系统中用来区分用户的就是RID

administrator500

Guest 501

自己创建的 1000+

关于SID

SID是由计算机的一些不确定的因素产生的一个随机字符

一般SID+RID成为一个完整的SID

SMB 和SAMBA 都是工作在ISO七层模型中的第五层:会话层

关于Netbios

Network basic input output system

netbios是原来TCP/IP协议未推广时期工作在会话层的一个协议,TCP/IP协议推行后也兼容netbios

netbios实现文件共享主要识别主机靠的就是netbios名称,每一个主机都有,一般都是取主机名的前15个字符

在windows的cmd下可以使用

c:/>hostname 查看主机名

c:/>nbtstat -A 192.168.1.1 查看netbios信息,其中192.168.1.1是自己的IP

可以查看主机的netbios名称

如果netbios的字符不足15个,netbios会添加空格补齐15个

准确得说netbios的名称是16个,最后一个字符是一个16进制数,用来标明服务类型 20表示文件服务器

TCP/IP成为事实协议标准后,内网中也开始使用dns做域名解析,TCP/IP作为传输协议,NetBT负责将netbios的名称解析成IP地址,以供Netbios正常工作,这个也叫做 NetBios over TCP/IP (简称NetBT)

NetBIOS提供标准网络通信接口

就是说程序员在设计的时候基于netbios的程序不需要在考率TCP/IP怎么样,只需要实现这个接口就行了

UDPport 137 (name services) 名称服务(名称解析,名称注册)

UDPport 138 (datagram services) 数据段,数据报文服务,通过这个段阔传输数据

TCPport 139 (session services) 会话服务,保证传输的会话。(客户端向139提出TCP连接请求,之后基于这个连接进行文件共享的会话)

名称唯一

节点类型

B(广播)、P(点对点)、M(混合)、H(超级)

如何关闭这些端口呢?

在windows的网络连接里面 Internet协议版本4里面的属性中高级可以看到wins,直接禁用就会关闭了

检测

Nmap

扫描内网使用smb 或者samba 服务的主机

这个是一台没有打补丁的win7 主机

我们来看一下smb的脚本有哪些

首先来查询一下操作系统吧

可以看到清晰的识别出了是win7 旗舰版,比我们之前获取到的信息要详细得多

如果我们有账号和密码能够获取更加详细的信息

--script-args=smbuser=administrator,smbpass=123456

这些枚举信息的脚本我就不一个一个尝试了,一起来吧

漏洞检测

之前 nmap 有 smb-check-vulns 这个脚本,这个脚本会自动测试几个漏洞是否存在,不过后来被官方去掉了,换成了smb-vuln-conficker、smb-vuln-cve2009-3103、smb-vuln-ms06-025、smb-vuln-ms07-029、smb-vuln-regsvc-dos、smb-vuln-ms08-067等等几个脚本,我没有看官方的说明,也不知道为什么会这样,不过我猜测可能是因为漏洞之间会互相影响(比如如果先检测一个DoS类型的漏洞,可能直接主机就宕机了,导致其他的检测出现问题),当然只是我的猜测。

nmap -p139,445 192.168.1.108 –script=smb-vuln-*.nse--script-args=safe=1

safe=1 这个参数是保证扫描过程中不会导致主机宕机,从而影响正常使用

可以看到存在ms17-010 漏洞,危害等级高,RCE漏洞

还有很多脚本大家可以自行学习一下,当然可以同时使用所有的关于smb的脚本

nmap -p139,445 192.168.1.108 --script=smb-*.nse

当然这种方式是不推荐的,毕竟会产生大量的数据包

nbtscan

nbtscan -r 192.168.60.0/24

这个工具可以扫描不同的网段,就比如你在192.168.1.x,你可以扫描192.168.2.x

enum4linux

enum4linux –a –u administrator –p 123456192.168.60.108

不允许进行整个网段的扫描

【使用方法】

Linux SAMBA服务枚举

enum4linux1.1.1.1

Windows系统枚举

这个工具最开始设计时候比较早,主要是针对2000和xp进行设计的,所以对于win2003等做了一定默认安全配置的服务器其实并不能查询到信息,只有当我们已经有一个账号以后,根据账号密码进行查询

一下这些查询的参数需要放在前面,指定用户名密码和目标IP放在后面

-U 用户列表

-S 共享列表

-P 密码策略

-G 组账号

-d 详细信息

-u 指定用户

-p 指定用户密码

-a (-U -S -G -P -r -o -n -i)全都用上

-r 循环枚举RID

-R 自定义范围循环枚举RID -R 600-650

-l 通过TCP/389端口枚举域信息

-kuser 查询已知用户SID

-sfile 爆破共享名

-o 操作系统信息

5.02000

5.1xp

5.22003

-i 打印机信息

enum4linux -U -d -u administrator -p 123 192.168.2.1

关于SMB协议的扫描也就介绍这些,不过关于SMB的漏洞还有很多,由于SMB协议本身就有漏洞,没有打补丁的主机就可以直接获取shell,结合msf可以很简单的就完成。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-03,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 NOP Team 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
访问管理
访问管理(Cloud Access Management,CAM)可以帮助您安全、便捷地管理对腾讯云服务和资源的访问。您可以使用CAM创建子用户、用户组和角色,并通过策略控制其访问范围。CAM支持用户和角色SSO能力,您可以根据具体管理场景针对性设置企业内用户和腾讯云的互通能力。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档