zer0daysec 发表于 2024-7-18 16:17:05

如何分析恶意的 MSI 程序

本帖最后由 zer0daysec 于 2024-7-18 16:17 编辑

一、概述
攻击者选择使用 MSI 程序来执行恶意负载,因为可以在其中嵌入恶意的可执行文件或脚本,从而逃避检测。他们可以滥用 MSI 文件中的自定义操作,在安装过程中运行恶意代码,并配置安装程序从远程服务器下载其他恶意软件。

通过伪装成合法软件,攻击者诱骗用户执行这些文件。MSI 程序由受信任的 Windows 服务处理,使恶意软件更容易绕过安全产品,这种隐蔽性和多功能性的结合使 MSI 文件成为网络攻击的一个有吸引力的载体。

MSI 是 Microsoft Installer 的缩写,是包含有关软件安装的详细信息的数据库文件,它们存储安装过程的数据,包括配置设置、要安装的文件和安装说明,确保结构化且高效的软件部署。

它们被软件供应商广泛使用,提供标准化的安装体验,通过确保正确安装所有必要的文件、设置和配置来简化软件部署。此外,MSI 文件还提供修复和更新现有安装的功能,使其成为多功能且高效的软件管理工具。

设计用于与 Windows Installer 服务 (负责应用程序管理的核心 Windows 组件) 配合使用,这种标准化和多功能性也使 MSI 文件成为恶意利用的常见目标。

MSI 文件为攻击者提供了可以被滥用的许多功能,例如在 SSLoad 活动中。因此,对于分析人员和研究人员来说,了解这些文件的结构以及如何分析它们非常重要。

本篇文章目的在于提供有关 MSI 文件的结构和功能的详细信息,并提供全面的指南来分析这些文件是否存在潜在威胁。它强调了分析过程中使用的传统工具和技术,确保分析师和研究人员能够有效识别和减轻与恶意 MSI 安装程序相关的风险。

二、MSI 结构
2.1 MSI 与 EXE 有什么区别
MSI 文件和 EXE 文件在功能上存在显着差异,MSI 文件专为在 Windows 系统上安装软件而设计,与 Windows Installer 服务集成以实现标准化安装过程。这允许组件安装、回滚和修补等高级功能。

EXE 文件是通用可执行文件,可以执行各种功能,包括软件安装,但缺乏 MSI 文件的结构化安装逻辑。此外,MSI 文件支持静默,无人值守安装,非常适合网络部署和集中管理,而 EXE 文件更通用,但不提供这些功能。

2.2 MSI 结构
如上所述,MSI 安装程序与 Windows 安装程序配合使用。Windows 安装程序是 Microsoft 开发的软件组件和 API,用于在 Windows 操作系统上安装、维护和删除软件。它使用 .msi 文件进行安装,提供回滚、版本控制和自动卸载等功能。它维护已安装产品的一致数据库以实现可靠操作,并通过代理为非特权用户提供安装便利,可以使用 Visual Studio、InstallShield 和 WiX Toolset 等工具创建安装程序包。

MSI 文件被构造为关系数据库,供 Windows 安装程序用于软件安装、维护和删除。该数据库由多个表组成,每个表在安装过程中都有特定的用途。这些表通过主键值和外键值链接。安装数据库包含安装应用程序所需的所有信息;因此,它需要用所需的信息填充表。一个 MSI 文件可以有多个表,但我们将重点关注在分析中最有用的表。

2.3 组件和特性
Windows 安装程序使用功能和组件的概念来组织软件安装,功能代表应用程序功能的一部分,用户可以选择独立安装。组件是应用程序的较小部分,总是一起安装或删除。选择某个功能后,安装程序将确定需要哪些组件。

组件是作为单个单元安装或卸载的资源 (例如文件、注册表项和快捷方式) 的集合,每个组件都通过唯一的组件 ID 进行跟踪。必须对组件进行组织,以便没有资源属于多个组件,从而确保 Windows 安装程序的引用计数机制正确运行。

组件表:包含安装的部分组件

功能是应用程序功能的独特部分,用户可以选择独立安装,例如拼写检查器。功能可以具有层次关系,这意味着如果安装了子功能,则也会自动安装其父功能。

功能组件表:建立功能和组件之间的关系,对于每个功能,此表指定了构成该功能的所有组件。这种关系对于确保在安装过程中选择某个功能时安装或更新所有必需的组件至关重要。

安装程序需要知道需要安装哪些文件,该信息存储在文件表中,其中包含有关要安装的文件的信息,包括文件名、路径和属性。还有一个目录表,它指定安装的目录结构。

2.4 二进制与文件表
MSI 文件中的二进制表和文件表具有不同的用途,二进制表直接在 MSI 数据库中存储二进制数据,例如图标、位图、动画或自定义操作脚本,这些数据直接嵌入到 MSI 文件中,并在安装过程中使用 Windows Installer API 进行访问。它通常用于安装过程本身所需的较小资源。

文件表包含有关将安装在目标系统上的文件的信息,描述要复制到用户计算机的实际应用程序文件。这些文件通常单独存储 (例如,在 CAB 文件中) 或作为 MSI 中的压缩流存储,并代表构成正在安装的应用程序的文件。文件表用于确定要安装哪些文件、安装位置及其属性。

2.5 安装操作和顺序
操作封装了在安装或维护期间执行的功能,并且它们由安装的开发人员设置,有许多内置的标准操作,示例包括:


[*]CreateShortcuts:使用快捷方式表管理快捷方式创建
[*]InstallFiles:使用文件表将文件从源目录复制到目标目录
[*]WriteRegistryValues:使用注册表设置所需的注册表信息

这些操作可确保在安装过程中正确应用所有必要的组件和配置

MSI 文件中的序列表控制安装操作和用户界面显示的顺序,有以下三种安装方式:


[*]Simple (简单)
[*]Administrative (管理)
[*]Advertisement (广告,推广)

每个都有特定的序列表 (UI 和执行),这些表包含 Action (操作)、Condition (条件) 和 Sequence (顺序) 字段,确定发生什么操作、在什么条件下发生以及以什么顺序发生。

序列表包括标准和自定义操作的详细信息,增强了安装的灵活性和控制力。在简单安装过程中,会执行 INSTALL 顶级操作,该操作会处理 InstallUISequence 表和 InstallExecuteSequence 表。

InstallUISequence 表管理安装的用户界面顺序,而 InstallExecuteSequence 表控制实际的安装操作,确保安装步骤按正确的顺序执行。

有几种类型的 Action:


[*]Standard Actions (标准)
[*]Custom Actions (自定义)

MSI 文件定义执行操作的序列,序列主要分为三种类型:


[*]AdminExecuteSequence 在管理安装期间为单个用户或组执行的操作
[*]InstallExecuteSequence 在典型安装过程中执行的操作
[*]AdvertiseExecuteSequence 在广告期间执行的操作

操作和顺序可以精确控制安装过程,确保步骤在正确的条件下以正确的顺序执行。

2.6 自定义操作
MSI 文件中的自定义操作是指在安装过程中运行的命令或脚本,用于执行标准 MSI 操作未处理的自定义任务。这些操作可以执行可执行文件、DLL、VBScript、JavaScript 或预定义命令,这样能够在看似合法安装的后台执行恶意负载。

MSI 文件中的自定义操作在 CustomAction 表中定义,此表中的每项指定一个自定义操作、类型、源和目标。以下是用于定义自定义操作的列的细分:


[*]Action 这是自定义操作的名称,充当主键并在序列表中引用此操作,如果名称与任何内置操作匹配,则将不会执行自定义操作
[*]Type 此字段包含指定自定义操作类型及其执行选项的标志的按位组合,类型确定操作是调用 DLL、可执行文件、脚本还是设置属性
[*]Source 此字段可以包含属性名称或另一个表的键,例如二进制表 (对于嵌入的二进制文件)、文件表 (对于已安装的文件) 或目录表 (对于路径),引用的具体表取决于自定义操作的类型
[*]Target 此字段提供自定义操作所需的附加信息,例如 DLL 的入口点、可执行文件的命令行参数或脚本代码
[*]ExtendedType 此字段指定自定义操作的附加选项,例如处理补丁卸载

例如,运行可执行文件的自定义操作的 Source 字段可能引用文件表中的一个键,并且其 Target 字段包含命令行参数。

2.7 常见文件扩展名及其作用

[*].msi - Microsoft 安装程序包文件的主要扩展名,包含安装数据库和安装软件所需的说明
[*].mst - Windows 安装程序转换文件,用于修改或自定义 MSI 文件而不改变原始包
[*].msm - 合并模块文件,用于分发共享组件并确保跨多个应用程序安装相同版本的共享文件
[*].msp - Windows 安装程序补丁文件,用于对已安装的应用程序应用更新或修复
[*].cab - 用于将多个文件压缩打包成一个文件,以便于分发

三、基于 MSI 的安装程序
人们使用第三方工具创建 MSI 文件,因为它们提供标准化的软件安装格式,简化了跨多个系统的创建、维护和删除,尤其是在企业环境中。这些工具还与企业部署系统无缝集成,促进集中控制和自动化部署。

有多种产品支持 MSI 格式,最常见的软件:

3.1 高级安装程序
高级安装程序使用 MSI (Microsoft 安装程序) 作为其主要安装程序格式之一。高级安装程序对 MSI 的使用包括用于创建和编辑 MSI 包的强大工具以及用于查看和修改文件结构、注册表项等 MSI 元素的直观图形用户界面。

高级安装程序提供了许多有用的功能,即使是免费版本,这使得攻击者很容易滥用它。该软件甚至在其免费版本中也支持创建 MSI 包,并且可以将 EXE 安装程序重新打包为 MSI 文件。此外还可以为 MSI 以外的各种格式创建安装程序,包括 MSIX、App-V 等。高级安装程序还提供 MSI 和 EXE 文件静默安装功能。

3.2 InstallShield
InstallShield 是一种用于创建 Windows 应用程序安装程序的软件工具,它可帮助开发人员制作安装包,包括 MSI 包。

InstallShield 可以创建使用 Windows Installer 服务安装在最终用户系统上的 MSI 文件,当 InstallShield 生成安装包时,Windows Installer 在用户系统上执行实际安装。

InstallShield 提供各种项目类型,其中基本 MSI 项目是创建 Windows Installer 程序包的常用选项。尽管 WiX (Windows Installer XML) 等其他工具也可以生成 MSI 文件,但 InstallShield 仍然是广泛使用的商业解决方案。

除了创建 MSI 文件之外,InstallShield 还提供创建 MSIX 包、与 Visual Studio 集成以及支持高级安装程序功能等功能。

四、分析 MSI 文件的工具
可以使用多种工具来分析 MSI 文件:


[*]msitools - 此 Linux 软件包包括 msiinfo 和 msidump 等可用于检查 MSI 文件的实用程序,可枚举表和流、转储表内容以及从 MSI 文件中提取数据
[*]msidump - Mgeeky 开发的一款分析恶意 MSI 包的工具,它可以提取文件、流和二进制数据,并结合 YARA 扫描。它对于快速分类和详细检查潜在的恶意 MSI 特别有用
[*]lessmsi - 这是一个具有图形用户界面和命令行界面的实用程序,可用于查看和提取 MSI 文件的内容,它还具有可轻松提取的 Windows 资源管理器集成和 MSI 表查看器
[*]MSI Viewer - 此应用程序可从 Microsoft Store 获取,可查看 MSI 安装程序文件和合并模块的内容,还可以提取文件而无需运行安装程序
[*]Orca - Microsoft 开发的图形用户界面工具,用于分析和编辑 MSI 文件。Orca 允许用户打开 MSI 文件并查看其内部结构,包括表、属性和安装包的其他组件

五、在野 MSI
从攻击者的角度来看,MSI 文件非常有用。首先,MSI 文件是安装各种软件的常用工具,其次,MSI 文件为安装软件提供了多种方便的功能,但同时,它们也可用于在用户不注意的情况下秘密执行恶意负载。

在其活动中使用 MSI 文件的威胁的常见示例包括:


[*]DarkGate - 使用伪装成合法安装的 MSI 文件,例如 Notion 或 Apple iTunes,它包含提供 DarkGate 有效负载的 DLL 侧面加载
[*]Maze 勒索软件 - 滥用自定义操作来执行恶意 DLL
[*]IcedID - 以多种方式滥用 MSI 文件,一般通过恶意 Office 文档或包含 MSI 文件的 ZIP 文件进行分发,诱骗用户安装恶意软件。攻击者创建 MSI 文件,并伪装成 AnyDesk 或 Adob​​e 产品等合法软件的安装程序,通过 Google Ads 进行推广。执行后,MSI 文件会删除多个文件并使用 rundll32.exe 运行恶意加载程序。IcedID 使用 msiexec.exe 来掩盖其活动,帮助其注入合法进程。这些 MSI 文件提供初始 IcedID 加载程序,然后该加载程序获取主要有效负载 (通常是后门)。MSI 文件的使用有助于 IcedID 规避一些安全措施并通过计划任务等方法建立持久性

恶意软件开发人员经常滥用 MSI 安装程序,利用 Windows Installer 技术的灵活性和功能来执行恶意负载。他们还经常使用 MSI 文件中的自定义操作来执行恶意代码,自定义操作可以在安装过程中运行可执行文件、脚本或 DLL,执行恶意代码并将其注入正在运行的进程中。

根据设计,MSI 安装程序可以嵌入各种类型的文件,包括可执行文件和 DLL,这些嵌入文件可能包含作为安装过程的一部分提取和执行的恶意有效负载。此外,这些 DLL 可用于通过 DLL 劫持或 DLL 旁加载来改变执行流程。


[*]二进制表 - 将恶意软件存储在二进制表中并将其作为安装例程的一部分执行是一种常见策略,该恶意软件伪装成所安装软件的必要组件

MSI 安装程序具有许多有用的特性和功能,例如,MSI 安装程序通常以提升的权限运行,这些权限可能被滥用来执行需要管理权限的操作。攻击者还可以使用静默安装选项来部署恶意软件,而无需用户交互或感知。

六、恶意 MSI 文件的实战分析
让我们看一下恶意 MSI 文件,该文件是传播 SSLoad 恶意软件的活动的一部分。SSLoad 是一种用 Rust 编写的恶意软件,它收集受害者的信息并将其发送到 C2。有关该活动的更多详细信息,请查看 我们的文章。

我们将使用 msitools 检查安装程序文件,目标是识别并提取安装程序正在执行且不属于合法安装的文件。

可以为 Linux 和 Mac 安装 msitools 软件包,MSI 文件的 sha256:90f1511223698f33a086337a6875db3b5d6fbcce06f3195cdd6a8efa90091750

首先,让我们检查一下文件的元数据:

msiinfo suminfo 90f1511223698f33a086337a6875db3b5d6fbcce06f3195cdd6a8efa90091750.sample
Title: Installation Database
Subject: MS SharePoint
Author: Akamai Technology
Keywords: Installer, MSI, Database
Comments: This installer database contains the logic and data required to install MS SharePoint.
Template: ;1033
Last author:
Revision number (UUID): {B61C58BB-6B98-4501-8BF7-0D9C8D568301}
Last printed: Fri Dec 11 06:47:44 2009
Created: Fri Dec 11 06:47:44 2009
Last saved: Fri Sep 18 10:06:51 2020
Version: 200 (c8)
Source: 10 (a)
Application: MS SharePoint
Security: 0 (0)
根据输出,我们可以了解到该恶意文件试图伪装成 MS SharePoint 安装程序。创建和更新日期可以帮助分类和搜索,但请注意它们可能会被更改。

接下来,检查此 MSI 文件中的表列表

msiinfo tables 90f1511223698f33a086337a6875db3b5d6fbcce06f3195cdd6a8efa90091750.sample
_SummaryInformation
_ForceCodepage
Patch
Condition
AdvtExecuteSequence
PatchPackage
FeatureComponents
_Validation
AdminExecuteSequence
ActionText
AdminUISequence
TextStyle
Binary
File
Component
BootstrapperUISequence
Media
ComboBox
Control
Dialog
Property
Error
Feature
Directory
EventMapping
CheckBox
ControlCondition
ControlEvent
CreateFolder
CustomAction
InstallExecuteSequence
InstallUISequence
LaunchCondition
ListBox
ListView
RadioButton
Registry
UIText
Upgrade
虽然看到所有这些表可能会让人不知所措,但我们应该从更容易被滥用的地方开始分析,例如 CustomAction 表。虽然此表中定义了许多操作,但 LaunchFile 似乎执行特定的 DLL 文件。

msiinfo export 90f1511223698f33a086337a6875db3b5d6fbcce06f3195cdd6a8efa90091750.sample CustomAction
Action Type Source Target ExtendedType
s72 i2 S72 S0 I4
CustomAction Action
AI_DETECT_MODERNWIN 1 aicustact.dll DetectModernWindows
AI_Init_PatchWelcomeDlg 1 aicustact.dll DoEvents
AI_Init_WelcomeDlg 1 aicustact.dll DoEvents
AI_SET_ADMIN 51 AI_ADMIN 1
AI_InstallModeCheck 1 aicustact.dll UpdateInstallMode
AI_DOWNGRADE 19 4010
AI_DpiContentScale 1 aicustact.dll DpiContentScale
AI_EnableDebugLog 321 aicustact.dll EnableDebugLog
AI_PREPARE_UPGRADE 65 aicustact.dll PrepareUpgrade
AI_ResolveKnownFolders 1 aicustact.dll AI_ResolveKnownFolders
AI_RESTORE_LOCATION 65 aicustact.dll RestoreLocation
AI_STORE_LOCATION 51 ARPINSTALLLOCATION
SET_APPDIR 307 APPDIR \
LaunchFile 1026 viewer.exe C:\Windows\System32\regsvr32.exe /S sharepoint\MenuEx.dll
SET_SHORTCUTDIR 307 SHORTCUTDIR
SET_TARGETDIR_TO_APPDIR 51 TARGETDIR
AI_CORRECT_INSTALL 51 AI_INSTALL {}
AI_SET_RESUME 51 AI_RESUME 1
AI_SET_INSTALL 51 AI_INSTALL 1
AI_SET_MAINT 51 AI_MAINT 1
AI_SET_PATCH 51 AI_PATCH 1
AI_DATA_SETTER 51 CustomActionData
AI_DATA_SETTER_1 51 CustomActionData
查看属于安装程序的文件的另一种方法是检查文件表:

msiinfo extract 90f1511223698f33a086337a6875db3b5d6fbcce06f3195cdd6a8efa90091750.sample FileTable > FileTable.txt
使用 msiextract 获取 MenuEx.dll 文件:

msiextract --directory extracted_files 90f1511223698f33a086337a6875db3b5d6fbcce06f3195cdd6a8efa90091750.sample
可疑的 DLL 位于 extract_files 文件夹中,分析 DLL 不在本篇中阐述,但你可以在我们的 博客 中阅读更多相关信息。

七、使用 Intezer 分析 MSI 安装程序
到目前为止,我们已经演示了如何手动调查 MSI 文件。但是,有一种更有效的方法可以从这些文件类型和其他文件类型中提取恶意负载。使用 Intezer,我们利用静态和动态执行以及强大的代码和字符串重用分析。

这种强大的方法使分析师、SOC 团队和研究人员能够从大量警报中快速识别恶意文件并对其进行分类。

下面,我们可以看到从 MSI 安装程序中提取的 DLL,该 DLL 被检测为 PhantomLoader



八、比较 MSI 文件 - MSIDIFF
让我们回到使用 msitools 进行手动分析。

msidiff 是 msitools 的命令行程序部分,它将两个 MSI 文件或一个 MSI 文件与目录结构进行比较。此程序对于需要识别不同版本 MSI 软件包之间差异的开发人员和 IT 专业人员非常有用。它有助于确保安装程序包中的更改符合预期,有助于版本控制和故障排除。

对于调查人员和研究人员来说,它有助于识别 MSI 软件包版本之间的差异和变化。

该程序比较输入文件的表,提供详细的比较报告,突出显示两个 MSI 文件之间或 MSI 文件与目录结构之间的差异。差异被分类并以可读的格式显示,通常显示:


[*]表更改 - MSI 文件中数据库表的差异
[*]文件更改 - MSI 包中包含的文件存在差异
[*]属性更改 - MSI 文件中属性设置的差异

每个差异都以逐行比较的形式呈现,表明添加、删除或修改的内容。该报告有助于准确查明发生更改的位置,从而更轻松地管理和验证安装包的更新。

8.1 示例输出
示例输出可能如下所示:

Table: File
+ FileKeyComponent_FileName
- oldfilecomp1       oldfile.txt
+ newfilecomp2       newfile.txt

Table: Property
- ProductVersion1.0.0
+ ProductVersion2.0.0
在这个例子中:


[*]在文件表中,oldfile.txt 已替换为 newfile.txt
[*]在属性表中,ProductVersion 已从 1.0.0 更新为 2.0.0

请注意,第一个指定的文件将被视为旧版本,第二个文件被视为较新版本

8.2 例子
根据 HarfangLab 的 报告,伊朗国家资助的组织 MuddyWater 一直在针对以色列和其他国家的活动中使用包含 Atera Agent (一种合法的远程监控和管理工具) 的 MSI 文件。这些 MSI 文件通过鱼叉式网络钓鱼电子邮件分发,文件名经过精心设计,看起来与目标受害者相关,例如 "Tourism Program" 和 "Leonardo Hotels-tourism software"。这些 MSI 文件托管在 Egnyte 和 Sync.com 等各种文件共享平台上,并使用链接到受感染帐户的特定电子邮件地址的 Atera Agent 进行配置。

我们的团队发现了 MSI 安装程序的另一个变种,该变种可在野外安装 Atera Agent

Sha256:66ea27e2e043adcfca5352089e2cbe7d4349f1f7e78dd4acefaf451b8c9585c4

我们想将其与报告中的安装程序进行比较,sha256:ffbe988fd797cbb9a1eedb705cf00ebc8277cdbd9a21b6efb40a8bc22c7a43f0

msidiff ffbe988fd797cbb9a1eedb705cf00ebc8277cdbd9a21b6efb40a8bc22c7a43f0 66ea27e2e043adcfca5352089e2cbe7d4349f1f7e78dd4acefaf451b8c9585c4
diff -r -Nup old/CustomAction.idt new/CustomAction.idt
--- old/CustomAction.idt 2024-07-08 11:40:27
+++ new/CustomAction.idt 2024-07-08 11:40:27
@@ -1,6 +1,11 @@ CustomAction Action
Action Type Source Target ExtendedType
s72 i2 S72 S255 I4
CustomAction Action
+GenerateAgentId 2049 AlphaControlAgentInstallationBinary GenerateAgentId
+ReportInstallationStart 2049 AlphaControlAgentInstallationBinary ReportMsiStart
+ReportInstallationEnd 2049 AlphaControlAgentInstallationBinary ReportMsiEnd
+ReportInstallationFailure 2049 AlphaControlAgentInstallationBinary ReportMsiFailure
+ReportInstallationUserCancel 2049 AlphaControlAgentInstallationBinary ReportMsiUserCancel
SetCustomActionPropertyValues 51 PostUninstallCleanup SKIPCLEANUP=
PostUninstallCleanup 3137 AlphaControlAgentInstallationBinary PostUninstallCleanup
PormptInstallationDialog 2049 AlphaControlAgentInstallationBinary ShouldContinueInstallation
@@ -10,6 +15,6 @@ oldVersionUninstall 3170 INSTALLFOLDER unins000.exe /V
KillAteraTaskQuiet 3137 WixCA WixQuietExec
KillAteraService 3234 INSTALLFOLDER sc delete AteraAgent
oldVersionUninstall 3170 INSTALLFOLDER unins000.exe /VERYSILENT
-install 3090 AteraAgent.exe /i /IntegratorLogin="" /CompanyId="" /IntegratorLoginUI="" /CompanyIdUI="" /FolderId="" /AccountId=""
+install 3090 AteraAgent.exe /i /IntegratorLogin="" /CompanyId="" /IntegratorLoginUI="" /CompanyIdUI="" /FolderId="" /AccountId="" /AgentId=""
uninstall 3154 AteraAgent.exe /u
DeleteTaskScheduler 3170 INSTALLFOLDER SCHTASKS.EXE /delete /tn "Monitoring Recovery" /f
diff -r -Nup old/File.idt new/File.idt
--- old/File.idt 2024-07-08 11:40:27
+++ new/File.idt 2024-07-08 11:40:27
@@ -1,10 +1,10 @@ File File
File Component_ FileName FileSize Version Language Attributes Sequence
s72 s72 l255 i4 S72 S20 I2 i4
File File
-AteraAgent.exe AteraAgent.exe culrpfxg.exe|AteraAgent.exe 144224 1.8.6.7 0 512 1
+AteraAgent.exe AteraAgent.exe culrpfxg.exe|AteraAgent.exe 145968 1.8.7.2 0 512 1
AteraAgent.exe.config AteraAgent.exe.config 7uho0yn3.con|AteraAgent.exe.config 1442 512 2
-ICSharpCode.SharpZipLib.dll ICSharpCode.SharpZipLib.dll fd-i8f6f.dll|ICSharpCode.SharpZipLib.dll 214880 1.3.3.11 0 512 4
-Newtonsoft.Json.dll Newtonsoft.Json.dll e8lrglzz.dll|Newtonsoft.Json.dll 709984 13.0.2.27524 0 512 5
-PubNub.dll PubNub.dll Pubnub.dll 602464 6.13.0.0 0 512 6
-System.ValueTuple.dll System.ValueTuple.dll 7t1dchnb.dll|System.ValueTuple.dll 73056 4.6.26515.6 0 512 7
-BouncyCastle.Crypto.dll BouncyCastle.Crypto.dll 8kw0ybbq.dll|BouncyCastle.Crypto.dll 3318624 1.9.0.1 0 512 3
+ICSharpCode.SharpZipLib.dll ICSharpCode.SharpZipLib.dll fd-i8f6f.dll|ICSharpCode.SharpZipLib.dll 215088 1.3.3.11 0 512 4
+Newtonsoft.Json.dll Newtonsoft.Json.dll e8lrglzz.dll|Newtonsoft.Json.dll 710192 13.0.2.27524 0 512 5
+PubNub.dll PubNub.dll Pubnub.dll 602672 6.13.0.0 0 512 6
+System.ValueTuple.dll System.ValueTuple.dll 7t1dchnb.dll|System.ValueTuple.dll 73264 4.6.26515.6 0 512 7
+BouncyCastle.Crypto.dll BouncyCastle.Crypto.dll 8kw0ybbq.dll|BouncyCastle.Crypto.dll 3318832 1.9.0.1 0 512 3
diff -r -Nup old/InstallExecuteSequence.idt new/InstallExecuteSequence.idt
--- old/InstallExecuteSequence.idt 2024-07-08 11:40:27
+++ new/InstallExecuteSequence.idt 2024-07-08 11:40:27
@@ -11,6 +11,11 @@ PublishProduct 6400
InstallFinalize 6600
PublishFeatures 6300
PublishProduct 6400
+GenerateAgentId (Installed = "") AND (REINSTALL = "") AND (UPGRADINGPRODUCTCODE = "") AND (REMOVE = "") AND (NOT SKIPCLEANUP) 96
+ReportInstallationStart (Installed = "") AND (REINSTALL = "") AND (UPGRADINGPRODUCTCODE = "") AND (REMOVE = "") AND (NOT SKIPCLEANUP) 97
+ReportInstallationEnd (Installed = "") AND (REINSTALL = "") AND (UPGRADINGPRODUCTCODE = "") AND (REMOVE = "") AND (NOT SKIPCLEANUP) 6601
+ReportInstallationFailure (Installed = "") AND (REINSTALL = "") AND (UPGRADINGPRODUCTCODE = "") AND (REMOVE = "") AND (NOT SKIPCLEANUP) -3
+ReportInstallationUserCancel (Installed = "") AND (REINSTALL = "") AND (UPGRADINGPRODUCTCODE = "") AND (REMOVE = "") AND (NOT SKIPCLEANUP) -2
SetCustomActionPropertyValues 1602
PostUninstallCleanup (NOT UPGRADINGPRODUCTCODE) AND (REMOVE="ALL") 1604
PormptInstallationDialog (Installed = "") AND (REINSTALL = "") AND (UPGRADINGPRODUCTCODE = "") AND (REMOVE = "") 98
diff -r -Nup old/Property.idt new/Property.idt
--- old/Property.idt 2024-07-08 11:40:26
+++ new/Property.idt 2024-07-08 11:40:27
@@ -7,11 +7,11 @@ Manufacturer Atera networks
ALLUSERS 1
REINSTALLMODE dmus
Manufacturer Atera networks
-ProductCode {C5F5A288-85FF-4257-AF69-D5910E6268B5}
+ProductCode {E732A0D7-A2F2-4657-AC41-B19742648E45}
ProductLanguage 1033
ProductName AteraAgent
-ProductVersion 1.8.6.7
+ProductVersion 1.8.7.2
SecureCustomProperties NETFRAMEWORK35;PREVIOUSFOUND;WIX_UPGRADE_DETECTED
-INTEGRATORLOGIN mcsamaniego@mre.gov.py
+INTEGRATORLOGIN eduardomonica00214@hotmail.com
COMPANYID 1
-ACCOUNTID 001Q3000008IyacIAC
+ACCOUNTID 001Q300000AVzB7IAL
diff -r -Nup old/_SummaryInformation.idt new/_SummaryInformation.idt
--- old/_SummaryInformation.idt 2024-07-08 11:40:26
+++ new/_SummaryInformation.idt 2024-07-08 11:40:27
@@ -8,9 +8,9 @@ _SummaryInformation PropertyId
5 Installer
6 This installer database contains the logic and data required to install AteraAgent.
7 Intel;1033
-9 {D42E1648-2328-41CB-BC72-C0B32D77958E}
-12 2023/09/26 10:17:42
-13 2023/09/26 10:17:42
+9 {721AD955-79FD-4019-BBF5-9DCC4C1175BB}
+12 2024/02/28 04:52:02
+13 2024/02/28 04:52:02
14 200
15 6
18 Windows Installer XML Toolset (3.11.2.4516)
diff -r -Nup old/signature new/signature[...]
根据输出,更改如下表所示:

CustomAction, File, InstallExecuteSequence, Property, ProductCode, ProductVersion 和 _SummaryInformation

九、结论
MSI 文件广泛用于 Windows 系统上的软件安装,提供了一种标准化且高效的软件部署方法。这些文件可被利用来传递和执行恶意负载,利用其可信状态和复杂结构来逃避检测。

了解 MSI 文件的结构和功能 (包括数据库表、自定义操作和安装顺序) 对于识别潜在威胁至关重要。msitools、msidump、lessmsi 和 MSI Viewer 等工具提供了用于检查和分析 MSI 文件。通过检查 CustomAction 和 File 等关键表,安全专业人员可以检测并减轻与恶意 MSI 安装程序相关的风险。

页: [1]
查看完整版本: 如何分析恶意的 MSI 程序