Ataque de máscaras - Operación integral

Documento de referencia del proyecto Time2Crack
Recipientes: desarrolladores, investigadores de seguridad, usuarios avanzados

Índice

  • Sinopsis
  • Antecedentes históricos y académicos
  • Fundaciones conceptuales: Por qué las máscaras trabajan
  • Arquitectura de un ataque moderno de máscara
  • Mask Syntax (Hashcat/JtR)
  • Reducción del espacio clave: principio matemático
  • Ejecución en Time2Crack: addMaskAttacks()
  • Detección de fechas y reducción estructural
  • Calibración de alta fidelidad
  • Criterios y órdenes de magnitud
  • Ejemplos concretos de enmascaramiento
  • Comparación con fuerza bruta, híbrido y PCFG
  • Limitaciones de ataque de máscaras
  • Defensas eficaces
  • Referencias

  • 1. Sinopsis

    El ataque de máscara consiste en probar contraseñas que siguen un forma de posición precisa en lugar de todas las combinaciones posibles.

    Ejemplo: en lugar de probar todos los 8 caracteres del espacio de 95 símbolos (95^8), el atacante apunta un motivo probable como:

  • 5 minúsculas
  • 2 dígitos.
  • O la máscara Hashcat ?u?l?l?l?l?l?d?d.

    La idea central: las contraseñas humanas no son aleatorias.Thomas42, Marine2024, Bonjour!1La máscara explota precisamente esta regularidad.


    2. Antecedentes históricos y académicos

    2.1 Origen

    La lógica de las máscaras es vieja: desde las primeras herramientas de grieta, los operadores observaron que las políticas de contraseña producen formatos repetitivos.

    La industrialización viene con:

  • John the Ripper (modos y patrones incrementales),
  • Hashcat (modos de máscara GPU optimizados),
  • filtraciones masivas (RockYou, LinkedIn, Adobe), que han identificado las estructuras más frecuentes.
  • 2.2 Validación empírica

    La literatura ofensiva/defensiva converge: una fracción muy grande de contraseñas reales siguen patrones simples (palabra + dígitos, inicial de capital + palabra + año, etc.).

    Wheeler (USENIX 2016), y las obras probabilísticas (Markov/PCFG/OMEN), muestran que la estructura es tan decisiva como la longitud bruta.


    3. Fundaciones conceptuales: Por qué las máscaras trabajan

    3.1 Los humanos generan estructuras, no por casualidad

    La mayoría de los usuarios construyen secretos de memoria:

  • palabra conocida,
  • variación de rotura,
  • sufijo digital,
  • símbolo final opcional.
  • Esta estrategia es previsible y altamente compresible en máscaras.

    3.2 Las políticas de complejidad aumentan la previsibilidad

    Una regla del tipo "1 capital, 1 dígito, 1 símbolo" no impone aleatoriedad; a menudo empuja hacia patrones estables:

  • Mot123!
  • Prénom2024
  • Ville75#
  • La máscara es la herramienta ideal para navegar por estos diagramas a un costo muy bajo.

    3.3 Reducción del espacio clave eficaz

    Para una contraseña de longitud 8 :

  • Total de la fuerza bruta95^8) 6.63e15 candidatos,
  • máscara ?u?l?l?l?l?d?d = 26 26^4 10^2 = 1.19e9 candidatos.
  • La reducción es varios millones de veces, mientras que cubre un patrón humano común.


    4. Arquitectura de un ataque moderno de máscaras

    Tipo de tubería:

    1) Profilage de la cible / du corpus
       -> structures fréquentes (L8D2, L6D4, U1L5D2, etc.)
    

    2) Generación de máscaras candidatas - Fue ordenado por probabilidad

    3) Ejecución de GPU (Hashcat -a 3) - Pruebas paralelas de alta velocidad

    4) Ajuste adaptativo - Mantenemos las máscaras altas, difundimos a los débiles

    El éxito depende menos de la cantidad bruta de máscaras que de su priorización.


    5. Mask Syntax (Hashcat/JtR)

    5.1 Clases básicas

  • ?l : diminutoa-z)
  • ?u : capitales (A-Z)
  • ?d : número (0-9)
  • ?s : símbolo imprimible
  • ?a : alfabeto mixto estándar (a menudo ?l?u?d?s)
  • 5.2 Ejemplos

  • ?u?l?l?l?l?d?d - No. Thomas42
  • ?l?l?l?l?l?l?d?d?d?d - No. summer2024
  • ?u?l?l?l?l?l?l?s?d - No. Marine!7
  • 5.3. Máscaras personalizadas

    Hashcat permite conjuntos de caracteres personalizados (-1, -2, etc.), por ejemplo:

  • -1 ?l?uéèàç para los idiomas latinos,
  • -2 0123456789!@# para sufijos probables,
  • entonces máscara combinada ?1?1?1?1?2?2.

  • 6. Reducción del espacio clave: principio matemático

    O una máscara de longitud n con cardenalidades posicionales c1, c2, ..., cn.

    El espacio clave enmascarado es:

    Kmáscara = i)

    Tiempo (modelo presupuestario):

    T = Kmask / rate

    En un modelo ingenuo y desenmascarado:

    Kfull = cs^n

    La ganancia de máscara es:

    Gain = Kfull / K_mask

    Cuanto más fuertes sean las limitaciones posicionales (por ejemplo, dígitos al final, capital en la cabeza), mayor será la ganancia.


    7. Aplicación en Time2Crack: addMaskAttacks()

    Time2Crack implementa la lógica máscara en app.js :

  • función: addMaskAttacks(rows, full, len, cs, kbPat, seq, weak, dt, pw)
  • Categoría: cat: "mask"
  • visualización: aMask / nota nMaskPositional, nKBDetected, nSeqDetected, nDateDetected
  • 7.1. Cálculo del espacio clave enmascarado

    El código cuenta las ocurrencias reales de cada tipo de caracteres en la contraseña:

  • mayúsculas,
  • diminuto,
  • números,
  • símbolos.
  • Entonces construido:

    maskKS = 26^U 26 10^D 33^S (aproximación mediante constantes internas)

    Esto modela un atacante que conoce la estructura por tipo, no sólo la longitud total.

    7.2 Casos especiales

  • weak : estimación vía weakGuessTime(a.rate) (mínimo rango dependiente del flujo)
  • dt (fecha detectada): reducción mediante detectDateAndReduce(),
  • de lo contrario: llave posicional estándar.
  • El tiempo se calcula entonces budgetTime(effectiveMaskGuesses, a.rate) (con factor de rango de máscara y procesamiento Unicode/date).


    8. Detección de fechas y reducción estructural

    Time2Crack incluye un procesamiento específico de fecha (hasDate, detectDateAndReduce)

  • detección del año 1600-2099,
  • detección de patrones de fecha (DD/MM/YYYY, variantes del separador),
  • sustitución de un espacio enorme (10^dateChars) por un conjunto plausible (~200 années o ~36500 dates).
  • Consequence: una contraseña tipo Mot2024! Esto es coherente con la práctica ofensiva.


    9. Calibración de alta fidelidad

    Cuando el modo de fidelidad alta es activo, la categoría de máscara recibe un multiplicador adicional en applyHighFidelityCalibration() :

  • si patrón de teclado / secuencia / fecha: factor de reducción adicional,
  • De lo contrario: estimación conservadora.
  • Intuición: Estas señales aumentan la probabilidad de un ranking temprano en la línea de máscaras probadas.


    10. Criterios y órdenes de magnitud

    Órdenes de magnitud (profile 12x RTX 4090):

    AlgoritmTasa de flujo aproximadaHora de 1er 9 candidatos -...-...-... MD5~2.03 TH/s~0.0005 s SHA-1~610 GH/s~0.0016 s SHA-256~272 GH/s~0.0037 s NTLM~3.46 TH/s~0.0003 s bcrypt (cost 10)~69 kH/s~4.0 h Argon2id~800 H/s~14.5 días

    Leyendo:

  • rápido, la máscara es abrumadora,
  • en la precipitación lenta, sigue siendo muy peligroso en patrones frecuentes pero el costo se vuelve concreto.

  • 11. Ejemplos concretos de enmascaramiento

    11.1 Thomas42

  • máscara relevante: ?u?l?l?l?l?l?d?d
  • Keyspace: 26 26^4 10^2 (orden de magnitud ~1e9)
  • en NTLM/MD5: casi instantánea.
  • 11.2 summer2024

  • máscara relevante: ?l?l?l?l?l?l?d?d?d?d
  • si año detectado, reducción aguda (años plausibles) 10^4).
  • 11.3 Marine!7

  • máscara relevante: ?u?l?l?l?l?l?s?d
  • un patrón muy común en las políticas corporativas.

  • 12. Comparación con la fuerza bruta, híbrido y PCFG

    AtaquePunto fuertePunto bajo -...-...-... Fuerza brutaCobertura ampliacosto exponencial MáscaraExcelente eficiencia en las estructuras humanasSensible a mala elección de máscara Híbridas/reglasMuy bueno en palabras + mutacionesDepende de una palabra básica PCFGCaptura de gramática globalMás costoso para entrenar/operar

    En la práctica, los operadores a menudo combinan máscara + reglas + probabilística.


    13. Limitaciones del ataque de máscaras

  • Dependencia en la máscara derecha : un mal juego de máscaras pierde rápidamente en rendimiento.
  • Baja generalización de la estructura exterior : en una contraseña realmente aleatoria, la ventaja desaparece.
  • Explosión combinada si máscaras demasiado anchas : ?a Repetida a largo plazo regresa cerca de la fuerza bruta.
  • Cobertura parcial del idioma : Unicode/diacritic alphabets requieren juegos personalizados.

  • 14. Defensas eficaces

    14.1

  • use un administrador de contraseñas,
  • generar contraseñas aleatorias largas (= 16),
  • evitar completamente patrones Mot+année, Prénom+chiffres, Majuscule+mot+symbole.
  • 14.2. Colateral del sistema

  • almacenamiento con Argon2id (o bcrypt de alto coste),
  • MFA sistemática,
  • bloqueando contraseñas comprometidas,
  • telemetría de conexión y detección de anomalías.
  • 14.3 Política

  • control de la duración y el compromiso prioritarios,
  • reducir las reglas de la complejidad puramente cosmética que favorecen patrones predecibles.

  • 15. Referencias bibliográficas

    Fuentes académicas

    Wheeler, D.L. (2016). zxcvbn: Estimación de la fuerza de contraseña de bajo costo. 25o Simposio de Seguridad USENIX. Weir, M., Aggarwal, S., de Medeiros, B., " Glodek, B. (2009). Rastreo de contraseña usando gramáticas libres de contextos probabilísticos. Simposio IEEE sobre Seguridad y Privacidad. Dürmuth, M., Angelstorf, F., Horsch, J., et al. (2015). OMEN: Contraseña más rápida Adivina usando un Enumerador de Markov ordenado. ESSoS. Ur, B., Kelley, P. G., Komanduri, S., et al. (2012). ¿Cómo se asegura su contraseña? Seguridad USENIX.

    Fuentes industriales y técnicas

    Hashcat Wiki.
    Ataque de máscaras (-a 3). https://hashcat.net/wiki/ Hashcat (benchmarks). https://hashcat.net/hashcat/ Hive Systems (Password Table). https://www.hivesystems.io/password-table

    Fuentes web citadas en la aplicación Time2Crack

    USENIX Security 2016 (Wheeler). https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/wheeler
    Documento generado para el Proyecto Time2Crack — Versión 1.0 — 2026-04-01 Código fuente: app.js (funciones addMaskAttacks, detectDateAndReduce, hasDate, budgetTime, applyHighFidelityCalibration)*