Skip to content

Esta herramienta no está afiliada a GitHub, Inc. ni a Microsoft Corporation, ni cuenta con su respaldo o patrocinio. GitHub y GitHub Actions son marcas comerciales de GitHub, Inc. Los demás nombres son marcas comerciales de sus respectivos propietarios.

Forense de registros de auditoría · en tu navegador

¿Se ha comprometido nuestra organización de GitHub?

Suelta tus exportaciones del registro de auditoría de GitHub — y, si las tienes, los eventos Git y los logs de ejecución de Actions — y obtén un veredicto, una cronología del incidente de cadena de suministro y un plan de remediación. Análisis en tu navegador con WebAssembly: no se sube nada.

  • 31 reglas de detección
  • Rust → WebAssembly
  • nada se sube

Suelta aquí las exportaciones del registro de auditoría

Registro de auditoría de organización o empresa (exportación JSON / CSV, salida de la API REST, streaming .json.log.gz), exportación de eventos Git (.json.gz), archivos de logs de Actions (.zip), alertas de secret scanning (JSON). Archivos sueltos, carpetas o ZIP — varios a la vez.

El ejemplo es un incidente ficticio (organización «northwind-labs»): el token de un desarrollador robado por un infostealer y reutilizado desde un VPS.

Todo se ejecuta en tu navegador. Tus registros nunca salen de este dispositivo. · Herramienta independiente — no afiliada a GitHub.

Cómo obtener tus datos

De cero a un archivo en la zona de carga en unos dos minutos. Empieza por la primera pestaña: funciona con todos los planes.

  1. 1. RecopilarExporta el registro de auditoría (abajo)
  2. 2. SoltarEl archivo, carpeta o ZIP, en la herramienta
  3. 3. Se queda en localSe analiza en tu navegador, no se sube nada

Registro de auditoría de la organización, desde la interfaz web

Requisitospropietario de la organización. Todos los planes (Free, Team, Enterprise Cloud).

  1. En GitHub, abre la organización → Settings → Archive → Logs → Audit log.
  2. Opcional: escribe un filtro de fecha en el buscador, por ejemplo created:>=2026-09-01, y pulsa Intro.
  3. Haz clic en Export → JSON (CSV también sirve; JSON conserva los campos anidados).
  4. Suelta el archivo .json descargado en la herramienta.

¿Una ejecución de workflow sospechosa? Llévate también sus logs

Requisitosacceso de lectura al repositorio. Todos los planes.

  1. Repositorio → Actions → abre la ejecución.
  2. Menú ⋯ (arriba a la derecha) → Download log archive.
  3. Suelta el ZIP tal cual, junto con el registro de auditoría.

Trampas habituales

  • Retención: 180 días el registro de auditoría, 7 días los eventos Git, 90 días por defecto los logs de Actions. Exporta hoy, primero los eventos Git.
  • La exportación web no incluye eventos Git y se corta a 100 MB comprimidos o 10 minutos de procesamiento: divide los periodos largos con filtros created:>= / created:<=. Los solapamientos no son un problema.
  • Sin direcciones IP salvo que un propietario haya activado su visualización (Enterprise Cloud): sin ellas no pueden saltar las detecciones de IP o país nuevos. Las horas están en UTC.

Qué hace esta herramienta

GitHub suele ser la primera puerta de entrada a la nube: un solo token de acceso personal robado da al atacante tu código fuente, tus pipelines de CI/CD y — a través de los secretos de Actions — tus cuentas cloud. El registro de auditoría de la organización recoge casi todo: quién se autenticó con qué token, desde qué IP, qué clonó, qué ajuste cambió.

Esta herramienta lee esas exportaciones en tu navegador, evalúa un conjunto de reglas de detección publicadas y da un veredicto global (Limpia / Sospechosa / Comprometida), los hallazgos con sus evidencias y técnicas MITRE ATT&CK, una cronología del incidente, un pivote por entidad (actores, tokens, IP, repositorios, workflows, runners, aplicaciones) y un plan de remediación.

Qué puedes soltar

  • Registro de auditoría de organización o empresa exportado desde la interfaz web (JSON o CSV).
  • Salida de la API REST (GET /orgs/{org}/audit-log, con include=all para los eventos Git), con páginas concatenadas o no.
  • Archivos de streaming del registro de auditoría (Amazon S3, Azure Blob, Google Cloud Storage): estructura YYYY/MM/DD/HH/MM/<uuid>.json.log.gz, JSON lines comprimido con gzip — suelta la carpeta entera.
  • Exportación de eventos Git (export-<empresa>-<timestamp>.json.gz): git.clone, git.fetch y git.push con metadatos de token.
  • Archivos de logs de ejecución de GitHub Actions (el ZIP de «Download log archive»).
  • Alertas de secret scanning tal como las devuelve la API REST (JSON).

Qué detecta

Las detecciones son datos, no código: cada regla es una entrada JSON revisable (condiciones, umbral o referencia, gravedad, técnicas ATT&CK, remediación) con casos de prueba positivos y negativos. Las reglas de esta versión:

ReglaGravedadATT&CK
Un paso del workflow codifica o envía secretos
actions-secret-exfil
CríticaT1552.001, T1567
Token usado desde un país nuevo
token-new-country
AltaT1550.001, T1078.004
Clonado masivo de repositorios
git-clone-burst
AltaT1213.003
Repositorio hecho público
repo-made-public
AltaT1567
Repositorio transferido fuera
repo-transferred
AltaT1537
Varios repositorios eliminados
repo-mass-delete
AltaT1485
Nuevo propietario de la organización o empresa
owner-granted
AltaT1098.003
Requisito de doble factor desactivado
two-factor-disabled
AltaT1556
SSO SAML desactivado o reconfigurado
sso-changed
AltaT1556
Lista de IP permitidas desactivada
ip-allowlist-disabled
AltaT1562.007
Streaming del registro de auditoría eliminado o modificado
audit-stream-changed
AltaT1562.008
Protección de rama o ruleset eliminado
branch-protection-removed
AltaT1562
Protección de entorno de despliegue eliminada
environment-protection-removed
AltaT1562
Cuenta activa desde un país nuevo
actor-new-country
MediaT1078.004
Muchos archivos de código descargados
archive-download-burst
MediaT1213.003
Acceso admin concedido a un colaborador
collaborator-admin
MediaT1098
Restricciones de aplicaciones de terceros desactivadas
oauth-restrictions-disabled
MediaT1562
Política de tokens de acceso personal debilitada
pat-policy-weakened
MediaT1562
Protección de rama eludida
branch-protection-override
MediaT1562
Runner autoalojado registrado
self-hosted-runner-registered
MediaT1072
Cadena codificada larga impresa en un log de workflow
actions-encoded-output
MediaT1552.001, T1027
Secret scanning encontró un secreto filtrado
secret-leak-alert
MediaT1552.001
Protección de push de secretos eludida
push-protection-bypass
MediaT1552.001
Clave SSH o de despliegue añadida
deploy-key-added
MediaT1098.004
Token usado desde una dirección IP nueva
token-new-ip
BajaT1550.001
Fork de repositorios privados permitido
private-forking-enabled
BajaT1537
Secreto de Actions creado o modificado
actions-secret-created
Baja
Workflow ejecutado desde una rama nunca vista
workflow-new-branch
BajaT1677
Token fine-grained solicitado o autorizado
fine-grained-token-granted
BajaT1550.001
Aplicación instalada u OAuth aprobada
app-authorized
BajaT1528
Webhook creado
webhook-created
BajaT1567

Cómo se decide el veredicto

  • Comprometida: al menos un hallazgo crítico (por ejemplo, secretos impresos por un workflow), o varios hallazgos distintos de gravedad alta sobre el mismo actor, token o dirección IP.
  • Sospechosa: al menos un hallazgo de gravedad alta o media.
  • Limpia: ningún hallazgo por encima de baja. Solo cubre lo que contienen los registros — revisa las notas de cobertura (visualización de IP, eventos Git, metadatos de token) y el periodo cubierto.

Cuando se filtraron claves cloud

Los secretos de Actions suelen ser credenciales cloud. Cuando aparecen en las evidencias, el siguiente paso es la propia cuenta cloud — continúa con las herramientas hermanas de esta serie:

Limitaciones

  • El registro de auditoría no guarda el contenido de los archivos: un workflow modificado se deduce de las ejecuciones (rama nueva, secretos impresos en el log), no del diff. Revisa tú mismo el historial de .github/workflows.
  • Sin «Display IP addresses», las exportaciones no tienen actor_ip y la ubicación es limitada: las detecciones basadas en IP no pueden activarse.
  • Los eventos Git (clones, fetches, pushes) solo se conservan 7 días y no están en la exportación JSON/CSV de la interfaz web: sin ellos el clonado masivo es invisible.
  • Las reglas son heurísticas con umbrales (10 repositorios clonados en aproximadamente una hora, una referencia de 24 horas para IP y países nuevos): ajústalas a tu organización. Un veredicto limpio no demuestra la ausencia de ataque.
  • La tabla muestra los primeros 100 000 eventos; se analizan todos. No se cubren los registros de seguridad de cuentas personales.

Preguntas frecuentes

¿Se suben mis registros de auditoría a algún sitio?

No. El analizador está escrito en Rust, compilado a WebAssembly, y se ejecuta en un Web Worker de tu navegador; los archivos se leen en flujo desde el disco y se descomprimen localmente. No hay ningún punto de subida y la herramienta funciona sin conexión una vez cargada la página.

¿Cómo sé si robaron un token de GitHub?

Busca el mismo hashed_token usado desde una IP o un país nuevos, ráfagas de git.clone sobre muchos repositorios y actividad del token fuera del horario de su propietario. El registro de auditoría guarda hashed_token, programmatic_access_type y token_scopes en los eventos autenticados con token; esta herramienta crea una referencia por token y señala las ubicaciones nuevas.

¿Cómo encuentro a qué token corresponde un hashed_token?

hashed_token es el SHA-256 del token codificado en base64. Si tienes un token candidato, calcúlalo con: echo -n TOKEN | openssl dgst -sha256 -binary | base64 — y busca hashed_token:"VALOR" en el registro de auditoría. Los propietarios de empresa también pueden exportar el inventario de credenciales, que incluye los valores hashed_token.

¿Por qué no veo eventos git.clone?

Los eventos Git no se incluyen en la exportación JSON/CSV del registro de auditoría de la interfaz web. Obtenlos desde el menú «Export Git Events» de la empresa, la API REST con include=git o include=all, o el streaming del registro de auditoría — y rápido: solo se conservan 7 días.

¿Puede un workflow filtrar secretos aunque GitHub los enmascare?

Sí. GitHub sustituye los valores conocidos de los secretos por *** en los logs, pero un script que los codifica en base64 (dos veces, o invertidos) imprime una cadena sin enmascarar que se decodifica en el secreto. Esta herramienta señala los scripts que pasan secretos o el entorno a codificadores o destinos externos, y las cadenas codificadas largas en la salida.

¿Es una herramienta oficial de GitHub?

No. Es una herramienta independiente, no afiliada ni respaldada por GitHub, Inc. Lee los formatos de exportación documentados del registro de auditoría.

Qué hacer a continuación

Si el veredicto es Sospechosa o Comprometida, empieza por el plan de remediación que genera la herramienta, conserva las exportaciones originales en solo lectura y sigue la documentación oficial de GitHub (en docs.github.com):

Documentación oficial de GitHub, Inc.; este sitio es independiente de ella.

Lo que no guarda el registro de auditoría de GitHub: retención de 180 y 7 días, límites de plan, IP ocultas, sin contenido de archivos ni lecturas de secretos.
Un ataque ficticio a la cadena de suministro de GitHub investigado paso a paso: PAT robado, 38 repos clonados, claves de AWS impresas y protección eliminada.
Claves de AWS, Google Cloud o Azure filtradas desde GitHub Actions o un repo: contén la clave, rastrea su uso en los logs de la nube y sustitúyela por OIDC.

Esta herramienta no está afiliada a GitHub, Inc. ni a Microsoft Corporation, ni cuenta con su respaldo o patrocinio. GitHub y GitHub Actions son marcas comerciales de GitHub, Inc. Los demás nombres son marcas comerciales de sus respectivos propietarios.