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
Vulnerabilidades
1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005
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 capozzi Ricardo Capozzi *:0 robson Robson Oliveira /1
Idle
Login Time Office Mar 29 18:12 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 201.83.133.10 201.83.133.11 201.83.133.12 201.83.133.13 201.83.133.14
localhost projetos firewall tesouraria db db1
localhost.localdomain serviços regras finanças dados 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 Donna F. Silva Gilberto Silva Jose Silva Ricardo Silva Maria Silva Roberto Silva
4004-2223-1209-4002 4004-4223-0632-4572 4004-2334-1523-5522 4004-2116-1882-7532 4004-2798-1972-4532 4004-1233-1332-4222 4004-0090-5232-3332
11/09 06/09 01/08 09/07 08/08 12/08 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
ANEXO A -Fluxo Macro dos Procedimentos de um Teste de Intrusão – Fases de um fluxo para Testes de Invasões com suas subfases e técnicas utilizadas.
PLANEJAMENTO NOT BLIND
HYBRID
BLIND
AUDIT CODE
OBSERVAÇÃO VARREDURA ENUMERAÇÃO BUSCA POR FALHAS BURLAR PROTEÇÃO ENGANAR USUÁRIO
EXPLORAR FALHAS
EXPLORAR CONFIGURAÇÕES
RECUSAR SERVIÇOS
ENGENHARIA SOCIAL
B.O.F.
FORÇA BRUTA
D.O.S.
MALWARES
INEÇÃO DE CÓDIGO
SNIFFERS
D.D.O.S..
CONTRLE DE ACESSO
C.S.S.
DESABILITAR SERVIÇOS
D.R.D.O.S.
EXPLOITS
R.A.S..
WARCHALKING
MANIPULAÇÃO DE CREDENCIAS
18