Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
PenScope — Reconocimiento pasivo & mapeador de superficie de ataque — cero solicitudes enviadas | Kitploit
Herramientas/GitHubGitHub/spider12223/penscope
OSINT (Inteligencia de Fuentes Abiertas)ReconocimientoEscáneres de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebRecopilación de InformaciónSeguridad WebPruebas de PenetraciónDetección de SecretosCrawler
GitHubspider12223/penscope
3326hace 4 mesesRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

PenScope

Reconocimiento pasivo & mapeador de superficie de ataque — cero solicitudes enviadas

Ver RepositorioSitio web
``` ██████╗ ███████╗███╗ ██╗███████╗ ██████╗ ██████╗ ██████╗ ███████╗ ██╔══██╗██╔════╝████╗ ██║██╔════╝██╔════╝██╔═══██╗██╔══██╗██╔════╝ ██████╔╝█████╗ ██╔██╗ ██║███████╗██║ ██║ ██║██████╔╝█████╗ ██╔═══╝ ██╔══╝ ██║╚██╗██║╚════██║██║ ██║ ██║██╔═══╝ ██╔══╝ ██║ ███████╗██║ ╚████║███████║╚██████╗╚██████╔╝██║ ███████╗ ╚═╝ ╚══════╝╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚══════╝ ``` ### Un toolkit de bug bounty que vive dentro de tu navegador.

version manifest deps lines probes price license

Inicio rápido · Modo Caza · Banco de trabajo · Modos · Exportaciones · vs Burp · Bajo el capó


Qué es esto

PenScope es una extensión de Chrome. Instálala, navega por un sitio que tengas permiso para probar, y mapea silenciosamente toda la superficie de ataque — cada endpoint, cada secreto, cada cabecera mal configurada, cada parámetro oculto. Cuando le das la orden, envía 36 ataques de sonda diferentes usando tus cookies de sesión reales e informa cuáles acertaron.

O estableces el alcance, haces clic en Cazar y PenScope hace todo el proceso de forma autónoma mientras haces otra cosa — redactando informes completos de bug bounty en formato HackerOne por cada hallazgo Crítico y Alto que consigue. Te despiertas con una cola de borradores listos para enviar.

Es la herramienta diaria para los cazadores de bug bounty que quieren saltarse la rutina de "configurar un proxy, hacer clic en tres ventanas, alt-tab a una lista de payloads" y simplemente mirar un sitio. O dejar de mirar por completo y dejar que la herramienta cace por ellos.

Lee todo, no envía nada — hasta que se lo ordenes. Establece el alcance, pulsa Cazar, cierra el portátil. Despiértate con críticos redactados.


Novedades en v6.3

Refactorización dirigida por auditoría en 8 fases. Adiciones destacadas:

  • Motor de sondas: de 36 a 45 ataques. Sondas de parámetros SSRF, inyección de operadores NoSQL, DoS por alias/lote en GraphQL, engaño de caché, heurística de secuestro de subdominio, TabNabbing, correlación de origen postMessage, abuso de ámbito de Service Worker.
  • El contrato de nivel se aplica, no se describe. Cuidadoso = solo GET, secuencial, espaciado de 200 ms. Medio = +POST para operaciones de lectura. Completo = todo, incluyendo ráfagas de condición de carrera. Pasa el ratón sobre cualquier nivel en el menú de Sondas para ver el contrato completo.
  • Cobertura: 31 nuevos patrones de secretos + 9 nuevos patrones de cuerpo de respuesta. Claves secretas de Mapbox, Datadog (formato real), admin de Algolia, Auth Token de Twilio, Postmark, tokens de API de Cloudflare, Heroku, Linear, Notion, Figma, par Plaid, Snyk, Terraform Cloud, Pinata, claves públicas SSH, asignaciones .env, prefijos s./b. de Vault — más detectores de cuerpo de respuesta para Spring Boot / Rails ActiveRecord / Django DEBUG / ASP.NET YSOD / Express / Apollo / MSSQL.
  • 17 nuevas huellas de tecnología. Qwik, SolidStart, Tauri, Strapi, Sanity, Contentful, Hygraph, Clerk, Cognito, Okta, PingIdentity, Workday, ServiceNow, Salesforce Lightning, Adobe AEM, Electron renderer.
  • Enriquecimiento JWT. Cada JWT detectado se decodifica automáticamente (alg, iss, sub, aud, exp, iat, , ...). Aumento de gravedad cuando está en el futuro y el rol es de tipo admin.

Desglose completo por fases en CHANGES.md. Notas de migración en MIGRATION.md.


Inicio rápido```

  1. Download the latest release zip from the Releases page
  2. Unzip it
  3. Open chrome://extensions, enable Developer mode (top right)
  4. Click "Load unpacked" and pick the unzipped folder
root@kitploit:~
Ancla la extensión. Visita cualquier sitio. Haz clic en el icono **P**. PenScope ya estaba vigilando.

---

## Qué puedes hacer

PenScope captura más de 60 campos de datos por pestaña. Esto es lo que eso significa en la práctica:

**Ver toda la superficie de ataque.** Cada endpoint, incluidos aquellos referenciados en JavaScript pero nunca llamados realmente. Rutas de API enterradas en source maps, operaciones GraphQL reconstruidas desde cuerpos POST, rutas de administración ocultas inferidas de la introspección del framework.

**Encontrar secretos que nadie pretendía enviar.** Claves API hardcodeadas en paquetes `.js`. JWTs en `localStorage`. Credenciales de AWS en volcados de entorno. IDs internas en cuerpos de respuesta. El tipo de cosas que terminan en un informe P1.

**Ejecutar 36 pasos de ataque en tu navegador.** Bypass de autenticación, BAC, IDOR, CORS reflection, JWT alg=none, SSTI, XXE, inyección CRLF, contaminación de prototipos, descubrimiento de parámetros, degradación de versión de API. Tres niveles de agresión — cuidadoso, medio, completo. Pega encabezados personalizados. El modo sigiloso baraja el orden de las solicitudes para que no actives un WAF.

**Encadenar hallazgos individuales en exploits reales.** Un JWT en memoria es un hallazgo. El mismo JWT más un endpoint de API que acepta tokens sin firmar más el rol decodificado siendo admin es una cadena — y PenScope te muestra la cadena en la parte superior del informe, con puntuación de confianza, comando de reproducción y próximos pasos.

**Editar y reenviar cualquier solicitud.** Estilo clic derecho. El Repetidor se abre en una nueva pestaña, ventana completa. Cambia un parámetro. Presiona Enviar. Ve la respuesta. Colócala en Diff para compararla con la línea base.

**Fuzzear con puntos de inserción.** Marca `§payload§` en cualquier lugar de una solicitud, elige un conjunto de payloads (40 cadenas XSS, 30 SQLi, 28 LFI, 18 SSTI, 22 SSRF, 24 inyección de comandos, IDs 1-100, clásicos de bypass de autenticación, nombres de usuario comunes), elige un modo de ataque (Sniper / Cluster bomb / Pitchfork / Battering ram), observa la tabla de resultados en vivo. Las filas anómalas se marcan con una estrella.

**Probar como cinco usuarios diferentes a la vez.** Guarda contextos de autenticación (Anónimo, Usuario A, Usuario B, Admin, Interno). Un clic cambia el contexto activo — cada solicitud del Repetidor, cada ejecución de Intruder, cada sonda usa esas credenciales. Luego ejecuta la **Matriz de Autorización**: PenScope recorre cada endpoint × cada contexto y colorea una cuadrícula. Las discrepancias entre filas son tus hallazgos IDOR / BAC, descubiertos automáticamente.

**Generar un CSP que realmente se ajuste al sitio.** Recorre cada solicitud que hizo la página, clasifica cada una por tipo de recurso, construye una política estricta. Añade `default-src 'none'`, `frame-ancestors 'none'`, `upgrade-insecure-requests`. Detecta scripts en línea y `eval()` y advierte cuando tuvo que mantener `'unsafe-inline'`. Muestra diferencias con el CSP existente — verde para reforzado, rojo para relajado.

**Hablar con Claude en ambos sentidos.** Haz clic en `→ Claude` para copiar todo el escaneo en tu portapapeles como un resumen estructurado. Pregúntale a Claude qué probar a continuación. Claude responde con una cola JSON entre comillas. Haz clic en `⟳ Sincronizar desde Claude` y PenScope analiza la cola, ejecuta cada ataque contra el objetivo en vivo y retroalimenta los resultados al analizador de cadenas.

**Rastrear tu alcance a lo largo del tiempo.** Toma una instantánea de un sitio hoy, otra el próximo sprint, haz clic en Comparar. PenScope te dice qué hallazgos son nuevos, cuáles están resueltos, cuáles no se han movido. Exporta la diferencia como Markdown para el Slack del equipo.

**Mapear hallazgos a controles de cumplimiento.** Haz clic en Auditoría de Cumplimiento. Cada hallazgo se mapea a controles específicos en PCI-DSS v4, NESA UAE IAS, SAMA CSF, DESC ISR, ISO 27001, OWASP Top 10 2021 y CWE. Exporta JSON para tu SIEM. Exporta PDF para el auditor.

---

## Modo Cacería

Haz clic en `🎯 Cazar` en el encabezado de la ventana emergente. Se abre una nueva pestaña. El **panel de pre-vuelo** en la parte inferior muestra el estado de tu motor — endpoints capturados, secretos, tecnología detectada, contextos de autenticación guardados — para que sepas si tienes suficiente superficie para una cacería productiva antes de hacer clic en Iniciar. Si los endpoints < 20, una advertencia amarilla sugiere que explores el objetivo primero O que confíes en el nuevo paso de rastreo automático del DOM. Configura tu alcance objetivo (rutas dentro del alcance, rutas fuera del alcance, nivel de agresión, presupuesto de tiempo). Haz clic en `▶ Iniciar Cacería`.

PenScope autónomamente:

1. Realiza reconocimiento pasivo
2. **Activa automáticamente el modo Profundo** (el depurador CDP se adjunta silenciosamente — sin aviso al usuario)
3. **Rastreo automático del DOM** — recorre cada `<a href>`, `<form action>`, ``, `[routerLink]`, `[ng-href]`, `[to]`, `[data-href]` en la página actual. Filtra a URLs del mismo origen. Agrega nuevas a la cola de sondas. _Extracción pura de URL — sin clics, sin navegación, sin efectos secundarios que cambien la sesión._
4. Ejecuta el pipeline completo de 36 pasos de sonda + 8 paquetes de ataque conscientes de la pila
5. Barre la **Matriz de Autorización** a través de los contextos de autenticación guardados
6. Ejecuta el correlacionador de cadenas, filtra por tus reglas de alcance
7. **Redacta un informe completo en formato HackerOne para cada hallazgo Crítico y Alto** — cadenas *y* hallazgos individuales de alta gravedad (secretos expuestos, JWT alg=none, SSTI/XXE/CRLF confirmados). Cada borrador incluye título, gravedad con estimación CVSS, resumen, pasos para reproducir con curl de dos pasos (sonda sin autenticación + línea base de autenticación para diferencias), declaración de impacto específica del hallazgo, corrección sugerida de la biblioteca de fragmentos y referencias
8. Dispara una notificación de Chrome por cada crítico: *"El Modo Cacería encontró un IDOR Crítico en /api/users — borrador de informe listo"*
9. Persiste los borradores en `chrome.storage.local` indexados por host (sobreviven al cierre de pestaña y reinicio del navegador)

La **pestaña En Vivo** narra cada paso de filtrado en tiempo real — recuento de cadenas antes/después del filtro de alcance, distribución de gravedad, qué se descartó y por qué. Si la cacería termina con 0 informes, un diagnóstico "¿Por qué no hay informes?" te guía a través de cada punto de filtro con sugerencias concretas ("desmarcar filtro Crítico+Alto", "guardar 2+ contextos de autenticación", "explorar el objetivo más primero"). No más preguntarse por qué una cacería quedó vacía.

**Te despiertas con una cola de informes de recompensas preescritos.** Lee cada uno, haz clic en Copiar o Exportar, pégalo en tu envío de HackerOne / Bugcrowd / Intigriti.

Este es el flujo de trabajo que Burp ni siquiera intenta. El Escáner Activo de Burp ejecuta ataques pero aún tienes que escribir el informe. PenScope posee el camino completo desde escaneo → exploit → informe → envío.

> Establece alcance. Presiona Iniciar. Cierra la laptop. Despiértate con una cola de Críticos redactados.

### Controles de calidad — mantén tu reputación

El Modo Cacería filtra activamente falsos positivos que quemarían tu reputación si se envían:

- **Cáscaras HTML SPA** — las páginas de arranque de Angular/React/Vue devuelven HTML idéntico a solicitudes autenticadas y no autenticadas porque el JS maneja la autenticación del lado del cliente. El Modo Cacería detecta este patrón (ruta termina en `.html` + `sameBody=true`) y suprime el hallazgo. Las APIs reales aún informan.
- **Tokens SAS benignos de Azure** — URLs SAS de solo lectura de corta duración para medios (`image.jpg?sv=...&sp=r&se=...`) son entrega legítima de CDN, no fugas de credenciales. El Modo Cacería verifica `sp=r` + extensión de archivo multimedia + `se - st < 7 días` y los suprime. Los tokens SAS de larga duración, con capacidad de escritura o que no son multimedia aún se reportan como fugas reales.
- **Normalización de fragmentos hash** — `/Dashboard#!/` es una ruta del lado del cliente, no un endpoint del servidor. El Modo Cacería elimina los fragmentos hash antes del análisis de cadenas para que el informe muestre `/Dashboard` (la ruta real del servidor).
- **`baseUrl` real en cada curl** — el analizador de cadenas deriva el host objetivo de `tab.url` (solo HTTP/HTTPS) con un fallback al primer endpoint observado. No más URLs placeholder `https://target.tld` en tus informes.
- **Diagnósticos transparentes** — cada paso de filtro (alcance, gravedad, deduplicación) registra sus recuentos de antes/después en el feed en vivo. Cuando una cacería termina con 0 informes, el feed termina con un bloque "¿Por qué no hay informes?" explicando exactamente dónde se descartó cada posible hallazgo, con sugerencias concretas de próximos pasos adaptadas a tu configuración específica.

### Un borrador real del Modo Cacería

Aquí hay un extracto censurado de un borrador real que produjo el Modo Cacería en un LMS gubernamental en 4 minutos:```markdown
# Authentication bypass on sensitive endpoint: /api/DashboardApi/getUsefulLinks

**Severity:** CRITICAL (CVSS estimate: 9.0–10.0)
**Confidence:** 95%
**Target:** https://lms.example.gov/Dashboard
**Discovered:** 2026-05-01T07:31:13.151Z
**Detected by:** PenScope v6.2 Hunt Mode (chain pattern: chain-authbypass)

## Summary
PenScope's probe confirmed that GET /api/DashboardApi/getUsefulLinks returns
the same data whether or not authentication cookies are sent
(auth=200, noauth=200, sameBody=false). The path name strongly suggests this
endpoint should be role-gated — it's returning sensitive data to
unauthenticated callers.

## Steps to reproduce
# Verify unauthenticated access
curl -i "https://lms.example.gov/api/DashboardApi/getUsefulLinks"

# Compare to authenticated baseline (paste your real cookies):
curl -i "https://lms.example.gov/api/DashboardApi/getUsefulLinks" -b "session=..."

## Impact
Successful exploitation enables an attacker to bypass core security controls,
gain unauthorized access to sensitive functionality or data, and pivot to
broader compromise. This is a credible breach path warranting immediate
remediation.

## Suggested fix
Enforce server-side authentication on every endpoint that returns sensitive
data. The fact that PenScope received a 200 with no cookies means the
authorization middleware is missing or disabled for this route.

[ ... full Express/Django/Laravel snippet examples + references ... ]

Eso es un informe de recompensa presentable. Redactado mientras hacías otra cosa.


El Banco de Trabajo

El Banco de Trabajo es lo que eleva a PenScope de "herramienta de reconocimiento pasivo" a "todo por lo que abrirías Burp". Haz clic en ⌘ Workbench en el encabezado de la ventana emergente y se abre una pestaña de Chrome a pantalla completa con seis herramientas, compartiendo el estado con tu escaneo.

Repetidor

¿Capturaste una solicitud con la que quieras jugar? Haz clic en ella en el Mapa del Sitio. La solicitud completa — método, URL, encabezados, cuerpo — se carga en el editor. Edita cualquier cosa. Presiona Enviar (o Ctrl+Enter). La respuesta se muestra a la derecha con estado, tamaño, tiempo y el contexto de autenticación activo que la disparó.

La barra de historial mantiene tus últimos 50 envíos. Tres botones convierten la solicitud actual en artefactos accionables: Copiar como curl (para terminales e informes), Enviar a Intruso (con los mismos encabezados y cuerpo precargados), Enviar respuesta a Diff.

Intruso

Toma cualquier solicitud. Envuelve el valor que quieras fuzzear entre §...§. Elige un conjunto de cargas. Presiona Iniciar.

Biblioteca de cargas integrada:

O pega tu propia lista. Cuatro modos de ataque: Francotirador (una posición a la vez), Bomba de racimo (todas las combinaciones), Hórquilla (posiciones sincronizadas), Ariete (la misma carga en todas partes). Tabla de resultados en vivo con detección de anomalías: se marcan las filas donde el código de estado o el tamaño de la respuesta difiere de la línea base.

Límite máximo: 200 solicitudes por ataque. No vayas a hacer DoS accidentalmente a tu objetivo de recompensa.

Codificador

Conversiones reversibles para los formatos que los cazadores tocan a diario:``` Base64 ↔ B64-URL ↔ URL ↔ HTML ↔ Hex ↔ MD5 / SHA-1 / SHA-256 / SHA-512

root@kitploit:~
Además, una tarjeta **JWT** dedicada: pega un token, decodifica el encabezado y el payload, edita cualquiera de ellos y luego falsifica uno nuevo. Dos modos de falsificación:

- **alg=none** — la prueba clásica de omisión de autenticación JWT (el servidor confía en tokens sin firmar)
- **HS256** — firma con un secreto débil adivinado (`secret`, `key`, `password`, `jwt-secret` son los comunes)

El resultado es un único token, listo para copiar y pegar.

### Diff

Dos paneles de texto. Envía respuestas desde Repeater con un clic. Pulsa `Compute Diff`. PenScope ejecuta un diff de líneas LCS y colorea el resultado: `+` para añadido, `−` para eliminado. Resumen de recuento en la parte superior.

Este es el asesino de la confirmación de IDOR. "¿La respuesta para el Usuario A es *la misma* que para el Usuario B, o el servidor realmente devolvió los datos del Usuario B?" Diff te lo dice en tres segundos.

### Site Map

Árbol jerárquico de cada endpoint capturado por PenScope, organizado por host → ruta. Píldoras de método (`GET`, `POST`, `DELETE`...). Insignias de código de estado por nodo, coloreadas verde/amarillo/naranja/rojo. Haz clic en cualquier ruta para cargarla en Repeater.

La superficie de ataque completa, en una sola vista, lista para probar.

### Auth Contexts + Authorization Matrix

Este es el diferenciador. Burp no incluye esto.

Guarda perfiles de autenticación con nombre. Cada perfil = un nombre + un conjunto de cookies + un conjunto de encabezados. Créalos iniciando sesión como cada usuario, copiando sus cookies de sesión + encabezado de Autorización, pegándolos en el editor. Añade notas ("plan de pago", "rol de solo lectura", "personal interno"). Un clic cambia el contexto activo. Todas las solicitudes de Repeater / Intruder / sonda ahora se envían con esas credenciales.

Luego haz clic en `Run authorization matrix`. PenScope golpea cada endpoint × cada contexto y renderiza una cuadrícula:```
                     Anonymous   User A    User B    Admin
GET  /api/me         401         200       200       200
GET  /api/users      401         403       403       200
GET  /api/admin      401         403       403       200
DELETE /api/orders/5 405         403       403  ★    200
PATCH /api/users/42  401         200  ★    403       200

Las estrellas marcan filas donde los contextos discrepan. Esas filas son tus hallazgos de IDOR y BAC, detectados automáticamente.

Un cazador típico pasa toda una tarde probando manualmente cada endpoint como cada usuario, tomando notas en un documento. PenScope lo hace en 30 segundos y codifica los resultados con colores.


Modes

Mismo motor de datos, tres vistas. Elige la que coincida con lo que estás haciendo.

Cambia de modo con la píldora Classic / Red / Blue en el encabezado emergente. Cada pestaña recuerda el último modo en que estuviste. Los colores del tema cambian con el modo.


Exports

Haz clic en Export ▾ en el encabezado emergente. Diez formatos, dos propósitos:

El informe Markdown está diseñado para compartir — cada credencial se redacta, el encabezado del informe lo dice explícitamente. El JSON está diseñado para sincronizar con tu compañero de caza — cada credencial se envía intacta.


vs Burp

PenScope y Burp resuelven el mismo problema desde lados diferentes. PenScope vive en tu navegador; Burp es un proxy MITM. Ambos tienen su lugar. Aquí está la comparación honesta.

Donde PenScope gana: gratis, configuración más rápida, nativo del navegador (usa tu sesión real, sin baile de certificados), correlación de cadenas, herramientas de modo defensor, puente de IA.

Donde Burp gana: la intercepción a nivel TLS te permite ver y modificar solicitudes antes de que salgan de la pila de red — útil para aplicaciones nativas y contrabando de websockets. Collaborator te da infraestructura de callback fuera de banda para XXE / SSRF ciegos.

Si haces bug bounty exclusivamente en tu navegador en aplicaciones web, PenScope reemplaza a Burp en ~95% de tu flujo de trabajo diario. Si haces ingeniería inversa de aplicaciones móviles o pruebas clientes pesados, Burp sigue siendo tu amigo.


Privacy

PenScope no envía nada sin acción explícita del usuario. No hay:

  • ❌ Sin análisis
  • ❌ Sin telemetría
  • ❌ Sin registro remoto
  • ❌ Sin servidor de licencias
  • ❌ Sin verificación de "phone home"

El tráfico saliente solo ocurre en tres casos:

  1. Haces clic en Probe — las solicitudes van al sitio que estás escaneando, usando tus cookies de sesión existentes
  2. Haces clic en → Claude o cualquier botón Copy — el contenido va a tu portapapeles local
  3. Haces clic en cualquier opción Export — el contenido se guarda en tu disco local

Cero paquetes npm. Cero scripts CDN. Cero SDKs de terceros. JavaScript puro vanilla, manifiesto MV3, superficie de ataque de cadena de suministro cero.



Under the hood

Arquitectura, los 36 ataques de sonda, los 13 patrones de cadena, el mapa de archivos y por qué nada de esto necesita un paso de compilación.


Architecture```

root@kitploit:~
                ┌──────────────────────────┐
                │   state[tabId]            │
                │   60+ fields populated by │
                │   webRequest / content /  │
                │   CDP / probe layers      │
                └──────────┬───────────────┘
                           │
   ┌───────────────────────┼───────────────────────┐
   │                       │                       │

Classic mode Red mode Blue mode renderClassic() renderRed() renderBlue() │ │ │ └───────────────────────┴───────────────────────┘ │ ┌────────────────┴────────────────┐ │ │ Workbench Hunt Mode (Repeater · Intruder · Encoder (autonomous orchestrator · Diff · Site Map · Auth Matrix) drafting H1 reports)

root@kitploit:~
**Un motor, tres modos, tres superficies.** El motor de datos es independiente del modo: cada campo de estado se recopila de la misma manera, independientemente de la vista en la que te encuentres. Los modos son opciones de tema + renderizador sobre los mismos datos. El Workbench y el Modo Hunt son pestañas independientes de Chrome que comparten `state[tabId]` a través de manejadores de mensajes en segundo plano.

Las anulaciones de variables CSS (`body.mode-red`, `body.mode-blue`) re-tematizan todo sin tocar ni un solo selector de reglas. Por eso el modo Classic es exactamente la misma experiencia que v5.9 byte por byte.

---

## Rendimiento

PenScope está en cada pestaña, todo el tiempo. Por defecto, evita el enriquecimiento costoso para ~50 sufijos de hosts ruidosos conocidos (CDN de video como `googlevideo.com`, redes publicitarias como `doubleclick.net`, endpoints de telemetría como `sentry.io`, CDN estáticas grandes como `gstatic.com`). Cientos de solicitudes de fragmentos de `googlevideo.com` por minuto en YouTube ya no pasan por 14 expresiones regulares AUTH_PATTERN + detección de parámetros de ruta + búsqueda de Swagger; se registran como endpoints (por lo que el Site Map aún los incluye) y se omiten para el resto.

El mismo camino rápido para los tipos de recurso `image`/`media`/`font`/`stylesheet`/`object`/`ping` en cualquier host. Los errores casi nunca se esconden en los parámetros de URL `.css`.

Los reanálisis del DOM del script de contenido se ejecutan mediante `requestIdleCallback` (con un mínimo de 15 segundos entre análisis) y se omiten por completo cuando la pestaña está oculta. MutationObserver filtra cambios solo de texto (tics de temporizador, actualizaciones de datos de caracteres) para que el constante cambio del DOM de YouTube no active un reanálisis completo cada 3 segundos.

Anulación disponible: casilla de verificación **"Captura completa en hosts ruidosos"** en el menú desplegable de Probe. Cuando estés auditando específicamente YouTube/Twitch/Sentry/etc. COMO objetivo, márcala y se omitirá el camino rápido.

---

## Los 45 ataques de Probe

Se ejecutan a demanda. Tres niveles de agresión con un contrato impuesto: **Careful** = solo GET/HEAD/OPTIONS con un espaciado mínimo de 200 ms entre solicitudes; **Medium** = añade POST para operaciones de lectura de forma (≤3 en paralelo); **Full** = todos los métodos incluidos DELETE/PUT/PATCH más ráfagas de condiciones de carrera (≤10 en paralelo). Los encabezados personalizados se pegan en cada solicitud. El modo sigiloso baraja el orden de los pasos con Fisher-Yates y añade una fluctuación del 0–80% a los retrasos entre pasos. El método esperado de cada paso se verifica en seco contra el nivel activo al inicio del probe; los pasos bloqueados se listan en el registro de diagnóstico.

| # | Ataque | Qué hace |
|---|---|---|
| 1 | Introspección de GraphQL | Vuelca esquema, tipos, consultas, mutaciones |
| 2 | Cosecha de mapas de fuente | Descarga `.map`, extrae secretos + endpoints |
| 3 | Obtención de Swagger/OpenAPI | `/swagger.json`, `/openapi.json`, etc. |
| 4 | Preflight OPTIONS | Preflight CORS en cada ruta de API |
| 5 | Sondaje de rutas de reconocimiento | `/admin`, `/.env`, `/.git/HEAD`, `/actuator` |
| 6 | Fuerza bruta de prefijo/sufijo de API | `/api/v1/<word>` |
| 7 | Fuerza bruta inteligente de sufijo | Prefijo × sufijo barajado sigilosamente |
| 8 | BAC (control de acceso roto) | Endpoints que cambian de estado sin autenticar |
| 9 | Autotest de IDOR | Sustitución de ID + comparación de mismo cuerpo |
| 10 | Prueba de reflexión CORS | Reflexión de origen con credenciales |
| 11 | Manipulación de métodos | Intercambios GET/POST/PUT/PATCH/DELETE |
| 12 | Sonda de redirección abierta | Variantes de `?redirect=evil.com` |
| 13 | Sonda de condición de carrera | Solicitudes concurrentes en endpoints sensibles a idempotencia |
| 14 | Polución de parámetros HTTP | `?id=1&id=2` |
| 15 | Enumeración de subdominios | Desde registros CT + tráfico observado |
| 16 | Fuzzing de campos de GraphQL | Sondear cada campo introspeccionado para auth |
| 17 | Aceptación de JWT alg=none | ¿El servidor confía en tokens sin firmar? |
| 18 | Inyección de encabezado Host | Variantes de `X-Forwarded-Host` |
| 19 | Envenenamiento de caché | Inyección de encabezado sin clave |
| 20 | IDOR confirmado mismoCuerpo | Similitud de cuerpo entre IDs |
| 21 | Prueba de eliminación de autenticación | Eliminar cookies, buscar 200s |
| 22 | Brecha de validación CSRF | Endpoints que cambian de estado sin token |
| 23 | Reflexión gRPC | Servicio de reflexión gRPC expuesto |
| 24 | Oráculo de compresión (BREACH) | Heurístico, no explota realmente |
| 25 | Secuestro de WebSocket | Conexiones WS de origen cruzado |
| 26 | Sonda de envenenamiento de caché | Entrada sin clave basada en encabezados |
| 27 | Oráculo de temporización | Variación de temporización en el mismo endpoint |
| 28 | Omisión de COOP/COEP | Fortaleza del aislamiento de origen cruzado |
| 29 | Partición de almacenamiento | Aislamiento de almacenamiento entre sitios |
| 30 | Descubrimiento recursivo inteligente | 3 oleadas de sondaje, encadenadas desde respuestas anteriores |
| 31 | Descubrimiento de parámetros | 38 parámetros ocultos por fuerza bruta (`debug`, `admin`, `_method`, `bypass`...) |
| 32 | Sondaje de SSTI | `{{7*7}}`, `${7*7}`, `<%=7*7%>` |
| 33 | Sondaje de XXE | XML con entidades externas |
| 34 | Inyección CRLF | `%0d%0a` en parámetros de redirección |
| 35 | Degradación de versión de API | `/v1/`, `/v2/` para cada `/vN/` observado |
| 36 | Polución de prototipo | `__proto__` / `constructor.prototype` en cuerpos JSON |
| 37 | Sondaje de parámetros SSRF | 26 nombres de parámetros SSRF con payloads de metadatos de nube; marca contenido de metadatos reflejado |
| 38 | Inyección de operadores NoSQL | `{"$ne":null}` / `{"$gt":""}` / `{"$exists":true}` en campos JSON de ID |
| 39 | Amplificación de alias GraphQL | Consulta de 50 alias → superficie de amplificación DoS (solo completo) |
| 40 | Amplificación de lote GraphQL | Lote de 25 elementos en array JSON → amplificación DoS (solo completo) |
| 41 | Engaño de caché | Estilo `/api/me/avatar.css` — contenido sensible almacenado en caché detrás de extensiones estáticas |
| 42 | Toma de control de subdominio | Sonda estilo HEAD de subdominios capturados; coincide con firmas de toma de control de GitHub Pages / S3 / Heroku / Netlify / Vercel / Bitbucket / Shopify |
| 43 | TabNabbing | `<a target="_blank">` de origen cruzado sin `rel="noopener"` |
| 44 | Correlación de origen postMessage | Listeners `addEventListener("message")` sin comprobaciones de origen |
| 45 | Abuso de ámbito de Service Worker | Marca ámbitos SW amplios (especialmente `/`) |

Además, **8 paquetes de ataque conscientes del stack** que se activan automáticamente cuando el modo Red detecta el framework correspondiente: Laravel, Spring Boot, Rails, ASP.NET, Django, Next.js, GraphQL, WordPress. Cada paquete tiene de 4 a 9 pruebas específicas del stack. Solo el paquete de Spring Boot alcanza `/actuator/heapdump`, `/actuator/env`, `/jolokia/list`, `/h2-console`.

---

## Los 13 patrones de cadena

Los hallazgos individuales son ruido. Los hallazgos compuestos son exploits. El analizador de cadenas de PenScope recorre todo el estado y emite cadenas donde múltiples señales se combinan en algo explotable.

1. **Omisión de autenticación en endpoint sensible** — falta de autenticación confirmada + ruta admin/facturación/usuario
2. **BAC destructivo** — endpoint vulnerable con `delete`/`remove`/`purge` en la ruta
3. **Mutación GraphQL vulnerable a CSRF** — falta de CSRF confirmada + es una mutación
4. **Token de autenticación expuesto + API activa** — JWT en memoria + endpoints coincidentes
5. **IDOR confirmado con datos sensibles** — respuesta de mismo esqueleto entre IDs
6. **Reflexión CORS CON credenciales** — omisión completa de SOP
7. **Redirección abierta en flujo de autenticación** — parámetro de redirección en rutas de callback OAuth
8. **Rutas de administración ocultas** — 3+ rutas admin en código nunca observadas en tráfico
9. **JWT alg=none aceptado** — el servidor confía en tokens sin firmar
10. **Mapa de fuente filtró secretos** — archivos `.map` enviados a producción con claves hardcodeadas
11. **Fuga de IP interna por WebRTC** — IPs privadas expuestas vía STUN
12. **Grupo de hallazgos de sonda recursiva** — 3+ hallazgos sensibles en múltiples endpoints
13. **Superficie RCE específica del stack** — el paquete de stack encontró actuator/Ignition/etc. expuestos

Cada cadena tiene una gravedad, resumen, comando de reproducción, próximos pasos y puntuación de confianza. Ordenadas por `severity × confidence`. Se muestran en la parte superior del modo Red y en la parte superior de cada informe de Claude.

---

## Puntuación de salud (Modo Blue)```
score = max(10, 100 − min(90, crit×22 + high×9))

Estricto a propósito. Solo los críticos y altos mueven el número. Los medios y bajos aún aparecen en los mosaicos de conteo y en las 5 correcciones principales (vale la pena corregirlos), pero no arrastran la puntuación.

Mínimo en 10 para que un sitio catastrófico muestre «10/100», no «0/100» (que el usuario no podría distinguir de «escaneo fallido»).


Mapa de archivos```

PenScope/ ├── manifest.json MV3 manifest, v6.3.0, "type":"module" service worker ├── popup.html Mode UI shell — three modes, glassmorphism dark theme ├── popup.js Renderers, mode router, weaponize panels, fix snippets, │ compliance, Hunt + Workbench launchers, exports ├── content.js Content script — DOM scanning, secrets, JSON islands, │ tech fingerprints, XSS sinks, postMessage scan │ ├── workbench.html / .js Workbench tab — Repeater / Intruder / Encoder / │ Diff / SiteMap / AuthCtx + AuthMatrix │ ├── hunt.html / .js Hunt Mode tab — autonomous orchestrator │ ├── regex-pack.json 81 secret patterns + 44 response-body patterns │ (loaded by SW at boot, merged into RESP_PATTERNS, │ fetched by content script via getRegexPack message) │ ├── src/ Service worker entry + module tree (Phase 7 migration) │ ├── background.js Entry — webRequest, CDP, probe orchestrator, │ │ chain correlator, message router (~7,000 lines) │ ├── probe/ │ │ └── stack-packs.js STACK_ATTACK_PACKS (8 stacks) — extracted module │ └── (other audit-named files are stubs — see MIGRATION.md) │ ├── fonts/ Local woff2: JetBrains Mono + Plus Jakarta Sans │ (4 + 5 weights, ~590 KB total). Replaces the │ Google Fonts beacon that earlier versions hit on │ every popup open. │ ├── icons/ 16, 48, 128 px PNG ├── CHANGELOG.md Full version history v5.1 → v6.3.0 ├── CHANGES.md v6.3 per-phase fix breakdown ├── MIGRATION.md Phase 7 module-migration map (real vs stub) ├── LICENSE MIT └── README.md You are here

root@kitploit:~
Los cuatro archivos de referencia antiguos (`red-attacks.js`, `blue-fixes.js`, `blue-csp.js`, `blue-compliance.js`) fueron eliminados en v6.3 — su contenido ya estaba incrustado en `popup.js` / `background.js` desde v6.0; los archivos independientes eran código muerto. `STACK_ATTACK_PACKS` ahora es una exportación real de módulo ES desde `src/probe/stack-packs.js`.

---

## Sin paso de compilación```bash
git clone https://github.com/spider12223/PenScope
# That's it.

Sin npm install. Sin webpack. Sin babel. Sin TypeScript. Sin bundler. JavaScript vanilla puro. La etiqueta <script> de popup.html apunta directamente a popup.js. El service worker carga background.js directamente. CSS está en línea en <style>.

La implementación de MD5 son ~50 líneas de la referencia RFC 1321 en línea (porque crypto.subtle no expone MD5). El diff LCS tiene ~30 líneas. La firma JWT usa crypto.subtle.sign nativo. El correlacionador de cadenas es regex simple + iteración de arrays. Todo lo que lees en este código base es exactamente lo que se ejecuta en el navegador.

Una herramienta de reconocimiento que incluye 200 dependencias transitivas de npm tiene 200 paquetes de superficie de ataque en la cadena de suministro. PenScope tiene cero.


Permisos


Contribuir

Informes de errores y PRs bienvenidos. Algunas barreras de seguridad:

  • Cero nuevas dependencias. Sin package.json. Si necesitas una pequeña utilidad, escribe 20 líneas.
  • Solo JS vanilla. Sin React, Vue, TypeScript, paso de compilación.
  • El estado permanece en state[tabId]. No introduzcas nuevos almacenes globales.
  • Los comentarios documentan por qué, no qué. Comentarios en línea sobre la intención de regex, peculiaridades de MV3, contrato del enrutador de modos.
  • Accesibilidad. Los nuevos elementos interactivos necesitan contornos :focus-visible, etiquetas ARIA, contraste ≥4.5:1.
  • Sin new Function(). Los service workers de MV3 prohíben el código dinámico. Usa declaraciones de funciones nombradas + args para chrome.scripting.executeScript.
  • Audita antes de enviar. Verifica que las mutaciones de cookies/estado tengan una ruta de restauración. Prueba la criptografía personalizada contra vectores. Revisa casos límite.

Licencia

MIT. Úsalo, haz un fork, envíalo.

Si PenScope te encuentra un crítico, abre un issue y cuéntanos. Coleccionamos historias de guerra.


Construido por cazadores, para cazadores.

Reporta un bug · Registro de cambios

Descargar herramienta
role
scope
exp
  • Adiciones CDP. Accessibility.getFullAXTree revela etiquetas aria sensibles (botones admin/sudo/delete/destroy). Storage.getCookies expone cookies CHIPS particionadas que chrome.cookies.getAll no captura.
  • Analizador de islas JSON. Los bloques <script type="application/json"> (Next __NEXT_DATA__, Nuxt __NUXT__, Remix __remixContext, Apollo __APOLLO_STATE__) se analizan para extraer endpoints y campos ID, no solo se escanean con regex.
  • Nueva UX de pestaña de endpoints. Botón curl por fila, botón unauth por fila (repite la solicitud sin cookies, muestra un veredicto lado a lado). Vista de tabla de rutas que colapsa /users/123, /users/124 en /users/{id} con recuentos. Carril de pivote automático para subdominios admin.*, api.*, internal.*.
  • Exportación HAR + lista de palabras para ffuf. Espejo de las exportaciones de importación HAR existente + lista de palabras de Burp. Se puede usar directamente con ffuf -w.
  • 📸 Botón de instantánea / Comparar en el encabezado del popup. Guarda una instantánea ahora, compara en cualquier momento después. El mismo mecanismo que usa el modo Azul.
  • Diff de IndexedDB. Captura el estado del lado cliente, muta la aplicación, captura de nuevo, diferencia. Detecta errores de fuga de estado que la captura HTTP pura no detecta.
  • Correcciones de seguridad críticas. La sonda window.__ps_ctx ya no filtra los encabezados de Autorización del usuario al contexto de la página después de que la sonda se completa. Los comandos de reproducción en cadena redactan las cookies de sesión por defecto (el modo Rojo tiene un interruptor opcional para valores en vivo). La IIFE de la sonda captura fetch/JSON/Promise/atob/btoa/etc. al inicio para que las páginas instrumentadas con análisis no puedan interceptar la sonda sobrescribiendo globales. Inclusión de fuentes locales — cero solicitudes salientes al abrir el popup.
  • Migración a módulo ES. El SW ahora se carga como "type":"module". Árbol de directorio src/ en su lugar; STACK_ATTACK_PACKS extraído a src/probe/stack-packs.js. Los módulos restantes son stubs que documentan la ruta de extracción.
  • ConjuntoCantidadCaso de uso
    XSS40Pruebas de reflexión, XSS DOM, variantes SVG/iframe
    SQLi30Ciego booleano, basado en errores, basado en tiempo, UNION
    LFI / Path Traversal28Variantes de codificación, Windows + Linux, envenenamiento de logs
    SSTI18Jinja2, Twig, Freemarker, Velocity, Smarty
    SSRF22Variantes de localhost, metadatos de AWS/Azure/GCP, gopher/dict
    Inyección de Comandos24Bash, PowerShell, bypass de IFS
    IDs 1-100100Para enumeración de IDOR
    Bypass de autenticación25Trucos de ruta, escalada de roles, bypass de autenticación SQL
    Nombres de usuario comunes25admin, root, test, support, service...
    ModeBuilt forWhat's on screen
    🟣ClassicFlujo de trabajo familiar, datos completosCada pestaña, cada detalle. El PenScope original.
    🔴RedPruebas ofensivasVía de cadena de exploit en la parte superior con botones de weaponize (curl, Nuclei YAML, petición Burp, borrador de informe H1, cola de Claude). Los paquetes de ataque conscientes de la pila se activan automáticamente en frameworks detectados (Laravel, Spring Boot, Rails, ASP.NET, Django, Next.js, GraphQL, WordPress). Primero la cadena, pestañas clásicas colapsadas debajo.
    🔵BlueDefensores / revisión de seguridadPuntaje de salud (0-100, estricto — solo cuentan críticos y altos). Top 5 correcciones priorizadas por severidad × facilidad, cada una con fragmentos copiables en Nginx / Apache / IIS / Express / Django / Laravel / Rails / ASP.NET. Generador de CSP a partir del tráfico observado. Auditoría de cumplimiento de 7 frameworks. Diferencia de instantánea y regresión. Monitor continuo con notificaciones de Chrome cuando se filtran nuevos secretos.
    ExportIncludes credentials?Use it for
    JSON (full data)✅ YesFormato para compartir en equipo. Dos cazadores trabajando en el mismo objetivo necesitan contextos de autenticación compartidos para reproducir los hallazgos. Envía a través de Signal / canal cifrado.
    📄 Full Report (.md)❌ RedactedEnvío de bounty, compromiso con el cliente, en cualquier lugar donde salga de tu equipo. Los valores de encabezados de autenticación (Authorization, Cookie, X-API-Key, X-Auth-Token, X-CSRF-Token, X-Amz-Security-Token, etc.) se reemplazan con <redacted, N chars>. Incluye informes redactados de Hunt Mode integrados, aciertos de paquetes de ataque de pila, alertas de monitor continuo y estado de triaje Marcado como Arreglado.
    Burp URL listURL list onlyPega en el alcance objetivo de Burp o alimenta a ffuf/nuclei
    Param wordlistNames onlyDiccionarios de fuzzing — parámetros de consulta + nombres de entrada de formulario + nombres de campos ocultos
    Param wordlist (ffuf)Names onlyMismos datos emitidos como líneas param=FUZZ para ffuf -w
    Endpoints (txt)URL list onlyMétodo/estado/ruta/host/etiquetas/tamaño separados por tabulador — rutas observadas + descubiertas
    📤 HAR ExportHeaders + bodiesCaptura HAR-1.2 completa que puedes importar en Chrome DevTools / un visor HAR / entregar a un compañero
    🔧 Swagger Spec (.yaml)URL list onlyEspecificación OpenAPI 3.0 reconstruida a partir del tráfico observado
    🗺️ Source Maps (JSON)Source extracts onlyMapas de fuente analizados completos con árboles de archivos, secretos, rutas, vars de entorno, dependencias
    ⚔️ Nuclei Templates (.yaml)Probe URLs onlyColócalos en ~/.config/nuclei/custom/ para escaneo continuo
    FeaturePenScope (free)Burp Suite Pro ($449/yr)
    Repeater✅✅
    Intruder (4 attack modes)✅✅
    Decoder (B64/URL/Hex/JWT)✅✅
    Comparer / Diff✅✅
    Target / Site Map✅✅
    Active scanner✅ (45 probes + 8 stack packs)✅
    Session/auth context handling✅ (saved profiles + matrix)✅ (rules-based)
    Authorization matrix tester✅ (built-in)❌ (paid extension)
    Chain correlation (compound findings)✅ (13 patterns)❌
    Subdomain takeover heuristic✅ (8 service signatures)❌ (paid extension)
    GraphQL DoS surface tests (alias + batch)✅❌
    Per-endpoint unauth replay button✅❌
    HAR import + export✅ (round-trip)✅ (one-way)
    IndexedDB diff (catch client-state leaks)✅❌
    CHIPS partitioned cookie capture✅❌
    JSON island parser (Next/Nuxt/Remix hydration data)✅❌
    Compliance mapping (PCI/NESA/SAMA/ISO/OWASP)✅ (7 frameworks)❌
    CSP generator from observed traffic✅❌
    Regression diff (snapshot + compare)✅❌
    AI integration (Claude bidirectional)✅❌
    Autonomous Hunt Mode (drafts H1 reports while you sleep)✅❌
    Setup time60 segundos~30 minutos (proxy + certificado + configuración del navegador)
    TLS-level proxy interception❌ (limitación del navegador)✅
    Out-of-band testing (Collaborator)❌ (planeado)✅
    Extension marketplace❌✅
    Cost$0$449 / user / year
    EstadoPuntuación
    0 críticos, 0 altos100 (limpio)
    1 alto91
    3 altos73
    1 crítico78
    1 crítico + 3 altos51
    3 críticos34
    5+ críticos10 (mínimo)
    PermisoPor qué
    webRequestCaptura cada solicitud/respuesta sin volver a obtener
    webNavigationDetecta cambios de ruta pushState/replaceState en SPA (v6.3+) para que los endpoints de app.com no contaminen el estado del nuevo origen cuando el SPA navega entre orígenes
    activeTabLee la URL de la pestaña actual + envía mensajes del content script
    scriptingInyecta ejecutores de prueba, paquetes de pila y solicitudes de Workbench en el contexto de la página
    tabsAsigna hallazgos a la pestaña correcta; abre Workbench en una nueva pestaña
    cookiesLee cookies HttpOnly que document.cookie no puede ver
    debuggerRequerido para el modo Profundo — habilita CDP para cuerpos de respuesta completos, introspección en tiempo de ejecución, extracción de fuentes, problemas de auditoría, árbol de accesibilidad, cookies particionadas
    notificationsAlertas del monitor continuo sobre nuevas filtraciones de secretos
    alarmsTics de intervalo de 5 minutos para el monitor continuo
    storagePersiste el estado (session) y las instantáneas (local) en los reinicios del SW
    <all_urls> permiso de hostLa captura es independiente del objetivo; el usuario controla qué pestaña está abierta