防御者响应MCP-VS代码扩展
  
一个VS Code扩展,为GitHub Copilot提供Microsoft Defender XDR响应操作工具。使用自然语言直接从Copilot聊天中执行事件响应操作。
概述
此扩展将Microsoft Defender XDR功能作为GitHub Copilot的语言模型工具公开。安全分析师使用自然语言来管理事件、隔离受感染的设备、运行防病毒扫描、收集取证包和执行身份响应操作。
交互示例:
- “检查设备WORKSTATION-01的状态”
- “立即隔离受损的笔记本电脑”
- “在服务器上运行完整的防病毒扫描”
- “显示高严重性事件”
- “禁用受感染的用户帐户”
建筑
┌─────────────────┐ VS Code LM Tools API ┌──────────────────────┐
│ VS Code + │◀────────────────────────────▶│ Extension │
│ GitHub Copilot │ │ (This Extension) │
└─────────────────┘ └──────────────────────┘
│
│ Client Credentials
│ (Service Principal)
│
┌───────────────────────────────┴───────────────────┐
▼ ▼
┌─────────────────────────────┐ ┌─────────────────────────────┐
│ Microsoft Defender │ │ Microsoft Graph API │
│ for Endpoint │ │ - Incident management │
│ - Device response actions │ │ - Identity actions (MDI) │
│ - Investigation packages │ │ - Entra ID risk management │
└─────────────────────────────┘ └─────────────────────────────┘与响应MCP服务器的主要区别: 此扩展在VS Code中本地运行,并直接与Microsoft API通信。无需云服务器-凭据安全地存储在VS Code的秘密存储中。
可用工具
设备响应操作(端点防御器)
| 工具 | 说明 |
|---|---|
defender_echo | 测试服务器连接 |
defender_get_machine_by_name | 按主机名查找设备 |
defender_get_machine_actions | 列出响应操作历史记录 |
defender_isolate_device | 将设备与网络隔离 |
defender_isolate_multiple | 批量隔离多个设备 |
defender_release_device | 释放隔离装置 |
defender_run_antivirus_scan | 启动快速或完整AV扫描 |
defender_stop_and_quarantine | 停止进程和隔离文件 |
defender_restrict_code_execution | 阻止未签名的应用程序 |
defender_remove_code_restriction | 删除代码限制 |
defender_collect_investigation_package | 收集法医数据 |
defender_get_investigation_package_uri | 获取调查包的下载URL |
身份响应行动(身份和入境者ID的防御者)
| 工具 | 描述 | 提供者 |
|---|---|---|
defender_disable_ad_account | 禁用Active Directory帐户 | Active Directory |
defender_enable_ad_account | 重新启用Active Directory帐户 | Active Directory |
defender_force_ad_password_reset | 强制用户在下次登录时更改密码 | Active Directory |
defender_revoke_entra_sessions | 撤销所有Entra ID会话并刷新令牌 | Entra ID |
defender_confirm_user_compromised | 将用户标记为身份保护已受损 | Entra ID |
defender_confirm_user_safe | 在身份保护中消除用户风险(标记为安全) | Entra ID |
事件管理
| 工具 | 说明 |
|---|---|
defender_update_incident_status | 将事件标记为活动/已解决 |
defender_assign_incident | 将事件分配给分析师 |
defender_classify_incident | 设置分类(TP/FP)和确定 |
defender_add_incident_tags | 添加自定义标签进行分类 |
defender_add_incident_comment | 添加调查意见 |
注: 要列出和检索事件详细信息,请使用Microsoft的 哨兵MCP分类 服务器,提供更丰富的过滤、搜索和分页功能。
先决条件
Entra ID应用程序注册
步骤:
- 导航到 Azure门户 > Entra ID > 应用程序注册 > 新注册
- 姓名: Defender Response VS Code (或您喜欢的名字) - 支持的帐户类型: 仅此组织目录中的帐户 - 点击 注册
- 保存这些值 (需要配置):
- 应用程序(客户端)ID - 目录(租户)ID
- 创建 客户端密钥:
- 首选 证书和秘密 > 新客户机密 - 说明: VS Code Extension Secret - 过期:选择过期时间 - 点击 添加 - 立即复制机密值 (仅显示一次)
- 添加 API权限:
- 首选 API权限 > 添加权限 - 添加下面列出的权限 - 授予管理员同意 对于所有权限
必需的权限
WindowsDefenderATP(端点防御器)
| 权限 | 类型 | 描述 |
|---|---|---|
Machine.ReadWrite.All | 应用程序 | 读取机器操作并获取调查包URI |
Machine.Isolate | 应用 | 隔离/释放机器 |
Machine.Scan | 应用程序 | 运行防病毒扫描 |
Machine.StopAndQuarantine | 应用程序 | 停止和隔离文件 |
Machine.RestrictExecution | 应用程序 | 限制/取消限制代码执行 |
Machine.CollectForensics | 申请 | 收集调查包 |
Microsoft Graph API
| 权限 | 类型 | 描述 |
|---|---|---|
SecurityAlert.ReadWrite.All | 应用程序 | 读取和更新安全警报 |
SecurityIdentitiesAccount.Read.All | 应用程序 | 从MDI读取身份帐户 |
SecurityIdentitiesActions.ReadWrite.All | 应用程序 | 对身份帐户调用操作 |
SecurityIncident.ReadWrite.All | 应用程序 | 读取和更新安全事件 |
User.Read.All | 应用程序 | 将UPN解析为用户ID |
User.RevokeSessions.All | 应用程序 | 撤消用户会话 |
IdentityRiskyUser.ReadWrite.All | 应用程序 | 在身份保护中将用户标记为已泄露 |
安装
来自VSIX
code --install-extension defender-response-mcp-0.1.0.vsix来源
# Clone and install
git clone
npm install
# Compile
npm run compile
# Package as VSIX
npm run package
# Install
code --install-extension defender-response-mcp-0.1.0.vsix发展
按 F5 在VS Code中启动扩展开发主机。
配置
- 安装后,运行命令: 防御者MCP:登录 (Ctrl+Shift+P)
- 输入您的 租户ID, 客户端ID,以及 客户端密钥 当被提示时
- 凭证安全地存储在VS Code的加密秘密存储器中
用法
打开 副驾驶聊天 (Ctrl+Alt+I)并要求副驾驶执行Defender操作:
Find the machine named DESKTOP-ABC123Isolate device my-server with comment "Incident 12345 - malware detected"Run a quick antivirus scan on workstation-01Conduct response for incidents 321Disable AD account for compromised.user@contoso.comRelease device my-server from isolation命令
| 命令 | 描述 |
|---|---|
Defender MCP: Sign In | 配置凭据 |
Defender MCP: Sign Out | 清除已保存的凭据 |
Defender MCP: Show Logs | 查看扩展日志 |
项目结构
src/
├── extension.ts # Extension entry point
├── auth/
│ └── clientCredentials.ts # OAuth 2.0 client credentials flow
├── defender/
│ └── client.ts # Defender & Graph API clients
└── tools/
└── handlers.ts # LM Tool implementations安全说明
- 凭证存储在VS Code的加密秘密存储器(操作系统密钥链)中
- 使用客户端凭据流(应用程序权限,无用户登录)
- 所有操作都记录在Defender门户中
- 扩展在本地运行-不需要云基础设施
- 切勿分享您的客户端机密或将其提交给源代码管理
故障排除
“未登录”错误:
- 跑 防御者MCP:登录 并输入凭据
- 验证凭据是否正确(租户ID、客户端ID、机密)
权限被拒绝错误:
- 验证应用程序注册是否具有所需权限
- 确保已授予管理员同意
- 检查客户端密码是否未过期
未找到设备:
- 验证设备名称是否正确(不区分大小写)
- 确保设备已登录到Defender for Endpoint
身份操作失败:
- 验证是否授予Graph API权限
- 对于MDI操作,确保部署了Defender For Identity
许可证
麻省理工学院
