专栏首页存储SMB共享之SCF文件攻击解析

SMB共享之SCF文件攻击解析

SMB是各类组织中广泛使用的一种文件共享协议,而且在很多内部渗透测试过程中,研究人员可以利用这种协议来发现共享文件中包含的敏感信息(例如明文密码和数据库连接信息等等)。但是,即便是一个共享文件中不包含可以用来连接其他系统的凭证数据,只要这个文件给未认证用户提供了写入权限,那么我们就可以用它来获取域用户或Meterpreter Shell的密码哈希。

收集哈希

在此之前,已经有攻击者使用这种SCF(Shell Command File)文件来执行各种操作了,例如显示Windows桌面或打开Windows资源管理器等等。但是,一个SCF文件还可以用来访问指定UNC路径,而这将允许渗透测试人员组织一次攻击。下面给出的代码可以存储在一个文本文件中,并植入到一个网络共享中。

下图显示的是SCF文件的内容:

将该文件(pentestlab.txt)以SCF文件格式存储后,当用户浏览该文件时,它将会被执行。在文件名(pentestlab.scf)前面添加一个“@”字符后,该文件将会被显示在共享磁盘的文件列表顶部。

为了捕捉到访问共享目录的用户哈希,Responder需要使用以下参数来执行:

当用户访问共享文件时,系统会自动跟SCF文件中包含的UNC路径建立连接。此时,Windows将会尝试使用该用户的用户名跟密码来跟共享磁盘进行身份验证。在认证的过程中,服务器会给客户端发送一个随机的8字节challenge密钥,而NTLM/LANMAN哈希会再次使用这个challenge密钥进行二次加密。Responder将会捕捉到NTLMv2哈希。

除了Responder之外,Metasploit Framework还有一个可以用来捕捉SMB客户端的challenge-response密码哈希的模块:

跟之前一样,当用户访问这个共享磁盘时,他的密码哈希将会被Metasploit捕捉到:

如果组织所采用的密码策略足够有效,那么攻击者破解密码哈希的时间可能需要几天甚至几周的时间。

Meterpreter Shell

这项技术的主要优势就是它不需要任何的用户交互,并且能够自动让用户与共享文件进行连接,整个过程不需要使用NTLMv2哈希进行交互。因此,这项技术可以结合SMB中继攻击一起使用,并通过Payload来获取每一个访问了该共享文件用户的Meterpreter Shell。

MSFVenom可以用来生成需要在目标设备上执行的Payload:

下图即为用于SMB中继攻击中的Payload:

Coresecurity的研究人员此前曾发布过一套名叫Impacket【点我下载】的Python脚本,它们可以用来执行各种针对Windows协议(例如SMB)的攻击。使用其中的smbrelayx脚本,我们将能够搭建一个托管了Payload的SMB服务器,而这台服务器就是目标用户接下来需要尝试进行连接的服务器。由于SCF文件会迫使每一个用户使用自己的凭证与共享服务器进行连接,因此整个过程都是自动进行的。

为了处理目标主机的连接,我们这里还需要使用到Metasploit Framework:

该模块的配置参数必须跟Payload的参数相同:

当用户访问这个SMB服务器的共享目录之后,我们将会收到连接请求,此时用户使用的就是他们的用户名以及密码哈希:

Meterpreter会话建立成功之后,为了避免连接中断的情况出现,我们需要将其转接到一个更加稳定的进程上。

这里需要使用migrate命令以及进程ID:

其中,进程ID 1600对应的是svchost.exe进程,它的运行使用的是SYSTEM权限。

在Meterpreter命令行中运行getuid命令,此时我们将能够得到当前的UID:

当然了,我们还可以使用Metasploit Framework来实现这种攻击。

当目标用户使用自己的用户名以及密码哈希来与SMB服务器建立连接并完成认证之后,服务器将会给目标用户发送一个Payload,并使用用户的权限来在其主机中执行(以服务的形式执行),并与攻击者建立Meterpreter会话。

接下来,攻击者可以使用sessions命令来与已建立的会话进行交互了。

总结

这项技术利用的是很多网络中常见的文件共享功能(SCF文件),它可以用来获取密码哈希或拿到Meterpreter Shell。在使用这项技术时,唯一需要满足的要求就是用户需要访问存储了恶意SCF文件的共享磁盘。但是,我们也可以通过下列方法来防止这种攻击的发生:

1. 使用Kerbeors认证或SMB签名;

2. 禁用共享文件给未认证用户所提供的写入权限;

3. 确保使用的是NTLMv2密码(而非LanMan密码);

参考资料

1. https://github.com/CoreSecurity/impacket

2. https://pen-testing.sans.org/blog/2013/04/25/smb-relay-demystified-and-ntlmv2-pwnage-with-python

3. https://1337red.wordpress.com/using-a-scf-file-to-gather-hashes/

4. http://carnal0wnage.attackresearch.com/2009/04/using-metasploit-smb-sniffer-module.html

5. https://room362.com/post/2016/smb-http-auth-capture-via-scf/

6. https://blog.rapid7.com/2008/11/11/ms08-068-metasploit-and-smb-relay/

7. https://cqureacademy.com/blog/penetration-testing/smb-relay-attack

本文来自企鹅号 - 聚锋实验室媒体

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 快速找到OEACLE的性能问题

    对于传统应用系统,一旦系统性能测试达标上线后,后续出现性能恶化除了业务徒增之外,十有八九都是数据库惹的祸。通过快速的业务量比对排除异常后,重点的问题排查就要放到...

    企鹅号小编
  • Web端设计理念篇

    设计理念是设计的核心思想与运作原则,是为了明确设计团队方向,确保围绕着核心准则去运作,而出现的指引设计师按既定线路前行。即设计团队在企业中存在的使命、任务、价值...

    企鹅号小编
  • 深入机器学习系列8-Gradient-boosted tree

    梯度提升树 1 Boosting   是一类将弱学习器提升为强学习器的算法。这类算法的工作机制类似:先从初始训练集中训练出一个基学习器,再根据基学习器的表现对训...

    企鹅号小编
  • 12.6 直接存取文件

    2、直接存取文件类似于哈希表,即根据文件中关键字的特点设计一种哈希函数和处理冲突的方法将记录散列到存储设备上,故又称散列文件。

    闫小林
  • 码个新功能,编个新故事

    比如说,中秋假期,我就给之前开发的一个小游戏迭代了一个新功能,还为其编了个故事....

    花叔
  • 什么是用户体验设计?

    不好的用户体验设计常让人发疯到要把电脑砸掉。那么到底用户体验设计包括哪些关键内容呢?用户体验设计就是根据产品的商业模式为用户设计合适的产品体验。

    张晓衡
  • 8、互联网产品的用户体验设计(UED)

    1、学习理解互联网产品用户体验设计(UED)相关知识 – 什么是UED – UED具体包含什么内容 – 普通产品团队的UED工作流程是什么样子的 – UED团队...

    陈树义
  • OpenSSL - 利用OpenSSL自签证书和CA颁发证书

    Aichen
  • CVPR 2019 | 条件运动传播:从运动中学习物体性质

    本文介绍了一种从运动中无监督地学习物体性质的方法:Self-Supervised Learning via Conditional Motion Propaga...

    CV君
  • 美团深度学习系统的工程实践

    深度学习作为AI时代的核心技术,已经被应用于众多场景。在系统设计层面,由于它具有计算密集的特性,所以与传统的机器学习算法在工程实践过程中存在诸多的不同。本文将介...

    美团技术团队

扫码关注云+社区

领取腾讯云代金券