恶意监听器针对Ivanti端点移动管理系统
发布日期:2025年9月18日
警报编号:ar25-261a
恶意软件分析概览
执行摘要
网络安全和基础设施安全局从一家遭受网络威胁攻击者入侵的组织处获得了两组恶意软件,攻击者利用了Ivanti端点管理器移动版中的CVE-2025-4427和CVE-2025-4428漏洞。每组都包含恶意监听器的加载器,使攻击者能够在受感染的服务器上运行任意代码。
受影响的产品
Ivanti EPMM,版本11.12.0.4及更早版本、12.3.0.1及更早版本、12.4.0.1及更早版本以及12.5.0.0及更早版本。
关键措施
- 使用入侵指标和检测签名来识别恶意软件样本。
- 尽快将Ivanti EPMM版本升级到最新版本以防止入侵。
- 将移动设备管理系统视为高价值资产,并施加额外限制和监控。
入侵指标
有关此恶意软件的IOC可下载副本,请参见:MAR-251126.r1.v1.CLEAR。
检测
本恶意软件分析报告包含YARA和SIGMA规则。
有关此恶意软件的SIGMA规则可下载副本,请参见:AR25-260A/B SIGMA YAML。
目标受众
- 组织:所有拥有本地Ivanti EPMM系统的组织。
- 角色:数字取证分析师、事件响应人员、漏洞分析师、系统管理员。
简介
网络安全和基础设施安全局从一家组织处获得了总共五个文件的两组恶意软件,在该组织中,网络威胁攻击者利用Ivanti端点管理器移动版部署中的CVE-2025-4427和CVE-2025-4428漏洞进行初始访问。
大约在2025年5月15日概念验证发布后,网络威胁攻击者通过链接这些漏洞获得了运行EPMM的服务器的访问权限。攻击者针对/mifs/rs/api/v2/端点发送HTTP GET请求,并使用?format=参数发送恶意远程命令。这些命令使攻击者能够收集系统信息、下载恶意文件、列出根目录、映射网络、执行脚本来创建堆转储以及转储轻量级目录访问协议凭据。
CISA分析了攻击者写入/tmp目录的两组恶意文件。每组恶意软件都允许攻击者在受感染的服务器上注入和运行任意代码,从而实现持久化。
CISA鼓励组织使用本恶意软件分析报告中的入侵指标和检测签名来识别恶意软件样本。如果发现,请遵循本恶意软件分析报告中“事件响应”部分的指导。此外,组织应确保尽快运行最新版本的Ivanti EPMM。
恶意软件摘要
CISA分析了两组恶意软件:
-
第1组包含以下恶意文件:web-install.jar、ReflectUtil.class和SecurityHandlerWanListener.class。
-
第2组包含以下恶意文件:web-install.jar和WebAndroidAppInstaller.class。
-
第1组的web-install.jar称为加载器1。
-
第2组的web-install.jar称为加载器2。
每组都包含一个加载器和恶意监听器,使网络威胁攻击者能够在受感染的服务器上注入和运行任意代码。
第1组协同工作方式如下:
- 加载器1包含并加载
ReflectUtil.class。
- **
ReflectUtil.class**在Apache Tomcat中注入和管理SecurityHandlerWanListener。
- **
SecurityHandlerWanListener.class**拦截特定的HTTP请求并处理它们以解码和解密有效负载,这些有效负载会创建一个攻击者可执行的新类以运行任意代码。
第2组协同工作方式如下:
- 加载器2在运行时包含并加载
WebAndroidAppInstaller.class。
- **
WebAndroidAppInstaller.class**拦截和处理特定的HTTP请求,从请求中检索和解密密码参数,定义并加载一个新的恶意类,加密和编码新类的输出,并生成包含加密输出的响应。
恶意软件交付
网络威胁攻击者分段交付此恶意软件,将加载器1和2拆分为多个Base64编码的段[T1027.004]。他们通过单独的HTTP GET请求传递每个段,然后使用Java表达式语言注入写入每个块,并使用追加模式(通过true参数)将它们附加在一起。
对于每个加载器,攻击者的第一个GET请求创建文件并写入块1。随后的请求将块追加到现有文件。以下是攻击者GET请求的示例:
1
|
"GET /mifs/rs/api/v2/featureusage?format=${"".getClass().forName("java.io.FileOutputStream").getConstructor("".getClass(), "".getClass().forName("[Z").getComponentType()).newInstance("/tmp/web-install.jar", true).write("".getClass().forName("java.util.Base64").getMethod("getDecoder").invoke(null).decode("[BASE64_CHUNK]"))
|
此参数创建/将恶意软件段追加到以下文件:
.newInstance("/tmp/web-install.jar", true).
然后写入以下解码后的Base64块:
.write("".getClass().forName("java.util.Base64").getMethod("getDecoder").invoke(null).decode("[BASE64_CHUNK]")).
此技术用于防御规避——它使恶意软件在传输到系统时能够规避基于签名的检测和大小限制。总体而言,此技术结合了分块编码以进行规避和文件追加操作以进行重建。
恶意软件元数据
第1组
参见表1至表3以了解所分析恶意软件的元数据。
表1. 加载器1
| 字段 |
值 |
| 文件名 |
web-install.jar |
| 大小 |
30996 字节 |
| 类型 |
JAR |
| MD5 |
e33103767524879293d1b576a8b6257d |
| SHA1 |
c2046523f1cb487a473b0a46a5a4a957f1b3200a |
| SHA256 |
c1f60ca5a5f7b94ab7122718a44b46de16c69d22c2eb62ce2948cab14bc78d50 |
| SHA512 |
004b71ebeb4808b6dfdc4e58b95c4b307985c08118c45c02a34cd56ff697259199698989af0725d63802dfc785a72e416d2db5875edd1a0fa80ae01a282b2007 |
| ssdeep |
384:kaD+TLeDOl+mDcDFNUaD+TLeDOl+mDcDFNUaD+TLeDOl+mDcDFNUaD+TLeDOl+ms:z6Pl+mwj6Pl+mwj6Pl+mwj6Pl+mw3 |
| 熵值 |
7.951890 |
表2. ReflectUtil.class注入器恶意软件
| 字段 |
值 |
| 文件名 |
ReflectUtil.class |
| 大小 |
11886 字节 |
| 类型 |
已编译的Java类数据,版本49.0 |
| MD5 |
6ec2169312feb9fde0b17e244b32c37d |
| SHA1 |
6d7e85862f925e83f6d0c29e291765548fac721a |
| SHA256 |
065c1c2fb17ba1c3f882bead409215df612673cd455698768ed71412f9190ba3 |
| SHA512 |
4cd26b298b448db6b26d91b8cf7ac169d693a0dad4f184742463db872b809b91d462ab4659bb21474578e3202bfc92b0db18716db6b4c3c24b3f9e7f2fccce27 |
| ssdeep |
192:KuZ4E9i44LYcyHCi3uFl0xEHqQ+k5bUW0sbh3aUfPuS6GZz:Ku79BP/3uFygq49V0stKEuSpz |
| 熵值 |
6.258794 |
表3. SecurityHandlerWanListener.class恶意监听器
| 字段 |
值 |
| 文件名 |
SecurityHandlerWanListener.class |
| 大小 |
4690 字节 |
| 类型 |
已编译的Java类数据,版本49.0 |
| MD5 |
5e9d283b483b8d5c637baf7cfdda0e08 |
| SHA1 |
8b87a881f6f81afb596d3f98abef4225315e26bf |
| SHA256 |
b1b1cf33b8d3da35293d6b74c378f0cd9452a4351e26d07c896c4d9a8257ef89 |
| SHA512 |
07956b3a830bd0885202d9bc7a5b5a5927acf1c5584830ebc1011849f41b1077c3d6e3c2a6e94e36a338fc6b540c4b736751775e7069df4b257fa3786c1140a2 |
| ssdeep |
96:bFlm4Dt94EugELCBt+qRAVfOTqM8+U00RO:Blz94ExtlRAITqGQO |
| 熵值 |
5.690466 |
第2组
参见表4至表5以了解所分析恶意软件的元数据。
表4. 加载器2
| 字段 |
值 |
| 文件名 |
web-install.jar |
| 大小 |
8728 字节 |
| 类型 |
JAR |
| MD5 |
32f5c3c1582a77c004b1511c77454678 |
| SHA1 |
2a96ce17ed8a025dd72f3729c247dfdb5b0a19a4 |
| SHA256 |
b618057de9a8bba95440f23b9cf6374cc66f2acd127b3d478684b22d8f11e00b |
| SHA512 |
ec3880dfdc23a06cc1d97153963c3b0bd64db0469069e8dc3395101d12c65bcdcf87e5eac967ddf0b6be7e1dd6e8faaa233224f9f76a90f44f0e9df320d051a3 |
| ssdeep |
192:omBb/dSBuj9MLFgWfXsea1Xld+LXxzRlRX+pi+n9PshE6w0Tipbg8:j/T9MLFgWfcnVlSzspic9kCPxpB |
| 熵值 |
7.923820 |
表5. WebAndroidAppInstaller.class恶意监听器
| 字段 |
值 |
| 文件名 |
WebAndroidAppInstaller.class |
| 大小 |
16120 字节 |
| 类型 |
已编译的Java类数据,版本52.0 |
| MD5 |
8387a7ce9f2520d8956747fd247b19af |
| SHA1 |
9808ab3ddfb9ab4fe3af1b5d1f6a638bc03788e0 |
| SHA256 |
df501b238854d6579cafebeba82581a728e89ed1f6cd0da54c79ef4eb6f4f9fd |
| SHA512 |
a51943a8381e67aca4b8296c9df0b05450525b5b27efbf873fd54a7f68febb503e1eb088d287e3561137fd33d3772dd879a3f00b09285a67f215f7a420e7ffcd |
| ssdeep |
384:iI+1BxqQ3evK5c7aIUnKzaxckO05xiZMQn5JI3c+AK8:iImfqQ3z/nbax1 |
| 熵值 |
5.950145 |
恶意软件功能
第1组
这组恶意软件包含一个加载器、一个管理器和一个恶意监听器。
加载器1
加载器1是一个Java归档文件,它在运行时包含[T1027.009]并加载已编译的Java类文件ReflectUtil.class。
加载器1将ReflectUtil.class伪装成org.apache.http包的一部分[T1036]。ReflectUtil.class的分层文件路径见图1。
ReflectUtil.class管理器
ReflectUtil.class操纵Java对象以在Apache Tomcat(运行在同一受感染服务器上)中注入和管理恶意监听器SecurityHandlerWanListener。执行时,该文件:
- 绕过Java开发工具包模块限制。
- 迭代对象及其上下文。
- 尝试通过使用
getClassName()返回硬编码字符串org.junit.SecurityHandlerWanListener,在JUnit环境或框架中加载SecurityHandlerWanListener类[T1620]。
如果SecurityHandlerWanListener类因为ReflectUtil.class首次执行时未找到而未加载,ReflectUtil.class会通过使用Base64字符串catch块来处理错误,以Base64解码、gzip解压缩并加载SecurityHandlerWanListener类。
Base64字符串:
- 返回
SecurityHandlerWanListener类的Base64编码和gzip压缩的字节码。
- 通过以下两种方式之一解码和解压缩[T1140]类字节码:
- 首先使用
sun.misc.BASE64Decoder调用decodeBuffer。
- 如果第一次尝试失败,则使用
java.util.Base64调用getDecoder。
- 调用
ClassLoader的defineClass方法从解压缩的字节码加载类。
一旦SecurityHandlerWanListener类被加载,ReflectUtil.class:
- 创建该类的新实例并将其作为新监听器返回。
- 检索当前监听器列表,将新监听器添加到此列表,并更新应用程序的监听器列表。
- 检查
evilClassName是否已注入到应用程序的事件监听器列表中,以避免多次注入或确认先前的注入。
SecurityHandlerWanListener.class
这个已编译的Java类文件是一个恶意监听器,它拦截特定的HTTP请求并处理它们以解码和解密有效负载,这些有效负载会动态创建和执行一个新类。
该文件使用ClassLoader来设置一个自定义的servlet监听器,该监听器基于字符串Pass、Header Name和Header Values拦截HTTP请求[T1071.001]。具体来说,当收到新的HTTP请求时,servlet监听器检查请求是否包含字符串pass 7c6a8867d728c3bb、Header Name Referer和Header Value https://www[.]live.com。
如果字段匹配,该文件会创建一个HashMap来存储请求、响应和会话对象。该文件还会在会话中存储密钥7c6a8867d728c3bb。
然后,该文件检索、解码和解密Base64编码的有效负载:
- 该文件通过从请求的输入流中读取一行来检索有效负载(
request.getReader().readLine())。
- 该文件使用Base64解码该行。
- 该文件使用高级加密标准密码对象和存储的密钥解密解码后的数据。
该文件将解密后的数据传递给一个名为g的方法,该方法定义并创建一个新的Java类文件。网络威胁攻击者可以在设备上执行该类以运行任意代码。
潜在影响:此监听器可能允许网络威胁攻击者:
- 在服务器上注入和执行任意代码,从而实现后续活动和持久化。
- 通过拦截和处理HTTP请求来窃取数据。
第2组
这组恶意软件包含一个加载器和一个恶意监听器。
加载器2
这个JAR文件在运行时包含并加载已编译的Java类文件WebAndroidAppInstaller.class。
该JAR文件将类文件伪装成com.mobileiron.service包的一部分。WebAndroidAppInstaller.class的分层文件路径见图5。
WebAndroidAppInstaller.class
这个已编译的Java类文件是一个恶意监听器,它拦截和处理特定的HTTP请求,从请求中检索和解密密码参数,定义并加载一个新的恶意类,加密和编码新类的输出,并生成包含加密输出的响应。
监听器首先从Java ServletContext中检索请求和响应对象。然后,该文件检查请求的Content-Type,以确保其不为空且包含字符串application/x-www-form-urlencoded。
如果满足这些条件,该文件会从请求中检索一个密码参数。如果数据不为空且长度大于零,则密码参数值将使用带有硬编码密钥3c6e0b8a9c15224a的AES算法进行Base64解码和解密[T1573.001]。
如果解密后的数据不为空,则解密后的数据定义并实现一个新类。该文件使用相同的硬编码密钥3c6e0b8a9c15224a对新的类输出进行AES加密,然后进行Base64编码[T1027.013]。
然后,该文件生成存储在密码参数(来自初始HTTP请求)和硬编码密钥中的数据的消息摘要算法5哈希值,并检查该哈希值是否存储在新分配的字节数组ByteArrayOutputStream中。该文件创建一个PrintWriter对象来生成响应,其中包含计算出的MD5哈希值的前16个字符,然后是新的加载类的Base64编码和AES加密输出以及MD5哈希值的剩余部分。
潜在影响:此监听器可能允许网络威胁攻击者:
- 在服务器上注入和执行任意代码,从而实现后续活动和持久化。
- 通过接收响应和执行结果来窃取数据。
检测
YARA规则
部署表6中的CISA创建的YARA规则以检测恶意活动。
表6. YARA规则
加载器1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
rule CISA_251126_01 : trojan hides_artifacts
{
meta:
author = “CISA Code & Media Analysis”
incident = “251126”
date = “2025-07-23”
last_modified = “20250724_1615”
actor = “n/a”
family = “n/a”
capabilities = “hides-artifacts”
malware_type = “trojan”
tool_type = “unknown”
description = “Detects malicious jar filter samples”
sha256_1 = “c1f60ca5a5f7b94ab7122718a44b46de16c69d22c2eb62ce2948cab14bc78d50”
strings:
$s0 = { 6F 72 67 2F 61 70 61 63 68 65 2F 68 74 74 70 2F 63 6C 69 65 6E 74 }
$s1 = { 2F 77 6F 2F 52 65 66 6C 65 63 74 55 74 69 6C 2E 63 6C 61 73 73 }
$s2 = { 83 2E 9D 42 02 A3 81 42 02 B3 C7 57 34 C4 A8 21 }
$s3 = { 8C 8E C0 B6 14 0E 92 08 89 EE EB 1A 11 7D F4 4E }
$s4 = { 5B 97 FF F6 12 C9 16 F5 17 C8 5B 5F 44 0E 07 30 }
$s5 = { A9 21 59 ED 8E 7A 28 D6 29 FA E3 D0 4C 3D 0F CE }
$s6 = { 5A BD F7 24 E8 66 5F 07 2F 7C 0C 0E A9 E3 8D C5 }
$s7 = { 05 1B AE 97 B1 88 FF 01 16 EF 3F 44 9E 5F 43 AE }
condition:
all of them
}
|
ReflectUtil.class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
rule CISA_251126_02 : trojan
{
meta:
author = “CISA Code & Media Analysis”
incident = “251126”
date = “2025-07-23”
last_modified = “20250724_1615”
actor = “n/a”
family = “n/a”
capabilities = “n/a”
malware_type = “trojan”
tool_type = “unknown”
description = “Detects malicious servlet filter class loader samples”
sha256_1 = “065c1c2fb17ba1c3f882bead409215df612673cd455698768ed71412f9190ba3”
strings:
$s0 = { 6F 72 67 2F 61 70 61 63 68 65 2F 68 74 74 70 }
$s1 = { 63 6C 69 65 6E 74 2F 77 6F 2F 52 65 66 6C 65 63 74 55 74 69 6C }
$s2 = { 53 65 63 75 72 69 74 79 48 61 6E 64 6C 65 72 57 61 6E 4C 69 73 74 65 6E 65 72 }
$s3 = { 67 65 74 4C 69 73 74 65 6E 65 72 }
$s4 = { 61 64 64 4C 69 73 74 65 6E 65 72 }
$s5 = { 54 6F 6D 63 61 74 45 6D 62 65 64 64 65 64 43 6F 6E 74 65 78 74 }
$s6 = { 67 7A 69 70 44 65 63 6F 6D 70 72 65 73 73 }
$s7 = { 67 65 74 41 70 70 6C 69 63 61 74 69 6F 6E 45 76 65 6E 74 4C 69 73 74 65 6E 65 72 73 }
$s8 = { 73 65 74 41 70 70 6C 69 63 61 74 69 6F 6E 45 76 65 6E 74 4C 69 73 74 65 6E 65 72 73 }
$s9 = { 65 76 69 6C 43 6C 61 73 73 4E 61 6D 65 }
condition:
all of them
}
|
SecurityHandlerWanListener.class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
rule CISA_251126_03 : trojan installs_other_components exfiltrates_data
{
meta:
author = “CISA Code & Media Analysis”
incident = “251126”
date = “2025-07-23”
last_modified = “20250724_1615”
actor = “n/a”
family = “n/a”
capabilities = “installs-other-components exfiltrates-data”
malware_type = “trojan”
tool_type = “unknown”
description = “Detects malicious servlet filter class samples”
sha256_1 = “b1b1cf33b8d3da35293d6b74c378f0cd9452a4351e26d07c896c4d9a8257ef89”
strings:
$s0 = { 53 65 72 76 6C 65 74 52 65 71 75 65 73 74 4C 69 73 74 65 6E 65 72 }
$s1 = { 43 6C 61 73 73 4C 6F 61 64 65 72 }
$s2 = { 53 65 72 76 6C 65 74 52 65 71 75 65 73 74 45 76 65 6E 74 }
$s3 = { 2F 48 74 74 70 53 65 72 76 6C 65 74 52 65 73 70 6F 6E 73 65 }
$s4 = { 48 74 74 70 53 65 73 73 69 6F 6E }
$s5 = { 48 74 74 70 53 65 72 76 6C 65 74 52 65 73 70 6F 6E 73 65 }
$s6 = { 68 65 61 64 65 72 56 61 6C 75 65 }
$s7 = { 37 63 36 61 38 38 36 37 64 37 32 38 63 33 62 62 }
$s8 = { 70 61 73 73 }
$s9 = { 53 65 63 72 65 74 4B 65 79 53 70 65 63 }
$s10 = { 15 68 74 74 70 73 3A 2F 2F 77 77 77 2E 6C 69 76 65 2E 63 6F 6D 2F }
$s11 = { 52 65 66 65 72 65 72 }
condition:
all of them
}
|
加载器2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
rule CISA_251126_04 : trojan hides_artifacts
{
meta:
author = “CISA Code & Media Analysis”
incident = “251126”
date = “2025-07-23”
last_modified = “20250724_1615”
actor = “n/a”
family = “n/a”
capabilities = “hides-artifacts”
malware_type = “trojan”
tool_type = “unknown”
description = “Detects malicious jar Tomcat listener shell samples”
sha256_1 = “b618057de9a8bba95440f23b9cf6374cc66f2acd127b3d478684b22d8f11e00b”
strings:
$s0 = { 63 6F 6D 2F 6D 6F 62 69 6C 65 69 72 6F 6E 2F 73 65 72 76 69 63 65 2F }
$s1 = { 57 65 62 41 6E 64 72 6F 69 64 41 70 70 49 6E 73 74 61 6C 6C 65 72 2E 63 6C 61 73 73 }
$s2 = { 5A 5D BB 33 C0 43 31 B0 2D DC 58 F2 75 44 CE E5 }
$s3 = { 97 DC AC 0F A7 69 97 A4 5A 72 E8 96 AC 43 9E 01 }
$s4 = { E0 E0 7E 40 F3 F8 87 30 C5 83 30 C5 43 14 E7 67 }
$s5 = { DB E6 F7 F9 BD FC BE 75 00 BF 6F B3 59 B7 28 07 }
$s6 = { C6 BF A4 1D 28 AB 7A B9 3E 09 B1 D8 E2 FA 09 36 }
$s7 = { B8 0E 8E 0B 97 2D AE CF B4 B8 6E CD E5 E6 BA 92 }
condition:
all of them
}
|
WebAndroidAppInstaller.class
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
rule CISA_251126_05 : trojan installs_other_components exfiltrates_data
{
meta:
author = “CISA Code & Media Analysis”
incident = “251126_”
date = “2025-07-23”
last_modified = “20250724_1615”
actor = “n/a”
family = “n/a”
capabilities = “installs-other-components exfiltrates-data”
malware_type = “trojan”
tool_type = “unknown”
description = “Detects malicious Tomcat listener shell class samples”
sha256_1 = “df501b238854d6579cafebeba82581a728e89ed1f6cd0da54c79ef4eb6f4f9fd”
strings:
$s0 = { 43 6C 61 73 73 4C 6F 61 64 65 72 }
$s1 = { 6D 6F 62 69 6C 65 69 72 6F 6E 2F 73 65 72 76 69 63 65 }
$s2 = { 57 65 62 41 6E 64 72 6F 69 64 41 70 70 49 6E 73 74 61 6C 6C 65 72 }
$s3 = { 61 64 64 4C 69 73 74 65 6E 65 72 }
$s4 = { 73 65 72 76 6C 65 74 52 65 71 75 65 73 74 4C 69 73 74 65 6E 65 72 43 6C 61 73 73 }
$s5 = { 61 64 64 41 70 70 6C 69 63 61 74 69 6F 6E 45 76 65 6E 74 4C 69 73 74 65 6E 65 72 4D 65 74 68 6F 64 }
$s6 = { 62 61 73 65 36 34 44 65 63 6F 64 65 }
$s7 = { 63 6F 6E 74 65 6E 74 54 79 70 65 }
$s8 = { 08 72 65 73 70 6F 6E 73 65 }
$s9 = { 33 63 36 65 30 62 38 61 39 63 31 35 32 32 34 61 }
$s10 = { 6B 70 61 73 73 6C 6F 67 69 6E }
$s11 = { 53 65 72 76 6C 65 74 52 65 71 75 65 73 74 4C 69 73 74 65 6E 65 72 }
$s12 = { 53 65 63 72 65 74 4B 65 79 53 70 65 63 }
condition:
all of them
}
|
SIGMA规则
部署表7中的CISA创建的SIGMA规则以检测恶意活动。
表7. SIGMA规则
Ivanti移动管理系统加载器恶意软件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
## CISA Code & Media Analysis ##
## Edit rules and queries as needed for your hunt and based on your environment.
## Ensure your EDR/SIEM instance has enough memory to run these AND/OR condition-based queries. May take longer to run than conventional Sigma rule query.
## Do not edit “logsource-product:” unless you are editing this rule to meet specific logsources/fields and know your environment.
## TLP CLEAR may convert rules using online converter of choice.
###################################
title: Detects Artifacts Based on MAR-251126, Ivanti EPMM CVE-2025-4427 and CVE-2025-4428
incident: 251126
tlp: CLEAR
id: 83df757f-54e7-44a0-be21-ae2306ca3240
status: test
description: Detects abused URL paths and suspicious commands used by Threat Actors on Ivanti Endpoint Manger Mobile (EPMM). Based on MAR-251126 as well as Unauthenticated Remote Code Execution Vulnerabilities CVE-2025-4427 and CVE-2025-4428.
references:
- ‘MAR-251126’
- ‘https://projectdiscovery.io/blog/ivanti-remote-code-execution’
- ‘https://labs.watchtowr.com/expression-payloads-meet-mayhem-cve-2025-4427-and-cve-2025-4428/’
- ‘https://www.wiz.io/blog/ivanti-epmm-rce-vulnerability-chain-cve-2025-4427-cve-2025-4428’
- ‘https://threatprotect.qualys.com/2025/05/20/cisa-warns-of-ivanti-epmm-unauthenticated-remote-code-execution-vulnerabilities-cve-2025-4427-cve-2025-4428/’
- ‘https://profero.io/blog/ivanti-epmm-attacks’
- ‘https://github.com/rapid7/metasploit-framework/blob/26156dfac2e01379eb858a87aa85e2ecfea929ff/modules%2Fexploits%2Fmulti%2Fhttp%2Fivanti_epmm_rce_cve_2025_4427_4428.rb’
author: CISA Code & Media Analysis
date: 2025-08-08
modified: 2025-08-13
tags:
- cve.2025.4427
- cve.2025.4428
logsource:
product: cma
detection:
keywords:
- ‘GET’
keywords_1:
- ‘/api/v2/*’
keywords_2:
- ‘sh -i’
- ‘invoke’
- ‘java’
- ‘/dev/tcp/’
- ‘getRuntime’
- ‘.jar’
- ‘.class’
- ‘evilClassName’
- ‘ping’
- ‘dig’
- ‘curl’
- ‘wget’
- ‘fetch’
- ‘echo’
|