____________________________________________________________ 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! ***************************************************************** * O que é uma
vulnerabilidade 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. ******************************************************************** 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. ***************************************************************** 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. 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. ************************************************************* 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. 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 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 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 Active Connections Proto Local Address Foreign Address State 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. ************************************************************ 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 RootShell TechnoTronic Packet Storm Security
Site Bugtraq archives NTBugTraq Aelita Software NTSecurity Active Matrix's HideAway CERT Exploits que foram testados e não danificarão o teu computador: Página de links do Happy Hacker _________________________________________________________ Carolyn Meinel ****************************************************************************** |