【病毒分析】从无解到破解:Mallox家族linux版本的分析以及解密器的制作

1.背景

Mallox勒索软件首次出现于2021年5月,并在2021年10月扩展到中国市场。截至2024年,它仍然活跃。Mallox通过加密受害者文件并要求支付赎金来恢复数据,使用唯一的加密密钥加密文件,受害者的文件通常会添加“.mallox”或“.malox”等扩展名。同时,它会在每个受感染的文件夹中生成勒索信,命名为“FILE RECOVERY.txt”,要求受害者通过比特币或门罗币支付赎金以获得解密工具。

1.2 技术特征

Mallox勒索软件的加密算法通常是ChaCha20或AES,具体取决于攻击的目标系统。它会生成唯一的密钥和IV(初始化向量)来控制文件加密过程。此外,Mallox通过多种方式规避检测,例如使用MSBuild注入恶意代码,从而绕过杀毒软件的监控。它还利用反射加载技术,直接将恶意代码注入内存中,避免在磁盘上留下明显的痕迹。Mallox专门针对Microsoft SQL Server等数据库系统,通过终止关键数据库进程如sqlserv.exemysql.exe,并加密备份文件。

1.3 联系方式与文件后缀

在对Mallox勒索家族的信息收集中,我们发现该家族的勒索信通常提供多种联系方式,包括早期的邮箱地mallox.resurrection@onionmail.org,而近期则更改为mallox@onionmail.org

除了电子邮件,Mallox主要通过自建的暗网网站(TOR)进行联系。该暗网平台包含三个页面:登录页谈判页数据泄露页

  1. 登录页:勒索信中提供TOR地址,受害者通过输入勒索信中的唯一ID访问,验证后会跳转至谈判界面,未获取ID的用户无法访问谈判页面。

  2. 谈判页:此页面包含受害者ID、数据公开状态、赎金金额、折扣金额、黑客的比特币钱包地址以及聊天窗口。受害者可以通过聊天窗口与黑客沟通,进行文件测试传输或讨价还价。

  3. 数据泄露页:展示部分受到Mallox家族攻击的知名公司,通常这些公司市值较高。每个受害者展示框包含公司名称、简介以及数据泄露的详细信息。点击“View”按钮后,受害者的详细信息页面会显示公司名称、详细介绍、赎金金额和被勒索的数据量等关键信息。

常见的加密文件后缀包括.mallox、.rmallox、.lmallox和.malloxx,这些后缀随着不同变种的演进而使用。

图片

登录页

图片

谈判页

图片

数据泄露页

2. 恶意文件基础信息

2.1 加密器基本信息

文件名:lmallox勒索病毒加密器
编译器:
大小:26936(26.30 KiB)
操作系统:Ubuntu Linux(20.04.2,ABI: 3.2.0)
架构:AMD64
模式:64 位
类型:DYN
字节序:LE
MD5:8d0fd41d35df82d3e7e2ff5c1747b87c
SHA1:93ef3578f9c3db304a979b0d9d36234396ec6ac9
SHA256:f4b64976d7dcb04466f0a89d81cd2eb158158c752c042ec248549415799965bf

2.2 勒索信

READ_THIS_NOW.txt

======================================={ Mallox v1.0 }======================================1. What happened?Your computer has been breached, and your important files have been stolen and encrypted.
You no longer have access to any of these files.2. What can you do?Not much. Any attempt to recover your files by yourself will very likely fail, and could 
result in permanent destruction of your data in a way even we won't be able to recover.3. How can we help?We will provide you with a decryption tool that will automatically decrypt your files, and
we will delete all copies of your stolen files from our server. But you will need to make a
small payment to the address listed below. Once you do, you can contact us on either Tox or
Session chat with your client ID to get the decryption tool. You can easily find instructions
on how to buy bitcoin (BTC) or monero (XMR) through google.If you don't make this payment before the deadline listed below, your decryption fee will
be doubled, or we will simply delete your decryption key from our server, making your files
unrecoverable. We will also publish all your private data that we obtained.PAYMENT INFORMATION~~~~~~~~~~~~~~~~~~~Client ID:  BTC Address:  18CUq89XR81Y7Ju2UBjER14fYWTfVwpGP3Amount (USD):  $ 5.0Deadline:  21:07:24 27/04/2024 GMT (72.0 hours)Tox chat ID:  290E6890D02FBDCD92659056F9A95D80854534A4D76EE5D3A64AFD55E584EA398722EC2D3697==============================================================================================

2.3 其他注意事项

分析的样本中加密器与解密器不配套,但patch部分数据后即可搭配使用,后文将详细解释

3. 加密后文件分析

3.1 威胁分析

病毒家族mallox
首次出现时间/捕获分析时间

2024/10/14 || 2024/10/14

威胁类型勒索软件,加密病毒
加密文件扩展名.lmallox
勒索信文件名READ_THIS_NOW.txt
有无免费解密器?
联系邮箱
检测名称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.lmallox)。桌面上会显示一条勒索要求消息。网络犯罪分子要求支付赎金(通常以比特币)来解锁您的文件。
感染方式受感染的电子邮件附件(宏)、恶意广告、漏洞利用、恶意链接
受灾影响所有文件都经过加密,如果不支付赎金就无法打开。其他密码窃取木马和恶意软件感染可以与勒索软件感染一起安装。

加密的测试文件为sierting.txt,具体内容如下

图片

图片

经过lmallox勒索病毒加密器加密之后如下

图片

文件的大小固定增加了16Byte,经过多次实验结果仍然相同,因为其加密算法原因,会有涉及填充问题,所以会不定长再增加0~15Byte。

4. 逆向分析

整体执行流程图:

图片

4.1 删除自身

该程序在入口函数处就会调用unlink函数实现对自身的删除

图片

4.2 初始化加密配置信息

4.2.1 整体配置信息
{"about": "test file", "amount": 5.0, "arch32": false, "bitcoin": "18CUq89XR81Y7Ju2UBjER14fYWTfVwpGP3", "deadline": 72.0, "debug": false, "demo": false, "extension": ".lmallox", "ignore": [".bashrc", ".bash_aliases", ".profile", ".ssh"], "iv": "7qArgITGOciJGUeY/yurPw==", "jobs": 39, "key": "qpXpTLg079B9rOeTDwL++fCGYlhA9ik/g6iEKq/XAQs=", "maxsize": "", "monero": "", "name": "server 03", "nolog": false, "nonote": false, "note": "======================================={ Mallox v1.0 }======================================\r\n\r\n1. What happened?\r\n\r\n    Your computer has been breached, and your important files have been stolen and encrypted.\r\nYou no longer have access to any of these files.\r\n\r\n2. What can you do?\r\n    \r\n    Not much. Any attempt to recover your files by yourself will very likely fail, and could \r\nresult in permanent destruction of your data in a way even we won't be able to recover.\r\n\r\n3. How can we help?\r\n\r\n    We will provide you with a decryption tool that will automatically decrypt your files, and\r\nwe will delete all copies of your stolen files from our server. But you will need to make a\r\nsmall payment to the address listed below. Once you do, you can contact us on either Tox or\r\nSession chat with your client ID to get the decryption tool. You can easily find instructions\r\non how to buy bitcoin (BTC) or monero (XMR) through google.\r\n\r\n    If you don't make this payment before the deadline listed below, your decryption fee will\r\nbe doubled, or we will simply delete your decryption key from our server, making your files\r\nunrecoverable. We will also publish all your private data that we obtained.\r\n\r\n\r\n                                    PAYMENT INFORMATION\r\n                                    ~~~~~~~~~~~~~~~~~~~\r\n\r\n        Client ID:  7cc49d60f71e4ca4\n      BTC Address:  18CUq89XR81Y7Ju2UBjER14fYWTfVwpGP3\n     Amount (USD):  $ 5.0\n         Deadline:  21:07:24 27/04/2024 GMT (72.0 hours)\n      Tox chat ID:  290E6890D02FBDCD92659056F9A95D80854534A4D76EE5D3A64AFD55E584EA398722EC2D3697\n\r\n\r\n==============================================================================================\r\n", "note_name": "READ_THIS_NOW.txt", "persist": false, "recommend": false, "secdel": false, "session": "", "static": false, "symbols": false, "target_id": "7cc49d60f71e4ca4", "targets": ["/home", "/root", "/var/www", "/var/lib/mysql", "/var/log", "/var/mail", "/opt", "/media", "/mnt", "/srv"], "tox": "290E6890D02FBDCD92659056F9A95D80854534A4D76EE5D3A64AFD55E584EA398722EC2D3697", "verbose": false, "xor_key": 155}
4.2.2 执行流程

1.程序在入口函数处,首先会先执行init_config函数,来实现对加密所需的配置信息的初始化等操作

图片

2.深入分析init_config函数,发现存在多处异或函数,分别都是与0X9B进行异或,还有base64解码与aes解密等操作。

图片

3.通过对内容进行分析,发现off_开头的硬编码的内容中保存着所有的配置所需的信息

图片

4.基本流程就比较清晰了,首先该函数会对两端数据进行异或,即获得对应AES的KEY和IV,之后对Base的数据进行Base64_Decode,再进行xor_0x9b,最后利用刚才解密的Key和Iv对xor后的数据进行解密即可。

图片

5.这里可以手动的去编写一个脚本来实现对这部分数据的解密,这里选择最长的那一串内容。

图片

可以看到最长的这一串被解密出来了,是勒索信的内容。

图片

之后其他的数据有依旧如此。

4.3 文件遍历

4.3.1 执行流程

1.该程序只会遍历运行系统中指定的目录

4.3.2 指定目录
"/home", "/root", "/var/www", "/var/lib/mysql", "/var/log", "/var/mail", "/opt", "/media", "/mnt", "/srv"

图片

2.一共十个路径,之后启动多线程,创建十个进程,来调用start_routine函数,实现遍历每一个指定路径下的内容,遍历通过find_deep_path函数实现。

图片

3.在遍历时,会先判断该路径是否可写

图片

4.读取该路径的子目录后,如果遇上子目录中有'.'或者'..'的,则不处理

图片

5.在读取到一个子路径后,会对其进行绝对路径的完整拼接,然后对其进行校验,如果路径中存在如下内容则不处理。

4.3.3 不加密的路径
".bashrc", ".bash_aliases", ".profile", ".ssh"

图片

完成校验通过之后,则会对当前路径的类型进入判断,如果是目录的话则进行递归遍历,如果是文件的话,则会检查,是否有可写权限,并且还会检查文件的末尾是否是.lmallox结尾,如果都符合则加入到v14这个待加密列表中,用于后续的加密函数的使用。

图片

4.4 文件加密

4.4.1 流程图

图片

4.4.2 加密文件结构

因为采用了AES加密,需要满足每次加密的数据块的大小最小为16字节,故需要填充,所以就会有下面的填充字节。

图片

4.4.3 执行流程

1.当完成了前面对于指定目录的遍历后,获得了完整的可加密的文件内容列表,之后则开启多线程,调用encrypto_thread函数对其中的文件进行加密。

图片

2.加密的流程也比较简单,首先会获取两个IO流,一个是原始文件的,用于数据的读取,一个是加密文件的,用于加密数据的写入。

图片

3.接着会调用RAND_bytes随机数函数生成一个16字节的IV,用于后续的加密,并且会先将其写入到加密文件的开头。

图片

4.开始加密,加密结束后则关闭两个IO流,并且会将原始文件删除掉。

图片

5.加密核心算法采用的就是个简单的AES,并且加密的长度是全加密,并未对文件的后缀进行校验选择等。

图片

6.加密结束后,我们就可以在系统内看到被加密的文件了。

图片

4.5 勒索信写入

4.5.1 执行流程

1.这部分流程比较简单,首先会判断勒索信的路径是否是‘/’,如果是则写入。

图片

2.如果不是则获取write_ransomware_note_path_list列表中的路径,

并且在该路径下写入勒索信。

图片

5.病毒分析概览

Mallox勒索病毒在执行时,首先删除自身文件,接着初始化加密配置信息,配置数据通过异或和AES解密方式还原。它会遍历系统中特定目录,加密符合条件的文件,并排除如.bashrc和.ssh等文件。每个文件使用随机生成的IV进行AES全盘加密,完成后删除原文件。加密过程采用多线程并行执行,保证效率。同时,勒索信会写入多个指定目录,通知受害者支付赎金以获取解密工具。整体流程展现了精确的目录控制和加密机制。

Mallox家族linux的解密器制作

1.背景

本篇文章主要讲解mallox家族lmallox勒索病毒的破解方法,背景详情可参考本文上述内容

2.恶意文件基础信息

2.1 加密器基本信息

文件名:encrypto
大小:26936(26.30 KiB)
操作系统:Ubuntu Linux(20.04.2,ABI: 3.2.0)
架构:AMD64
模式:64 位
类型:DYN
字节序:LE
MD5:8d0fd41d35df82d3e7e2ff5c1747b87c
SHA1:93ef3578f9c3db304a979b0d9d36234396ec6ac9
SHA256:f4b64976d7dcb04466f0a89d81cd2eb158158c752c042ec248549415799965bf

3.逆向分析

加密算法分析:

这里直接从文件的加密部分开始分析,sub_364A函数部分可以看到该程序加密的开始

图片

进入到sub_2cd7函数可以看到具体所采用的加密算法等信息

图片

从该函数可以了解到,整体的文件数据的加密采用了AES的加密算法,CBC的加密模式。

解密思路:

解密需要获取到他的加密KEY和IV,其中IV的部分我们上面已经了解到,IV是随机生成的,并且写入到了文件的开头部分,而加密所需的KEY就是解密配置所使用的KEY。

解密核心代码:

func decode_file(wg *sync.WaitGroup, path string) bool {    defer wg.Done()    hexKey := "310e72d723af744be6377c08949965626b1df9c3db6db2a418331fb1344c9a90"    key, err := hex.DecodeString(hexKey)    key = xor0x9b(key)    cipherText, err := ioutil.ReadFile(path)    if err != nil {       log.Fatalf("Error reading file: %v", err)       return false    }    iv := cipherText[:16]            // First 16 bytes for IV    encryptedData := cipherText[16:] // Remaining part is encrypted data    block, err := aes.NewCipher([]byte(key))    if err != nil {       log.Fatalf("Error creating cipher: %v", err)       return false    }    mode := cipher.NewCBCDecrypter(block, iv)    decrypted := make([]byte, len(encryptedData))    mode.CryptBlocks(decrypted, encryptedData)    decrypted = pkcs7Unpad(decrypted)    if decrypted == nil {       return false    }    outputpath := strings.Replace(path, ".lmallox", "", 1)    err = ioutil.WriteFile(outputpath, decrypted, 0644)    if err != nil {       log.Fatalf("Error writing decrypted data to file: %v", err)    }    fmt.Printf("[+]文件: %s 解密成功!!\n", path)    os.Remove(path)    return true }

解密结果:

图片

工具下载地址

splar应急响应团队公众号

回复关键字【lmallox】获取下载链接

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/57085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【LeetCode每日一题】——862.和至少为 K 的最短子数组

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 前缀和 二【题目难度】 困难 三【题目编号】 862.和至少为 K 的最短子数组 四【题目描述】 …

容器化核心快速入门

概述 物理机:好比是独立的大船,独立发动机,独立船舱。所有资源共用。运水果的同时就不能运鱼( 1964年)虚拟机:相当于把大船进行改造,把大船的资源进行独立的拆分,独立的部分都有单独…

适合自己的才行-这五款项目管理软件工具帮你提高管理效能

凭借多年项目管理经验,我试用过数十款国内外项目管理软件。我认为,操作简便性至关重要,因为软件仅是辅助管理工具,复杂性若影响管理本质,则得不偿失。 在生产管理方面,我专注于新产品从立项到研发的全过程…

【网络原理】HTTPS

目录 前言 为什么要使用HTTPS? HTTPS是如果进行加密的 1.对称加密 2.非对称加密 中间人攻击 3.证书 中间人有没有可能篡改证书? 中间人有没有可能整个调包证书? 前言 在上一篇中,我们讲解了什么是HTTP,但是在…

现代数字信号处理I--最佳线性无偏估计 BLUE 学习笔记

目录 1. 最佳线性无偏估计的由来 2. 简单线性模型下一维参数的BLUE 3. 一般线性模型下一维参数的BLUE 4. 一般线性模型下多维参数的BLUE 4.1 以一维情况说明Rao论文中的结论 4.2 矢量参数是MVUE的本质是矢量参数中的每个一维参数都是MVUE 4.3 一般线性模型多维参数BLUE的…

[简易版] 自动化脚本

前言 uniapp cli项目中没办法自动化打开微信开发者工具,需要手动打开比较繁琐,故此自动化脚本就诞生啦~ 实现 const spawn require("cross-spawn"); const chalk require("picocolors"); const dayjs require("dayjs&quo…

牛客网刷题(1)(java之数据类型、数组的创建(静态/动态初始化)、static关键字与静态属性和方法、常用的servlet包、面向对象程序设计方法优点)

目录 一、Java变量的数据类型。 <1>Java中变量的数据类型。 <2>基本数据类型。 <3>引用数据类型。 二、Java中一维数组的初始化。&#xff08;静态、动态初始化&#xff09; <1>数组。 <2>动态初始化。 <3>静态初始化。 三、看清代码后&am…

Cesium基础-(Entity)-(Billboard)

里边包含Vue、React框架代码 2、Billboard 广告牌 Cesium中的Billboard是一种用于在3D场景中添加图像标签的简单方式。Billboard提供了一种方法来显示定向的2D图像,这些图像通常用于表示简单的标记、符号或图标。以下是对Billboard的详细解读: 1. Billboard的定义和特性 B…

模型训练识别手写数字(一)

一、模型训练数据集 1. 导入所需库 import numpy as np from sklearn.datasets import fetch_openmlnumpy 是用于数值计算的库。 fetch_openml 是用于从 OpenML 下载数据集的函数。 2. 获取 MNIST 数据集 X, y fetch_openml(mnist_784, version1, return_X_yTrue)fetch_ope…

LeetCode算法(双指针)

今天的题目主要都是力扣前100中&#xff0c;关于双指针的题 1.移动零 链接&#xff1a;移动零 示例&#xff1a; 示例 : 输入: nums [0,1,0,3,12] 输出&#xff1a;[1,3,12,0,0] 可以看到保持原有元素的顺序&#xff0c;将所有的0&#xff0c;移动到数组最后方即可。 这…

开源项目工具:LeanTween - 为Unity 3D打造的高效缓动引擎详解(比较麻烦的API版)

1.LeanTween.reset() 一、工具介绍 参考&#xff1a;推荐开源项目&#xff1a;LeanTween - 为Unity 3D打造的高效缓动引擎-CSDN博客 LeanTween是一个专为Unity 3D引擎设计的高效缓动&#xff08;tweening&#xff09;库&#xff0c;它提供了简单易用的API&#xff0c;帮助开…

ctfshow(175->178)--SQL注入--联合注入及其过滤

Web175 进入界面&#xff1a; 审计&#xff1a; 查询语句&#xff1a; $sql "select username,password from ctfshow_user5 where username !flag and id ".$_GET[id]." limit 1;";返回逻辑&#xff1a; if(!preg_match(/[\x00-\x7f]/i, json_enc…

数据结构(8.4_3)——堆的插入删除

在堆中插入新元素 在堆中删除元素 总结&#xff1a;

Linux:权限的深度解析(小白必看!!!)

文章目录 前言一、Linux重要的几个热键二、关机三、扩展命令总结四、shell命令以及运行原理感性理解五、Linux权限的概念1. 权限的概念2. 认识人&#xff08;用户&#xff09;1&#xff09;创建人2&#xff09;人分类3&#xff09;人切换4&#xff09;指令提权 3. ll下文件的权…

一些待机电流波形特征

一、待机电流波形 最干净的待机电流波形应该只有paging&#xff0c;不过需要注意2点&#xff1a; 每个paging的间隔&#xff0c;不同网络可能不一样&#xff0c;有可能是320ms, 640ms 待机网络 paging 间隔 1分钟的耗电量 单个耗电量 单个待机电流 单个波形时长 4G 64…

二十三、Python基础语法(包)

包(package)&#xff1a;包是一种组织代码的方式&#xff0c;可以将相关的模块组合在一起&#xff0c;以便更好地管理和重用代码&#xff0c;包的目录中有一个特殊代码文件__init__.py&#xff0c;包的命名也要遵循标识符的规则。 一、包的结构 一个 Python 包通常是一个包含…

NLTK无法下载?

以下内容仅为当前认识&#xff0c;可能有不足之处&#xff0c;欢迎讨论&#xff01; 文章目录 nltk无法下载怎么办&#xff1f;什么是NLTK&#xff1f;为什么要用NLTK&#xff1f;如何下载&#xff1f; nltk无法下载怎么办&#xff1f; 什么是NLTK&#xff1f; NLTK是学习自然…

python项目实战——多协程下载美女图片

协程 文章目录 协程协程的优劣势什么是IO密集型任务特点示例与 CPU 密集型任务的对比处理 I/O 密集型任务的方式总结 创建并使用协程asyncio模块 创建协程函数运行协程函数asyncio.run(main())aiohttp模块调用aiohttp模块步骤 aiofiles————协程异步函数遇到的问题一 await …

代码随想录跟练21天——LeetCode332.重新安排行程, 51. N皇后,37. 解数独

332.重新安排行程 力扣题目链接(opens new window) 给定一个机票的字符串二维数组 [from, to]&#xff0c;子数组中的两个成员分别表示飞机出发和降落的机场地点&#xff0c;对该行程进行重新规划排序。所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出…

【Python可视化系列】一文教你绘制双Y轴的双折线图(案例+源码)

这是我的第369篇原创文章。 一、引言 在日常工作和学习中&#xff0c;我们会遇到将两个折线画在一张图上的情况&#xff0c;且这两个折线代表了两个特征&#xff0c;具有不同的涵义和量纲表示&#xff0c;这时候我们就需要绘制一个双Y轴折线图&#xff0c;一边代表一个特征&…