TEMARIO
Auditoría de contraseñas en Oracle Database (1 de 4). Introducción y primeros pasos
Auditoría de contraseñas en Oracle Database (2 de 4). Adivinación de Oracle SID (System ID)
Auditoría de contraseñas en Oracle Database (3 de 4). Fuerza bruta sobre claves Oracle
Auditoría de contraseñas en Oracle Database (4 de 4). Ataques de diccionario sobre claves Oracle
Finalizamos la serie hablando de ataques de diccionario en el mundo de las contraseñas de Oracle. En el tercer capítulo de la entrega comentamos cómo se obtenían las distintas combinaciones de usuario y hash de clave en Oracle. Recordad que propusimos algunos ejemplos reales en una instalación XE, disponibles en http://www.sahw.com/images/oracle_audit/usuarios.txt.
Los ataques de diccionario son tremendamente fáciles de ejecutar cuando se dispone de los hashes, y dependerá de la calidad de nuestro diccionario, así como de la complejidad de la clave a analizar, el éxito de la prueba. Como en cualquier otro ataque de diccionario, se trata de obtener el hash de una palabra conocida (presente en el diccionario) y verificar si es igual al del usuario cuya contraseña estamos analizando. En caso de que coincidan, la clave del usuario será la palabra que estemos empleando en el diccionario.
Ejemplos
Una de las herramientas más conocidas, aunque no es la única, es checkpwd, que podéis obtener en http://www.red-database-security.com/software/checkpwd.html. Su empleo es extremadamente sencillo, y puede ejecutarse en Windows, Linux y MacOS. Cuenta además con un binario que realizará la verificación sin mostrar la contraseña, con lo que se puede preservar el conocimiento de la misma. Adicionalmente permite al auditor ejecutar la verificación tanto offline como directamente contra la base de datos, método con el cual no haría falta obtener la relación de hashes.
En el siguiente ejemplo, conectamos a la base de datos y hacemos la verificación. El operador -quiet hará que solo se muestren las contraseñas que sea posible vencer por ataque de diccionario, no apareciendo las claves que resitan el ataque:
Los métodos de ataque en línea no están recomendados, salvo que se tenga permiso expreso para ello. Por tanto, si tenéis que analizar offline un fichero con cientos o incluso miles de usuarios, emplear la utilidad se vuelve tedioso, ya que para cada caso, hay que introducir el usuario y el hash. Para facilitaros la vida, he escrito este sencillo script Perl con el que sólo hay que procurar tener un fichero llamado usersandpasswordhashes.txt en el que en cada linea, separado por al menos un espacio, haya una relación de usuario y hash. Los usuarios de sistemas no Windows, siéntanse libres de modificar las llamadas al sistema.
#!/usr/bin/perl -w
# chechpwd.exe automation
my $input="usersandpasswordhashes.txt";
my $output="checkpwd_audit_results.txt";
open (INPUT,"< $input") || die "ERROR: Cannot open entry file $input\n";
while ($line=){
my @string = split (" ", $line);
my $userandhash = $string[0].":".$string[1];
print "Analyzing username $string[0]\n\n";
system("ECHO ===================== >> $output");
system("ECHO $string[0] >> $output");
system("ECHO ===================== >> $output");
system("checkpwd.exe $userandhash password_file.txt >> $output");
system("ECHO. >> $output");
}
close INPUT;
Tenéis un ejemplo del fichero que produce el script en http://www.sahw.com/images/oracle_audit/checkpwd_audit_results.txt
Pues aquí acaba nuestro recorrido por la auditoría de contraseñas en Oracle Database. Espero que estos contenidos os sean de utilidad y os ayuden a mejorar la calidad de las claves presentes en vuestros sistemas.
Un saludo,
Que magnífica serie de artículos. Enhorabuena