Generación de RUN chilenos válidos para pentesting (diccionario fuerza bruta y códigos PIN)

El padrón electoral que se publica “legalmente” en Chile con el nombre, dirección y RUN de todos los chilenos, es mal utilizado, todos sabemos que sí, incluso se han publicado “tutoriales” de programación para extraer (parsing), procesar y almacenar esos datos, mientras varios sitios web a día de hoy usufructan ilegalmente de dicha información, con ayuda de Google (Google Adsense y otros).

Por otro lado, cuando realizamos pruebas de seguridad, no es ético utilizar la data del Servel, así que aproveché una oportunidad que se me dio para escribir un script que permitiera generar esos datos al azar y en grandes cantidades, y luego intentar reproducir un ataque de fuerza bruta en mis labores de pentesting.

Me fui a Google a buscar información sobre el tema, y luego de un rato, di con este script que ya me tenía la pega bastante adelantada:

El script, gentilmente, toma el RUN que se le proporcione y genera un código verificador matemáticamente auténtico. Bacán. Me fui entonces a modificarlo para incluir un ciclo que permitiera generar números de RUN correlativamente, controlando y manteniendo las cifras anteriores al primer punto separatorio (bloque de “20” millones):

Output:

Ya con esto listo, lo modifico un poco más para sólo procesar el RUN, y guardarlos en un archivo .txt, y poder usarlo en mis pruebas de seguridad.

Conclusiones rápidas…

Es así, entonces, como podemos intentar reproducir un ataque de fuerza bruta que requiera de RUN válidos y aleatorios, obtenidos de forma ética. El script solamente genera el bloque de “20” millones de todos los RUN chilenos, pero basta con añadir otro ciclo para iterar esos bloques y obtener miles o millones de números RUN válidos, e incluso generar datos adicionales, como por ejemplo, posibles códigos PIN, extrayendo los primeros 4 o últimos digitos de cada numeración (práctica ampliamente extendida para utilizar esos digitos como contraseñas por defecto):

El script para generar estos diccionarios de números RUN chilenos válidos para pruebas éticas de seguridad:

  • https://github.com/JoshuaProvoste/Generador-de-RUN-chilenos/
  • Pueden sacar el import time y eliminar la línea 56 si quieren que el script escriba los RUN de sola vez, sin controlar el tiempo
  • Y para generar otros bloques de millones de RUN, basta con cambiar el 20 y listo
  • No se requiere la data del Servel para penetration testing
  • Aún sigue utilizándose la práctica de contraseñas por defecto como código PIN, caracteres del RUN
  • El RUN, como activo digital parte de nuestros “datos personales”, es cuestionable