Cando a alguén lle filtran o contrasinal, imaxínao como un accidente puntual: un servizo tivo un mal día, saíu na prensa, cambiáchelo e acabouse. Non se acabou. O día da filtración non é o final de nada: é o primeiro día dunha cadea de montaxe que vai durar anos, e na que ti non aparecerás nunca polo teu nome. Paga a pena contala enteira, porque case ninguén a ve.
Paso un: alguén saca a base de datos
O primeiro non ten nada de espectacular. Alguén atopa unha inxección SQL, unha copia de seguridade aberta, un panel de administración coas credenciais por defecto. E lévase unha táboa.
Esa táboa, con sorte, contén o teu correo e un hash do teu contrasinal. Con menos sorte, contén o teu correo e o teu contrasinal. En texto. Tal cal o escribiches.
2009 trinta e dous millóns de contrasinais en texto plano
En decembro de 2009, unha empresa de widgets para redes sociais chamada RockYou sufriu unha inxección SQL. Levaron uns 32 millóns de contrasinais, e non había hash que romper: gardábaos en texto plano.
Foi un desastre para RockYou e un agasallo para todos os demais. Por primeira vez existía un corpus enorme de contrasinais reais, escritos por xente que non sabía que alguén os ía ler. Non un estudo: a cousa en si.
O ficheiro converteuse en rockyou.txt, que segue sendo o dicionario de
referencia co que se proban ataques. O seu valor non é que conteña o teu
contrasinal: é que contén como escribe contrasinais a xente. Un nome e un ano,
a palabra e o 123, o ! ao final. RockYou non filtrou 32 millóns de segredos.
Filtrou o patrón. E o patrón non caduca.
Paso dous: rómpese o que se poida, sen ningunha présa
Aquí falla a intuición. Cando alguén intenta adiviñar o teu contrasinal na pantalla de acceso dun servizo, o servizo córtalle: tres intentos, un CAPTCHA, un bloqueo. Contra un servidor, adiviñar é lento e ruidoso.
Contra un ficheiro de hashes que xa está no teu disco non hai servidor. Non hai ninguén do outro lado que diga que non. Próbase en local, con GPU, sen límite de intentos e con todo o tempo do mundo. Se o servizo hasheou mal —algoritmo rápido, sen sal— a diferenza co texto plano é de comodidade, non de seguridade.
E non se proba ao chou: primeiro rockyou.txt, e logo regras derivadas del. Troca
o a polo @. Engade un ano ao final. Cada truco que a ti che pareceu enxeñoso
leva máis dunha década escrito nun ficheiro de configuración.
De aí sae unha parte do envorcado convertida en contrasinais lexibles. O resto —o longo, o aleatorio, o que non está en ningún dicionario— segue sendo ruído. É a liña que traza o comprobador: non te rifa, dinche de que lado caes.
Paso tres: crúzase, e aí é onde vales cartos
Un envorcado solto vale pouco. O valioso é a agregación: coller dez
filtracións de sitios distintos, cruzalas polo correo e quedar coas parellas
correo:contrasinal xa en claro. Ao resultado chámaselle combolist, e xa non é a
base de datos de ninguén. É unha lista de persoas.
2013 o inventario sae á luz
En decembro de 2013, Troy Hunt puxo en marcha Have I Been Pwned: unha base de datos pública de correos aparecidos en filtracións, para que calquera puidese preguntar se estaba dentro. A idea de fondo é sinxela e incómoda: se os atacantes xa teñen o inventario, negarllo ás vítimas non protexe a ninguén. Anos despois chegou Pwned Passwords, que fai o mesmo cos contrasinais e permite consultalos sen envialos: mándase un fragmento do hash e o servidor devolve un lote de candidatos, sen saber cal era o teu.
2017 o NIST deixa de pedir símbolos e empeza a pedir listas
Cando o NIST publicou o SP 800-63B, tirou pola borda case toda a ortodoxia dos formularios e puxo no seu lugar un requisito que poucos esperaban: ao fixar un contrasinal, o sistema debe comparalo cunha lista de valores comprometidos coñecidos e rexeitalo se aparece.
É un cambio de teoría, non de detalle. A pregunta xa non é se o teu contrasinal parece forte, senón se xa está publicado. Por iso o xerador fai o único razoable: sacalo dun sitio onde non estivo nunca.
2019 a filtración que xa era un refrito doutras
En xaneiro de 2019 circulou un paquete que se fixo famoso como Collection #1. Hunt analizouno e contou o que había dentro: uns 773 millóns de enderezos de correo únicos e uns 21 millóns de contrasinais únicos en texto plano, agregados de miles de fontes.
O importante non foi o tamaño. Foi de onde saía: en boa parte era o refrito de filtracións anteriores, xa rotas e postas en formato cómodo —aínda que Hunt atopou tamén material que ata entón non tiña fichado—. O produto non era a intrusión. Era o inventario. E un inventario así só ten un uso.
Credential stuffing: non te atacan a ti
A ti non te ataca ninguén. Esa é a parte que custa interiorizar.
Ninguén se senta a pensar na túa conta. Alguén colle unha combolist de centos de millóns de liñas, métea nunha ferramenta que as proba contra o formulario de acceso dun banco ou dun correo, reparte os intentos entre moitos enderezos IP para non disparar os bloqueos, e agarda. A inmensa maioría fallan. Tanto ten: custan case nada.
Iso é o credential stuffing, e non é adiviñar. É comprobar. O contrasinal xa o teñen; o único que descobren é onde máis o puxeches.
O teu contrasinal daquel foro non era importante. O foro tampouco. O importante é que a mesma cadea de caracteres abre o teu correo, e o teu correo abre todo o demais vía «esquecín o contrasinal». O pecado orixinal non é que fose feble: é que era o mesmo. Un contrasinal de trinta caracteres, aleatorio e perfecto, reutilizado en dous sitios, é tan bo como o peor dos dous. E ti non controlas como hashea o peor dos dous.
Que se deduce de todo isto
- Cambiar o contrasinal filtrado non abonda se o repetiches. O urxente non é o sitio que saíu nas noticias. Son os outros.
- Un contrasinal por sitio, e que che dea igual esquecelo. Se podes lembrar todos os teus contrasinais, tes moi poucos ou son moi malos.
- O segundo factor rompe a cadea. O credential stuffing proba
correo:contrasinal. Se iso non abonda para entrar, o inventario deixa de valer.
O teu contrasinal filtrado non está en mans dun inimigo. Está nunha fila dun ficheiro, entre outros centos de millóns, agardando a que a alguén lle saia a conta probalo nun sitio máis. E o único que decide se iso funciona decidíchelo ti hai anos, cando escribiches a mesma palabra por segunda vez.
Fontes: a filtración de RockYou (decembro de 2009) e o uso posterior de
rockyou.txt como dicionario de ataque · Have I Been Pwned e Pwned Passwords, de
Troy Hunt · NIST SP 800-63B, sobre a comprobación de contrasinais contra listas de
valores comprometidos · a análise de Troy Hunt sobre Collection #1 (xaneiro de 2019)
e as cifras que publicou · definición de credential stuffing de OWASP.