Ataques e Vulnerabilidades em Redes
Ataques e Vulnerabilidades em Redes
Ataques e Vulnerabilidades em Redes
ATAQUES E VULNERABILIDADES
Tcnico em Redes de Computadores 3 Mdulo Jacson Tiola
Apresentao
Sesso Transporte
Transporte
Rede Enlace Enlace & Fsico Fsico
OSI
2
Inter-Rede
TCP/IP
Famlia TCP/IP
DNS SNMP NFS OSPF FTP HTTP SSH SMTP
Aplicao
Transporte
UDP SCTP RTP TCP
Inter-Rede
ARP
IGMP
IP
ICMP
RARP
ETHERNET
ATM
802.11
...
Aplicao
Transporte
Inter-Rede
Vandalismo Acesso cabos lgicos e de fora, disjuntores Acesso a equipamentos, racks distribudos no prdio Manuteno na rede eltrica interfere na rede Picos de energia afetam servios Redes sem fio Frequncia do IEEE 802.11 2.4GHz (ISM) Muitos dispositivos podem interferir (ex: fornos microondas, Bluetooth) e causar DoS (denial of service) Captura do sinal, captura de pacotes Criptografia de nvel fsico deve estar habilitada ARP cache poisoning (envenenamento tabela ARP)
Modelo TCP/IP
4
Aplicao
Algumas Ameaas
Transporte
Inter-Rede
Vulnerabilidades em roteadores Administradores usam senha de administrao default do fabricante Bugs no software permitem buffer overflow Firewalls mal configurados IP Internet Protocol IPv4 no oferece confidencialidade Pacotes podem ser lidos na rede pblica ou no ISP Ataques spoofed (source IP falso) DoS (ex: ping da morte) Vulnerabilidades no BGP, OSPF
5
Aplicao
Transporte
Inter-Rede
Aplicaes TCP, UDP so alvo de port scan Port scan permite mapeamento da rede Porta aberta = servio rodando Negao de Servio (Dos) SYN flood TCP session hijacking man-in-the-middle attack (MITM) LAND/La tierra Ping da morte Nuke
6
Aplicao
Algumas Ameaas
Transporte
Inter-Rede
Plugins para Browsers (ActiveX, Applets Java) Senhas enviadas sem criptografia Vrus, Worms, Trojans Vrus so programas malignos que se replicam Trojan horse programa maligno disfarado de benigno Worms so vrus auto-replicveis Bugs de software vulnerabilidade Muitos servios rodam com privilgios Vulnerabilidades em SNMP, SSH, FTP, Boa especificao, falhas na implementao Falha na configurao de servios (FTP, HTTP, ) Boa especificao, boa implementao, falhas de configurao
7
Modelo TCP/IP
Terminologia
Ataque
acesso a dados ou uso de recursos sem autorizao execuo de comandos como outro usurio uso de falsa identidade conduo de negao de servios (denial of service) Violao de uma poltica de segurana
Vulnerabilidade
uma falha que pode permitir a conduo de um ataque
Incidente
A ocorrncia de um ataque; explorao de vulnerabilidades
Ameaa
Qualquer evento que pode causar dano a um sistema ou rede Por definio, a existncia de uma vulnerabilidade implica em uma ameaa
Exploit code
Um cdigo preparado para explorar uma vulnerabilidade conhecida Uma ferramenta para ataques Fonte: www.cert.dfn.de/eng/pre99papers/certterm.html (entre outras) 8
Incidentes
Incidente Ataque Evento
Atacante Hacker Espio Terrorista Cracker Script Kiddy Criminoso Ferramenta Ataque fsico Informao Comando Script Agente Toolkit Ferr. Distrib Escuta Vulnerabilidade Projeto Implementao Configurao Ao Alvo Conta Processo Informao Componente Computador Rede Inter-rede Resultado Mais acesso Abertura info Corrupo info Negao Serv Roubo recurso Objetivo Desafio Poltico Financeiro Destruir
Sondar
Mapear Inundar Autenticar Contornar Spoof Ler Copiar Roubar Modificar Apagar 10
11
Phreaker Um hacker com maior atuao em telecomunicaes White Hat Um hacker, possivelmente aposentado, que trabalha como consultor de segurana. Odiado pelos "Black Hats Grupos hackers Ex: Cult of the Dead Cow
12
Hall da Fama
Fonte: http://tlc.discovery.com/convergence/hackers/bio/bio.html 13
Tipos de Ataques
Packet sniffing
Chamada tambm de passive eavesdropping Farejam o que passa pela rede Consiste na captura de informaes pelo fluxo de pacotes de um mesmo segmento de rede Switches podem ser usados para dividir a rede em mais segmentos Softwares: snoop (Solaris), tcpdump (Linux), wireshark
Port scanning
Ferramentas utilizadas para obteno de informaes referentes aos servios que so acessveis e definidas por meio do mapeamento das portas TCP e UDP Ex: nmap Detecta portas abertas do sistema, sistema operacional, nmero de sequncia de pacotes TCP, usurio que est executando cada servio. Alguns mtodos:
TCP connect, TCP SYN, UDP, ICMP, FIN, RPC scan, FTP proxy.
porta fechada
porta aberta
Scanning de vulnerabilidades
Aps o mapeamento dos sistemas e servios que podem ser atacados, as vulnerabilidades especficas sero procuradas por meio do scanning de vulnerabilidades. O port scanning define os alvos, evitando, por exemplo, que vulnerabilidades especficas do Windows sejam testadas em Unix. Alguns riscos que podem ser mapeados:
Compartilhamento de arquivos Configurao incorreta Software desatualizado Configuraes de roteadores perigosas Checagem de cavalos de tria Configurao de servios Possibilidade de negao de servio (DoS) Checagem de senhas fceis de serem adivinhadas
Scanning de vulnerabilidades
Esta tcnica pode ser utilizada para demonstrar problemas de segurana que existem nas organizaes. Ex: Nessus
Uma vulnerabilidade reportada pode no corresponder situao real do sistema ou uma vulnerabilidade importante pode deixar de ser reportada, pois a ferramenta funciona por meio de uma base de dados de ataques conhecidos.
usado tanto por administradores de segurana como por hackers.
IP spoofing
Endereo real do atacante mascarado, de forma a evitar que ele seja encontrado.
Usar toda a banda disponvel da rede pela gerao de um volume de trfego descomunal Enviar pacotes mal formados para um servidor para que o sistema operacional pare Enviar pedidos ilegais para uma aplicao para faz-la parar Fazer vrios pedidos que consomem CPU para que a mquina no tenha condies de atender outros pedidos Criar vrias conexes simultneas para que o servidor no possa aceitar outras conexes Criar vrios arquivos imensos em disco para ocupar todo o espao disponvel
Uma rede pode evitar ser usada como origem do ataque, proibindo a sada de pacotes com endereos de origem que no pertenam a ela
O servidor atacado fica com muitas conexes incompletas presas, que so liberadas por um temporizador (entre 2 a 4 minutos) Durante o ataque, o servidor fica praticamente impossibilitado de atender outras conexes, porque a sua tabela de conexes esgota a capacidade mxima
SYN Flood
SYN Flood. Atacante envia pacotes SYN mas no retorna ACK. Usurio legtimo no consegue conexo.
Fragmentao de pacotes de IP
Ex: teardrop pacotes TCP muito grandes. Vulnerabilidade explorada em verses anteriores do Windows e Linux. Firewalls no realizam desfragmentao. Um atacante pode criar um pacote como o primeiro fragmento e especificar uma porta que permitida pelo firewall, como a porta 80. O firewall permite a passagem desse pacote e dos fragmentos seguintes para o host a ser atacado. Um desses fragmentos pode ter o valor de offset capaz de sobrescrever a parte inicial do pacote IP que especifica a porta TCP. O atacante modifica a porta inicial de 80 para 23, por exemplo, para conseguir acesso Telnet. Fragmentao tambm usada como mtodo de scanning no nmap, tornando sua deteco mais difcil.
Smurf e fraggle
Ataque de Mitnick
Ataque clssico contra o especialista em segurana Tsutomu Shimomura no natal de 2004. Tcnicas utilizadas: IP spoofing, sequestro de conexo TCP, negao de servio, prognstico de nmero de sequncia.
Buffer overflow
Buffer Overflow
O espao reservado para varivel de 256 bytes. O que acontece quando passamos um argumento muito maior? A funo strcpy(dst, src) l o contedo do src at encontrar um zero (final de string) copiando o contedo para dst. No entanto no garantido que o destino possa comportar todo os bytes de src.
Buffer Overflow
Estado da stack no momento antes da chamada de strcpy(). A cpia dos dados feita escrevendo o primeiro byte de src (s) na primeira posio de dst (buf), sucessivamente at o que strcpy encontre um caractere null em src. Quando a funo foobar() for chamada, inserido na pilha o endereo de retorno (retaddr). Ao trmino da funo restaurado o valor do retaddr para o registrador. Se podemos sobrescrever o valor do retaddr possvel conseguir o controle do fluxo das instrues. Basta ento apont-lo para um buffer que contenha as instrues que desejamos executar .
Veja que a funo lostfunc no referenciada em nenhum momento e no deve ser executada exceto se o fluxo do programa for desviado!
A funo strncpy(dst; src; n) como a strcpy porm faz o bound checking necessrio para no permitir um overflow. A diferena que no mximo n bytes de src so copiados para dst, como especificado no terceiro argumento. A linha 7 copia 255 bytes de s para buf guardando a ltima posio para o delimitador de final de string (o caractere null ou zero) atribudo em 8.
Exemplo C/C++
Validao de Entradas
A aplicao que alimentada pelo usurio deve lidar com entradas inusitadas e maliciosas. Deve-se acreditar que toda entrada de dados maliciosa! No se deve confiar em absolutamente nenhuma informao fornecida pelo usurio. Como no h uma frmula para solucionar este problema, devemos adotar uma metodologia. Uma abordagem muito aceita entre os programadores envolvidos com segurana codificar o software de forma que ele aceite um conjunto restrito e precisamente mapeado de possibilidades; rejeitando todas as demais.
Analisar entradas invlidas no faz sentido e um esforo intil. Exceto quando se trata de linguagens com gramticas bem definidas, no se pode prever nem tratar todas as possibilidades.
Injeo SQL
SQL Injection um dos tipos de vulnerabilidades decorrentes do mal processamento de entradas. Imagine um sistema onde o login e a senha de um usurio so passados atravs de um formulrio web. As informaes fornecidas so validadas em um banco de dados, e o acesso garantido se a consulta acusar o sucesso da autenticao. Ao submeter a informao o usurio faz com que o servidor execute uma rotina de autenticao. Quando as informaes fornecidas combinam com alguma das linhas do banco de dados, o sistema imprime a mensagem Acesso permitido! :-), caso contrrio, imprime Acesso negado. :-(.
Injeo SQL
Para Maria se autenticar no sistema: abre seu navegador, carrega o formulrio, e entra com o nome e senha corretos. As variveis $login e $passwd sero preenchidas com os valores passados pelo comando POST. A autenticao feita atravs do comando SQL, que busca uma entrada da tabela users que contenha ao mesmo tempo o login e a senha fornecidos pelo usurio. No caso da Maria, o comando SQL processado ser select * from users where login='maria' and password='maria123'.
Injeo SQL
Uma falha susceptvel a SQL injection quando possvel escolher um input tal que a
query resultante contenha um comando arbitrrio. Vejamos novamente a codificao da query SQL: $qry= "select * from users where login='$login' and password='$passwd'" O que acontece quando a varivel $login contm um dos caracteres de controle da linguagem SQL? Por exemplo, se o token de comentrio (- -) fosse atribudo varivel $login, o que aconteceria? Ocorre que a varivel $login concatenada com as outras partes do comando sem haver nenhum tratamento prvio. As informaes fornecidas pelo usurio so substitudas na cadeia de caracteres $qry sem que seja assegurada a consistncia do comando resultante. Portanto, os campos Nome e Senha do formulrio so extenses do comando SQL! Os valores no so devidamente resguardados como um dos parmetros da clusula WHERE. Se o campo Nome tem valor -- (como no exemplo acima) e Senha deixado em branco, temos o seguinte resultado:
Injeo SQL
Note o token de comentrio - - (terminado por um caractere branco). Toda a linha
direita dele ignorado, resultando em: $qry= "select * from users where login= " Esta modificao ainda no o suficiente para burlar a autenticao do programa, j que no h entradas com o campo login nulo na tabela users. Partindo do princpio que no conhecemos nenhum usurio que nos permitiria entrar algo como: maria- - podemos concatenar uma condio OU com uma sentena verdadeira, para obter como resposta todas as linhas da tabela users. A query resultante da entrada da cadeia or 1 = 1 - - seria: $qry= "select * from users where login= or 1=1" Este comando far com que todas as linhas da tabela sejam retornadas, j que 1 = 1 sempre verdadeiro. Assim, o mecanismo de autenticao foi burlado. O atacante foi capaz de violar o controle de acesso sem nem mesmo precisar de um usurio forjado.
Injeo SQL
A maneira correta de implementar a construo da query validando a entrada antes
de ser concatenada ao comando, assegurando que no h comandos injetados dentro do valor recebido. Uma das maneiras de se proteger do ataque processar a entrada do usurio com a funo mysql_real_escape_string(), que adiciona escapes todos os caracteres reconhecidos como ameaas para um comando na linguagem SQL que so, na verdade, os prprios caracteres especiais ou tokens da linguagem. Poderamos usar a funo para adicionar escapes no contedo da varivel $login, desta forma:
Note que o segundo acento precedido de um escape, e isto faz com que todo o argumento, incluindo a seqncia de comentrio - - , seja considerado parte do campo login na busca. O resultado um sistema mais seguro, j que este novo mecanismo capaz de evitar a injeo do comando.
O script foi executado, fazendo o navegador mostrar uma janela com a mensagem XSS. O contedo do campo no formulrio foi injetado na pgina montada para exibio. Os navegadores mais populares usam um mecanismo de controle de acesso que isola a execuo do script por contextos definidos pela origem (servidor) e protocolo utilizado na comunicao. Tambm possvel fazer phishing em sites com vulnerabilidades XSS em alguns casos especficos, j que, como h a injeo de cdigo HTML, pode-se criar uma pgina forjando formulrios de senha, etc. Estas vulnerabilidades so encontradas de muitas formas nas aplicaes reais, e existem diferentes tcnicas para explorar cada uma delas. No entanto, a essncia do ataque a mesma.
Condies de Corrida
As condies de corrida ocorrem em ambientes que suportam
multiprogramao.
Este problema acontece quando dois ou mais processos acessam os mesmos recursos "simultaneamente". Um recurso pode ser modificado, intencionalmente ou no, por um processo, e ser requisitado por um segundo, fazendo que este se comporte de maneira no esperada.
Condies de Corrida
Semforos e locks so mecanismos que previnem acesso concorrente em um objeto por diferentes processos.
Uma operao que no pode ser interrompida em relao a um objeto chamada atmica.
Anatomia de um ataque
Varredura Reconhecimento
Enumerao
Invaso
Denial of service
66
Anatomia de um ataque
Varredura Reconhecimento
Enumerao
Invaso
Denial of service
67
1. Footprinting (reconhecimento)
Informaes bsicas podem indicar a postura e a poltica de segurana da empresa Coleta de informaes essenciais para o ataque
Nomes de mquinas, nomes de login, faixas de IP, nomes de domnios, protocolos, sistemas de deteco de intruso
So usadas ferramentas comuns da rede Engenharia Social Qual o e-mail de fulano? Aqui Cicrano. Poderia mudar minha senha? Qual o nmero IP do servidor SSH? e o DNS?
68
Anatomia de um ataque
Varredura Reconhecimento
Enumerao
Invaso
Denial of service
69
Ferramentas
Unix: nmap Windows: netscantools pro ($), superscan (free) system banners, informaes via SNMP
Descoberta da Topologia
Automated discovery tools: cheops, ntop, Comandos usuais: ping, traceroute, nslookup
Busca de senhas contidas em pacotes (sniffing) Muitas das ferramentas so as mesmas usadas para gerenciamento e administrao da rede
70
Mapeamento de rede
Anatomia de um ataque
Varredura Reconhecimento
Enumerao
Invaso
Denial of service
72
3. Enumeration (enumerao)
Coleta de dados intrusiva
Consultas diretas ao sistema Est conectado ao sistema e pode ser notado
Identificao de permisses
find /home/joao -perm 0004 (arquivos de joao que podem ser lidos por qualquer um...)
73
Anatomia de um ataque
Varredura Reconhecimento
Enumerao
Invaso
Denial of service
74
75
Anatomia de um ataque
Varredura Reconhecimento
Enumerao
Invaso
Denial of service
76
5. Escalada de privilgios
Uma vez com acesso comum, busca acesso completo ao sistema (administrator, root) Ferramentas especficas para bugs conhecidos "Exploits" Tcnicas
Password sniffing, password crackers, password guessing Session hijacking (sequestro de sesso) Replay attacks Buffer overflow Trojans
77
Anatomia de um ataque
Varredura Reconhecimento
Enumerao
Invaso
Denial of service
78
Anatomia de um ataque
Varredura Reconhecimento
Enumerao
Invaso
Denial of service
80
7. Ocultao de rastros
Invasor usa tenta evitar deteco da presena Usa ferramentas do sistema para desabilitar auditoria Windows: c:\ auditpol /disable (atividade do invasor) c:\ auditpol /enable Toma cuidados para no deixar buracos nos logs excessivo tempo de inatividade vai denuciar um ataque Existem ferramentas para remoo seletiva do Event Log Esconde arquivos plantados (back doors) Exemplo 1: attrib +h file Exemplo 2: cp backdoor.exe arquivo.ext:stream (esconde) cp arquivo.ext:stream backdoor.exe (recupera) (conceito de file stream foi introduzido pelo Windows2000)
81
Anatomia de um ataque
Varredura Reconhecimento
Enumerao
Invaso
Denial of service
82
Anatomia de um ataque
Varredura Reconhecimento
Enumerao
Invaso
Denial of service
84
Prevenindo Ataques
Fase
Reconhecimento Mapeamento
Ao preventiva
Poltica de senhas, Educao do usurio Nunca anotar passwords, Segurana Fsica, Biometria Desabilitar servios desnecessrios Usar senhas criptografadas e abolir Telnet, FTP, POP, rsh Adotar SSL: SSH, sFTP, S/MIME, Webmail, scp, https (mesmo na LAN) Kerberos VPN, IPSec Usar NAT para esconder nmeros IP internos TCP Wrappers, Redirecionamento Honeypots Restringir relaes de confiana entre hosts Atualizao do sistema: patches, service packs, hot fixes Firewalls + Sistema de Deteco de Intruso Testes de penetrao (Nessus, SATAN) Backup de arquivos de configurao (fast recovery) Permisses bem configuradas, educao do usurio Cpia dos Logs em outra mquina em tempo real (redundncia) Ferramentas de integridade (checksums) Scripts de verificao, Ferramentas de integridade (checksums)
86
Enumerao
Invaso
Escalada de privilgios
Ocultao de rastros
Instalao de Backdoors