Skip to main content
skill CX Codex

analyzing-cloud-storage-access-patterns — Claude Code skill

A Claude Code skill that reads CloudTrail Data Events, GCS audit logs and Azure Storage Analytics to flag after-hours bulk downloads, fresh source IPs and GetObject spikes.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-cloud-storage-access-patterns -a claude-code
Open on GitHub

What analyzing-cloud-storage-access-patterns does

This skill goes through the access logs of cloud buckets and surfaces what breaks the usual pattern: downloads outside working hours, a sharp rise in GetObject calls, addresses never seen before. It covers three stores — AWS S3 via CloudTrail Data Events, GCS via audit logs, Azure Blob via Storage Analytics. Useful when you suspect data left the bucket, or when you are writing detection rules for T1530.

Setup is short. Install the dependencies with pip install boto3 requests, pull CloudTrail events for the window you care about, then build a baseline: hourly request volume, object counts per user, source IP history. The detections run on top of that baseline: access outside 8am–6pm local time, more than 100 GetObject calls from a single principal within an hour, new source IPs absent from the prior 30 days, and ListBucket spikes that look like enumeration. The result is a findings report sorted by priority.

The runner is scripts/agent.py, for example python scripts/agent.py --bucket my-sensitive-data --hours-back 24 --output s3_access_report.json. Python 3.8+ and read access to the logs in your own accounts are required beforehand; with no way to reach CloudTrail there is nothing to analyse. Run it against a test or lab environment.

What it helps with

  • spot after-hours downloads from a bucket holding sensitive files
  • find the principal behind more than 100 object reads in an hour
  • catch requests from IPs unseen in the prior 30 days
  • detect bucket enumeration through ListBucket calls
  • export a prioritised report for a SOC investigation

Example prompts for the agent

  • Run python scripts/agent.py --bucket my-sensitive-data --hours-back 24 --output s3_access_report.json and walk me through the findings by priority.
  • Build an access baseline for the bucket over the last 24 hours and show which principal has a GetObject spike.
  • Check whether any request to the storage account in the past 30 days came from a new IP.

How to install analyzing-cloud-storage-access-patterns

1Skills CLI (Vercel)

npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-cloud-storage-access-patterns -a claude-code

2Manually: put the files in place

~/.claude/skills/analyzing-cloud-storage-access-patterns/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/analyzing-cloud-storage-access-patterns/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about analyzing-cloud-storage-access-patterns

How do I install analyzing-cloud-storage-access-patterns in Claude Code?

Run npx skills add mukul975/Anthropic-Cybersecurity-Skills --skill analyzing-cloud-storage-access-patterns -a claude-code. The skill then sits at ~/.claude/skills/analyzing-cloud-storage-access-patterns/SKILL.md.

What does analyzing-cloud-storage-access-patterns do?

It hunts for abnormal access to S3, GCS and Azure Blob Storage: after-hours downloads, bulk GetObject calls, new source IPs and ListBucket enumeration. Output is a prioritised findings report.

Which storage services does the skill cover?

AWS S3 through CloudTrail Data Events, Google Cloud Storage through audit logs, and Azure Blob Storage through Storage Analytics. All three are handled by the same detection procedure.

Source text

SKILL.md · Apache-2.0
---
name: analyzing-cloud-storage-access-patterns
description: Detect abnormal access in AWS S3, GCS, and Azure Blob Storage by analyzing CloudTrail Data Events, GCS audit logs, and Azure Storage Analytics for after-hours bulk downloads, new-IP access, and API-call spikes (e.g. GetObject) via statistical baselines and time-series anomaly detection. Use when investigating suspected cloud data exfiltration or building related detection rules.
domain: cybersecurity
subdomain: cloud-security
tags:
- cloud-security
- aws-s3
- gcs
- azure-blob-storage
- cloudtrail
- data-access-anomaly
- exfiltration-detection
version: '1.0'
author: mahipal
license: Apache-2.0
atlas_techniques:
- AML.T0024
- AML.T0056
nist_ai_rmf:
- MEASURE-2.7
- MAP-5.1
- MANAGE-2.4
nist_csf:
- PR.IR-01
- ID.AM-08
- GV.SC-06
- DE.CM-01
mitre_attack:
- T1530
- T1567.002
- T1619
- T1078.004
- T1048
---


# Analyzing Cloud Storage Access Patterns


## When to Use

- When investigating security incidents that require analyzing cloud storage access patterns
- When building detection rules or threat hunting queries for this domain
- When SOC analysts need structured procedures for this analysis type
- When validating security monitoring coverage for related attack techniques

## Prerequisites

- Familiarity with cloud security concepts and tools
- Access to a test or lab environment for safe execution
- Python 3.8+ with required dependencies installed
- Appropriate authorization for any testing activities

## Instructions

1. Install dependencies: `pip install boto3 requests`
2. Query CloudTrail for S3 Data Events using AWS CLI or boto3.
3. Build access baselines: hourly request volume, per-user object counts, source IP history.
4. Detect anomalies:
   - After-hours access (outside 8am-6pm local time)
   - Bulk downloads: >100 GetObject calls from single principal in 1 hour
   - New source IPs not seen in the prior 30 days
   - ListBucket enumeration spikes (reconnaissance indicator)
5. Generate prioritized findings report.

```bash
python scripts/agent.py --bucket my-sensitive-data --hours-back 24 --output s3_access_report.json
```

## Examples

### CloudTrail S3 Data Event
```json
{"eventName": "GetObject", "requestParameters": {"bucketName": "sensitive-data", "key": "financials/q4.xlsx"},
 "sourceIPAddress": "203.0.113.50", "userIdentity": {"arn": "arn:aws:iam::123456789012:user/analyst"}}
```

© mahipal · Apache-2.0 · mukul975/Anthropic-Cybersecurity-Skills

Similar skills

All skills for Security →

From the same set90

conducting-api-security-testing This skill tests REST, GraphQL, and gRPC APIs for access-control, authentication, validation, and business-logic flaws. Use it for authorized API assessments. CX Codex +1 643installs analyzing-email-headers-for-phishing-investigation Parses email headers, traces Received hops, and validates SPF, DKIM, and DMARC to expose phishing sources and sender spoofing. CX Codex +1 612installs analyzing-cyber-kill-chain Maps intrusion activity to the Lockheed Martin Cyber Kill Chain and exposes defensive gaps. Use it for incident review and prevention-focused control planning. CX Codex +1 606installs analyzing-browser-forensics-with-hindsight Parses Chromium browser databases with Hindsight to reconstruct user web activity. Gathers history, cookies, and downloads into a unified timeline for forensic investigation. CX Codex +1 592installs analyzing-certificate-transparency-for-phishing Monitors Certificate Transparency logs to spot phishing lookalikes and certificate issuance affecting an organisation’s domains. CX Codex +1 547installs analyzing-active-directory-acl-abuse Reads Domain Controller DACLs over LDAP with ldap3, parses them into SDDL and reports ACEs where non-admin accounts hold GenericAll, WriteDACL or WriteOwner. CX Codex +1 548installs testing-api-for-broken-object-level-authorization Tests REST and GraphQL APIs for BOLA and IDOR flaws by swapping object identifiers across requests. Helps detect broken access controls between different user accounts. CX Codex +1 541installs testing-jwt-token-security A skill that walks an agent through JWT weaknesses: algorithm confusion, weak HMAC secrets, authorization bypass. Built for API and SSO pentests. CX Codex +1 536installs

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor