本帖最后由 Potato 于 2021-6-8 18:43 编辑
相关阅读:Maze勒索病毒家族详情,我是链接请点我!
一、 样本信息
文件名:Maze.exe
MD5:e3648731a36105980f5fae6b4afe614b
SHA1:85db743d14fbd83f893ec34dbdf57d0344e16156
二、 样本分析
Maze(迷宫)勒索病毒通过shellcode装载自身携带的EXE资源到自身进程内存空间,并跳转入口点执行,开始后续行为。被装载的EXE对自身文件进行了反反汇编处理,包括代码控制流平坦化、垃圾指令等手段。
1. 结束指定进程
开始执行后,病毒遍历当前所有活动进程,将进程名分别经过简单的移位和异或后,利用Alder32检验算法计算其校验值(初始值为0x29a)。计算结果和病毒携带的已有Alder32校验值进行比较,匹配成功即可确认目标,结束该进程。
结束的目标进程包括监控工具、编辑工具等相关进程,如Filddler.exe、procexp.exe、dumpcap.exe、WINWORD.exe、x32dbg.exe等,目的在于反跟踪、解除文件占用以便于文件加密等。病毒进行比较的部分校验值如下:
- 0x6B88060E、0x6c2e0614、0xE72E0886、0x606805D4、0x60D805D5、0x52F00567、0x78020640、0x873806BC
2. 地区避免
样本通过调用多个系统API(如GetUserDefaultUILanguage、GetSystemDefaultLangID)获取机器所使用的语言id。如果id在以下几种语言中直接退出进程,不对该机器进行加密。
- 419:Russian
- 422:Ukrainian
- 423:Belarusian
- 428:Tajik
- 42C:Azeri - Latin
- 437:Georgian
- 43F:Kazakh
- 440:Kyrgyz - Cyrillic
- 442:Turkmen
- 443:Uzbek - Latin
- 444:Tarta
- 818:Romanian - Moldova
- 819:Russian - Moldova
- 82C:Azeri - Cyrillic
- 843:Uzbek - Cyrillic
- 7C1A:Serbian
- 6C1A:Serbian – Cyrillic
- 1C1A:Serbian (Cyrillic, Bosnia and Herzegovina)
- 281A:Serbian (Cyrillic, Serbia)
- 81A:Serbian - Latin
3. UID&信息上传
UID的目的在于唯一地标识被加密用户,为16位16进制数。前8位数字是计算机名的校验值,采用Alder32校验算法,初始值为0x724;后8位数字为系统磁盘的序列号。如:99d409ac46b6749a,其中99d409ac为机器名校验值,46b6749a为系统磁盘序列号。
生成的UID还将被作为互斥量名进行创建,保证当前勒索病毒的进程单例执行。
搜集其他信息时,先通过WMI执行WQL语句查询当前操作系统中已安装的反病毒产品。
然后以GetLogicalDriveSrtings获取本地所有有效磁盘名,调用系统函数GetDiskFreeSpace获取每个磁盘空闲空间和总空间,以Mb为单位进行记录。类型为DRIVE_CDROM、DRIVE_RAMDISK的磁盘以’U’标记,DRIVE_REMOVABLE和DRIVE_REMOTE以’R’标记,DRIVE_FIXED则以’F’进行标记。如下图:
最后,病毒会创建一条线程,将UID、用户名、机器名、杀软产品、操作系统版本、本地磁盘空间使用情况等信息全部发送到多个远程服务器。发送的目标ip包括:
- 91.218.114.4
- 91.218.114.11
- 91.218.114.25
- 91.218.114.26
- 91.218.114.31
- 91.218.114.32
- 91.218.114.37
- 91.218.114.38
- 91.218.114.77
- 91.218.114.79
信息发送前,Maze使用非常规chacha对称加密算法(chacha算法变换阶段有20/12/8轮等多种实现方式,但根据分析当前样本在该阶段只进行了1轮变换),以及密钥83729304958372930dhejskrlt9483s加密数据。
发送的请求为POST类型。URI中除目标ip外,路径、文件名后缀以及各个参数全部通过在多个字符串中随机抽取和拼接后发送。
4. 用户MAZE KEY&卷影删除
(1) 生成用户RSA公私钥
成功生成并导出用户RSA公私钥后,使用API CryptGenRandom生成32字节随机Key,8字节随机Nonce值。通过非常规chacha对称加密算法、随机Key和Nonce加密用户RSA私钥sk_user。
接着程序导入攻击者RSA公钥(2048-bit),加密上面的chacha使用的随机Key。使用同样的方式加密随机Nonce。
加密Key和Nonce后的数据共512字节,追加于被加密的用户RSA私钥sk_user后方。三者共1960字节数据,再拼接上之前被上传的信息(UID、用户名、机器名等),经Base64后作为勒索信息提示文件中MAZE KEY位置的数据。
(2) 调用Wmic删除卷影
之后Maze调用wmic.exe执行命令”shadowcopy delete”删除卷影,防止所有文件加密之后管理员通过文件备份完成数据的恢复。
调用wmic.exe程序时,病毒将调用路径进行了简单的混淆,以降低该行为被检测到的可能。
5. 搜索文件进行加密
Maze病毒会为网络资源和每个本地目标磁盘创建一条线程进行文件的搜索和加密。本地磁盘目标类型包括3种:可移动磁盘(DRIVE_REMOVABLE)、固定磁盘(DRIVE_FIXED)、网络磁盘(DRIVE_REMOTE)。
搜寻过程中,避过含有以下字符串的路径:
- \\Program Files
- :\\windows
- \\Games\\
- \\Tor Browser\\
- \\ProgramData\\
- \\cache2\\entries\\
- \\Low\\Content.IE5\\
- \\User Data\\Default\\Cache\\
- \\All Users
- \\IETldCache\\
- \\Local Settings\\
- \\AppData\\Local
- AhnLab
- {0AFACED1-E828-11D1-9187-B532F1E9575D}
不加密以下文件:
- DECRYPT-FILES.txt
- autorun.inf
- boot.ini
- desktop.ini
- ntuser.dat
- iconcache.db
- bootsect.bak
- ntuser.dat.log
- thumbs.db
- Bootfont.bin
不加密的文件类型:
另外,因为Maze病毒在加密完成指定文件后会在其尾部追加4个字节”\x66\x11\x61\x66”,所以符合这个条件的文件将被避免二次加密。
6. 文件加密方式
同样是利用CryptGenRandom生成chacha随机Key(32字节)和Nonce值(8字节)。结合chacha对称加密算法对文件内容进行加密。
读取文件内容进行加密时,小于等于5Mb的文件,其内容一次全部映射到内存进行加密;大于5Mb的文件则是每次读取1Mb内容到内存进行加密。
完成文件内容加密后,利用生成的用户RSA公钥pk_user加密文件加密时使用的Key和Nonce共40字节。加密结果256字节连接字节流”\x00\x00\x00\x00\x66\x11\x61\x66”后作为文件尾部写入文件。
最后为文件添加随机扩展名,长度在4-8字节之间随机选择,每个字符从大小写字母和数字字符中随机选取。
文件加密流程以及加密后文件结构如下图:
7. 勒索信息提示
待加密文件全部完成加密后,病毒将会修改桌面壁纸以提醒用户。
每个被加密的目录下都会被留下一个勒索信息提示文件DECRYPT-FILES.txt。
被加密用户首次可以免费解密3个文件,以确保黑客可以解密文件。MAZE KEY数据则作为解密使用(含有用户RSA私钥),不可丢失。
除此之外,病毒还会尝试通过语音提醒用户,内容为:<UserName>! Alert!<UserName>! Alert! Dear<UserName> Your files have been encrypted by Maze! Attention! You need to buy decryptor in order to restore the files
|
评论
直达楼层