From Orca Skills
Traces actor activity through cloud audit logs, builds session timelines, maps actions to MITRE ATT&CK techniques, and assesses blast radius. Use for incident investigation or tracing suspicious activity.
How this skill is triggered — by the user, by Claude, or both
Slash command
/orca-skills:orca-investigateThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Answers the question: **"What happened, who did it, and how far did they get?"**
Answers the question: "What happened, who did it, and how far did they get?"
Given an actor (IAM identity), source IP, target resource, or suspicious event, traces activity through Orca CDR (CloudTrail/audit logs), builds a session timeline, maps actions to MITRE ATT&CK techniques, clusters related sessions, and assesses the blast radius.
/orca-investigate arn:aws:iam::123456789012:role/bastion-admin-role
/orca-investigate 10.0.1.50
/orca-investigate account 123456789012
Or natural language:
Parse user input to determine the investigation axis:
| Input Pattern | Primary Filter | CDR Parameter |
|---|---|---|
| ARN (actor) | Identity-based | actors: ["<ARN>"] |
| IP address | Source-based | source_ip_addresses: ["<IP>"] |
| Resource ARN/name | Target-based | targets: ["<resource>"] |
| Account ID | Account-wide | accounts: ["<account>"] |
| Event/action name | Action-based | actions: ["<action>"] |
| Alert ID (orca-XXXX) | Alert-initiated | Fetch alert, extract actor/target, then CDR |
| Service name | Service-based | services: ["<service>"] |
Determine time range:
"last_24_hours" for active incidents"last_3_days" / "last_7_days"Query 1: Events by the actor/from the source/on the target
search_cdr_events:
<primary filter>: [<value>]
time_range: "<selected range>"
limit: 100
Query 2: Event summary grouped by action
get_cdr_events_grouped_by_event_name:
<primary filter>: [<value>]
time_range: "<selected range>"
page_size: 100
Query 3: If actor-based, also search as target
search_cdr_events:
targets: ["<actor ARN>"]
time_range: "<selected range>"
limit: 50
(To find events done TO this identity — policy changes, permission grants, etc.)
Query 4: If alert-initiated, fetch the alert
get_alert:
alert_id: "<alert-id>"
Query 5: Related alerts on the asset
get_asset_related_alerts_summary:
asset_id: <UUID>
Query 6: Related attack paths
get_asset_related_attack_paths_summary:
asset_id: <UUID>
From CDR events, construct a chronological timeline:
Map observed actions to MITRE ATT&CK for Cloud:
CDR Action MITRE Technique Tactic
──────────────────────────────────────────────────────────────────────────────────
ConsoleLogin T1078 — Valid Accounts Initial Access
AssumeRole (cross-account) T1550.001 — Web Session Cookie Lateral Movement
AssumeRole (same account) T1078.004 — Cloud Accounts Privilege Escalation
CreateUser / CreateAccessKey T1136.003 — Cloud Account Persistence
AttachUserPolicy / PutRolePolicy T1098.003 — Additional Cloud Roles Persistence
PutBucketPolicy (public) T1537 — Transfer to Cloud Account Exfiltration
GetObject (bulk S3) T1530 — Data from Cloud Storage Collection
DescribeInstances / ListBuckets T1580 — Cloud Infrastructure Discovery
RunInstances T1578.002 — Create Cloud Instance Resource Hijacking
StopLogging / DeleteTrail T1562.008 — Disable Cloud Logs Defense Evasion
ModifyInstanceAttribute T1578 — Modify Cloud Compute Execution
AuthorizeSecurityGroupIngress T1562.007 — Disable Cloud Firewall Defense Evasion
DeleteSnapshot / DeleteBucket T1485 — Data Destruction Impact
GetSecretValue / GetParameter T1552.004 — Cloud Secrets Credential Access
Invoke / InvokeFunction T1648 — Serverless Execution Execution
PutObject (to external account) T1537 — Transfer to Cloud Account Exfiltration
CreateSnapshot (shared externally) T1537 — Transfer to Cloud Account Exfiltration
For each mapped technique, assess:
Determine the scope of impact:
Classify blast radius:
CONTAINED — activity limited to 1-2 resources in 1 service
MODERATE — multiple resources or services, same account
BROAD — multiple accounts or significant data access
SEVERE — persistence established + data accessed + evasion attempted
IF defense_evasion AND persistence AND data_access THEN
"ACTIVE COMPROMISE — containment needed NOW"
ELSE IF persistence OR cross_account_lateral_movement THEN
"PROBABLE COMPROMISE — investigate and contain"
ELSE IF unusual_actions AND (off_hours OR new_source_ip) THEN
"SUSPICIOUS — requires investigation"
ELSE IF actions_match_role AND normal_hours AND known_ips THEN
"LIKELY BENIGN — routine activity"
ELSE
"INCONCLUSIVE — need more data"
CRITICAL: Never leave the user with just data. After EVERY output layer, suggest the next action and offer to generate containment/remediation code.
After the dashboard and after every drill-down section:
When the user selects a format:
contain-<actor-or-resource>.<ext> (e.g., .tf, .yml, .sh)Format mapping:
| User says | Extension | Template |
|---|---|---|
| Terraform | .tf | HCL with IAM deny policy / SG isolation resources |
| CloudFormation | .cfn.yaml | YAML template with containment resources |
| Ansible | .yml | Playbook with containment tasks |
| CLI | .sh | Shell script with immediate containment commands |
| Instructions | inline | Step-by-step containment runbook |
| Pulumi | .ts | TypeScript Pulumi containment program |
| ARM/Bicep | .bicep | Bicep template for Azure containment |
═══════════════════════════════════════════════════════════════════
INVESTIGATION — <scope description>
<actor/IP/resource> | <time range>
═══════════════════════════════════════════════════════════════════
VERDICT: <assessment> | CONFIDENCE: <X%>
┌─────────────────────────────────────────────────────────────────┐
│ EVENTS <N> total, <M> unique actions │
│ SESSIONS <N> distinct sessions │
│ TIME SPAN <first event> → <last event> (<duration>) │
│ SERVICES <N> AWS/Azure/GCP services touched │
│ RESOURCES <N> distinct resources accessed │
│ SOURCE IPs <N> unique IPs (<classification>) │
│ USER AGENTS <N> unique (<classification>) │
│ BLAST RADIUS <CONTAINED / MODERATE / BROAD / SEVERE> │
│ MITRE ATT&CK <N> techniques mapped across <M> tactics │
│ ALERTS <N> related alerts on involved assets │
│ ATTACK PATHS <N> kill chains involving this actor │
└─────────────────────────────────────────────────────────────────┘
EXECUTIVE SUMMARY:
<2-3 sentences: what happened, what's the risk, what to do next>
MITRE ATT&CK COVERAGE:
■ Initial Access ■ Execution □ Persistence □ Priv Esc
□ Defense Evasion ■ Discovery □ Lateral Move ■ Collection
□ Exfiltration □ Impact
(■ = observed, □ = not observed)
RECOMMENDED ACTION:
<Based on verdict — e.g., "Containment needed: revoke access
for <actor> and rotate credentials. I can generate the scripts.">
What format? terraform | cloudformation | ansible | cli |
instructions | pulumi | arm/bicep
═══════════════════════════════════════════════════════════════════
Or drill down: timeline | sessions | mitre | blast radius |
actions | resources | alerts | iocs | contain | full
═══════════════════════════════════════════════════════════════════
───────────────────────────────────────────────────────────────────
TIMELINE — <scope>
───────────────────────────────────────────────────────────────────
<date/time> <action>
Actor: <identity>
Target: <resource>
Source: <IP> (<classification>)
Agent: <user-agent> (<classification>)
Status: <success/failure>
MITRE: <technique if mapped>
<date/time> <action>
...
[... continues chronologically ...]
KEY MOMENTS:
<time> — <significant event description>
<time> — <significant event description>
───────────────────────────────────────────────────────────────────
───────────────────────────────────────────────────────────────────
SESSIONS — <scope>
───────────────────────────────────────────────────────────────────
SESSION 1: <start> → <end> (<duration>)
Actor: <identity>
Source: <IP> (<classification>)
Agent: <user-agent>
Actions: <N> total
<action> × <count>
<action> × <count>
...
Resources: <list>
Assessment: <normal / suspicious / malicious>
SESSION 2: <start> → <end>
...
SESSION COMPARISON:
<note any unusual sessions — off-hours, new IPs, different behavior>
───────────────────────────────────────────────────────────────────
───────────────────────────────────────────────────────────────────
MITRE ATT&CK MAPPING — <scope>
───────────────────────────────────────────────────────────────────
TACTIC TECHNIQUE ACTION CONFIDENCE
──────────────────────────────────────────────────────────────────────────────
Initial Access T1078 Valid Accounts ConsoleLogin HIGH
Discovery T1580 Cloud Infra Disc DescribeInstances MEDIUM
Collection T1530 Cloud Storage Data GetObject HIGH
...
KILL CHAIN ASSESSMENT:
Tactics covered: <N> of 10
Chain completeness: <PARTIAL / NEAR-COMPLETE / COMPLETE>
Missing for full chain: <tactics not observed>
Assessment: <interpretation of the ATT&CK coverage>
───────────────────────────────────────────────────────────────────
───────────────────────────────────────────────────────────────────
BLAST RADIUS — <scope>
───────────────────────────────────────────────────────────────────
SCOPE: <CONTAINED / MODERATE / BROAD / SEVERE>
RESOURCES ACCESSED:
<service>: <N> resources
<resource ARN> — <action performed>
...
DATA STORES TOUCHED:
<S3 bucket / RDS / DynamoDB / etc.> — <action> (<N> events)
Crown jewel: YES/NO
ACCOUNTS INVOLVED:
<account-1> — <N> events
<account-2> — <N> events (CROSS-ACCOUNT!)
PERSISTENCE INDICATORS:
[!] New user created: <user ARN>
[!] New access key: <key ID>
[!] Policy attached: <policy> to <identity>
(or: None detected)
DEFENSE EVASION:
[!] Trail stopped/deleted
[!] Security group modified
(or: None detected)
CONTAIN NOW:
I can generate scripts to revoke access, isolate resources,
and rotate credentials. Choose format: terraform |
cloudformation | ansible | cli | instructions | pulumi |
arm/bicep
───────────────────────────────────────────────────────────────────
───────────────────────────────────────────────────────────────────
ACTIONS — <scope>
───────────────────────────────────────────────────────────────────
Action Count Service Risk
──────────────────────────────────────────────────────────────
<action> <N> <service> <assessment>
<action> <N> <service> <assessment>
...
BY SERVICE:
<service>: <N> events (<M> unique actions)
...
BY RISK:
HIGH RISK: <list of dangerous actions>
NORMAL: <list of routine actions>
───────────────────────────────────────────────────────────────────
───────────────────────────────────────────────────────────────────
RESOURCES — <scope>
───────────────────────────────────────────────────────────────────
<resource ARN/name>
Type: <resource type>
Actions: <list of actions performed on it>
Crown jewel: YES/NO
Alerts: <N> open alerts
<resource ARN/name>
...
───────────────────────────────────────────────────────────────────
───────────────────────────────────────────────────────────────────
INDICATORS OF COMPROMISE — <scope>
───────────────────────────────────────────────────────────────────
IP ADDRESSES:
<IP> — <classification> | <N> events | <services>
USER AGENTS:
<agent> — <classification> | <N> events
IDENTITIES:
<ARN> — <role in the investigation>
RESOURCES CREATED (potential persistence):
<ARN> — created at <time>
ACCESS KEYS:
<key ID> — created for <user> at <time>
SHARE THESE WITH YOUR SOC:
[Copy-paste block of IOCs for threat intel tools]
AUTOMATE DETECTION:
I can generate detection rules or monitoring configs for
these IOCs. Choose format: terraform (CloudWatch/GuardDuty) |
ansible | cli | instructions
───────────────────────────────────────────────────────────────────
───────────────────────────────────────────────────────────────────
CONTAINMENT — Recommended Actions
───────────────────────────────────────────────────────────────────
IMMEDIATE (within 1 hour):
[ ] <action 1> — <why and how>
[ ] <action 2> — <why and how>
SHORT-TERM (within 24 hours):
[ ] <action> — <context>
[ ] <action> — <context>
INVESTIGATION NEXT STEPS:
[ ] <what to check next>
[ ] <what to check next>
EVIDENCE PRESERVATION:
[ ] Snapshot affected instances before changes
[ ] Export CloudTrail logs for the period
[ ] Document current state of modified resources
GENERATE CONTAINMENT CODE:
I'll create implementation scripts for the actions above.
Choose format: terraform | cloudformation | ansible | cli |
step-by-step runbook | pulumi | arm/bicep
After containment, I can help with:
• /orca-identity-review <actor> — review and right-size permissions
• /orca-asset-profile <resource> — full profile of affected assets
• Detection rule generation — prevent recurrence
───────────────────────────────────────────────────────────────────
Show all sections in order.
⚠ No CDR events found for <input> in <time range>.
Possible reasons:
• Identity/resource hasn't been active in this period
• CloudTrail/audit log ingestion not configured for this account
• CDR retention has expired for older events
• The actor ARN may be different (check aliases/assumed roles)
Try:
• Extend time range: /orca-investigate <input> last 30 days
• Search by account: /orca-investigate account <account-id>
• Check CDR configuration in Orca Console
Note: High event volume (<N> events). Showing top 100 by relevance.
For high-volume actors (automation/services), consider:
• Filtering by specific action: /orca-investigate <actor> action CreateUser
• Filtering by time: /orca-investigate <actor> last 1 hour
• Using Orca CDR UI for full event exploration
When starting from an alert:
Flag prominently:
⚠ CROSS-ACCOUNT ACTIVITY DETECTED
This actor accessed resources in multiple accounts:
<account-1> — <N> events
<account-2> — <N> events
Cross-account activity significantly increases blast radius.
Review each account separately for full impact.
| Tool | Purpose | Parameter |
|---|---|---|
search_cdr_events | Detailed event data | actors/targets/source_ip_addresses/actions/services/accounts, time_range, limit |
get_cdr_events_grouped_by_event_name | Action summary | Same filters as above, page_size |
get_alert | Alert context (if alert-initiated) | alert_id |
get_asset_related_alerts_summary | Related alerts | asset_id (UUID) |
get_asset_related_attack_paths_summary | Attack paths | asset_id (UUID) |
| Tool | Purpose | When |
|---|---|---|
get_asset_by_id | Full asset details | Drill-down on touched resources |
get_asset_crown_jewel_info | Crown jewel status | Blast radius assessment |
get_linked_entities_mapping | Connected resources | Lateral movement analysis |
discovery_search | Find related assets/alerts | Broader investigation |
All array parameters MUST be arrays even for single values:
| Parameter | Type | Description |
|---|---|---|
actors | array of strings | Actor ARNs |
targets | array of strings | Target resource ARNs |
source_ip_addresses | array of strings | Source IPs |
actions | array of strings | Event/action names |
services | array of strings | Service names (e.g., "iam.amazonaws.com") |
accounts | array of strings | Account IDs |
time_range | enum string | "last_1_hour", "last_24_hours", "last_3_days", "last_7_days", "last_30_days" |
limit | integer (1-100) | Max events for search_cdr_events |
page_size | integer (1-100) | Results per page for grouped events |
/orca-alert-triage for related alerts, /orca-identity-review for the actor's permissions, /orca-asset-profile for touched assets.npx claudepluginhub orcasecurity/orca-skills --plugin orca-skillsConducts threat hunts on Clawdstrike events: timelines, filtered queries, pattern correlations, IOC checks, MITRE ATT&CK mapping, and incident reports.
Unified SOC analyst workflow for CrowdStrike NGSIEM — triage alerts, investigate security events, hunt threats, and tune detections. Use when triaging alerts, investigating detections, running daily SOC review, or tuning for false positives.
Investigate a runtime threat detected by Sysdig end-to-end. Surfaces the highest-priority threat, enumerates affected images, scores vulnerability vs runtime correlations on a 1-5 confidence scale, deep-dives into network blast radius or suspicious-binary VT lookups depending on the event class, and hands the case off to Jira or PagerDuty. Triggers on: "investigate runtime threat", "what is this Falco alert", runtime incident triage, SOC investigation, Falco alert analysis.