使用篡改防护保护 macOS 安全设置

适用于:

希望体验 Defender for Endpoint? 注册免费试用版

macOS 中的篡改保护有助于防止未经授权的用户对安全设置进行不必要的更改。 篡改保护有助于防止在 macOS 上未经授权删除Microsoft Defender for Endpoint。 此功能还有助于防止重要的安全文件、进程和配置设置被篡改。

重要

从 2023 年 3 月开始,macOS 上的Microsoft Defender for Endpoint将开始遵循通过Microsoft Defender门户 (https://security.microsoft.com) 中的高级设置下的全局防篡改开关应用的篡改防护选择。 可以选择使用移动设备管理 (MDM) 解决方案(例如Intune或 JAMF)强制实施 (阻止/审核/禁用) 自己的 macOS 篡改防护设置, (建议) 。 如果未通过 MDM 强制实施篡改保护设置,则本地管理员可以继续使用以下命令手动更改设置: sudo mdatp config tamper-protection enforcement-level --value (chosen mode)

可以在以下模式下设置篡改防护:

主题 说明
Disabled 篡改防护已完全关闭。
Audit 会记录篡改操作,但不会阻止。 此模式是安装后的默认模式。
阻止 防篡改已打开;篡改操作被阻止。

当篡改防护设置为审核或阻止模式时,可以预期以下结果:

审核模式

  • 卸载 Defender for Endpoint 代理的操作记录 (审核)
  • 对 Defender for Endpoint 文件的编辑/修改记录 (审核)
  • 在 Defender for Endpoint 位置下创建新文件会记录 (审核)
  • ) 审核 (记录删除 Defender for Endpoint 文件
  • 将记录 Defender for Endpoint 文件的重命名 (审核)

阻止模式

  • 阻止卸载 Defender for Endpoint 代理的操作
  • 阻止编辑/修改 Defender for Endpoint 文件
  • 阻止在 Defender for Endpoint 位置下创建新文件
  • 已阻止删除 Defender for Endpoint 文件
  • 阻止重命名 Defender for Endpoint 文件
  • 用于停止代理 (wdavdaemon) 失败的命令

下面是响应阻止操作的系统消息示例:

操作已阻止消息的屏幕截图。

可以通过提供模式名称作为强制级别来配置篡改防护模式。

注意

  • 模式更改将立即应用。
  • 如果在初始配置期间使用了 JAMF,则还需要使用 JAMF 更新配置。

开始之前

  • 支持的 macOS 版本:Big Sur (11) 或更高版本。
  • Defender for Endpoint 的最低要求版本:101.70.19。

强烈建议的设置:

  • 启用系统完整性保护 (SIP) 。 有关详细信息,请参阅 禁用和启用系统完整性保护

  • 使用移动设备管理 (MDM) 工具来配置Microsoft Defender for Endpoint。

  • 确保 Defender for Endpoint 具有 完全磁盘访问 授权。

    注意

    启用 SIP 和通过 MDM 完成所有配置都不是必需的,但对于完全受保护的计算机是必需的,否则本地管理员仍可以进行 macOS 管理的篡改更改。 例如,通过移动设备管理解决方案(如Intune)启用 TCC (透明度、同意 & 控制 ) ,将消除全局管理员撤消本地管理员的完整磁盘访问授权的风险。

在 macOS 设备上配置篡改防护

Microsoft Defender按以下顺序评估这些设置。 如果配置了更高的优先级设置,则忽略其余部分:

  1. 托管配置文件 (篡改保护/enforcementLevel 设置) :
  2. 使用) 手动mdatp config tamper-protection enforcement-level --value { disabled|audit|block } 配置 (
  3. 如果在安全门户中设置了篡改防护标志,则预览版 (使用“阻止”模式,并非所有客户都可用)
  4. 如果计算机已获得许可,则默认使用“审核”模式
  5. 如果计算机未获得许可,则篡改防护处于“阻止”模式

开始之前

确保计算机已获得许可且正常运行, (相应的值报告 true) :

mdatp health
healthy                                     : true
health_issues                               : []
licensed                                    : true
...
tamper_protection                           : "audit"

tamper_protection 报告有效强制级别。

Manual configuration - 手动配置

  1. 使用以下命令切换到限制性最高的模式:
sudo mdatp config tamper-protection enforcement-level --value block

手动配置命令的图像

注意

必须使用通过 MDM) 在生产计算机上部署的托管配置文件 (。 如果本地管理员通过手动配置更改了篡改防护模式,他们可以随时将其更改为限制性较低的模式。 如果通过托管配置文件设置了篡改保护模式,则只有全局管理员才能撤消该模式。

  1. 验证结果。
healthy                                     : true
health_issues                               : []
licensed                                    : true
engine_version                              : "1.1.19300.3"
app_version                                 : "101.70.19"
org_id                                      : "..."
log_level                                   : "info"
machine_guid                                : "..."
release_ring                                : "InsiderFast"
product_expiration                          : Dec 29, 2022 at 09:48:37 PM
cloud_enabled                               : true
cloud_automatic_sample_submission_consent   : "safe"
cloud_diagnostic_enabled                    : false
passive_mode_enabled                        : false
real_time_protection_enabled                : true
real_time_protection_available              : true
real_time_protection_subsystem              : "endpoint_security_extension"
network_events_subsystem                    : "network_filter_extension"
device_control_enforcement_level            : "audit"
tamper_protection                           : "block"
automatic_definition_update_enabled         : true
definitions_updated                         : Jul 06, 2022 at 01:57:03 PM
definitions_updated_minutes_ago             : 5
definitions_version                         : "1.369.896.0"
definitions_status                          : "up_to_date"
edr_early_preview_enabled                   : "disabled"
edr_device_tags                             : []
edr_group_ids                               : ""
edr_configuration_version                   : "20.199999.main.2022.07.05.02-ac10b0623fd381e28133debe14b39bb2dc5b61af"
edr_machine_id                              : "..."
conflicting_applications                    : []
network_protection_status                   : "stopped"
data_loss_prevention_status                 : "disabled"
full_disk_access_enabled                    : true

请注意,“tamper_protection”现在设置为“阻止”。

JAMF

通过添加以下设置,在Microsoft Defender for Endpoint配置文件中配置篡改防护模式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>tamperProtection</key>
    <dict>
      <key>enforcementLevel</key>
      <string>block</string>
    </dict>
  </dict>
</plist>

注意

如果已有用于Microsoft Defender for Endpoint的配置文件,则需要向其添加设置。 不应创建第二个配置文件。

Intune

设置目录

可以创建新的设置目录配置文件来添加篡改防护配置,也可以将其添加到现有配置。 设置“强制级别”可以在类别“Microsoft Defender”和子类别“篡改防护”下找到。 之后,选择所需的级别。

自定义配置文件

作为替代方法,还可以通过自定义配置文件配置篡改保护。 有关详细信息,请参阅在 macOS 上设置Microsoft Defender for Endpoint的首选项

注意

对于Intune配置,可以创建新的配置文件配置文件来添加篡改防护配置,也可以将这些参数添加到现有配置文件。 选择所需的级别。

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1">
    <dict>
        <key>PayloadUUID</key>
        <string>C4E6A782-0C8D-44AB-A025-EB893987A295</string>
        <key>PayloadType</key>
        <string>Configuration</string>
        <key>PayloadOrganization</key>
        <string>Microsoft</string>
        <key>PayloadIdentifier</key>
        <string>com.microsoft.wdav</string>
        <key>PayloadDisplayName</key>
        <string>Microsoft Defender for Endpoint settings</string>
        <key>PayloadDescription</key>
        <string>Microsoft Defender for Endpoint configuration settings</string>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadEnabled</key>
        <true/>
        <key>PayloadRemovalDisallowed</key>
        <true/>
        <key>PayloadScope</key>
        <string>System</string>
        <key>PayloadContent</key>
        <array>
            <dict>
                <key>PayloadUUID</key>
                <string>99DBC2BC-3B3A-46A2-A413-C8F9BB9A7295</string>
                <key>PayloadType</key>
                <string>com.microsoft.wdav</string>
                <key>PayloadOrganization</key>
                <string>Microsoft</string>
                <key>PayloadIdentifier</key>
                <string>com.microsoft.wdav</string>
                <key>PayloadDisplayName</key>
                <string>Microsoft Defender for Endpoint configuration settings</string>
                <key>PayloadDescription</key>
                <string/>
                <key>PayloadVersion</key>
                <integer>1</integer>
                <key>PayloadEnabled</key>
                <true/>
                <key>tamperProtection</key>
                <dict>
                             <key>enforcementLevel</key>
                             <string>block</string>
                </dict>
            </dict>
        </array>
    </dict>
</plist>

检查状态

运行以下命令,检查篡改防护状态:

mdatp health --field tamper_protection

如果启用了篡改防护,则结果显示“阻止”:

块模式下的篡改防护图像

还可以运行 full mdatp health 并在输出中查找“tamper_protection”。

有关篡改防护状态的扩展信息,请运行 mdatp health --details tamper_protection

验证防篡改防护功能

可以通过各种方式验证篡改保护是否已启用。

验证块模式

在Microsoft Defender门户中引发篡改警报

Microsoft Defender门户中引发的篡改警报的屏幕截图。

验证块模式和审核模式

  • 使用高级搜寻时,会显示篡改警报
  • 可以在本地设备日志中找到篡改事件: sudo grep -F '[{tamperProtection}]' /Library/Logs/Microsoft/mdatp/microsoft_defender_core.log

篡改防护日志的屏幕截图。

DIY 方案

  • 将篡改防护设置为“阻止”后,尝试不同的方法来卸载 Defender for Endpoint。 例如,将应用磁贴拖动到回收站或使用命令行卸载篡改防护。

  • 尝试停止 Defender for Endpoint 进程 (终止) 。

  • 尝试删除、重命名、修改和移动 Defender for Endpoint 文件 (类似于恶意用户) 执行的操作,例如:

    • /Applications/Microsoft Defender ATP.app/
    • /Library/LaunchDaemons/com.microsoft.fresno.plist
    • /Library/LaunchDaemons/com.microsoft.fresno.uninstall.plist
    • /Library/LaunchAgents/com.microsoft.wdav.tray.plist
    • /Library/Managed Preferences/com.microsoft.wdav.ext.plist
    • /Library/Managed Preferences/mdatp_managed.json
    • /Library/Managed Preferences/com.microsoft.wdav.atp.plist
    • /Library/Managed Preferences/com.microsoft.wdav.atp.offboarding.plist
    • /usr/local/bin/mdatp

关闭篡改防护

可以使用以下任一方法关闭篡改防护。

Manual configuration - 手动配置

使用以下命令:

sudo mdatp config tamper-protection enforcement-level --value disabled

JAMF

enforcementLevel配置文件中的值更改为“disabled”,并将其推送到计算机:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>tamperProtection</key>
    <dict>
      <key>enforcementLevel</key>
      <string>disabled</string>
    </dict>
  </dict>
</plist>

Intune

在 Intune 配置文件中添加以下配置:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1">
    <dict>
        <key>PayloadUUID</key>
        <string>C4E6A782-0C8D-44AB-A025-EB893987A295</string>
        <key>PayloadType</key>
        <string>Configuration</string>
        <key>PayloadOrganization</key>
        <string>Microsoft</string>
        <key>PayloadIdentifier</key>
        <string>com.microsoft.wdav</string>
        <key>PayloadDisplayName</key>
        <string>Microsoft Defender for Endpoint settings</string>
        <key>PayloadDescription</key>
        <string>Microsoft Defender for Endpoint configuration settings</string>
        <key>PayloadVersion</key>
        <integer>1</integer>
        <key>PayloadEnabled</key>
        <true/>
        <key>PayloadRemovalDisallowed</key>
        <true/>
        <key>PayloadScope</key>
        <string>System</string>
        <key>PayloadContent</key>
        <array>
            <dict>
                <key>PayloadUUID</key>
                <string>99DBC2BC-3B3A-46A2-A413-C8F9BB9A7295</string>
                <key>PayloadType</key>
                <string>com.microsoft.wdav</string>
                <key>PayloadOrganization</key>
                <string>Microsoft</string>
                <key>PayloadIdentifier</key>
                <string>com.microsoft.wdav</string>
                <key>PayloadDisplayName</key>
                <string>Microsoft Defender for Endpoint configuration settings</string>
                <key>PayloadDescription</key>
                <string/>
                <key>PayloadVersion</key>
                <integer>1</integer>
                <key>PayloadEnabled</key>
                <true/>
                <key>tamperProtection</key>
                <dict>
                  <key>enforcementLevel</key>
                  <string>disabled</string>
                </dict>
            </dict>
        </array>
    </dict>
</plist>

排除项

注意

在版本 101.98.71 或更高版本中可用。

篡改防护可防止任何 macOS 进程更改Microsoft Defender的资产或终止Microsoft Defender的进程。 受保护的资产包括安装和配置文件。

在内部,Microsoft Defender在某些情况下对某些 macOS 进程发出例外。 例如,如果篡改防护验证包的真实性,macOS 可以升级 Defender 的包。 还有其他排除项。 例如,macOS MDM 进程可以替换 Microsoft 的 Defender 托管配置文件。

在某些情况下,全局管理员需要在所有或部分托管计算机上重启 Defender。 通常通过创建和运行 JAMF 的策略来完成,该策略在远程计算机上运行脚本, (或类似操作为其他 MDM 供应商。)

为了避免标记这些策略启动的操作,Microsoft Defender检测 JAMF 和Intune的 MDM 策略进程,并允许从它们进行篡改操作。 同时,如果从本地终端启动,篡改防护将阻止同一脚本重启Microsoft Defender。

但是,这些策略运行进程特定于供应商。 虽然 Microsoft Defender 为 JAMF 和Intune提供内置排除项,但无法为所有可能的 MDM 供应商提供这些排除项。 相反,全局管理员可以将自己的排除项添加到篡改防护。 排除只能通过 MDM 配置文件完成,不能通过本地配置完成。

为此,需要首先找出运行策略的 MDM 帮助程序进程的路径。 可以通过遵循 MDM 供应商的文档执行此操作。 还可以启动篡改测试策略,在安全门户中获取警报,检查发起“攻击”的进程层次结构,并选择类似于 MDM 帮助程序候选的进程。

确定进程路径后,对于如何配置排除项,几乎没有选择:

  • 通过路径本身。 这是你已有此路径的最简单 () 和最不安全的方法,换句话说,不建议这样做。
  • 通过运行 codesign -dv --verbose=4 path_to_helper “查找标识符”和“TeamIdentifier” (,从可执行文件(TeamIdentifier 或签名标识符)获取签名 ID,后者不适用于 Apple 自己的工具。)
  • 或者使用这些属性的组合。

示例:

codesign -dv --verbose=4 /usr/bin/ruby
Executable=/usr/bin/ruby
Identifier=com.apple.ruby
Format=Mach-O universal (x86_64 arm64e)
CodeDirectory v=20400 size=583 flags=0x0(none) hashes=13+2 location=embedded
Platform identifier=14
VersionPlatform=1
VersionMin=852992
VersionSDK=852992
Hash type=sha256 size=32
CandidateCDHash sha256=335c10d40db9417d80db87f658f6565018a4c3d6
CandidateCDHashFull sha256=335c10d40db9417d80db87f658f6565018a4c3d65ea3b850fc76c59e0e137e20
Hash choices=sha256
CMSDigest=335c10d40db9417d80db87f658f6565018a4c3d65ea3b850fc76c59e0e137e20
CMSDigestType=2
Executable Segment base=0
Executable Segment limit=16384
Executable Segment flags=0x1
Page size=4096
Launch Constraints:
  None
CDHash=335c10d40db9417d80db87f658f6565018a4c3d6
Signature size=4442
Authority=Software Signing
Authority=Apple Code Signing Certification Authority
Authority=Apple Root CA
Signed Time=Apr 15, 2023 at 4:45:52 AM
Info.plist=not bound
TeamIdentifier=not set
Sealed Resources=none
Internal requirements count=1 size=64

配置 首选项,例如 JAMF:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>tamperProtection</key>
    <dict>
      <key>enforcementLevel</key>
      <string>block</string>
      <key>exclusions</key>
      <array>
        <dict>
          <key>path</key>
          <string>/usr/bin/ruby</string>
          <key>teamId</key>
          <string/>
          <key>signingId</key>
          <string>com.apple.ruby</string>
          <key>args</key>
          <array>
            <string>/usr/local/bin/global_mdatp_restarted.rb</string>
          </array>
        </dict>
      </array>
    </dict>
  </dict>
</plist>

请注意,从上面的示例中排除脚本解释器 ((如 Ruby)) 而不是编译的可执行文件是不安全的,因为它可以运行 任何脚本,而不仅仅是全局管理员使用的脚本。

为了最大程度地降低风险,我们建议使用 extra args 来仅允许特定脚本与脚本解释器一起运行。 在上面的示例中,仅 /usr/bin/ruby /usr/local/bin/global_mdatp_restarted.rb 允许重启 Defender。 但是,例如, /usr/bin/ruby /Library/Application Support/Global Manager/global_mdatp_restarted.rb 甚至 /usr/bin/ruby /usr/local/bin/global_mdatp_restarted.rb $USER 不允许。

警告

始终使用最严格的条件来防止意外攻击!

排查配置问题

问题:篡改保护报告为禁用

如果运行命令mdatp health报告篡改保护已禁用,即使已启用它并且自载入以来已超过一小时,则可以通过运行以下命令来检查是否具有正确的配置:

mdatp health --details tamper_protection
tamper_protection                           : "audit"
exclusions                                  : [{"path":"/usr/bin/ruby","team_id":"","signing_id":"com.apple.ruby","args":["/usr/local/bin/global_mdatp_restarted.rb"]}] [managed]
feature_enabled_protection                  : true
feature_enabled_portal                      : true
configuration_source                        : "local"
configuration_local                         : "audit"
configuration_portal                        : "block"
configuration_default                       : "audit"
configuration_is_managed                    : false
  • tamper_protection有效 模式。 如果此模式是你打算使用的模式,则你已设置好。
  • configuration_source 指示如何设置篡改防护强制级别。 它必须与你配置篡改防护的方式匹配。 (如果通过托管配置文件设置其模式,并 configuration_source 显示不同的内容,则很可能配置了配置文件。)
    • mdm - 它通过托管配置文件进行配置。 只有全局管理员可以通过配置文件的更新来更改它!
    • local - 配置了 mdatp config 命令
    • portal - 安全门户中设置的默认强制级别
    • defaults - 未配置,使用默认模式
  • 如果 feature_enabled_protection 为 false,则不会为组织启用篡改防护, (Defender 未报告“许可”)
  • 如果 feature_enabled_portal 为 false,则尚未启用通过安全门户设置默认模式。
  • configuration_localconfiguration_portal指示 configuration_default 将使用的模式( 如果使用了相应的配置通道)。 (例如,可以通过 MDM 配置文件将篡改防护配置为“阻止”模式,并 configuration_default 告知你 audit。它仅意味着 ,如果删除 配置文件,并且未使用 mdatp config 或通过安全门户设置模式,则它使用默认模式,即 audit.)

注意

需要检查Microsoft Defender的日志以获取版本 101.98.71 之前的相同信息。 有关示例,请参阅下文。

$ sudo grep -F '[{tamperProtection}]: Feature state:' /Library/Logs/Microsoft/mdatp/microsoft_defender_core.log | tail -n 1

提示

想要了解更多信息? Engage技术社区中的 Microsoft 安全社区:Microsoft Defender for Endpoint技术社区