------, Senhas| ------' 1. Introducao O reconhecimento de usuarios por seu login e senha eh tambem conhecido por autenticacao. Todos os sistemas hoje em dia exigem autenticacao, e muitas vezes vao mais alem e requerem verificacao do host. Mas vamos nos ater aqui a esse mundo das senhas, encriptacao e meios de quebrar encriptacao, rastrear senhas, etc. Obter senhas de usuarios descuidados e contas padroes (dafaults) era a tecnica mais utilizada por hackers para obter acesso a sistemas operacional caros e raros na epoca. Muitos queriam apenas obter acesso para aprender mais. Nao queriam o dados contidos no sistema, e sim o sistema. O caminho foi desandando e hoje em dia muitos focalizam a obtencao de acesso em sistemas nos quais jah sao peritos, e outros, conhecidos como Crackers, alteram os sistemas que conseguem penetrar ao inves de simplesmente aprender ou assimilar algo util. Eles tem seu papel nesse mundo, que eh destruir para que alguem acorde para a situacao. Nao que eu apoie, sou totalmente contra a destruicao, pois existem meios melhores de alertar as pessoas para o problema. Voltando as senhas, a quase 20 anos esse era o principal metodo de invasao em sistemas, e ainda hoje pode ser utilizado. 2. Contas padroes (default) Muitos sistemas operacionais jah vem de caixa com contas padroes, as vezes com senhas, ou sem, ou senhas faceis. Divesos administradores, ou projetos de administradores, nao observam para este fato e acabam culpando os hackers quando o sistema pelo qual eh responsavel eh invadido. A culpa eh dos administradores quando, na minha opiniao, eles falharam na configuracao do servidor. Deixar contas default eh, em minha opiniao, falha de configuracao e zelo por parte do administrador. Agora falhas de algum aplicativos de rede, como servidores de ftp, sao tambem culpa das empresas que fizeram o programa, mas isso nao isenta o administrador de sua culpa, no entanto. Este tutorial nao tem como objetivo dar senhas prontas pra voce sair tentando por ai ateh conseguir descolar algo nao! Se voce fizer isso, a responsabilidade serah toda sua. As contas padroes soh sao encontradas em sistemas cujos administradores sao totalmente despreocupados com a sua rede, como universidades, escolas, hospitais, etc. Estes sao os melhores lugares para se comecar o hacking. Consiste em voce tentar logins e senhas que sao criados quando o sistema operacional eh instalado. Este metodo era amplamente usado na decada de 80 para invadir os computadores da epoca que ficavam ligado a uma linha, por que na epoca as redes eram pequenas e dispersas. Os VAX, VMS, RSTS, e toda aquela raca de computadores antigos tinham contas default, e ateh hoje sistemas como AIX, Linux, etc, tem tambem. 3. Trashing Esta tecnica tambem era muito utilizada por hackers na decada de 80 e no comeco de 90 tambem. Nao sei como anda a situacao hoje. Este metodo consiste no cara ir lah na empresa e revirar o lixo por papeis que possam conter informacoes sobre os usuarios, e ateh mesmo senhas. Sim, provedoras imprimem senhas e logins em papeis, e jogam no lixo. Tecnica desprezivel, mas fazer oq se o pessoal fazia isso? 4. O queixo (Social Engennering) O Hacker liga pra empresa, diz que eh um funcionario e assim solicita informacoes a empregados da empresa que geralmente nao tem muita instrucao nessa area. Muitas historias contam que dah certo, os empregados ficam com medo de peder o emprego e dao o numero do telefone de acesso, dao senhas, etc. Patetico, mas funciona e o pessoal faz isso. Eu mesmo ligo pra minha provedora, eu apenas falo o meu login e consigo mudar minha senha sem nenhuma outra informacao! Esclarecendo: fiz isso apenas com meu proprio login. 5. Usuarios descuidados Muitas vezes, muitas mesmo, os usuarios de um sistema (entenda-se aqui pelo menos um servidor ligado em rede) usam senhas faceis, anotam em lugares, usam senhas que sao tiradas do proprio ambiente de trabalho, etc. Eu mesmo jah utilizei senhas iguais a marca do computador em que estava :) Certos usuarios deixam suas senhas dentro de suas contas, e assim se voce conseguir acesso a uma destas, tera acesso a outras tambem. Ha o rlogin que se baseia na confianca de 2 maquinas que livra o usuario da inconveniencia de ter que digitar login e senha. Tudo funciona assim: se voce quer logar apartir de sua conta numa maquina em outra conta noutra maquina, mas tah com preguica de toda vez digitar o login e senha. E entao? Ele configura um arquivo chamado .rhosts em cada uma das suas contas (nas extremidades da conexao) com informacoes sobre o host e o login que deve confiar. As 2 extremidades devem ter informacoes uma sobre a outra. Assim, manda-se um rlogin para a outra maquina e vc jah cai na sua conta. Um descuido de muitos usuarios, na minha opiniao. Voce pode assim acesso a outros sistemas e aprender mais. Usuarios descuidadosos tambem incluem senhas faceis: * SENHA = LOGIN * SENHA = Combinacao de maiusculas e minusculas do Login * SENHA = LOGIN seguido de numeros pequenos. * SENHA = LOGIN ao contrario * SENHA = '' (nenhuma senha) * SENHA = nome de mulher (ou de homem, hehe, no caso de gays) * SENHA = nome do computador. * SENHA = Data de Nascimento de alguem. * SENHA = Numero do telefone, da casa, etc. Ha agora um problema.. Tudo bem, existem usuarios com senhas faceis, mas quais logins existem? Existem ferramentas que, por forca bruta, vao testando diversas possibilidades de logins de um dado sistema. Cuidado, existem servidores com firewalls que tentam bloquear ao maximo estas tentativas de forca bruta. Escrevei mais sobre forca bruta noutra oportunidade. Nao irei divulgar aqui as ferramentas para descobrir logins, se voce quiser faca um vc mesmo!! Com certeza voce terah aprendido mais fazendo as ferramentas do que simplesmente lendo textos e pegando ferramentas jah feitas. 6. As senhas no sistema. O sistema com certeza deverah ter um banco de dados com as senhas de todos os seus usuarios. Antigamente, este banco de dados era em plain text, texto comum, sem nenhuma protecao. Depois encriptou-se, mas os usuarios ainda podiam pegar as senhas e tentar desencriptar em casa. Ai criaram o shadow, que escondia dos demais usuarios as senhas. As encriptacoes mais comuns para arquivos /etc/passwd sao DES de 32bits atualmente. DES significa Data Encription Standard, ou Padrao de Encriptacao de Dados. Houve quem dissesse que o DES era inquebravel. Hoje em dia sabemos que o DES eh o tipo de encriptacao mais facil de ser quebrado, utilizando-se um dicionario, que contem diversas palavras que podem ser senhas, ou parecidas com possiveis senhas. Conhecemos o john the password ripper para DOS, LINUX, etc. 6.1 As dificuldades Quebrar uma encriptacao eh dificil devido a quantidade de senhas que podem ser escolhidas e a grande quantidade de possiveis encriptacoes para uma dada senha. Vamos analisar a situacao com mais calma: Suponhamos que os usuarios cuidadosos coloquem 8 caracteres em suas senhas. Cada caractere pode ser uma dentre os seguintes: a..z -> 26 (minusculas) A..Z -> 26 (maiusculas) 0..9 -> 10 (algarismos) !,@,#,$,%,&,*,-,+,_ -> 10 (caracteres estranhos) Somando: 26+26+10+12=52+22=74. 72 elevado a 8: 72^8 > 64^8 = 2^48 Existem aih mais de 2^48 possiveis senhas de 8 caracteres. Podemos fazer um comparativo: 5 caracteres, 6 caracteres, 7 caracteres, 8 caracteres. 2^30 2^36 2^42 2^48 Agora se voce considerar 8 caracteres ou menos, teremos cerca de 2^49 possiveis senhas. Para cada uma, pelo DES, existem mais de 4096 = 2^10 encriptacoes. Multiplicando os dois valores, tempos 2^59 possiveis encriptacoes. Eh meio impraticavel querer quebrar com um dicionario, correto? O que devemos fazer agora? Veja bem, esse valor ai eh um minimo, com certeza o valor real eh bem maior. Mais uma vez nos confiamos nas facilidades das senhas. 6.2 Quebrando As senhas faceis geralmente encaixam num dos seguintes topicos: a) senha composta apenas de numeros. b) senha composta apenas de letras minusculas. c) senha composta apenas de letras maiusculas. d) senha composta apenas de simbolos malucos. e) alguma combinacao simples. No caso a), temos 10^8 possibilidades de senhas com 8 caracteres e 2*(10^8) possiveis senhas com ateh 8 caracteres. Isso eh um numero relativamente baixo para com o anterior. E quase senha existem usuarios cuja senha eh composta apenas de algarismos decimais. Eh o caso recomendado se vc dispuser das senhas encriptadas de muitos usuarios. Para mostrar a facilidade dessas senhas, fiz uma ferramenta, o Password Cracker, versao 0.1, ainda estah no comeco, mais pretendo melhorar essa ferramenta. Aqui vai o codigo em C: --cut--pcrack.c-- /* Password Cracker by Dimitri Vashnov - Maio de 2000 -------------------------------------------------- Quebra de senhas numericas! versao 0.1 -------------------------------------------------- Este programa eh para fins educativos somente. Qualquer uso dele para outros fins eh de sua inteira responsabilidade. -------------------------------------------------- Unsekurity Team */ #define _XOPEN_SOURCE #include #include #include #include #include /* Compilar gcc pcrack.c -o pcrack -lcrypt Linha de comando: ./pcrack onde: eh a senha encriptada via DES */ /* Funcao para desencriptar senhas numericas apenas */ char *desencripta(char *senhaencriptada,int faixa) { char salt[2]; char *encriptado; char *encriptando; int controle = 1; unsigned long int tentativa, inicio, final; if(faixa == 1) { inicio = 0; final = 100000; } else if(faixa == 2) { inicio = 100000; final = 1000000; } else if(faixa == 3) { inicio = 1000000; final = 10000000; } else if(faixa == 4) { inicio = 10000000; final = 100000000; } else { inicio = 0; final = 100000000; } salt[0] = senhaencriptada[0]; salt[1] = senhaencriptada[1]; for(tentativa = inicio;controle && tentativa\n",argv[0]); exit(1); } printf("Password Cracker by Dimitri Vashnov\n"); printf("Desencriptando %s ..\n",argv[1]); argv2 = 0; resultado = desencripta(argv[1],argv2); exit(0); } --cut--end-of-pcrack.c- Agora voce quer testar a ferramenta acima, correto? Vamos encriptar uma senha aqui com a ferramenta pcrypt tb feita por mim: --cut--pcrypt.c-- /* Password Encrypter by Dimitri Vashnov - Maio de 2000 -------------------------------------------------- Encriptacao de senhas ! versao 0.1 -------------------------------------------------- Este programa eh para fins educativos somente. Qualquer uso dele para outros fins eh de sua inteira responsabilidade. -------------------------------------------------- Unsekurity Team */ #define _XOPEN_SOURCE #include #include #include #include /* Compilar gcc pcrypt.c -o pcrypt -lcrypt Linha de comando: ./pcrypt onde: eh a senha encriptada via DES */ /* Funcao main() */ main(int argc, char **argv) { char *resultado; if(argc<3) { printf("Uso: %s \n",argv[0]); } resultado = crypt(argv[1],argv[2]); printf("Password Encrypter by Dimitri Vashnov\n"); printf("A senha encriptada eh %s\n",resultado); exit(0); } --cut-end-of-pcrypt.c- Agora com o pcrypt encripte uma senha e teste com o pcrack. Quanto maior a senha, mais dificil fica quebrar, mas nao implica ser impossivel. O Pcrack ainda pode ser melhorado para aceitar um arquivo com diversas senhas encriptadas de tal forma que se pelo menos uma delas for composta apenas de numeros, entao a mesma serah quebrada. Com este metodo, quando mais senhas voce dispuser, mais facil fica de quebrar. No caso b), temos 26^8 possibilidades de senhas com 8 caracteres e 2*(26^8) possiveis senhas com ateh 8 caracteres. Voce pode querer comecar com as senhas de 6 caracteres, e caso nao se verifique, testa-se as de 7 e 8 caracteres. O caso c) tambem eh igual ao b), embora menos frequente. O caso d) eh o mais facil de ser quebrado, devido a pequena quantidade de simbolos. Nesse caso recaimos no caso a). Muitos passwords crackers que usam um dicionario e combinacoes das palavras deste dicionario nao vao conseguir nunca quebrar uma senha assim (ou pelo menos fica dificil). Nossa ferramenta conseguiria. O caso e) consiste em misturar minusculos e numeros, maiusculos e numeros, minusculos e maiusculos, e simbolos malucos com o resto. A primeira vista pode parecer mais dificil, mas analisando: *) minusculos + numeros ou maiusculas + numeros Colocar numeros numa senha a enfraquece, pois existem apenas 10 digitos contra 26 letras. Entao nao se deve descartar esta hipotese. *) simbolos malucos + qlq coisa. Colocar simbolos malucos tb enfraquece uma senha, embora fortaleca para algumas ferramentas de forca bruta estupidas. No nosso caso, enfraquece, pois existem menos simbolos do que letras (ou mesmo numeros, nao tenho certeza). *) minusculos + maiusculos Esta mistura nao enfraquece nem fortalece a senha, apenas abre um pouco a variedade de senhas possiveis. Podemos considerar que uma ou duas letras da senha sejam maiusculas, ou que as maiusculas e minusculas se alternem. 7. Pegando o /etc/passwd Muitas vezes usa-se bugs em cgis para se pegar arquivos de senhas, ou bugs em programas de autenticacao remota como o NIS. Isto jah foge ao assunto deste texto, mas iremos falar mais sobre esse assunto noutra oportunidade. 8. Finalizando Caro amigo, gostaria de finalizar o texto com o compromisso de escrever um bem melhor, abrangendo mais tipos de encriptacao, e tambem disponibilizando uma ferramenta bem melhor que as que pus aqui. E fica aqui o recado: cuidado com suas senhas! Na minha opiniao nao acho que o uso destas ferramentas sejam ilegais, deveria ser o dever de todo admin pegar seu passwd e passar algum password cracker para ver as senhas faceis do sistema e assim alertar o usuario. ---------------, Dimitri Vashnov| ---------------' =============================== | http://www.unlockcrew.rg3.net | =============================== =/=/=/=/=/= >>> EOF <<< =\=\=\=\=\=