导语:作者读了一篇关于绕过保护视图的博客,就尝试把这种方法应用到其他的office组件中。然后选择了Access,并进行了验证。
可执行数据库方法
作者读了一篇关于绕过保护视图的博客,就尝试把这种方法应用到其他的office组件中。想到这一点,作者就在Access进行了尝试。另存为的文件类型选项有:
ACCDE这种文件类型和标准数据库文件的区别是什么呢?下面我们去寻找真相。
首先,打开Microsoft Access 2016,创建一个空的数据库。
然后,需要找一个点去放置Empire stager代码。Microsoft Access宏只触发那些不含代码的。实际执行的代码是保存在module(模块)中,module的定义是一系列用户定义的函数、子路径和全局变量,这些都是用VBA代码编写的。然后这些对象就可以在Access数据库中被使用和调用。
打开空的数据库文件后,选择创建(create)—模块(module):
这样就可以写代码了,本例中,作者使用了标准的Empire 宏payload。
关闭这个新宏之后,对这个module进行重命名操作。如果想要掩盖数据库的怀疑,那么重命名操作就是很重要的。
Module中已经有了stager,下一步就是创建宏来触发它。选择create—macro:
点击下拉菜单,选择“运行代码(RunCode)”
RunCode的触发需要VBScript中的函数名,可以自动填充函数名。在此,作者选择在VBScript中修改函数名:
在关闭宏时,选择另存为,重命名宏为autoexec。当接收者打开该文件时,宏就会自动执行。
为了让该文件看起来更真实,作者修改了table名,并在里面填充了一些虚假信息。一旦用户打开如图界面,他们就被感染了。
为了创建可执行文件,作者把payload保存为标准数据库文件——ACCDE。这样数据库文件就被锁定了——无法进行编辑。
这就有了同一个文件的两个版本,普通的数据库文件格式和同一数据库只能执行(execute only)的版本。都是通过autoexec宏触发VBScript,提供对目标主机的访问的。Payload如图:
注意以上两个payload安全警告的区别。对ACCDE格式,点击之后是没有宏告警的,只有关于内容不安全的告警消息。
PAGE_BREAK: PageBreak
当作者把ACCDE格式的文件传到virustotal.com网站进行检测时,结果显示完美地绕过了所有检测。
下面是代理所在的进程树,Empire是用WMI来启动PowerShell的。
还可以用其他的项目来增强payload,比如CACTUSTORCH项目。
结论
作者创建一个钓鱼payload的目的达到了,只需要点击一次就可以感染用户。同时证明了两种文件类型的区别。将含有恶意宏的数据库保存为标准数据库文件“.accdb”,Access会警告我们文件中含有恶意宏。当我们保存为“.accde”文件时,Access不会警告用户关于包含恶意宏内容。
钓鱼攻击很难防御,许多防御的策略都是基于终端用户的,而且钓鱼攻击单元逐渐增多,让这个威胁不断发展。在本例中,监控和拦截.accde文件可以进行预防,如果不能监控父子进程的关系,那可以选择监控office产品的批量进程,比如powershell.exe 和 rundll32.exe。防御者需要与时俱进,跟随攻击者的步伐,来进行有效地应对。