咨询热线 

400-123-4567

主页 > 案例中心 > 客户列表

【DevicData家族扩散】全球企业机构成勒索病毒首要目标!
日期:2024年10月20日    来源:网络

  家族一直对多个高价值目标展开攻击,包括企业用户、医疗机构和教育机构。这些目标通常持有大量敏感数据,这正是

  DevicData勒索病毒以RSA和AES加密算法相结合的方式进行数据加密。此组合极大地提升了加密速度,使得病毒在特定硬件环境下能够以每小时500GB至1000GB的速度加密数据。此外,DevicData采用全字节加密方式,对文件进行全面加密处理,极具破坏性,几乎难以恢复。一旦感染成功,几乎所有的文件将无法打开、访问,除非支付赎金以获取解密工具。

  在对DevicData家族的信息收集中,我们发现此勒索病毒家族的主要联络邮箱为:,而备用邮箱为:。常见的加密文件后缀包括:.DevicData-P、.DevicData-D、.DevicData-Z和.DevicData-C。这些变种后缀的不同,暗示了病毒攻击的不同版本差异。

  如果文件后缀是(.IB、.GDB、.FDB、.MDB.....),并且大小 = 1G,或者文件是普通文件,并且文件大小20MB,文件的大小都是原始大小。

  文件加密使用了AES-ECB加密算法,对加密文件的AES密钥,采用了RSA加密和AES加密双重加密。

  使用了勒索病毒程序自带的配置信息中的RSA公钥部分,即配置文件中publickey的值。

  该内容记录了文件的加密chunk的num数量,但是该文件运行结束后就会自删除。

  该功能通过method_0函数实现,主要通过读取配置文件中的信息,进行加密所需信息的初始化,并且再读取完毕后会删除配置文件。

  2.进入InitializeComponent函数可以看到Form1_Load函数的加载,并且还能看到两个按钮的被单击的触发事件。

  3.进入Form1_Load函数可以看到,存在一个加载配置文件的操作,完成配置的初始化后会开创一个线程来实现加密操作。

  4.进入到init_config函数可以看到具体的实现过程,这里发现加载了配置文件的信息,包括:勒索信、用于加密密钥信息的AES密钥、加密后缀、ID名称等,最后会将当前目录中的所有的config文件删除。

  该部分大致分两个阶段来介绍,分为加密准备和文件内容加密,主要介绍了该程序会过滤那些文件后缀、文件路径和文件名称等,并且针对文件的大小选择不同的加密函数,并且运用不同的加密算法等。

  1.从配置读取阶段完毕后,将执行剩下的进程创建部分的内容了,这里进程执行的函数是encrypt_entry函数。

  3.进入Encrypt函数可以看到,分别对系统内四个位置的路径进行了加密,分别是:桌面、共享资源、映射的网络磁盘和本地的磁盘,这里具体的详细分析可以看后面针对于各个位置的Entry函数的分析。

  接着会根据目录还是文件进行选择,如果是文件则调用sort_file_list函数对该目录下的文件进行排序,然后针对不同的文件后缀选择不同的加密方式,这里主要会对这部分后缀进行选择:

  如果是这部分后缀的文件则会被选择送入到method_7函数做加密处理,而不属于这部分后缀的文件则会进入到method_8函数做加密处理。

  6.其中对于method8函数还是method7函数而言,前面的流程都是差不多的,这里以method_7函数进行分析。

  首先该method_7函数主要对文件名称和文件权限做了校验:文件名不为空、文件名不为Recover files!!!.txt和文件权限不仅为只读。只有满足以上条件的文件才会进行下面的加密操作。

  7.根据文件的大小来进行判断具体执行那个加密函数。这个method_7函数在文件大小的校验是1G,而method_8函数在文件大小的校验是20MB,之后就是根据文件大小的不同送入不同的加密函数中了。

  上面在加密准备阶段分别介绍了文件加密前的条件和根据文件后缀的不同和文件大小的不同,来选择不同的加密函数等。

  1.在两个method系列函数处在根据不同的文件大小,而进行选择时,method_7函数在文件大小的校验是1G,而method_8函数在文件大小的校验是20MB

  2.在校验文件大小是否小于等于1GB或者小于20MB时,如果满足条件的话,两个method_函数都会调用AESWriteByteToOldFile函数进行加密,之后再修改文件名称。

  3.在校验文件大小是否大于1GB或者大于20MB时,则会分别会先将文件的名称修改为带加密后缀的文件名。

  而metho_7函数有一点不同的地方就是它不仅会先将文件的名称修改为带加密后缀的文件名,还会创建一个名为加密文件名+-Recover.Recover的记录文件。

  4.而在文件大小的校验的分叉点会存在两个比较重要的函数,分别是AESWriteByteToOldFile函数和AESWriteByteToOldFile_F函数,该函数主要用作根据文件的大小来选择合适的加密函数。

  加密算法的具体实现是AESMoedlBEncrypt函数,该函数使用了AES的ECB模式来对数据进行数据加密

  密钥生成这里可以看到,使用的key是配置读取功能部分看到的这个变量的内容

  回顾到配置读取功能部分看这个变量的产生是使用了method_2()函数产生的

  进入到method_2函数可以看到,该函数的产生是生成一个uuid然后将其中的-字符去掉之后,将其作为加密的KEY。

  好了,整体的密钥生成已经分析完毕,总结就是KEY是由当前时间所产生的UUID去掉-以后的值。

  这里的会根据文件的大小选择不同对应的函数,而对数据进行加密的函数采用的都是AESModelBWriteFile函数来实现对数据的加密。

  整体流程就是先读取该文件中的所有数据,然后创建读写IO流,再将配置读取功能时所产生的RSA加密数据写入到文件开头

  之后呢就是调用AESMoedlBEncrypt函数将读取到的所有数据进行AES加密,加密完毕后将其再写入到文件中。

  该函数先将大文件分成 1 MB 的Chunk块读取并处理。对于每个块,根据块的num编号对Chunk的数据来进行不同的操作,这里的判断条件是num的值是否是10的倍数,如果是则进行加密,即每过10个Chunk的数据,加密一个Chunk的数据。

  否则就对该Chunk的数据进行数据交换操作,将如下位置字节的数据进行交换(数组下标一般是从0开始,故源文件中如何要找对应的位置应该加一):

  交换完毕后,将数据写入到文件中,之后就是对的chunk标号num进行加一,然后移动文件指针,开始进行下一个chunk的数据的读取。

  该函数先将大文件分成 1 MB 的Chunk块读取并处理。对于每个块,根据块的num编号对Chunk的数据来进行不同的操作,这里与上面的恰好相反,这里对num的判断条件是首先不能为10的倍数,并且num必须大于25,只有满足这两个条件才做数据交换,而交换数据的位置如下:

  交换完毕后,会将数据写入到文件中,之后就是num下标加一,然后移动文件指针到下一个chunk。

  对于num的值不满足10的倍数,并且小于25的,才对该Chunk的数据进行文件加密。

  该函数首先会先判断chunk的标号是否大于总大小,之后就会执行加密,而加密方式为循环加密,一次读取一个chunk(1MB)的数据,其中一个chunk对应一个它的标号num,num是从0开始的。在加密过程中会针对文件的前5120个(5GB)的数据进行加密,超过了5120的chunk则会每过5个chunk加密一个chunk大小的数据,总结一下:

  超过5120后的chunk:如果num超过 5120 并且不是 5 的倍数,的数据不会被加密和写入文件。

  如果满足以上的条件,先会向记录文件中写入num的值,然后加密数据,加密使用的函数是AES_Encrypto函数,该函数使用了AES加密算法,模式是ECB模式,具体详细可以看前面加密算法与密钥生成的具体分析。

  该函数首先会先判断的chunk标号num是否大于总大小,之后就会执行加密,而加密方式为循环加密,一次读取一个chunk(1MB)的数据,其中一个chunk对应一个它的标号num,num是从0开始的。之后先会向记录文件中写入num的值,最后加密大小的数据,加密使用的函数是AES_Encrypto函数,该函数使用了AES加密算法,模式是ECB模式,具体详细可以看文件内容加密函数的具体分析。

  后就会将加密数据写入到加密文件中,最后会判断一下记录文件是否存在,存在就删除掉。

  该函数主要实现了对文件数据的全加密,之后将加密好的数据写入到加密文件中,最后将文件名改为加密文件名即结束。

  主要是就是通过4层循环,来遍历每一个1~255的值,即可实现对所有IP的枚举。

  进入到method_10函数中可以看到具体,先通过IpHelper.GetDrives函数获取了一个A-Z的字符数组,然后调用DriveInfo.GetDrives函数获取一下当前系统物理磁盘的盘符有那些,然后组成一个字符数组,最后删掉A-Z字符数组中本地磁盘的盘符所代表的字符。

  完成以上的内容后,将遍历剩下的字符数组中的字符,将其当作磁盘符号,拼接:\构成完整路径后,判断是否为空,若不为空,则送入到Filter_Path_and_Write_Ransomware_Note函数进行勒索信的写入与文件的加密。

  该函数的触发是用户点击了界面上的Select-Folder按钮后触发,当用户单击按钮时,会弹出一个文件夹选择对话框。用户选择文件夹后,选定的文件夹路径将显示在文本框中,整体主要是FolderBrowserDialog对象实现的。

  该函数的触发是用户点击了界面上的RUN按钮之后即可触发,当用户点击按钮时,该函数会获取用户指定的加密路径,然后判断是否位空,如果不为空则开创一个线程,将路径送入到Filter_Path_and_Write_Ransomware_Note函数进行勒索信的写入与文件的加密,并且会将该线程的优先级调整到最高优先级。

  DevicData 勒索家族通过客户资产RDP暴露在公网并利用弱口令爆破入侵系统后,获取权限并执行文件加密操作。加密器会遍历系统目录并过滤特定文件和路径,使用AES-ECB加密算法加密符合条件的文件,并生成AES密钥后利用RSA公钥加密存储。

  勒索攻击作为成熟的攻击手段,很多勒索家族已经形成了一套完整的商业体系,并且分支了很多团伙组织,导致勒索病毒迭代了多个版本。而每个家族擅用的攻击手法皆有不同,TellYouThePass勒索软件家族常常利用系统漏洞进行攻击;Phobos勒索软件家族通过RDP暴力破解进行勒索;Mallox勒索软件家族利用数据库及暴力破解进行加密,攻击手法极多防不胜防。

  而最好的预防方法就是针对自身业务进行定期的基线加固、补丁更新及数据备份,在其基础上加强公司安全人员意识。