SMB协议流量主要分为以下几个阶段
1、 tcp三次握手
2、会话建立(Negotiate Protocol):
客户端发送Negotiate Protocol Request ,其中包含客户端支持的smb协议版本列表以及SMB Header信息
服务端发送Negotiate Protocol Response,包含服务器选择的协议版本、会话密钥 等
3、会话设置(Session Setup)
首先进行tcp三次握手
建立成功后发送smb协议初始化请求,客户端向服务器发送支持的SMB协议版本列表,支持的协议放在Requested Dialects中,大部分默认都是这些协议,可用于识别smb存在的特征
PC NETWORK PROGRAM 1.0
LANMAN1.0
Windows for Workgroups 3.1a
LM1.2X002
LANMAN2.1
NT LM 0.12
SMB 2.002
SMB 2.???
服务器选择smb2协议版本
客户端使用smb2协议,发送支持的协议版本,和其支持的安全模式和功能(如签名、加密、压缩等) (negotiate protoco是磋商协议)
客户端和服务器完成了协议协商,确定了使用SMB 2.1版本
接下来进行会话设置初始化,客户端发送使用NTLMSSP进行身份验证
NTLMSSP 是使用 NTLM 协议进行身份验证的 Microsoft 协议。
- 客户端向服务器发送一个请求
- 服务器接收到请求后,生成一个8位的Challenge,发送回客户端
- 客户端接收到Challenge后,使用登录用户的密码hash对Challenge加密,作为response发送给服务器
- 服务器校验response
服务端返回DNS计算机名、DNS域名、支持的密钥协议,
还有 NTLM Server Challenge = 3dfaefbce47bc2db
客户端发送主机名、用户名,session key ,NTLM Response进行传输
NTLM Response: 6142a67953e5b519cb3c95d7f2f7520b630acbab2a8978de
账户admin的密码 + NTLM Server Challenge 生成NTLM Response,进行传输验证
返回STATUS_SUCCESS 表示成功
返回NT Status: STATUS_LOGON_FAILURE (0xc000006d),表示登入失败
客户端获取获取共享目录树\\200.200.65.61\IPC$
服务端返回树id和session id
smb爆破流量分析
smb暴破流量分析
多次登入失败特征
ms17010漏洞流量分析
原理:
对数据进行类型转换时长度发生变化,造成非分页池存在溢出(非分页池的数据不会写入磁盘存储)
ms-17010流量分析
永恒之蓝浏览中会使用NT Create AndX 命令创建新文件、打开现有文件、创建目录、打开目录等
smb漏洞工具流量中,请求类型会加上AndX扩展,相比正常业务流量就不会,比如攻击流量中的Session Setup AndX Request ,在正常业务中是Session Setup Request
由于永恒之蓝漏洞是利用smbv1存在漏洞,所以在会话中全程是利用的smb协议,正常业务都是smb2协议
会使用PeekNamedPipe Request 去检查命名管道状态来确定是否可利用