`

SMB relay解密使用python进行ntlmv2攻击

 
阅读更多
原文地址: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通过认证。过程如下:

使用SMB Relay攻击,攻击者把自己放到交换中间。攻击者选择它想认证的目标服务器,然后等待网络中的某人连接到他进行认证。这时就可以利用那些自动连接到主机的主动防御系统,漏洞扫描器,管理员脚本。当自动化进程连接到攻击者,他传递认证尝试到他的目标(网络中的另一个系统,也许是一个服务器)。目标产生一个challenge并发挥到攻击者。攻击者把这个challenge发送给最初的扫描系统。扫描系统使用正确的密码hash加密然后发送给攻击者,攻击者把正确的加密响应再发送给目标,这样就可以成功认证。过程如下图所示。蓝色表示最初的通信,红色表示攻击者把这些通信进行轻微的更改并中转到他的目标,所以它可以获得访问权限。

虽然看起来很复杂,但是实施起来很简单。在本例中,攻击者(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设置参数

本例使用一个简单的Windows FOR循环来模拟管理服务器扫描网络,进行软件清查。在10.10.12.19,运行如下命令:

当扫描器(10.10.12.19)连接到10.10.12.10(攻击者的主机)的时候,认证尝试将中转到目标服务器(10.10.12.20)。认证就这样奇迹的发生了,metasploit自动的使用认证后的session在目标机上创建meterpreter荷载。注意下图,当清查系统视图连接到10.10.12.10时,metasploit发送Access Denied给清查系统。但是,我们已经成功在目标机上获得Meterpreter shell。

如今,Metasploit的SMB Relay只支持NTLMv1,所以组织可以通过更改AD策略来避免这种攻击,从

改为

然后我们再尝试metasploit:

现在当我们运行exploit,出现Failed to authenticate错误。
现在我们使用python IMPACKET模块进行攻击。IMPACKET模块中含有一个SMBRELAYX.PY脚本,它支持NTLMv2。
下载最新版本的IMPACKET,修复模块路径问题。SMBRELAYX需要在通过认证后指定一个在目标服务器上运行的一个可执行文件。还有什么比meterpreter更好的吗?我们使用msfpayload来创建一个Meterpreter可执行文件,然后开始使用SMBRELAYX。Smbrelayx.py需要两个参数:-h表示目标主机,-e表示目标主机上运行的可执行文件,如下:

由于我们使用meterpreter反向shell,我们需要搭建metasploit来接收荷载在目标机运行后创建的连接。这就是multi/handler的用于,如图

现在模拟扫描器来连接我们攻击机(10.10.12.10)的C$

不同于metasploit返回的Access Denied错误,我们这次获得System cannot find the path specified错误,我喜欢这个错误,因为管理员更容易相信这个错误。smbrelayx.py的返回信息相比于metasploit更隐蔽。我们可以在脚本中看到中转发生。它使用10.10.12.19提供的username和password通过了10.10.12.20的认证,然后创建了meterpreter进程。

咋在通过NTLMv2认证后荷载被送到了目标主机,然后在目标主机上创建了meterpreter。为了保护我们的shell,我们需要立即把它迁移到其他更稳定的进程中。

==========================================================================[color=red]
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

[/color]
  • 大小: 74.3 KB
  • 大小: 141.6 KB
  • 大小: 72.6 KB
  • 大小: 36.3 KB
  • 大小: 168 KB
  • 大小: 90.9 KB
  • 大小: 35.5 KB
  • 大小: 102.1 KB
  • 大小: 66.6 KB
  • 大小: 43.6 KB
  • 大小: 9.3 KB
  • 大小: 93.4 KB
  • 大小: 88.1 KB
分享到:
评论

相关推荐

    smb windows SMB

    smb relay smb relay smb relay

    Python库 | graphql-relay-0.4.2.tar.gz

    使用graphql-relay库,开发者可以轻松地将现有的Python数据模型与GraphQL Relay规范对接,从而创建出兼容GraphQL Relay的后端服务。 **开发语言和后端** GraphQL Relay不仅限于Python,它也可以与其他编程语言结合...

    Python库 | ariadne_relay-0.1.0a2-py3-none-any.whl

    标签“python 开发语言 Python库”表明了ariadne_relay库是用Python开发的,并且是面向开发者使用的,用于扩展或简化Python项目中的某些功能。Python库是开发者社区的核心,它们提供了各种各样的功能,从数据科学到...

    红队行动之鱼叉攻击SMTP_Relay.pdf

    【红队行动之鱼叉攻击SMTP_Relay】深入解析 红队行动中,鱼叉攻击是一种高度定向的网络攻击手段,通常针对特定的目标,利用SMTP Relay(简单邮件传输协议中继)来实施。SMTP Relay是邮件系统的一个功能,允许邮件...

    Python库 | trustlines-relay-0.9.0.tar.gz

    为了使用trustlines-relay-0.9.0,开发者需要先解压名为“trustlines-relay-0.9.0”的压缩包,然后按照官方文档或README文件的指导进行安装和配置。此外,熟悉Python编程基础,特别是网络编程和区块链技术,将对理解...

    graphql-relay-py, 一个帮助构建支持响应中继的graphql服务器.zip

    graphql-relay-py, 一个帮助构建支持响应中继的graphql服务器 用于 GraphQL python的中继库使用 GraphQL python 服务器端参考实现,可以方便地创建兼容的服务器,使用参考实现。注意:这个代码是原始的 graphql-...

    PyPI 官网下载 | azure_mgmt_relay-0.1.0-py2.py3-none-any.whl

    标题中的“PyPI 官网下载 | azure_mgmt_relay-0.1.0-py2.py3-none-any.whl”表明这是一个在Python Package Index (PyPI)官网上发布的软件包,名为`azure_mgmt_relay`,版本号为0.1.0。这个包是为Python 2和3设计的,...

    Python库 | gql_relay_result-0.0.2-py3-none-any.whl

    资源分类:Python库 所属语言:Python 资源全名:gql_relay_result-0.0.2-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Laravel开发-sqlrelay

    配置好后,你可以像使用其他数据库一样在 Laravel 应用中使用 SQL Relay 连接。Laravel 的 Eloquent ORM 和 Query Builder 都可以无缝地工作。例如,创建一个新的模型: ```php use Illuminate\Database\Eloquent\...

    sqlrelay-0.39.4.tar.gz 开源数据库连接池

    Sql Relay 支持多种编程语言的绑定,例如 C、Python、Perl、PHP 等,使得开发者可以在他们熟悉的语言环境中使用它。它的 API 设计使得数据库访问更加高效,同时提供了事务管理和安全性控制,如认证和授权。 总之,...

    python多人在线聊天室

    【Python 多人在线聊天室】是一个基于 IRC(Internet Relay Chat)协议的项目,旨在创建一个允许用户通过Python实现的在线交流平台。IRC 是一种早期的实时通讯协议,专为多用户聊天室设计,至今仍被许多技术社区广泛...

    Python库 | trustlines-relay-0.11.0.tar.gz

    python库。 资源全名:trustlines-relay-0.11.0.tar.gz

    Frame-Relay实验笔记

    - 使用命令`encapsulate frame-relay`和`no ip address no shut`来启用Frame-Relay封装并确保接口处于活动状态。 #### NBMA (Non-Broadcast Multi-Access) 配置 NBMA配置通常用于多点连接场景,其中多个设备可以...

    Python库 | Robogaia4Relay-0.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:Robogaia4Relay-0.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    Frame relay

    R77(config-if)#frame-relay route 102 interface serial1/2 201 ``` 这条命令指定了当DLCI为102的数据包到达S1/1接口时,应该通过S1/2接口的DLCI 201转发出去。 4. **配置接口S1/2**: ```plaintext R77...

    SMB BEACON是否必须依赖TCP445端口进行通信呢?.pdf

    标题中的"SMB BEACON是否必须依赖TCP445端口进行通信呢?"这个问题涉及到的是网络安全中的一个关键点,即Server Message Block (SMB) 协议的通信机制,特别是Cobalt Strike的SMB Beacon组件如何在特定网络环境下进行...

    Relay一个PHP55PSR7中间件调度员

    在深入探讨 Relay 的功能和使用方法之前,我们先来理解一下中间件的概念以及 PSR-7 的意义。 中间件在 Web 开发中的角色是处理请求和响应的组件,它们可以串行执行,每个中间件都可以对请求进行修改,处理业务逻辑...

    前端开源库-relay-compiler

    Relay是Facebook推出的一个基于GraphQL的前端开发框架,其核心组件之一就是`Relay Compiler`。这个编译器在前端开发领域扮演着至关重要的角色,它将开发者编写的使用GraphQL查询语句的React组件转化为服务器可以理解...

Global site tag (gtag.js) - Google Analytics