Você está na página 1de 17

Segurança da Informação

Explorando Vulnerabilidades -
Violando a Segurança

NETCOM – 2007
RICARDO ANDRIAN CAPOZZI

1
RESUMO

Ambientes corporativos necessitam de uma infraestrutura de segurança de informações


definida segundo uma política homologada a fim de mitigar problemas com invasões.
Entretanto, mesmo seguindo-se essas especificações, com algum conhecimento técnico e
ferramentas obtidas via Internet, qualquer agente malicioso pode encontrar e explorar
uma vulnerabilidade dentro de um sistema computacional adotado pela corporação,
resultando em uma violação da segurança com possíveis prejuízos a imagem e ativos da
empresa. A finalidade deste artigo é mostrar um pequeno esquema de uma violação de
segurança explorando-se uma vulnerabilidade em um serviço rodando em um servidor
que está frente a Internet corporativa.

2
OBJETIVO:

Apresentar uma forma de exploração de vulnerabilidades em sistemas computacionais


para entender como ocorrem as violações de acesso aos ativos de uma corporação.

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

Com o advento da Internet e a globalização dos negócios, empresas se estuturaram de


forma a oferecer seus produtos e serviços a um mundo sem fronteiras. Isto tornou a
segurança da informação uma discilplina obrigatória para empresas evitarem riscos de
exposição de seus ativos.

A superexposição faz com que a Internet - um veículo de difusão de informações que


promove negócios, seja usada para finalidades obscuras como roubo de informações,
fraudes, espionagem industrial, entre outros crimes cometidos contra seus ativos. Assim,
as empresas que se exponham a grande rede devem estar preparadas para atender
solicitações virtuais de seus reais usuários bem como a visitantes indesejados.

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”.

Assim, toda vulnerabilidade de um sistema computacional encontrará sua origem no fator


humano, seja ele no ato de sua criação estendendo-se até o usuário final a quem não
podemos confiar a usabilidade dos recursos computacionais corretamente. Em relações as
falhas humanas o foco a ser explorado trata da boa fé das pessoas somado a
3
desinformação e senso de impunidade. Para os casos em que a tecnologia vira
instrumento de violação de segurança, são exploradas vulnerabilidades em erros de
codificação e ou implementação dos sistemas operacionais, aplicativos comerciais e
serviços em servidores locias e remotas.

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

Fonte: National Security Database - 2006

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.

A obrigação de tornar o ambiente de rede seguro é supravital para a manutenção da


estabilidade, produtividade, credibilidade da coporação. Esta necessidade pode ser
saciada a partir da utilização correta de equipamentos juntamente com a definição de
regras que possam governar o uso apropriado destes dispositivos garantindo os alicerces a
Segurança da Informação.

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.

Toda vulnerabilidade explorada em sistemas computacionais, leva ao invasor a violar a


segurança que por sua vez possui seu Modus Operandi da violação. Vários autores
especialistas em segurança defendem que a taxonimia de uma violação - também
conhecida como ataque, deve conter 5 processos: 1- conhecimento do alvo; 2- enteder as

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.

ANATOMIA DE UMA VIOLAÇÃO DE SEGURANÇA

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

Enumeração é o processo de identificação de todos os serviços em execução em cada um


dos computadores (servidores ou estações de trabalho) ativo identificado dentro do
domínio da rede alvo. Para tanto se faz uso de algumas ferramentas como o FINGER e
QTIP usados como exemplo neste trabalho.

As informações obtidas com o Finger, Qtip ou Net xxxx, possibilitam invasores a


descobrir relações de confiança na rede alvo e obter nomes de usuários para tentativas de
ataque de força bruta e exploração de suas respectivas senhas, além de números de
telefone para abordagens de Engenharia Social.

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.

Com um simples comando executado em um shell Linux, descobre-se os usuários e seus


devidos compartilhamentos. Os istemas operacionais Microsoft, por exemplo, ofertão
uma grande lista de comando embutido em seu Kernel, com os net xxxx. Com um acesso
remoto a rede alvo, torna-se possível a execução arbitrária para obtenção de várias
informações.

$ 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

Retorno do comnado FINGER em ambiente Linux

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:\>

Retorno do comando QTIP em ambientes NT

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.

#nmap -sS -O ftp.ipv6dobrasil.com www.ipv6dobrasil.com

Starting nmap V. 2.12 by Fyodor (fyodor@dhp.com,


www.insecure.org/nmap/)
Interesting ports on ftp.ipv6dobrasil.com (10.0.1.2):
Port State Protocol Service
21 open TCP ftp
23 open TCP telnet
25 open TCP smtp
79 open TCP finger
TCP Sequence Prediction: Class=random positive increments
Difficulty=5691999 (Good luck!)
Remote operating system guess: Linux 2.1.122 - 2.2.12

Interesting ports on www.ipv6dobrasil.com (10.0.1.1):


Port State Protocol Service
135 open TCP loc-srv
139 open TCP netbios-ssn
1031 open TCP iad2

TCP Sequence Prediction: Class=trivial time dependency


Difficulty=3 (Trivial joke)
Remote operating system guess: Windows NT4 / Win95 / Win98
Nmap run completed -- 2 IP addresses (2 hosts up) scanned in 5
seconds 24
#

Resultado de portas e serviços abertos via NMAP.

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.

M alw are D ias en tre a descob erta e exploit

N im da 331

SQ L S lam m er 180

W elchia/N achi 151

B laster 25

Sasser 14

Fo nte: S ym antec 2006

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.

rackster: ~$ telnet ipv6dobrasil.com 25


Trying 10.0.1.2...

Connected to
ipv6dobrasil.com
Escape character is '^]'.

Connection closed by foreign host.

rackster:~$ telnet ipv6dobrasil.com 143

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

* BYE ipv6 IMAP4rev1 server terminating connection


. OK LOGOUT completed

Connection closed by foreign host.

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:

O fragmento de código abaixo, escrito em C mostra um problema tipicamente simples de


estouro de buffer. Dentro da função ProcessarParmt, não há crítica sobre o tamanho do
parâmetro recebido na variável arg. Se o atacante enviar uma quantidade maior do que a
função pode receber ocorrerá um BoF.

#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.

rackster~$: ./imap_exploit ftp.ipv6dobrasil.com

IMAP Exploit for Linux.

Author: Akylonius (aky@galeb.etf.bg.ac.yu)


Modifications: p1 (p1@el8.org)

Completed successfully.

rackster ~$:telnet ftp.ipv6dobrasil.com

Trying 10.0.1.2...
Connected to ftp.ipv6dobrasil.com.

Fedora Core Linux release 2.4.18-1 (Biltmore)


Kernel 2.4.18-1 on an i686 GNU Linux
login: root
ipv6:~# whoami

root

30

Execução de um script (exploit) apontando para o serviço vulnerável.

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:

/* Return fatal erro - Accepts: string to output */

void fatal (char *string)


{
mm_fatal (string); /* pass up the string */
syslog (LOG_ALERT,"IMAP toolkit crash: %.100s",string);
abort (); /* die horribly */
}

ipv6:~# cd /etc
ipv6:~# cat ./hosts

127.0.0.1 localhost localhost.localdomain


201.83.133.10 projetos serviços
201.83.133.11 firewall regras
201.83.133.12 tesouraria finanças
201.83.133.13 db dados
201.83.133.14 db1 marketing

ipv6:~# rlogin tesouraria

31

Execução do Login remoto ao computador contendo infomações financeiras.

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

Alice C. Silva 4004-2223-1209-4002 11/09


Donna F. Silva 4004-4223-0632-4572 06/09
Gilberto Silva 4004-2334-1523-5522 01/08
Jose Silva 4004-2116-1882-7532 09/07
Ricardo Silva 4004-2798-1972-4532 08/08
Maria Silva 4004-1233-1332-4222 12/08
Roberto Silva 4004-0090-5232-3332 12/08

32

Visualização de um arquivo contendo número de cartões de crédito após a invasão por


execução de um exploit.

Neste exemplo como efeito, a vulnerabilidade explorada possibilitou acesso remoto a um


servidor sob um certo dóminio que contém arquivos que deveriam ser protegidos segundo
as classificações restrita e confidencial, permitindo ao invasor sua cópia e utilização
fraudulenta das informações.

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.

Além de aplicações de firewall, routers, SSL, certificações digitais, IDS/IDP e verificação


de malwares, uma outra metodologia importante é adoção da análise de vulnerabilidade
de rede e testes de penetrações ou Ethical Hacker na construção de sistemas
computacionais mais seguros. Algumas empresas executam o que chamamos de análise
de “caixa-preta” contra uma aplicação computacional, a exemplos do Cenzic, Kovado e
Sanctum. Como resultado alerta-se os administradores e desenvolvedores das possiveis
“brechas” em seus sistemas computacionais e se há brechas no código, elas serão
exploradas – é uma questão de tempo.

14
BIBLIOGRAFIA:

Greg Hoglund et al,. Como quebrar Códigos – A arte de explorar e proteger software.
Ed. Pearson - 2006

Costa, António Cardoso,. Segurança Informática de Redes e de Sistemas Problemas e


Soluções, 2005

SAMS, Segurança Máxima.


Ed. Campus - 2004.

Horton, Mike et al,. Hack Notes – Segurança em Redes


Ed. Campus - 2005

Valle, Della et al., Universidade Hacker


Ed. Digerati – 2005

Scambreay et al,. Hackers Expostos


Ed. Makron Books – 2005

Mandia, Kelvin et al., Hackers – Resposta e Contra-Ataque


Ed. Campus - 2005

UCHÔA, J. Q. Segurança em Redes e Criptografia.


Lavras: UFLA/FAEPE, 2003. (Curso de Pós Graduação “Latu Sensu” (Especialização) a
Distância em Administração em Redes Linux).

THE OPEN GROUP. The Single UNIX Specification, Version 2. 1999.


http://www.opengroup.org/onlinepubs/007908799/xsh/dlopen.html.

MCDONALD, J. Defeating Solaris/SPARC Non-Executable Stack Protection. 1999.


http://www.thc.org/root/docs/exploit_writing/sol-ne-stack.html.

THUEMMEL, A. Analysis of Format String Bugs. 2001.


http://downloads.securityfocus.com/library/format-bug-analysis.pdf

ARANHA, D. FFREITAS. - Tomando o controle de programas vulneráveis a buffer


overflow. Artigo em Internet. Acessado em 2007.

UNB/DCC, 2003.
http://www.cic.unb.br/docentes/pedro/trabs/buffer_overflow.htm.

Symantec Corporation – How to Break a Security - Ricardo Costa


http://www.symantec.com

Security Focus (Home of BUGTRAQ)


http://www.securityfocus.com

15
Packet Storm
http://packetstorm.securify.com

CVE (Common Vulnerability and Exposures)


http://cve.mitre.org

4Linux – Explorando Vulnerabilidades - Sandro Melo


http://www.4linux.com

SANS Institute
http://www.sans.org

The Center for Internet Security


http://www.cisecurity.org

Linux Security
http://www.linuxsecurity.com

Network Security Library


http://secinf.net

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/

BSD-AirTools – dstumbler (BSD)


http://www.dachb0den.com/projects/bsd-airtools.html

Kismet (Linux, Sharp Zaurus)


http://www.kismetwireless.net

IBM Wireless Security Auditor (Linux, iPaq)


http://www.research.ibm.com/gsal/wsa

AirTraf
http://airtraf.sourceforge.net/index.php

Ethereal
http://www.ethereal.com/

16
RESUMO CURRICULAR

Ricardo Andrian Capozzi, possui graduação em Tecnologia da Informação pela


Faculdade de Informática e Administração de São Paulo e pós-graduação nas áreas de
Análise de Sistemas, Segurança da Informação, Marketing Internacional, Gestão de
Negócios, Didática Superior em Tecnologia e Engenharia da Computação. Professor da
FATEC - FACULDADE DE TECNOLOGIA DE SÃO PAULO, Faculdade Mauá e
Faculdade Carlos Drummond de Andrade para graduação e pós-graduação. Atua como
consultor de bancos e plataformas eletrônicas para o Banco Citibank S.A., com
experiência na área de Ciência da Computação enfatizando Segurança da Informação e
Redes. Contato: 11-8280-3133 – rackster@ig.com.br

17

Você também pode gostar