LockBit家族介绍
LockBit是一种非常知名且活跃的勒索软件家族,自2019年首次被发现以来,已经经历了多个版本的演变。它以其高效的加密速度和自动化攻击能力而闻名,对各类组织构成了严重威胁。
发展时间线如下:
时间 | 事件 |
2019年9月 | LockBit首次出现,由于加密拓展名为.abcd,也被称为ABCD勒索 |
2021年6月 | LockBit 2.0出现,携带窃密工具StealBit |
2021年10月 | LockBit出现Linux版本 |
2022年3月 | LockBit 3.0出现,也被称为LockBit Black |
2023年1月 | LockBit Green出现,融入了Conti勒索的源代码 |
2023年4月 | LockBit出现MacOS版本 |
本部分将列举LockBit勒索本体使用的主要技术点,并分析其在1.0到3.0版本演变中的对抗技术和成熟度的变化。
一、勒索的主要技术点
权限提升
从1.0到3.0,都主要使用了通过COM接口IColorDataProxy和ICMLuaUtil进行BypassUAC提权
两个CLSID
{3E5FC7F9-9A51-4367-9063-A120244FBEC7}
{D2E7041B-2927-42fb-8E9F-7CE93B6DC937}
持久化
创建RUN项注册表自启动
内网扫描
发起内网扫描,枚举网络共享,构造共享路径对文件进行加密
禁止系统恢复
删除卷影还原点、关闭系统启动修复等操作
二、LockBit版本演变中的对抗技术
从1.0版本到3.0版本,LockBit在不断演变, 显著提高了对系统防御的绕过能力,并引入了更多高级的反调试和混淆技术。
勒索软件的不断升级
LockBit 1.0 | LockBit 2.0 | LockBit 3.0 | |
加密扩展名 | .abcd | .lockbit | 随机后缀 |
代码混淆/分析对抗 | 基本无混淆 | 堆栈字符串混淆 API Hashing NtGlobalFlag反调试 | 堆栈字符串混淆 数据混淆和控制流混淆 混淆器区段加密 代码动态解密 API Hashing NtSetInformationThread反调试 DbgUiRemoteBreakin反调试 |
痕迹清理 | 调用命令行del自删除 | 调用命令行fsutil和del自删除 | 调用系统API函数多次重命名后删除 |
勒索配置数据 | 硬编码字符串 | 将配置字符串编码后写入二进制 | 将配置字符串编码后写入二进制,且配置更丰富 |
反调试
NtGlobalFlag反调试
通过FS寄存器查找PEB,获取偏移0x68位置的NtGlobalFlag字段中的值和0x70进行比较,如果判断相等,说明处于调试状态,样本将进入循环
NtSetInformationThread 反调试
NTSTATUS status = NtSetInformationThread(GetCurrentThread(), (THREADINFOCLASS)0x11, NULL, 0);
调用NtSetInformationThread函数,其中GetCurrentThread()获取当前线程句柄,(THREADINFOCLASS)0x11表示隐藏线程的信息类。
代码混淆
堆栈字符串混淆
API Hashing
通过PEB获取模块列表,遍历模块导出表,将每个API函数字符串进行Hash处理
痕迹清理
LockBit1.0
ping 1.1.1.1 -n 22 > Nul & \”%s\”
LockBit2.0
"C:\Windows\System32\cmd.exe" /C ping 127.0.0.7 -n 3 > Nul & fsutil file setZeroData offset=0 length=524288 "C:\Users\0x17\Desktop\1.exe" & Del /f /q "C:\Users\0x17\Desktop\1.exe"
勒索数据配置
硬编码字符串
LockBit 1.0将要结束的服务直接硬编码字符串在二进制中
配置化
和1.0版本对比,2.0将要停止的服务列表和进程列表数据编码后静态存储在可执行文件中
解码后的部分数据