1.背景
1.1 Babuk勒索家族
Babuk勒索家族最早曝光于2021年1月初,在几个月内,它就跻身于最臭名昭著的勒索软件组织之列。自回归以来,它通过在地下论坛上积极宣传自己而获得了更多的知名度。在策略方面,其加密功能与其他勒索软件组织没有太大区别。随着时间的流逝,勒索软件组织通过发布新变种并致力于改进其攻击机制,成功地制造了混乱。
该加密器使用了多种加密方式:HC-128/ChaCha8 对称加密算法、椭圆曲线 Diffie-Hellman (ECDH)、SHA256 hashing等,特征也极为特殊,会将所有被加密文件后缀修改为.babyk,并且在所有加密文件的加密内容末尾附加字符串“choung dong looks like hot dog!!!”,该字符串的意义是为了标注着勒索软件与 Babuk 有关。
解析Babyk行为文章链接
https://www.acronis.com/en-eu/blog/posts/babuk-ransomware/
以下是针对 Linux/UNIX 和 ESXi 或 VMware 系统的跨平台加密后提取的勒索信内容。
勒索信
██████╗ ██████╗ ██████╗ ███████╗ ██████╗ ███████╗██╗ █████╗ ██╗ ██╗ ██╗██╗██╗
██╔═══██╗██╔═══██╗██╔══██╗██╔════╝ ██╔══██╗██╔════╝██║ ██╔══██╗╚██╗██╔╝ ██║██║██║
██║ ██║██║ ██║██████╔╝███████╗ ██████╔╝█████╗ ██║ ███████║ ╚███╔╝ ██║██║██║
██║ ██║██║ ██║██╔═══╝ ╚════██║ ██╔══██╗██╔══╝ ██║ ██╔══██║ ██╔██╗ ╚═╝╚═╝╚═╝
╚██████╔╝╚██████╔╝██║ ███████║ ██║ ██║███████╗███████╗██║ ██║██╔╝ ██╗ ██╗██╗██╗
╚═════╝ ╚═════╝ ╚═╝ ╚══════╝ ╚═╝ ╚═╝╚══════╝╚══════╝╚═╝ ╚═╝╚═╝ ╚═╝ ╚═╝╚═╝╚═╝
What happened?
---------------------------------------------------------------
Your computers and servers have been encrypted, which is fundamentally different from normal file damages.
And you can save yourself the trouble of going to the internet to find a way to decrypt them, because unless you pay the ransom.
Even if God comes, he will not be able to help you recover them!
What guarantees?
---------------------------------------------------------------
We value our reputation. If we do not do our work and liabilities, nobody will pay us. This is not in our interests.
All our decryption software is perfectly tested and will decrypt your data. We will also provide support in case of problems.
You can contact us to test an unimportant encrypted file and we will decrypt it to prove that we have the ability to decrypt them.
How to canotact us?
---------------------------------------------------------------
Your encryption ID:7gui):
You can contact us at the email address below:
ijtg5gr@keemail.me
ag55htr@keemail.me
How to Pay?
---------------------------------------------------------------
Please pay $20000 worth of bitcoins(BTC) to the address below:
bc1qz23mpc3qdy02jzw64xw9zhe4s275un40efsd2l
We will send you the decryption program after we confirm your payment.
---------------------------------------------------------------
*****WARNING: You have up to 7 days to consider whether or not to make a payment,
so hurry or you may lose your files and data forever,
And, we will make all your data available to the Internet.
1.2 来源
该加密器最初的泄露是来自于一篇Twiter文章,是由其babuk的开发者泄漏的源代码。
Twiter文章:
https://twitter.com/vxunderground/status/1433758742244478982?s=46&t=7D_QCICAVCcsuuaq3z_Tkw
源码泄漏地址:
https://github.com/Hildaboo/BabukRansomwareSourceCode/tree/main
其中存在三种针对不同系统类型(Linux系统、NAS系统、Windows系统)的病毒文件,本篇是针对Windows系统的分析。
2 总体行为
2.1 行为展示
2.2 密钥下发(Builder.exe)
这里可以通过VS生成了Builder.exe来实现对其Builder过程进行分析,可以看到主要是对这部分文件的处理与释放
2.3 文件释放
文件释放列表及作用:
2.4 流程图
2.恶意文件分析
2.1 逻辑分析
1. 读取参数,第一个参数是文件夹路径,第二个是指定密钥文件
2. 根据参数1的文件路径,来和kp.curve25519与ks.curve25519进行拼接,用于后续存储密钥
3. 利用随机数函数CryptGenRandom来产生一个私钥,再利用该私钥配合curve25519算法生成一个公钥
4. 或者看是否存在第三个参数,有指定私钥的文件,利用该文件内的私钥配合curve25519算法生成一个公钥
5. 将私钥和外部的note.txt勒索信写入到加密器中,将私钥写入到解密器中
这里可以看到是传了2个参数进去,这里被ida识别成了一个,所以上面的那个是释放文件名称,下面的需要修改的。
6. 将生成的私钥和公钥写入到kp.curve25519和ks.curve25519文件中
3.密钥产生程序
3.1 逆向分析(keygen.exe)
1.整体流程就是调用随机数函数SystemFunction036,产生了32位的随机数。
2.其中systemFunction036是cryptbase.dll中的函数。
3.之后就是经过了Curve25519算法的密钥生成,得出了一个公钥和一个私钥。
4.Windows源代码分析
4.1 流程图
4.1 加密器(e_win)
程序先初始化了一下加密的句柄,使用了CryptAcquireContextW函数,一共获取了两次,第一次就是有现成的加密句柄就用现成的,第二次的话就是保障一下,如果没有就创建一个,然后第三个参数是加密的类型,这里的0x18则是对应的PROV_RSA_AES,意味着支持RSA和AES加密算法。
最后将加密句柄返回。
回到主函数,获取了输入的参数,并且判断是否存在debug参数,如果存在则开启调试模式
如果是调试模式开启,则创建一个用于记录调试模式的文件
4.2 关闭服务
主要比较有特点的就是,通过使用ControlService函数,来对服务发出停止操作,然后调用sleep函数直到服务成功停止后,再调用。
所停止的服务有:
vss,sql,svc$,memtas,mepocs,sophos,veeam,,backup,GxVss,,GxBlr,GxFWD,GxCVD,GxCIMgr,DefWatch,ccEvtMgr,ccSetMgr,SavRoam,RTVscan,QBFCService,QBIDPService,Intuit.QuickBooks.FCS,,QBCFMonitorService,YooBackup,YooIT,zhudongfangyu,sophos,stc_raw_agent,VSNAPVSS,VeeamTransportSvc,VeeamDeploymentService,VeeamNFSSvc,veeam,PDVFSService,BackupExecVSSProvider,BackupExecAgentAccelerator,BackupExecAgentBrowser,BackupExecDiveciMediaService,BackupExecJobEngine,BackupExecManagementService,BackupExecRPCService,AcrSch2Svc,AcronisAgent,CASAD2DWebSvc,CAARCUpdateSvc
4.3 停止进程
利用TerminateProcess函数来实现对指定进程的关闭。
sql.exe, oracle.exe, ocssd.exe, dbsnmp.exe, synctime.exe, agntsvc.exe, isqlplussvc.exe,
xfssvccon.exe, mydesktopservice.exe, ocautoupds.exe, encsvc.exe, firefox.exe, tbirdconfig.exe,
mydesktopqos.exe, ocomm.exe, dbeng50.exe, sqbcoreservice.exe, excel.exe, infopath.exe, msaccess.exe,
mspub.exe, onenote.exe, outlook.exe, powerpnt.exe, steam.exe, thebat.exe, thunderbird.exe,
visio.exe, winword.exe, wordpad.exe, notepad.exe
4.4 删除系统的影卷
调用了cmd命令实现:
cmd.exe /c vssadmin.exe delete shadows /all /quiet
4.5 清空了系统的回收站
获取了系统的信息,并且获得了系统的处理器的数量,并且创建了参数分别为0和1的两个加密线程。
StartAddress
一共有两种参数,0的话就是会检查一下当前的文件队列,1的话就直接开始加密。
获取shares和paths的参数,该程序格式应该是用逗号分开的。
其中shares代表了加密IPC共享资源中的文件。
path代表了指定加密磁盘路径,例如c:
然后他会调用sub_40AB10来实现对其指定路径的所有文件的加密,甚至还会对驱动盘类型进行判断,如果是网络的驱动盘,该程序甚至会调用WNetGetConnectionW来检索其网络资源。
如果share和path参数都没有指定,那么就会检查是否存在名为DoYouWantToHaveSexWithCuongDong的互斥体,如果也不存在,则认为程序是第一次运行,就创建一个名为DoYouWantToHaveSexWithCuongDong的互斥体,以保证后续资源的利用不会被抢占。
之后呢就是一系列的加密网络上的资源了,例如映射本机的NAS之类的这种驱动器,还有遍历本机的操作了。
迭代遍历文件过程中会写入勒索信
并且会检查文件的后缀和文件的名称,名称是勒索信和后缀是.exe、.dll、.babyk的不加密。
等所有的磁盘遍历和文件加密完毕后,就是资源的释放了,外加又一次清除了系统的影卷。
4.5.1 加密流程
首先这个恶意程序会先初始化一下加密的标志“choung dong looks like hot dog!!”,之后会再修改一下文件的名称。
4.6 加密分析
该恶意程序使用了Curve25519算法来实现密钥的生成,之后使用了sha256来加密了密钥,并且将其分开当作后续加密的密钥,最后文件的加密是采用了AES来实现的。
https://cr.yp.to/ecdh.html这篇文章中基本介绍了使用Curve25519加密算法的使用方法。
总结一下要使用Curve25519加密算法的方法:
1 .要生成 32 字节的 Curve25519 密钥,首先从加密安全源生成 32 个密钥随机字节
2 .利用生成的32个随机字节的密钥和一个常数序列来生成公钥
3 .利用生成的私钥和对方的公钥来生成共享密钥
4 .使用sha512来生成共享密钥对应的sha512,一分两半,当作加密的Key和IV
5 .计算sha512的crc用于解密时对密钥的校验
6 .最后使用生成的KEY和IV进行HC-128流加密
4.6.1 算法分析
这里可以写一个Python脚本来验证一下这个过程,首先假设我们有Alice和Bob两个人
4.6.1.1 流程图
1 .先生成一对随机的密钥,然后再生成对应的公钥
当然这里不见得非得需要33-126,因为我是想保持密钥由明文组成。
import random
import donna25519
private_key = ''
for i in range(0,32):
private_key+= chr(random.randint(33,126))
donna = donna25519.PrivateKey(secret=private_key)
public_key = donna.get_public().public
print 'private_key: '+private_key.encode('hex')
print 'public_key: '+public_key.encode('hex')
Alice Key:
private_key: 3840763b6b2a68583f7e3d7076224a5b7571217423236f6b233a6b6e68586649
public_key: 0b495944de1f2fa6dfa9fba7f73d53fc47d0c43592a52d4f80e4d7ae34a54556
Bob Key:
private_key: 705078776a2f316747502573447255492a513a3653385a3f213674482c495753
public_key: 30c1df51602efdd0eaa2d9f51e87851ecb351d2d555f3ec32cbb76916c74e43b
2 .实现一下这个交换的过程,这里先让Alice给Bob做密钥交换。
import donna25519
Alice_private_key = '3840763b6b2a68583f7e3d7076224a5b7571217423236f6b233a6b6e68586649'.decode('hex')
Bob_public_key = '30c1df51602efdd0eaa2d9f51e87851ecb351d2d555f3ec32cbb76916c74e43b'.decode('hex')
donna = donna25519.PrivateKey(secret=Alice_private_key)
public_key = donna25519.PublicKey(public=Bob_public_key)
share_key = donna.do_exchange(public_key=public_key)
print 'share_key: '+share_key.encode('hex')
可以得到:
Alice_public_key: 0b495944de1f2fa6dfa9fba7f73d53fc47d0c43592a52d4f80e4d7ae34a54556
share_key: 7ef8f5be057f00fed06c3b993c0d5b6102d86680c124ebf12f005cf1c22c1f27
3 .假设Bob接收到了这个Alice的公钥后,然后来实现一下Bob对Alice的密钥交换。
import donna25519
Bob_private_key = '705078776a2f316747502573447255492a513a3653385a3f213674482c495753'.decode('hex')
Bob_public_key = '30c1df51602efdd0eaa2d9f51e87851ecb351d2d555f3ec32cbb76916c74e43b'.decode('hex')
Alice_public_key = '0b495944de1f2fa6dfa9fba7f73d53fc47d0c43592a52d4f80e4d7ae34a54556'.decode('hex')
donna = donna25519.PrivateKey(secret=Bob_private_key)
public_key = donna25519.PublicKey(public=Alice_public_key)
share_key = donna.do_exchange(public_key=public_key)
print 'Bob_public_key: '+Alice_public_key.encode('hex')
print 'share_key: '+share_key.encode('hex')
可以得到:
Bob_public_key: 0b495944de1f2fa6dfa9fba7f73d53fc47d0c43592a52d4f80e4d7ae34a54556
share_key: 7ef8f5be057f00fed06c3b993c0d5b6102d86680c124ebf12f005cf1c22c1f27
通过这个过程我们了解此恶意程序的密钥生成与交换完全一样,而我们可以是Bob也可以是Alice,黑客也可以是Alice也可以是Bob,当我们根据对方的公钥和自己的私钥生成共享的密钥之后,后面的加密流程几乎都是依赖此密钥继续的。
密钥生成完毕之后,会根据文件的大小来选择是否是全加密或者是部分加密等,之后就会进入到合适的加密函数,但都是一个加密函数
文件内容的加密则会利用刚才的Key和IV进入到HC128的密钥流生成,最后将生成的密钥和原文进行异或后,即完成加密。
4.6.2 加密标志写入
最后就是对文件的末尾进行公钥、CRC32和加密标志"choung dong looks like hot dog!"的写入了,该标志也是作为目前Babuk家族的主要识别标志了。
当黑客拿到文件末尾的公钥后,即可使用自己的私钥来产生出对应的共享密钥,然后实现后面的解密,其中crc32是对共享密钥的校验,来对其完整性进行了验证。
5.总结
Windows这部分的加密的执行主要采用了多线程的方式,其中加密算法采用了Curve25519算法作为其加密算法,每个文件都是使用了同一个黑客的公钥来实现的密钥交换,但每个文件都会生成一个属于自己的私钥和公钥,而且整体发现此款恶意程序以加密速度为目标,为的就是用最短的时间来实现对中招电脑的资料进行加密。
以下是solar安全团队近期处理过的常见勒索病毒后缀:
.live勒索病毒, .locked勒索病毒, .rmallox勒索病毒, .mallox 勒索病毒,.jopanaxye勒索病毒, .2700勒索病毒, .elbie勒索病毒, .mkp勒索病毒, .dura勒索病毒, .halo勒索病毒, .DevicData勒索病毒, .faust勒索病毒, ..locky勒索病毒, .cryptolocker勒索病毒, .cerber勒索病毒, .zepto勒索病毒, .wannacry勒索病毒, .cryptowall勒索病毒, .teslacrypt勒索病毒, .gandcrab勒索病毒, .dharma勒索病毒, .phobos勒索病毒, .lockergoga勒索病毒, .coot勒索病毒, .lockbit勒索病毒, .nemty勒索病毒, .contipa勒索病毒, .djvu勒索病毒, .marlboro勒索病毒, .stop勒索病毒, .etols勒索病毒, .makop勒索病毒, .mado勒索病毒, .skymap勒索病毒, .aleta勒索病毒, .btix勒索病毒, .varasto勒索病毒, .qewe勒索病毒, .mylob勒索病毒, .coharos勒索病毒, .kodc勒索病毒, .tro勒索病毒, .mbed勒索病毒, .wannaren勒索病毒, .babyk勒索病毒, .lockfiles勒索病毒, .locked勒索病毒, .DevicData-P-XXXXXXXX勒索病毒, .lockbit3.0勒索病毒, .blackbit勒索病毒, .360勒索病毒, .360勒索病毒
勒索攻击作为成熟的攻击手段,很多勒索家族已经形成了一套完整的商业体系,并且分支了很多团伙组织,导致勒索病毒迭代了多个版本。而每个家族擅用的攻击手法皆有不同,TellYouThePass勒索软件家族常常利用系统漏洞进行攻击;Phobos勒索软件家族通过RDP暴力破解进行勒索;Mallox勒索软件家族利用数据库及暴力破解进行加密,攻击手法极多防不胜防。
而最好的预防方法就是针对自身业务进行定期的基线加固、补丁更新及数据备份,在其基础上加强公司安全人员意识。
如果您想了解有关勒索病毒的最新发展情况,或者需要获取相关帮助,请关注“solar专业应急响应团队”。
6.安全建议
6.1 风险消减措施
资产梳理排查目标:根据实际情况,对内外网资产进行分时期排查
服务方式:调研访谈、现场勘查、工具扫描
服务关键内容:流量威胁监测系统排查、互联网暴露面扫描服务、技术加固服务、集权系统排查
6.2 安全设备调优
目标
通过对安全现状的梳理和分析,识别安全策略上的不足,结合目标防御、权限最小化、缩小攻击面等一系列参考原则,对设备的相关配置策略进行改进调优,一方面,降低无效或低效规则的出现频次;另一方面,对缺失或遗漏的规则进行补充,实现将安全设备防护能力最优化。
主要目标设备
网络安全防护设备、系统防护软件、日志审计与分析设备、安全监测与入侵识别设备。
6.3 全员安全意识增强调优
目标:
通过网络安全意识宣贯、培训提升全方位安全能力
形式:
培训及宣贯
线下培训课表
若无法组织线下的集体培训,考虑两种方式:
1.提供相关的安全意识培训材料,由上而下分发学习
2.组织相关人员线上开会学习。线上培训模式。
线上学习平台
7.团队介绍
solar团队数年深耕勒索解密与数据恢复领域,在勒索解密和数据恢复领域建立了良好的声誉,以高效、安全、可靠的解决方案赢得了客户的信任。无论是个人用户还是大型企业,都能提供量身定制的服务,确保每一个被勒索软件侵害的数据都能够恢复到最佳状态,同时在解密数据恢复后,提供全面的后门排查及安全加固服务,杜绝二次感染的风险。同时,solar团队坚持自主研发及创新,在攻防演练平台、网络安全竞赛平台、网络安全学习平台方面加大研发投入,目前已获得十几项专利及知识产权。团队也先后通过了ISO9001质量管理体系、ISO14000环境管理体系、ISO45001职业安全健康管理体系 、ITSS(信息技术服务运行维护标准四级)以及国家信息安全漏洞库(CNNVD)技术支撑单位等认证,已构建了网络安全行业合格的资质体系
8.数据恢复服务流程
多年的数据恢复处理经验,在不断对客户服务优化的过程中搭建了"免费售前+安心保障+专业恢复+安全防御"一体化的专业服务流程。
① 免费咨询/数据诊断分析
专业的售前技术顾问服务,免费在线咨询,可第一时间获取数据中毒后的正确处理措施,防范勒索病毒在内网进一步扩散或二次执行,避免错误操作导致数据无法恢复。
售前技术顾问沟通了解客户的机器中毒相关信息,结合团队数据恢复案例库的相同案例进行分析评估,初步诊断分析中毒数据的加密/损坏情况。
② 评估报价/数据恢复方案
您获取售前顾问的初步诊断评估信息后,若同意进行进一步深入的数据恢复诊断,我们将立即安排专业病毒分析工程师及数据恢复工程师进行病毒逆向分析及数据恢复检测分析。
专业数据恢复工程师根据数据检测分析结果,定制数据恢复方案(恢复价格/恢复率/恢复工期),并为您解答数据恢复方案的相关疑问。
③ 确认下单/签订合同
您清楚了解数据恢复方案后,您可自主选择以下下单方式:
双方签署对公合同:根据中毒数据分析情况,量身定制输出数据恢复合同,合同内明确客户的数据恢复内容、数据恢复率、恢复工期及双方权责条款,双方合同签订,正式进入数据恢复专业施工阶段,数据恢复后进行验证确认,数据验证无误,交易完成。
④ 开始数据恢复专业施工
安排专业数据恢复工程师团队全程服务,告知客户数据恢复过程注意事项及相关方案措施,并可根据客户需求及数据情况,可选择上门恢复/远程恢复。
数据恢复过程中,团队随时向您报告数据恢复每一个节点工作进展(数据扫描 → 数据检测 → 数据确认 → 恢复工具定制 → 执行数据恢复 → 数据完整性确认)。
⑤ 数据验收/安全防御方案
完成数据恢复后,我司将安排数据分析工程师进行二次检查确认数据恢复完整性,充分保障客户的数据恢复权益,二次检测确认后,通知客户进行数据验证。
客户对数据进行数据验证完成后,我司将指导后续相关注意事项及安全防范措施,并可提供专业的企业安全防范建设方案及安全顾问服务,抵御勒索病毒再次入侵。