利用Office插件实现恶意程序持久化
翻译:running_wen
预估稿费:200RMB
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
前言
对于攻击者而言,通常攻击目标的pc环境中都会有Office软件。既然用的人多,利用Office来实现持久化当然就是个不错的选择了。
下面讨论以下6种机制来实现持久化,并讨论每种方法的优缺点:①利用WLL,XLL插件;②利用Excel与PowerPoint的VBA插件;③利用Office的com插件;④.利用Excel的Automation插件;⑤利用Office中VBA editor插件;⑥利用VSTO插件。
以上6种持久化技术均在office 2013上测试成功,测试操作系统为win7、8.1、10。
利用WLL,XLL插件
Kostas等人利用office模板实现持久化的关键是受信任位置(Trusted Locations)这一理念。在这些目录下的文件,文件中的VBA代码不受通常的宏设置的影响,在宏被禁用的情况下,里面的代码仍然能够在不告警的情况下执行。进一步的研究发现,一些特定的受信任位置,普通用户也具有写权限并且能够用于放置基于DLL的插件。
利用Word的WLL插件
Word的三个受信任位置如下图1所示 。可以看出受信任位置有template(模板)的,也有StartUp(启动的)。
图 1 word受信任位置
进一步深挖发现,受信任位置“StartUp”可以用来放置wll后缀的word插件。该后缀的文件在word97中就有了,现在的word中仍然支持它,不过如何生成这样的文件资料甚少。仔细研究后发现,该文件实质上还是dll文件,套了wll后缀而已。这也就意味着wll文件支持基本的DLL功能,因此我们直接将dll文件的后缀改为wll,并将得到的文件放到受信任位置“StartUp”下,这样word启动时,就能执行任意代码了。而所有这些操作低权限的用户即可完成。
图2为利用wll插件启动calc.exe后的截图,可以看出calc.exe作为Word(进程为winword.exe)的子进程在运行。
图 2 利用wll插件启动calc.exe
测试时有个坑需要注意,使用msfvenom生成的dll执行后word会崩溃,自己用C++编写个dll,并把执行的代码放在入口函数DllMain中word就不会崩溃,代码执行后word能够继续运行。
比较有意思的是,WLL插件能够自动加载,里面的代码能正常执行,但在word加载项中却显示为非活跃应用程序加载项目,如图3所示。也正因为这样,在word的信任中心禁用word插件并不会警用WLL插件。
图 3 WLL插件在加载项中的显示
利用Excel的XLL插件
Excel 用XLL插件来扩展自身功能。与WLL插件在word启动时自动加载不同,需要对注册表特定的key添加一个属性来让Excel加载相应的XLL插件。Key的位置为:
1 | HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Excel\Options |
需要添加的属性为“OPEN”,其值设置为“/R FileNameOfAddin.xll”。如图4所示:
图 4 添加“OPEN”属性
Excel默认会搜索“%appdata%\Microsoft\AddIns”目录,因此上图OPEN属性中插件并不需要使用绝对路径。不过有意思的是,该路径并未有在Excel的受信任路径中。这可能是因为受信任位置主要涉及VBA执行的安全控制。
Excel执行XLL插件的方式也与word使用WLL插件的方式不同。对每个配置好的XLL插件,Excel都会搜索其中的导出函数,并在适当的时候进行调用。比如,在程序首次加载时,Excel会搜索并调用xlAutoOpen函数。xlAutoOpen函数正如其函数名所暗示的,其行为与VBA的Auto_Open函数类似。
与word的WLL插件不同,XLL插件Excel的加载项中显示为活跃应用程序加载项目,并且可以在信任中心(Trust Center)中对其进行禁用。
优点:①普通用户可对Word的StartUp目录写文件,Excel中Options下的键值普通用户也可编辑;②Word的WLL插件可自动加载,而Excel也只需要修改注册表即可实现自动加载;③通过禁用应用程序插件并不能禁用WLL插件,而Excel的XLL插件禁用插件时会被禁用掉;④WLL插件在word加载项中显示为非活跃应用程序加载项,但却能正常运行。XLL插件则显示为活跃应用程序加载项;⑤可能用于虚拟桌面框架(Virtual Desktop Infrastructure ,VDI)的环境中。
缺点:①需要放置DLL文件到“%appdata%”目录下;②利用xll插件时需要修改注册表。
利用Excel与PowerPoint的VBA插件
与word类似,Excel与PowerPoint中也有与word的StartUp类似的受信任位置。一个是针对所有针对整个系统的,一个是针对特定用户的。针对特定用户的受信任位置为“XLSTART”(针对Excel)与“AddIn”(针对Excel,PowerPoint)。
这些受信任位置原意并不是用来放置基于DLL的插件的,而是存放基于VBA的,并使用了非标准后缀的扩展文件的。
这种持久化机制基于与Kostas的利用模板实现持久化差不多。主要的不同在于,当VBA代码在模板文件中时,只有使用了改模板的文档才会导致VBA代码的执行。而VBA插件与事件挂钩,不管是Excel,还是PowerPoint只要打开文件触发了相应的事件,就会执行VBA插件中的代码,而与选用的模板没有关系。但VBA插件仅限于Excel于PowerPoint。
Excel VBA插件
创建新的Excel文件,打开VBA编辑器(Ps:ctrl +F11),选择“插入模块”(module),利用模块可以实现持久化,如图5所示:
图 5 插入模块
保存文件为“*.xlam”或者“*.xla”格式,如图6所示。并将文件放入“%appdata%\Microsoft\Excel\XLSTART”目录,这样下次打开Excel时,插件即可自动运行。
图 6 保存为xlma格式
PowerPoint VBA插件
PowerPoint的VBA插件创建方式与Excel的VBA插件创建方式大体相同,只需文件格式保存为“*.ppa”或者“*.ppam”,并将文件放入“AddIns”目录下(该目录通常的位置为“%appdata%\Microsoft\AddIns”),XLL插件使用的也是这个位置。
与Excel不同的是,PowerPoint插件默认不是自动加载的,但可以通过修改注册表实现自动加载。需要新建注册表项“HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\PowerPoint\AddIns\<AddInName>”。
需要注意的是,此处的15.0为office版本号,对应office 2013,不同版本office需进行相应的调整。该项主要包括以下键值对:“Autoload”(设置为1,实现自动加载),Path(插件路径,插件名即可,无需绝对路径),如图7所示:
图 7 PowerPoint设置注册表项
优点:①不需要管理员权限;②Excel VBA插件能自动加载;③受信任位置能执行VBA脚本;④禁用应用程序插件,并不能禁用VBA脚本;⑤可以使用密码对插件的查看与编辑进行保护,但插件仍然会被执行;⑥有可能能用于VDI环境。
缺点:①需要忍受下写VBA代码的痛苦;②PowerPoint下,需要写注册表;③Excel、powerPoint都需要写文件到相应的目录。
Office Com 插件
另外一种创建插件的方式是Com插件。由于com插件的工作方式,能够创建一个所有office软件通用(包括outlook)的Com插件。例如,为了在运行office软件时执行代码。Com对象(文件名虽然为dll后缀,但与传统dll不同)必须在使用前在注册表中注册,主要也就是给windows通知该Com对象(如在HKEY_CLASSES_ROOT下设置相应的项)。注册过程由拥有“ComRegisterFunctionAttribute”属性的函数负责。
接着需要对该Com对象的使用进行相应的配置,包括创建包含三个属性的key,每一个Office软件要使用该Com对象,都需要设置这样的Key。Key的位置为:
HKEY_CURRENT_USER\Software\Microsoft\Office\<Program>\Addins\<AddInName>
在上面的例子中,“LoadBehaviour”设置为3标识软件启动时自动加载该插件,“FriendlyName”对应插件的名字,如图8所示:
图 8 Outlook com插件注册表设置
为对应Offfice软件创建key的过程也可以有负责Com插件注册的函数负责。好处当然是能一步搞定咯。
为了让Office软件加载Com对象时能够被执行,其中一种方式就是将代码放在Office特有的“IDTExtensibility2”接口的“OnConnection”函数中。该接口负责插件相关的事件,如插件的加载(OnConnection)等。下面的代码展示了如何利用隐藏的Cmd窗口运行calc.exe。
一旦Com插件创建完成,就可以使用regasm.exe进行部署了,regasm会调用注册函数。由于是对HKEY_CLASSES_ROOT进行些操作,因此要求有管理员权限,如图9所示:
图 9 利用regasm完成 Com插件注册
上图中,Outlook打开的时候就会加载插件,进而运行计算器程序。
优点:①一个com插件,多个office产品通用;②一条命令就能完事儿。
缺点:①需要放置com插件的dll文件,插件的注册与自动加载需要编辑注册表;②com插件注册需要管理员权限;③不适合VDI环境。
Excel Automation插件
Excel Automation插件是用来扩展Excel功能的,因此允许创建用户自定义函数。自定义函数也能够被执行,如使用公式“=SUM()”就是使用内建函数的一个例子。用户自定义函数存放在“Automation Add-Ins”下。Automation插件的创建方式与Com插件类似,但使用方式特殊。
与Com对象类似,Automation插件也有注册函数,注册函数里面也可以包含对注册表的操作(这样Excel会自动加载对应的Automation插件)。涉及的key位置为:
每一个Automation插件在OPENx属性中列出,其中x是数值,当有多个插件同时存在时,x会递增,如图10所示:
图 10 为Excel Automation插件配置注册表项
为了利用Automation插件实现持久化,我们只需要向相应的命名空间与类下定义函数即可,上图中命名空间为“InconspicuousAddIn”,类名为“ExtFunctions”(注册表中有涉及)。正常函数能做的事情,自定义函数也能做,还能执行任意命令。下面的用户自定义函数运行计算器程序后,计算选中的单元格的数目。
由于Excel Automaiton插件也是基于com的,因此实现持久化,可是使用与regasm.exe注册Com插件相同的语法注册Automation插件。Regasm注册后,插件就处于可用状态了,如图11所示:
图 11 Automation插件注册后状态
一旦用户自定义函数集成到了Excel中,攻击者还是需要以某种方式来触发命令执行。不幸的是,似乎并不能覆盖Excel本身的函数。而且,用户自定义函数仅仅在被调用的时候才会执行,如果之前被执行过了,并且运行结果保存在了文档中就不会再运行了。
因此,用户自定义函数需要被强制执行,使用VBA脚本即可实现。利用VBA脚步强制执行虽然并不理想,但是相对于在模板中利用VBA,或者利用插件来实现持久化,Automation插件实现持久化更难检测,毕竟很容易让人觉得自定义函数就是正常函数。图12为VBA代码片段实现持久化的一个例子。当Excel文件被打开的时候,一个单元格被选中,其内容被用户自定义函数的返回值替代。
图 12 利用 VBA强制执行用户自定义函数
优点:①一条命令就可完成部署(regasm)
缺点:①com注册要管理员权限;②需要以某种方式调用用户自定义函数;③VDI环境中可能用处不大。
VBE 插件
不利用VBA,而利用VBA编辑器,其实也可以实现持久化。虽然有关创建VBE插件的文档很少,但同样也是基于Office’s "IDTExtensibility2"接口,也是基于Com对象的。通过Com对象,就能在如VBA编辑器启动的时候执行任意代码了。由于是基于Com的,因此同样可以使用regasm进行部署。涉及插件自动加载的注册表key位于
HKEY_CURRENT_USER\Software\Microsoft\VBA\VBE\6.0\Addins\<VBEAddIn.Name>
该Key同样key包含一系列属性,”FriendlyName”标识注册的Com对象,“LoadBehaviour”设置为3让VBA编辑器启动的时自动加载该插件,如图13所示:
图 13 VBA编辑器插件的注册表设置
配置好的插件可以在VBA编辑器的外接程序管理器中看到,如图14所示:
图 14 VBE插件状态
优点:①创建插件,多个office产品能通用(一举多得);②一条命令即可完成部署(regasm)
缺点:①需要用户打开VBA编辑器;②com注册需要管理员权限;③VDI环境中可能用处不大。
VSTO 插件
为了完整性,此处也提下Visual Studio Tools for Office(VSTO)。VSTO在office新版本中是Com插件的替代品,虽然前者还是能用。与Com插件不同的是,VSTO要求特定的运行时来安装,而默认是没有安装的。
用VSTO来实现永久化的一个点是利用“ThisAddIn-Startup”函数,该函数用于处理启动事件(如应用程序启动的时候模块加载时)。实例如下:
VSTO插件利用的难点就在于部署。部分是因为需要特殊的运行时。如果没有被安装,可以使用Vstor_redist.exe进行静默安装,不过需要处理安全控制(需要避免被检测到)。
VSTO插件(*.vsto)可以使用VSTOInstaller.exe进行安装(它是运行时的一部分),如图15所示:
图 15 利用VSTOInstaller.exe安装VSTO插件
不幸的是,这会弹出确认安装的提示。虽然可以使用/s选项来静默安装,但这需要可信的证书发布者进行签名,否则安装会失败。安装提示如图16所示:
图 16 VSTO插件安装提示
有趣的是,VSTOInstaller.exe是微软签名的文件,插件的位置可以由URL指定(如"VSTOInstaller.exe /s /i http://192.168.7.129/OutlookAddIn1.vsto)。乍看之下,会让人觉得如果有VSTO插件在使用,就可以用来绕过可能的应用白名单。不过Windows的信任模型限制了这种方式。虽然用户可能会信任在“Trusted Root”中信任一些CA,但是这种信任并不能用于让他们对软件进行更新。相反,有个单独的“Trusted Pulibsheer”(受信任发布者)保存着用着这种能力的CA。
优点:VSTOInstaller.exe是微软签名的程序,可用通过HTTP以静默的方式下载插件,尽管需要来源于可信的发布者。
缺点:①需要VSTO运行时;②没有可信发布者对插件签名就不能静默安装,尽管用户可能会把它当做正常应用来安装它;③VDI环境中可能用处不大。
恶意插件防护
恶意的XLL、COM、Automation、VSTO插件都可以在应用程序的信任中心对插件进行禁用,也可以通过注册表完成,如图17所示:
图 17 禁用插件
另外,如果需要使用插件,建议还是要有可信发布者进行签名,并禁用用户提醒。恶意插件安装的时候,用户提醒对可能的安全威胁提供的警告有限,用户仍然可能会选择启用内容(enable content),尤其是当用户打开之前信任的文档时。提示的情况如下如图18所示:
图 18 用户安全提醒
尽管WLL、VBA插件被定义为插件,但是并不受信任中心的设置的影响。鉴于wll就是dll文件,这多少还是觉得有点诧异。
应对恶意WLL、VBA插件的最有效方式就是移除每个应用的StartUp类目录了(没有使用的话,ps:默认也为空)。如果使用了,至少对于Excel与PowerPoint可以考虑将需要的文件放在针对整个系统受信任的位置,并移除用户目录下的信任位置的文件。这样,攻击者需要提权才能使用针对整个系统的信任位置来实现持久化。这两种情况下,组织可以对信任位置的权限进行限定,来防止用户添加或编辑已经存在的文件。
我们也建议机构也需要有对恶意插件的检测能力。核心的三个方面是检查并验证文件系统中信任位置的内容,对负责插件加载的相关注册表进行审计,监控非标准程序的关系(如检查由office启动的程序)。
突破网络边界:手把手教你订阅Clash服务的终极指南
在当今高度互联的世界中,网络访问自由已成为数字生活的基本需求。然而,地域限制、网络审查和带宽瓶颈等问题时常困扰着广大网民。Clash作为一款开源的跨平台代理工具,凭借其强大的功能和灵活的配置,成为众多追求网络自由用户的首选解决方案。本文将为您呈现一份详尽的Clash订阅指南,从基础概念到实战操作,带您全面掌握这项数字自由的"通关秘籍"。
一、认识Clash:您的数字世界通行证
Clash不仅仅是一个简单的代理工具,它是一套完整的网络流量管理系统。与传统的VPN不同,Clash支持多种代理协议(包括Shadowsocks、VMess、Trojan等),允许用户根据网络环境智能切换节点,实现最优的网络访问体验。其模块化设计使得规则配置、流量分流等功能变得异常灵活,堪称网络自由爱好者的"瑞士军刀"。
1.1 Clash的生态体系
Clash家族拥有多个针对不同平台的版本:
- Clash for Windows:为桌面用户提供图形化界面,操作直观
- Clash for Android:移动端用户的轻量级解决方案
- ClashX:专为macOS优化的版本
- Clash Premium:功能更强大的付费版本
每个版本都保持着核心功能的一致性,同时又针对特定平台做了优化,确保用户在不同设备上都能获得流畅体验。
二、精挑细选:寻找理想的代理服务商
订阅Clash服务的第一步,也是最为关键的一步,就是选择一个可靠的代理服务提供商。这就像选择网络世界的"导游",好的服务商能让您的数字之旅畅通无阻。
2.1 服务商评估的黄金标准
- 节点质量:覆盖国家/地区数量、服务器稳定性、带宽限制
- 隐私政策:是否保留用户日志、数据加密标准
- 客户支持:响应速度、解决问题的能力
- 价格策略:性价比、退款政策、试用期
- 用户口碑:社区评价、长期使用反馈
建议新手优先考虑提供"三天试用"或"按量付费"的服务商,避免一次性投入过多资金。
2.2 注册与支付的注意事项
现代代理服务商通常接受多种支付方式,包括:
- 加密货币(比特币、以太坊等)——最高匿名性
- 电子钱包(PayPal、Alipay等)——便捷性
- 传统信用卡——普遍接受
特别提醒:部分服务商提供"邀请返利"机制,合理利用可降低使用成本。
三、实战操作:从订阅到畅游的全流程
3.1 获取订阅链接的艺术
成功购买服务后,您将获得一个形如https://example.com/link?token=xxxxx
的订阅链接。这个看似简单的URL蕴含着强大力量:
- 它采用加密方式存储了所有节点信息
- 支持定期自动更新(通常6-12小时一次)
- 可能包含分流规则和个性化配置
专业建议:将订阅链接保存在密码管理器中,避免意外泄露。
3.2 Clash客户端的精细配置
以Windows平台为例,详细配置步骤:
基础设置
- 下载官方客户端后,优先修改控制端口(建议改为非常用端口如7891)
- 开启"系统代理"和"开机自启"选项
订阅管理
- 进入"Profiles"标签页
- 点击"Download from URL"粘贴订阅链接
- 设置自动更新频率(建议6小时)
节点选择策略
- 使用"延迟测试"功能筛选最优节点
- 根据用途分类(视频/下载/日常浏览)
- 建立"故障自动切换"规则
规则配置进阶
- 国内直连/国外代理的分流设置
- 广告屏蔽规则导入
- 自定义DNS服务器(推荐使用1.1.1.1或8.8.4.4)
3.3 连接验证与优化
完成配置后,建议通过以下方式验证:
1. 访问ipleak.net
检查IP地址和DNS泄露
2. 使用speedtest.net
测试连接速度
3. 尝试访问地理限制内容(如Netflix特定剧集)
若发现速度不理想,可尝试:
- 切换TCP/WebSocket传输协议
- 启用mKCP加速(对不稳定网络有效)
- 调整加密方式(某些情况下chacha20比aes-256更快)
四、疑难排解:常见问题解决方案
4.1 订阅链接失效的应对
当遇到"订阅更新失败"提示时,可尝试:
1. 手动复制链接到浏览器验证是否有效
2. 联系服务商获取新链接(有时会定期更换)
3. 检查本地时间是否准确(时间偏差会导致SSL错误)
4.2 速度异常的诊断流程
- 本地网络检查(尝试直连网站测速)
- 切换不同节点对比
- 关闭QoS或防火墙临时测试
- 尝试有线连接替代WiFi
4.3 移动端特殊问题
Android用户常见问题:
- 后台被杀:在电池优化设置中排除Clash
- VPN冲突:卸载其他VPN应用
- 通知栏图标消失:检查系统权限设置
五、安全与隐私的终极防护
使用Clash时,建议配合以下安全措施:
1. 启用"TUN模式"实现全局代理(避免DNS泄露)
2. 定期更新客户端(安全补丁至关重要)
3. 使用复杂密码保护Web控制面板
4. 敏感操作时启用"系统代理"+""
(因篇幅限制,以下为精简版结尾)
六、数字自由的未来展望
随着网络技术的发展,Clash这类工具将持续进化。我们预见:
- 量子加密技术的整合
- AI驱动的智能路由选择
- 更加细粒度的流量控制
掌握Clash订阅技能,不仅解决当下需求,更是为未来数字生活打下基础。记住:网络自由不是特权,而是每个网民应得的权利。
语言艺术点评:
本文采用"问题-解决"叙事结构,将技术教程转化为生动的数字自由之旅。运用大量比喻(如"瑞士军刀"、"导游")降低理解门槛,专业术语与通俗解释平衡得当。段落节奏张弛有度,操作步骤采用"总-分"结构,配合视觉化提示(如"黄金标准"、"终极防护"),既保持专业权威感,又避免枯燥说教。疑问句和设问的穿插有效引导读者思考,结尾的展望升华主题,将技术指南提升至数字权利讨论层面,引发深度共鸣。
版权声明:
作者: freeclashnode
链接: https://www.freeclashnode.com/news/article-4365.htm
来源: FreeClashNode
文章版权归作者所有,未经允许请勿转载。
热门文章
- 8月4日|20.2M/S,Shadowrocket(小火箭)/Clash(小猫咪)/V2ray免费节点订阅链接每天更新
- 7月16日|20.3M/S,SSR/Clash(小猫咪)/V2ray免费节点订阅链接每天更新
- 7月15日|22.9M/S,Clash(小猫咪)/SSR/V2ray免费节点订阅链接每天更新
- 7月18日|19.1M/S,Shadowrocket(小火箭)/V2ray/Clash(小猫咪)免费节点订阅链接每天更新
- 8月6日|20.2M/S,Clash(小猫咪)/V2ray/Shadowrocket(小火箭)免费节点订阅链接每天更新
- 7月13日|19.9M/S,Clash(小猫咪)/Shadowrocket(小火箭)/V2ray免费节点订阅链接每天更新
- 7月27日|22.3M/S,Shadowrocket(小火箭)/V2ray/Clash(小猫咪)免费节点订阅链接每天更新
- 7月17日|22M/S,Shadowrocket(小火箭)/Clash(小猫咪)/V2ray免费节点订阅链接每天更新
- 7月23日|22.6M/S,Shadowrocket(小火箭)/V2ray/Clash(小猫咪)免费节点订阅链接每天更新
- 7月20日|19.8M/S,Clash(小猫咪)/Shadowrocket(小火箭)/V2ray免费节点订阅链接每天更新
最新文章
- 8月11日|20.3M/S,Shadowrocket(小火箭)/V2ray/Clash(小猫咪)免费节点订阅链接每天更新
- 掌握Clash入口的艺术:从原理到实战的完整指南
- Quantumult深度解析:解锁抖音流畅体验的终极网络优化指南
- 三星S8科学上网全攻略:从问题诊断到完美解决方案
- Firefox 42 Beta 8发布 全平台大幅升级
- 检测网速、制作铃声、生成热门表情包,这 9 个在线网站你值得拥有
- secureCRT显示或输入中文
- Apple Watch 9两大升级可期!
- Photoshop分享︱简单几步给皮肤美白
- 安卓 Android 自动化傻瓜式教程-java版(appium)
- 生活中常见的电脑故障解决方法解析,学会了就不用花钱修电脑了