设为首页 收藏本站
查看: 1280|回复: 0

[经验分享] SMB relay解密使用python进行ntlmv2攻击

[复制链接]

尚未签到

发表于 2017-5-6 13:11:58 | 显示全部楼层 |阅读模式
原文地址:http://pen-testing.sans.org/blog/pen-testing/2013/04/25/smb-relay-demystified-and-ntlmv2-pwnage-with-python
SMB Relay拥有稳定,可靠,有效的特点。即使组织都及时安装补丁,SMB Relay仍然可以帮助你访问到关键资产。大多数组织都有一些自动化的系统来连接到网络内的所有主机进行各种管理工作。例如软件清查系统,杀毒软件更新,备份,软件更新和补丁管理,桌面备份,event log收集,以及其他进程周期性的连接到网络内的每一个主机,使用管理员口令登录,进行一些管理工作。
一些组织中,当有主机出现在网络中时,主动防御系统会立即尝试登录。这些系统通常会尝试使用一组长长的username和password列表来登录未知主机。SMB Relay攻击允许我们获取这些认证尝试,然后使用它们来访问网络中的系统。在某种程度上,SMB Relay也是一种Pass the Hash攻击。
NTLM NTLM是请求/应答协议。认证发生在类似这种场合:首先,客户端尝试登录,服务器响应一个质疑。事实上,服务器在说:如果你是你所说的那个人,那么使用你的hash把它加密(ChallengeX)。然后客户端加密challenge发送给服务器。接着服务器用客户端密码hash解密。如果解密后的challenge和发送的一样,那么user通过认证。过程如下:
DSC0000.png
使用SMB Relay攻击,攻击者把自己放到交换中间。攻击者选择它想认证的目标服务器,然后等待网络中的某人连接到他进行认证。这时就可以利用那些自动连接到主机的主动防御系统,漏洞扫描器,管理员脚本。当自动化进程连接到攻击者,他传递认证尝试到他的目标(网络中的另一个系统,也许是一个服务器)。目标产生一个challenge并发挥到攻击者。攻击者把这个challenge发送给最初的扫描系统。扫描系统使用正确的密码hash加密然后发送给攻击者,攻击者把正确的加密响应再发送给目标,这样就可以成功认证。过程如下图所示。蓝色表示最初的通信,红色表示攻击者把这些通信进行轻微的更改并中转到他的目标,所以它可以获得访问权限。
DSC0001.png
虽然看起来很复杂,但是实施起来很简单。在本例中,攻击者(10.10.12.10)希望访问10.10.12.20的服务器。组织里面有一个10.10.12.19软件清查进行来清查网络中所有系统
场景
攻击者 - 10.10.12.10
目标 - 10.10.12.20
软件清查系统 - 10.10.12.19
使用metasploit的SMB Relay模块,攻击者在10.10.12.10设置参数
DSC0002.png
本例使用一个简单的Windows FOR循环来模拟管理服务器扫描网络,进行软件清查。在10.10.12.19,运行如下命令:
DSC0003.png
当扫描器(10.10.12.19)连接到10.10.12.10(攻击者的主机)的时候,认证尝试将中转到目标服务器(10.10.12.20)。认证就这样奇迹的发生了,metasploit自动的使用认证后的session在目标机上创建meterpreter荷载。注意下图,当清查系统视图连接到10.10.12.10时,metasploit发送Access Denied给清查系统。但是,我们已经成功在目标机上获得Meterpreter shell。
DSC0004.png
如今,Metasploit的SMB Relay只支持NTLMv1,所以组织可以通过更改AD策略来避免这种攻击,从
DSC0005.png
改为
DSC0006.png
然后我们再尝试metasploit:
DSC0007.png
现在当我们运行exploit,出现Failed to authenticate错误。
现在我们使用python IMPACKET模块进行攻击。IMPACKET模块中含有一个SMBRELAYX.PY脚本,它支持NTLMv2。
下载最新版本的IMPACKET,修复模块路径问题。SMBRELAYX需要在通过认证后指定一个在目标服务器上运行的一个可执行文件。还有什么比meterpreter更好的吗?我们使用msfpayload来创建一个Meterpreter可执行文件,然后开始使用SMBRELAYX。Smbrelayx.py需要两个参数:-h表示目标主机,-e表示目标主机上运行的可执行文件,如下:
DSC0008.png
由于我们使用meterpreter反向shell,我们需要搭建metasploit来接收荷载在目标机运行后创建的连接。这就是multi/handler的用于,如图
DSC0009.png
现在模拟扫描器来连接我们攻击机(10.10.12.10)的C$
DSC00010.png
不同于metasploit返回的Access Denied错误,我们这次获得System cannot find the path specified错误,我喜欢这个错误,因为管理员更容易相信这个错误。smbrelayx.py的返回信息相比于metasploit更隐蔽。我们可以在脚本中看到中转发生。它使用10.10.12.19提供的username和password通过了10.10.12.20的认证,然后创建了meterpreter进程。
DSC00011.png
咋在通过NTLMv2认证后荷载被送到了目标主机,然后在目标主机上创建了meterpreter。为了保护我们的shell,我们需要立即把它迁移到其他更稳定的进程中。
DSC00012.png
==========================================================================
metasploit中“Access Denied”信息可以通过修改/usr/share/metasploit-framework/modules/exploits/windows/smb/smb_relay.rb代码来改变。
528     end
529
530     print_status("Sending Access Denied to #{smb[:name]} #{smb[:domain]}\\#{smb[:username]}")
531
532     pkt = CONST::SMB_BASE_PKT.make_struct

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-373852-1-1.html 上篇帖子: 用Python去解析XML报文 V1.1 下篇帖子: [Python学习]使用minidom来处理XML的示例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表