0. Segurança de rede – Network Security

 

Nos dias de hoje, a segurança da rede anda de mão dada com a segurança dos computadores, sendo difícil separá-los. Desde a porta do hotel, aos telefones celulares, aos computadores de secretária, tudo se encontra ligado em rede. Desta forma, a exposição dos sistemas coloca em xeque qualquer politica de segurança que a entidade tente implementar, por esse motivo é necessário um alerta permanente pelos administradores de rede das mesmas.

 

Anatomia de um qualquer ataque

 

 

1. Ataques Negação de Serviço: Denial-of-Service

 

Imaginem a situação em que chega a casa depois do trabalho e que o telefone toca, atende o telefone, mas ninguém responde. Desliga o telefone e imediatamente ele toca, novamente atende e a resposta é a mesma. Naturalmente que após vários toques o normal será desligar o telefone, uma vez que não posso efectuar sequer chamadas. No dia seguinte chega ao emprego e o patrão pergunta: “Onde esteve? Tentei ligar-lhe para casa mas tinha sempre o telefone impedido!!!”. Este é um caso típico em que alguém consegue ocupar os recursos do sistema, neste caso a linha telefónica, interferindo com o tráfego legitimo que queria usar o serviço, o patrão.

 

Como se pode ver é algo difícil de se defender, a resposta passaria pela redundância do sistema, uma segunda linha telefónica. Mas será viável economicamente ter uma segunda linha telefónica só para situações destas em que não se sabe quando acontecerá se é que alguma vez acontecerá.

 

Em Setembro de 1996, um hacker ou um grupo de, atacou os computadores da PANIX (Public Access Networks Corporation), um ISP de Nova Iorque. O que foi feito foi enviar mensagens de Hello (SYN Packects) para os computadores da Panix. O que era normal acontecer era os computadores da Panix responderem a este pedido para que o computador remoto pudesse continuar a conversação. O que os atacantes fizeram foi, manipular o endereço de retorno, do computador remoto, levando o computador da Panix tentar sincronizar com computadores que não existem. Os computadores da Panix, esperavam cerca de 75 segundos pela resposta (ACK) antes de abandonar a tentativa. Os hackers inundaram os computadores da Panix com uma quantidade dessas mensagens por segundo. Resultou que os computadores de Panix não conseguiam dar resposta à enchente súbita de pedidos levando ao crash do sistema. Este ataque é denominado por Syn Flooding.

 

Este foi o primeiro exemplo publicitado de negação de serviço – denial of Service – realizado contra um host na Internet. Desde este, muitos outros foram realizados e estão a acontecer neste preciso momento. Este tipo de ataques de negação, são um tipo de ataque particularmente repugnante efectuado contra aos sistemas de comunicação, pois os sistemas de comunicação foram criados para comunicar. O único objectivo é destruir e qualquer script kid pode usar ferramentas criada por outros e despoletar um ataque de negação de serviços. São ataques que não servem para aprender, não são fruto de uma demonstração de perícia ou de inteligência, são isso sim, absolutamente ridículos pois não só afectam entidades idóneas que produzem riqueza, como demonstram um desprezo total pelas regras de netetiquete – regra de etiquetas da net – e normalmente, são fáceis de localizar o seu autor.

 

Imaginem um ataque à caixa de correio da sua casa, existe um vizinho seu que por qualquer motivo não gosta da cor da sua gravata e então decide inscrevê-lo em todas as campanhas de vendas por correspondência, de catálogos, solicitação de informações, tudo o que possa imaginar. Começa a receber na caixa de correio 200 a 300 cartas a responder aos seus pedidos (pedidos forjados pelo seu vizinho), o que leva a que o correio a sério possa se perder entre o lixo todo depositado na sua caixa, isto caso tenha uma caixa com capacidade para tamanho volume. No caso do sistema de email passa-se o mesmo, ou seja, posso enviar uma enchente de mensagens para uma determinada caixa de correio que os computadores vão abaixo. É o chamado mail bombing e é uma forma de ataque efectivo, a melhor forma de o realizar é inscrever o endereço de email numa centena de mailling lists, levando a que o computador da vitima fique sem espaço em disco, ou sobrecarregar a ligação do email da vitima levando à perca de informação para a sua actividade. Sendo em parte difícil de conseguir localizar o responsável pela situação.

 

 

1.1 O que é um ataque negação de serviço – DoS Denial-of-Service?

 

É um ataque através do qual uma pessoa consegue colocar um sistema inutilizável ou abranda significativamente o sistema a ser utilizado por utilizadores legítimos, através da sobrecarga do sistema de modo a que mais ninguém tenha acesso a esse sistema.

Pode resultar que esse alguém prejudique ou destrua recursos de modo a que mais ninguém possa utilizar esse sistema. Podem ser acidentais ou deliberados. São considerado deliberados, quando um utilizador sem autorização, executa uma acção a que leva uma sobrecarga dos recursos. São acidentais quando os mesmos recursos se esgotam devido a uma acção não prevista.

A maioria dos sistemas operativos (incluindo NT e numerosas variantes UNIX), routers, e componentes de rede que tem que processar os pacotes a um nível das camadas OSI, e que são vulneráveis a este tipo de ataques. São difíceis de prever e de prevenir, no entanto, restringindo o acesso a sistemas críticos, recursos, e ficheiros, protegendo-os de utilizadores não autorizados poder-se-ão evitar muitos ataques.

O número de ataques DoS tem vindo a aumentar todos os dias, segundo a UC San Diego cerca de 40.000 ataques são realizadas todas as semanas, isto em Agosto de 2001. Se um atacante não consegue aceder a um determinado recurso, a maioria deles opta por crashar a maquina através de um DoS. Significa que mesmo que tenhamos as máquinas seguras com os últimos patches somos ainda vulneráveis a este tipo de ataques.

 

Tipo de Ataques

Existem vários tipos de ataques DoS. O primeiro passa por crashar o sistema ou rede. Se um atacante poder enviar para a vitima, dados ou pacotes que o sistema não espera, vai levar a que o computador tenha um comportamento para o qual não estava previsto, levando a um crash ou shutdown, desta forma ninguém terá acesso aos recursos do sistema. Do ponto de vista do atacante, é que se pode realizar este tipo de ataques tornando um sistema inacessível com poucos pacotes. Na maior parte das vezes para reactivar o sistema requer por vezes a intervenção do administrador da rede. Assim este primeiro tipo é bastante prejudicial pois requer pouco esforço para efectuar e interacção humana para consertar.

O segundo tipo de ataque passa por inundar o sistema ou a rede com tanta informação por forma ao sistema não possa dar resposta. Se um determinado sistema estiver dimensionado para lidar com 100 pacotes por minuto, e um atacante enviar 10.000 então quando os utilizadores legítimos do sistema tentarem aceder não o poderão fazer pois todos os recursos estão exaustos. Quando o atacante parar de inundar o sistema então este retoma a sua actividade normal. Este tipo de ataque requer muita energia por parte do atacante pois este tem que estar continuamente a inundar o sistema. Em alguns casos, este tipo de ataque pode crashar o sistema mas no entanto para recuperar deste tipo de ataques requer uma intervenção humana mínima.

Assim temos:

    1. Consumo da largura de banda - Inundando a ligação da vitima, ou utilizando amplificadores

    2. Escassez de Recursos

    3. Falhas de Programação

    4. Ataques de Routing e DNS

 

O mais importante a ter em conta é que este tipo de ataques pode ser lançado a nível local ou utilizando a Internet.

 

 

 

Existem outro tipo de ataques de negação de serviço. Alguns atacam computadores, como os servidores de email ou servidores web, outros atacam os routers, outros servidores de bases de dados, etc. A ideia é sempre a mesma: inundar a vitima com uma quantidade de lixo que o sistema vai abaixo.

Um exemplo é o WinNuke, capaz de deitar abaixo uma versão do Windows95; alguém num único ataque foi capaz de deitar abaixo, 6.000 computadores a correr o Windows95 na Internet em Abril de 1999. Ataques deste tipo são comuns contra sites da web, serviços como o Akamai (um serviço remoto em cache) torna estes ataques fáceis de efectuar e difíceis de detectar.

 

 

1.2 O Problema

Por vezes acontecem negação de serviço, apenas porque houve uma ocorrência anormal de um factor com o qual não se esperava. O caso mais recente do serviço SMS no natal, em que toda a população portuguesa decidiu utilizar este popular serviço como forma de desejar votos de feliz natal. Resultado, uma utilização de pico no serviço, levou a que os sistemas não aguentassem a quantidade de pedidos, levando a um encerramento temporário do serviço. O caso do resultado da candidatura à universidade, é um caso em que os candidatos tentavam ver os resultados e esperaram alguns minutos, por vezes horas, para acederem à listagem da sua colocação. Poderá ser isto considerado um ataque? Aqui será apenas um erro de dimensionamento, ou por vezes nem isso, apenas um gasto racional de recursos. No entanto serve para demonstrar o problema que existe entre a distinção de um ataque ou de um uso anormal do serviço provocado por uma situação extraordinária.

 

1.3 Soluções

Alguns investigadores, propõem a adopção de medidas que forcem o cliente a efectuar um qualquer calculo para efectuar a ligação. A ideia é que o cliente tenha que disponibilizar de algum tempo computacional para efectuar a ligação, desta forma não poderá inundar a vitima com o número de ligações. É uma boa medida para ataques baseados na falha do protocolo TCP/IP, no entanto não funciona contra um ataque de negação de serviço distribuído de que irei falar mais adiante.

Tenho lido afirmações ou comentários que uma das principais razões para estes ataques será a falta de autenticação na Internet. A meu ver serve apenas para possivelmente acusar meia dúzia de implicados num ataque que serão tão vitimas como as próprias vitimas, não faz muito sentido. Ataques de negação de serviço fazem mossa nos sistemas apenas pela tentativa de entregarem pacotes, se esses pacotes estão ou não autenticados é irrelevante. Autenticação mandatória não servirá para prevenir estes ataques, ou para fazer o tracking dos atacantes. Ajudaria isso sim se a autenticação se fizesse em cada ponto da rede por onde o pacote passa, mas pensem só no possível overhead a que um só pacote estaria sujeito. Isto implicaria uma mudança no modo de funcionamento da Internet, reduziria consideravelmente a largura de banda pois em vez de meramente encaminhar os pacotes, todos os switches e routers tinham que os autenticar, isto para não falar nos hubs.

 

Outra solução passaria por filtragem a larga escala efectuada pelos ISP’s. se um rede poder bloquear um ataque de negação de serviço, este nunca atingiria o alvo. Aqui a autenticação poderia ser útil. No entanto filtragem de conteúdos a nível do ISP requer um esforço elevado financeiro e técnico, reduzindo também a largura de banda. Similarmente, uma modificação em larga escala no modo de funcionamento da Internet a nível dos routers e switches da Internet, poderiam aliviar um pouco este problema da largura de banda; eles poderiam recusar a fazer o foward de pacotes aparentemente forjados, uma vez mais uma mudança bastante profunda.

 

No entanto estas medidas para evitar o flooding dos computadores poderiam não ser muito eficazes. Isto porque a maioria dos ataques combinam o flooding com a exploração de uma determinada vulnerabilidade. Poderão ser evitados remediando a vulnerabilidade. Mantendo os sistemas actualizados, estarem em alerta em relação às últimas vulnerabilidades, são algumas das soluções. No entanto, e mais uma vez, não servirá de grande coisa se o atacante tiver poder de fogo superior, podendo sempre inundar a ligação.

 

Ataque de negação de serviço, não são intrusões, eles não afectam os dados. Estes ataques, só por eles, não podem roubar o nosso cartão de crédito ou os nossos dados pessoais dos sites, não podem transferir dinheiro do nosso banco online, os atacantes não podem lucrar directamente com o ataque. É claro que posso atacando uma companhia, fazer baixar o preço das acções, ou dar publicidade negativa à empresa e dessa forma encaminhar potenciais clientes para a empresa que defendo, mas isso são contas de outro rosário, tem a ver com as motivações dos ataques. Para uma empresa o maior risco de estar online é a perca de reputação, a má imagem. E para empresas com uma missão critica de sistemas online, um ataque de negação de serviços pode colocar a vida de pessoas em risco. Imaginem um ataque de negação de serviço perpetrado a uma torre de controlo de um aeroporto!!!

 

1. 4 Tipos de ataques DoS – Negação de Serviço (NdS não soa tão bem como DoS)

 

Alguns dos ataques que irei debruçar-me já cá andam por algum tempo e já foi possível encontrar solução para eles, no entanto são incluídos devido aos conceitos básicos de como os ataques são despoletados e dão uma ideia muito precisa da gama de serviços e protocolos que podem ser usados para realizar um DoS.

 

1.4.1 Ping of Death

 

Tipo de ataque que passa pelo envio de um enorme pacote ping para a vitima.

 

Detalhes

Sistemas operativos: a maior parte dos sistemas operativos

Protocolos/Serviços: ICMP Ping

 

Situando-se na categoria de ataques ao nível da rede contra hosts com o objectivo de atingir a negação de serviços. O atacante envia um pacote ping enorme para a máquina da vitima. Como a maioria dos sistemas operativos não sabia o que fazer com um pacote maior que o tamanho máximo permitido, o sistema operativo ou pendurava ou crashava. Este ataque operava a nível da camada 3 do modelo OSI, através do conhecimento básico do protocolo ICMP (Internet Control Message Protocol). O ICMP é utilizado como uma forma de controlar o estado da rede, exibindo mensagens de erro a respeito de determinados erros na transmissão dos pacotes.

Notar que os pacotes de ping tem o tamanho normal de 32 bytes. Utilizando o comando:

 

ping -l 500 10.1.1.20 (no caso MSFT) no caso Linux/Unix seria: ping -s 500 10.1.1.20

 

especifico que o tamanho do pacote a enviar é de 500 bytes invés do standard 32.

 

Descrição detalhada

O protocolo TCP/IP permite o tamanho máximo de um pacote até 65536 octetos (1 octeto=8 bits), contendo um mínimo de 20 octetos para o IP header e 0 ou mais octetos para informação adicional. É conhecido que alguns sistemas reagem de uma forma imprevisivel quando recebem pacotes de tamanho acima do estabelecido. Um host envia à máquina um ICMP_ECHO-REQUEST, e se a máquina estiver activa envia de resposta um ICMP_ECHO-RESPONSE.

Os atacantes construem datagramas ICMP acima do valor standard (que estão encapsulados no pacote IP). Desta forma envia-se pacotes ping acima do valor de 65536 bytes.

 

Código fonte do ataque

A maior parte dos sistemas operativos incluem o programa ping, como parte do seu sistema operativo de rede.

 

Como se proteger?

A melhor forma de protecção é através da aplicação do último patch fornecido pelo vendedor do SO. Quase todos os SO resolveram este problema. No entanto se tal não foi possível, pode-se bloquear os pacotes com um tamanho acima do especificado nos routers ou firewall.

 

Mais informação

http://www.cert.org

http://www.microsoft.com

 

O site da CERT mantém um tracking das mais recentes vulnerabilidades e fornece informação detalhada de como se proteger contra tais ataques.

 

1.4.2 SSPing

Tipo de ataque que passa pelo envio de uma série de pacotes ICMP acima do tamanho permitido mas altamente fragmentados.

 

Detalhes

Sistemas operativos: Microsoft Windows 95/NT

Protocolos/Serviços: ICMP Ping

 

SSPing utiliza os pacotes ICMP como uma forma de pendurar sistemas ligados à Internet ou numa rede que estaja a correr o Windows95 e NT, bem como versões antigas do MAC.

 

Descrição Detalhada

Se uma máquina tentar enviar grandes pacotes pela rede ou pela Internet, existe uma boa possibilidade de que os Routers que processam os pacotes venha a fragmentá-los  em bocados mais pequenos por forma a serem correctamente encaminhados pela rede até ao destino. Quando tal ocorre a máquina de destino recebe os pedaços dos pacotes e depois faz a remontagem deles. Este processo é denominado de fragmentação.

Como a vitima enviou pacotes ICMP acima do tamanho e altamente fragmentados através da rede, a vitima que recebe os pacotes vai tentar fazer essa remontagem, colocar os fragmentos por ordem para formar o pacote. Pacotes altamente fragmentados exigem que a stack TCP/IP mantenha o tracking da informação adicional por forma a remontar correctamente o pacote. Se a stack TCP/IP não foi construída correctamente quando tenta manter o track por forma a ordenar os diversos pacotes o resultado é o denominado memory overflow, que leva a que a máquina para de responder. Normalmente o atacante apenas precisa de enviar alguns pacotes para paralizar a vitima. Quando a vitima reinicia o sistema a comunicação perde-se pelo que o atacante permanece anónimo.

O programa Jolt e Jolt2 permitem efectuar este tipo de ataques, mais adiante falarei destes programas.

 

Código fonte do ataque

Como o ataque já é conhecido o código fonte encontra-se disponível em: http://newdata.box.sk/neworder/xforces/sspingeggdrop.zip

 

O agressor é outro programa que pode lançar diversos ataques de DoS incluindo o SSPing e encontra-se disponível em http://neworder.box.sk

 

 

Como se proteger?

Como este ataque tem impacto a nível dos programas da Microsoft, bastará fazer o download dos últimos Service Packs e patches. Microsoft fez um update à stack TCP/IP.

 

Mais informação

http://www.cert.org

http://www.microsoft.com

http://www.winplanet.com

 

1.4.3 Land Attack

Este tipo de ataque envia um pacote TCP SYN em que o endereço de destino e de origem são os mesmos bem como a porta.

 

Detalhes

Sistemas operativos: Maior parte dos sistemas operativos e routers

Protocolos/Serviços: IP

 

O Land attack é um programa que permite o envio de pacotes TCP SYN (que é a primeira parte do three-way handshake) em que o endereço de destino e de origem é o da vitima bem como a porta é a mesma.

 

Descrição Detalhada

Os campos que compõem o protocolo IP são bastantes no entanto existem alguns chave para este tipo de ataque:

    1. Source address - endereço IP origem

    2. Source port number - porta de origem

    3. Destination address - endereço IP origem

    4. Destination port number - porta de destino.

 

Em circunstâncias normais o endereço de origem será o da máquina que faz o pedido bem como a porta será a do protocolo utilizado. O endereço de destino é a quem é efectuado o destino.

O atacante faz o spoof dos endereços de origem IP e porta. Caracteristicas são:

 

    1. O endereço IP de origem e destino tem os mesmos valores.

    2. O endereço da porta de origem e destino tem os mesmos valores.

 

Como o protocolo TCP é um protocolo orientado para a ligação, que opera a nível 4, camada de transporte, logo como é fiável requer que seja feito o denominado three-way handshake para iniciar a comunicação. Quando uma ligação é iniciada, utiliza pacotes de SYN para sincronizar as duas máquinas. Os pacotes de SYN são iguais aos pacotes normais, só que tem activo o bit SYN, que indica os primeiros pacotes para iniciar a comunicação.

Quando um atacante utiliza este exploit, envia um pacote à máquina para iniciar a comunicação. O pacote tem como endereço IP de origem e porta de origem o endereço da vitima, pela técnica spoofed, o endereço IP de destino e a porta de destino é o da vitima.

A máquina da vitima recebe o pacote e responde ao endereço de origem com a porta de origem. Como o endereço é o mesmo do da máquina vitima, o sistema crasha ou pendura pois entra em roda-livre sem saber o que fazer ao pacote.

 

 

Código fonte do ataque

 

O código fonte está disponível em:

http://www.insecure.org

http://neworder.box.sk

http://hackersclub.com

 

Aggressor e Spike são dois dos programas capazes de lançar diversos ataques de serviços de negação incluindo o land attack. Também o juggernaut, programa capaz de "session Hijacking" tem incluído um gerador de pacotes incluido.

 

Como se proteger?

Mais uma vez a melhor forma de protecção é através da aplicação do último patch fornecido pelo vendedor do SO. Quase todos os SO resolveram este problema. No entanto se tal não foi possível, pode-se bloquear os pacotes spoofed nos routers ou firewall, bloqueando os pacotes na fronteira, que tenham o mesmo endereço de origem os IP's da rede interna.

 

Mais informação

http://www.cert.org

http://www.insecure.org

http://www.phrack.com

http://www.cisco.com

 

1.4.4 Smurf Attack

Este tipo de ataque envolve um pacote ICMP forjado enviado para um endereço de broadcast.

 

Detalhes

Sistemas operativos: Maior parte dos sistemas operativos e routers

Protocolos/Serviços: ICMP Ping

 

O Smurf attack é uma categoria de ataques a nível da rede perpetrado contra hosts com o objectivo de negar serviços a hosts. O atacante envia tráfego ICMP echo requests (ping) pata um IP de broadcast da rede utilizando um endereço de origem, IP spoofed, da vitima. Numa rede multi-access broadcast, pode levar a que algumas centenas de computadores da rede respondam ao pedido de cada pacote. O que faz com que os computadores da rede bombardeiem a vitima com resposta ao pedido forjado.

Existe um "primo" chamado de "fraggle" que usa pacotes UDP echo da mesma forma que pacotes ICMP echo. Actualmente as máquinas mais afectadas por este tipo de ataques são servidores IRC e seus fornecedores. Este tipo de ataque tem impacto na maior parte de equipamentos que processam pacotes.

 

 

Descrição Detalhada

Para se perceber este tipo de ataques é necessário entender como funciona o endereçamento ICMP broadcast. Um endereço de broadcast é um simples endereço IP que envia com um pacote serve para comunicar com todos os hosts num segmento de rede. Por exemplo, o IP broadcast para a rede 12.0.0.0 é o 12.255.255.255. Este endereço envia então o pacote para todas as máquinas da rede 12. Se existir um número elevado de máquinas nesse segmento de rede, utilizando um endereço de broadcast leva a consumir uma elevada largura de banda da rede, pois o sistema irá gerar pacotes individuais para cada máquina no segmento de rede.

Para começar o ataque, o atacante gera ICMP echo request (o mesmo que o ping), utilizando endereços de origem forjados e o endereço de broadcast como destino. O intermediário recebe os ICMP echo requests, sendo redireccionados para o endereço de broadcast da rede. Causando que o pacote seja enviado para todas as máquinas, no segmento de rede, com cada máquina a responder aos pedidos e enviando de volta um ICMP echo reply. Quando todas as máquinas na rede respondem ao pedido da rede, resulta numa degradação de serviço, ou mesmo negação de serviços, para aquele segmento de rede dado o elevado volume de tráfego gerado.

Como os endereços de origem IP estão forjados, todas as respostas são dirigidas ao endereço de origem especificado, que vem a ser o endereço da vitima. Devido ao elevado número de pacotes gerados enviados para o computador vitima, pode causar congestão na rede e potencialmente colocar a rede inacessível.

 

Descrição de variantes

O Fraggle é uma variação simples do ataque Smurf. Fraggle funciona da mesma forma que o smurf, com excepção que usa pacotes de echo UDP em vez de pacotes echo ICMP.

Papa Smurf é uma versão mais sofisticada e melhorada da versão Smurf, mas funciona da mesma forma.

 

Código fonte do ataque

 

O código fonte está disponível em:

Source code: http://www.insecure.org

Agressor: http://neworder.box.sk

Spike: http://hackersclub.com

 

Aggressor e Spike são dois dos programas capazes de lançar diversos ataques de serviços de negação incluindo o smurf attack.

 

Amplificadores de Smurf

Um amplificador smurf é realizado recorrendo a uma companhia cuja a reede não só aceita ICMP echo requests enviados para um endereço de broadcast, mas que permite ICMP echo replies enviados para fora. Como tem vindo a ser um elevado problema em ascensão na Internet, existe um site que lista as companhias que podem ser usadas como amplificadores de smurf. Este site http://www.pulltheplug.com.

 

Fyodor também arranjou uma maneira de utilizar o nmap para verificar se a rede pode ser usada como smurf amplifier.

Basta: nmap -n -sP -PI -O smurf.log '209.12.*.0,63,64,127,128,191,192,255'

 

Como se proteger?

A protecção contra este tipo de ataques pode ser realizada de duas formas: protegendo o intermediário, e protegendo a vitima.

As soluções para o intermediário podem ser separadas em duas formas preventivas: desactiva o IP-directed broadcast no router, e configurar o sistema operativo por forma a evitar responder a pedidos ICMP enviados para o endereço broadcast.

 

A protecção do lado da vitima, é mais dificil de encontrar solução, pois é necessário arranjar uma forma de evitar receber um grande número de resposta a echo ICMP enviados para um endereço broadcast.

 

Soluções para os intermediários

Desactivando os IP-directed broadcast no router, posso configurar de forma a negar trafego broadcast para a rede interna vindo de outras redes. É claro que o atacante procura é comprometer uma máquina interna da rede para dessa forma lançar o smurf attack.

Alguns SO podem ser configurados por forma a não responderem a pacotes ICMP enviados para um endereço IP broadcast.

 

 

Mais informação

http://www.cert.org

http://users.quadrunner.com/chuengen/smurf.txt

http://www.phrack.com

 

1.4.5 SYN Flood

Este tipo de ataque é realizado quando o atacante deliberadamente viola a three-way-handshake, e abre uma elevada quantidade de meias ligações TCP/IP.

 

Detalhes

Sistemas operativos: Maior parte dos sistemas operativos e routers

Protocolos/Serviços: IP

 

É um ataque que tem impacto na maioria dos sistemas operativos pois tem em consideração a ligação fiável TCP/IP, através da abertura de um elevado número de meias ligações TCP/IP.

Qualquer sistema ligado à internet, e disponibilizando uma rede TCP (tais como um servidor Web, FTP, servidor email, routers, etc), encontra-se sujeito a este tipo de ataque. As consequencias deste tipo de ataque pode variar dependendo do sistema. no entanto o ataque basea-se num procedimento fundamental para o protocolo TCP/IP.

 

 

Descrição Detalhada

Quando um sistema cliente tenta estabelecer uma comunicação com um sistema que fornece o serviço pretendido, o cliente e o servidor trocam uma série de mensagens conhecidas por o three-way-handshake. Esta técnica aplica-se a todas as ligações IP - telnet, web, echo, etc.

O cliente começa por enviar uma mensagem de sincronização SYN ao servidor. O servidor recebe a mensagem e de SYN e faz o acknowledge da mesma enviando ao cliente uma mensagem SYN/ACK. O cliente finaliza o procedimento de estabelecimento da ligação enviando ao servidor, e após receber o SYN/ACK responde enviando uma mensagem de ACK.

 

 

 

 

A potencial ameaça reside no ponto em que o servidor enviou o acknowledgment (SYN/ACK) de volta ao cliente, mas ainda não recebe de volta o ACK do cliente. É este o significado da meia ligação, o servidor possui em memória uma estrutura embebida onde estão descritas todas as ligações pendentes. Como é obvio esta estrutura tem tamanho finito, e pode ser alvo de um overflow, criando intencionalmente um elevado número de ligações pendentes.

A inundação de meias ligações pendentes fazem com que o sistema não possa aceitar mais pedidos de ligações até que a tabela esteja limpa. Normalmente, existe um timeout associado à ligação pendente, pelo que as meias ligações pendentes vão esgotando o tempo, e o servidor eventualmente poderá recuperar dessa situação.

A localização do atacante é mais uma vez dificil de saber, pois as meias ligações são realizadas forjando o endereço IP de origem, com endereços IP's de hosts que não estão online. Desta forma não é possivel identificar o agressor.

 

 

Código fonte do ataque

Dado que é um ataque já bastante conhecido e explorado, o código fonte está disponível em:

    Código fonte do Synflood.c: http://www.hackersclub.com

    Código para Synful.c e synk4.c SYN flooders: http://www.anticode.com

 

 

Como se proteger?

Actualmente não existe uma solução consensual para este problema, devido à actual tecnologia IP. No entanto uma correcta configuração do router e da Firewall podem reduzir a probabilidade de um ataque ser prejudicial

Um router ou firewal pode bloquear ou limitar este tipo de ataque, permitindo um número limitado de meias ligações que podem estar activas durante um determinado tempo. Por exemplo, se um servidor apenas consegue gerir 50 ligações, então o router deverá bloquear às 20 ligações. No entanto esta solução não é perfeita pois utilizadores legítimos podem ser bloqueados.

Utilizando o comando netstat é possivel verificar o número de meias ligações pendentes por forma a detectar um ataque.

Linux e Solaris apareceram com uma ideia para evitar estes ataques de SYN flooding, conhecida por SYN cookies. Funciona da seguinte maneira, depois que a fila do sistema começa a ficar cheia de meias ligações, para de armazenar a informação numa fila. E fá-lo, activando uma sequência inicial de número em função do endereço IP de origem. Desta forma se fôr um ataque de SYN flood, não terá sucesso uma vez que a máquina não será sobrecarregada com meias ligações, pois não ficam armazenadas na fila. Se fôr uma ligação legitima, então a terceira parte da ligação é concluida, e o servidor verifica o número da sequência, menos um, e corre a informação através da hash. Se eles coincidem, então a ligação é completada, se a informação hash não coincidir, então é eliminada.

 

Mais informação

http://www.cert.org

http://www.hackersclub.com

http://www.anticode.com

http://www.cisco.com

 

 

1.4.6 CPU hog

Este tipo de ataque é dirigido a crashar uma máquina NT, levando à exaustão de todos os recursos.

 

Detalhes

Sistemas operativos: Microsoft NT

Protocolos/Serviços: Application priority levels

 

É uma vulnerabilidade que explora a forma de como o Windows NT escalona as aplicações concorrentemente. É simples e eficaz. A falha é particularmente grave pois não necessita de um acesso fisico ao sistema, pode ser activa através da execução de um ActiveX ou por um plug-in da Netscape. Tornando fácil criar um web site capaz de crashar a vitima.

 

Descrição Detalhada

No Windows NT, quando uma aplicação corre, tem um nível de prioridade. Quanto maior o número, maior a prioridade. As aplicações no windows podem definir o seu nível de prioridade. Aplicações a correr em modo de Administrador podem definir o nível de prioridade até 32, aplicações com privilégios de utilizador podem definir níveis de prioridade até 16.

A vulnerabilidade funciona correndo o programa CPU Hog ao nível mais elevado de prioridade disponível, que é o nível 16 quando em utilizador. O NT irá tentar lidar com o CPU-hogging aumentando a prioridade das outras aplicações. No entanto o Windows Nt apenas permite aumentar até ao nível 15. Pelo que todas as outras aplicações, mesmo o task manager apenas correm ao nível 15, a única forma de recuperar o controlo da máquina é fazendo o reboot.

Hogging é uma das técnicas mais conhecidas e antigas de ataques DoS conhecidas. Muitos SO UNIX permitem ao utilizador definir limites em termos de utilização do CPU, por utilizador, limitando qualquer um a  um máximo de 50% dos ciclos disponíveis do CPU. Quase todos UNIX's actualmente, diminuem automáticamente a prioridade do processo de maior prioridade quando as aplicações sentem falta de CPU, em oposição ao Windows.

A Microsoft resolveria fácilmente este problema pelo aumento da prioridade do Task Manager acima do 16.

 

 

Código fonte do ataque

 

Este ataque é simples de efectuar e pode ser usado recorrendo ao básico C/C++ ou a um script perl. A componente chave do programa é a função SetThreadPriority capaz de colocar o programa a correr ao nível 16. Depois de activada, o programa vai para um loop sem fim, como se vê na instrução while(1). O loop não executa qualquer código, apenas o loop sem fim, pelo que a única forma de recuperar o controlo da máquina é fazendo o reboot.

 

Programa fonte:

 

int WINAPI WinMain(    HINSTANCE hInstance,

                    HINSTANCE hPrevInstance,

                    LPSTR lpCmdLine,

    { Message( NULL, "Cpu Hog", MB_OK);

        SetThreadPriority( GetCurrentThread(),

                        THREAD_PRIORITY_TIME_CRITICAL);

    while(1);

    /nunca aki chegará

    return 0;

    }

 

 

Como se proteger?

Para protecção basta aplicar os mais recentes patches e Service Packs da Microsoft.

 

Mais informação

http://www.microsoft.com

http://neworder.box.sk

 

 

1.4.7 Win Nuke

Este tipo de ataque passa pelo envio de band data a um sistema Windows. Band data são pacotes que não tem nada a ver com o que o SO estava à espera de receber naquela porta especifica.

 

Detalhes

Sistemas operativos: Microsoft

Protocolos/Serviços: porta 139, NetBIOS

 

Um ataque a nível da rede, contra hosts com o objectivo de negar o serviço. O atacante envia band data para a porta 139, NetBIOS, e como são dados que o host não está à espera, leva a que a máquina pendure ou crash.

 

Descrição Detalhada

Os pacotes IP contém flags por forma a comunicar de como o pacote deve ser tratado pelos routers ou processado pelos computadores. As mais comuns, são:

    - SYN - Sincronização, usada no estabelecimento da comunicação

    - ACK - aceitação, acknowledge.

    - URG - urgente, dados urgentes, tais como OOB (out of band data)

 

O atacante envia à vitima, comando especiais TCP/IP conhecidos por OOB para a porta 139 de um computador a correr o Windows. Com um programa como o WIN Nuke o atacante apenas precisa de digitar o endereço IP da vitima e depois carregar em nuke e já está. Quando os utilizadores são 'nuked' o seu computador exibe o tradicional ecrã azul.

 

 

Código fonte do ataque

 

O ataque pode ser lançado recorrendo a um pequeno script em perl. Básicamente o atacante cria um pacote com OOB e envia para a port 139

 

Programa fonte:

 

#!/usr/bin/perl

use IO::Socket;

IO::Socket::INET

->new (PeerAddr=>"xxx.xxx.xxx.xxx:139"

->send("Adeus", MSG_OOB);

 

Os programas estão disponíveis em:

    - Exe: http://www.jaydee.cz/filfree.htm

    - Código fonte: http://www.rootshell.com

    - Código e Exe: http://www.anticode.com

 

Como se proteger?

Para protecção basta aplicar os mais recentes patches e Service Packs da Microsoft.

 

Mais informação

http://www.cert.org

http://hackersclub.com

http://net.security.org

http://www.microsoft.com

 

 

1.4.8 RPC Locator

Este tipo de ataque faz com que o CPU da vitima trabalhe a 100%, passando pelo envio de dados para a porta 135.

 

Detalhes

Sistemas operativos: Microsoft NT

variantes: Inetinfo (porta 1031) e DNS (porta 53)

Protocolos/Serviços: RPCSS.EXE, porta 135

 

RPC significa Remote Procedure Call e permite ao atacante executar chamadas ao sistema conhecidas na máquina remota. O serviço explorado é o RPCSS.EXE que corre 135. Existem algumas variantes a este ataque que afectam outros serviços, nomeadamente o ISS e o serviço DNS.

O RPC é um ataque de serviço que provoca a utilização a 100% da CPU quando o atacante faz telnet à porta 135 da máquina da vitima. Dependendo da configuração da máquina e dos programas que correm podem levar a que a máquina pendure ou trabalhe de uma forma muito lenta.

 

Descrição Detalhada

O atacante fará telnet <endereço ip da vitima> 135 neste caso estará a ligar-se à porta 135 e digitando aleatóriamente ou lixo que o serviço não esteja à espera, o atacante pode levar a que o sistema fique confuso e utiliza 100 do processador para tentar resolver os pedidos. Nesta altura o atacante desligará a ligação pois o ataque foi bem sucedido. Para recuperar do ataque o administrador terá que fazer reboot da máquina.

 

Variante do ataque

Este tipo de vulnerabilidade também se encontra presente se o atacante fizer o mesmo à porta 1031 (serviço ISS, inetinfo.exe) ou ao serviço DNS (dns.exe porta 53). Em ambos os casos os serviços param de responder e a máquina necessita de ser reiniciada.

 

 

Código fonte do ataque

 

Para efectuar o ataque só é necessário fazer telnet ao serviço e digitar caracteres aleatórios, cerca de dez, e o ataque está feito.

O programa em perl a seguir, inicia a ligação na porta 135 e envia caracteres aleatórios.

 

use Socket;

use FileHandle;

require "chat2.pl";

$systemname = $ARG[0] && shift;

$verbose = 1; # diz o que está a atingir

$knownports = 1; #não afecta portas conhecidas

for ($port = $0; $port<65535; $port++)

{

if ($knownports && ($port == 53 || $port == 135 || $port == 1031)) {

next;

}

$fh = chat::open_port($systemname, $port);

chat::print ($fh, "Isto tem cerca de dez caracteres ou mais");

if ($verbose) {

print "A tentar a porta: $port\n";

}

chat::close($fh);

}

 

O código pode ser feito o download em:

    http://www.ntsecurity.com

    http://www.njh.com

    http://www.pancreas.com

    http://www.iss.net/xforce

 

 

Como se proteger?

Para protecção basta aplicar os mais recentes patches e Service Packs da Microsoft.

 

Mais informação

http://www.njh.com/latest/9701/970125-01.html

http://www.securityfocus.com

http://www.pancreas.com/wraith/hacking/cpuattacks.htm

http://www.ntsecurity.net/security/100CPU.htm

http://www.microsoft.com

 

1.4.9 Jolt2

Este tipo de ataque causa um DoS através do envio de um número elevado de fragmentos IP idênticos.

 

Detalhes

Sistemas operativos: Windows95/98/NT4/2000, Be/OS 5.0, Cisco 26xx, Cisco 25xx, Cisco 4500, Cisco 36xx, Network Associates Gauntlet, Webshield, Firewall-1 da CheckPoint no Solaris, NT, Nokia FW, Bay router (Nortel) firewall, e mais....

 

 

O Jolt2 é um programa que permite a utilizadores remotos espalhados pelas diferentes redes, enviar pacotes IP especificamente fragmentados para DoS por forma a atacar multiplos sistemas operativos em que colocam o processador da máquina da vitima a 100% por forma a tentar processar pacotes IP ilegais.

Este ataque que utiliza pacotes IP fragmentados idênticos, provocam que a máquina remota pendure durante o ataque. A CPU fica exausta a 100% do seu tempo de processamento ao tentar processar os pacotes IP, leva a que tanto a NIC bem como o GUI fique parado.

 

Descrição Detalhada

O site http://packetstormsecurity.nl tem a descrição de uma variação deste tipo de ataque, o Jolt2mod.c. É uma modificação simples ao Jolt2 que possui uma limitação em termos de taxa de processos simultaneos. É recomendado correr vários processos do Jolt2 em direcção ao alvo.

É de notar como nos ataques anteriores que este tipo, apenas serve para que a máquina fica inactiva durante o ataque, não podendo aceder aos dados ou modificar privilégios, no entanto é uma boa ferramenta para obrigar um administrador incauto a fazer o shutdown a uma máquina correndo dessa forma um processo previamente instalado por um atacante. Desta forma como determinados servidores estão configurados para fazerem apenas o shutdown em modo local, pode-se contornar esta segurança.

De volta a este tipo de ataque, o Jolt2 depende da fragmentação dos pacotes IP, em que os datagramas são divididos em pequenos pacotes de dados durante o transito. Como o tamanho máximo de uma frame varia de rede para rede, a fragmentação pode ser necessária pois toda a arquitectura de rede efectua ou agrupa os dados em grupos chamados de frames. A fragmentação ocorre sempre que um datagrama IP entra numa rede em que o tamanho máximo da frame é mais pequeno que o tamanho do datagrama. Neste momento, os datagramas são divididos em fragmentos. O pacote fragmentado viaja separado dos restantes até ao destino. Então o computador destino, recebe os fragmentos e faz a reassemblagem ou remontagem.

 

Nos sistemas operativos da microsoft o problema aparece porque existem falhas na forma como o sistema trata os pacotes IP fragmentados. Quando pacotes IP mal fragmentados, são enviados directamente à vitima, o factor de processamento associado à remontagem dos pacotes IP pode sofre um aumento acentuado, variando a taxa a que os fragmentos são enviados.

Na firewall Gauntlet, os ataques DoS afecta o tráfego HTTP. O daemon crasha e faz o dump do core, evitando desta forma que o proxy faça a politica de verificação, levando à rejeição de novas ligações.

Na FireWall-1 da CheckPoint, Jolt2 recorre ao facto de que este tipo de firewall não efectua a inspecção ou o log de pacotes fragmentados, até que estes sejam reagrupados. Desta forma a FW-1 é forçada a gastar os recursos disponíveis ao tentar fazer o reassemble dos pacotes.

Os dados enviados são 29 bytes (20 IP+ 9 dados), o que é valido pois é o último fragmento (MF=0). No entanto o tamanho total reportado pelo header do IP é 68 bytes. Este pacote deverá falhar o teste de estrutura, se for feito.

 

Como se processa

O acknowlegement de um pacote reportando um tamanho maior que o tamanho efectivo, é uma ocorrência normal. Isto acontece sempre que um pacote é truncado durante o transporte. Como o header é de 20 bytes, a quantidade dos dados é 48  bytes devido ao tamanho total ser de 68. Como o offset é de 65520, e o tamanho IP dos dados é 48 dá 65568, resultando que o tamanho IP ultrapassa o permitido que é 65535. Notar, que os dados enviados (9 bytes) não provocam overflow. Fragmentos são marcados como sendo "last fragments".

 

 

Código fonte do ataque

 

O código do programa pode ser encontrado em http://packetstorm.security.com. O programa deverá ser compilado no sistema operativo em que se destina correr. Fazendo o comando make jolt2, tendo-se o executável, para se ter acesso às opções basta fazer './jolt2 -h' obtendo-se:

 

./jolt2 <src address> -p <port number> <destination address>

 

http://packetstorm.security.com/0005-exploits/jolt2.c

 

Como se proteger?

Nas firewalls do tipo stateful packet-filtering, o pacote falha os testes de integridade. Se a firewall possui uma funcionalidade de reassemblagem do pacote, então não deverá fazer o foward de um único pacote pois não existem fragmentos válidos que precedam a sequência do ataque. Se a firewall mapear fragmentos para abrir as ligações, deverá detectar que não existe nenhuma ligação aberta para este pacote em particular pelo que o irá abandonar.

Em firewall do tipo proxy, a função proxy nunca deixará passar este tipo de padrão de ataque para uma rede protegida. No entanto se um proxy firewall estiver a correr sobre um sistema operativo vulnerável, e não possui a sua própria camada de rede (caso da MSFT que fia-se na sua IP stack), o ataque pode causar um DoS contra a própria firewall, levando a crashar a própria rede.

Em qualquer tipo de firewall, se a firewall fizer a reassemblagem dos fragmentos de um modo incorrecto (mais uma vez por confiar na stack da MSFT por exemplo), ficará vulnerável ao ataque qualquer que for o tipo de firewall utilizada.

Todos os fabricantes produziram patches para a os seus produtos, sugerindo soluções para além da adopção dos patches.

No caso da Gauntlet, é recomendado negar qualquer ligação à porta 8999 da firewall. Para a CheckPoint é aconselhado que o log à consola esteja desactivado. Microsoft sugere a instalação de um patch. Todos os router deverão filtrar os fragmentos se possível.

No caso de utilizar um IDS (Sistema Detector de Intrusões - Intrusion Detection System), deverá ter a certeza que se encontra actualizado com os últimos patches. No caso do Snort existe uma regra específica para os pacotes fragmentados. No caso de máquinas sensíveis, dever-se-á adoptar por um IDS host based (ver o trabalho sobre o Snort) e ser bastante duro no que respeita aos sistemas começando por fechar todos as portas não utilizadas.

 

 

Mais informação

http://www.packetstorm.security.com

http://www.antionline.com

http://www.sans.org

http://packetstorm.security.com/DoS/jolt2mod.c

http://home13.inet.tele.dk/kruse/jolt2.txt

 

1.4.10 Bubonic

Este tipo de ataque é realizado contra o Windows 2000 e certas versões do Linux (funciona contra um Ultra5 a correr RedHat Zoot). O funcionamento passa pelo envio aleatório de pacotes TCP com parametros aleatórios com o objectivo de aumentar a carga da máquina alvo por forma a provocar o crash.

 

Detalhes

Sistemas operativos: Windows 98 e Windows 2000

Protocolos/Serviços: IP&TCP

Escrito por: Andy Siske

 

O Bubonic utiliza a stack TCP/IP para realizar o ataque de DoS. O IP significa que os dados viajam encapsulados pela internet, é um protocolo orientado para datagramas, conectionless, e que não se preocupa com a ligação. O header opera, no modelo OSI, ao nível da camada de network, e contem diversos componentes por forma a assegurar que são entregues ao host apropriado.

O TCP por sua vez, é um protocolo orientado à ligação e utiliza uma sequencia de números de acknowledgement e controlo de fluxo por forma a assegurar que os dados são entregues de forma correcta. O TCP opera a nível da camada do transporte (modelo OSI), o header contém as portas de destino e de origem, bem como uma sequência de números de acknowledge. Como o TCP não contem os endereços de destino e de origem, o TCP tem que ser encapsulado dentro do IP datagrama por forma a chegar ao destino. Este por sua vez é ainda encapsulado numa frame Ethernet (no caso de ser uma rede ethernet), que opera ao nível da camada Data link do modelo OSI. Tudo isto é transmitido em séries de bits que são enviados através da camada fisica do modelo OSI. Recomendo a leitura das especificações TCP em http://www.rfc-editor.org em que o RFC0791 lida com o IP, enquanto o RFC0761 lida com o TCP.

 

 

Descrição variante

Todos os DoS tem como objectivo a degradação do sistema que está a atacar. A respeito da stack TCP/IP muitas ferramentas tem sido desenvolvidas ao longo dos anos, tendendo a explorar as fases do SYN, SYN/ACK e o ACK. Outras implementam tácticas como o envio de fragmentos mal formados, numa tentativa de crashar o sistema, outros mais rudes, enviam enormes quantidades de dados. Todos exploram as fraquezas do protocolo TCP/IP e das fraquezas da stack.

 

Como se processa

O Bubonic é uma ferramenta relativamente simples, que ainda dá ao atacante a possibilidade de fazer o spoof do endereço IP com a esperança de não ser detectado, escondendo a sua identidade no de outro computador.

Uma pesquisa na Internet revelou a existência de vários web sites contendo o código fonte do bubonic para realizar o download.

Para executar basta:

 

./bubonic <IP dst> <IP src> <size> <number>

 

Size: tamanho do pacote que não deverá exceder 1024, por forma a permitir extra info header pelos routers.

number: numero de pacotes a enviar.

 

No caso de uma máquina Windows 98, a máquina pára de imediato, e mesmo fazendo o reboot, mal ela se liga à rede fica imediatamente parada. A única forma a impedir ramificações do ataque é desligando-o da rede ou parar o ataque à rede de imediato.

O bubonic transmite um datagrama IP que contem 20 bytes de dados aleatórios. Outra complicação é que o bubonic envia um elevado número de pacotes sem se preocupar com as colisões, levando a que máquinas situadas no mesmo segmento de rede, mesmo que não afectadas pelo programa, vem a sua performance afectada como resultado da elevada taxa de colisões.

 

 

Código fonte do ataque

Pode ser feito o download do programa em http://www.antionline.com/bubonic.c

Devendo depois ser compilado.

 

Como se proteger?

Uma forma de se proteger, contra um ataque deste género com origem no exterior, passa pelo uso do NAT (Network Address Translation). Torna a um atacante do exterior, extremamente dificil de atacar directamente os sistemas internos. Como o atacante usa um endereço IP estático a FireWall pode estar preparada para desligar automaticamente qualquer trafego de um IP hostil.

Obviamente que devem ser aplicados os últimos patches e Service Packs.

Uma boa Gateway Firewall usada em conjunto com um router deve ser implementada. Um IDS de alta qualidade deve ser implementado também, um combinação dos router/firewall/ids trabalhando em conjunto será uma boa ajuda para a detecção de tráfico hostil.

 

1.4.11 Vulnerabilidade - Microsoft Incomplete TCP/IP packet

Neste tipo de ataque são enviados pacotes malformados à porta 139 da vitima, que irá afectar os serviços de rede e sistemas.

 

Detalhes

Sistemas operativos: Windows NT, Me, 9x

Protocolos/Serviços: TCP/IP, porta 139

 

Descrição

Se um utilizador mal intencionado envia uma inundação de pacotes TCP/IP especialmente-malformados para o computador da vitima na porta 139, duas coisas podem acontecer. A inundação pode paralisar o recursos de rede, no computador afecto, impedindo-o de responder aos pedidos dos clientes, quando o ataque para, volta a funcionar normalmente. Segundo o sistema pode pendurar até que seja feito o reboot à máquina.

 

Como se processa

Qualquer programa capaz de gerar multiplos pacotes fragmentados TCP/IP para um alvo especifico toma partido desta vulnerabilidade.

 

 

Como se proteger?

Podem ser usadas as seguintes tácticas por forma a prevenir estes ataques:

    1. Usar um bloqueador de portas para bloquear a porta 139. No caso de firewalls pessoais é extremamente fácil de o fazer.

    2. Desactivar o serviço no servidor File/Print sharing

    3. Aplicar o patch da Microsoft para o SO.

 

1.4.12 HP Openview Node Manager SNMP

O HP Openview Node Manager, pode ser comprometido devido a um unchecked buffer que existe no código do programa.

 

Detalhes

Sistemas operativos: Sun Solaris 8.0, Sun Solaris 7.0, Sun Solaris 2.6, Windows NT 4.0 e 2000, HP-UX 10.20 e 11.0.

Protocolos/Serviços: SNMP, HP Openview Network Node Manager 6.1

 

Descrição Detalhada

Se um pedido GET especialmente construído, com o tamanho de 136 bytes fôr enviado para os serviços web na porta 80 através do interface Overview5 CGI, o serviço SNMP irá crashar. Esta vulnerabilidade, depende dos dados entrados, e permite a execução arbitrária de código por um utilizador não autorizado.

 

Como se processa

Qualquer Web browser pode ser utilizado com a string apropriada.

 

Código fonte

Existe o seguinte pseudo código:

 

http://target/OvCgi/OpenView5.exe?Context=Snmp&Action=Snmp&Host=&0id=<string de 136 bytes>

 

Como se proteger?

Bastará aplicar os patches apropriados ao sistema operativo onde o HP Openview se encontra instalado.

http://ovweb.external.hp.com:80/cpe

 

 

Mais informação

http://www.securityfocus.com

 

 

1.4.13 NetScreen Firewall

Um utilizador não autorizado pode realizar um DoS contra a Firewall NetScreen. Ao fazer um pedido URL ao WebUI, que está disponível na porta 80, fará a firewall crashar. Torna-se necessário fazer o restart do serviço para recuperar a funcionalidade normal.

 

 

Detalhes

Sistemas operativos: NetScreen OS 2.5r1, NetScreen Screen OS 2.1r6, NetScreen Screen OS 2.10r3, NetScreen Screen OS 1.73r1

Protocolos/Serviços: HTTP, TCP/IP

 

Descrição Detalhada

Se o pedido do URL ultrapassar os 1220 bytes, uma firewall NetScreen irá crashar

 

Código fonte

Existe o seguinte pseudo código:

 

$echo -e "GET / `perl -e 'print "A"x1200'` HTTP/1.0\n\n"| nc = netscreen_firewall 80

 

Como se proteger?

Bastará aplicar os patches apropriados ao sistema:

http://www.netscreen.com

 

1.4.14 Checkpoint Firewall DoS

Existe um problema com o license manager utilizado pelo pacote da FireWall-1, utilizando uma licença do tipo IP limitado a correr em Solaris 2.X, pode ser utilizada para gerar um ataque DoS.

 

Detalhes

Sistemas operativos: Sun Solaris 2.6 e 2.5.1

Protocolos/Serviços: CheckPoint Firewall-1 4.1 (SP3, SP2)

 

Descrição Detalhada

O license manager da Firewall calcula o endereçamento IP da rede protegida ao contar o número de endereços IP disponíveis na interface de rede protegida, cada IP é adicionado ao número para calcular a cobertura da licença. Depois de o número de IP exceder o contratado, uma mensagem de erro é gerada na consola para cada IP que ficar fora da cobertura. A carga no sistema de firewall aumenta significativamente, por cada mensagem gerada. Devido a esta vulnerabilidade, um utilizador não autorizado pode tornar o sistema inacessível da consola ao enviar um número elevado de endereços IP para o interface interno. Mais uma vez a importância do NAT é fundamental.

 

Código fonte

Este ataque pode ser levado a cabo, utilizando um programa capaz de gerar IP's denominado de SynK4.c

 

Como se proteger?

Não existem patches disponíveis para esta vulnerabilidade, no entanto se executar o comando:

 

fw ctl debug -buf

 

inibe o logging consola de consumir recursos excessivos do CPU. Deve ser feito após cada instalação de Service Packs

 

Mais informação

http://www.securityfocus.com

 

1.4.15 ataques mais especificos

1.4.16 ataques locais

1.4.17 Ataques aos Windows 2000

 

 

1.5 Ferramentas para executar ataques DoS

Tal como qualquer vulnerabilidade já coberta, existem programas que um atacante pode usar para activar e explorar essas vulnerabilidades. No caso de ataques DoS, o objectivo último é o de negar o acesso a um componente em particular, acompanhado da desactivação desse componente, ou pelo consumo de todos os recursos. Devido a este objectivo, não interessa que vulnerabilidade ou ferramenta é usada, desde que os utilizadores legítimos não possam aceder a esse recurso. Baseados nestes pressupostos, um atacante vai experimentando várias ferramentas, explorar várias vulnerabilidades até que um seja bem sucedido. Assim em vez a maioria dos programas DoS, em vez de explorarem um tipo só de vulnerabilidade, fazem múltiplos ataques.

 

1.5.1 Targa

Na sua terceira versão o Targa é um programa que pode correr vários ataques de DoS diferentes. Escrito por Mixter pode ser feito o download a partir de:

 

http://packetstormsecurity.nl/ ou de http://www.rootshell.com

 

O que Mixter fez, foi pegar no código de cada uma das vulnerabilidades e colocar num único programa. O atacante tem a opção de lançar um tipo de ataque individualmente, ou então se quiser ser sádico, pode lançar toda a artilharia pesada contra a vitima. Desnecessário será referir que o Targa é um programa extremamente perigoso, podendo fazer graves mossas na rede de contra quem estiver a usar, o seu uso deve ser feito só quando devidamente autorizado.

 

Para instalar dever-se-á compilar e para tal é necessário possuir as librarias arpa, netinet e sys em C instaladas.

As opções para correr são várias:

 

./targa <start IP> <end IP> [-t tipo] [-n repeats]

 

Especificando a opção '-t0' estou a dizer-lhe para tentar todas as vulnerabilidades até que uma seja conseguida.

Conforme o programa vai tentando as diferentes vulnerabilidades, os simbolos gráficos vão mudando.

 

 

Esta é uma das muitas ferramentas utilizadas na negação de serviço. Bastará para tal consultar alguns dos sites indicados para se perceber as ferramentas postas à disposição.

 

1.6 Prevenindo ataques de negação de serviço

Devido ao poder e ao tipo de ataque, não existe nada que possa verdadeiramente garantir segurança contra um ataque deste género. No entanto podem ser tomadas algumas medidas no sentido de minorar as hipóteses de ocorrerem. Algumas das medidas que as empresas podem tomar são:

 

    1. Estrutura planeada de forma robusta e se possível com redundância

    2. limitar a largura de banda para determinados serviços ou por serviço.

    3. Manter os sistemas actualizados

    4. Correr apenas o número indispensável de serviços

    5. Permitir apenas o trafego necessário.

    6. Bloquear endereços IP que se suspeite hostis.

 

1.6.1 Estrutura robusta

Quanto mais redundante e robusta a estrutura for, melhor. Se uma empresa tiver no seu site um factor critico para a empresa, e estiver dependente de um router, com apenas uma ligação à net, e o servidor web a correr num único server, então é certo que mais cedo do que o previsto irá ter problemas. Tudo depende do dinheiro que a empresa estiver disposta a investir, depois de uma análise realista ao risco envolvido que determinadas opções terão para a companhia. Se uma companhia achar que ficar um ou dois dias com o site em baixo é tolerável, mas o servidor de correio deve ser robusto deve tomar as suas opções.

 

1.6.2 Limitações na largura de banda

Um ataque DoS contra um tipo de protocolo pode consumir toda a largura de banda da rede. Se um atacante inundar a porta 25, outra pessoa que tente aceder à porta 80 terá problemas. Pode-se definir que 25% da largura de banda será usado pela porta 25 e 50% pela porta 80.

 

1.6.3 Manter o sistema actualizado

Este item nem merece comentarios pois um razoável administrador sabe a que me refiro. A actualização do sistema, service packs, patches, no momento em que eles saem é um factor chave para manter um sistema minimamente seguro.

 

1.6.4 Correr o mínimo de serviços

Mais uma vez o administrador deverá ter o bom senso de apenas colocar a correr os serviços necessários na configuração do servidor. Deve estar sempre presente o Principio do privilégio minimo e o de minimo de serviços indispensáveis para funcionar convenientemente.

 

1.6.5 Permitir o tráfego necessário

Esta defesa é semelhante à da última medida, "correr o menor número de serviços" só que esta é destinada ao perimetro da rede, routers/firewalls. Certifique-se que a sua Firewall apenas deixa passar o tráfego necessário in/out da sua rede. Muitas empresas filtram o tráfego de entrada mas nada fazem em relação à saída.

 

1.6.6 Bloquear endereços IP

Depois que uma empresa tome consciência de que se encontra sob ataque, deverá tentar identificar de imediato o endereço IP de onde o ataque está a partir. O problema é que mesmo que bloqueie o tráfego no router externo, no entanto o router continuará inundado com tanto tráfego que os utilizadores legítimos não poderão aceder à rede. Assim logo que uma companhia reconheça assinatura de um ataque, o administrador deverá logo informar o seu ISP por forma a bloquear os pacotes. Como os ISP's tem uma largura de banda muito superior, e múltiplos pontos de acesso, podem bloquear o tráfego hostil e fazer com que o tráfego legitimo flua.

 

 

Se acham que DoS são poderosos vamos agora visualizar os Ataques de Negação Distribuidos.

 

 

 

 

 

2. Ataques de negação distribuídos – Distributed Denial-of-Service DDoS

 

DDoS, são uma estirpe mais virulenta de ataques de negação de serviço. A primeira ferramenta criada para este tipo de ataque foi lançada em 1999, e a Universidade do Minnesota foi o primeiro alvo público em Agosto de 1999, mas foram os mediáticos ataques no inicio do ano 2000 que colocou este tipo de ataque nas primeiras páginas de abertura dos serviços noticiosos.

Estes ataques são muito semelhantes aos ataques tradicionais de negação de serviço, só que desta vez não existe uma única origem de atacantes. O atacante começa por entrar e dominar dezenas ou mesmo centenas de computadores inseguros, os chamados zoombies, na Internet e instala um programa de ataque. Depois coordena todos eles para atacarem um determinado alvo ao mesmo tempo. O alvo, a vitima, é assim atacada por todos os lados ao mesmo tempo, as defesas deixam de funcionar e o inevitável acontece – crash.

 

 

 

Figura que demonstra um Distribute Denial of Service

 

É mais ou menos como um ataque de pizzas: mais uma vez a vitima tem um vizinho que por qualquer motivo não gosta dele. Esse vizinho sabe que a vitima, no dia seguinte, tem uma reunião importante no trabalho, então e com requintes de malvadez, telefona a encomendar comida chinesa, entrega de pizas, encomenda de mobílias, compras no hipermercado, tudo para ser entregue às 23:00 dando a direcção da vitima. Às 23:00 a campainha da casa da vitima é assaltada por um engarrafamento de entregas de pizas, compras, mobílias, comida, etc, todos a pedirem para serem pagos para entregarem a mercadoria. No entanto o atacante não é visto nas imediações, está em casa a ver pela janela.

Este tipo de ataques é incrivelmente difícil, senão mesmo impossíveis de defender ou prever. No ataque de negação de serviço tradicional, a vitima é capaz de discernir qual a origem do ataque, e desligar ou rejeitar a ligação, bloqueando o acesso ao seu sistema o atacante. Num DDoS, não existe uma origem só, o sistema deverá rejeitar todas as ligações, mantendo apenas aquelas que ele sabe serem de confiança, no entanto os endereços de confiança podem ser forjados (um pouco mais difícil mas possível), e também não resulta numa rede pública.

 

Os ataques DDoS, podem ter diferentes finalidades:

  1. Sobrecarregando os serviços de um servidor em particular, ou um recursos especifico.

  2. Os que sobrecarregam os recursos dos Routers e consomem largura de banda

  3. Ataques destinados aos servidores apenas com o intuito de sobrecarregar o CPU ou as ligações de rede.

  4. Outros atacam tudo na rede.

 

Este tipo de ataques só tem tendência a piorarem. As ferramentas actuais que permitem a realização de ataques DDoS, requerem que o atacante entre num largo número de máquinas (relativamente fácil para quem já fez um scan à rede da netcabo por exemplo, é de arrepiar os resultados), instale o programa zombie, fazer com que esse programa não seja descoberto pelo utilizador do computador zombie, e coordenar o ataque… tudo sem ser apanhado na preparação do ataque. A ferramentas actuais é normal recorrer-se a virús, worms ou os vulgares Trojans, como uma forma de propagar esses programas zombies. Depois será lançar o ataque pela activação de um comando código que activa esses zombies.

Como estes ataques são realizados a partir de uma gama de endereços IP bastante grande, torna muito difícil o bloqueio bem como de detectar, pois um número pequeno de pacotes de cada máquina zombie podem escapar aos detectores de intrusões IDS. Se um único endereço IP está a atacar o sistema, pode-se bloquear esse IP na firewall, no entanto se o ataque tiver origem em 100 endereços já se torna mais complicado.

 

Um documento muito bom em termos de descrição de ataques de negação de é o publicado pela Mazu Networks em http://www.mazunetworks.com/ddos_library/ e que pode ser consultado aqui (tamanho do ficheiro pdf, de 6Mbytes). Com uma animação muito bem conseguida de como funcionam os diversos tipos de ataque (Ver animação).

 

 

Um caso bastante publicitado, foi o ataque que ocorreu em 1999, em que alguém colocou o post relativo a um falso update do Internet Explorer da Microsoft. Na realidade era um Trojan que provocava que o computador infectado enviasse pacotes a hosts que pertencessem à rede Búlgara de Telecomunicações, provocou problemas de negação de serviço durante muito tempo. O caso mais recente, Agosto de 2001, em larga escala, o CodeRed que tinha por missão atacar o site da Casa Branca.

Mais uma vez, apanhar o autor do ataque é uma tarefa árdua, pois se os logs telefónicos forem mantidos por algum tempo, coordenados com os logos dos ISP’s por forma a tentar verificar quando um dos zombies foi infectado, por forma a localizar a fonte é uma tarefa difícil. Ainda mais difícil se torna se estiver numa Ásia ou Europa de leste em que as leis são inexistentes em termos de protecção às telecomunicações, ou basta que o pacote tenha origem num desses países, e é relativamente fácil fazê-lo, basta encontrar um servidor de email a fazer o relay.

Mais uma vez o verdadeiro problema reside na centena, nos milhares de utilizadores actualmente ligados 24 horas sobre 24h, utilizando cable modems, DSL, ADSL, etc, ligados à Internet com endereços IP estáticos, que são usados como rampas de lançamento deste tipo e não só, de ataques. Os serviços noticiosos focam os ataques às grandes empresas, no entanto o verdadeiro problema reside nos sistemas individuais. Um utilizador vê a noticia de ataques de DDoS a uma empresa como a eBay ou a Yahoo sem suspeitar sequer que se calhar o seu computador é um dos que está a participar no ataque.

Novamente uma das soluções passa pela adopção de alertar os utilizadores para a manutenção dos seus sistemas. De notar que mesmo que 99% dos utilizadores adoptassem firewalls pessoais, ainda sobrariam alguns milhares de sistemas desprotegidos.

 

Já li, e assisti a algumas conferências académicas acerca de ataques DDoS, e o consenso é que não existe uma defesa em geral. Monitorizar continuamente a rede ajuda, assim como a capacidade de mudar para sistemas de backup, routers e servidores. Por vezes, e mais frequentemente do que seria desejável, são explorados bugs particulares dos sistemas e que entretanto já foi lançado o respectivo patch, mas não foi aplicado, pelo que a vulnerabilidade pode ser explorada.

 

2.1 Ferramentas para executarem ataques DDoS

 

Mais uma vez repito, que o uso destas ferramentas são extremamente perigosas, pelo que é totalmente desaconselhável o uso das mesmas numa rede não controlada por nós ou sem autorização.

Existem um manancial enorme de ferramentas disponíveis na Net para lançarem ataques de DDoS. Várias podem ser encontradas em

 

http://packetstormsecurity.nl/distributed/

 

 

2.1.1 Tribal Flood Network 2000

Pode ser visto como uma melhoria do Targa, escrito pela pela mesmo autor, pode ser feito o download a partir de

 

http://packetstormsecurity.nl/distributed/

 

Corre os mesmos ataques que o targa com mais algumas explorações de vulnerabilidades. Como o TFN2k é uma aplicação DDoS a correr em modo distribuído, existindo duas componentes. O módulo cliente e o modulo servidor. O módulo cliente é a parte que controla os servidores, e que dá a ordem de aos servidores para atacarem recorrendo a uma dada vulnerabilidade. O módulo servidor corre em modo de escuta, listening, e aguarda os comandos a partir do lado cliente. No site indicado possui ainda um texto referente ao futuro dos ataques DDoS.

Para instalar o programa basta:

 

    tar -xvf tfn2k.tar

 

de seguido de

 

    make all

 

Neste momento os componentes servidor e cliente estão prontos a correr, tanto em módulo servidor como em cliente ou ambos.

 

   ./tfn

 

Temos acesso a uma quantidade elevada de opções. Como o TFN2k é uma arma de ataque, para o activar temos que fornecer uma password, isto apesar de haver programas capazes de descobrir as passwords. É de realçar que é um programa muito stealth,, ou seja, utiliza vários processos que o tornam dificil de detectar, por exemplo: todas as comunicações entre o cliente e o servidor são enviadas utilizando pacotes ICMP_ECHO_REPLY. Como o número das portas não são utilizados, tornam dificil de o detectar. Desta forma, mesmo que um administrador de rede possa/deve usar port scanning regulares não vai detectar esta vulnerabilidade se o sistema estiver infectado.

 

 

2.1.2 Trinoo

Trinoo é uma das primeiras ferramentas a ser criada, pelo que não tem as funcionalidades do TFN2k.  Como o Trinoo, em oposição ao TFN2k utiliza ligações TCP/UDP, torna-se fácil de detectar com um port scanning regular à rede. As portas utilizadas são as seguintes:

 

    1. Atacante para o master: 27665/tcp

    2. Master para o daemon: 27444/udp

    3. Daemon para master: 31335/udp

 

Com o trinoo, os daemons residem nos sistemas que lançam o ataque, o master controla os vários sistemas daemon.

 

Em Agosto de 1999, uma rede trinoo de 200 computadores deitou abaixo a rede da Universidade do Minnesota durante dois dias. O programa pode também ser encontrado em http://packetstormsecurity.nl/distributed/.

 

2.1.3 Stacheldraht

É mais uma ferramenta de DDoS que combina as potencialidades do TFN2k e as do Trinoo, com algumas funcionalidades extras, tal como a comunicação encriptada entre componentes e a actualização automática dos daemons. Tal como o TFN2k, utiliza o ICMP e UDP:

 

    1. Cliente para o Handler - 16660 TCP

    2. Handle de e para os agentes - 65000 TCP; ICMP ECHO_REPLY

 

O atacante faz comunicação com os handlers, os handlers controlam os agentes. Os agentes lançam o ataque.

 

2.2. Prevenindo DDoS

Como no ponto 1.6 debrucei-me sobre os ataques de negação de serviço, que se aplicam também aos de negação de serviço distribuidos, o método de ataque é básicamente o mesmo, inundar a vitima, pelo que as defesas que um administrador de rede deverá adoptar deverão ser practicamente as mesmas, quer esteja a ser atacado por um único computador ou por vários.

 

Como um DDoS implica o uso de outros sistemas comprometidos, as empresas deverão ter o cuidado de manter uma politica de segurança, por forma a evitar que os seus sistemas participem em ataques de DDoS. Além da regra já citada, de manter o mínimo de privilégios e serviços, existem mais alguns pontos que gostaria de focar:

    1. Manter a rede segura e actualizada

    2. Instalar sistemas de detecção de intrusão (IDS) - ver trabalho sobre o SNORT

    3. Utilizar as ferramentas do atacantes, scanners, etc

    4. Correr ferramentas de controlo dos zombies.

 

2.2.1 Manter a rede segura

Se um atacante não consegue acesso a uma rede ou a um sistema, ele não poderá instalar DDoS server no sistema. Um dos meios usados, pode ser o correio electrónico, pelo que é recomendável ter uma politica de segurança para o email em que este será analisado por ferramentas Anti-virús. Se o perimetro da rede não for quebrado, e o sistema possa ser mantido seguro, então os computadores do sistema não podem ser usados para DDoS. Isto parece ser daquelas afirmações de LaPalisse no entanto a politica de segurança de algumas empresas é tão pobre ou inexistente, que nem vale a pena mencionar.

 

2.2.2 Instalar Sistemas Detectores de Intrusão (IDS)

No trabalho referido neste ponto é possivel avaliar as capacidades de um desses sistemas, pelo que mencionar as vantagens seria estar a repetir-me. No entanto e mais uma vez reforço a ideia.

Existem dois tipos gerais de IDS: Host-based e Network-Based. Um IDS network-based é um dispositivo passivo que se senta na rede e faz o sniffing de todo o trafego daquele segmento. Um host-based corre num servidor individual e revê activamente o audit log à procura de indicações de ataque.

Assim como existem dois tipos de IDS existem também duas tecnologias em que os IDS assentam: Procura de padrões (pattern matching) e o detecção de anomalias.

O procura de padrões possui uma base de dados de assinaturas do ataque, o que faz disparar um alarme quando existe um ataque. O de detecção de anomalias, determina o que é "normal" transitar na rede, e o que não coincide é marcado como suspeito, este tipo de IDS é bastante mais difícil de implementar uma vez que o tráfico entre duas companhias pode ser bastante heterogéneo. Assim a maioria dos IDS são os que utilizam o pattern matching. Os seguintes programas são os mais comuns e também dos mais potentes:

  • Shareware

  • Shadow

  • Snort

  • Courtney

  • ISS RealSecure

  • Commercial

  • Axent NetProwler

  • Cisco Secure IDS (NetRanger)

  • Network Flight Recorder

  • Network Security Wizard's Dragon

Quando o objectivo é prevenir ataque distribuidos, é recomendável o uso de network-based IDS e de host-based.

 

2.2.3 Ferramentas de scanning

É fundamental que um administrador de rede faça regularmente um scanning à sua rede por forma a detectar portas abertas nos sistemas e que não deveriam estar, inclusive guardar os resultados numa base de dados para posterior comparação. No entanto o que se pretende é encontrar programas DDoS server instalados, e para tal é possível encontrar algumas ferramentas que ajudam nessa tarefa:

 

Find_ddos: Tem diferentes versões e corre em vários sistemas operativos. Tendo por norte o número de ataques DDoS ocorridos, o governo dos Estados Unidos, desenvolveu esta ferramenta, por forma a procurar quer agente quer server. Faz o scanning de vários OS podendo detectar vários programas de DDoS.

 

SARA (Security Auditor's Research Assistant): é um detector de vulnerabilidades capaz de detectar uma variedade de vulnerabilidades no sistema. No link a seguir apresento os resultados referentes a uma auditoria a uma máquina Linux RedHat 7.2 (Fujitsu), e o resultado a um Windows 2000 Server com os últimos Patches. Resultados

 

DDoSPING v2.0: Corre numa plataforma Windows e é do mais simples de utilizar.

Uma imagem do DDoSPING

 

RID - é mais um detector de DDoS, e é configurável, pelo que pode ser actualizado pelo utilizador.

 

Para mais informações acerca das ferramentas para detectar DDoS basta ir a http://packetstormsecurity.nl/distributed/.

É de notar que estas ferramentas só funcionam, ou detectam os agentes, se estes estiverem instalados nas portas por defeito.

 

2.3 Correr ferramentas zombies

Em muitos casos a empresa só detecta que está a ser usada para um ataque, quando a largura de banda diminui drásticamente. Neste caso, o IDS instalado dará o alerta, assinalando o problema. Neste caso pode-se correr o programa Zombie Zapper por forma a impedir que o sistema fique inundado de pacotes.

Imagem do Zombie Zapper

 

Este programa assume que os agentes foram instalados nas portas por defeito, e defende contra o ataques que se pode ver na imagem.

 

3. Em Conclusão

Os ataques DoS e DDoS, podem provocar um estrago elevado e são difíceis de proteger. É assim, vital, senão mesmo critico, que uma empresa com uma missão-critica ligada à Internet, possa perceber os riscos associados com o que irá enfrentar, e o que poderá fazer para minorar o ataque. É necessário que a empresa faça uma análise de risco associado e define quanto dinheiro está disposta a gastar na redução do risco. Pois pelo que aqui foi descrito, é muito fácil a um atacante lançar um ataque, a empresa é que está em risco, pelo que terá que criar os respectivos mecanismos de defesa.

 

 

 

4. O Futuro da segurança das redes

 

No futuro, out-of-band signaling será a melhor forma de lidar com as enormes vulnerabilidades da Internet. Não será o Graal – nós inseguros ainda existirão para criar problemas – mas ainda demorará um pedaço a lá chegarmos.

Infelizmente existem vários problemas. A Internet está desenhada e configurada como uma rede igualitária, qualquer pessoa pode ligar-se à Internet simplesmente ligando-se. Um sistema de out-of-band terá que ser gerido centralmente. Existirão pontos finais e routers internos, e eles comportar-se-ão de maneira diferente. Nada será como a Internet dos dias de hoje.

 

 

6. Bibliografia:

Schneier, Bruce - "Secrets & lies", Wiley - 2000

Cole, Eric - "Hackers Beware", New Riders - 2001

McClure, Stuart et al- "Hacking Exposed" , 3ª Edição, FoundStone - 2001

Chirillo, John -"Hack Attacks Denied", Wiley - 2001

Chirillo, John -"Hack Attacks Revealed", Wiley - 2001

Scambray, Joel et al - "Hacking Windows 2000", Wiley -2001