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