首页 > 如何编程实现检测office文件中是否含有宏(macro)?

如何编程实现检测office文件中是否含有宏(macro)?

RT,我现在做一个文件同步的项目(Python 实现),由于涉及到文件安全的问题,需要检测office文件中是否含有宏,并进行相应操作。
看到网上有一些宏病毒专杀工具,但是没有找到源码,不知道是怎么实现的。另外,我在office官网上看到,office文件有一个属性:.HasVBProject,不知道是否可以辨识宏。
hasVBproject
在某一网址上看到一个检测宏的方法,不知道是否可用Searching for Microsoft Office Files Containing Macro


通常思路都是通过分析程序特征码来定位程序是否存在某种恶意代码存在,你可以先用二进制分析工具扫一下包含宏的office文件,尝试提取出特征码,再写程序分析二进制代码来去辨别。这是常规杀毒软件的做法。
不过我觉得这么做比较麻烦,如果对方做了免杀呢?而且光靠你自己不可能有那么大的特征库去区分各种不同的宏病毒。
所以考虑从其他角度入手,文件先同步到某台包含杀毒软件的服务器上(如果对安全要求极高,可以用NFS建立一个公共的扫描区域,多台虚拟机映射这个NFS,不同虚拟机装不同的杀毒软件进行扫描,最大化特征库),每次杀完毒后,再扔进存储中,同时清除副本。


补充:
怎么会没有特征码呢?我刚才随便创建了一个带宏的excel,然后用xxd打开:

然后再打开另外一个没有宏的文档:

很明显,保存有宏的excel带有VBA这种二进制信息存在。

【热门文章】
【热门文章】