____________________________________________________________
Guia Para Hacking (essencialmente) Inofensivo

Série para Principiantes #7

Os Ficheiros Exploit
____________________________________________________________

Por keydet89@yahoo.com e Carolyn Meinel

Quantas vezes já leste newsgroups ou listas de email hackers e viste mensagens que suplicavam "ensina-me a hackar", ou perguntavam "como é que posso hackar isto"? Muitas vezes parece que a pessoa que faz a pergunta não compreende mesmo o básico das vulnerabilidades e os seus exploits. O objectivo deste Guia é explicar o que são vulnerabilidades e exploits, e como se relacionam com a segurança informática.

Vamos começar com um exemplo. Supõe que estás a tentar vender algo pelo telefone. Então começas por ligar para números de telefone, e continuas a ligar até que alguém atenda, não uma máquina de atendimento automático, mas uma pessoa real. Depois, se a pessoa que atender o telefone falar a mesma língua que tu e pode entender-te, tu tentas vender o teu produto. Muitas pessoas desligarão o telefone na tua cara, mas eventualmente, alguém comprará algo...bang! Conseguiste!

*****************************************************************
Neste Guia aprenderás:

* O que é uma vulnerabilidade
* O que é um exploit
* Como procurar vulnerabilidades
*****************************************************************

Mas o que é que isto tem a haver com o 'hacking'? Pensa na tua marcação de números de telefone como rastreacão de portas de endereços IP (Internet Protocol). Alguns computadores hospedeiros da Internet não responderão. Talvez uma firewall esteja a bloquear as portas que estás a rastrear. Alguns hosts responderão, e nesse ponto talvez, talvez tenhas encontrado um computador vulnerável.

********************************************************************
Nota de Principiante: o que são essas 'portas' de que estamos a falar? Este tipo de 'porta' é um número usado para identificar um serviço num host da Internet. Por esta razão são muitas vezes chamadas portas 'TCP/IP' (Tansfer Control Protocol/Internet Protocol), para distingui-los de outros tipos de portas de computadores tal como modems, portas para impressoras, etc. Cada computador host conectado à Internet é identificado por um endereço IP como 'victim.fooisp.com'. Como cada host pode ter muitos serviços a correr, cada serviço usa uma porta diferente. Para contactar qualquer destas portas através da Internet, usas o endereço IP e número da porta - é um pouco como marcar um número de telefone.
********************************************************************

Ora, talvez te tenhas conectado por telnet, porta 23. Obténs um prompt de login, mas não sabes nenhuma combinação username/password válida. Então o host fecha a tua ligação. Depois de muitas horas de tentativas, conectas-te a um host na porta certa, e Shazam!!, és cumprimentado com um prompt de login, e depressa adivinhas uma combinação username/password válida. Depois, não sabes como, tens um prompt de comandos. Descobriste uma vulnerabilidade - uma password facilmente adivinhável! Então, sendo o 'hacker de chapéu branco' que és, envias um email ao administrador de sistemas do site e sais do computador silenciosamente.

*****************************************************************
Nota de Principiante: um 'host' é um computador conectado à Internet. Um 'serviço' é um programa que está a correr numa porta de um host da Internet. Cada serviço é um programa que responderá a certos comandos. Se lhe deres o comando certo, conseguirás que ele faça alguma coisa por ti.

O exemplo mais simples de um serviço é 'chargen', ou character generator (gerador de caracteres - porta 19). Se fizeres uma conexão telnet para um servidor a correr o serviço chargen, este programa reagirá a esta conexão enviando uma sequência de caracteres que verás sendo repetidos no teu ecrã telnet. Tudo o que precisas de fazer é fazeres uma ligação ao serviço.

Outro exemplo de um serviço é o finger (porta 79). Se executares um programa finger para pedir informação sobre um determinado utilizador de um host específico, e o serviço finger (ou 'fingerd') está a correr, e se o utilizador não instruíu o serviço finger para ignorar pedidos sobre ele ou ela, obterás informação sobre esse utilizador.
*****************************************************************

Que serviços são executados a partir dessas portas, e como podemos aprender mais sobre eles? As portas numeradas de 1 a 1024 são chamadas as portas 'conhecidas'. Estas estão listadas no RFC 1700 (vai ver http://www.internetnorth.com.au/keith/networking/rfc.html). Muitas das portas 'conhecidas' são também listadas num ficheiro no teu computador chamado 'services'. No Win95, é c:\windows\services; no NT, é c:\winnt\system32\drivers\etc\services; em muitos computadores do tipo Unix (a tua conta shell) é /etc/services.

Estas portas são chamadas 'conhecidas' porque são frequentemente usadas por certos serviços. Por exemplo, a porta 'conhecida' para enviar email é a porta SMTP , ou porta 25. Porque é 'conhecida', qualquer um pode enviar email para outro qualquer. Porque a porta 110 é a porta 'conhecida' para verificar o email, todos os clientes de email sabem que têm de conectar-se a um servidor POP na porta 110 para receber o email.

Uma FAQ (Frequently Asked Questions) excelente sobre portas TCP/IP pode ser encontrada em http://www.technotronic.com/tcpudp.html.

*************************************************************
Aviso podes ser esmurrado no nariz: existem muitas ferramentas de rastreamento de portas, e os aspirantes a hackers usam-nas... muito. Mas para que propósito? Na maioria dos casos tudo o que acontece é que um administrador de sistemas ou um administrador de firewall vê os logs que esse computador mantêm sobre quem tentou hackar esse site. Depois, ele ou ela decide ou ignorar o teu rastreamento ou telefonar para o administrador do site a partir do qual o teu rastreamento veio. Apesar de (pelo menos nos EUA) o rastreamento de portas ser legal, faz com que os administradores de sistemas fiquem mesmo zangados contigo! Para evitar seres expulso do teu ISP, arranja permissão para rastrear primeiro!
*************************************************************

O que é uma vulnerabilidade?

Uma 'vulnerabilidade' é tudo sobre um sistema informático que permitirá a alguém que, ou o impeça de funcionar correctamente, ou que deixará pessoas não autorizadas tomar o seu controlo. Existem muitos tipos de vulnerabilidades. Podem ser uma má configuração no setup de um serviço, ou uma falha na programação do serviço.

Um exemplo de uma má configuração da montagem é deixar os comandos 'wiz' ou 'debug' operacionais nas versões mais antigas do sendmail, ou ajustar incorrectamente as permissões de directório no teu servidor de FTP de modo que se possa fazer o download do ficheiro de passwords. Nestes casos, a vulnerabilidade não é como o programa foi escrito mas como foi configurado. Permitir a partilha de ficheiros no teu computador Windows 95/98 quando tal não é necessário, ou não pondo uma password para partilha de ficheiros, é outro exemplo.

Exemplos de erros na programação de serviços são o grande número de vulnerabilidades de overflow de buffers nos programas que correm serviços em portas de hosts da Internet. Muitos destes problemas de overflow de buffers deixam pessoas usar a Internet para entrar e tomar o controlo de computadores hosts.

O que é um exploit?

Um 'exploit' é um programa ou técnica que se aproveita de uma vulnerabilidade. Por exemplo, a vulnerabilidade FTP-Bounce ocorre quando um servidor FTP (usado para permitir a pessoas fazer o upload e o download de ficheiros) é configurado para redireccionar conexões FTP para outros computadores. Não existe nenhuma boa razão para permitir esta característica. Tornou-se uma vulnerabilidade porque esta característica 'bounce' (salto) permite que alguém o use para rastrear as portas de outros computadores da mesma LAN (Local Area Network ) desse servidor FTP. Por isso, mesmo que uma firewall impeça o rastreamento directo de portas de outros computadores nesta LAN, o servidor FTP transmitiria um rastreamento através da firewall.

Assim, um exploit é qualquer técnica que se aproveite de uma vulnerabilidade que te capacite a executar os teus próprios esquemas, apesar dos desejos do administrador de sistemas do teu alvo. As exploits dependem de sistemas operativos e das suas configurações, da configuração de programas a correr em sistemas informáticos, e da LAN em que estão.

Sistemas operativos como o NT, VMS e Unix são muito diferentes, e as várias versões do Unix também têm as suas diferenças. (Exemplos de sistemas operativos Unix incluem BSD, AIX, SCO, Irix, Sun OS, Solaris, e Linux). Até as várias versões da forma Linux do Unix são diferentes.

Isto significa que exploits que funcionarão contra sistemas NT provavelmente não funcionarão contra sistemas Unix, e exploits para sistemas Unix provavelmente não funcionarão contra sistemas NT. Os serviços NT são executados por programas diferentes daqueles que possas encontrar em computadores tipo Unix. Além disso, diferentes versões do mesmo serviço a correr num qualquer sistema operativo particular provavelmente não será vulnerável ao mesmo exploit, porque cada versão do serviço é executado por um programa diferente. Por vezes este programa diferente pode ter o mesmo nome mas apenas um número de versão diferente. Por exemplo. O sendmail 8.9.1a é diferente do 8.8.2. Muitas das diferenças são que o 8.9.1a foi corrigido para que nenhum dos velhos programas de exploit do sendmail funcionasse nele.

Por exemplo, o exploit "Leshka" explicado no GPHEI sobre programação shell avançada explica claramente que só funciona nas versões 8.7-8.8.2 do programa de serviço SMTP chamado 'sendmail'. Já observamos algumas pessoas que estavam a jogar o jogo de guerra hacker a tentar executar o exploit Leshka contra uma versão mais recente e corrigida do sendmail.

Por isso, lembra-te, um exploit para um sistema operativo ou serviço provavelmente não funcionará contra outro sistema operativo. Não estou a dizer que definitivamente não funcionará... apenas não é provável. Contudo, fica assegurado que qualquer exploit para o Win95 ou NT não funcionará contra qualquer tipo de Unix.

Como procurar vulnerabilidade

Agora vamos começar em qualquer lugar onde seja improvável que sejas esmurrado no nariz por verificar algumas portas no teu próprio computador. Podes fazer isto digitando 'netstat -a' no promtp de comando.

Deves ver algo como:

Active Connections

Proto Local Address       Foreign Address     State
TCP localhost:1027 0.0.0.0:0 LISTENING
TCP localhost:135 0.0.0.0:0 LISTENING
TCP localhost:135 0.0.0.0:0 LISTENING
TCP localhost:1026 0.0.0.0:0 LISTENING
TCP localhost:1026 localhost:1027 ESTABLISHED
TCP localhost:1027 localhost:1026 ESTABLISHED
TCP localhost:137 0.0.0.0:0 LISTENING
TCP localhost:138 0.0.0.0:0 LISTENING
TCP localhost:nbsession 0.0.0.0:0 LISTENING
UDP localhost:135 *:*
UDP localhost:nbname *:*
UDP localhost:nbdatagram *:*

Mmmm... nada de importante aqui. O 'Local Address' (a minha máquina local) parece estar a escutar nas portas 135, 137, 138, e na 'nbsession' (que traduz para a porta 139... digita 'netstat -na' para ver apenas os números das portas, e não os nomes das portas). Tudo bem... aquelas portas são parte da rede Microsoft, e precisam de estar activas na LAN a que a minha máquina está conectada.

Agora conectamos o nosso Web browser para http://www.happyhacker.org e ao mesmo tempo corremos o telnet do Windows e conectamo-nos a uma conta shell em example.com. Vamos ver o que acontece. Aqui está o output do comando 'netstat -a', ligeiramente abreviado:

Active Connections

Proto Local Address     Foreign Address     State
TCP localhost:1027 0.0.0.0:0 LISTENING
TCP localhost:135 0.0.0.0:0 LISTENING
TCP localhost:135 0.0.0.0:0 LISTENING
TCP localhost:2508 0.0.0.0:0 LISTENING
TCP localhost:2509 0.0.0.0:0 LISTENING
TCP localhost:2510 0.0.0.0:0 LISTENING
TCP localhost:2511 0.0.0.0:0 LISTENING
TCP localhost:2514 0.0.0.0:0 LISTENING
TCP localhost:1026 0.0.0.0:0 LISTENING
TCP localhost:1026 localhost:1027 ESTABLISHED
TCP localhost:1027 localhost:1026 ESTABLISHED
TCP localhost:137 0.0.0.0:0 LISTENING
TCP localhost:138 0.0.0.0:0 LISTENING
TCP localhost:139 0.0.0.0:0 LISTENING
TCP localhost:2508 zlliks.505.ORG:80 ESTABLISHED
TCP localhost:2509 zlliks.505.ORG:80 ESTABLISHED
TCP localhost:2510 zlliks.505.ORG:80 ESTABLISHED
TCP localhost:2511 zlliks.505.ORG:80 ESTABLISHED
TCP localhost:2514 example.com:telnet ESTABLISHED

Então o que é que vemos agora? Bem, há as portas a escutar da rede Microsoft, tal como no primeiro exemplo. E também há algumas portas novas listadas. Quatro estão conectadas a 'zlliks.505.org' na porta 80, e uma a 'example.com' na porta telnet. Estas correspondem às conexões cliente que eu montei. Vês, desta maneira sabes o nome do computador que estava a correr o website Happy Hacker Web nesta altura.

Mas o que é que se passa com estes números de portas muito grandes? Bem, lembras-te das portas 'conhecidas' de que falamos acima? Aplicações cliente, como browsers e clientes telnet (clientes são programas que conectam a servidores) precisam de uma porta para receber dados, por isso seleccionam portas ao acaso fora do alcance das portas 'conhecidas'... acima de 1024. Neste caso, o meu browser abriu quatro portas... 2508 a 2511.

Agora supõe que queres rastrear as portas de um amigo teu. Esta é a melhor maneira de rastrear, já que não terás de te preocupar com que o teu amigo tente fazer com que te expulsem do teu ISP por suspeita de tentar entrar em computadores. Como é que descobres qual é o endereço IP do teu amigo? Pede-lhe a ele ou ela para executar o comando (no prompt do DOS) 'netstat -r). Isto mostra algo como:

C:\WINDOWS>netstat -r

Route Table

Active Routes:

Network Address Netmask       Gateway Address Interface      Metric
0.0.0.0 0.0.0.0 198.59.999.200 198.59.999.200 1
127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
198.59.999.0 255.255.255.0 198.59.999.200 198.59.999.200 1
198.59.999.200 255.255.255.255 127.0.0.1 127.0.0.1 1
198.59.999.255 255.255.255.255 198.59.999.200 198.59.999.200 1
224.0.0.0 224.0.0.0 198.59.999.200 198.59.999.200 1
255.255.255.255 255.255.255.255 198.59.999.200 0.0.0.0 1

Active Connections

 Proto Local Address         Foreign Address       State
TCP lovely-lady:1093 mack.foo66.com:smtp ESTABLISHED

Esse 'gateway address' (endereço gateway) e 'interface' ambos mostram o endereço IP actual do teu computador. Se estás numa LAN, o gateway deverá ser diferente do endereço IP do teu próprio computador. Se tu ou o teu amigo estão numa LAN, contudo, devem pensar duas vezes antes de se rastrearem mutuamente, ou o administrador da LAN pode reparar na vossa actividade. Aviso, os administradores de sistemas possuem um arsenal e tanto de larts para usar em utilizadores com comportamentos suspeitos.

************************************************************
Nota de Principiante: Lart? O que raio é um lart? É um "loser attitude readjustment tool" (ferramenta de reajustamento de atitude perdedora). Esta é uma classe genérica de técnicas usadas pelos administradores de sistemas para punir perdedores. O que é um perdedor? Um utilizador impertinente. Para ver uma amostra de larts populares, vai ver http://mrjolly.cc.waikato.ac.nz. Tu queres que os teus administradores de sistema sejam teus AMIGOS, certo? Nunca te esqueças disto!
************************************************************

Quais são algumas das vulnerabilidades do Win95 e NT, perguntas? Verifica GPHEI anteriores para esta informação. Talvez a coisa mais importante para recordar acerca do Windows é que, como a root no Unix, pode correr um programa que usa qualquer porta que quiser, mesmo uma porta conhecida. Esta vulnerabilidade é demonstrada por um programa feito pelo Weld Pond dos Lopht chamado 'netcat'. O programa pode ser obtido em:

http://www.l0pht.com/~weld/netcat

Lê a documentação que é enviada com o programa, ou os Guias sobre o (a) Win95 e telnet em:

http://www.happyhacker.org/gtmhh.html

ou (b) segurança NT em:

http://www.infowar.com/hacker/hacker.html-ssi

... para informação sobre os usos do netcat.

É claro, várias aplicações Windows, tal como o Internet Explorer, têm as suas próprias vulnerabilidades.

Por agora, deves desejar saber onde podes aprender mais sobre várias vulnerabilidades e exploits para todo e qualquer computador que possas encontrar na Internet. Aqui tens uma lista de sites:

ISS X-Force
http://www.iss.net/xforce

RootShell
http://www.rootshell.com

TechnoTronic
http://www.technotronic.com

Packet Storm Security Site
http://packetsorm.securify.com

Bugtraq archives
http://www.securityfocus.com

NTBugTraq
http://www.ntbugtraq.com

Aelita Software
http://www.ntsecurity.com
**Este site tem o programa RedButton, que demonstra a capacidade de conectar a uma máquina NT através de uma sessão null e obter informação sobre o registry. Isto é um problema relativamente simples de reparar... vai ver os Guias de segurança NT em:
http://www.infowar.com/hacker/hacker.html-ssi

NTSecurity
http://www.ntsecurity.net

Active Matrix's HideAway
http://www.hideaway.net/exploits.html

CERT
http://www.cert.org

Exploits que foram testados e não danificarão o teu computador:

http://www.anticode.com

Página de links do Happy Hacker

_________________________________________________________
Junta-te à nossa lista de email enviando um email para hacker@techbroker.com com a mensagem "subscribe". Queres partilhar algo com a lista HappyHacker? Corrigir erros? Envia as tuas mensagens para hacker@techbroker.com. Para enviar email confidencial (por favor, nada de discussões sobre actividades ilegais) usa carolyn@techbroker.com e diz na tua mensagem que queres mantê-la confidencial. Se queres a tua mensagem publicada anonimamente, por favor, di-lo. Envia as críticas para dev/null@techbroker.com. Copyright 1998 keydet89 e Carolyn Meinel. Podes enviar ou publicar no teu site este GPHEI desde que deixes esta nota no fim...
________________________________________________________

Carolyn Meinel
M/B Research -- The Technology Brokers

******************************************************************************
Traduzido por Rui Rodrigues. Homepage: nav.to/ruirodrigues
O website que o teu patrão não deseja que conheças!
www.quickinfo247.com/1816181/FREE
******************************************************************************