Escolar Documentos
Profissional Documentos
Cultura Documentos
Explorando Vulnerabilidades -
Violando a Segurança
NETCOM – 2007
RICARDO ANDRIAN CAPOZZI
1
RESUMO
2
OBJETIVO:
DEFINIÇÕES:
Vulnerabildiade
- Um problema ou ponto fraco que pode ser explorado ou atacado. Trata-se de um
programa de computador que se aproveita das vulnerabilidades de outros programas.
Criados por Hackers como programas de demonstração das vulnerabilidades e por
Crackers a fim de ganhar acesso não autorizado ao sistemas.
Ameaça
- Ação que explora uma vulnerabilidade cujo fim é intimidar e/ou fraudar.
Exploit
- São scripts e programas desginados para exploração de vulnerabilidades. Ë uma
ocorrencia de um padrão de ataque criado para comprometer uma parte do código do
sistema alvo. O ato de executar uma exploração é conhecido como ataque.
Risco
- Descreve a probabilidade que uma ação induza a uma falha de sistema resultando em
um dano aos ativos da corporação.
MOTIVAÇÃO
Usualmente, links de comunicação são inundados por tráfego hostis contendo dados
maliciosos, tentativas de conexões e invasões através da execução de exploits. Há
diversar formas de se burlar a segurança de uma corporação de forma virtual, graças à
possibilidade de anonimato, automação (força bruta), propagação das vulnerabilidades e
técnicas de violações expostas em sites “Crackers”.
O visual abaixo mostra uma relação entre ano em função do número de vulnerabilidades
descobertas.
Ano 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005
Vulnerabilidades 25 75 252 246 914 1014 1672 1942 1242 2217 3649
A quebra desta violação pode acontecer por diversas formas, porém com as habilidades e
imaginação dos especialistas em segurança – subentenda-se Hackers e Crakers - estão
bem refinadas, os meios para se explorar uma vulnerabilidades tornam-se inumeros, o
que não caberia como descreve-los em apenas um único trabalho.
Por definiçâo, existem tres falhas que podem ser exploradas, sendo: 1- as que afetam a
disponibilidade da máquina; 2- o acesso ilimitado e privilegiado ao sistema e, 3- as que
permitem a execução de código arbitrário.
4
falhas dos sistemas e como explora-las; 3- invadir; 4- elevar privilégios e; 5- apagar
rastros. Trataremos neste artigo de forma muito sucinta dos passos 1 a 4.
Vale ressaltar que uma invasão requer conhecimentos específicos e o uso de uma
infinidade de técnicas. A utilização de ferramentas, em sua grande maioria disponíveis na
Internet, facilita muito ao invasor iniciar o processo conhecido como Finger Print, onde
se levantam: domínios, IP’s, versões de S.O.s, patches de correções aplicados,
topologias, compartilhamentos, contatos, etc. Uma simples pesquisa através do WHOIS
ou consulta a DNS’s em uma base de registro do domínio do alvo, pode fornecer
informações preciosas.
20
Com endereços publicáveis e válidos, toda empresa passa a ser uma ameaça em potencial
a ser explorada.
5
DESCOBRINDO RELAÇÕES E SERVIÇO ATIVOS
O uso do serviço Finger com tráfego direcionado a porta 79/TCP permite a obtenção de
informações preciosas para invasores em um estudo inicial de um servidor ou ambiente
de rede, sendo possível identificar o nome real de usuários, respectivos números de
telefone, diretório de usuários, shell utilizado para o login, tempo de conexão do usuário,
assim com o computador que originou a conexão - informação muito útil para burlar
sistemas que utilizam TCP wrapper através de técnicas de TCP spoofing.
$ finger @ftp.ipv6dobrasil.com
[registro.br]
Login Name Tty Idle Login Time Office
capozzi Ricardo Capozzi *:0 Mar 29 18:12
robson Robson Oliveira /1 Mar 29 19:16
6
C:\> qtip -u -a winnt2k
\\10.0.1.1\Userarios
\\10.0.1.1\Financeiro
\\10.0.1.1\Docs
Administrator
Guest
Poweruser
Capozzi
Robson
C:\>
Após descobrir informações sobre o domínio alvo e com o uso de ferramentas disponível
na Internet, o agente da invasão pode buscar quais serviços e suas respctivas versões
ativos.
7
Outros explemplos de ferramentas são: NESSUS, Strobe, Queops, Languard, FireWALK,
SATAN, ISS Internet Scaner que também são conhecidos como Scanners que varrem
portas e ou buscam vulnerabilidades nos serviços rodando nestas portas. Notar que estes
Scanners não exploram vulnerabilidades, mas apenas apontam as falhas a serem
exploradas.
.
DESCOBRINDO UMA VULNERABILIDADE:
Após verificação dos serviços que estão ativos com suas devidas portas, conhecemos
então o SOCKETS, que é a combinação de um endereço IP + porta + protocolo. De posse
destas informações, entende-se qual é o serviço disponível e suas devidas versões
aplicadas. O seguinte passo é partir para a exploração de algumas vulnerabilidades
descoberta neste serviço, ou de acordo com a capacidade técnica, entender o código da
aplicação e desenvolver suas proprias técnicas de exploração – conhecidas como exploits.
Se não temos esta capacidade de analisar o código fonte da aplicação, há vários sítios que
publicam informações sobre vulnerabilidades que podem ser exploradas apenas
digitando-se o nome serviço ativo e versão obtendo-se o código exploit.
Fato que se este serviço descoberto já tiver sua versão atualizada por pathces de correção
ou Hot Fix o exploit não mais se aplicará com sucesso, pois a vulnerabilidadde a ser
explorada já foi corrigida. Porém este tipo de correção não se aplica a vulnerabilidades
conhecidas com Ataques do Dia Zero. Onde a vulnerabilidade é descoberta e dissiminada
por Crackers antes que o fabricante possa corrigi-las e as empresas possam aplicá-lo. O
visual abaixo ilustra uma relação entre a descoberta da vulnerabilidade e sua exploração.
N im da 331
SQ L S lam m er 180
B laster 25
Sasser 14
8
Com este nível de proteção é possível descobrir quais copuntadores podem originar
conexões a serviços como Telnet, FTP, SSH entre outros. O retorno do comando fornece
informações (bunner) sobre o serviço e sua devida versão atual. A título didático, este
artigo apresenta um serviço legado, pois não seria ético mostrar serviços com
vulnerabilidades atuais.
Connected to
ipv6dobrasil.com
Escape character is '^]'.
Trying 10.0.1.2...
Connected to ipv6dobrasil.com
* OK amber IMAP4rev1 Service 9.0(157) at Wed, 14 Oct 1998 11:51:50 -0400 (EDT)
(Report problems in this server to MRC@CAC.Washington.EDU)
. logout
Referente a execução de tentativa de conexão a um servidor IMAP pela porta 143. Que é
um protocolo de acesso de correspondência on-line, utilizado no acesso do cliente de
correio ao servidor de correio.
9
imapd
27
EXPLORANDO A VULNERABILIDADE:
#include <stdio.h>
#define TRUE 1
#define FALSE 0
void ProcessarParmt(char *arg);
void main(int argc, char *argv[])
{
if (argc > 1)
{
printf("Param: %s\n",argv[1]);
ProcessarParmt(argv[1]);
}
}
void ProcessarParmt(char *arg)
{
char buffer1[35];
strcpy(buffer,arg);
/* a string de arg não pode conter mais que 35 chr pois ocorrerá um BoF */
printf(buffer1);
}
10
Buffer Overflow são vulnerabilidades que exploram o uso de mémoria e seus ponteiros,
tendo suas váriações conhecidas como Stack Overflow e Heap Overflow. E considerado
o calcanhar de Aquiles da segurança computacional, pois ainda é o principal método de
exploração pela inserção e execução de código malicioso com a finalidade de se deixar
um backdoor como um rootkit ou um simples Denial of Service.
Quando ocorre Buffer Overflow, um crash é causado na aplicação que esta ativa em
RAM. Em ambientes Linux com Kernel atualizados, esse estado gera um segmentation
fault com core dump. Entretanto quando utilizado corretamente, o buffer overflow pode
permitir que se execute um código malicioso com os mesmos privilégios de execução do
aplicativo-alvo atacado.
Embora o problema do buffer overflow seja conhecido há muito tempo, somente nos
últimos anos ele passou a ser amplamente explorado como ferramenta de violação de
sistemas computacionais.
Após encontrar e baixar o referido exploit para o servico ativo em questão, utiliza-se um
shell juntamente com um interpretador de linguagem executando-se o código fonte ou
script (geralmente escrito em C ou Perl) apontando para o alvo previamento descoberto
com as técnicas de Finger Print. Este programa tem por finalidade obter acesso
privilegiado através do estouro de pilha de memória – técnicas conhecidas Buffer
Overflow e elevar o privilégio ao equivalente de um super usuário ou adminstrador do
sistema.
Completed successfully.
Trying 10.0.1.2...
Connected to ftp.ipv6dobrasil.com.
root
30
11
O fragmento código abaixo ilustra o exploit que explora vulnerabilidades em serviços
IMAP e pode ser encontrado em http://www.t72.ru/~rz/swamp/imap_exploit.again por
L0pht Security Advisory.
Em algumas situações é porssível o serviço IMAP chamar uma função fatal() com
exemplo visto em osdep/unix/ftl_unix.c:
ipv6:~# cd /etc
ipv6:~# cat ./hosts
31
Esta ação possibilitou ao invasor a elevação de privilégios para super usuário do sistema,
resultando no acesso ao arquivo HOST, que informam quais são os nomes de estações de
trabalho e endereços IP de um determinado segmento.
12
EFEITOS DAS VULNERABILIDADES:
Base de dados que contenham massa crítica de informações previamente classificadas por
uma política de segurança deve ser protegidas seguindo-se os critérios de prezervação da
integridade e confidencialidade – como o uso da criptografia.
tesouraria:~# cd /data/creditcards
tesouraria:~# cat cartoes_cooperados.txt
32
13
CONCLUSÃO:
Ações preventivas devem constar das atualizações de correção conhecidas como patches
e HotFix. Em relação a codificação, recomenda-se aos programadores utilizarem
linguagens que validem e gerenciem melhor os esquemas de memória. Evitar funções
como strcpy, que tem sua equivalente strncpy entre outras que já tem suas
vulnerabilidades exploradas e publicadas. Funções passíveis de exploração pela técnica
Format String Bug, como a printf, devem evitar aceitar valores oferecidos diretamente
pelos usuários entre outras. Ter a substituição de bibliotecas como a libc por versões mais
seguras a libmib ou libsafe. Por fim a utilização da norma codificação de código seguro
oferecida pela ISO/IEC 15.408 para mitigar problemas desta ordem.
14
BIBLIOGRAFIA:
Greg Hoglund et al,. Como quebrar Códigos – A arte de explorar e proteger software.
Ed. Pearson - 2006
UNB/DCC, 2003.
http://www.cic.unb.br/docentes/pedro/trabs/buffer_overflow.htm.
15
Packet Storm
http://packetstorm.securify.com
SANS Institute
http://www.sans.org
Linux Security
http://www.linuxsecurity.com
MacStumbler (MAC)
http://homepage.mac.com/macstumbler/
MiniStumbler (PocketPC)
http://www.netstumbler.com/download.php?op=getit&lid=21
Mognet (JAVA)
http://chocobospore.org/mognet/
AirTraf
http://airtraf.sourceforge.net/index.php
Ethereal
http://www.ethereal.com/
16
RESUMO CURRICULAR
17