
本文是无文件恶意软件系列的一部分。 该系列的所有其他部分:
在本文中,我将陷入一个更加复杂的多阶段方案,即在系统中进行修复的无文件攻击。 但是后来我遇到了一种非常简单的攻击,没有代码-不需要Word或Excel宏! 这有效地证明了我作为本系列文章基础的最初假设:克服任何组织的外部边界是一项非常简单的任务。
我将描述的第一个攻击利用Microsoft Word漏洞,该漏洞基于
旧版动态数据交换协议 (DDE) 。 它已经被
修复 。 第二个漏洞利用了Microsoft COM和对象传输功能中的一个更一般的漏洞。
借助DDE回到未来
还有其他人记得DDE吗? 可能很少。 这是最早的
允许应用程序和设备传输数据的进程间通信协议之一 。
我自己对此有点熟悉,因为我曾经检查和测试电信设备。 当时,DDE允许将呼叫者ID转移到呼叫中心运营商的CRM应用程序,从而最终打开了客户卡。 为此,您必须在电话和计算机之间连接RS-232电缆。 这是日子!
事实证明,Microsoft Word仍
支持 DDE。
无需代码即可使这种攻击有效的原因在于,您可以
直接从Word文档的自动字段访问DDE协议(我将帽子戴在SensePost上进行
研究和发布 )。
域代码是MS Word的另一个古老功能,可让您向文档中添加动态文本和一些编程。 最明显的示例是“页码”字段,可以使用值{PAGE \ * MERGEFORMAT}将其插入页脚。 这使您可以自动生成页码。
提示:您可以在“插入”部分中找到“字段”菜单项。我记得当我第一次在Word中发现此功能时,我感到非常惊讶。 只要补丁没有禁用它,Word就支持DDE字段参数。 想法是DDE允许Word直接与应用程序通信,以便随后将程序输出传输到文档中。 当时这是一项非常年轻的技术-支持与外部应用程序交换数据。 后来,它是用COM技术开发的,我们还将在下面进行介绍。
结果,黑客意识到此DDE应用程序可能是一个命令外壳,它当然会启动PowerShell,并且黑客可以从那里执行他们想要的任何操作。
下面的屏幕快照显示了我如何使用这种秘密技术:DDE字段中的一个小型PowerShell脚本(以下称为PS)加载了另一个PS脚本,该脚本启动了攻击的第二阶段。
多亏了Windows的弹出警告,DDEAUTO内置字段正在暗中尝试启动外壳程序利用此漏洞的首选方法是将该选项与DDEAUTO字段一起使用,该字段
在打开 Word文档
时自动运行脚本。
让我们考虑一下我们可以做些什么。
作为一名新手黑客,您可以例如发送钓鱼邮件,假装您来自联邦税务局,并在第一阶段将PSDE脚本嵌入DDEAUTO字段(本质上是一个dropper)。 而且您甚至不需要像
上一篇文章中那样对宏等进行任何真正的编码
。受害者打开您的文档,内置脚本被激活,黑客位于计算机内部。 就我而言,远程PS脚本仅打印消息,但它也可以轻松启动PS Empire客户端,该客户端将提供对Shell的远程访问。
在受害者有话要说之前,黑客将是村里最富有的青少年。
外壳启动时没有丝毫编码。 甚至一个孩子都能做到!DDE和字段
后来,Microsoft仍然禁用了Word中的DDE,但在此之前,该公司表示该功能只是被滥用。 他们不愿意改变某些东西是可以理解的。 根据我自己的经验,我自己观察到一个示例,该示例启用了打开文档时更新字段的功能,但Word宏已被IT服务禁用(但带有通知)。 顺便说一句,您可以在“字设置”部分中找到相应的参数。
但是,即使启用了字段更新,Microsoft Word也会在字段请求访问已删除数据时通知用户,就像上面的DDE一样。 微软真的在警告您。
但是最有可能的是,用户仍然会跳过此警告,并在Word中激活字段更新。 这是感谢Microsoft禁用危险的DDE功能的难得机会之一。
今天找到一个未打补丁的Windows系统有多困难?
在此测试中,我使用AWS Workspaces访问虚拟桌面。 因此,我使用MS Office获得了未打补丁的虚拟机,这使我可以插入DDEAUTO字段。 我毫不怀疑,您可以通过类似的方式找到尚未安装必要的安全修补程序的其他公司。
物体之谜
即使安装了此修补程序,MS Office中也存在其他安全漏洞,这些漏洞使黑客可以执行与Word相似的操作。 在以下情况下,我们将学习如何在
不编写代码的情况下将
Excel用作网络钓鱼攻击的诱饵。要了解这种情况,让我们回顾一下Microsoft
Component Object Model或缩写为
COM(Component Object Model) 。
COM自1990年代就已经存在,并且被定义为基于远程RPC过程调用的“对编程语言而言中立的面向对象的组件模型”。 对于COM术语的一般理解,请阅读StackOverflow上的
这篇文章 。
总的来说,您可以将COM应用程序想象为Excel或Word可执行文件,或者可以启动的其他一些二进制文件。
事实证明,COM应用程序也可以运行
脚本 -JavaScript或VBScript。 从技术上讲,这称为
scriptlet 。 也许您在Windows上遇到了文件的sct扩展名-这是scriptlet的官方扩展名。 实际上,它们是包装在XML包装器中的脚本的代码:
<?XML version="1.0"?> <scriptlet> <registration description="test" progid="test" version="1.00" classid="{BBBB4444-0000-0000-0000-0000FAADACDC}" remotable="true"> </registration> <script language="JScript"> <![CDATA[ var r = new ActiveXObject("WScript.Shell").Run("cmd /k powershell -c Write-Host You have been scripted!"); ]]> </script> </scriptlet>
黑客和渗透测试者发现,Windows上有单独的实用程序和应用程序可以接受COM对象,因此也可以接受脚本。
我可以将脚本传递给用VBS编写的Windows实用程序,称为pubprn。 它位于C:\ Windows \ system32 \ Printing_Admin_Scripts的肠子中。 顺便说一句,还有其他Windows实用程序将对象作为参数。 首先,请考虑以下示例。
即使从打印脚本启动外壳程序也是很自然的。 去微软吧!作为测试,我创建了一个简单的远程脚本,该脚本可启动外壳并打印有趣的消息“您刚被编写脚本!”。 本质上,pubprn实例化scriptlet对象,从而允许VBScript运行Shell。 这种方法为想要潜入系统并隐藏在系统中的黑客提供了明显的好处。
在下一篇文章中,我将解释黑客如何使用Excel电子表格来使用COM脚本。
为了做家庭作业,请观看
此 2016 Derbycon
视频 ,其中介绍了黑客如何使用脚本。 并阅读有关scriptlet和某种绰号的
这篇文章 。