恶意宏学习备忘03——手动清除文档宏
0x01破坏宏标志
在解析OLE文件时,我们介绍过Directory,其中其偏移0x42H这个字节的表示DirectoryEntry的类型Type。0为非 法,1为目录(storage),2为节点(Stream),5为根节点。 我们可以定位宏工程所使用的Directory,将Type位修改为0,即非法Directory,这样Office办公软件在解析VBA工程 时,会因为非法Directory而导致解析错误。 如图所示,表示该扇区类型的字节记录在偏移0x42处,该处值为1,表示该扇区是目录扇区,该扇区记录着Macros 文件的地址。将偏移0x42处值修改为0,表示该扇区是非法扇区,office办公软件解析文档是就会忽略该扇区,也就无 法找到存储Macros的扇区了。
在上图中,我们值修改了名为“宏”的这个目录中。实际上,用于宏的指南还有两个,分别名为 “VBA”,和 “_VAB_PROJECT_CUR”,分别是宏,VBA和的VBAProject扇区,
0x02手工清理宏(针对* .DOCM和* .XLSM文档)
首先拷贝文件,生成文件副本,将文件后缀名修改为ZIP
打开拉链文件(不要解压),下面两个图中,上图是* .DOCM的情况,下图是* .XLSM的情况
·打开word(xl)文件夹,删除vbaProject.bin文件
·将ZIP文件后缀名修改为.DOC或.xls的。文件可以正常使用。
0x03 替换宏代码
上述方式修改标志位,对文档中的宏代码数据没有做丝毫改变,这样处理之后杀毒软件仍然会查杀。
我们已经可以解析宏数据,那么我们就可以将宏代码进行修改和替换,如使用字符'a'替换宏代码中的每一个字符。例 如MsgBox“hello”,就会被修改为aaaaaaaaaaaa。这样修改之后整个宏都已经被修改和破坏掉,杀软将不会查杀, 文档也可以正常使用。