适用于 适用于 Linux 的 Windows 子系统 (WSL) 的Microsoft Defender for Endpoint插件

适用于:

概述

适用于 Linux 的 Windows 子系统 (WSL) 2,它取代了 Microsoft Defender for Endpoint支持的早期版本的 WSL (,没有插件) ,它提供了一个与 Windows 无缝集成,但使用虚拟化技术隔离的 Linux 环境。 Defender for Endpoint for WSL 插件使 Defender for Endpoint 能够通过插入隔离子系统来提供对所有正在运行的 WSL 容器的更多可见性。

已知问题和限制

在开始之前,请注意以下事项:

  1. 该插件不支持在 之前的 0.24.426.1版本中自动更新。 在版本和更高版本0.24.426.1上,通过跨所有通道Windows 更新支持更新。 仅生产圈中支持通过 Windows Server 更新服务 (WSUS) 、System Center Configuration Manager (SCCM) 和 Microsoft 更新目录进行汇报,以确保包的稳定性。

  2. 插件完全实例化需要几分钟时间,WSL2 实例最多需要 30 分钟才能自行加入。 生存期较短的 WSL 容器实例可能会导致 WSL2 实例未显示在Microsoft Defender门户中, (https://security.microsoft.com) 。 一旦任何分发运行时间足够长 (至少 30 分钟) ,它就会显示出来。

  3. 此版本支持运行自定义内核和自定义内核命令行;但是,当你运行自定义内核和自定义内核命令行时,插件不保证在 WSL 中的可见性。

  4. MICROSOFT DEFENDER门户中 WSL 设备的“设备概述”页中,OS 分发显示为“”。

  5. 使用 ARM64 处理器的计算机不支持该插件。

软件先决条件

  • WSL 版本 2.0.7 或更高版本必须至少运行一个活动发行版。

    运行 wsl --update 以确保使用的是最新版本。 如果 wsl -–version 显示低于 2.0.7 的版本,请运行 wsl -–update –pre-release 以获取最新更新。

  • Windows 客户端设备必须载入到 Defender for Endpoint。

  • Windows 客户端设备必须运行Windows 10版本 2004 及更高版本 (内部版本 19044 及更高版本) ,或者Windows 11才能支持可与插件配合使用的 WSL 版本。

软件组件和安装程序文件名

安装程序: DefenderPlugin-x64-0.24.426.1.msi。 可以从Microsoft Defender门户中的载入页面下载它。

安装目录:

  • %ProgramFiles%

  • %ProgramData%

已安装的组件:

  • DefenderforEndpointPlug-in.dll. 此 DLL 是用于加载 Defender for Endpoint 以在 WSL 中工作的库。 可以在 %ProgramFiles%\Microsoft Defender for Endpoint WSL\plug-in 插件中找到它。

  • healthcheck.exe. 此程序检查 Defender for Endpoint 的运行状况状态,使你能够查看已安装的 WSL、插件和 Defender for Endpoint 版本。 可以在 %ProgramFiles%\Microsoft Defender for Endpoint WSL\tools 插件中找到它。

安装步骤

如果尚未安装适用于 Linux 的 Windows 子系统,请执行以下步骤:

  1. 打开终端或命令提示符。 (在 Windows 中,转到 “启动>命令提示符”。或者,右键单击“开始”按钮,然后选择“ Terminal.)

  2. 运行命令 wsl -–install

  3. 确认 WSL 已安装并正在运行。

    1. 使用终端或命令提示符运行 wsl –-update 以确保具有最新版本。

    2. 运行 命令以确保 wsl WSL 在测试之前正在运行。

  4. 按照以下步骤安装插件:

    1. 安装从 Microsoft Defender 门户的载入部分下载的 MSI 文件, (设置>终结点>载入>适用于 Linux 的 Windows 子系统 2 (插件) ) 。

    2. 打开命令提示符/终端并运行 wsl

    可以使用 Microsoft Intune 部署包

注意

如果 WslService 正在运行,它将在安装过程中停止。 无需单独载入子系统;相反,插件会自动载入到 Windows 主机加入到的租户。

安装验证清单

  1. 更新或安装后,请等待至少 5 分钟,使插件完全初始化并写入日志输出。

  2. 打开终端或命令提示符。 (在 Windows 中,转到 “启动>命令提示符”。或者,右键单击“开始”按钮,然后选择“ Terminal.)

  3. 运行以下命令: cd "%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools".

  4. 运行命令 .\healthcheck.exe

  5. 查看 Defender 和 WSL 的详细信息,并确保它们符合或超过以下要求:

    • 插件版本0.24.426.1
    • WSL 版本2.0.7.0 或更高版本
    • Defender 应用版本701.00000.1509
    • Defender 运行状况:Healthy

为在 WSL 中运行的 Defender 设置代理

本部分介绍如何为 Defender for Endpoint 插件配置代理连接。 如果你的企业使用代理来提供与 Windows 主机上运行的 Defender for Endpoint 的连接,请继续阅读以确定是否需要为插件配置它。

如果想要将主机 windows EDR 遥测代理配置用于 WSL 插件的MDE,则无需执行其他任何操作。 插件会自动采用此配置。

如果要将主机 winhttp 代理配置用于 WSL 插件的 MDE,则无需执行其他任何操作。 插件会自动采用此配置。

如果要将主机网络和网络代理设置用于 WSL 插件的 MDE,则无需再使用其他任何设置。 插件会自动采用此配置。

插件代理选择

如果主机包含多个代理设置,插件将使用以下层次结构选择代理配置:

  1. defender for Endpoint 静态代理设置 (TelemetryProxyServer) 。

  2. Winhttp 代理 (通过 netsh 命令) 进行配置。

  3. 网络 & Internet 代理设置。

示例:如果主机计算机同时具有 Winhttp 代理网络 & Internet 代理,则插件将选择 Winhttp proxy 作为代理配置。

注意

DefenderProxyServer不再支持注册表项。 按照上述步骤在插件中配置代理。

在 WSL 中运行的 Defender 的连接性测试

以下过程介绍如何确认 WSL 终结点中的 Defender 是否具有 Internet 连接。

  1. 以管理员身份打开注册表编辑器。

  2. 使用以下详细信息Create注册表项:

    • 名称ConnectivityTest
    • 类型REG_DWORD
    • Number of seconds plug-in must wait before running the test. (Recommended: 60 seconds)
    • 路径Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Defender for Endpoint plug-in for WSL
  3. 设置注册表后,使用以下步骤重启 wsl:

    1. 打开命令提示符并运行命令 wsl --shutdown

    2. 运行命令 wsl

  4. 等待 5 分钟,然后运行 healthcheck.exe 位于 %ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools 的 (,以获取连接测试) 的结果。

    如果成功,可以看到连接测试已成功。 如果失败,可以看到连接测试 invalid 指示从 WSL 到 Defender for Endpoint 服务 URL 的客户端连接失败。

注意

若要设置在 WSL 容器中使用的代理 (子系统) 上运行的分发,请参阅 WSL 中的高级设置配置

验证功能和 SOC 分析师体验

安装插件后,子系统及其所有正在运行的容器将载入Microsoft Defender门户

  1. 登录到Microsoft Defender门户,然后打开“设备”视图。

  2. 使用标记 WSL2 进行筛选。

显示设备清单筛选器的屏幕截图

可以使用适用于 WSL 的活动 Defender for Endpoint 插件查看环境中的所有 WSL 实例。 这些实例表示在给定主机上 WSL 内运行的所有分发。 设备的主机名与 Windows 主机的主机名匹配。 但是,它表示为 Linux 设备。

  1. 打开设备页。 在“ 概述 ”窗格中,有一个用于托管设备的链接。 通过此链接,你可以了解设备在 Windows 主机上运行。 然后,可以透视主机进行进一步调查和/或响应。

    显示设备概述的屏幕截图。

时间线填充,类似于 Linux 上的 Defender for Endpoint,其中包含来自子系统内部的事件 (文件、进程、网络) 。 可以在时间线视图中观察活动和检测。 也会根据需要生成警报和事件。

测试插件

若要在安装后测试插件,请执行以下步骤:

  1. 打开终端或命令提示符。 (在 Windows 中,转到 “启动>命令提示符”。或者,右键单击“开始”按钮,然后选择“ Terminal.)

  2. 运行命令 wsl

  3. https://aka.ms/LinuxDIY下载并提取脚本文件。

  4. 在 Linux 提示符下,运行命令 ./mde_linux_edr_diy.sh

    几分钟后,门户中应显示一个警报,用于对 WSL2 实例进行检测。

    注意

    事件大约需要 5 分钟才能显示在Microsoft Defender门户中。

将计算机视为环境中要对其执行测试的常规 Linux 主机。 具体而言,我们希望获得你关于使用新插件发现潜在恶意行为的能力的反馈。

高级搜寻

在高级搜寻架构的 DeviceInfo 表中,有一个名为 HostDeviceId 的新属性,可用于将 WSL 实例映射到其 Windows 主机设备。 下面是一些示例搜寻查询:

获取当前组织/租户的所有 WSL 设备 ID

//Get all WSL device ids for the current organization/tenant 
let wsl_endpoints = DeviceInfo  
| where OSPlatform == "Linux" and isempty(HostDeviceId) != true
| distinct DeviceId; 

wsl_endpoints

获取 WSL 设备 ID 及其相应的主机设备 ID

//Get WSL device ids and their corresponding host device ids 
DeviceInfo  
| where OSPlatform == "Linux" and isempty(HostDeviceId) != true
| distinct WSLDeviceId=DeviceId, HostDeviceId

获取运行 curl 或 wget 的 WSL 设备 ID 列表

//Get a list of WSL device ids where curl or wget was run
let wsl_endpoints = DeviceInfo  
| where OSPlatform == "Linux" and isempty(HostDeviceId) != true
| distinct DeviceId; 

DeviceProcessEvents   
| where FileName == "curl" or FileName == "wget" 
| where DeviceId in (wsl_endpoints) 
| sort by Timestamp desc

疑难解答

  1. 命令 healthcheck.exe 显示输出“使用'bash'命令启动 WSL 发行版,并在 5 分钟内重试。

    显示 PowerShell 输出的屏幕截图。

  2. 如果发生上述错误,请执行以下步骤:

    1. 打开终端实例并运行命令 wsl

    2. 请至少等待 5 分钟,然后重新运行运行状况检查。

  3. healthcheck.exe 命令可能会显示输出“正在等待遥测”。 请在 5 分钟内重试。”

    显示运行状况遥测状态的屏幕截图。

    如果发生该错误,请等待 5 分钟,然后重新运行 healthcheck.exe

  4. 如果在Microsoft Defender门户中看不到任何设备,或者时间线中看不到任何事件,检查以下事项:

    • 如果未看到计算机对象,请确保经过足够的时间来完成 (通常最多 10 分钟) 。

    • 请确保使用正确的筛选器,并且你具有相应的权限来查看所有设备对象。 (例如,你的帐户/组是否仅限于特定组?)

    • 使用运行状况检查工具提供整体插件运行状况的概述。 打开“终端”,然后从 %ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools运行healthcheck.exe该工具。

      显示 PowerShell 中状态的屏幕截图。

    • 在 WSL 中为 Defender for Endpoint 连接启用连接测试和检查。 如果连接测试失败,请向 提供运行状况检查工具mdeforwsl-preview@microsoft.com的输出。

    • 如果连接测试在运行状况检查中报告“无效”,请在 中%UserProfile%包括以下配置设置.wslconfig,然后重启 WSL。 有关设置的详细信息,请参阅 WSL 设置

      • 在 Windows 11
        # Settings apply across all Linux distros running on WSL 2
        [wsl2]
        
        dnsTunneling=true
        
        networkingMode=mirrored  
        
      • 在 Windows 10
        # Settings apply across all Linux distros running on WSL 2
        [wsl2]
        
        dnsProxy=false
        
  5. 如果遇到任何其他挑战或问题,请打开终端并运行以下命令以生成支持捆绑包:

    cd "%ProgramFiles%\Microsoft Defender for Endpoint plug-in for WSL\tools"
    
    .\healthcheck.exe --supportBundle 
    

    可以在上一个命令提供的路径中找到支持捆绑包。

    显示 PowerShell 输出中的状态的屏幕截图。

  6. Microsoft Defender Endpoint for WSL 支持在 WSL 2 上运行的 Linux 分发版。 如果它们与 WSL 1 关联,可能会遇到问题。 因此,建议禁用 WSL 1。 若要使用Intune策略执行此操作,请执行以下步骤:

    1. 转到Microsoft Intune管理中心

    2. 转到“设备>配置文件”>Create>“新建策略”。

    3. 选择Windows 10及更高版本的>“设置目录”。

    4. Create新配置文件的名称,并搜索适用于 Linux 的 Windows 子系统以查看和添加可用设置的完整列表。

    5. “允许 WSL1 ”设置设置为 “已禁用”,以确保只能使用 WSL 2 分发版。

      或者,如果想要继续使用 WSL 1 或不使用 Intune 策略,可以通过在 PowerShell 中运行 命令,选择性地将已安装的分发版关联到 WSL 2 上运行:

      wsl --set-version <YourDistroName> 2
      

      若要将 WSL 2 作为系统安装新分发版的默认 WSL 版本,请在 PowerShell 中运行以下命令:

      wsl --set-default-version 2
      
  7. 默认情况下,插件使用 Windows EDR 环。 如果要切换到早期通道,请在注册表中将 设置为 OverrideReleaseRing 以下其中一个,然后重启 WSL:

  • 名称OverrideReleaseRing
  • 类型REG_SZ
  • Dogfood or External or InsiderFast or Production
  • 路径Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft Defender for Endpoint plug-in for WSL