Potato 发表于 2021-8-9 16:08

Lockbit2.0勒索病毒样本分析

本帖最后由 Potato 于 2022-8-9 11:42 编辑


相关阅读:
Lockbit勒索病毒家族详情
LockBit3.0勒索病毒样本分析

一、概述    此次分析的勒索病毒为Lockbit,该病毒使用PECompact进行加壳,同时使用多种反调试手段和字符串运行时解密、修改进程模块名等方式进行反分析。加密方式依旧采用常见的RSA+AES组合。
    程序支持传入参数进行测试:Lockbit.exe 。

二、代码分析
Lockbit执行过程中,会创建一个名为Lockbit Ransom的隐藏窗口记录执行流程,并且注册热键shift+F1显示,F1隐藏。

1.      CIS地区避过
    程序通过系统用户使用语言检测并避过独立国家联合体(CIS)地区国家:

<div&gt;2092:阿塞拜疆 - 西里尔文
</div&gt;<div&gt;1068:阿塞拜疆语 - 拉丁语
</div&gt;<div&gt;1067:亚美尼亚语
</div&gt;<div&gt;1059:白俄罗斯语
</div&gt;<div&gt;1079:格鲁吉亚语
</div&gt;<div&gt;1087:哈萨克语
</div&gt;<div&gt;1088:吉尔吉斯语 - 西里尔文
</div&gt;<div&gt;2073:俄语 - 摩尔多瓦
</div&gt;<div&gt;1049:俄语
</div&gt;<div&gt;1064:塔吉克
</div&gt;<div&gt;1090:土库曼斯坦
</div&gt;<div&gt;2115:乌兹别克语 - 西里尔文
</div&gt;<div&gt;1091:乌兹别克语 - 拉丁语
</div&gt;<div&gt;1058:乌克兰
</div&gt;



2.      UAC Bypass & 自启动
    Lockbit通过当前执行进程令牌判断当前进程令牌是否具备管理员权限。如果不具备但进程令牌属于管理员组且系统版本大于Windows XP,则使用COM接口进行提升权限重新启动进程。


    然后创建互斥量Global\\{BEF590BE-11A6-442A-A85B-656C1081E04C},以保证程序单例执行。在开始加密前,为防止中途中断导致加密失败,Lockbit为自身创建注册表自启动项HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\XO1XADpO01,系统所有目标文件加密完成删除该键。 或许是出于防止自身进程被扫描,程序接着会设置当前进程对象的访问权限,禁止其他所有用户对当前进程对象的数据读取。


3.      结束指定进程&服务
    启用当前进程的SeDebugPrivilege权限,然后结束指定服务及其依赖项。这些服务包括:
wrapper、DefWatch、ccEvtMgr、ccSetMgr、SavRoam、Sqlservr、sqlagent、sqladhlp、Culserver、RTVscan、sqlbrowser、SQLADHLP、QBIDPService、Intuit.QuickBooks.FCS、QBCFMonitorService、sqlwriter、msmdsrv、tomcat6、zhudongfangyu、vmware-usbarbitator64、vmware-converter、dbsrv12、dbeng8、MSSQL$MICROSOFT##WID、MSSQL$VEEAMSQL2012、SQLAgent$VEEAMSQL2012、SQLBrowser、SQLWriter、FishbowlMySQL、MSSQL$MICROSOFT##WID、MySQL57、MSSQL$KAV_CS_ADMIN_KIT、MSSQLServerADHelper100、SQLAgent$KAV_CS_ADMIN_KIT、msftesql-Exchange、MSSQL$MICROSOFT##SSEE、MSSQL$SBSMONITORING、MSSQL$SHAREPOINT、MSSQLFDLauncher$SBSMONITORING、MSSQLFDLauncher$SHAREPOINT、SQLAgent$SBSMONITORING、SQLAgent$SHAREPOINT、QBFCService、QBVSS、YooBackup、YooIT、vss、sql、svc$、MSSQL、MSSQL$、memtas、mepocs、sophos、veeam、backup、bedbg、PDVFSService、BackupExecVSSProvider、BackupExecAgentAccelerator、BackupExecAgentBrowser、BackupExecDiveciMediaService、BackupExecJobEngine、BackupExecManagementService、BackupExecRPCService、MVArmor、MVarmor64、stc_raw_agent、VSNAPVSS、VeeamTransportSvc、VeeamDeploymentService、VeeamNFSSvc、AcronisAgent、ARSM、AcrSch2Svc、CASAD2DWebSvc、CAARCUpdateSvc、WSBExchange、MSExchange、MSExchange$
结束指定进程,解除数据文件占用:
wxServer、wxServerView、Sqlservr、RAgui、supervise、Culture、RTVscan、Defwatch、sqlbrowser、winword、QBW32、QBDBMgr、qbupdate、QBCFMonitorService、axlbridge、QBIDPService、httpd、fdlauncher、MsDtSrvr、tomcat6、java、360se、360doctor、wdswfsafe、fdhost、GDscan、ZhuDongFangYu、QBDBMgrN、sqlwriter、mysqld、AutodeskDesktopApp、acwebbrowser、Creative Cloud、Adobe Desktop Service、CoreSync、Adobe CEF Helper、node、AdobeIPCBroker、sync-taskbar、sync-worker、InputPersonalization、AdobeCollabSync、BrCtrlCntr、BrCcUxSys、SimplyConnectionManager、Simply.SystemTrayIcon、fbguard、fbserver、ONENOTEM、YooIT、wsa_service、koaly-exp-engine-service、TeamViewer_Service、TeamViewer、tv_w32、tv_x64、TitanV、Ssms、notepad、RdrCEF、sam、sql、oracle、ocssd、dbsnmp、synctime、agntsvc、isqlplussvc、xfssvccon、mydesktopservice、ocautoupds、encsvc、firefox、tbirdconfig、mydesktopqos、ocomm、dbeng50、sqbcoreservice、excel、infopath、msaccess、mspub、onenote、outlook、powerpnt、steam、thebat、thunderbird、visio、winword、wordpad、bedbh、vxmon、benetns、bengien、pvlsvr、beserver、raw_agent_svc、vsnapvss、CagService、DellSystemDetect、EnterpriseClient、VeeamNFSSvc、VeeamTransportSvc、VeeamDeploymentSvc
4.      删除卷影
    Lockbit通过清空回收站和删除卷影的方式清除可能的备份数据。删除卷影时,以runas方式执行以下命令:

<div&gt;/c vssadmin delete shadows /all /quiet & wmic shadowcopy delete & bcdedit /set {default} bootstatuspolicy ignoreallfailures & bcdedit /set {default} recoveryenabled no & wbadmin delete catalog -quiet
</div&gt;<div&gt;/c vssadmin delete shadows /all /quiet
</div&gt;<div&gt;/c bcdedit /set {default} recoveryenabled No
</div&gt;<div&gt;/c bcdedit /set {default} bootstatuspolicy ignoreallfailures
</div&gt;<div&gt;/c wbadmin DELETE SYSTEMSTATEBACKUP
</div&gt;<div&gt;/c wbadmin DELETE SYSTEMSTATEBACKUP -deleteOldest
</div&gt;<div&gt;/c wmic SHADOWCOPY /nointeractive
</div&gt;<div&gt;/c wevtutil cl security
</div&gt;<div&gt;/c wevtutil cl system
</div&gt;<div&gt;/c wevtutil cl application
</div&gt;



5.      用户RSA密钥对生成
    Lockbit运行后会为用户生成一对RSA-2048公私钥,然后使用内置于程序中的攻击者RSA-2048公钥对用户私钥进行加密,加密结果大小为0x500字节。病毒会将该结果写入注册表键HKCU\SoftWare\LockBit\full,而未被加密的用户公钥则会被写入到HKCU\SoftWare\LockBit\Public。如果Lockbit由于某些原因中止重启,将直接从两个注册表中读取密钥数据,从而保证每台机器仅一对密钥。





6.      搜索文件进行加密
    在开始搜索可加密文件前,程序会先将未挂载的非系统使用的固定磁盘、可移动磁盘进行挂载,从’Z’递减作为挂载盘符,已彻底地加密机器上的数据。


    搜索文件时,程序主要对三种目标进行枚举:
    (1)      对本地ip列表逐个尝试连接,访问其文件;
    (2)      网络资源枚举;
    (3)      本地磁盘枚举。
    不过程序对于目录/文件的过滤方式都是相同的。会避过以下文件夹:

<div&gt;$windows.~bt
</div&gt;<div&gt;intel
</div&gt;<div&gt;msocache
</div&gt;<div&gt;$recycle.bin
</div&gt;<div&gt;$windows.~ws
</div&gt;<div&gt;tor browser
</div&gt;<div&gt;boot
</div&gt;<div&gt;system volume information
</div&gt;<div&gt;perflogs
</div&gt;<div&gt;google
</div&gt;<div&gt;application data
</div&gt;<div&gt;windows
</div&gt;<div&gt;windows.old
</div&gt;<div&gt;appdata
</div&gt;<div&gt;Windows nt
</div&gt;<div&gt;Msbuild
</div&gt;<div&gt;Microsoft
</div&gt;<div&gt;All users
</div&gt;<div&gt;mozilla
</div&gt;<div&gt;Microsoft.NET
</div&gt;<div&gt;microsoft shared
</div&gt;<div&gt;Internet Explorer
</div&gt;<div&gt;common files
</div&gt;<div&gt;opera
</div&gt;<div&gt;Windows Journal
</div&gt;

根据文件后缀避过的文件类型包括:
.theme、.icns、.lock、.rdp、.lnk、.ico、.hlp、.sys、.idx、.ini、.dll、.reg、.mp3、.key、.ics、.msu、.ps1、.spl、.msc、.rom、.bat、.wpx、.drv、.shs、.hlp、.bin、.rtp、.prf、.hta、.mod、.cpl、.mpa、.ocx、.nls、.com、.msp、.msi、.adv、.ani、.exe、.cmd、.386、.lockbit、.diagcfg、.diagcab、.diagpkg、.msstyles


避过如下文件名:

<div&gt;Restore-My-Files.txt
</div&gt;<div&gt;ntldr
</div&gt;<div&gt;ntuser.dat.log
</div&gt;<div&gt;bootsect.bak
</div&gt;<div&gt;autorun.inf
</div&gt;<div&gt;thumbs.db
</div&gt;<div&gt;iconcache.db
</div&gt;

以下文件类型将被标记(extflag),加密阶段将对被标记文件进行整体分段加密。

<div&gt;.rar
</div&gt;<div&gt;.zip
</div&gt;<div&gt;.7z
</div&gt;<div&gt;.ckp
</div&gt;<div&gt;.dacpac
</div&gt;<div&gt;.db
</div&gt;<div&gt;.db-shm
</div&gt;<div&gt;.db-wal
</div&gt;<div&gt;.db3
</div&gt;<div&gt;.dbf
</div&gt;<div&gt;.dbc
</div&gt;<div&gt;.dbs
</div&gt;<div&gt;.dbt
</div&gt;<div&gt;.dbv
</div&gt;<div&gt;.frm
</div&gt;<div&gt;.mdf
</div&gt;<div&gt;.mrg
</div&gt;<div&gt;.mwb
</div&gt;<div&gt;.myd
</div&gt;<div&gt;.ndf
</div&gt;<div&gt;.qry
</div&gt;<div&gt;.sdb
</div&gt;<div&gt;.sdf
</div&gt;<div&gt;.sql
</div&gt;<div&gt;.sqlite
</div&gt;<div&gt;.sqlite3
</div&gt;<div&gt;.sqlitedb
</div&gt;<div&gt;.tmd
</div&gt;
7.      文件加密方式
    加密文件时使用一个IO完成端口专门进行数据处理,每个文件处理时传递的数据为0x40068字节,结构及偏移量如下:

<div&gt;+0x00: struct _OVERLAPPE
</div&gt;<div&gt;++0x00:Internal
</div&gt;<div&gt;++0x04:InternalHigh
</div&gt;<div&gt;++0x08:Offset(文件偏移值低位)
</div&gt;<div&gt;++0x0C:OffsetHigh(文件偏移值高位)
</div&gt;<div&gt;++0x10:hEvent
</div&gt;<div&gt;+0x14:0
</div&gt;<div&gt;+0x18:文件原始大小LowPart
</div&gt;<div&gt;+0x1C:文件原始大小HighPart
</div&gt;<div&gt;+0x20:文件对象句柄hFile
</div&gt;<div&gt;+0x24:数据处理指令,初始为4
</div&gt;<div&gt;1:      对读取数据片段进行AES CBC加密,并修改IV为加密数据尾部16字节,下一指令为5(extflag为1)或者2(extflag为0或是文件已读取至尾部);
</div&gt;<div&gt;2:      文件重命名,关闭当前文件句柄,等待下一个文件处理;
</div&gt;<div&gt;3:      无操作,在写入勒索信文件时被指定;
</div&gt;<div&gt;4:      生成解密相关的尾部数据,追加于文件尾部,下一步指令6;
</div&gt;<div&gt;5:      继续读取原文件数据片段,下一指令1;
</div&gt;<div&gt;6:      从原文件头部开始读取数据片段到缓冲区,下一步指令1;
</div&gt;<div&gt;+0x28:已加密数据长度LowPart,初始为0
</div&gt;<div&gt;+0x2C:已加密数据长度HighPart,初始为0
</div&gt;<div&gt;+0x30:extflag(0/1),是否命中指定后缀名
</div&gt;<div&gt;+0x34:文件读写缓冲区(0x40000字节)
</div&gt;<div&gt;+0x40034:AES128密钥Key,16字节随机值
</div&gt;<div&gt;+0x40044:AES128初始IV,16字节随机值
</div&gt;

    其中extflag即为之前在后缀名匹配时被标记的指定类型的文件,主要包含数据库、压缩包等常见的重要数据文件类型。
加密方式主要是两种:
(1)      分段加密整个文件,extflag为1时或是文件大小不大于0x40000字节(256KB)时,每次读写位置增加指定偏移量(根据文件大小计算,大于0x40000),然后加密该位置的256KB内容;
(2)      部分加密,extflag为0且文件大于256KB,加密文件头部256KB。


    文件加密算法使用AES128的CBC模式。每个文件的密钥Key和IV都重新随机生成。对于支持AES-NI指令集的,使用AES-NI指令进行加密,以提高执行速度;否则,仍按传统代码方式进行计算。Lockbit将解密和文件验证所需的数据追加于文件尾部,包含如下信息:

[*] 源文件尾部16字节的头部数据,数据字节数为 (16 - filesize % 16) % 16,例外是当extflag为0且文件大于256KB时,常为0;
[*]由用户RSA-2048公钥加密的AES密钥Key和IV共32字节,加密后结果0x100字节;
[*]经过攻击者RSA公钥pk_attacker加密后的sk_user(用户RSA私钥),数据共0x500字节;
[*]pk_attacker前16字节

以只加密文件头部256KB的方式为例,文件加密流程和加密后文件结构如下图:


8.      勒索信释放 & 桌面背景修改
    Lockbit在每隔被加密的目录下释放一封勒索信Restore-My-Files.txt,文件全部加密完成后,程序在桌面释放hta文件LockBit-note.hta,并为其创建注册表启动项,然后运行,弹出勒索窗口以提醒用户。
Restore-My-Files.txt

All your important files are encrypted!
Any attempts to restore your files with the thrid-party software will be fatal for your files!
RESTORE YOU DATA POSIBLE ONLY BUYING private key from us.
There is only one way to get your files back:

1) Through a standard browser(FireFox, Chrome, Edge, Opera)
| 1. Open link http://lockbit-decryptor.top/?A57BE5697721472BBA04A09A2749C839
| 2. Follow the instructions on this page


2) Through a Tor Browser - recommended
| 1. Download Tor browser - https://www.torproject.org/ and install it.
| 2. Open link in TOR browser - http://lockbitks2tvnmwk.onion/?A57BE5697721472BBA04A09A2749C839
This link only works in Tor Browser!
| 3. Follow the instructions on this page


###Attention! ###
# lockbit-decryptor.top may be blocked. We recommend using a Tor browser to access the site
# Do not rename encrypted files.
# Do not try to decrypt using third party software, it may cause permanent data loss.
# Decryption of your files with the help of third parties may cause increased price(they add their fee to our).
# Tor Browser may be blocked in your country or corporate network. Use https://bridges.torproject.org or use Tor Browser over VPN.
# Tor Browser user manual https://tb-manual.torproject.org/about

LockBit-note.hta


桌面背景



9.      自我删除
执行如下命令实现自我删除。
/C ping 127.0.0.7 -n 3 &gt; Nul & fsutil file setZeroData offset=0 length=524288&lt;\path\to\Lockbit.exe&gt; & Del /f /q&lt;\path\to\Lockbit.exe&gt;


IOC

HASH
0f890d99d7a89506db76866f4a93b771

TelMeo 发表于 2021-8-11 16:47

既然这些密钥都能拿到,请问这个能解吗?我中了这个毒,用“360解密大师1.0.2.1590” 执行,提示未发现任何被加密文件。请问是要如何操作?

360fans_3zjNDo 发表于 2021-10-20 17:59

我这里也中了这样差不多的病毒   

360fans_iAWVdx 发表于 2022-8-9 14:55

所以,电脑系统语言改成独联体国家的语言,或者资料全部存放在避开的文件夹下 是不是可以免受勒索病毒加密了
页: [1]
查看完整版本: Lockbit2.0勒索病毒样本分析