jQuery火箭图标返回顶部代码

SMB relay

0x00 SMB服务

先来了解一下什么是 SMB 服务,SMB(Server Message Block)是一个协议名称,用它可以共享计算机之间的文件、打印机、串口等,通过 SMB 也可以远程访问服务器端的文件、打印机等共享资源。

SMB协议可以为局域网用户提供相关的功能和机制,来保证传输的可靠性。局域网中90%的数据包以及95%的字节是通过SMB协议进行传输,这是为了解决网络的稳定性和数据流在共享带宽时的公平性、拥塞控制及效率等问题。
————来源百度百科

总之 SMB 服务可以为局域网用户提供相关功能和机制,来保证传输可靠性。

一路走来 SMB 有三代,从 SMBv1 到 SMBv2 再到现在的 SMBv3 ,实际上越来越安全了。 (CVE-2020-0796针对的是SMB3.1.1)

然后简单介绍一下 NTLM hash,我们知道 Windows 下的密码被加密保存在 SAM (Security Accout Manager)文件中,域控在 NTDS.dit,不可进行修改或是移动;NTLM hash 就是里面保存用户密码的 hash

生成方法分为三步:

1.将明文口令转为十六进制
2.转换成 Unicode 格式
3.进行 MD4 加密

得到了最后的32为十六进制数字串

0x001 LM hash 和 NTLM hash

可以看作 NTLM hash 是 LM hash 的升级,但是他们是两种不同的加密方式,LM hash 的安全性较差,易被破解,现在很少在使用了,故关于 LM hash 在此不多赘述。

0x002 NTLMv1 hash 和 NTLMv2 hash

NTLM hash 分为 NTLMv1 NTLMv2 NTLM session v2 三种,从 Windows Vista 和 Server 2008 开始,系统是默认禁用 NTLMv1 的,而是用的是 NTLMv2,NTLMv1 相对 NTLMv2 更脆弱,因为服务端的挑战码是 8 位的,而 NTLMv2 协议的挑战码是 16 位的,稍后会讲到。

0x003 NTLM hash 和 Net-NTLM hash

Net-NTLM hash 即指的是网络环境下 NTLM 认证的 hash,故也分为 Net-NTLMv1 hash, Net-NTLMv2 hash

0x004 Net-NTLM(v2) 认证流程

1.客户端向服务器发送登录请求,密码在客户端被 hash 一次
2.客户端向服务器发送 username
3.服务器返回一个 16 字节的挑战码(Challenge),并将已存储的用户密码 hash 加密这个 Challenge,生成 Challenge1
4.客户端将第一步 hash 的密码与 Challenge 再进行 hash 一次,生成 response 即 Challenge2
5.客户端将 response 发送给服务器
6.服务器比较 Challenge1 和 response,相同则认证成功

2.jpg

了解了 Net-NTLM 认证流程,再来分析 SMB 中继攻击原理就明了多了,攻击者充当了一个第三人,截获流量,重放流量

1.jpg

0x03 漏洞环境

kali          192.168.37.134        攻击机
win7        192.168.37.128        受害机器
win2008   192.168.37.131        第三方机器

1. smbrelay.py 

大概流程就是:首先我们使用impacket工具包中的smbrelay.py,-h 指定受害机器,然后再第三方机器上net use 我们的kali机器ip ,net use的账户密码 得是可以登录win7的密码,就可以执行我们的木马

 其中win10好像不得行

 可以看到win2008上线了

 可以看到能执行我们的CS马,然后脚本会删除这个木马。

2 MultiRelayx.py拿下shell

因为下班了这儿就重新记录下IP

win2008         192.168.127.149   
win2012(DC)      192.168.127.148
kali              192.168.127.128

  

先用responder工具包里面的RunFinger.py脚本进行扫描(nmap皆可)来查看域内机器SMB签名的开放情况

 如果MultiRelay脚本运行出错的话,就安装一下下面这个库

apt-get install python-crypto

 

现在 SMB 已经由 MultiRelay.py 脚本来进行中继,我们需要修改一下 Responder.conf 脚 本,不让其对 hash 进行抓取

 

 在域控上随意net use 一下都可以

 成功拿到shell.

原文地址:https://www.cnblogs.com/kuaile1314/p/13525035.html