SysAdminDoc/Disable-AdobeTelemetry

GitHub: SysAdminDoc/Disable-AdobeTelemetry

一个用于在 Windows 上全面禁用 Adobe 遥测、后台进程与应用内营销的 PowerShell 脚本工具。

Stars: 1 | Forks: 0

# 禁用 Adobe 遥测 (Disable-AdobeTelemetry) ![版本](https://img.shields.io/badge/version-v2.5.0-blue) ![许可证](https://img.shields.io/badge/license-MIT-green) ![平台](https://img.shields.io/badge/platform-PowerShell-lightgrey) 一个 PowerShell 脚本,可全面禁用 Adobe 的后台遥测、数据分析、应用内营销 (GrowthSDK) 以及即使在关闭 Adobe 应用程序后仍会运行的持久后台进程。 ## 问题所在 Adobe Creative Cloud 应用程序(Premiere Pro、Photoshop 等)会安装并持续运行后台进程,这些进程包括: - **GrowthSDK** (`%LocalAppData%Low\Adobe\GrowthSDK`) — Adobe 的应用内营销和分析框架,用于提供追加销售提示、对 UI 元素进行 A/B 测试,并将使用数据发送回服务器。删除该目录毫无用处——每次启动时它都会重新生成。 - **CCXProcess.exe** (`C:\Program Files\Adobe\Adobe Creative Cloud Experience`) — Creative Cloud Experience 主机。在关闭所有 Adobe 应用程序后仍然存在,并通过计划任务和其他 Adobe 进程重新启动自身。 - **AdobeIPCBroker.exe** (`C:\Program Files (x86)\Common Files\Adobe\Adobe Desktop Common\IPCBox`) — 进程间通信代理,促进遥测和 CC 服务通信。在关闭 Adobe 应用程序后也会持续存在。 - **多个后台服务和计划任务** — AGSService、AdobeGCInvoker、Adobe Genuine Monitor 等,用于维护遥测管道和“正版”软件检查。 简单地终止这些进程或删除其文件只是暂时的——Adobe 应用程序在启动时会重新启动它们,CC 服务也会重新创建已删除的目录。 ## 此脚本的功能 | 操作 | 详情 | |---|---| | **终止进程** | 终止 CCXProcess、CCLibrary、AdobeIPCBroker、Adobe Desktop Service、AGSService、AGMService、AdobeNotificationClient、AdobeUpdateService、CoreSync、LogTransport2、AdobeCollabSync、CRWindowsClientService、CRLogTransport、acrotray、Adobe CEF Helper 以及 Adobe 启动的 Node.js 实例 | | **中和 GrowthSDK** | 删除所有用户配置文件中的 GrowthSDK 目录,并在其原位植入一个只读、系统隐藏且通过 ACL 拒绝访问的阻止文件,使其无法被重新创建 | | **禁用 CCXProcess** | 将可执行文件重命名为 `.disabled`,应用 IFEO 调试器重定向作为故障保险,并通过 ACL 拒绝权限剥离其执行权限 | | **防火墙阻断 AdobeIPCBroker** | 仅阻止出站连接 — Premiere/Photoshop 的启动需要 IPCBroker,因此保持其正常运行但受防火墙限制。如果之前的运行禁用了它,该脚本还会自动恢复 IPCBroker。 | | **禁用计划任务** | 禁用所有与 Adobe 相关的计划任务(AdobeGCInvoker、Genuine Monitor、更新程序等) | | **禁用服务** | 停止并将以下服务设置为已禁用:AGSService、AGMService、AdobeARMservice、AdobeUpdateService、CCXProcess | | **注册表策略** | 设置 `DisableUsageData`、`DisableGrowth`、`DisableAutoupdates`、`AgsDisabled`,并在企业策略键下禁用使用情况框架 | | **防火墙规则** | 按 IP (TCP+UDP) 解析并阻止当前配置文件的 Adobe 遥测域名(标准模式下为 60 个),同时按程序路径阻止已知的遥测可执行文件 | | **Hosts 文件** | 将所有 Adobe 遥测/分析域名的 Sinkhole 路由到 `0.0.0.0`,检测并移除 Adobe WAM 的 hosts 注入,刷新 DNS 缓存 | | **启动项** | 禁用 HKLM 和 HKCU 下的 Adobe 自动运行注册表项 | ## 被阻止的域名 域名按配置文件进行分级:**最小模式**(22 个纯遥测域名)、**标准模式**(默认,60 个域名——增加了消息传递、崩溃报告、Firefly/GenAI、Sensei、正版/许可证检查)和**激进模式**(75 个域名——增加了字体/Typekit、CC 扩展、主页/搜索、RUM)。激进模式还会阻止主应用程序的出站流量(`Acrobat.exe`/`AcroRd32.exe`),递归地对 Adobe 安装路径下的每个 `.exe` 进行防火墙拦截,并阻止 DNS-over-TLS(端口 853)。规范的列表位于 [`Data/Inventories.psd1`](Data/Inventories.psd1) 中。激活和下载端点(`ims-na1.adobelogin.com`、`auth.services.adobe.com`、`ccmdls.adobe.com`、`ardownload2.adobe.com`、`fonts.adobe.com` 等)已被加入白名单,绝不会被阻止,因此许可和登录功能可保持正常。 标准模式阻止以下域名的出站连接: ``` acp-ss-ew1.adobe.io ada.adobe.io adobe.demdex.net adobe.tt.omtrdc.net adobedc.demdex.net adobeid-na1.services.adobe.com aepxlg.adobe.com analytics.adobe.com armmf.adobe.com assets.adobedtm.com bam.nr-data.net cai-splunk-proxy.adobe.io cc-api-data.adobe.io cc-cdn.adobe.com cc-collab.adobe.io cdn.experience.adobe.net client.messaging.adobe.com crlog-crcn.adobe.com crs.cr.adobe.com dc-genai-access-provisioning-api.adobe.io dcs.adobedc.net detect-ccd.creativecloud.adobe.com dpm.demdex.net fire-fly.adobe.io firefly-ae.adobe.io fls.doubleclick.net fp.adobestats.io genuine.adobe.com geo2.adobe.com hbc.adobe.io hbrcv.adobe.com hz-telemetry-next.adobe.io hz-telemetry.adobe.io ic.adobe.io js-agent.newrelic.com lcs-cops.adobe.io lcs-entitlement.adobe.io lcs-robs.adobe.io lcs-ulecs.adobe.io na1r.services.adobe.com notify.adobe.io o1383653.ingest.sentry.io o1383653.ingest.us.sentry.io odin.adobe.com p13n.adobe.io platform.adobe.io prod-rel-ffc-ccm.oobesaas.adobe.com prod.adobegc.com prod.adobegenuine.com r.openx.net scss-prod-ew1.adobesc.com scss.adobesc.com sensei-irl1.adobe.io senseicore-ew1.adobe.io senseimds.adobe.io server.messaging.adobe.com sstats.adobe.com stats.adobe.com ui.messaging.adobe.com utut-service.adobe.com ``` ## “三层”拦截方法 对于 CCXProcess 等 Adobe 应用程序在启动时重新启动的持久性可执行文件,该脚本使用了三层防御: 1. **重命名** — 将可执行文件重命名为 `.disabled`,以便没有任何程序能在预期路径下找到它。 2. **IFEO 重定向** — 将 Image File Execution Options 调试器键设置为不存在的路径(`AdobeTelemetryBlock.invalid`)。即使 Adobe 恢复了原始可执行文件(例如,在更新期间),Windows 也会拦截其启动并静默终止它。 3. **ACL 拒绝** — 如果由于文件锁定导致重命名失败,则通过针对 Everyone 的拒绝 ACL 剥离其执行权限。 对于 GrowthSDK,采用了类似的方法:将该目录替换为具有拒绝写入/删除 ACL 的只读、系统隐藏文件,从而防止 Adobe 重新创建该目录结构。 ## 防病毒 / EDR 注意事项 (IFEO) 用于中和 `CCXProcess.exe`、`Creative Cloud Helper.exe` 和 `AdobeNotificationClient.exe` 的 IFEO 调试器重定向,会设置一个指向不存在路径的 `Image File Execution Options\\Debugger` 注册表值。这是一种合法且有据可查的 Windows 机制,但它也被归类为 [MITRE ATT&CK T1546.012 (Image File Execution Options Injection)](https://attack.mitre.org/techniques/T1546/012/),因为恶意软件会滥用相同的键来实现持久性。 因此,某些安全产品可能会标记该脚本的注册表写入操作: - **Malwarebytes** 可能会报告 `RiskWare.IFEOHijack`。 - **EDR/SIEM**(Elastic、Splunk、Defender for Endpoint)可能会针对 IFEO 路径引发注册表修改警报。 对于这种防御性使用场景,这些都是预期的误报。在托管环境中,请在运行前将脚本加入白名单: - 在您的 AV/EDR 控制台中为 `Disable-AdobeTelemetry.ps1` 添加路径/哈希排除项。 - 重定向仅针对上述三个 Adobe 可执行文件;调试器值始终解析为 `%SystemRoot%\System32\AdobeTelemetryBlock.invalid`,因此这些条目很容易被识别和审计。 - `-Undo` 会移除脚本创建的所有 IFEO 条目。 如果您希望完全避免使用 IFEO,这些可执行文件也会被重命名为 `.disabled` 并受到 ACL 拒绝(参见上文的“三层拦截”方法);可以使用 `-Skip CCXProcess` 参数运行以省略 IFEO 层,但这意味着如果 Adobe 更新恢复了原始可执行文件,将无法被自动捕获。 ## 安装 从 [GitHub Releases](https://github.com/SysAdminDoc/Disable-AdobeTelemetry/releases/latest) 下载最新版本的 ZIP 压缩包,解压并运行。每个版本都包含 CLI 脚本、GUI 配套程序、README 和 LICENSE。 ``` # 验证下载的 checksum (Get-FileHash Disable-AdobeTelemetry-v2.5.0.zip -Algorithm SHA256).Hash # 与同一 release 中 SHA256SUMS.txt 的 hash 进行对比 ``` 或者直接克隆仓库: ``` git clone https://github.com/SysAdminDoc/Disable-AdobeTelemetry.git cd Disable-AdobeTelemetry ``` ## 用法 ### 环境要求 - Windows 10/11 - PowerShell 5.1+ - **管理员权限**(如果尚未提权,脚本会通过 UAC 自动提权) ### 图形界面 (GUI) ``` .\Disable-AdobeTelemetry.GUI.ps1 ``` 一个具有 Catppuccin Mocha 深色主题的 WPF 配套 GUI,实现了与 CLI 的全面功能对等。包含配置文件选择、试运行开关、流式日志输出、看门狗安装/移除、带有文件选择器的配置文件导入/导出、JSON 状态保存、WFP 跟踪配置以及管道测试控件。会自动提权至管理员。 ### 命令行界面 (CLI) ``` # 在任意 PowerShell prompt 中运行(通过 UAC 自动提权) .\Disable-AdobeTelemetry.ps1 # 预览将要发生的更改而不写入任何内容 .\Disable-AdobeTelemetry.ps1 -DryRun # 仅运行特定 phases(Kill, GrowthSDK, CCXProcess, IPCBroker, Tasks, Services, Registry, Firewall, Hosts, Acrobat, Startup) .\Disable-AdobeTelemetry.ps1 -Only Firewall,Hosts # 运行除 process killing 之外的任何操作 .\Disable-AdobeTelemetry.ps1 -Skip Kill # -Only 和 -Skip 可以组合使用;-Skip 始终优先(此命令仅运行 Firewall) .\Disable-AdobeTelemetry.ps1 -Only Firewall,Hosts -Skip Hosts # 同时拒绝 SYSTEM 对 hosts 文件的写入权限,以便 Adobe WAM 无法重新注入其条目 # (可选启用:锁定后,SYSTEM watchdog 将无法重新断言 hosts 条目) .\Disable-AdobeTelemetry.ps1 -LockHostsFile # 将 per-user telemetry policies 应用于每个 profile,而不仅仅是当前用户 # (可选启用:加载/卸载已注销用户的 NTUSER.DAT hives;通过 -Undo 撤销) .\Disable-AdobeTelemetry.ps1 -AllUsers # 轻度干预:仅阻止 telemetry domains 并终止 processes(不更改 service/task/registry) .\Disable-AdobeTelemetry.ps1 -Profile Minimal # 最大限制:包含 font domains 和 cloud library endpoints .\Disable-AdobeTelemetry.ps1 -Profile Aggressive # 干净启动:终止 telemetry,运行 Photoshop,退出时再次终止(无永久性更改) .\Disable-AdobeTelemetry.ps1 -Launcher Photoshop # 导出或导入已验证的 fleet profile .\Disable-AdobeTelemetry.ps1 -ExportProfile .\standard-profile.json .\Disable-AdobeTelemetry.ps1 -ImportProfile .\standard-profile.json # 检查所有 protections 的当前状态 .\Disable-AdobeTelemetry.ps1 -StatusOnly # 安装每周 watchdog(周一上午 9 点),以便在 Adobe updates 后重新断言阻止规则 .\Disable-AdobeTelemetry.ps1 -InstallWatchdog # 撤销所有更改 .\Disable-AdobeTelemetry.ps1 -Undo ``` 脚本会立即执行,不会出现确认提示,并建议在完成时重新启动。 导入的配置文件在运行任何保护阶段之前会严格进行失败关闭验证。配置文件必须包含 `SchemaVersion`、`Version`、`Profile` 和 `Domains`;无效的 JSON、不支持的 schema 版本、无效的配置文件层级、无效的阶段名称或格式错误的域名都会导致退出并返回代码 `2`。 应用后,脚本会验证 hosts 屏蔽规则是否仍然存在、Adobe WAM hosts 标记是否已移除、`detect-ccd.creativecloud.adobe.com` 是否解析到 sinkhole 条目、防火墙阻止规则是否存在、受支持时是否存在动态关键字规则,以及是否没有 Adobe 拥有的出站连接。验证失败将被写入控制台输出、JSONL 日志以及 `-StatusOnly -OutputFormat JSON`。 上游域名合并在 JSONL 日志中进行审计,包含源 URL、获取时间戳、新增域名、列入白名单的域名、被拒绝的格式错误条目以及最终域名计数。成功的实时获取会更新 `%APPDATA%\Disable-AdobeTelemetry` 下的“最后已知良好”缓存;失败时如果缓存可用,则会使用该缓存。`-DryRun` 在内存中合并上游域名,以便随后的所有阶段计数都是准确的,但不会持久化缓存或进行任何系统更改。 ### 机器可读输出 ``` # 用于 fleet management / automation 的 JSON 状态快照 .\Disable-AdobeTelemetry.ps1 -StatusOnly -OutputFormat JSON ``` JSON 状态包含针对 Adobe 企业版、Acrobat/Reader、Wow6432Node、Substance 3D 和当前用户策略的注册表策略收敛条目。每个条目都包含 `Phase`、`Path`、`Name`、`Type`、`Expected`、`Actual` 和 `State`,用于检查集群合规性。 每次应用/撤销运行还会向 `%APPDATA%\Disable-AdobeTelemetry\logs\Disable-AdobeTelemetry-.jsonl` 写入结构化的 JSONL 日志,其中包含针对各项操作的条目,供集群管理工具摄取。 运行摘要条目也会被写入 **Windows 应用程序事件日志**(来源为 `Disable-AdobeTelemetry`),这样 SIEM/EDR 管道无需解析文件即可跟踪结果。事件 ID:`1000` = 应用成功,`2000` = 应用部分成功(出现一个或多个阶段错误),`3000` = 失败,`4000` = 撤销。试运行不会写入事件。`-StatusOnly` 会报告事件源是否已注册。 ### Intune 主动修正 [`fleet/`](fleet/) 目录包含用于 Microsoft Intune 的检测/修正脚本对(Proactive Remediations / 设备修正): - **`fleet/Detect-AdobeTelemetry.ps1`** — 以 `-StatusOnly -OutputFormat JSON` 模式运行主脚本,评估稳定的合规性信号(存在 hosts 屏蔽、存在防火墙规则、目标服务被阻止),并退出 `0`(合规)或 `1`(需要修正)。 - **`fleet/Remediate-AdobeTelemetry.ps1`** — 应用保护,并将主脚本的退出代码(`0`/`3010` = 成功)映射到 Intune 的 `0`/`1` 规范。 将 `Disable-AdobeTelemetry.ps1` 部署到端点(例如 `%ProgramData%\Disable-AdobeTelemetry\`),或通过 `-ScriptPath` 传递路径;这两个包装器都会自动搜索常见位置。在 **system** 上下文(64 位)中运行它们 — 由于 SYSTEM 已经具有提升的权限,因此不需要交互式提权。 ### 退出代码 | 代码 | 含义 | |------|---------| | `0` | 成功(无需重启)或试运行完成 | | `1` | 致命错误 | | `2` | 无效的参数 | | `3` | 部分成功(某些阶段遇到错误) | | `3010` | 成功,建议重启(SCCM/Intune 规范) | ### 最佳效果 为了获得最干净的结果,请在执行前关闭所有 Adobe 应用程序。如果任何重命名操作报告“文件被锁定”,请在打开任何 Adobe 应用程序之前重新启动并重新运行脚本——在此期间,IFEO 重定向将作为故障保险已被激活。 ### 更新通知 在每次运行时,脚本都会执行**非阻塞**检查,以寻找更新的 GitHub 版本。它会从本地缓存中报告结果(后台任务最多每 24 小时刷新一次),因此它绝不会延迟运行或因网络阻塞。如果有更新的版本可用,将打印一条带有发布 URL 的警告。在 JSON 状态模式下会跳过此检查,并且自动下载任何内容。 ### DNS-over-HTTPS (DoH) Hosts 文件 sinkhole 在操作系统解析器级别工作,但 **DNS-over-HTTPS 会完全绕过它** — 通过加密 HTTPS 通道解析域名的浏览器或操作系统永远不会查询 hosts 文件。该脚本会检测系统自动 DoH、基于接口强制执行的 DoH 以及 Edge/Chrome/Firefox DoH 策略,并在其中任何一项处于活动状态时向您发出警告。`-StatusOnly` 会在 **Hosts 文件** 下报告 DoH 状态。启用 DoH 时,请依赖防火墙和持久路由层(无论域名是如何解析的,它们都会根据 IP 进行阻止),或者禁用 DoH 以实现全面的 hosts 级别覆盖。 ## 哪些功能仍正常工作 Premiere Pro、Photoshop、Illustrator、After Effects 和其他 Creative Cloud 应用程序继续正常运行。您会失去: - 应用程序内的追加销售/营销弹出窗口 - CC Libraries 面板同步 - Adobe 使用情况分析和遥测 - Adobe 正版软件检查 - 自动后台更新(您仍然可以通过 Creative Cloud 手动更新) ## Adobe 更新后 CC 应用程序更新可能会恢复被禁用的可执行文件。IFEO 调试器重定向在更新后依然有效,会自动捕获任何恢复的进程。如果您想重新重命名可执行文件以保持整洁,请在重大更新后重新运行脚本。 ## 撤销操作 ``` .\Disable-AdobeTelemetry.ps1 -Undo ``` `-Undo` 开关会自动撤销所有更改:重新启用服务和计划任务、移除防火墙规则、移除 hosts 文件阻止、移除任何针对 hosts 文件的 SYSTEM 拒绝写入锁定、移除 IFEO 调试器重定向、恢复重命名的可执行文件(包括被禁用的启动快捷方式)、移除 GrowthSDK 阻止文件、移除注册表策略覆盖,并重新启用启动项。 ## 开发说明 静态清单(进程、服务、遥测域名、路径)维护在 `Data/Inventories.psd1` 中。编辑数据文件后,运行 `Build.ps1` 以重新生成主脚本: ``` .\Build.ps1 # Regenerate Disable-AdobeTelemetry.ps1 from data file .\Build.ps1 -Verify # Check if data file and script are in sync ``` 测试: ``` Invoke-Pester -Path .\Tests -Output Detailed ``` ## 许可证 MIT
标签:Adobe, AI合规, IPv6, Libemu, PowerShell, 系统运维, 网络安全, 遥测禁用, 隐私保护