Runbook: Group Cases v2#
Objective#
To analyze a defined set of recent SOAR cases, identify logical groupings based on shared entities or alert types, prioritize these groups by potential impact or severity, and generate a summary report of the findings. This helps in understanding related security events and focusing investigative efforts.
Scope#
This runbook covers:
Retrieving a list of recent SOAR cases.
Gathering detailed information (including alerts and key entities) for each case.
Analyzing case data to identify logical groupings based on specified or observed criteria.
Prioritizing the identified case groups.
Optionally performing basic enrichment of key shared entities within high-priority groups.
Generating a Markdown report summarizing the case groups, prioritization rationale, and key findings.
This runbook explicitly excludes:
Deep investigation of individual cases within the groups (this would typically follow for high-priority groups).
Containment or eradication actions.
Automated closure of grouped cases (though findings might inform manual closure decisions).
Inputs#
(Optional)
${NUMBER_OF_CASES}
: Number of recent cases to analyze (e.g., 5, 10). Defaults to a predefined number (e.g., 10) if not specified.(Optional)
${TIME_FRAME_HOURS}
: Lookback period in hours for selecting cases. If not provided,NUMBER_OF_CASES
will be the primary filter.(Optional)
${GROUPING_CRITERIA}
: Specific criteria for grouping cases (e.g., “shared_hostname”, “alert_type”, “CVE”, “malware_family”). If not provided, grouping will be based on observed similarities in entities and alert details.(Derived)
${CASE_LIST}
: List of SOAR case IDs selected for analysis.(Derived)
${CASE_DETAILS_MAP}
: A map or structure holding details (alerts, entities) for each case in${CASE_LIST}
.(Derived)
${CASE_GROUPS}
: Identified groups of related case IDs.(Derived)
${PRIORITIZED_GROUPS}
: The${CASE_GROUPS}
ordered by assessed priority.(Derived)
${ENRICHMENT_DATA_SUMMARY}
: (Optional) Summary of enrichment for key entities in high-priority groups.
Outputs#
${REPORT_FILE_PATH}
: The full path to the generated Markdown summary report.${REPORT_CONTENT}
: The full Markdown content of the generated report.${GROUPING_ANALYSIS_SUMMARY}
: A brief textual summary of how cases were grouped and prioritized.
Tools#
secops-soar
:list_cases
,get_case_full_details
,list_alerts_by_case
,get_entities_by_alert_group_identifiers
secops-mcp
:lookup_entity
gti-mcp
: Relevant enrichment tools (e.g.,get_ip_address_report
,get_domain_report
)write_to_file
(Replaceswrite_report
)
Workflow Steps & Diagram#
List Cases: Retrieve recent cases using
secops-soar.list_cases
, filtered by${NUMBER_OF_CASES}
or${TIME_FRAME_HOURS}
. Store in${CASE_LIST}
.Gather Case Details: For each case ID in
${CASE_LIST}
:Use
secops-soar.get_case_full_details
to get overall case information.Use
secops-soar.list_alerts_by_case
to get associated alerts.Use
secops-soar.get_entities_by_alert_group_identifiers
(if applicable, or parse entities from alerts/events) to extract key entities.Store all details in
${CASE_DETAILS_MAP}
.
Group Cases: Analyze entities and alert details across all cases in
${CASE_DETAILS_MAP}
. Identify logical groups (${CASE_GROUPS}
) based on${GROUPING_CRITERIA}
(if provided) or observed similarities (e.g., shared critical entities, common alert types, overlapping timeframes).Prioritize Groups: Assess the priority of each group in
${CASE_GROUPS}
based on factors like combined alert severity, number of cases in the group, criticality of shared entities, or potential impact. Store as${PRIORITIZED_GROUPS}
.Enrich Key Entities (Optional): For high-priority groups in
${PRIORITIZED_GROUPS}
, identify key shared entities. Perform basic enrichment on these entities usingsecops-mcp.lookup_entity
and relevantgti-mcp
tools. Store in${ENRICHMENT_DATA_SUMMARY}
.Generate Summary Report: Create a Markdown report (
${REPORT_CONTENT}
) summarizing the${PRIORITIZED_GROUPS}
, the rationale for grouping and prioritization, and key findings (including${ENRICHMENT_DATA_SUMMARY}
if available). Usewrite_to_file
to save the report to${REPORT_FILE_PATH}
(e.g.,./reports/case_grouping_report_${timestamp}.md
).
sequenceDiagram participant Analyst/User participant AutomatedAgent as Automated Agent (MCP Client) participant SOAR as secops-soar participant SIEM as secops-mcp participant GTI as gti-mcp Analyst/User->>AutomatedAgent: Start Group Cases v2 Workflow\nInput: NUMBER_OF_CASES (opt), TIME_FRAME_HOURS (opt), GROUPING_CRITERIA (opt) %% Step 1: List Cases AutomatedAgent->>SOAR: list_cases(limit=NUMBER_OF_CASES, time_frame_hours=TIME_FRAME_HOURS) SOAR-->>AutomatedAgent: List of Cases (CASE_LIST: C1, C2...) %% Step 2: Gather Details Note over AutomatedAgent: Initialize CASE_DETAILS_MAP loop For each Case Ci in CASE_LIST AutomatedAgent->>SOAR: get_case_full_details(case_id=Ci) SOAR-->>AutomatedAgent: Details for Ci AutomatedAgent->>SOAR: list_alerts_by_case(case_id=Ci) SOAR-->>AutomatedAgent: Alerts for Ci AutomatedAgent->>SOAR: get_entities_by_alert_group_identifiers(case_id=Ci, ...) SOAR-->>AutomatedAgent: Entities for Ci Note over AutomatedAgent: Store all details in CASE_DETAILS_MAP[Ci] end %% Step 3 & 4: Group & Prioritize Note over AutomatedAgent: Analyze CASE_DETAILS_MAP based on GROUPING_CRITERIA or similarities. Note over AutomatedAgent: Form CASE_GROUPS (G1, G2...). Note over AutomatedAgent: Prioritize groups into PRIORITIZED_GROUPS. %% Step 5: Enrich (Optional) opt Enrich High Priority Groups Note over AutomatedAgent: Initialize ENRICHMENT_DATA_SUMMARY loop For each High Priority Group Gp in PRIORITIZED_GROUPS Note over AutomatedAgent: Identify key shared entities (Ep1, Ep2...) loop For each Entity Epi in Gp AutomatedAgent->>SIEM: lookup_entity(entity_value=Epi) SIEM-->>AutomatedAgent: SIEM Summary for Epi AutomatedAgent->>GTI: get_..._report(ioc=Epi) %% Appropriate GTI tool GTI-->>AutomatedAgent: GTI Enrichment for Epi Note over AutomatedAgent: Store in ENRICHMENT_DATA_SUMMARY end end end %% Step 6: Generate Report Note over AutomatedAgent: Synthesize findings into REPORT_CONTENT (Markdown) AutomatedAgent->>AutomatedAgent: write_to_file(path="./reports/case_grouping_report_${timestamp}.md", content=REPORT_CONTENT) Note over AutomatedAgent: Report file created (REPORT_FILE_PATH) Note over AutomatedAgent: Prepare GROUPING_ANALYSIS_SUMMARY AutomatedAgent->>Analyst/User: attempt_completion(result="Case grouping analysis complete. Report: REPORT_FILE_PATH. Summary: GROUPING_ANALYSIS_SUMMARY.")
Completion Criteria#
A list of recent SOAR cases (
${CASE_LIST}
) has been retrieved based on the specified criteria.Detailed information, including alerts and key entities, has been gathered for each case in the list and stored (
${CASE_DETAILS_MAP}
).Cases have been analyzed and grouped into logical clusters (
${CASE_GROUPS}
) based on defined or observed criteria.The identified case groups have been prioritized (
${PRIORITIZED_GROUPS}
).(Optional) Key shared entities within high-priority groups have undergone basic enrichment, and a summary (
${ENRICHMENT_DATA_SUMMARY}
) is available.A comprehensive Markdown summary report (
${REPORT_CONTENT}
), detailing the groups, prioritization, and key findings, has been generated and saved to${REPORT_FILE_PATH}
.A
${GROUPING_ANALYSIS_SUMMARY}
is available.