You are on page 1of 7

1 - Ataques na camada 3 (IP)

Cada uma das camadas de comunicao tem seus prprios desafios de segurana. A Camada de Rede (camada 3 no modelo OSI) especialmente vulnervel a muitos ataques de negao de servio (Denial of Service - DoS) e apresenta muitos problemas na privacidade de informaes. O IP (Internet Protocol) o protocolo mais usado nesta camada. Os principais riscos de segurana na camada de rede associados ao IP so os seguintes:

IP Spoofing
O atacante envia mensagens para um host com um endereo IP indicando que a mensagem foi enviada por um host confivel. bvio que este endereo forjado e no corresponde ao da mquina do invasor. O propsito do atacante conseguir um acesso no autorizado na mquina alvo ou at em outros hosts. Para preparar um ataque de Imitao de IP, o hacker usa vrias tcnicas para descobrir o endereo IP de um host confivel e para modificar os cabealhos dos pacotes para que paream se originar do host confivel.

Ataques de Roteamento (RIP)


O Protocolo de Informao de Rota (Routing Information Protocol - RIP) usado para distribuir informaes entre redes do tipo rotas mais curtas (shortest-path). Tambm indica as rotas de sada numa rede local. O RIP no possui um sistema de autenticao e a informao fornecida por um pacote RIP geralmente usada sem uma prvia verificao. Um atacante pode forjar um pacote RIP avisando que determinado host (o dele, claro) tem a rota mais rpida para se sair de uma rede alvo. Como consequncia, todos os pacotes da rede alvo sero enviados para o host do atacante para serem roteados, onde podem ser examinados ou modificados. O RIP tambm pode ser usado para assumir a identidade de qualquer host, o que faz com que todo o trfego destinado ao host verdadeiro seja desviado para a mquina do atacante.

Ataques ICMP
O ICMP usado pela camada IP para enviar mensagens que no exigem resposta. Estas mensagens apenas levam informaes para um host. No existe autenticao no ICMP o que possibilita ataques de negao de servio (Denial of Service - DoS) e a interceptao de pacotes. Ataques DoS geralmente usam as mensagens "Time exceeded" (tempo esgotado) e "Destination unreachable" (destino no alcanvel) do ICMP. Ambas podem fazer com que um host corte imediatamente uma conexo. Um atacante pode interromper conexes enviando uma destas mensagens para um ou para dois hosts que estejam se comunicando. O resultado a queda da conexo. A mensagem ICMP "Redirect" (redirecionar) comumente usada em gateways quando um host concluiu erroneamente que o destino do pacote est fora da rede local. Forjando

uma mensagem "Redirect", o atacante pode iludir outro host e fazer com que mande pacotes para determinada conexo atravs da mquina do atacante.

PING Flood (ICMP Flood)


O PING um dos usos mais comuns do ICMP. Ele envia um "Echo Request" (solicitao de eco) para um host e espera at que este host devolva uma mensagem "Echo Reply" (resposta de eco). Como a mquina obrigada a responder um PING com um PONG, um atacante simplesmente manda zilhes de "Echo Request" para a vtima (da o nome inundao de pings). Obrigada a responder sem parar, o sistema entra em colapso ou fica muito lento. Este um ataque muito fcil de ser feito porque existem vrios programas que fazem ping e no exige grandes conhecimentos. Qualquer atacante p de chinelo pode pingar sem maior esforo.

Ping of Death
No ataque Ping da Morte um atacante envia um pacote ICMP solicitando ECHO que muito maior do que o tamanho mximo permitido para os pacotes IP da vtima. Como o pacote de requisio muito maior do que o normal, a vtima no consegue recompor os pacotes e o sistema operacional trava ou reiniciado com um reboot.

Ataque Teardrop
No Ataque da Lgrima o atacante usa o programa Teardrop para enviar fragmentos IP que no podem ser reagrupados porque o valor do offset do pacote foi adulterado. O monto de fragmentos dispersos provoca um reboot ou congela o sistema da vtima. Existem vrios outros programas safados como este: targa, SYNdrop, Boink, Nestea Bonk, TearDrop2, NewTear, etc. O melhor remdio para um ataque deste tipo rebootar a mquina "intoxicada".

Packet Sniffing
Como a maioria das aplicaes de rede distribuem pacotes em texto claro e legvel, um {farejador de pacotes pode extrair informaes preciosas e sensveis como nome de usurio e senha de contas e registros. Tambm possvel farejar informaes extradas de bancos de dados - pior do que isto, possvel descobrir o usurio e a senha de acesso a estes bancos de dados. Tudo isto um problema serssimo, j que fere a privacidade e uma arma perfeita para crimes.

Observaes
Como na maioria dos problemas de segurana de rede, no existe uma soluo mgica. H muitas tecnologias e solues disponveis para amenizar os problemas de segurana citados e para monitorar a rede para reduzir os estragos em caso de ataques. Problemas como a inundao de pings podem ser significantemente reduzidos colocando-se firewalls nos pontos crticos da rede para filtrarem trfego no desejado e de origem duvidosa. Utilizando o IPsec VPN na camada de rede, autenticao de sesses e usurios (ou host) e encriptao de dados na camada de enlace de dados, o risco de IP Spoofing e de Packet Sniffing reduzido significativamente. O IPv6, associado ao

IPsec, oferece mecanismos de segurana melhores para a comunicao em nvel de rede e acima.

2 - Ataques na camada 4 (TCP e UDP)


A camada de transporte (camada 4 do modelo OSI) especialmente vulnervel a ataques de negao de servio (DoS - Denial of Service) e a ataques de negao distribuda de servio (DDoS - Distributed Denial of Service). Os protocolos da camada 4 mais utilizados so o TCP (Transmission Control Protocol - Protocolo de Controle de Transmisso) e o UDP (User Datagram Protocol - Protocolo de Datagramas de Usurio). Os ataques mais freqentes que envolvem os protocolos TCP e UDP so descritos a seguir.

Ataque "SYN" TCP

Ataque de negao de servio - SYN TCP Este um ataque do tipo negao de servio (DoS - Denial of Service). Um DoS acontece quando um servio fica to sobrecarregado que no mais capaz de responder ou atuar. O ataque "SYN" TCP se aproveita da forma como uma conexo TCP estabelecida. Para efetivar uma conexo, o TCP usa um mtodo de "aperto de mo" (handshake) de trs etapas. Primeiro um host A envia um sinal SYN (pedido de sincronizao) para o host B. O host B precisa controlar esta e outras conexes parcialmente abertas numa "lista de escuta", onde os pedidos ficam por pelo menos 75 segundos. Muitas implementaes s conseguem controlar um nmero muito limitado de solicitaes (uma limitao perigosa).

Depois de enviar o sinal SYN, o host A espera por uma resposta de aceitao de sincronizao (SYN-ACK) do host B e, quando receber esta resposta, encerra o handshake enviando uma resposta de aceitao (ACK) para o host B. S ento a conexo efetivada. Quando um atacante envia, num curto intervalo de tempo, um grande volume de sinais de sincronizao para algum host e NO responde com um ACK as respostas SYNACK recebidas, a fila de solicitaes de sincronizao do host B fica entupida de pedidos, o host no consegue "digerir" todos os pedidos em tempo hbil e pedidos de conexo legtimos acabam sendo negados.

Sequestro de conexo TCP - Ataque Man-in-the-Middle


O sequestro de conexo TCP um dos possveis ataques do tipo Man-in-the-Middle. A traduo de Man-in-the-Middle Homemno-Meio, mas costumo chamar este tipo de ataque de ataque de "penetra" ou a "praga dos intermedirios". Num ataque de penetra o atacante permite uma autenticao normal entre dois hosts para depois assumir o controle da conexo. Existem dois modos de atuao: um durante o handshake (aperto de mo) de trs etapas do TCP e o outro no meio de uma conexo j estabelecida. O sequestro de conexo se aproveita de um "estado desincronizado" na comunicao TCP. Quando dois hosts no esto adequadamente sincronizados, eles descartam (ignoram) pacotes um do outro. Ataque do penetra (Man-in-the-Middle) Neste momento, um atacante pode injetar pacotes forjados que tenham os nmeros sequenciais corretos (e potencialmente modificar ou adicionar comandos na conexo). Isto exige que o atacante esteja no caminho da comunicao, exatamente entre os dois hosts, para poder espionar e reproduzir pacotes que estejam sendo enviados. O sequestro de conexes TCP permite que atacantes vejam e alterem informaes privadas.

Ataque SSL Man-in-the-Middle


Este tambm um ataque de penetra. O SSL/TLS, que disponibiliza autenticao e criptografia, foi criado para diminuir o risco nas transaes web. Acontece que, no final do ano 2000, foi descoberta a vulnerabilidade a este tipo de ataque. Para variar, uma implementao duvidosa (para no dizer porca) do Internet Explorer da Microsoft, abriu uma brecha homrica para atacantes que possuem qualquer certificado CA autenticado. O risco ainda maior quando um atacante puder oferecer certificados de autoridade prprios.

Ataque LAND
Neste tipo de ataque o meliante envia um fluxo forjado de pacotes SYN do TCP com endereos IP de origem, endereos IP de destino e nmero de porta idnticos. O sistema vtima fica piradinho da silva e pendura ou reinicializa (d um reboot).

Ataque de inundao UDP


O UDP um protocolo sem conexo, ou seja, no precisa de qualquer procedimento que estabelea uma conexo para a transferncia de dados. Um ataque de inundao UDP acontece quando um atacante enviar um pacote UDP para qualquer uma das portas do sistema-vtima. Quando o alvo recebe o pacote UDP, ele tenta descobrir qual o aplicativo que est aguardando na porta indicada. Quando percebe que no h aplicativo algum, ele cria um pacote ICMP de "destino no alcanvel" e o envia para o endereo forjado. Se uma quantidade suficientemente grande de pacotes UDP deste tipo forem enviados para diversas portas da vtima, o sistema acaba abrindo o bico...

Ataque de rastreamento de portas


O rastreamento de portas (Port Scan) uma das tcnicas mais manjadas usadas por atacantes para descobrir servios vulnerveis. Todas as mquinas conectadas numa rede oferecem servios que usam portas TCP e UDP. Um rastreamento de portas consiste em enviar uma mensagem de cada vez para cada uma das portas, desde as mais comuns at as menos usadas. O tipo de resposta indica se determinada porta est sendo usada - se estiver, o atacante pode test-la para encontrar possveis falhas de segurana.

Ataque de rastreamento de portas

3 - O que um buffer overflow?


O que um overflow
Para entender o que um overflow, a traduo da palavra ajuda muito. Overflow significa inundao e, quando aplicada como termo da informtica, significa um transbordamento que causa uma inundao.

Como os computadores trabalham apenas com bits, as menores unidades de informao, um overflow numa mquina deste tipo nada mais do que um transbordamento de bits. Mas como acontece um transbordamento de bits? Os computadores possuem chips especiais chamados de memria. Estes chips especiais recebem o nome de memria porque guardam informaes... informaes em forma de bits. Quando um programa est sendo executado, a sequncia de instrues que deve ser seguida, a instruo que est sendo executada no momento, endereos, valores de constantes, valores de variveis, etc, ficam armazenados na memria. Para que no haja baguna, a memria "loteada", ou seja, so definidas reas da memria para guardar cada coisa em seu lugar. Estas reas, assim como em qualquer loteamento, possuem limites e so conhecidas como buffers. Cada "terreno" da memria (ou buffer), por sua vez, dividido em clulas ou posies de memria. Cada uma destas posies identificada por um nmero, o chamado endereo de memria. Em cada clulas pode ser guardado apenas um bit. Quando preciso guardar bits na memria, o que geralmente feito em grupos de 8 (byte), 16 (word), 32 (double word) ou 64 (quadword), tambm preciso indicar o endereo no qual os bits devem ser colocados. Quando, por exemplo, o valor de uma varivel de 32 bits enviada para um endereo no finzinho do buffer onde, digamos, h apenas 20 clulas disponveis, os bits da varivel do uma de MST e 12 deles invadem o terreno de algum vizinho, ou seja, causam um overflow. Resumindo: um overflow acontece sempre que alguns bits transbordam e invadem uma rea que no lhes pertence

A sequncia de execuo de um programa


Existem programas muito simples que seguem apenas uma linha de execuo. Isto significa que as instrues colocadas no buffer de instrues da memria so seguidas da primeira at a ltima sem qualquer possibilidade de desvio. Por exemplo, se cada instruo tiver 5 bits ( apenas um exemplo!) e as instrues estiverem armazenadas nos endereos 100 at 200, elas sero executadas sequencialmente, uma atrs da outra: 100, 105, 110... 200. A maioria dos programas no segue o modelo que acabei de citar. Por exemplo, quando uma determinada tarefa deve ser repetida algumas vezes, costuma-se criar uma subrotina que chamada toda vez que esta tarefa precisar ser executada. Isto significa que, em determinados pontos da linha principal de execuo, ocorre um desvio para uma linha secundria. Para que o programa no "perca o fio da meada", guarda-se o endereo da instruo que chamou a subrotina, a execuo desviada para o endereo desta subrotina e, quando o servio estiver terminado, ela tem como retornar para o endereo da chamada. Para guardar estes endereos (imagine a linha principal chamando uma subrotina, que chama outra subrotina, que chama outra...) existe uma rea especial da memria chamada pilha (stack).

Buffer overflow
Existem dois tipos de buffer overflow, o stack overflow e o heap overflow. O mais fcil de entender o transbordamento de bits para a rea reservada da pilha (stack overflow).

Como j vimos, a pilha guarda, entre outras coisas, os endereos de retorno. Se, de repente, a linha de execuo entrar por um atalho e, no meio do processamento, houver um stack overflow que injeta bits que atropelam o endereo de retorno, o programa fica sem pai nem me - volta para um ponto diferente do ponto de chamada ou ento fica perdido de vez. Neste caso, geralmente a mquina trava ou d algum tipo de mensagem de erro que os mortais comuns no sabem o que quer dizer. O segundo tipo de buffer overflow o heap overflow. A rea da memria que ocupada dinamicamente pelo programa chamada de heap. Quando o programa comea a rodar, ele vai buscar informaes no sistema operacional para saber onde h "terrenos" livres, ou seja, reas de memria disponveis. nestas reas que o programa vai colocar vrios dados com as quais ir trabalhar. Este tipo de ocupao chamado de dinmico porque o aplicativo que faz a solicitao e porque, cada vez que o programa executado, esta rea pode ser diferente. Bem, em todo caso, o heap overflow ocorre quando bits invadem a rea reservada para o heap.

Explorando os overflows
Alm do transtorno que os overflows podem causar, a coisa pode ficar bem mais sria se eles forem usados para injetar cdigo estranho num programa. Estes so os chamados exploits. Novamente, o exemplo mais simples o exploit de um stack overflow. Os crackers, com frequncia, costumam aproveitar este tipo de vulnerabilidade. Como? Digamos que um aplicativo pea ao usurio que digite um valor. O cracker, sabendo que a checagem do tamanho deste valor no feita (ou que mal feita), insere um valor que bem maior, ou seja, que possui muito mais bits. Como o valor no "cabe" na rea que foi designada para esta varivel, os bits excedentes invadem a pilha e destroem o endereo de retorno. At a, nada de excepcional - o programa vai ficar perdido ou travar. Mas, e se, ao invs de digitar um valor qualquer, os bits excedentes deste valor sejam exatamente os bits que compem um endereo onde esteja localizado um chamado cdigo malicioso? Cdigo malicioso uma sequncia de instrues que realizam a tarefa que o cracker quer. O aplicativo, quando encontra o endereo de retorno falso, segue cegamente a ordem, vai para o endereo indicado e executa todas as instrues que encontra pela frente. Se o safado que colocou o cdigo malicioso dos "bons", ele coloca no fim do cdigo malicioso uma instruo para que o fluxo de execuo retorne para o endereo de retorno correto. Moral da histria: a mquina ou o aplicativo no travam e, na maioria das vezes, at se descobrir que houve um desvio forado (com roubo de informaes e outras gracinhas), pode ser tarde demais

You might also like