SMB协议

SMB(Server Message Block)服务器消息块,又称网络文件共享系统(Common Internet File System,缩写为CIFS),可用于计算机间共享文件、打印机访问。SMB消息一般使用NetBIOS(一般是139端口,很少使用137、138端口)或TCP协议(445端口)发送。SMB协议支持NTLM和较早的LAN Manager(LM)加密,后者由于安全性较低,容易被破解,已经很少使用。

SMB认证过程

示例为工作组环境,非域环境。域环境下认证协议采用的是Kerberos。

1)协商

首先客户端发送Negotiate Request。在请求中,客户端会列出所有它所支持协议版本以及所支持的一些特性(比如加密Encryption、持久句柄Persistent Handle、客户端缓存Leasing等等)。

而服务端会在回复确定协商的认证方式及版本号,并且会以支持的最高版本作为回应。

2)NTLM request/challenge

由于1中协商使用NTLM认证,接下来执行NTLM的认证过程。

客户端通过Session Setup发送NTLMSSP_NEGOTIATE请求

服务端对相应的请求进行响应,其中包括产生的challenge

3)身份认证

客户端发送登录认证请求,附带用户名、加密hash

服务端对hash进行校验

校验成功:NT Status: STATUS_SUCCESS

校验失败,NT Status:STATUS_LOGON_FAILURE

工具

acccheck (kali自带工具)

Metasploit: auxiliary/scanner/smb/smb_login

日志

登陆失败,事件ID:4625

登陆成功,事件ID:4624