专注于武汉中小企业服务解决方案提供商

电脑维修、布线、安防监控、数据恢复、采购、回收

所属分类 > 家电维修 > 正文

深入分析CCleaner后门代码-编译环境污染供应链攻击案例 (深入分析的近义词)

编辑:rootadmin
年9月日,Piriform官方发布安全公告,公告称该公司开发的CCleanerversion5..和CCleanerCloudversion1..中的位使用程序被植入了恶意代码。被植入后门代码的软件版本被公开下载了一个月左右,导致百万级别的用户受到影响,泄露机器相关的敏感信息甚至极少数被执行了更多的恶意代码。CCleaner是*的软件工作室Piriform开发的*优化和隐私保护工具,现在已经被防*厂商Avast收购,主要用来清除Win*不再运用的垃圾文件,以腾出更多硬盘空间,它的另一大功能是清除运用者的上网记录。自从年2月发布以来,CCleaner的用户数目快速增长而且很快成为运用量第一的*垃圾清理及隐私保护软件。而正是这样一款隐私保护软件却被爆出在官方发布的版本中被植入恶意代码,且该恶意代码具备执行任意代码的功能。  这是继Xshell被植入后门代码事件后,又一起严重的软件供应链攻击活动。威胁情报中心通过对相关的技术细节的进一步分析,推测这是一个少见的基于编译环境污染的软件供应链攻击,值得分享出来给安全社区讨论。后门技术细节分析恶意代码功能  被植入了恶意代码的CCleaner版本主要具备如下恶意功能:  1.攻击者在CRT初始化函数__scrt_get_dyn_tls_init_callback()中*了一个函数调用,并将此函数调用指向执行另一段恶意代码。  2.收集主机信息(主机名、已安装软件列表、进程列表和网卡信息等)加密编码后通过HTTPS协议的POST请求尝试发送到远程IP:...:,且伪造HTTP头的HOST字段为:speccy.piriform*,并下载执行第二阶段的恶意代码。  3.若IP失效,则根据月份生成DGA域名,并再次尝试发送同样的信息,如果成功则下载执行第二阶段的恶意代码。植入方式推测  根据威胁情报中心的分析,此次事件极有可能是攻击者入侵开发人员机器后污染开发环境中的CRT静态库函数造成的,导致的后果为在该开发环境中开发的程序都有可能被自动植入恶意代码,相应的证据和推论如下:  1.被植入的代码位于用户代码main函数之前

整理分享深入分析CCleaner后门代码-编译环境污染供应链攻击案例 (深入分析的近义词),希望有所帮助,仅作参考,欢迎阅读内容。

内容相关其他词:深入分析问题是申论文章的重要组成部分,深入分析南水北调工程面临的新形势心得体会,深入分析的成语,深入分析南水北调工程面临的新形势心得体会,深入分析博腾股份,深入分析换一种说法,深入分析的成语,深入分析换一种说法,内容如对您有帮助,希望把内容链接给更多的朋友!

  main函数之前的绿色代码块为编译器引入的CRT代码,这部分代码非用户编写的代码。  2.植入的恶意代码调用过程

  可以看到CRT代码sub_CD内部*入了一个恶意call调用。  3.被植入恶意代码的CRT代码源码调用过程  通过分析,我们发现运用VS编译的Release版本程序的CRT反汇编代码与本次分析的代码一致,调用过程为:  _mainCRTStartup-->__scrt_common_main_seh-->__scrt_get_dyn_tls_dtor_callback-->Maliciouscall  4.CCleaner中被修改的__scrt_get_dyn_tls_init_callback()和源码对比

  基于以上的证据,可以确定的是攻击者是向__scrt_get_dyn_tls_init_callback()中植入恶意源代码并重新编译成OBJ文件再替换了开发环境中的静态链接库中对应的OBJ文件,促使每次编译EXE的过程中,都会被编译器通过被污染的恶意的LIB/OBJ文件自动链接进恶意代码,最终感染编译生成的可执行文件。  __scrt_get_dyn_tls_init_callback()函数位于源代码文件dyn_tls_init.c中。  攻击技术重现验证编译环境的攻击面  通过分析发现,如果要向程序CRT代码中植入恶意代码,最好的方式就是攻击编译过程中引入的CRT静态链接库文件,方式有如下三种:  1.修改CRT库文件源码,重新编译并替换编译环境中的CRT静态库文件(LIB)  2.修改CRT库文件中某个OBJ文件对应的C源码,重新编译并替换LIB中对应的OBJ文件。  3.修改CRT库文件中某个OBJ文件的二进制代码,并替换LIB中对应的OBJ文件。CRT运行时库  C运行时库函数的主要功能为进行程序初始化,对全局变量进行赋初值,加载用户程序的入口函数等。定位CRT源代码  我们以VS为例,编写一个功能简单的main函数如下:深入分析CCleaner后门代码-编译环境污染供应链攻击案例 (深入分析的近义词)

  在main函数结尾处设置断点,运用/MD编译选项编译调试运行

  切换到反汇编代码并执行到main函数返回:

  返回后查阅源码可以看到对应的CRT源代码为:crtexe.c

源代码路径:  D:\ProgramFiles(x)\MicrosoftVisualStudio9.0\VC\crt\src\crtexe.c定位CRT静态链接库  参考MSDN我们知道,在VS中,运用/MD编译选项编译Release版本的程序引用的CRT静态库为msvcrt.lib,文件路径为:  D:\ProgramFiles(x)\MicrosoftVisualStudio9.0\VC\lib\msvcrt.libLIB/OBJ文件介绍  以VS中的msvcrt.lib为例LIB  这里介绍静态库LIB文件,是指编译器链接生成后供第三方程序静态链接调用的库文件,其实是单个或多个OBJ通过AR压缩打包后的文件,内部包含OBJ文件以及打包路径信息,比如msvcrt.lib文件解压后得到的部分OBJ文件路径如下:

  可以看到,msvcrt.lib解压后确实也有CRT对应的OBJ文件:crtexe.obj等OBJ  源代码编译后的COFF格式的二进制文件,包含汇编代码信息、符号信息等等,编译器最终会将需要运用的OBJ链接生成PE文件,crtexe.obj文件格式如下:

攻击CRT运行时库  了解了CRT运行时库的编译链接原理,我们可以知道,运用/MD编译选项编译的main函数前的C运行时库函数在静态链接过程中是运用的msvcrt.ib中的crcexe.obj等进行编译链接的,并且源代码中定义不一样的main函数名称,编译器会链接msvcrt.lib中不一样的OBJ文件,列举部分如下表所示:

修改crcexe.obj  我们以VS中编译main()函数为例,如果修改msvcrt.lib中的crcexe.obj的二进制代码,比如修改源码并重编译crcexe.c或者直收到故障机改crcexe.obj,再将编译/修改后的crcexe.obj替换msvcrt.lib中对应的OBJ,最后将VS中的msvcrt.lib替换,那么运用/MD编译选项编译的所有带有main()函数的EXE程序都会运用攻击者的crcexe.obj编译链接,最终植入任意代码。  为展示试验效果,我们通过修改crcexe.obj中main函数调用前的两个字节为0xCC,试验效果将展示编译的所有EXE程序main调用前都会有两条int3指令:

crcexe.obj在msvcrt.lib中的路径:  f:\dd\vctools\crt_bld\SELF_X\crt\src\build\INTEL\dll_obj\crcexe.obj  替换msvcrt.lib中的crcexe.obj  替换msvcrt.lib中的OBJ文件需要两步,这里直接给出方式:  1.移除msvcrt.lib中的OBJ文件  运用VS自带的LIB.EXE移除crcexe.obj:  lib/REMOVE:f:\dd\vctools\crt_bld\SELF_X\crt\src\build\INTEL\dll_obj\crcexe.objmsvcrt.lib  2.向msvcrt.lib中*修改后的crcexe.obj文件  运用VS自带的LIB.EXE*污染后的crcexe.obj:  libmsvcrt.libf:\dd\vctools\crt_bld\SELF_X\crt\src\build\INTEL\dll_obj\crcexe.obj  编译过程自动植入恶意代码  将替换了crcexe.obj的msvcrt.lib覆盖VS编译器中的msvcrt.lib:  D:\ProgramFiles(x)\MicrosoftVisualStudio9.0\VC\lib\msvcrt.lib  重新编译执行我们的测验程序,可以看到在main函数执行前的两条*的int3指令:

结论与思考  年9月初威胁情报中心发布了《供应链来源攻击分析报告》,总结了近几年来的多起知名的供应链攻击案例,发现大多数的供应链攻击渠道为软件*。通过污染软件的编译环境的案例不多,最出名的就是年影响面巨大的Xcode开发工具恶意代码植入事件,从当前的分析来看,CCleaner也极有可能是定向性的编译环境污染供应链攻击。以下是一些相关的技术结论:  1.针对LIB文件攻击方式可以通过重编译源码或者修改OBJ二进制代码这两种方式实现。  2.修改OBJ二进制代码实现对LIB文件的代码注入不一样于修改源码,此方式理论上可用于注入任何静态链接库LIB。  3.只需按照OBJ文件格式规范即可注入任意代码(shellcode),比如在OBJ中新增/扩大节,填充shellcode并跳转执行。  4.此攻击方式可以在用户代码执行前(CRT)、执行中(调用库函数)、甚至执行结束后执行植入的恶意代码,并且由于恶意代码并不存在于编写的源代码中,所以很难被开发人员发现。  5.攻击者完全可以植入某个深层次调用的开发环境下的静态库文件,以达到感染大部分开发程序并持久化隐藏的目的。  6.运用源代码安全审查的方式无法发现这类攻击  由于这类定向的开发环境污染攻击的隐蔽性及影响目标的广泛性,攻击者有可能影响CCleaner以外的其他软件,我们有可能看到攻击者造成的其他供应链污染事件。

标签: 深入分析的近义词


本文链接地址:https://www.iopcc.com/jiadian/38293.html转载请保留说明!

上一篇:温度正常了:骁龙810也蔫了! (温度好多正常)

下一篇:苹果的一剂猛药:Android手机换购iPhone (苹果入药)

推荐内容:

三菱空调关闭显示度数故障维修 三菱空调开机度数31度跟遥控器上的不一样 (三菱空调显示板翻译)

三菱空调关闭显示度数故障维修 三菱空调开机度数31度跟遥控器上的不一样 (三菱空调显示板翻译)

问题并不复杂,但是又很多的朋友都不太了解三菱空调开机度数度跟*上的不一样,因此呢,今天小编就来为大家分享 ...

短路隔离保护器的二大作用 (短路隔离器怎么接线)

短路隔离保护器的二大作用 (短路隔离器怎么接线)

护器有什么作用,主要分为二点,一是自动恢复短路保护,二是自锁短路保护,下*体来了解下。短路隔离保护器的二 ...

空气除湿机检修思路四例 (除湿机维护)

空气除湿机检修思路四例 (除湿机维护)

后压缩机运转正常,但排风机不启动。故障检修:KQD-2.8空气去湿机压缩机能启动运转,表明电源正常。查串接于排风 ...

水星无线路由器怎么设置密码(水星路由器怎么加密wifi密码) (水星无线路由器管理员密码)

水星无线路由器怎么设置密码(水星路由器怎么加密wifi密码) (水星无线路由器管理员密码)

由器怎么设置路由器亮红灯哪种故障路由器登录入口和光猫的区别路由器怎么重启路由器怎么连接路由器桥接教程详 ...

Thinkpad笔记本重装系统,跟家电维修小编学习如何安装Thinkpad笔记本重装系统 (thinkpad 如何重启)

Thinkpad笔记本重装系统,跟家电维修小编学习如何安装Thinkpad笔记本重装系统 (thinkpad 如何重启)

于自带的*功能不全,更多的人会选择重装Thinkpad笔记本*,那么该怎么去重装*呢?要知道现在U盘已经逐渐取代光盘成 ...

Win10启动werfault.exe错误?Win10启动werfault.exe发生错误的解决教程 (win10启动项管理在哪里设置)

Win10启动werfault.exe错误?Win10启动werfault.exe发生错误的解决教程 (win10启动项管理在哪里设置)

不是一个错误。这其实是Windows*作*可执行文件之一,它与 ...

闪电数据恢复软件的使用教程介绍 (闪电数据恢复软件注册码永久免费注册码)

闪电数据恢复软件的使用教程介绍 (闪电数据恢复软件注册码永久免费注册码)

的时候,一般我们可以借助专业的数据恢复软件尝试找回,其中闪电数据恢复工具就备受关注。本文介绍了闪电数据 ...

win10系统的7034日志事件代表什么错误? (windows 10.0(0,0))

win10系统的7034日志事件代表什么错误? (windows 10.0(0,0))

情况。当很多用户在寻找自己的管理日志时,一定看到了很多错误日志,那么怎么维修呢?让我们看看。整理分享w ...

Win11电脑防火墙在哪里设置 (Win11电脑防火墙在哪里关闭)

Win11电脑防火墙在哪里设置 (Win11电脑防火墙在哪里关闭)

守护用户的上网安全,不过有些用户不知道该怎么设置win*里面的防火墙,现在就给大家具体介绍一下win防火墙的位置 ...

手机快充技术到底怎么样对电池有影响吗 (手机快充范围)

手机快充技术到底怎么样对电池有影响吗 (手机快充范围)

但鲜有厂商会在谈快充时,谈电池寿命问题。究竟*快充技术好不好呢?*快充技术与普通慢充有什么区别呢?本文小编 ...

Copyright © 2023 武汉电脑维修 All Rights Reserved.

鄂ICP备2023003026号

免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢!邮箱: opceo@qq.com