请使用手机微信扫码安全登录

切换账号密码登录

绑定手机号

应国家法规对于账号实名的要求,请您在进行下一步操作前,需要先完成手机绑定 (若绑定失败,请重新登录绑定)。了解更多

不绑定绑定手机号

360官网 | 360商城

推荐论坛版块活动360粉丝商城众测粉丝轰趴馆常见问题
相关阅读:
LockBit2.0勒索病毒样本分析
LockBit勒索病毒家族详情


  Lockbit3.0是继Lockbit2.0后的新一版本,其延续了2.0版本需要参数启动的特性,包括了自脱壳、反调试、绕过UAC、多线程加密等操作,而且在Lockbit3.0中存在有BlackMatter代码的一些复用。本文分析的样本来自vx-underground:

360社区

360社区


自脱壳、解析API以及反调试
Lockbit3.0不同于2.0版本,该样本没有再继续使用PECompact进行加壳:

360社区

360社区


而是使用了自定义的壳对其.text|.data|.pdata进行加壳,并在样本开始运行时就完成对自脱壳,接着程序才能正常运行:

360社区

360社区


待程序自脱壳后,第二步需要通过动态加载DLL的方式加载所需API,并将API地址填入分配的地址中,该过程加载了非常多的DLL,也可以作为绕过沙箱检测的一种手段:

360社区

360社区


接下来通过使用未导出函数实现了两种反调试手段:
1.        第一种通过设置线程状态来实现对调试器隐藏。

360社区

360社区


2.        第二种则通过对一个关键API打补丁来绕过调试器。

360社区

360社区



解码配置、检查权限并释放图标文件
接下来的操作有解码.pdata中的配置信息,检查默认语言,管理员权限以及系统版本等操作:

360社区

360社区


配置信息使用了APLib进行压缩,解压缩后中除了包含RSA公钥、0x20长度的空白以及0x18长度的掩码(用于一些判断语句的执行)之外,还包括自定义Base64的编码数据:

360社区

360社区


经过解码后,这些Base64中包含了目录白名单Hash、文件白名单Hash、扩展白名单Hash、需要结束的进程列表、需要关闭的服务列表以及勒索信息等内容。
在生成勒索信息时,取RSA公钥的前八个字节+随机生成的八字节做为个人ID。

360社区

360社区


解码配置信息后,接着检查系统安装的默认语言,并且判断是否在其免加密语言列表中,与2.0不同的是多了三种语言区域(1092:鞑靼语;2072:罗马尼亚语-摩尔多瓦;10241:阿拉伯语 - 叙利亚):

360社区

360社区


接着检查如果没有管理员权限并且系统版本为Win7/WinSer08 R2及以上版本,则通过COM进行提权操作,值得一提的是其对系统API的调用都使用了跳板:

360社区

360社区


获得管理员权限后,通过取RSA公钥的MD5,并进行Base64编码,取前8字节作为扩展名,如果有非数字和字母则进行替换(+ x,/ i,= z),在获得随机扩展名后生成ReadMe文件名,然后复制Explorer.exe的令牌,用于之后绕过UAC:

360社区

360社区


然后样本向C:\ProgramData\目录下写入HLJkNskOq.ico文件,并且创建注册表来关联所有HLJkNskOq后缀的文件:

360社区

360社区


360社区

360社区


关联之后更新Windows 相应设置,使所有HLJkNskOq后缀文件都使用该图标。
创建线程关闭相关服务与进程
在进入勒索加密主函数之前,需要设置Mutex保证只有一个勒索程序运行:

360社区

360社区


接着进入主函数中,首先是关闭一系列服务与程序,并删除回收站和卷影文件:

360社区

360社区


  • 创建线程删除WinDefend、wscsvc、sppsvc等Windows服务(Hash对比)
  • 创建线程删除回收站文件夹中C:\$Recycle.Bin\匹配S-*的所有文件
  • 创建线程删除利用WMI删除卷影文件
  • 主线程枚举并删除vss|sql|svc$|memtas等服务(与2.0相同)
  • 创建线程终止sql|oracle|ocssd|dbsnmp|synctime等进程(与2.0相同)

创建多线程加密
在关闭相关服务与进程后,创建多线程用于等待加密,创建的线程数 = 处理器内核总数 * 2 + 1,并且创建IO端口用于协作加密:

360社区

360社区


创建好加密线程后通过三种方式对文件进行检索和加密,每种模式加密都会生成不同的密钥:
  • Exchange邮件服务上的文件
  • 本地磁盘的文件
  • 所在域上的文件


360社区

360社区



以本地磁盘上的文件加密为例,它会递归地遍历整个磁盘上的文件,并且根据三步来判断当前文件是否需要加密:

360社区

360社区


1.        如果当前文件不是当前目录(.)、上一层目录(..)、系统文件、隐藏文件,则进行第2步判断。
2.        如果当前文件是文件夹,则通过文件夹名称Hash比对来判断是否存在于白名单中,如果不在,则将该文件夹加入要遍历的文件夹数组中。
3.        如果当前文件是文件,则需要分别判断其名称和扩展的Hash是否存在于白名单中,接着判断文件大小是否为0,最后判断是否为ReadMe文件,如果都不是,则该文件将会被加密。
Lockbit加密时对于每个文件的加密都有各自的密钥,所以加密之前需要生成固定的加密结构体:

360社区

360社区



在得到加密结构体后,多个加密线程就可以交替启动进行文件的加密了,加密线程会先将自己的优先级提高:

360社区

360社区


加密线程根据得到的加密结构体偏移0x28的值来决定当前执行的操作,该处的值有以下四种:
  • 0(读取):表示线程需要根据偏移0x398处值向0x39C读入相应大小的文件内容,然后将偏移0x28的值修改为1,当文件内容读取完后会修改为2。
  • 1(加密):使用偏移0x318解密后的128字节密钥对文件内容进行加密,加密文件内容后对该128字节密钥再次加密,加密轮数减1,通过判断加密轮数为0时则会将模式修改为2,否则将模式修改为1继续读取文件内容。
  • 2(末尾信息):将解密文件所需的内容追加到文件末尾,然后将模式修改为3,准备结束加密过程。
  • 3(结束):结束当前文件的加密。

综上,其加密流程为下图所示:

360社区

360社区


计算校验和的算法与下述的BlackMatter校验和算法一致:
https://gist.github.com/Demonsla ... b505a243b388b7278fa

360社区

360社区



清除日志并启动新进程
在所有文件都被加密之后,Lockbit会通过遍历以下两个注册表项的内容来完成日志清除工作:
        SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels
        SYSTEM\CurrentControlSet\Services\EventLog

360社区

360社区


同时还会删除EventLog相关的服务。
最后绘制并修改桌面背景为Lockbit勒索背景:

360社区

360社区



然后在C:\ProgramData\目录下写入文件470A.tmp(文件名随机生成,该文件以同样的方式加壳,需经过Lockbit脱壳才能运行)并启动进程,该进程主要负责删除原文件,并在多次修改文件名(将文件名丛A-Z修改一遍再进行删除,删除回收站文件时使用相同的方法),最终移动到C:\F3531C73\4777.tmp。

360社区

360社区





共 4 个关于LockBit 3.0勒索病毒样本分析的回复 最后回复于 2023-1-31 14:16

评论

直达楼层

360fans_uid51606131 LV1.上等兵 发表于 2022-8-11 11:33 | 显示全部楼层 | 私信
是否可以解密?
Potato 产品答疑师 楼主 发表于 2022-8-12 10:50 | 显示全部楼层 | 私信
pass
360fans_gadQuD LV2.下士 发表于 2022-10-11 13:50 | 显示全部楼层 | 私信

IP属地: 未知

这个可以解密了吗?
诺诺呀 LV1.上等兵 发表于 2023-1-31 14:16 | 显示全部楼层 | 私信

IP属地: 广东省

这种肯定都是已经破解的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Potato 产品答疑师

粉丝:9 关注:0 积分:11094

精华:0 金币:11746 经验:6922

最后登录时间:2024-3-28

私信 加好友

最新活动

360云台摄像机9Pro写评论送大奖!

排行榜

热度排行 查看排行
今日 本周 本月 全部
    今日 本周 本月 全部

      内容推荐 热门推荐最新主帖

      扫码添加360客服号,涨知识的同时还有超多福利等你哦

      快速回复 返回顶部 返回列表