关于 incident-response
incident-response 是供安全团队使用的 ServiceNow 技能,用于处理疑似威胁、未授权访问、数据泄露或可疑活动。它将响应流程组织为检测、分类、遏制、调查、恢复、沟通和复盘。
主要功能
- 01检测可疑活动
- 02按严重程度分类事件
- 03遏制受影响账户
- 04收集审计与系统日志证据
- 05记录处置操作和调查发现
- 06支持恢复与事后复盘
适用场景
- 01调查失败登录次数激增
- 02响应疑似账户泄露
- 03收集安全事件证据
- 04记录遏制与恢复措施
MCP 相关
使用 ServiceNow MCP 工具查询审计和系统日志、创建安全事件、更新用户或事件记录,并通过工作备注记录发现。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ happy-technologies-llc/ happy-platform-skills --skill incident-response安装后在 Claude Code 中输入/incident-response确认已加载。
详细介绍
安全事件响应
概述
此技能涵盖 ServiceNow 中的安全事件处理:
- 检测潜在安全事件
- 对安全威胁进行分类
- 遏制流程
- 调查和收集证据
- 沟通协议
- 事后审查
适用场景: 检测到任何潜在安全威胁、未授权访问、数据泄露或可疑活动时。
前提条件
- 角色:
sn_si.admin(安全事件响应)、security_admin - 访问权限: 安全事件表、审计日志、系统日志
- 插件: 安全事件响应(sn_si)
流程
阶段 1:检测与识别
常见检测来源:
- 用户报告(网络钓鱼、可疑邮件)
- SIEM 警报
- 审计日志异常
- 登录失败次数激增
- 异常数据访问模式
查询可疑登录活动:
Tool: SN-Query-Table
Parameters:
table_name: sys_audit
query: tablename=sys_user^fieldname=failed_attempts^newvalueGT5^sys_created_onONLast 24 hours
fields: documentkey,user,newvalue,sys_created_on
limit: 100
检查近期管理员操作:
Tool: SN-Query-Table
Parameters:
table_name: sys_audit
query: sys_created_onONLast hour^userLIKEadmin
fields: tablename,fieldname,oldvalue,newvalue,user,sys_created_on
limit: 50
阶段 2:分类
安全事件严重程度矩阵:
| 严重程度 | 影响范围 | 示例 |
|---|---|---|
| 严重 | 全业务范围 | 勒索软件、数据泄露、管理员账户遭入侵 |
| 高 | 整个部门 | 未授权访问敏感数据 |
| 中 | 范围有限 | 网络钓鱼尝试、单台系统感染恶意软件 |
| 低 | 影响极小 | 垃圾邮件、攻击尝试失败 |
创建安全事件:
Tool: SN-Create-Record
Parameters:
table_name: sn_si_incident
data:
short_description: "Potential unauthorized access - Admin account"
description: |
Detection: Multiple failed login attempts followed by successful login
Source IP: 203.0.113.50 (external)
Target Account: [email protected]
Time: 2026-02-06 14:30 UTC
Initial Analysis:
- 15 failed attempts over 5 minutes
- Successful login from unfamiliar IP
- Unusual time (outside business hours)
category: Unauthorized Access
subcategory: Account Compromise
priority: 1
state: Analysis
affected_user: [user_sys_id]
business_criticality: Critical
阶段 3:遏制
立即采取的措施(严重/高):
- 禁用遭入侵的账户:
Tool: SN-Update-Record
Parameters:
table_name: sys_user
sys_id: [compromised_user_sys_id]
data:
locked_out: true
active: false
- 撤销活动会话:
Tool: SN-Execute-Background-Script
Parameters:
script: |
var gr = new GlideRecord('v_user_session');
gr.addQuery('user', '[compromised_user_sys_id]');
gr.query();
while (gr.next()) {
gr.deleteRecord();
}
gs.info('Terminated all sessions for compromised user');
description: "Emergency: Terminate compromised user sessions"
- 记录遏制措施:
Tool: SN-Add-Work-Notes
Parameters:
sys_id: [security_incident_sys_id]
table_name: sn_si_incident
work_notes: |
CONTAINMENT ACTION - [TIMESTAMP]
Actions Taken:
1. Account locked - sys_user.locked_out = true
2. Account deactivated - sys_user.active = false
3. Active sessions terminated - v_user_session cleared
Performed by: [Analyst Name]
Approved by: [Manager Name]
阶段 4:调查
收集证据:
- 受影响用户的审计跟踪记录:
Tool: SN-Query-Table
Parameters:
table_name: sys_audit
query: user=[compromised_user_id]^sys_created_onONLast 7 days
fields: tablename,fieldname,oldvalue,newvalue,sys_created_on
limit: 500
- 系统日志:
Tool: SN-Query-Table
Parameters:
table_name: syslog
query: sys_created_onONLast 24 hours^messageLIKElogin
fields: level,message,source,sys_created_on
limit: 200
- 数据访问日志:
Tool: SN-Query-Table
Parameters:
table_name: sys_audit
query: user=[user_id]^tablenameINsys_user,customer_account,hr_core_profile
fields: tablename,documentkey,fieldname,sys_created_on
记录调查结果:
Tool: SN-Add-Work-Notes
Parameters:
sys_id: [security_incident_sys_id]
work_notes: |
INVESTIGATION FINDINGS - [TIMESTAMP]
Timeline:
- 14:25 - First failed login attempt
- 14:30 - Successful login from IP 203.0.113.50
- 14:32 - Accessed HR records
- 14:35 - Downloaded employee list
- 14:40 - Session terminated by security
Data Accessed:
- hr_core_profile: 150 records viewed
- sys_user: 50 records exported
Indicators of Compromise:
- External IP (not company VPN)
- Outside business hours
- Bulk data access pattern
阶段 5:根除与恢复
重置凭据:
Tool: SN-Execute-Background-Script
Parameters:
script: |
var user = new GlideRecord('sys_user');
user.get('[compromised_user_sys_id]');
user.user_password.setDisplayValue('TEMP-' + gs.generateGUID().substring(0,8));
user.update();
gs.info('Password reset for: ' + user.user_name);
description: "Reset compromised user password"
启用增强安全措施后重新激活:
Tool: SN-Update-Record
Parameters:
table_name: sys_user
sys_id: [user_sys_id]
data:
active: true
locked_out: false
password_needs_reset: true
failed_attempts: 0
阶段 6:沟通
通知模板:
发送给受影响用户:
主题:需要采取安全措施 - 账户访问
由于检测到可疑活动,您的账户已被暂时禁用。 您的密码已重置。请拨打 x1234 联系 IT 安全团队, 以验证身份并获取新凭据。
发送给管理层:
安全事件 #[number] - 状态更新
摘要:[简要说明] 影响:[影响范围] 当前状态:[已遏制/调查中/已解决] 已采取措施:[措施列表] 后续步骤:[计划采取的措施]
阶段 7:事后审查
关闭安全事件:
Tool: SN-Update-Record
Parameters:
table_name: sn_si_incident
sys_id: [incident_sys_id]
data:
state: Closed
close_code: Resolved
close_notes: |
Resolution Summary:
- Compromised credentials reset
- No data exfiltration confirmed
- User re-trained on security awareness
Root Cause: Weak password + phishing attack
Preventive Actions:
- MFA enabled for all admin accounts
- Password policy strengthened
- Phishing training scheduled
Lessons Learned documented in KB0012345
响应时间目标
| 严重程度 | 初始响应 | 遏制 | 解决 |
|---|---|---|---|
| 严重 | 15 分钟 | 1 小时 | 24 小时 |
| 高 | 1 小时 | 4 小时 | 72 小时 |
| 中 | 4 小时 | 24 小时 | 1 周 |
| 低 | 24 小时 | 1 周 | 2 周 |
最佳实践
- 保全证据: 调查前不要修改或删除日志
- 记录所有事项: 每项操作都应记录在工作备注中
- 遵循证据保管链: 跟踪谁访问了哪些证据
- 按需知情: 仅向必要人员透露事件详情
- 法律考量: 发生数据泄露时请法务团队介入
故障排除
无法访问安全事件表
原因: 缺少安全事件响应插件或角色 解决方案: 确认 sn_si 插件已启用;申请 sn_si.admin 角色
缺少审计日志
原因: 未对表启用审计 解决方案: 检查 sys_dictionary 中该表的审计标志
相关技能
security/audit-compliance- 合规性检查itsm/major-incident- 重大事件处理security/acl-management- 访问控制
参考资料
评论
支持 Markdown