Distribuido por PoRrA NeNhUmA. Ecatrom5000 & -=|Ñ¡ñgµë/|/||=-™ +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + UNIX : Um Tutorial de como Hackear + + Por:(Traduzido e melhorado por Luis Carlos Redda) + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ---------------------- 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