HollowGraph恶意软件实战检测:M365日历C2溯源、排查脚本与租户加固配置清单
2026/7/23 11:34:36 网站建设 项目流程

前言

传统网络安全防御的核心逻辑,长期依赖边界防火墙、IPS、EDR拦截恶意IP、恶意域名、异常端口外联。绝大多数企业的M365安全运维,只盯着邮件钓鱼、恶意附件、异常登录这三类高频风险,完全忽略了Microsoft Graph API滥用带来的隐性威胁。

2026年Group-IB披露的HollowGraph恶意软件攻击活动,彻底打破了常规云安全防御认知。这套攻击体系不利用任何系统漏洞、不搭建私有C2服务器、不产生任何可疑流量,全程复用微软官方合法云服务通道,借助Outlook远期日历事件实现指令下发与数据窃取,大量政企租户长期被渗透却无任何安全设备告警。

本次文章从实战角度出发,拆解HollowGraph完整攻击链路、隐匿原理,提供可直接落地的PowerShell全租户排查脚本、Defender检测规则、SIEM检索语句,同时配套全套M365租户加固配置,帮运维人员彻底补齐云日历安全监控盲区。

一、HollowGraph威胁基础全貌与攻击定位

1.1 核心威胁基础信息

HollowGraph属于Cavern模块化后门框架的衍生变体,是针对性定向间谍攻击工具,主要瞄准以色列政企、科研、金融类核心组织,目前攻击范围正在向全球政企M365租户扩散。该恶意软件无专属CVE漏洞编号,核心攻击手段为合法身份权限滥用+Microsoft Graph API合规调用,属于典型的无漏洞高级持续性威胁。

关键情报来源为Group-IB威胁情报实验室、The Hacker News、FreeBuf安全社区,威胁评级为高危持续性渗透威胁,具备极强的隐蔽性、长驻留性、数据窃取性。

1.2 恶意程序底层特性

HollowGraph主体为.NET NativeAOT编译的独立DLL文件,无需依赖本地.NET运行环境,落地后无明显进程特征,不易被常规EDR进程筛查捕获。程序功能极度精简,仅保留两个核心执行指令:get、send,分别对应攻击者指令接收、本地数据外渗两大核心动作,最大化降低程序体积与行为特征。

区别于传统木马,HollowGraph不会主动发起外网连接、不会创建系统服务、不会修改注册表启动项,所有恶意行为均通过调用微软官方Graph API完成,行为特征完全贴合正常企业用户办公操作。

二、HollowGraph攻击链路与隐匿核心原理

2.1 整体攻击架构流程

整个攻击链路分为身份劫持、指令预埋、本地执行、数据回传、长期潜伏五个阶段,全程无任何违规网络行为,完美绕过边界安全设备与终端基础防护。我用架构图完整还原端到端攻击逻辑,贴合真实渗透场景。

A[攻击者] -->|1.窃取M365有效凭证/令牌| B[劫持租户用户身份]
B -->|2.调用Microsoft Graph API| C[创建2050年远期日历事件]
C -->|3.嵌入加密指令/窃取任务| D[日历事件挂载加密附件]
D -->|4.定时轮询Graph日历接口| E[终端HollowGraph木马]
E -->|5.解密执行指令| F[本地探测文件/窃取敏感数据]
F -->|6.加密回传数据| G[新建远期日历事件上传窃取文件]
G -->|7.攻击者登录邮箱读取附件| H[完成数据窃取]
E -->|8.无本地驻留特征| I[长期潜伏、循环执行]

2.2 2050年远期时间戳隐匿核心逻辑

这是HollowGraph最核心的隐身手段,也是绝大多数企业防御失效的关键原因。攻击者将所有恶意日历事件的时间固定设置为2050年及以后,主流为2050年5月13日UTC时段。

普通企业员工、运维人员的日历使用习惯,仅聚焦当日、本周、本月日程,极少主动检索数年乃至数十年后的日历内容。运维常规巡检、安全人员风险排查,均不会将远期日历事件作为核查对象,这就让恶意指令载体实现永久视觉隐身。

同时,Outlook客户端、网页端默认不加载超远期日历数据,不会推送任何日程提醒,用户完全无法感知恶意事件存在,为攻击者长期潜伏、反复窃取数据提供了绝对隐蔽条件。

2.3 双向C2通信完整机制

HollowGraph摒弃了传统木马的IP+端口C2通信模式,直接将M365日历改造为双向死信通信通道,指令下发、数据回传全部依托日历事件及附件完成。

get指令负责下行指令传输。攻击者通过Graph API在被劫持用户邮箱创建固定格式日历事件,事件主题以Event ID: 开头,自定义任务编号,恶意指令经过加密后写入事件附件。终端木马定时发起Graph日历查询请求,读取远期事件附件,解密后执行文件检索、数据窃取、系统信息采集等操作。

send指令负责上行数据外渗。木马在本地采集到企业机密文件、业务数据、账号信息后,通过RSA+AES-256-GCM混合加密算法加密数据,规避明文传输检测。随后调用Graph API创建全新的2050年远期日历事件,事件主题以Boss随机字符+任务编号命名,加密数据以File+数字.txt格式作为附件挂载。攻击者随时登录劫持邮箱,下载附件解密即可获取核心数据。

2.4 攻击前置条件与落地路径

该攻击无任何漏洞利用过程,所有攻击行为均建立在合法权限滥用基础上,攻击者只需获取目标租户有效身份权限即可落地。主流入侵路径分为三类。

第一类是钓鱼劫持,通过仿冒微软登录页面、企业办公通知邮件,诱导员工输入M365账号密码,或窃取用户OAuth登录令牌,获取长期有效访问权限。

第二类是恶意应用授权,攻击者搭建仿冒办公应用,诱导用户授予Calendars.ReadWrite日历读写权限,依托授权API接口操控用户日历。

第三类是服务主体劫持,通过渗透内网获取企业自建应用、服务主体的客户端密钥,直接对接Entra ID调用Graph接口,批量操控租户内用户日历。

三、HollowGraph攻击突破传统防御的核心原因

目前90%以上的政企M365防御体系,都无法拦截HollowGraph攻击,核心问题不是设备能力不足,而是防御维度存在根本性缺失。

首先是流量完全合法化。所有通信流量均对接微软官方域名graph.microsoft.com,属于云服务正常合规请求,边界防火墙、下一代IPS、流量审计设备默认全部放行,不存在任何可拦截的恶意IP、恶意域名、异常端口。传统流量检测手段完全失效。

其次是监控维度大面积空白。企业现有安全策略,重点监控邮件收发、邮件附件、OneDrive文件传输、账号异常登录,几乎所有租户都未开启日历事件操作审计、日历附件读写监控。EDR、邮件安全网关、云应用防护设备均无对应检测规则,恶意行为全程无告警。

再者是无补丁可修复。传统网络攻击可通过系统补丁、软件更新封堵漏洞,而HollowGraph攻击滥用的是微软官方开放的API权限,属于企业权限管控不当导致的人为安全风险,微软无对应修复补丁,企业不主动加固则永久存在漏洞。

最后是潜伏周期无限制。远期日历事件一旦创建,永久保存在用户邮箱内,不会自动删除。木马定时轮询执行任务,无进程特征、无日志异常,可在企业内网潜伏数月甚至数年,持续窃取核心数据不被发现。

四、M365租户HollowGraph风险全量排查实战脚本

下面提供可直接复制落地的PowerShell排查脚本,适配所有M365商业租户、教育租户,支持批量扫描全租户用户,自动筛选远期恶意日历事件、异常命名事件、可疑附件,一键导出风险报表,适配日常运维巡检与应急溯源场景。

脚本核心筛查特征:2045年以后远期日历事件、Event ID/Boss开头恶意主题、批量日历附件、非工作时段异常日历操作。

# HollowGraph M365日历C2风险全租户排查脚本# 适用场景:日常巡检、入侵溯源、风险自查# 运行权限:全局管理员、Exchange管理员、Graph日历读取全局权限# 前置模块安装Install-Module-Name ExchangeOnlineManagement,Microsoft.Graph.Calendar,Microsoft.Graph.AuditLog-Force-AllowClobber# 初始化日志与风险数组$riskResult= @()$scanTime=Get-Date-Format"yyyy-MM-dd HH:mm:ss"# 设定风险时间阈值:2045年之后所有日历事件定义为高危可疑$dangerTime=Get-Date"2045-01-01 00:00:00"# 连接M365服务Connect-ExchangeOnline-ShowBanner:$falseConnect-MgGraph-Scopes"Calendars.Read.All","AuditLog.Read.All","User.Read.All"-Force# 获取租户所有邮箱用户$allMailUsers=Get-EXORecipient-RecipientTypeDetails UserMailbox-ResultSize Unlimited# 逐用户遍历扫描日历事件foreach($userin$allMailUsers){$upn=$user.UserPrincipalNameWrite-Host"【正在扫描】用户:$upn"-ForegroundColor Cyantry{$userEvents=Get-MgUserEvent-UserId$upn-All:$true-ErrorAction Stopforeach($eventin$userEvents){# 解析日历事件时间$eventStartTime=[DateTime]$event.Start.DateTime# 匹配HollowGraph恶意特征$isFutureRisk=$eventStartTime-gt$dangerTime$isMalSubject=$event.Subject-match"^Event ID:|^Boss.*ID"$hasAttach=$event.Attachments.Count-gt0# 命中风险特征则录入结果if($isFutureRisk-or$isMalSubject-or$hasAttach){$riskObj=[PSCustomObject]@{扫描时间 =$scanTime用户UPN =$upn日历事件主题 =$event.Subject 事件开始时间 =$eventStartTime.ToString("yyyy-MM-dd HH:mm:ss")附件数量 =$event.Attachments.Count 事件创建时间 =$event.CreatedDateTime 事件唯一ID =$event.Id 风险判定 =if($isFutureRisk){"超远期日历事件"}elseif($isMalSubject){"恶意特征主题"}else{"可疑日历附件"}}$riskResult+=$riskObj}}}catch{Write-Host"【扫描失败】用户:$upn错误信息:$_"-ForegroundColor Redcontinue}}# 导出扫描报表$savePath=".\M365_HollowGraph风险扫描报表_$(Get-Date-Format yyyyMMdd).csv"$riskResult|Export-Csv-Path$savePath-NoTypeInformation-Encoding UTF8Write-Host"扫描完成,风险报表已导出至:$savePath"-ForegroundColor Green# 断开服务连接Disconnect-MgGraph-Confirm:$falseDisconnect-ExchangeOnline-Confirm:$false

4.1 脚本落地使用规范

运行环境建议使用Windows Server运维服务器或本地合规运维终端,禁止在个人办公电脑运行全局权限脚本,避免权限泄露。首次运行需手动授权Graph API读取权限,后续可配置任务计划程序实现每周自动扫描。

报表重点核查维度:2050年固定时段事件、无合理业务场景的远期事件、主题含特殊特征且携带附件的日历记录、非工作时段批量创建的日历事件。

五、Defender for Cloud Apps & XDR专属检测规则

排查脚本偏向事后溯源,企业常态化防御需要依托微软原生安全设备实现实时告警、自动拦截。下面提供可直接复制部署的检测规则与Kusto检索语句,适配M365 Defender全系产品。

5.1 行为基线检测规则(直接部署)

在Defender for Cloud Apps中新建自定义云应用策略,启用以下5条核心检测逻辑,全部适配HollowGraph攻击行为特征。

1. 账号在00:00-06:00非工作时段,批量调用Graph日历创建接口,1小时内创建3条及以上远期日历事件。

2. 所有创建时间晚于2045年的日历事件,无论主题、用途,全部触发可疑告警。

3. 日历事件挂载txt格式附件,且附件无明文业务内容、加密特征明显。

4. 未备案第三方应用、未知服务主体申请并使用Calendars.ReadWrite全域读写权限。

5. 非Outlook、非Teams、非浏览器进程,主动发起graph.microsoft.com日历API请求。

5.2 Kusto实时检索语句(SIEM/XDR通用)

该语句可直接粘贴至Defender XDR高级检索、Azure SIEM、自建M365日志分析平台,实时监控恶意日历操作行为。

// HollowGraph M365日历C2行为实时检索 AuditLogs | where OperationName in ("Add event to calendar","Update calendar event","Add attachment to event","Delete calendar event") // 筛选2045年后远期风险事件 | extend EventStartTime = parse_datetime(AdditionalProperties.newValue.startDateTime) | extend EventSubject = AdditionalProperties.newValue.subject | extend AttachCount = array_length(AdditionalProperties.newValue.attachments) | where EventStartTime > datetime(2045-01-01) or EventSubject has_any ("Event ID:","Boss") or AttachCount > 0 // 剔除正常办公设备IP,保留异常外联 | where ClientIP !has "内网网段" // 整理核心告警字段 | project 告警时间=TimeGenerated, 操作用户=UserPrincipalName, 操作类型=OperationName, 日历主题=EventSubject, 事件时间=EventStartTime, 附件数量=AttachCount, 访问IP=ClientIP, 应用名称=AppDisplayName | sort by 告警时间 desc

六、企业M365租户分层加固配置清单(可直接落地)

HollowGraph攻击的核心突破口是权限滥用与监控缺失,不存在一键修复的补丁,只能通过分层管控、全域监控、权限收敛彻底封堵风险。以下加固方案按优先级排序,适配大中小各类政企租户。

6.1 身份权限层:源头阻断API滥用

首先完成OAuth应用权限收敛,这是最核心的加固动作。登录Entra ID控制台,进入应用权限管理界面,批量回收所有未知第三方应用的Calendars.ReadWrite、Calendars.ReadWrite.All权限。仅保留企业官方办公、审批、协同类合规应用的日历权限,且严格遵循最小权限原则,禁止开放全域读写权限。

每周固定开展应用审计,清理闲置、未知、异常注册的应用与服务主体,杜绝陌生应用持有高权限API调用能力。

其次强化身份认证体系,全租户强制开启MFA多因素认证,禁用短信、语音验证码等易被劫持的认证方式,统一使用微软验证器离线认证。配置条件访问策略,拦截境外IP、匿名代理IP、未加入企业设备基线的终端访问Graph API与M365核心服务。

针对管理员账号实施特权隔离,全局管理员、Exchange管理员、安全管理员仅在特权工作站登录,禁止日常办公终端使用高权限账号,防止凭证批量泄露。

6.2 日志监控层:补齐日历安全盲区

绝大多数企业默认关闭日历操作审计日志,必须手动开启全域审计。在M365合规中心启用日历事件创建、修改、删除、附件上传、API调用全量日志采集,日志留存时长设置为12个月及以上,满足溯源与合规要求。

将M365审计日志全量对接企业SIEM、XDR平台,配置远期日历事件、批量日历操作、异常附件上传的自动告警规则,触发告警后自动锁定涉事用户账号,阻断持续渗透。

配置服务器定时任务,每周自动执行前文排查脚本,生成风险巡检报表,形成常态化自查机制。

6.3 终端防护层:拦截恶意木马行为

在EDR平台新增进程行为规则,拦截非官方Office进程、未知.NET进程发起的Graph日历API请求。重点监控.NET NativeAOT编译的未知DLL文件,拦截其加载运行、外网外联行为。

建立终端办公基线,正常用户仅在工作时段操作日历,对凌晨、深夜的批量日历读写行为设置高危告警,及时发现木马定时轮询行为。

6.4 应急处置层:入侵后标准化响应流程

企业发现HollowGraph风险痕迹后,严格按照遏制、清除、恢复、加固四步流程处置,避免处置不当导致二次渗透。

第一时间遏制风险,立即吊销涉事账号所有OAuth令牌、刷新账号密码、临时禁用账号M365访问权限,阻断攻击者后续操控通道。

全面清理恶意痕迹,批量删除租户内所有2045年后的可疑日历事件,彻底清理挂载的加密附件,在终端查杀恶意DLL程序,溯源钓鱼邮件、恶意授权等入侵入口。

安全核验恢复,核查涉事账号所有权限、第三方应用授权记录,清理可疑服务主体与应用,确认无残留风险后恢复账号正常使用。

最后迭代加固策略,优化Graph API监控规则、收紧OAuth权限策略,组织全员开展云账号安全、钓鱼识别专项培训,从源头降低入侵风险。

七、威胁迭代趋势与企业防御误区总结

当下云安全攻击已经彻底脱离传统漏洞利用、恶意流量外联的固有模式,SaaS服务原生功能滥用成为高级攻击者的首选手段。HollowGraph的出现不是个例,而是未来云间谍攻击的主流趋势。

很多企业存在严重的防御误区,认为部署了邮件网关、EDR、防火墙就可以抵御绝大多数威胁,完全忽视M365精细化权限管控、细分日志审计的重要性。SaaS服务的合法性,正在成为攻击者最好的隐身外衣。

传统边界防御正在逐步失效,云原生威胁的对抗核心,不再是拦截恶意流量,而是管控合法权限、识别异常行为、补齐监控盲区。企业必须跳出传统安全思维,针对M365各类细分业务(日历、联系人、任务、网盘)建立专属监控体系,才能应对持续迭代的高级云威胁。


互动讨论

1. 你的企业M365租户是否开启了日历事件操作审计日志?日常运维中是否忽略过日历相关安全风险?

2. 你在运维工作中是否遇到过依托Office原生功能、合法云API实现的隐蔽攻击?欢迎在评论区分享实战经验。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询