opencode-skills-collection 4.0.68 → 4.0.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled-skills/.antigravity-install-manifest.json +266 -1
- package/bundled-skills/access-review/SKILL.md +394 -0
- package/bundled-skills/access-review/references/details.md +121 -0
- package/bundled-skills/agent-evals/SKILL.md +420 -0
- package/bundled-skills/agent-observability/SKILL.md +346 -0
- package/bundled-skills/agent-observability/references/details.md +786 -0
- package/bundled-skills/ai-agent-security/SKILL.md +393 -0
- package/bundled-skills/ai-agent-security/references/details.md +912 -0
- package/bundled-skills/ai-coding-agent-guardrails/SKILL.md +442 -0
- package/bundled-skills/ai-coding-agent-guardrails/references/details.md +753 -0
- package/bundled-skills/ai-inference-service-mesh/SKILL.md +449 -0
- package/bundled-skills/ai-pipeline-orchestration/SKILL.md +287 -0
- package/bundled-skills/ai-red-teaming/SKILL.md +409 -0
- package/bundled-skills/ai-security-hardening/SKILL.md +343 -0
- package/bundled-skills/ai-sre-incident-response/SKILL.md +336 -0
- package/bundled-skills/alerting-oncall/SKILL.md +458 -0
- package/bundled-skills/alerting-oncall/references/details.md +84 -0
- package/bundled-skills/apk-redteam-pipeline/SKILL.md +446 -0
- package/bundled-skills/argocd-gitops/SKILL.md +469 -0
- package/bundled-skills/arm-templates/SKILL.md +438 -0
- package/bundled-skills/arm-templates/references/details.md +64 -0
- package/bundled-skills/asset-inventory/SKILL.md +412 -0
- package/bundled-skills/asset-inventory/references/details.md +127 -0
- package/bundled-skills/audit-logging/SKILL.md +476 -0
- package/bundled-skills/aws-cloudtrail/SKILL.md +486 -0
- package/bundled-skills/aws-cost-optimization/SKILL.md +331 -0
- package/bundled-skills/aws-ec2/SKILL.md +426 -0
- package/bundled-skills/aws-ecs-fargate/SKILL.md +388 -0
- package/bundled-skills/aws-iam/SKILL.md +463 -0
- package/bundled-skills/aws-lambda/SKILL.md +428 -0
- package/bundled-skills/aws-rds/SKILL.md +380 -0
- package/bundled-skills/aws-s3/SKILL.md +434 -0
- package/bundled-skills/aws-secrets-manager/SKILL.md +486 -0
- package/bundled-skills/aws-vpc/SKILL.md +436 -0
- package/bundled-skills/azure-ai-document-intelligence-ts/SKILL.md +1 -1
- package/bundled-skills/azure-aks/SKILL.md +423 -0
- package/bundled-skills/azure-devops/SKILL.md +457 -0
- package/bundled-skills/azure-functions-devsec/SKILL.md +436 -0
- package/bundled-skills/azure-keyvault/SKILL.md +455 -0
- package/bundled-skills/azure-keyvault/references/details.md +83 -0
- package/bundled-skills/azure-monitor-audit/SKILL.md +379 -0
- package/bundled-skills/azure-networking/SKILL.md +448 -0
- package/bundled-skills/azure-networking/references/details.md +135 -0
- package/bundled-skills/azure-sql/SKILL.md +413 -0
- package/bundled-skills/azure-sql/references/details.md +113 -0
- package/bundled-skills/azure-vms/SKILL.md +402 -0
- package/bundled-skills/azure-vms/references/details.md +134 -0
- package/bundled-skills/backup-recovery/SKILL.md +388 -0
- package/bundled-skills/bb-methodology/SKILL.md +451 -0
- package/bundled-skills/bb-methodology/references/details.md +120 -0
- package/bundled-skills/block-storage/SKILL.md +371 -0
- package/bundled-skills/blue-green-deploy/SKILL.md +453 -0
- package/bundled-skills/blue-green-deploy/references/details.md +90 -0
- package/bundled-skills/bug-bounty/SKILL.md +447 -0
- package/bundled-skills/bug-bounty/references/details.md +1316 -0
- package/bundled-skills/bugcrowd-reporting/SKILL.md +351 -0
- package/bundled-skills/business-continuity/SKILL.md +463 -0
- package/bundled-skills/career-ops/SKILL.md +186 -0
- package/bundled-skills/cdn-setup/SKILL.md +374 -0
- package/bundled-skills/change-management/SKILL.md +438 -0
- package/bundled-skills/change-management/references/details.md +105 -0
- package/bundled-skills/circleci/SKILL.md +475 -0
- package/bundled-skills/cis-benchmarks/SKILL.md +150 -0
- package/bundled-skills/cloudflare-pages/SKILL.md +318 -0
- package/bundled-skills/cloudflare-r2/SKILL.md +353 -0
- package/bundled-skills/cloudflare-workers/SKILL.md +415 -0
- package/bundled-skills/cloudflare-zero-trust/SKILL.md +361 -0
- package/bundled-skills/cloudformation/SKILL.md +461 -0
- package/bundled-skills/constraint-driven-development/SKILL.md +335 -0
- package/bundled-skills/constraint-driven-development/references/floor-guard.md +99 -0
- package/bundled-skills/container-hardening/SKILL.md +126 -0
- package/bundled-skills/container-registries/SKILL.md +435 -0
- package/bundled-skills/container-scanning/SKILL.md +416 -0
- package/bundled-skills/convex-backend/SKILL.md +338 -0
- package/bundled-skills/dast-scanning/SKILL.md +437 -0
- package/bundled-skills/database-backups/SKILL.md +425 -0
- package/bundled-skills/datadog/SKILL.md +487 -0
- package/bundled-skills/dependency-scanning/SKILL.md +457 -0
- package/bundled-skills/devcontainers-nix/SKILL.md +416 -0
- package/bundled-skills/disaster-recovery/SKILL.md +374 -0
- package/bundled-skills/disaster-recovery/references/details.md +219 -0
- package/bundled-skills/dns-management/SKILL.md +375 -0
- package/bundled-skills/docker-compose/SKILL.md +482 -0
- package/bundled-skills/docker-management/SKILL.md +426 -0
- package/bundled-skills/ebpf-observability/SKILL.md +436 -0
- package/bundled-skills/ebpf-observability/references/details.md +542 -0
- package/bundled-skills/elk-stack/SKILL.md +487 -0
- package/bundled-skills/enterprise-vpn-attack/SKILL.md +395 -0
- package/bundled-skills/evidence-hygiene/SKILL.md +404 -0
- package/bundled-skills/feature-flags/SKILL.md +426 -0
- package/bundled-skills/feature-flags/references/details.md +86 -0
- package/bundled-skills/fedramp-compliance/SKILL.md +453 -0
- package/bundled-skills/firebase-app-platform/SKILL.md +381 -0
- package/bundled-skills/firewall-config/SKILL.md +479 -0
- package/bundled-skills/gcp-audit-logs/SKILL.md +452 -0
- package/bundled-skills/gcp-audit-logs/references/details.md +56 -0
- package/bundled-skills/gcp-cloud-functions/SKILL.md +284 -0
- package/bundled-skills/gcp-cloud-sql/SKILL.md +277 -0
- package/bundled-skills/gcp-compute/SKILL.md +319 -0
- package/bundled-skills/gcp-gke/SKILL.md +307 -0
- package/bundled-skills/gcp-networking/SKILL.md +293 -0
- package/bundled-skills/gcp-secret-manager/SKILL.md +421 -0
- package/bundled-skills/gcp-secret-manager/references/details.md +131 -0
- package/bundled-skills/gdpr-compliance/SKILL.md +451 -0
- package/bundled-skills/gdpr-compliance/references/details.md +145 -0
- package/bundled-skills/geo-audit/SKILL.md +368 -0
- package/bundled-skills/geo-brand-mentions/SKILL.md +68 -0
- package/bundled-skills/geo-brand-mentions/references/details.md +471 -0
- package/bundled-skills/geo-citability/SKILL.md +350 -0
- package/bundled-skills/geo-compare/SKILL.md +340 -0
- package/bundled-skills/geo-content/SKILL.md +383 -0
- package/bundled-skills/geo-crawlers/SKILL.md +408 -0
- package/bundled-skills/geo-llmstxt/SKILL.md +464 -0
- package/bundled-skills/geo-platform-optimizer/SKILL.md +314 -0
- package/bundled-skills/geo-proposal/SKILL.md +378 -0
- package/bundled-skills/geo-prospect/SKILL.md +225 -0
- package/bundled-skills/geo-report/SKILL.md +436 -0
- package/bundled-skills/geo-report-pdf/SKILL.md +157 -0
- package/bundled-skills/geo-schema/SKILL.md +408 -0
- package/bundled-skills/geo-technical/SKILL.md +78 -0
- package/bundled-skills/geo-technical/references/details.md +543 -0
- package/bundled-skills/git-workflow/SKILL.md +460 -0
- package/bundled-skills/github-actions/SKILL.md +368 -0
- package/bundled-skills/gitlab-ci/SKILL.md +340 -0
- package/bundled-skills/gpu-kubernetes-operations/SKILL.md +468 -0
- package/bundled-skills/gpu-server-management/SKILL.md +236 -0
- package/bundled-skills/hashicorp-vault/SKILL.md +408 -0
- package/bundled-skills/helm-charts/SKILL.md +469 -0
- package/bundled-skills/hipaa-compliance/SKILL.md +451 -0
- package/bundled-skills/hunt-aspnet/SKILL.md +321 -0
- package/bundled-skills/hunt-ato/SKILL.md +184 -0
- package/bundled-skills/hunt-auth-bypass/SKILL.md +426 -0
- package/bundled-skills/hunt-auth-bypass/references/details.md +80 -0
- package/bundled-skills/hunt-brute-force/SKILL.md +341 -0
- package/bundled-skills/hunt-business-logic/SKILL.md +281 -0
- package/bundled-skills/hunt-cache-poison/SKILL.md +382 -0
- package/bundled-skills/hunt-captcha-bypass/SKILL.md +136 -0
- package/bundled-skills/hunt-cicd/SKILL.md +311 -0
- package/bundled-skills/hunt-clickjacking/SKILL.md +110 -0
- package/bundled-skills/hunt-cors/SKILL.md +335 -0
- package/bundled-skills/hunt-dom/SKILL.md +323 -0
- package/bundled-skills/hunt-exceptional-conditions/SKILL.md +111 -0
- package/bundled-skills/hunt-file-upload/SKILL.md +202 -0
- package/bundled-skills/hunt-fintech-graphql/SKILL.md +289 -0
- package/bundled-skills/hunt-forgot-password/SKILL.md +114 -0
- package/bundled-skills/hunt-grpc/SKILL.md +317 -0
- package/bundled-skills/hunt-host-header/SKILL.md +309 -0
- package/bundled-skills/hunt-html-injection/SKILL.md +106 -0
- package/bundled-skills/hunt-http-smuggling/SKILL.md +129 -0
- package/bundled-skills/hunt-http-smuggling/references/phase2h-smuggling-cachepoison.md +177 -0
- package/bundled-skills/hunt-idor/SKILL.md +434 -0
- package/bundled-skills/hunt-jwt-crypto/SKILL.md +221 -0
- package/bundled-skills/hunt-k8s/SKILL.md +337 -0
- package/bundled-skills/hunt-laravel/SKILL.md +255 -0
- package/bundled-skills/hunt-ldap/SKILL.md +351 -0
- package/bundled-skills/hunt-lfi/SKILL.md +311 -0
- package/bundled-skills/hunt-llm-ai/SKILL.md +289 -0
- package/bundled-skills/hunt-mfa-bypass/SKILL.md +177 -0
- package/bundled-skills/hunt-misc/SKILL.md +378 -0
- package/bundled-skills/hunt-nextjs/SKILL.md +299 -0
- package/bundled-skills/hunt-nodejs/SKILL.md +263 -0
- package/bundled-skills/hunt-nosqli/SKILL.md +210 -0
- package/bundled-skills/hunt-ntlm-info/SKILL.md +314 -0
- package/bundled-skills/hunt-oauth/SKILL.md +459 -0
- package/bundled-skills/hunt-open-redirect/SKILL.md +223 -0
- package/bundled-skills/hunt-race-condition/SKILL.md +381 -0
- package/bundled-skills/hunt-race-condition/references/details.md +159 -0
- package/bundled-skills/hunt-rag-vector/SKILL.md +212 -0
- package/bundled-skills/hunt-rce/SKILL.md +444 -0
- package/bundled-skills/hunt-rce/references/details.md +110 -0
- package/bundled-skills/hunt-saml/SKILL.md +156 -0
- package/bundled-skills/hunt-session/SKILL.md +342 -0
- package/bundled-skills/hunt-shadow-api/SKILL.md +198 -0
- package/bundled-skills/hunt-source-leak/SKILL.md +345 -0
- package/bundled-skills/hunt-spa-api/SKILL.md +163 -0
- package/bundled-skills/hunt-springboot/SKILL.md +285 -0
- package/bundled-skills/hunt-sqli/SKILL.md +466 -0
- package/bundled-skills/hunt-ssrf/SKILL.md +396 -0
- package/bundled-skills/hunt-ssrf/references/details.md +179 -0
- package/bundled-skills/hunt-ssti/SKILL.md +163 -0
- package/bundled-skills/hunt-subdomain/SKILL.md +379 -0
- package/bundled-skills/hunt-tls-network/SKILL.md +399 -0
- package/bundled-skills/hunt-xxe/SKILL.md +466 -0
- package/bundled-skills/i-have-adhd/SKILL.md +170 -0
- package/bundled-skills/identity-access-management/SKILL.md +382 -0
- package/bundled-skills/identity-access-management/references/details.md +524 -0
- package/bundled-skills/incident-management/SKILL.md +484 -0
- package/bundled-skills/incident-response/SKILL.md +448 -0
- package/bundled-skills/incident-response/references/details.md +113 -0
- package/bundled-skills/interview-me/SKILL.md +248 -0
- package/bundled-skills/iso27001-compliance/SKILL.md +460 -0
- package/bundled-skills/jenkins/SKILL.md +462 -0
- package/bundled-skills/jev-use/SKILL.md +158 -0
- package/bundled-skills/kubernetes-hardening/SKILL.md +154 -0
- package/bundled-skills/kubernetes-ops/SKILL.md +449 -0
- package/bundled-skills/kubernetes-ops/references/details.md +108 -0
- package/bundled-skills/kustomize/SKILL.md +478 -0
- package/bundled-skills/linux-administration/SKILL.md +367 -0
- package/bundled-skills/linux-hardening/SKILL.md +154 -0
- package/bundled-skills/llm-app-security/SKILL.md +389 -0
- package/bundled-skills/llm-app-security/references/details.md +674 -0
- package/bundled-skills/llm-caching/SKILL.md +334 -0
- package/bundled-skills/llm-cost-optimization/SKILL.md +311 -0
- package/bundled-skills/llm-fine-tuning/SKILL.md +329 -0
- package/bundled-skills/llm-gateway/SKILL.md +282 -0
- package/bundled-skills/llm-inference-scaling/SKILL.md +286 -0
- package/bundled-skills/llmops-platform-engineering/SKILL.md +472 -0
- package/bundled-skills/load-balancing/SKILL.md +403 -0
- package/bundled-skills/loki-logging/SKILL.md +479 -0
- package/bundled-skills/m365-entra-attack/SKILL.md +423 -0
- package/bundled-skills/mac-mini-llm-lab/SKILL.md +350 -0
- package/bundled-skills/mcp-server-security/SKILL.md +356 -0
- package/bundled-skills/mcp-server-security/references/details.md +745 -0
- package/bundled-skills/mdm-device-management/SKILL.md +404 -0
- package/bundled-skills/mdm-device-management/references/details.md +410 -0
- package/bundled-skills/meme-coin-audit/SKILL.md +402 -0
- package/bundled-skills/mid-engagement-ir-detection/SKILL.md +377 -0
- package/bundled-skills/model-registry-governance/SKILL.md +452 -0
- package/bundled-skills/model-serving-kubernetes/SKILL.md +339 -0
- package/bundled-skills/model-supply-chain-security/SKILL.md +427 -0
- package/bundled-skills/mongodb/SKILL.md +436 -0
- package/bundled-skills/multi-tenant-llm-hosting/SKILL.md +435 -0
- package/bundled-skills/multi-tenant-llm-hosting/references/details.md +211 -0
- package/bundled-skills/mysql/SKILL.md +390 -0
- package/bundled-skills/new-relic/SKILL.md +472 -0
- package/bundled-skills/nfs-storage/SKILL.md +356 -0
- package/bundled-skills/object-storage/SKILL.md +378 -0
- package/bundled-skills/offensive-osint/SKILL.md +443 -0
- package/bundled-skills/okta-attack/SKILL.md +436 -0
- package/bundled-skills/ollama-stack/SKILL.md +379 -0
- package/bundled-skills/openclaw-deployment-hardening/SKILL.md +135 -0
- package/bundled-skills/openclaw-local-mac-mini/SKILL.md +426 -0
- package/bundled-skills/openclaw-local-mac-mini/references/details.md +221 -0
- package/bundled-skills/openclaw-security-hardening/SKILL.md +135 -0
- package/bundled-skills/openshift/SKILL.md +485 -0
- package/bundled-skills/opentelemetry/SKILL.md +438 -0
- package/bundled-skills/opentelemetry/references/details.md +78 -0
- package/bundled-skills/opentofu-migration/SKILL.md +349 -0
- package/bundled-skills/osint-methodology/SKILL.md +460 -0
- package/bundled-skills/osint-methodology/references/details.md +1350 -0
- package/bundled-skills/pci-dss-compliance/SKILL.md +446 -0
- package/bundled-skills/penetration-testing/SKILL.md +152 -0
- package/bundled-skills/performance-tuning/SKILL.md +381 -0
- package/bundled-skills/planetscale/SKILL.md +297 -0
- package/bundled-skills/platform-engineering/SKILL.md +348 -0
- package/bundled-skills/platform-engineering/references/details.md +944 -0
- package/bundled-skills/podman/SKILL.md +405 -0
- package/bundled-skills/policy-as-code/SKILL.md +434 -0
- package/bundled-skills/policy-as-code/references/details.md +204 -0
- package/bundled-skills/postgresql-devsec/SKILL.md +378 -0
- package/bundled-skills/prometheus-grafana/SKILL.md +469 -0
- package/bundled-skills/prompt-injection-defense/SKILL.md +483 -0
- package/bundled-skills/rag-infrastructure/SKILL.md +269 -0
- package/bundled-skills/rag-observability-evals/SKILL.md +444 -0
- package/bundled-skills/rag-observability-evals/references/details.md +92 -0
- package/bundled-skills/recon-scope-triage/SKILL.md +128 -0
- package/bundled-skills/redis/SKILL.md +421 -0
- package/bundled-skills/redteam-report-template/SKILL.md +370 -0
- package/bundled-skills/report-writing/SKILL.md +426 -0
- package/bundled-skills/report-writing/references/details.md +187 -0
- package/bundled-skills/reverse-proxy/SKILL.md +420 -0
- package/bundled-skills/runbook-creation/SKILL.md +438 -0
- package/bundled-skills/runbook-creation/references/details.md +71 -0
- package/bundled-skills/saas-security-posture/SKILL.md +415 -0
- package/bundled-skills/sast-scanning/SKILL.md +444 -0
- package/bundled-skills/sbom-supply-chain/SKILL.md +433 -0
- package/bundled-skills/security-arsenal/SKILL.md +446 -0
- package/bundled-skills/security-arsenal/references/details.md +540 -0
- package/bundled-skills/security-automation/SKILL.md +146 -0
- package/bundled-skills/semantic-versioning/SKILL.md +434 -0
- package/bundled-skills/semantic-versioning/references/details.md +83 -0
- package/bundled-skills/service-mesh/SKILL.md +422 -0
- package/bundled-skills/soc2-compliance/SKILL.md +409 -0
- package/bundled-skills/sops-encryption/SKILL.md +124 -0
- package/bundled-skills/sre-dashboards/SKILL.md +143 -0
- package/bundled-skills/ssh-configuration/SKILL.md +324 -0
- package/bundled-skills/ssl-tls-management/SKILL.md +428 -0
- package/bundled-skills/ssl-tls-management/references/details.md +99 -0
- package/bundled-skills/startup-it-troubleshooting/SKILL.md +415 -0
- package/bundled-skills/supply-chain-attack-recon/SKILL.md +453 -0
- package/bundled-skills/supply-chain-attack-recon/references/details.md +258 -0
- package/bundled-skills/systemd-services/SKILL.md +379 -0
- package/bundled-skills/terraform-aws/SKILL.md +125 -0
- package/bundled-skills/terraform-azure/SKILL.md +415 -0
- package/bundled-skills/terraform-azure/references/details.md +231 -0
- package/bundled-skills/terraform-gcp/SKILL.md +369 -0
- package/bundled-skills/threat-modeling/SKILL.md +487 -0
- package/bundled-skills/user-management/SKILL.md +383 -0
- package/bundled-skills/using-agent-skills/SKILL.md +220 -0
- package/bundled-skills/vector-database-ops/SKILL.md +300 -0
- package/bundled-skills/vendor-management/SKILL.md +439 -0
- package/bundled-skills/vendor-management/references/details.md +109 -0
- package/bundled-skills/vercel-deployments/SKILL.md +296 -0
- package/bundled-skills/vllm-server/SKILL.md +236 -0
- package/bundled-skills/vmware-vcenter-attack/SKILL.md +412 -0
- package/bundled-skills/vpn-setup/SKILL.md +452 -0
- package/bundled-skills/vulnerability-scanning/SKILL.md +448 -0
- package/bundled-skills/waf-setup/SKILL.md +354 -0
- package/bundled-skills/waf-setup/references/details.md +211 -0
- package/bundled-skills/web2-recon/SKILL.md +440 -0
- package/bundled-skills/web2-recon/references/details.md +319 -0
- package/bundled-skills/web3-audit/SKILL.md +445 -0
- package/bundled-skills/web3-audit/references/details.md +224 -0
- package/bundled-skills/windows-hardening/SKILL.md +454 -0
- package/bundled-skills/windows-hardening/references/details.md +204 -0
- package/bundled-skills/windows-server/SKILL.md +318 -0
- package/bundled-skills/zero-trust/SKILL.md +461 -0
- package/package.json +1 -1
- package/skills_index.json +6943 -323
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: incident-response
|
|
3
|
+
description: Handle security incidents with IR playbooks and procedures.
|
|
4
|
+
category: security
|
|
5
|
+
risk: critical
|
|
6
|
+
source: https://github.com/BagelHole/DevOps-Security-Agent-Skills
|
|
7
|
+
source_repo: BagelHole/DevOps-Security-Agent-Skills
|
|
8
|
+
source_type: community
|
|
9
|
+
date_added: '2026-09-20'
|
|
10
|
+
license: MIT
|
|
11
|
+
license_source: https://github.com/BagelHole/DevOps-Security-Agent-Skills/blob/main/LICENSE
|
|
12
|
+
compatibility: Requires the relevant security tooling (scanners, vault CLIs) and an
|
|
13
|
+
authorized scope for any active assessment. Docs-only; helper scripts and templates
|
|
14
|
+
not bundled.
|
|
15
|
+
metadata:
|
|
16
|
+
author: devops-skills
|
|
17
|
+
version: '1.0'
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Incident Response
|
|
21
|
+
|
|
22
|
+
Handle security incidents effectively with structured response procedures.
|
|
23
|
+
|
|
24
|
+
## Prerequisites
|
|
25
|
+
|
|
26
|
+
- IR team roster with on-call rotation and escalation paths
|
|
27
|
+
- Secure communication channel (separate from production systems)
|
|
28
|
+
- Forensic workstation with analysis tools installed
|
|
29
|
+
- Evidence storage with chain-of-custody controls
|
|
30
|
+
- Legal counsel contact information
|
|
31
|
+
- Pre-authorized incident response actions documented
|
|
32
|
+
|
|
33
|
+
## Incident Response Phases
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
phases:
|
|
37
|
+
1_preparation:
|
|
38
|
+
- IR team roster and 24/7 contact info
|
|
39
|
+
- Tools and privileged access ready
|
|
40
|
+
- Playbooks documented and tested
|
|
41
|
+
- Evidence collection kit prepared
|
|
42
|
+
- Communication templates drafted
|
|
43
|
+
|
|
44
|
+
2_detection:
|
|
45
|
+
- Alert triage and validation
|
|
46
|
+
- Initial assessment and scoping
|
|
47
|
+
- Severity classification
|
|
48
|
+
- Incident ticket creation
|
|
49
|
+
|
|
50
|
+
3_containment:
|
|
51
|
+
- Short-term containment (stop bleeding)
|
|
52
|
+
- Evidence preservation (before changes)
|
|
53
|
+
- System isolation (network/host level)
|
|
54
|
+
- Credential rotation if needed
|
|
55
|
+
|
|
56
|
+
4_eradication:
|
|
57
|
+
- Root cause analysis
|
|
58
|
+
- Remove threat actor access
|
|
59
|
+
- Patch exploited vulnerabilities
|
|
60
|
+
- Clean compromised systems
|
|
61
|
+
|
|
62
|
+
5_recovery:
|
|
63
|
+
- System restoration from clean backups
|
|
64
|
+
- Enhanced monitoring deployment
|
|
65
|
+
- Phased return to production
|
|
66
|
+
- Business continuity verification
|
|
67
|
+
|
|
68
|
+
6_lessons_learned:
|
|
69
|
+
- Post-incident review (within 72 hours)
|
|
70
|
+
- Timeline reconstruction
|
|
71
|
+
- Documentation update
|
|
72
|
+
- Process and detection improvements
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Severity Classification
|
|
76
|
+
|
|
77
|
+
| Level | Impact | Response Time | Examples |
|
|
78
|
+
|-------|--------|---------------|----------|
|
|
79
|
+
| Critical (P1) | Active data breach, full outage, ransomware | Immediate (< 15 min) | Data exfiltration in progress, ransomware spreading |
|
|
80
|
+
| High (P2) | Service degraded, potential breach | < 1 hour | Unauthorized admin access, malware detected |
|
|
81
|
+
| Medium (P3) | Limited impact, contained | < 4 hours | Phishing compromise (single user), policy violation |
|
|
82
|
+
| Low (P4) | Minimal impact | Next business day | Failed brute force, blocked scanning activity |
|
|
83
|
+
|
|
84
|
+
## Evidence Collection Scripts
|
|
85
|
+
|
|
86
|
+
### Linux Evidence Collection
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
#!/bin/bash
|
|
90
|
+
# linux-evidence-collect.sh - Collect forensic evidence from a Linux host
|
|
91
|
+
# Run with sudo. Preserves evidence with timestamps and hashes.
|
|
92
|
+
|
|
93
|
+
set -euo pipefail
|
|
94
|
+
|
|
95
|
+
EVIDENCE_DIR="/evidence/$(hostname)-$(date +%Y%m%d-%H%M%S)"
|
|
96
|
+
mkdir -p "$EVIDENCE_DIR"
|
|
97
|
+
LOGFILE="$EVIDENCE_DIR/collection.log"
|
|
98
|
+
|
|
99
|
+
log() { echo "[$(date -u +%Y-%m-%dT%H:%M:%SZ)] $*" | tee -a "$LOGFILE"; }
|
|
100
|
+
|
|
101
|
+
log "Starting evidence collection on $(hostname)"
|
|
102
|
+
log "Collector: $(whoami)"
|
|
103
|
+
log "System time: $(date -u)"
|
|
104
|
+
|
|
105
|
+
# System information
|
|
106
|
+
log "Collecting system information..."
|
|
107
|
+
uname -a > "$EVIDENCE_DIR/uname.txt"
|
|
108
|
+
cat /etc/os-release > "$EVIDENCE_DIR/os-release.txt"
|
|
109
|
+
uptime > "$EVIDENCE_DIR/uptime.txt"
|
|
110
|
+
date -u > "$EVIDENCE_DIR/system-time.txt"
|
|
111
|
+
|
|
112
|
+
# Running processes (full command line)
|
|
113
|
+
log "Collecting process list..."
|
|
114
|
+
ps auxwwf > "$EVIDENCE_DIR/processes.txt"
|
|
115
|
+
ps -eo pid,ppid,user,args --sort=-pcpu > "$EVIDENCE_DIR/processes-by-cpu.txt"
|
|
116
|
+
|
|
117
|
+
# Network connections
|
|
118
|
+
log "Collecting network state..."
|
|
119
|
+
ss -tulnp > "$EVIDENCE_DIR/listening-ports.txt"
|
|
120
|
+
ss -anp > "$EVIDENCE_DIR/all-connections.txt"
|
|
121
|
+
ip addr show > "$EVIDENCE_DIR/ip-addresses.txt"
|
|
122
|
+
ip route show > "$EVIDENCE_DIR/routes.txt"
|
|
123
|
+
iptables -L -n -v > "$EVIDENCE_DIR/iptables.txt" 2>&1 || true
|
|
124
|
+
cat /etc/resolv.conf > "$EVIDENCE_DIR/dns-config.txt"
|
|
125
|
+
|
|
126
|
+
# User activity
|
|
127
|
+
log "Collecting user activity..."
|
|
128
|
+
last -a > "$EVIDENCE_DIR/login-history.txt"
|
|
129
|
+
lastb > "$EVIDENCE_DIR/failed-logins.txt" 2>&1 || true
|
|
130
|
+
who > "$EVIDENCE_DIR/currently-logged-in.txt"
|
|
131
|
+
w > "$EVIDENCE_DIR/user-activity.txt"
|
|
132
|
+
cat /etc/passwd > "$EVIDENCE_DIR/passwd.txt"
|
|
133
|
+
cat /etc/shadow > "$EVIDENCE_DIR/shadow.txt" 2>/dev/null || true
|
|
134
|
+
cat /etc/group > "$EVIDENCE_DIR/group.txt"
|
|
135
|
+
|
|
136
|
+
# Scheduled tasks
|
|
137
|
+
log "Collecting scheduled tasks..."
|
|
138
|
+
for user in $(cut -f1 -d: /etc/passwd); do
|
|
139
|
+
crontab -u "$user" -l 2>/dev/null >> "$EVIDENCE_DIR/crontabs.txt" && \
|
|
140
|
+
echo "--- $user ---" >> "$EVIDENCE_DIR/crontabs.txt"
|
|
141
|
+
done
|
|
142
|
+
ls -la /etc/cron.* > "$EVIDENCE_DIR/cron-dirs.txt" 2>&1
|
|
143
|
+
|
|
144
|
+
# File system state
|
|
145
|
+
log "Collecting filesystem state..."
|
|
146
|
+
find /tmp /var/tmp /dev/shm -type f -ls > "$EVIDENCE_DIR/temp-files.txt" 2>/dev/null
|
|
147
|
+
find / -name "*.sh" -mtime -7 -ls > "$EVIDENCE_DIR/recent-scripts.txt" 2>/dev/null
|
|
148
|
+
find / -perm -4000 -type f -ls > "$EVIDENCE_DIR/suid-files.txt" 2>/dev/null
|
|
149
|
+
find /home -name ".*history" -ls > "$EVIDENCE_DIR/history-files.txt" 2>/dev/null
|
|
150
|
+
|
|
151
|
+
# Loaded kernel modules
|
|
152
|
+
log "Collecting kernel modules..."
|
|
153
|
+
lsmod > "$EVIDENCE_DIR/kernel-modules.txt"
|
|
154
|
+
|
|
155
|
+
# Open files
|
|
156
|
+
log "Collecting open files..."
|
|
157
|
+
lsof -n > "$EVIDENCE_DIR/open-files.txt" 2>/dev/null
|
|
158
|
+
|
|
159
|
+
# Systemd services
|
|
160
|
+
log "Collecting service state..."
|
|
161
|
+
systemctl list-units --type=service --all > "$EVIDENCE_DIR/services.txt"
|
|
162
|
+
systemctl list-timers --all > "$EVIDENCE_DIR/timers.txt"
|
|
163
|
+
|
|
164
|
+
# Log preservation
|
|
165
|
+
log "Preserving system logs..."
|
|
166
|
+
tar czf "$EVIDENCE_DIR/var-log.tar.gz" /var/log/ 2>/dev/null
|
|
167
|
+
|
|
168
|
+
# Docker containers (if present)
|
|
169
|
+
if command -v docker &>/dev/null; then
|
|
170
|
+
log "Collecting Docker state..."
|
|
171
|
+
docker ps -a > "$EVIDENCE_DIR/docker-containers.txt"
|
|
172
|
+
docker images > "$EVIDENCE_DIR/docker-images.txt"
|
|
173
|
+
docker network ls > "$EVIDENCE_DIR/docker-networks.txt"
|
|
174
|
+
fi
|
|
175
|
+
|
|
176
|
+
# Kubernetes (if kubectl available)
|
|
177
|
+
if command -v kubectl &>/dev/null; then
|
|
178
|
+
log "Collecting Kubernetes state..."
|
|
179
|
+
kubectl get pods --all-namespaces > "$EVIDENCE_DIR/k8s-pods.txt" 2>/dev/null
|
|
180
|
+
kubectl get events --all-namespaces --sort-by=.lastTimestamp > "$EVIDENCE_DIR/k8s-events.txt" 2>/dev/null
|
|
181
|
+
fi
|
|
182
|
+
|
|
183
|
+
# Hash all evidence files
|
|
184
|
+
log "Computing evidence hashes..."
|
|
185
|
+
find "$EVIDENCE_DIR" -type f ! -name "checksums.sha256" -exec sha256sum {} \; > "$EVIDENCE_DIR/checksums.sha256"
|
|
186
|
+
|
|
187
|
+
log "Evidence collection complete: $EVIDENCE_DIR"
|
|
188
|
+
echo "Total files collected: $(find "$EVIDENCE_DIR" -type f | wc -l)"
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
### Memory Acquisition
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
#!/bin/bash
|
|
195
|
+
# memory-capture.sh - Capture volatile memory for forensic analysis
|
|
196
|
+
|
|
197
|
+
EVIDENCE_DIR="/evidence/memory-$(hostname)-$(date +%Y%m%d-%H%M%S)"
|
|
198
|
+
mkdir -p "$EVIDENCE_DIR"
|
|
199
|
+
|
|
200
|
+
# Using LiME (Linux Memory Extractor)
|
|
201
|
+
if [ -f /lib/modules/$(uname -r)/extra/lime.ko ]; then
|
|
202
|
+
insmod /lib/modules/$(uname -r)/extra/lime.ko "path=$EVIDENCE_DIR/memory.lime format=lime"
|
|
203
|
+
echo "Memory captured with LiME"
|
|
204
|
+
fi
|
|
205
|
+
|
|
206
|
+
# Alternative: /proc/kcore (partial, but always available)
|
|
207
|
+
cp /proc/kcore "$EVIDENCE_DIR/kcore" 2>/dev/null
|
|
208
|
+
|
|
209
|
+
# Capture /proc/meminfo for context
|
|
210
|
+
cat /proc/meminfo > "$EVIDENCE_DIR/meminfo.txt"
|
|
211
|
+
|
|
212
|
+
# Hash the memory dump
|
|
213
|
+
sha256sum "$EVIDENCE_DIR"/* > "$EVIDENCE_DIR/checksums.sha256"
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
### AWS Evidence Collection
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
#!/bin/bash
|
|
220
|
+
# aws-evidence-collect.sh - Collect evidence from compromised AWS resources
|
|
221
|
+
|
|
222
|
+
INCIDENT_ID="${1:?Usage: $0 <incident-id>}"
|
|
223
|
+
INSTANCE_ID="${2:?Usage: $0 <incident-id> <instance-id>}"
|
|
224
|
+
EVIDENCE_BUCKET="s3://incident-evidence-${AWS_ACCOUNT_ID}"
|
|
225
|
+
EVIDENCE_PREFIX="${INCIDENT_ID}/$(date +%Y%m%d-%H%M%S)"
|
|
226
|
+
|
|
227
|
+
echo "=== AWS Evidence Collection ==="
|
|
228
|
+
echo "Incident: $INCIDENT_ID"
|
|
229
|
+
echo "Instance: $INSTANCE_ID"
|
|
230
|
+
|
|
231
|
+
# Snapshot EBS volumes
|
|
232
|
+
echo "Creating EBS snapshots..."
|
|
233
|
+
VOLUMES=$(aws ec2 describe-volumes \
|
|
234
|
+
--filters "Name=attachment.instance-id,Values=${INSTANCE_ID}" \
|
|
235
|
+
--query 'Volumes[].VolumeId' --output text)
|
|
236
|
+
|
|
237
|
+
for vol in $VOLUMES; do
|
|
238
|
+
SNAP_ID=$(aws ec2 create-snapshot \
|
|
239
|
+
--volume-id "$vol" \
|
|
240
|
+
--description "IR Evidence - ${INCIDENT_ID} - ${vol}" \
|
|
241
|
+
--tag-specifications "ResourceType=snapshot,Tags=[{Key=IncidentId,Value=${INCIDENT_ID}},{Key=Purpose,Value=forensic-evidence}]" \
|
|
242
|
+
--query 'SnapshotId' --output text)
|
|
243
|
+
echo " Snapshot created: $SNAP_ID for volume $vol"
|
|
244
|
+
done
|
|
245
|
+
|
|
246
|
+
# Capture instance metadata
|
|
247
|
+
echo "Capturing instance metadata..."
|
|
248
|
+
aws ec2 describe-instances --instance-ids "$INSTANCE_ID" \
|
|
249
|
+
> "/tmp/${INCIDENT_ID}-instance-describe.json"
|
|
250
|
+
aws s3 cp "/tmp/${INCIDENT_ID}-instance-describe.json" \
|
|
251
|
+
"${EVIDENCE_BUCKET}/${EVIDENCE_PREFIX}/instance-describe.json"
|
|
252
|
+
|
|
253
|
+
# Capture security group rules
|
|
254
|
+
SG_IDS=$(aws ec2 describe-instances --instance-ids "$INSTANCE_ID" \
|
|
255
|
+
--query 'Reservations[].Instances[].SecurityGroups[].GroupId' --output text)
|
|
256
|
+
for sg in $SG_IDS; do
|
|
257
|
+
aws ec2 describe-security-group-rules --filters "Name=group-id,Values=${sg}" \
|
|
258
|
+
> "/tmp/${INCIDENT_ID}-sg-${sg}.json"
|
|
259
|
+
aws s3 cp "/tmp/${INCIDENT_ID}-sg-${sg}.json" \
|
|
260
|
+
"${EVIDENCE_BUCKET}/${EVIDENCE_PREFIX}/sg-${sg}.json"
|
|
261
|
+
done
|
|
262
|
+
|
|
263
|
+
# Collect CloudTrail events for the instance
|
|
264
|
+
echo "Collecting CloudTrail events..."
|
|
265
|
+
aws cloudtrail lookup-events \
|
|
266
|
+
--lookup-attributes "AttributeKey=ResourceName,AttributeValue=${INSTANCE_ID}" \
|
|
267
|
+
--start-time "$(date -d '7 days ago' -u +%Y-%m-%dT%H:%M:%SZ)" \
|
|
268
|
+
> "/tmp/${INCIDENT_ID}-cloudtrail.json"
|
|
269
|
+
aws s3 cp "/tmp/${INCIDENT_ID}-cloudtrail.json" \
|
|
270
|
+
"${EVIDENCE_BUCKET}/${EVIDENCE_PREFIX}/cloudtrail.json"
|
|
271
|
+
|
|
272
|
+
# Collect VPC flow logs
|
|
273
|
+
echo "Collecting VPC flow logs..."
|
|
274
|
+
ENI_ID=$(aws ec2 describe-instances --instance-ids "$INSTANCE_ID" \
|
|
275
|
+
--query 'Reservations[].Instances[].NetworkInterfaces[0].NetworkInterfaceId' --output text)
|
|
276
|
+
aws ec2 describe-flow-logs --filter "Name=resource-id,Values=${ENI_ID}" \
|
|
277
|
+
> "/tmp/${INCIDENT_ID}-flow-logs.json"
|
|
278
|
+
aws s3 cp "/tmp/${INCIDENT_ID}-flow-logs.json" \
|
|
279
|
+
"${EVIDENCE_BUCKET}/${EVIDENCE_PREFIX}/flow-logs-config.json"
|
|
280
|
+
|
|
281
|
+
# Isolate the instance (move to quarantine security group)
|
|
282
|
+
echo "Isolating instance..."
|
|
283
|
+
QUARANTINE_SG=$(aws ec2 create-security-group \
|
|
284
|
+
--group-name "quarantine-${INCIDENT_ID}" \
|
|
285
|
+
--description "Quarantine SG for incident ${INCIDENT_ID}" \
|
|
286
|
+
--vpc-id "$(aws ec2 describe-instances --instance-ids "$INSTANCE_ID" \
|
|
287
|
+
--query 'Reservations[].Instances[].VpcId' --output text)" \
|
|
288
|
+
--query 'GroupId' --output text)
|
|
289
|
+
|
|
290
|
+
# Quarantine SG: deny all inbound, allow outbound only to evidence bucket
|
|
291
|
+
aws ec2 modify-instance-attribute \
|
|
292
|
+
--instance-id "$INSTANCE_ID" \
|
|
293
|
+
--groups "$QUARANTINE_SG"
|
|
294
|
+
|
|
295
|
+
echo "Instance isolated with quarantine SG: $QUARANTINE_SG"
|
|
296
|
+
echo "Evidence stored at: ${EVIDENCE_BUCKET}/${EVIDENCE_PREFIX}/"
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Forensics Commands Reference
|
|
300
|
+
|
|
301
|
+
```bash
|
|
302
|
+
# --- Disk forensics ---
|
|
303
|
+
# Create forensic image of a disk
|
|
304
|
+
dd if=/dev/sda of=/evidence/disk.img bs=4M status=progress
|
|
305
|
+
sha256sum /evidence/disk.img > /evidence/disk.img.sha256
|
|
306
|
+
|
|
307
|
+
# Mount forensic image read-only
|
|
308
|
+
mount -o ro,loop,noexec /evidence/disk.img /mnt/forensic
|
|
309
|
+
|
|
310
|
+
# Find recently modified files
|
|
311
|
+
find /mnt/forensic -type f -mtime -3 -ls | sort -k11
|
|
312
|
+
|
|
313
|
+
# Find files by owner
|
|
314
|
+
find /mnt/forensic -user www-data -type f -newer /tmp/reference-time -ls
|
|
315
|
+
|
|
316
|
+
# --- Log analysis ---
|
|
317
|
+
# Search auth logs for brute force
|
|
318
|
+
grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -rn | head -20
|
|
319
|
+
|
|
320
|
+
# Search for privilege escalation
|
|
321
|
+
grep -E "(sudo|su\[)" /var/log/auth.log | grep -v "session opened"
|
|
322
|
+
|
|
323
|
+
# Search web logs for attack patterns
|
|
324
|
+
grep -iE "(union.*select|<script|\.\.\/|%00)" /var/log/nginx/access.log
|
|
325
|
+
|
|
326
|
+
# Timeline analysis with find
|
|
327
|
+
find / -newermt "2025-01-15 00:00" ! -newermt "2025-01-16 00:00" -ls 2>/dev/null | sort -k9
|
|
328
|
+
|
|
329
|
+
# --- Network forensics ---
|
|
330
|
+
# Capture network traffic
|
|
331
|
+
tcpdump -i eth0 -w /evidence/capture.pcap -c 100000
|
|
332
|
+
|
|
333
|
+
# Analyze pcap for suspicious connections
|
|
334
|
+
tcpdump -r /evidence/capture.pcap -nn 'dst port 4444 or dst port 8888 or dst port 1337'
|
|
335
|
+
|
|
336
|
+
# Check for DNS tunneling
|
|
337
|
+
tcpdump -r /evidence/capture.pcap -nn 'udp port 53' | awk '{print $NF}' | sort | uniq -c | sort -rn | head -20
|
|
338
|
+
|
|
339
|
+
# --- Malware analysis ---
|
|
340
|
+
# Check file for known malware hashes
|
|
341
|
+
sha256sum suspicious_file
|
|
342
|
+
# Compare against VirusTotal: https://www.virustotal.com
|
|
343
|
+
|
|
344
|
+
# Strings analysis
|
|
345
|
+
strings suspicious_file | grep -iE "(http|ftp|ssh|password|key|token)"
|
|
346
|
+
|
|
347
|
+
# Check for packed/obfuscated binaries
|
|
348
|
+
file suspicious_file
|
|
349
|
+
readelf -h suspicious_file 2>/dev/null
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
## Communication Templates
|
|
353
|
+
|
|
354
|
+
### Initial Notification (Internal)
|
|
355
|
+
|
|
356
|
+
```markdown
|
|
357
|
+
## Security Incident Notification
|
|
358
|
+
|
|
359
|
+
**Incident ID:** INC-YYYY-NNNN
|
|
360
|
+
**Severity:** [Critical/High/Medium/Low]
|
|
361
|
+
**Status:** Active - Investigating
|
|
362
|
+
**Time Detected:** YYYY-MM-DD HH:MM UTC
|
|
363
|
+
**Reported By:** [Name/System]
|
|
364
|
+
|
|
365
|
+
### Summary
|
|
366
|
+
[1-2 sentence description of what was detected]
|
|
367
|
+
|
|
368
|
+
### Impact Assessment
|
|
369
|
+
- **Systems affected:** [list]
|
|
370
|
+
- **Data at risk:** [type and scope]
|
|
371
|
+
- **Users impacted:** [count/scope]
|
|
372
|
+
- **Business impact:** [description]
|
|
373
|
+
|
|
374
|
+
### Current Actions
|
|
375
|
+
- [ ] Evidence preservation in progress
|
|
376
|
+
- [ ] Containment measures being applied
|
|
377
|
+
- [ ] IR team assembled
|
|
378
|
+
|
|
379
|
+
### Next Update
|
|
380
|
+
Expected at: YYYY-MM-DD HH:MM UTC
|
|
381
|
+
|
|
382
|
+
### Incident Commander
|
|
383
|
+
[Name] - [Contact info]
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
### Stakeholder Update
|
|
387
|
+
|
|
388
|
+
```markdown
|
|
389
|
+
## Incident Update - INC-YYYY-NNNN
|
|
390
|
+
|
|
391
|
+
**Update #:** N
|
|
392
|
+
**Time:** YYYY-MM-DD HH:MM UTC
|
|
393
|
+
**Severity:** [unchanged/upgraded/downgraded]
|
|
394
|
+
**Status:** [Investigating/Contained/Eradicating/Recovering/Resolved]
|
|
395
|
+
|
|
396
|
+
### Progress Since Last Update
|
|
397
|
+
- [Bullet points of actions taken]
|
|
398
|
+
|
|
399
|
+
### Current Understanding
|
|
400
|
+
- **Root cause:** [Known/Under investigation]
|
|
401
|
+
- **Scope:** [Expanded/Unchanged/Reduced]
|
|
402
|
+
- **Threat actor:** [If applicable]
|
|
403
|
+
|
|
404
|
+
### Active Containment Measures
|
|
405
|
+
- [List of measures in place]
|
|
406
|
+
|
|
407
|
+
### Next Steps
|
|
408
|
+
- [Planned actions with ETA]
|
|
409
|
+
|
|
410
|
+
### Decisions Needed
|
|
411
|
+
- [If any decisions required from leadership]
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
### External Breach Notification (if required)
|
|
415
|
+
|
|
416
|
+
```markdown
|
|
417
|
+
|
|
418
|
+
## Contents
|
|
419
|
+
|
|
420
|
+
- [Notice of Data Security Incident](references/details.md)
|
|
421
|
+
- [IR Playbook: Compromised Credentials](references/details.md)
|
|
422
|
+
- [Troubleshooting](references/details.md)
|
|
423
|
+
- [Best Practices](references/details.md)
|
|
424
|
+
- [Related Skills](references/details.md)
|
|
425
|
+
|
|
426
|
+
## When to Use This Skill
|
|
427
|
+
|
|
428
|
+
Use this skill when:
|
|
429
|
+
- Responding to an active security incident (breach, malware, unauthorized access)
|
|
430
|
+
- Building incident response playbooks and runbooks
|
|
431
|
+
- Conducting IR tabletop exercises and drills
|
|
432
|
+
- Setting up evidence collection and forensic capabilities
|
|
433
|
+
- Establishing communication protocols for security events
|
|
434
|
+
- Performing post-incident reviews and process improvements
|
|
435
|
+
|
|
436
|
+
## Limitations
|
|
437
|
+
|
|
438
|
+
- Apply guidance only within authorized scope; test destructive steps in non-production first.
|
|
439
|
+
- Docs-only import: upstream scripts and templates not bundled.
|
|
440
|
+
|
|
441
|
+
### Example
|
|
442
|
+
|
|
443
|
+
```bash
|
|
444
|
+
# Read-only first: inventory before any active step.
|
|
445
|
+
which <tool> && <tool> --help | head -n 20
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
> Adapted from [BagelHole/DevOps-Security-Agent-Skills](https://github.com/BagelHole/DevOps-Security-Agent-Skills) (MIT); frontmatter, When to Use/Limitations, and safety boundaries added for upstream compliance. Docs-only import: helper scripts and templates not bundled.
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
# Details (moved from SKILL.md)
|
|
2
|
+
|
|
3
|
+
> Extended reference content for `incident-response`, kept under `references/` so the entrypoint stays within the audit budget.
|
|
4
|
+
|
|
5
|
+
## Notice of Data Security Incident
|
|
6
|
+
|
|
7
|
+
Dear [Customer/Partner],
|
|
8
|
+
|
|
9
|
+
We are writing to inform you of a security incident that we detected on
|
|
10
|
+
[date]. Upon discovery, we immediately activated our incident response
|
|
11
|
+
procedures and engaged external cybersecurity experts.
|
|
12
|
+
|
|
13
|
+
### What Happened
|
|
14
|
+
[Brief, factual description]
|
|
15
|
+
|
|
16
|
+
### What Information Was Involved
|
|
17
|
+
[Types of data affected]
|
|
18
|
+
|
|
19
|
+
### What We Are Doing
|
|
20
|
+
[Remediation steps taken and planned]
|
|
21
|
+
|
|
22
|
+
### What You Can Do
|
|
23
|
+
[Recommended actions for affected parties]
|
|
24
|
+
|
|
25
|
+
### Contact Information
|
|
26
|
+
For questions, please contact: [dedicated contact/hotline]
|
|
27
|
+
|
|
28
|
+
[Company Name]
|
|
29
|
+
[Date]
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
## IR Playbook: Compromised Credentials
|
|
34
|
+
|
|
35
|
+
```yaml
|
|
36
|
+
playbook: compromised-credentials
|
|
37
|
+
trigger: "Alert indicating credential theft, brute force success, or credential dump"
|
|
38
|
+
|
|
39
|
+
steps:
|
|
40
|
+
1_validate:
|
|
41
|
+
- Confirm the alert is not a false positive
|
|
42
|
+
- Identify which credentials are compromised
|
|
43
|
+
- Determine scope (single user, service account, API key)
|
|
44
|
+
|
|
45
|
+
2_contain:
|
|
46
|
+
- Disable compromised accounts immediately
|
|
47
|
+
- Revoke active sessions and tokens
|
|
48
|
+
- Rotate API keys and service account credentials
|
|
49
|
+
- Block source IP if identified
|
|
50
|
+
commands:
|
|
51
|
+
- "aws iam update-login-profile --user-name USER --password-reset-required"
|
|
52
|
+
- "aws iam delete-access-key --user-name USER --access-key-id AKIAXXXX"
|
|
53
|
+
- "aws iam deactivate-mfa-device --user-name USER --serial-number ARN"
|
|
54
|
+
- "kubectl delete secret compromised-secret -n NAMESPACE"
|
|
55
|
+
|
|
56
|
+
3_investigate:
|
|
57
|
+
- Review CloudTrail/audit logs for the compromised identity
|
|
58
|
+
- Identify all actions taken with compromised credentials
|
|
59
|
+
- Check for persistence (new keys, roles, backdoors)
|
|
60
|
+
- Determine initial compromise vector (phishing, leak, breach)
|
|
61
|
+
|
|
62
|
+
4_eradicate:
|
|
63
|
+
- Remove any backdoors or persistence mechanisms
|
|
64
|
+
- Rotate all credentials that may have been exposed
|
|
65
|
+
- Update access policies to enforce MFA
|
|
66
|
+
- Patch credential storage if vault/secret manager was compromised
|
|
67
|
+
|
|
68
|
+
5_recover:
|
|
69
|
+
- Issue new credentials with MFA enforced
|
|
70
|
+
- Restore access with least-privilege review
|
|
71
|
+
- Monitor new credentials for abnormal usage
|
|
72
|
+
|
|
73
|
+
6_improve:
|
|
74
|
+
- Add detection for initial compromise vector
|
|
75
|
+
- Review credential management policies
|
|
76
|
+
- Update security awareness training if phishing was involved
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
## Troubleshooting
|
|
81
|
+
|
|
82
|
+
| Problem | Cause | Solution |
|
|
83
|
+
|---------|-------|----------|
|
|
84
|
+
| Evidence collection script fails | Insufficient permissions | Run with sudo/root; pre-authorize IR accounts |
|
|
85
|
+
| Cannot access compromised system | System encrypted by ransomware | Use offline disk imaging; restore from backups |
|
|
86
|
+
| Logs are missing or tampered | Attacker cleared logs | Check centralized log aggregator; restore from log backups |
|
|
87
|
+
| Cannot determine incident scope | Insufficient logging | Enable CloudTrail, VPC flow logs, audit logging for future |
|
|
88
|
+
| Stakeholders demanding immediate answers | Pressure to resolve quickly | Follow IR process; provide regular updates; avoid speculation |
|
|
89
|
+
| False positive triggered full IR | Detection rules too sensitive | Tune alerting thresholds; add validation step before escalation |
|
|
90
|
+
| Evidence integrity questioned | No chain of custody | Hash all evidence immediately; document who accessed what and when |
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
## Best Practices
|
|
94
|
+
|
|
95
|
+
- Pre-define and practice playbooks with tabletop exercises quarterly
|
|
96
|
+
- Maintain separate, secure communication channels for IR (not email or Slack on corporate infra)
|
|
97
|
+
- Always preserve evidence before making changes to compromised systems
|
|
98
|
+
- Establish chain of custody for all collected evidence
|
|
99
|
+
- Engage legal counsel early in any potential data breach
|
|
100
|
+
- Conduct blameless post-incident reviews within 72 hours
|
|
101
|
+
- Update detection rules and playbooks based on lessons learned
|
|
102
|
+
- Pre-authorize common IR actions so responders can act without delay
|
|
103
|
+
- Keep an IR "go bag" with tools, credentials, and documentation ready
|
|
104
|
+
- Test backup restoration procedures regularly (not just backup creation)
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
## Related Skills
|
|
108
|
+
|
|
109
|
+
- audit-logging (`audit-logging`) - Log analysis
|
|
110
|
+
- alerting-oncall (`alerting-oncall`) - Alert management
|
|
111
|
+
- security-automation (`security-automation`) - Automated response workflows
|
|
112
|
+
- threat-modeling (`threat-modeling`) - Proactive threat identification
|
|
113
|
+
|