Alerta de seguridad
Nivel de peligrosidad: Alto
Descripción
Actores de amenazas están usando credenciales de usuarios filtradas en internet para acceder a sistemas informáticos, estas acciones representan un riesgo alto para la seguridad de la información de las instituciones, que podría impactar en la integridad y confidencialidad de la información, y la disponibilidad de los servicios públicos. Estas filtraciones proceden, entre otras fuentes, de:
- Keyloggers y malware de acceso remoto (RATs): software malicioso que captura teclas, pantallazos, credenciales de formularios y envía esa información a actores maliciosos.
- Bases de datos de aplicaciones comprometidas: brechas en aplicaciones que exponen tablas de usuarios y que luego son publicadas o vendidas en foros.
- Phishing y suplantación de identidad: credenciales entregadas voluntariamente por usuarios engañados.
- Reutilización de contraseñas y credential stuffing: cuando una contraseña comprometida en un servicio se prueba automáticamente en otros servicios.
Mitigación
Acciones inmediatas y de corto plazo:
- Verificación inmediata de credenciales para identificar si aparecen en filtraciones de usuarios y contraseñas.
- Si la contraseña aparece en filtraciones:
- Cambia de inmediato la contraseña
- Usa una contraseña robusta y única de al menos 12 caracteres.
- Verifica si usaste esa misma contraseña en otros accesos, si es así debes cambiarlas por otras que sean únicas y robustas
- Revisa la actividad de la cuenta, registros de inicios de sesión, acciones, todo registro que aporte en la correlación de indicadores de acceso.
- Ejecuta un escaneo completo con un software antivirus/antimalware en las computadoras que usas, programas como keyloggers podrían haber capturado tu contraseña.
- Revocar sesiones activas y tokens.
- Elimina las contraseñas guardadas en el navegador, en su lugar usa un gestor de contraseñas confiable.
- Habilitar MFA/2FA en los sistemas y servicios con información sensible.
- Rotación de credenciales y claves: rotar claves de servicio, certificados o credenciales almacenadas en repositorios.
- Restringir accesos administrativos, usar roles con just-in-time y aprobación.
- Revisar parches de seguridad, configuración de backups y repositorios, y de existir eliminar credenciales embebidas en código o almacenadas en el navegador.
- Monitorear accesos a sistemas sensibles.
Métodos de verificación de credenciales filtradas
1. Comprobación mediante correo electrónico
(Opción 1) Ingrese a: Have I Been Pwned
En la página principal, ingrese la dirección de correo institucional en el campo “Email address” y presione "Check"
Si la verificación muestra un mensaje en color rojo indicando la cantidad de veces que aparece la dirección de correo en filtraciones; debe proceder a cambiar la contraseña y revisar accesos.
(Opción 2) Ingrese a: BreachDirectory
Introducir la dirección de correo a verificar.
Si aparecen resultados, revise las fuentes y fechas. BreachDirectory colecciona entradas públicas; su exactitud varía. Trate los hallazgos como indicio para cambiar contraseñas y auditar accesos.
2. Comprobación mediante método seguro de prueba de contraseñas
El método aplicado a continuación para la comprobación de contraseñas es seguro porque nunca transmite la contraseña en texto claro ni su hash completo al servicio de verificación; únicamente se envía un prefijo, los primeros 5 caracteres del SHA-1, de modo que el servicio recibe una porción ambigua que coincide con muchas posibles contraseñas, impidiendo que pueda reconstruir o identificar de forma directa la contraseña original.
El resto del trabajo de comparación se realiza localmente (se calcula el hash completo y se busca el sufijo entre las respuestas devueltas), lo que minimiza la exposición de secretos y reduce el riesgo de interceptación o almacenamiento indebido en el provedor. Además, como el prefijo corresponde a miles o decenas de miles de posibles sufijos, la correlación inversa es impráctica; no obstante, no elimina por completo riesgos teóricos como ataques dirigidos contra hashes débiles o manipulación del servicio, por lo que debe usarse junto con prácticas seguras adicionales: calcular el hash en un entorno confiable, validar la integridad del servicio y complementar con MFA y políticas de contraseñas.
Desde Windows Powershell:
$pw = Read-Host -AsSecureString "Contraseña a probar"
# convertir SecureString a texto (procedimiento sensible; hágalo en máquina segura)
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($pw)
$plain = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
$sha1 = ([System.BitConverter]::ToString((New-Object -TypeName System.Security.Cryptography.SHA1Managed).ComputeHash([System.Text.Encoding]::UTF8.GetBytes($plain)))).Replace('-','').ToUpper()
$prefix = $sha1.Substring(0,5)
$suffix = $sha1.Substring(5)
$response = Invoke-RestMethod -Uri "https://api.pwnedpasswords.com/range/$prefix"
if ($response -match $suffix) { Write-Host "¡ATENCIÓN! la contraseña aparece en filtraciones." } else { Write-Host "No encontrada en la base de pwned-passwords." }
Si la contraseña está filtrada, tendremos:
Si la contraseña no está filtrada, tendremos:
Desde Linux Bash:
# Ejemplo demostrativo: comprobar la contraseña "PassMasrobusta213#@$#$@%$#%^%$^%@#$#@"
HASH=$(printf "%s" "PassMasrobusta213#@$#$@%$#%^%$^%@#$#@" | sha1sum | awk '{print tolower($1)}')
PREFIX=${HASH:0:5}
SUFFIX=${HASH:5}
curl -sS "https://api.pwnedpasswords.com/range/$PREFIX" | tr -d '\r' | grep -i "^$SUFFIX:" || echo "No aparece"
Si la contraseña esta en bases de credenciales filtradas, tendremos como resultado la exposición en 24 listas:
Si la contraseña no esta en bases de credenciales tendremos el mensaje "No aparece":
Referencias
- Have I Been Pwned
- BreachDirectory
- NIST SP 800-63B Pautas y mejores prácticas para contraseñas