再谈SMB中继攻击

PS:下面的都是自己实际测试过的,并非理论文章,如果有什么地方不对的请斧正,谢谢 >_<

首先,介绍一下攻击的运作原理

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/05/0442451XV.jpg

假设左边的主机为A,右边的主机为B

A试图访问B的共享服务

第一步 A对B说:骚年,请让我登陆

第二步 B对A说:骚年,我给你一个challenge,请先把你的密码Hash和challenge加密一下返回给我,我得确认你是否有权限

第三步 A对B说:我加密好了,给你

情景一:

第四步 B对A说:嗯,对的,请进(认证结束)

情景二:

第四步 B对A说:骚年,不对,你的身份不能登陆,你可以试试以别人的身份来登陆

第五步 A对B说:好嘛,我用你之前告诉我的身份试试,回到第一步,循环下去

现在,如果加入了一名第三者C到两者之间,C企图查看B的隐私,C会怎么做?

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/05/044246v4B.jpg

上图就是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欺骗 + SMB中继

出品人:

Kali  msf下使用smb_replay模块,设置SMBHOST为B(192.168.30.130)

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/05/044246gzP.jpg

Kali  msf下使用nbns_response模块将B的计算机名(smbserver)解析到C的IP(192.168.30.145)

再谈SMB中继攻击

Winxp     访问smbserver的共享

再谈SMB中继攻击

OK,到Kali下看看结果

再谈SMB中继攻击

Cool,我们成功拿到了B的Meterpreter shell

原理:NBNS是广播的,所以C只需要赶在B之前告诉A:“C的计算机名是smbserver”就行了

方式2:DNS劫持+SMB中继

出品人:

由于虚拟机有限,我将B模拟成一台内网中被黑掉的DNS服务器

Kali  msf下使用smb_replay模块,设置SMBHOST为B(192.168.30.130)

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/05/044248LTR.jpg

将DNS服务器的 share.baidu.com 域名指向C(192.168.30.145)

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/05/044248RKX.jpg

Winxp     访问share.baidu.com的共享

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/05/044248QaF.jpg

OK,到Kali下看看结果

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/05/044248k5S.jpg

成功拿到B的shell

如果你很注意细节,你应该会有一个问题,如果我们将NBNS欺骗和DNS劫持同时启用,但指向不同的IP会有怎样的效果?

我将告诉你:只有DNS劫持会起作用

看下图就知道了
https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/05/04424910S.jpg

A先访问一个不存在的名字,同时抓取数据包

你可以看出A(192.168.30.129)发出的第一个数据包是DNS查询

上面的两种攻击都是在A先试图想和B说话造成的,假如他们本来就不怎么联系那我们岂不是要等很久?

这太被动了,我必须改变这种局面!!怎么改呢,下面就是我想说的了 >_<

https://static-js.b0.upaiyun.com/wp-content/uploads/auto_save_image/2014/05/044249cGt.jpg

UNC攻击+SMB中继

出品人:

由于虚拟机有限,我将B模拟成一台被黑掉的WEB服务器(域名 www.91ri.org )

管理员每天都喜欢在个人机上访问91ri网,看看有什么新的资源

我知道他会这样,所以我先拿下了91ri的WEB权限,然后在首页插入了这样的一个链接


很不幸,这张图他不会看到,如果他的个人机的账户及密码是和服务器是一样的,呵呵,他的服务器就这么沦陷了。但是有一个前提 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

【via@ LateRain