CrowdStrike的库加载和快速升级机制的分析笔记

2024-08-12 213 0

说明:针对CrowdStrike导致大规模Windows主机蓝屏事件,安天云安全中心、安天CERT、安天攻防实验室三部门于07月21日发布了长篇分析报告《CrowdStrike 导致大规模系统崩溃事件的技术分析 ——暨对“猎鹰折羽”的沉思》(后文简称“猎鹰折羽”报告)。同时也推进了多点的分析验证工作,本报告披露其中部分内容。

关于其快速升级删除掉问题“通道文件”的方式,存在一个现象,即在不联网的情况下,让有问题C-*291*sys文件和最新的C-*291*001.sys并存,重新启动后也会自动清除掉问题文件。对其机理,我们提出了两种猜测,第一种是,当升级系统一个分类重新出现版本号01文件时(有可能再辅助一个时间戳判断),则认为本类型重新初始化,自动删除旧的版本号文件。第二种是,将删除对应问题文件的处置定义放到了新的01号文件中。

第一种的猜测依据有两个,对其他分类的文件也不存在版本号01文件能和其他版本并存情况,另外分类规则是针对不同场景的,C-*291*应为主防类的规则,不应直接进行文件处理。第二种情况也不排除,格式中都支持一个自我应急处置的保留机制。我们倾向于第一种。但后续我们的分析可能不在公开了,从业界传统原则上,针对同业产品,我们的可公开逆向分析内容,不宜超越事故分析边界。

1.1   CrowdStrike C-*.sys 系列通道文件(规则升级文件)加载机制

1.1.1   通道文件格式回顾

我们在“猎鹰折羽”报告中已分析了C-*.sys系列文件的格式。指出符合相关文件名的文件虽为Windows驱动文件后缀“.sys”,实际并非Windows PE格式文件,而是CrowdStrike自定义格式文件,该类文件文件头结构如我们上篇报告内格式分析结果所示,文件头内容与文件名强相关,程序会根据文件头信息校验文件名,文件内另包含hash校验信息,进行二次校验,hash计算方式为调用Windows自带库函数计算。

1.1.2   通道文件验证加载方式

C-*.sys系列文件由CrowdStrike主服务 “CrowdStrike Falcon Sensor Service”的CSFalconService.exe进程加载,该服务使用了微软向反病毒供应商开放的反病毒产品保护服务,使用 SERVICE_LAUNCH_PROTECTED_ANTIMALWARE_LIGHT 保护类型启动,实现服务保护,服务启动后调用一系列内核函数进行目录遍历、文件读取,验证相关C-00000xxx-00000000-00000xxx.sys 文件有效性,随后通过IPC(进程间通信)将策略传递给驱动和引擎执行策略。

使用ZwQueryDirectoryFile函数遍历C:\Windows\System32\drivers\CrowdStrike 目录中的 C-00000xxx-00000000-00000xxx.sys 文件,

使用 ZwCreateFile、ZwReadFile打开并读取文件内容,解析文件头对文件名进行验证,

调用Windows自带加密基元库bcrypt.dll中BCryptFinishHash函数对文件内容进行hash验证,该函数定义于       bcrypt.h,验证通过后进行进一步解析操作。

1.1.3   蓝屏的原因

关于蓝屏的具体分析,微软已经给出了比较详尽的分析。我们验证是正确的。

微软在分析报告[1]中指出,由于WER(Windows Error Reporting,即Windows错误报告)数据只提供了当前状态的压缩版本,无法查看更大范围的反汇编指令。通过搜索指令特征“45 8B 08”,不难定位到下图的关键指令位置,进行更为深入的分析。

由上图可见,虽然程序在01400E14E8偏移处判断了r8寄存器是否为0(避免访问空指针),但其后并未进一步校验r8寄存器指向地址的合法性。随后程序在01400E14ED偏移访问了r8寄存器指向的非法地址,最终导致了蓝屏的发生。

1.1.4   补救蓝屏事件的新通道文件

针对此次蓝屏事件,CrowdStrike紧急生成了策略文件C-00000291-00000000-00000001.sys,在整个升级策略中,直接删除已有的C-00000291-*.sys,来进行启动化处置。前期已有的C-00000291-*.sys系列文件文件名中,没有C-00000291-00000000-00000001.sys文件,之前按照我们的猜测 C-*.sys系列文件,文件名最后一节为库版本(更新次数),根据初步规则判断当最后一节服务器文件重新回到标号1时,可能意味着基于删除策略清理对应类别的规则文件。

1.2   CrowdStrike agent 启动网络通信和升级机制

1.2.1   网络通信时机

关于CrowdStrike Falcon Sensor,可以回看《猎鹰折羽》分析报告。CrowdStrike Falcon Sensor 在Windows启动内核加载阶段完成后,会话管理器启动阶段前期,在后台进行联网与远程服务端建立链接,进行策略文件更新和数据回传。具体过程为通过dns解析 ts01-gyr-maverick.cloudsink.netlfodown01-gyr-maverick.cloudsink.net域名获取云上服务器ip,建立ssl加密通信进行策略下发和信息上传。

网络通信行为在Windows内核加载阶段完成后,会话管理器启动阶段前期,用户登录前开始。

1.2.2   CrowdStrike Falcon Sensor 回连地址

除上面两个cloudsink.net子域名为CrowdStrike Falcon Sensor 回连地址,不同地域回连地址有所差异,已知的回连地址如下:

US-1 environments:

http://ts01-b.cloudsink.net

http://lfodown01-b.cloudsink.net

http://lfoup01-b.cloudsink.net

https://falcon.CrowdStrike.com

https://assets.falcon.CrowdStrike.com

https://assets-public.falcon.CrowdStrike.com

https://api.CrowdStrike.com

https://firehose.CrowdStrike.com

US-2 environments:

http://ts01-gyr-maverick.cloudsink.net

http://lfodown01-gyr-maverick.cloudsink.net

http://lfoup01-gyr-maverick.cloudsink.net

https://falcon.us-2.CrowdStrike.com

https://assets.falcon.us-2.CrowdStrike.com

https://assets-public.us-2.falcon.CrowdStrike.com

http://api.us-2.CrowdStrike.com

https://firehose.us-2.CrowdStrike.com

US-GOV-1 environments:

https://ts01-laggar-gcw.cloudsink.net

http://sensorproxy-laggar-g-524628337.us-gov-west-1.elb.amazonaws.com

https://lfodown01-laggar-gcw.cloudsink.net

http://ELB-Laggar-P-LFO-DOWNLOAD-1265997121.us-gov-west-1.elb.amazonaws.com

https://falcon.laggar.gcw.CrowdStrike.com

http://laggar-falconui01-g-245478519.us-gov-west-1.elb.amazonaws.com

http://api.laggar.gcw.CrowdStrike.com

https://firehose.laggar.gcw.CrowdStrike.com

http://falconhose-laggar01-g-720386815.us-gov-west-1.elb.amazonaws.com

US-GOV-2 environments:

http://ts01-us-gov-2.cloudsink.net

http://lfodown01-us-gov-2.cloudsink.net

http://api.us-gov-2.CrowdStrike.com

http://firehose.us-gov-2.CrowdStrike.com

EU-1 environments:

http://ts01-lanner-lion.cloudsink.net

http://lfodown01-lanner-lion.cloudsink.net

http://lfoup01-lanner-lion.cloudsink.net

https://assets.falcon.eu-1.CrowdStrike.com

https://assets-public.falcon.eu-1.CrowdStrike.com

http://api.eu-1.CrowdStrike.com

https://firehose.eu-1.CrowdStrike.com

1.2.3   网络通信通道筛选

CrowdStrike Falcon Sensor  内置了网络通信通道筛选机制,在Windows 系统内配置全局代理的前提下,CrowdStrike Falcon Sensor 解析域名获取其服务器ip后,对系统代理做内部逻辑验证,不符合内部逻辑时直接绕过Windows全局代理,仍旧通过Windows网络直连其服务器获取策略和上传数据。(下图192.168.43.73为Windows全局代理)

相关数据流如下:

1.2.4    内部证书验证机制

CrowdStrike Falcon Sensor  内置证书验证机制,独立于Windows证书管理机制,不信任Windows已授信证书。与其服务器通信时,使用其内部证书验证机制,验证服务器证书。

小结:

CrowdStrike官网给出了如下信息:CrowdStrike官网给出了如下信息:“Reboot the host to give it an opportunity to download the reverted channel file. We strongly recommend putting the host on a wired network (as opposed to WiFi) prior to rebooting as the host will acquire internet connectivity considerably faster via ethernet。(重启主机,让它有机会下载还原的频道文件。我们强烈建议在重新启动之前将主机置于有线网络(而不是WiFi)上,因为主机通过以太网获得互联网连接的速度要快得多)”从分析来看,CrowdStrike存在快速升级机制,初步观测至少Windows启动内核加载阶段完成后,会话管理器启动阶段前期,会有一个无条件的升级机制。CrowdStrike有可能倾向认为,在网络速度足够快的情况下,强制升级会先于蓝屏完成。但也不排除,有更底层前置的通讯机制,但我们未能复现。

//BTW

在初始事件验证中,安天攻防实验室发现了一个奇怪的现象,在公有云环境部署了一套早期版本的CrowdStrike 在部署了问题文件C-00000291-00000000-00000xxx.sys后,触发了出了蓝屏,但其重启后系统能够正常启动。但在单机采取同样的验证方式,则反复蓝屏。

有老师提出应关注CrowdStrike快速升级机理的建议,并建议我们复盘公有云下重启不蓝屏问题是否源自其快生机制,遂推进了本文相关分析工作。关于CrowdStrike是否存在更为底层的快生机制,我们还在继续跟进分析。

参考资料:

[1] https://www.microsoft.com/en-us/security/blog/2024/07/27/windows-security-best-practices-for-integrating-and-managing-security-tools/


4A评测 - 免责申明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。

本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。

如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!

程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。

侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)

相关文章

webpack打包站点,js文件名批量获取思路
加密对抗靶场enctypt——labs通关
【论文速读】| 注意力是实现基于大语言模型的代码漏洞定位的关键
蓝队技术——Sysmon识别检测宏病毒
内网渗透学习|powershell上线cs
LLM attack中的API调用安全问题及靶场实践

发布评论