Hunting For Living Off The Cloud Techniques
mukul975/Anthropic-Cybersecurity-Skills
Hunts for adversary abuse of legitimate cloud services (Azure, AWS, GCP, and SaaS platforms) for command-and-control, data staging, and exfiltration, i.e.
Investigate security incidents in Amazon Web Services -- reconstruct attacker activity from CloudTrail, VPC Flow Logs, and GuardDuty, anchor the investigation on the compromised principal (access…
$ npx skills add trilwu/secskills --skill investigating-aws-incidents -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install trilwu/secskills investigating-aws-incidents --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/trilwu/secskills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/secskills-defense/skills/investigating-aws-incidents .claude/skills/investigating-aws-incidents && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "investigating-aws-incidents" agent skill from https://github.com/trilwu/secskills/tree/main/secskills-defense/skills/investigating-aws-incidents into .claude/skills/investigating-aws-incidents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investigating-aws-incidents", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/trilwu/secskills/tree/main/secskills-defense/skills/investigating-aws-incidentsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add trilwu/secskills --skill investigating-aws-incidents -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install trilwu/secskills investigating-aws-incidents --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/trilwu/secskills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/secskills-defense/skills/investigating-aws-incidents .agents/skills/investigating-aws-incidents && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "investigating-aws-incidents" agent skill from https://github.com/trilwu/secskills/tree/main/secskills-defense/skills/investigating-aws-incidents into .agents/skills/investigating-aws-incidents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investigating-aws-incidents", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add trilwu/secskills --skill investigating-aws-incidents -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install trilwu/secskills investigating-aws-incidents --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/trilwu/secskills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/secskills-defense/skills/investigating-aws-incidents .cursor/skills/investigating-aws-incidents && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "investigating-aws-incidents" agent skill from https://github.com/trilwu/secskills/tree/main/secskills-defense/skills/investigating-aws-incidents into .cursor/skills/investigating-aws-incidents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investigating-aws-incidents", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/trilwu/secskills.git --path secskills-defense/skills/investigating-aws-incidents--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add trilwu/secskills --skill investigating-aws-incidents -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install trilwu/secskills investigating-aws-incidents --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/trilwu/secskills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/secskills-defense/skills/investigating-aws-incidents .gemini/skills/investigating-aws-incidents && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "investigating-aws-incidents" agent skill from https://github.com/trilwu/secskills/tree/main/secskills-defense/skills/investigating-aws-incidents into .gemini/skills/investigating-aws-incidents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investigating-aws-incidents", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install trilwu/secskills investigating-aws-incidentsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add trilwu/secskills --skill investigating-aws-incidents -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/trilwu/secskills.git skills-src && mkdir -p .github/skills && cp -r skills-src/secskills-defense/skills/investigating-aws-incidents .github/skills/investigating-aws-incidents && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "investigating-aws-incidents" agent skill from https://github.com/trilwu/secskills/tree/main/secskills-defense/skills/investigating-aws-incidents into .github/skills/investigating-aws-incidents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investigating-aws-incidents", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add trilwu/secskills --skill investigating-aws-incidents -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install trilwu/secskills investigating-aws-incidents --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/trilwu/secskills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/secskills-defense/skills/investigating-aws-incidents .opencode/skills/investigating-aws-incidents && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "investigating-aws-incidents" agent skill from https://github.com/trilwu/secskills/tree/main/secskills-defense/skills/investigating-aws-incidents into .opencode/skills/investigating-aws-incidents/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "investigating-aws-incidents", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
investigating-aws-incidentsInvestigate security incidents in Amazon Web Services -- reconstruct attacker activity from CloudTrail, VPC Flow Logs, and GuardDuty, anchor the investigation on the compromised principal (access…
Investigating AWS Incidents is an agent skill from trilwu/secskills. Investigate security incidents in Amazon Web Services -- reconstruct attacker activity from CloudTrail, VPC Flow Logs, and GuardDuty, anchor the investigation on the compromised principal (access key or role), trace privilege escalation and persistence through IAM API calls, detect data exfiltration and crypto-mining, and contain without destroying evidence or tipping off the attacker. Use when responding to a suspected AWS compromise, exposed access keys, anomalous CloudTrail activity, a GuardDuty finding…
Its SKILL.md is about 4.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Security, covering File uploads and storage, Red teaming and adversary simulation and Security operations. It works with Amazon Web Services. The repository describes itself as: Transform Claude Code into your personal security engineer. The licence is MIT.
Read from SKILL.md and the folder at commit ca53957. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
awsFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use aws, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Investigating AWS Incidents loads about 4.8k tokens when it runs. Until then it costs about 155 tokens; SKILL.md has 1,909 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from trilwu/secskills at commit ca53957, republished under its MIT licence (© trilwu). 1,909 words, ~4,805 tokens.
.claude/skills/investigating-aws-incidents/SKILL.md (or your agent's skills folder).In AWS an incident is reconstructed from logs the attacker usually could not delete -- CloudTrail, VPC Flow Logs, and the control plane's own record of every API call. The investigation is therefore a log-correlation exercise anchored on the compromised principal: the access key or assumed role, and the sequence of API calls it made. Find the principal, pull every event it generated, and the rest of the intrusion falls out of the timeline.
investigating-m365-entrainvestigating-azure-incidentsinvestigating-gcp-incidentsresponding-to-incidentsexploiting-cloud-platformsattacking-eks-gke-akshunting-threatsThree actions, in order: identify the principal, pull its recent activity, preserve before you contain.
Scope the compromised principal. Whether the report is a leaked key, a GuardDuty finding, or a billing spike, resolve it to a single principal ARN -- an IAM user, a role, or the root account. That ARN is the anchor for everything that follows.
# What is this key/session, and does it still work?
aws sts get-caller-identity # if you hold the suspect creds
# Resolve an access key ID to its owner
aws iam get-access-key-last-used --access-key-id AKIA...
# Enumerate the principal's current footprint
aws iam list-access-keys --user-name <user>
aws iam list-attached-user-policies --user-name <user>
aws iam list-user-policies --user-name <user>Pull recent activity from the principal. Event history (below) is the fastest first look; the S3 log bucket is the source of truth.
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=Username,AttributeValue=<user> \
--start-time 2026-07-01T00:00:00Z --max-results 200
# By access key -- catches role sessions that lookup-by-username misses
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=AccessKeyId,AttributeValue=AKIA...Isolate without tipping off -- snapshot then contain. An attacker who sees their key deactivated mid-operation will burn persistence you have not found yet. For anything but active, ongoing damage: preserve evidence first (snapshot volumes, export logs), map persistence, then contain everything at once. If there is live damage -- active mining, active exfil -- stop the damage and accept the trade.
Event history vs. the S3 log bucket. The console Event history is searchable but covers only 90 days of management events and drops data events. The CloudTrail S3 log bucket (or CloudTrail Lake) is the authoritative record and the only place with S3/Lambda data events -- query it, not the console, once you are past the first look. Confirm what is actually logged:
aws cloudtrail describe-trails
aws cloudtrail get-trail-status --name <trail> # IsLogging: true?
aws cloudtrail get-event-selectors --trail-name <trail> # data events on?userIdentity types tell you what you are looking at:
type | Meaning | Investigative note |
|---|---|---|
IAMUser | Long-lived user credentials | accessKeyId is the pivot. Human or service account? |
AssumedRole | Temporary STS creds | Read sessionContext.sessionIssuer for the source role. |
AWSService | An AWS service acting | Usually benign, but check for spoofed-looking service calls. |
Root | Root account | Almost never legitimate for API calls. Treat as critical. |
FederatedUser / WebIdentityUser | GetFederationToken broker / OIDC web identity | Trace to the broker's IAM user, or the IdP session. |
For AssumedRole, sessionContext.sessionIssuer.arn names the role and
sessionContext.attributes.mfaAuthenticated tells you whether MFA was used.
Anomaly fields to grep:
sourceIPAddress -- external IPs on role credentials that should only run
inside the VPC (the IMDS theft signature, below). Correlate against VPC Flow
Logs.userAgent -- aws-cli/2.x, Boto3, python-requests, or anything with
kali on a principal that normally shows console or SDK-from-Lambda agents.awsRegion -- calls in regions you do not operate in (attackers spin up
mining in ap-* / sa-* to dodge attention). Enumeration touches many
regions fast.errorCode -- a storm of AccessDenied / UnauthorizedOperation is
enumeration: the attacker is mapping what the stolen principal can do.-- Athena over the CloudTrail S3 bucket: AccessDenied enumeration storm
SELECT eventname, count(*) AS n
FROM cloudtrail_logs
WHERE useridentity.accesskeyid = 'AKIA...'
AND errorcode = 'AccessDenied'
AND eventtime > '2026-07-01T00:00:00Z'
GROUP BY eventname ORDER BY n DESC;Grep the timeline for this sequence. It is the shape of nearly every stolen-key intrusion:
GetCallerIdentity -- often the very first call. The attacker is
confirming what the key is and who owns the account.List* / Get* / Describe* across IAM, S3, EC2, RDS,
Secrets Manager, often with an AccessDenied storm.CreateUser, CreateAccessKey,
AttachUserPolicy (watch for AdministratorAccess), PutUserPolicy (inline
policy so it does not show in attached-policy lists), CreateLoginProfile (a
console password on an API-only account), UpdateLoginProfile.iam:PassRole abuse -- passing a high-privilege role to a new EC2
instance, Lambda, or Glue job to inherit its permissions. Look for PassRole
paired with RunInstances / CreateFunction.UpdateAssumeRolePolicy or CreateRole with a
trust policy naming an external account (a cross-account backdoor).AssumeRole into a more privileged role, then another,
building a chain that launders the original stolen key.# Pull the IAM mutating calls for the window
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=EventName,AttributeValue=CreateAccessKey
# Repeat for: CreateUser, AttachUserPolicy, PutUserPolicy, CreateLoginProfile,
# UpdateAssumeRolePolicy, CreateRole, AssumeRole
# (iam:PassRole is a permission, not an event -- find it in requestParameters of
# RunInstances / CreateFunction, not via lookup-by-EventName)Enumerate every mechanism explicitly during eradication -- rotating the one leaked key does nothing about a second one the attacker created.
CreateAccessKey on the
victim or another account; a user may have up to two keys.CreateLoginProfile on a
principal that never used the console is high-signal.UpdateAssumeRolePolicy adding an
external principal or sts:AssumeRole from another account.iam:CreateServiceLinkedRole and other quietly-privileged roles.# Users and keys created recently
aws iam list-users --query 'Users[?CreateDate>=`2026-07-01`].[UserName,CreateDate]'
for u in $(aws iam list-users --query 'Users[].UserName' --output text); do
aws iam list-access-keys --user-name "$u" \
--query 'AccessKeyMetadata[].[UserName,AccessKeyId,CreateDate]' --output text
done
# Roles whose trust policy names an external account
aws iam list-roles --query 'Roles[].[RoleName,AssumeRolePolicyDocument]'
# Recently modified Lambda and the EventBridge rules that fire them
aws lambda list-functions --query 'Functions[].[FunctionName,LastModified]'
aws events list-rules --query 'Rules[].[Name,ScheduleExpression,State]'The classic AWS escalation: an SSRF or foothold on an EC2 instance reads the
Instance Metadata Service (http://169.254.169.254/latest/meta-data/iam/...),
lifts the instance role's temporary credentials, and uses them elsewhere.
The signature is unmistakable in CloudTrail: the instance role's session
credentials appear from a sourceIPAddress that is not the instance. The role
is minted for the instance, so any call from an external or unrelated IP means
the credentials left the box.
-- Role session creds used from outside the VPC
SELECT eventtime, eventname, sourceipaddress, useragent
FROM cloudtrail_logs
WHERE useridentity.arn LIKE '%assumed-role/<instance-role>%'
AND sourceipaddress NOT LIKE '10.%'
AND sourceipaddress NOT LIKE '172.%'
ORDER BY eventtime;IMDSv1 (a simple GET, no session token) makes this trivial and is itself a
finding -- confirm whether the instance enforces IMDSv2
(HttpTokens: required) via aws ec2 describe-instances. Correlate the theft
window with VPC Flow Logs for the outbound SSRF and the reuse source.
GuardDuty is a starting pistol, not the investigation. Each finding type maps to a hypothesis you confirm in CloudTrail:
| Finding type | Implication |
|---|---|
UnauthorizedAccess:IAMUser/InstanceCredentialExfiltration.* | Instance role creds used off the instance -- the IMDS theft above. |
UnauthorizedAccess:IAMUser/MaliciousIPCaller | A principal called from a known-bad IP. |
UnauthorizedAccess:IAMUser/TorIPCaller | API calls via Tor -- almost never a legitimate admin. |
CryptoCurrency:EC2/BitcoinTool.B!DNS | An instance talking to a mining pool -- confirmed crypto-mining. |
Recon:IAMUser/* | Enumeration -- the AccessDenied storm. |
Persistence:IAMUser/*, PrivilegeEscalation:IAMUser/* | IAM mutation matching the escalation patterns above. |
Policy:S3/BucketAnonymousAccessGranted | A bucket was made public -- possible exfil staging. |
aws guardduty list-findings --detector-id <id> \
--finding-criteria '{"Criterion":{"severity":{"Gte":4}}}'
aws guardduty get-findings --detector-id <id> --finding-ids <id>Findings older than the CloudTrail window still carry the principal and IPs -- pivot on those even when the raw events have aged out of Event history.
GetObject volume/bytes on sensitive
buckets, visible only if S3 data events are logged. Check request counts by
principal.PutBucketPolicy / PutBucketAcl granting
AllUsers or AuthenticatedUsers, or PutPublicAccessBlock disabling the
block.ModifySnapshotAttribute or ModifyImageAttribute
adding an external account or all to the volume/AMI (steal data by sharing
the snapshot out).ModifyDBSnapshotAttribute sharing a DB snapshot, or
StartExportTask dumping a snapshot to an attacker-controlled S3 bucket.SELECT eventname, useridentity.arn, sourceipaddress,
json_extract_scalar(requestparameters, '$.attributeType') AS attr
FROM cloudtrail_logs
WHERE eventname IN ('ModifySnapshotAttribute','ModifyImageAttribute',
'ModifyDBSnapshotAttribute','PutBucketPolicy','PutBucketAcl')
AND eventtime > '2026-07-01T00:00:00Z';A capable attacker tries to blind you. Watch for and, crucially, work around:
StopLogging / DeleteTrail -- turning off CloudTrail.PutEventSelectors -- narrowing what the trail records (dropping data
events or a whole region) without deleting the trail.DeleteFlowLogs -- removing VPC Flow Logs to hide the network side.DeleteDetector / UpdateDetector (disable) / suspend -- killing
GuardDuty.The defeat for all of these is a member-account-independent
Organizations-level trail that logs to a central, locked S3 bucket (MFA
delete, Object Lock, separate log-archive account) the compromised principal
cannot reach. The very act of StopLogging is itself logged there before it
takes effect. If you have an org trail, the attacker's cleanup calls are
evidence, not gaps. If you do not, note the blind window as a scoping
limitation.
# Was logging tampered with? These calls are the finding.
aws cloudtrail lookup-events \
--lookup-attributes AttributeKey=EventName,AttributeValue=StopLogging
# Repeat: DeleteTrail, PutEventSelectors, DeleteFlowLogs, DeleteDetectorEBS snapshots of every involved instance's volumes, before you touch the instance. Tag with the case ID and apply a resource policy / legal hold so they cannot be deleted.
aws ec2 create-snapshot --volume-id vol-xxx \
--description "IR-2026-042 preserve" \
--tag-specifications 'ResourceType=snapshot,Tags=[{Key=case,Value=IR-2026-042},{Key=legal-hold,Value=true}]'Memory capture on a live instance before termination -- for a resident
implant or in-memory creds, this is the only source. Acquire and then analyze
per analyzing-memory-images.
Export the relevant CloudTrail window to a preserved location, and copy VPC Flow Logs and any GuardDuty findings before retention expires.
Tagging and legal hold on all evidence artifacts, and involve legal before collection if the incident may become a regulatory or litigation matter.
Do it all at once, after scoping. Partial containment alerts the attacker.
Deactivate, do not delete, keys -- deletion destroys the artifact; a deactivated key still shows in the timeline.
aws iam update-access-key --user-name <user> \
--access-key-id AKIA... --status InactiveRevoke active sessions -- deactivating a key does not kill in-flight
temporary sessions minted from it. Attach an inline deny policy that invalidates
any session/token issued before now (the AWSRevokeOlderSessions pattern):
aws iam put-user-policy --user-name <user> \
--policy-name AWSRevokeOlderSessions \
--policy-document '{"Version":"2012-10-17","Statement":[{"Effect":"Deny",
"Action":"*","Resource":"*","Condition":{"DateLessThan":
{"aws:TokenIssueTime":"2026-07-20T00:00:00Z"}}}]}'For a role, put an equivalent deny in the role's inline policy or a boundary.
Rotate every credential the principal could reach: other keys, secrets in Secrets Manager / SSM the principal read, and any hardcoded creds on compromised instances.
Quarantine security group -- move a mining or exfil instance to an SG with no egress rather than terminating it, so memory and disk survive for analysis.
Remove attacker persistence -- delete the created users/keys/roles, revert tampered trust policies, remove backdoor Lambda and EventBridge rules -- only after they are documented.
PutUserPolicy), a second access key on an existing user, and modified role
trust policies all grant persistence without ever creating a user.RunInstances was compromised -- the same access could exfiltrate data or
escalate. Mining is the visible symptom, not the scope.iam:PassRole and AssumeRole chains routinely turn a modest instance role
into account-wide access. Trace what the role can reach, don't assume.investigating-m365-entra -- the sibling cloud-IR skill for M365 / Entra ID incidentsresponding-to-incidents -- the general IR process, evidence handling, and host-level responseexploiting-cloud-platforms -- the offensive side; how these AWS TTPs are executedattacking-eks-gke-aks -- when the pivot is specifically into Kubernetes on EKSanalyzing-memory-images -- working an instance memory capture with Volatilityhunting-threats -- proactive hunting when there is no confirmed incidentreporting-security-findings -- structuring the incident narrative and deliverablecloudtrail-partitioner -- partition the CloudTrail S3 bucket for fast Athena queriesstratus-red-team -- emulate AWS attack TTPs to learn what each leaves in CloudTrail© trilwu, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in secskills-defense/skills/investigating-aws-incidents of trilwu/secskills.
Open the folder on GitHubat commit ca53957
Investigating AWS Incidents next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Investigating AWS Incidents this skilltrilwu/secskills | 157 | — | ~4.8k | Automated safety check: Pass | MIT | |
| Hunting For Living Off The Cloud Techniquesmukul975/Anthropic-Cybersecurity-Skills | 34k | — | ~925 | Automated safety check: Pass | Apache-2.0 | |
| Performing Cloud Forensics With AWS Cloudtrailmukul975/Anthropic-Cybersecurity-Skills | 34k | — | ~845 | Automated safety check: Pass | Apache-2.0 | |
| Performing Cloud Log Forensics With Athenamukul975/Anthropic-Cybersecurity-Skills | 34k | — | ~3.7k | Automated safety check: Pass | Apache-2.0 | |
| Implementing Cloud Trail Log Analysismukul975/Anthropic-Cybersecurity-Skills | 34k | — | ~3.4k | Automated safety check: Pass | Apache-2.0 | |
| Cloud Defensetransilienceai/communitytools | 563 | — | ~476 | Automated safety check: Pass | MIT |
mukul975/Anthropic-Cybersecurity-Skills
Hunts for adversary abuse of legitimate cloud services (Azure, AWS, GCP, and SaaS platforms) for command-and-control, data staging, and exfiltration, i.e.
mukul975/Anthropic-Cybersecurity-Skills
Investigate AWS account compromise by querying CloudTrail with boto3's LookupEvents or AWS Athena SQL over S3-delivered logs, filtering on suspicious user agents, source IPs, and event names to…
mukul975/Anthropic-Cybersecurity-Skills
Uses AWS Athena to query CloudTrail, VPC Flow Logs, S3 access logs, and ALB logs for forensic investigation.
mukul975/Anthropic-Cybersecurity-Skills
Implementing AWS CloudTrail log analysis for security monitoring, threat detection, and forensic investigation using Athena, CloudWatch Logs Insights, and SIEM integration to identify unauthorized…
transilienceai/communitytools
Detect and break the cloud post-compromise attack chain (AWS / Azure / GCP) — per-stage CloudTrail / Activity-Log / Audit-Log detection signals and the preventive controls that close each step.
aws/agent-toolkit-for-aws
Provisions, connects, migrates, and operates Amazon RDS for Db2.
trilwu/secskills
Audit source code for exploitable vulnerabilities using threat-model-driven review, taint tracing, invariant checking, and variant analysis.
trilwu/secskills
Perform OSINT, subdomain enumeration, port scanning, web reconnaissance, email harvesting, and cloud asset discovery for initial access.
trilwu/secskills
Assess and harden LLM applications and agentic systems against prompt injection, tool misuse, excessive agency, memory poisoning, RAG data leakage, and model supply-chain risk, mapped to the OWASP…
trilwu/secskills
Reverse engineer compiled binaries, firmware, and mobile app packages using triage, static disassembly, decompilation, and dynamic instrumentation.
trilwu/secskills
Reverse engineer Go binaries by recovering function names and types from pclntab and moduledata using GoReSym, redress, and IDA/Ghidra Go plugins, and by reading Go's non-standard calling…
trilwu/secskills
Analyze iOS applications at the binary level — decrypting FairPlay-protected IPAs with frida-ios-dump or bagbak, inspecting Mach-O load commands, recovering Objective-C headers with class-dump, and…
Works with
Categories
Investigate security incidents in Amazon Web Services -- reconstruct attacker activity from CloudTrail, VPC Flow Logs, and GuardDuty, anchor the investigation on the compromised principal (access…. Investigating AWS Incidents is an agent skill from trilwu/secskills. Investigate security incidents in Amazon Web Services -- reconstruct attacker activity from CloudTrail, VPC Flow Logs, and GuardDuty, anchor the investigation on the compromised principal (access key or role), trace privilege escalation and persistence through IAM API calls, detect data exfiltration and crypto-mining, and contain without destroying evidence or tipping off the attacker.
Investigating AWS Incidents fits situations like: responding to a suspected AWS compromise; exposed access keys; anomalous CloudTrail activity; A GuardDuty finding.
Run `npx skills add trilwu/secskills --skill investigating-aws-incidents -a claude-code`. Or copy the skill folder (secskills-defense/skills/investigating-aws-incidents in trilwu/secskills) into .claude/skills/investigating-aws-incidents in your project. Claude Code loads it when a task matches its description.
Run `npx skills add trilwu/secskills --skill investigating-aws-incidents -a codex`. Or copy the skill folder (secskills-defense/skills/investigating-aws-incidents in trilwu/secskills) into .agents/skills/investigating-aws-incidents in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add trilwu/secskills --skill investigating-aws-incidents -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/investigating-aws-incidents, .gemini/skills/investigating-aws-incidents, .github/skills/investigating-aws-incidents and .opencode/skills/investigating-aws-incidents in your project.
Going by SKILL.md and its folder, Investigating AWS Incidents needs the command-line tools its instructions call (aws).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Investigating AWS Incidents is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.8k tokens (SKILL.md is roughly 19k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Investigating AWS Incidents: Hunting For Living Off The Cloud Techniques (mukul975/Anthropic-Cybersecurity-Skills, 34k stars), Performing Cloud Forensics With AWS Cloudtrail (mukul975/Anthropic-Cybersecurity-Skills, 34k stars), Performing Cloud Log Forensics With Athena (mukul975/Anthropic-Cybersecurity-Skills, 34k stars) and Implementing Cloud Trail Log Analysis (mukul975/Anthropic-Cybersecurity-Skills, 34k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
trilwu (a GitHub user) maintains it in trilwu/secskills, which has 157 GitHub stars. The repository holds 50 skills in this directory. The repository was last updated on September 4, 2026.
Source: trilwu/secskills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.