agentsclimarketplace

Log triage

Skill roodlicht/accans-sec-skills/skills/log-triage

Identity-log triage workflow — anomaly patterns per provider (AWS CloudTrail, Azure AD/Entra, Google Workspace, Okta), session and token misuse, MFA-bypass signals, conditional-access evasion, and cross-provider correlation. Produces a prioritized finding list routed to ir-runbook or detection-engineer.From its SKILL.md

Install
npx -y skills add roodlicht/accans-sec-skills --skill log-triage

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
  • 4 stars4 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

10.9 KB, ~2.5k tokens by cl100k_base, as published. Nobody here has run it

Log Triage

Identity-first context: the bulk of modern incidents starts or escalates via identity providers. Logs are the truth source — UIs are stale snapshots. This skill covers audit/identity logs from the major IdPs; network logs and endpoint EDR touch on this but live in other skills.

When to use

A log-triage question begins with "something is odd in the logs, take a look". This skill provides, per provider, the pattern set you can use to triage where people get lost in volume.

Triggers on:

  • A question like "look at these CloudTrail events", "is this Azure AD sign-in anomaly real", "Google Workspace audit log has N login failures", "what is the anomaly here in Okta", "compromised-account investigation".
  • A handoff from detection-engineer (rule fired, asks for deeper triage), ir-runbook (incident investigation), ioc-hunter (IOC match in an identity log).
  • A proactive hunting session focused on identity anomalies — overlap with threat-hunt.
  • A post-incident investigation where the identity path must be reconstructed for forensics-assist or regulatory reporting.

When NOT (handoff)

  • Generic SIEM-query building → siem-query.
  • Writing a detection rule based on the pattern → detection-engineer.
  • A threat-hunt session as a whole → threat-hunt (command).
  • Forensic memory/disk analysis → forensics-assist.
  • Network-flow triage or EDR process events → out of scope here; covered in generic SIEM-query or an EDR-tool skill.
  • IOC curation or enrichment → ioc-hunter.
  • Regulatory reporting → ir-runbook plus nis2/gdpr-pia.

Approach

Six phases. Phase 1 (provider context) and phase 4 (cross-provider correlation) are where triage builds from isolated events into a meaningful path.

1. Provider context and log-source inventory

Identity logs differ per provider in event shape, retention, and accessibility. Triage starts with "which provider, which log stream, which retention".

  • AWS: CloudTrail (management + data events), CloudTrail Insights (anomaly detection, paid), GuardDuty (managed detection, IAM-relevant findings).
  • Azure / Entra ID: Sign-in logs (interactive + non-interactive + service-principal), Audit logs (directory changes), Risk Detections (Identity Protection), Provisioning logs.
  • Google Workspace: Login audit, Admin audit, OAuth Token audit, Drive audit.
  • Okta: System Log (all auth events plus admin actions), Tableau Insights (managed anomaly).
  • JumpCloud / OneLogin / Ping: comparable structure.
  • On-prem AD: Security Event Log via Sysmon/Windows Audit; via DC SIEM forwarder.

Per source: retention window (default often shorter than the compliance requirement), log completeness (are all event types enabled?), log integrity (forwarding to SIEM complete?).

Pre-triage check: do you have access to all relevant streams for the time window of the incident, not just the "obvious" stream?

2. Anomaly patterns per provider

Per IdP, a pattern set you walk through by default. Not exhaustive; a starting point for triage.

AWS CloudTrail:

  • Console login without MFA where policy requires MFA. Event: ConsoleLogin with additionalEventData.MFAUsed=No.
  • GetSecretValue / Decrypt bursts by one principal in a short window — credential-harvesting pattern.
  • AssumeRole-cross-account from an unexpected source account.
  • CreateAccessKey + persist for an existing user (pattern T1098.001 — additional cloud credentials).
  • DisableLogging events: StopLogging on Trails, DeleteTrail, UpdateConfigurationRecorder. Pattern T1562.008.
  • Mass S3 GetObject or ListBuckets over a short window — exfil discovery.
  • IAM policy with Resource: "*" plus Action: "*" — overly permissive setup.
  • Region anomaly: activity in regions the org never deploys to.

Azure AD / Entra ID:

  • Sign-in from impossible travel: geo-pattern with velocity > realistic flight time. Identity Protection flags this, but verify in detail (VPN effects, mobile roaming).
  • MFA-fatigue pattern: multiple MFA prompts in quick succession followed by an approve. T1621 pattern. Conditional Access can block this with "request-frequency limit".
  • Service-principal misuse: a principal with an admin role suddenly signing in from non-authorized locations.
  • Legacy auth-protocol use: Basic Authentication, IMAP, POP — usually MFA-bypassing. Should be off.
  • Conditional-Access bypass attempts: failures on a CA policy followed by success via another route.
  • Application consent grants with sensitive scopes (Mail.ReadWrite, Files.ReadWrite.All) by regular users — illicit consent grant T1528.
  • Token replay: same token from different locations.

Google Workspace:

  • OAuth grants with external apps by regular users — Drive-data-leak vector.
  • Admin-Add / Role-Change: privilege elevation.
  • Mass mail-forward-rule set: BEC classifier T1114.003.
  • Login from unusual location plus device-fingerprint mismatch.
  • 2SV disabled for an account that previously had 2SV — recovery or abuse.
  • Drive scope-share "anyone with link" on sensitive data.

Okta:

  • Push-notification reject followed by push-accept elsewhere — MFA fatigue.
  • Factor reset by an admin on a user — backdoor pattern.
  • API-token creation by an admin with a high scope.
  • App-instance-add / OIN-app grant with a high scope.
  • Bypass of network-zone policies.

3. Per-event triage: question row

For each suspicious event, answer:

  • Actor: user, service account, or API token? Was the behavior expected for this actor?
  • Source: IP, ASN, geographic, device fingerprint. Match this against known employee locations / mobile providers / VPN exit points / cloud-provider IP ranges.
  • Authentication chain: how did the actor sign in (password, certificate, SAML assertion, OAuth token replay)? MFA used? Which factor?
  • Time: within working hours for this actor? Coherent with other activity (before/after)?
  • Outcome: success, failure, partial. On failure: what is the exact error? Which control caught it?
  • Prior behavior: what did this actor do 24h before? Pattern shift?

Collect answers in incident-table form. Without structure you lose consistency across events.

4. Cross-provider correlation

Real attacks spread across identity providers. A disturbance in Azure AD often propagates into AWS via federated auth, into Google Workspace via SAML, into SaaS tools via OAuth.

Correlation strategies:

  • User-identity mapping: the same person in Azure AD + Google + Okta + AWS. Email match works often. Document the mapping in advance so triage does not become a lookup loop.
  • Time-window overlap: actor X active in Azure AND a GuardDuty finding in AWS in the same 30-minute window.
  • IP correlation: the same IP for a sign-in in two providers within a short window.
  • Token-trail tracking: a SAML assertion from IdP A produces an AccessKey on cloud B that is used to hit SaaS resource C.

SIEM tooling with cross-provider data is critical here (see siem-query). Manual correlation works for small investigations; for larger incidents, a unified data layer is needed.

5. Prioritization and triage output

Per finding:

  • Severity classification:

    • Confirmed compromise: evidence of real misuse, route directly to ir-runbook.
    • High-suspicion: pattern matches, no direct evidence, asks for deeper action (force MFA reset, verify with user).
    • Anomalous but explainable: looks anomalous but matches a legitimate situation. Document for the baseline.
    • Background noise: false-positive pattern. Handoff to alert-tuning for rule adjustment.
  • Recommended action per finding: account disable, force pw reset, MFA re-enroll, key rotation, conditional-access tighten, deeper forensics.

  • Handoffs: high-suspicion and confirmed → ir-runbook; pattern feedback → detection-engineer; new IOCs → ioc-hunter; tuning input → alert-tuning.

6. Verification-loop

Layer 1: scope (all relevant streams checked for the time window, no blind spots like service-principal logs or OAuth-grant logs?), assumptions (user confirmed or denied the activity?), gaps (cross-provider correlation done, not just single-provider tunnel vision?). Layer 2: event-type names match current provider docs, no invented field names or API event IDs, ATT&CK T-IDs correct.

Output

Log triage — <scope / actor / event-cluster>
Time window: <start → end UTC>
Streams checked: <provider × log source>

Findings (per actor, per provider):
  Actor:       <user-ID + provider>
  Provider:    <AWS/Azure/Google/Okta>
  Pattern:     <impossible-travel / mfa-fatigue / illicit-consent / etc>
  Events:      <event IDs + timestamps>
  Severity:    <confirmed | high-suspicion | anomalous-explainable | noise>

Cross-provider correlation:
  IP overlap:    <IP found in providers X, Y>
  Time overlap:  <actor cluster within N minutes>
  Token trail:   <if relevant>

Recommended actions per finding:
  - <actor>: <account-disable / force-pw / MFA-reset / key-rotate / etc>

Handoffs:
  ir-runbook:         <confirmed compromises>
  detection-engineer: <pattern supports a new rule>
  ioc-hunter:         <new IOCs for enrichment>
  alert-tuning:       <noise rules for lifecycle treatment>

Verification-loop: ...

References

Categories

  • blue

What ships with it

Read from the repository

Just SKILL.md. No reference files, no scripts.

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.