• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Ecchi

Como esgotar tráfego num host - meios e protecções?

8 mensagens neste tópico

Ultimamente comecei a pensar como é que eu poderia "fechar" sites sem utilizar grandes acrobacias dos verdadeiros hackers, lol.

Criei um código .php decerto que quem olhar para ele e perceber de php vai dizer alguns "loles", mas pronto, só comecei a perceber o que era php a semana passada.

O funcionamento é simples, eu procuro em um determinado site pela imagem com mais tamanho (tamanho de armazenamento não é de tamanho mesmo, lol) e faço-a aparecer no meu browser milhares de vezes, obviamente ao pedir milhares de imagens ao servidor do site vou-lhe consumir tráfego.

Temos agora um problema:

Eu se pedir a mesma imagem do servidor e mete-la no meu browser só a vou sacar uma vez, visto que o browser repete a imagem pelas restantes, então numa imagem de 300Kb por exemplo, eu mesmo que pedisse 1000 imagens só estaria a gastar 300Kb do servidor.

Então eu resolvi pedir uma imagem ao servidor, mas com um número random à frente dela, o que vai fazer com que as milhares de imagens que eu pedir (embora sejam todas iguais), são todas diferentes (o nome), pelo que se pedir 1000 imagens de 300Kb, vou consumir 300Mb de tráfego do servidor.

300Mb para hosters que oferecem 100Gb ou 500Gb ou até tráfego ilimitado, é quase como tentar atirar uma esponja para o oceano e esperar que ele fique seco.

Então a solução que pensei, foi em criar um script que pedisse 2000 imagens de cada vez e invés de abrir só uma janela do firefox, abrir 10 (depende dos recursos que temos).

Resultado foi que agora estou a pedir 20000 imagens ao servidor, todas diferentes com 300Kb. O que quando eu sacar as imagens todas, vai fazer o servidor gastar 6Gb de tráfego.

"Ah e tal grande coisa" Pois, mas além de gastar 6Gb e podermos utilizar vários computadores, várias janelas do firefox e termos a sorte do servidor ter imagens com 500Kb ou 1Mb, estamos a reduzir a velocidade que o servidor tem para disponibilizar as imagens ao utilizadores.

Teoricamente se tivermos uma ligação de 24Mb, vamos sacar 24Mb de banda ao servidor (imaginem quem tem fibra óptica então) e a menos que seja um dedicado com uma linha de 100Mb, o site vai ficar com sérios problemas.

Uma só pessoa com um computador, consegue criar praticamente um ddos sem se chatear muito.

A razão de eu postar isto é para perguntar aos utilizadores que não são script-kiddies (y, acho que estou a ser um), se acham que eu "descobri a pólvora", ou se já à métodos melhores de alcançar estes fins sem ter que controlar 500002 computadores zombies.

E como eu também tenho websites e pago o host deles, (não me convinha que alguém fizesse isto contra mim), queria saber se acham se dá para criar alguma protecção para isto. Eu à primeira vista acho um bocado improvável arranjar protecção contra isto, visto que estamos a pedir imagens a um servidor o que é perfeitamente normal, mas na informática nada é certo.

O código é este, só está para 10 imagens, mas dá para copiar e colar o código até as 2000, ou mais:

<html>
<?php
$pagesld= integer;
$totalbd= integer;
//Código com 10 imagens - começo
$rand=rand();
print "<img src='http://www.gstatic.com/news/img/logo/pt-PT_pt/news.gif?rand=$rand'>";
$pagesld= $pagesld +1;
$rand=rand();
print "<img src='http://www.gstatic.com/news/img/logo/pt-PT_pt/news.gif?rand=$rand'>";
$pagesld= $pagesld +1;
$rand=rand();
print "<img src='http://www.gstatic.com/news/img/logo/pt-PT_pt/news.gif?rand=$rand'>";
$pagesld= $pagesld +1;
$rand=rand();
print "<img src='http://www.gstatic.com/news/img/logo/pt-PT_pt/news.gif?rand=$rand'>";
$pagesld= $pagesld +1;
$rand=rand();
print "<img src='http://www.gstatic.com/news/img/logo/pt-PT_pt/news.gif?rand=$rand'>";
$pagesld= $pagesld +1;
$rand=rand();
print "<img src='http://www.gstatic.com/news/img/logo/pt-PT_pt/news.gif?rand=$rand'>";
$pagesld= $pagesld +1;
$rand=rand();
print "<img src='http://www.gstatic.com/news/img/logo/pt-PT_pt/news.gif?rand=$rand'>";
$pagesld= $pagesld +1;
$rand=rand();
print "<img src='http://www.gstatic.com/news/img/logo/pt-PT_pt/news.gif?rand=$rand'>";
$pagesld= $pagesld +1;
$rand=rand();
print "<img src='http://www.gstatic.com/news/img/logo/pt-PT_pt/news.gif?rand=$rand'>";
$pagesld= $pagesld +1;
$rand=rand();
print "<img src='http://www.gstatic.com/news/img/logo/pt-PT_pt/news.gif?rand=$rand'>";
$pagesld= $pagesld +1;
//Código com 10 imagens - fim
//Código para mostrar quantas imagens fez load e quantos MB ou GB gastou
//Ali o número 4771 é o tamanho do gif do google em bytes, é preciso por o tamanho em bytes da imagem que queremos lá
$totalbd= $pagesld * 4771;
function ByteSize($bytes)
    {
    $size = $bytes / 1024;
    if($size < 1024)
        {
        $size = number_format($size, 2);
        $size .= ' KB';
        }
    else
        {
        if($size / 1024 < 1024)
            {
            $size = number_format($size / 1024, 2);
            $size .= ' MB';
            }
        else if ($size / 1024 / 1024 < 1024)
            {
            $size = number_format($size / 1024 / 1024, 2);
            $size .= ' GB';
            }
        }
    return $size;
    }
print "<br><br><b>$pagesld Imagens carregadas.</b><br><br>";
print ByteSize($totalbd);
print "<b> Tráfego consumido.</b>"
?>
</html>

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

A nível de velocidades do servidor, não vais ter muita sorte porque a tua ligação comparada às ligações de bons datacenters é muito fraca. Caso uses vários computadores já estás a fazer o que fazem (talvez de outra forma) as botnets de ddos.

A nível de tráfego, para pequenos sites pode resultar, mas caso exista tráfego ilimitado também não influências grande coisa...

É possível proteger-te contra este tipo de coisas caso coloques um "filtro" no teu servidor que não permita mais de X downloads do mesmo ficheiro por parte de um mesmo IP por segundo/minuto/hora.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Lá está é que a nível de velocidade do servidor, facilmente ownas um site "normal".

Um servidor dedicado (normalmente até são utilizados em jogos), têm uma linha de 100Mbps, atão se usar-mos 5 computadores ligados à Clix 24Mb, 24x5= 120Mb já o servidor fica sem capacidade.

Quanto aos hosts "normais" de websites, a linha de deve ser muito inferior a 100Mbps, não sei mesmo quanto será, mas se um servidor tem 100mbps e se esse server alojar por exemplo 50 sites, cada site só terá 2Mbps (foi um exemplo mesmo à sorte, lol) e neste caso para interromper o website deverá ser muito mais fácil.

Quanto a "lutar" contra um site de tráfego ilimitado, já sabemos que aquilo nunca é meeesmo ilimitado, mas seria preciso muitos mais pc's com ligações à internet fortes para o deixar abaixo.

Contudo muitos hosts que têm limites de 100Gb a 500Gb o que no meu ver é bastante acessível para uma só pessoa os deitar abaixo. (ou obrigar ao webmaster comprar mais tráfego LOL)...

Quanto ao tal filtro, é um bocado relativo, se fosse com filtros teria de ser um mesmo bem feito, porque da maneira que este script pede as imagens ao servidor, são como se elas fossem todas diferentes e como o random é feito "na hora" é impossível marcar o nome das imagens a ser filtradas.

Mas... até vou postar isto num site mesmo de haxors, para ver o que eles dizem. Ainda vou ser banido de lá LOL.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quanto às ligações acho que estás um pouco enganado, procurei um pouco e descobri o site de um datacenter:

A NFSI é super conhecida: http://www.nfsi.pt/conteudo/tecnologia/

Um outro, português: http://www.teclahost.com/Datacenter/

Um outro, brasileiro: http://www.weblocal.com.br/datacenter.htm

Como vês as ligações são bastante superiores seriam necessários muito mais computadores do que os que disseste para conseguires fazer um flood nos servidores.

Quanto às protecções, nunca analisei a maneira como é feito o pedido das imagens, mas penso que o caso utilizes parâmetros à frente imagem.gif?parametro=valor ele vai interpretar da mesma forma, o ficheiro é o imagem.gif e é-lhe passado o parâmetro que especificamos.

De qualquer modo é de valor estares a tentar descobrir novas técnicas e a estudar o assunto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

LOL eu não quero mandar abaixo um datacenter inteiro, essas velocidades são do datacenter completo, eu estou a falar de um só servidor, por exemplo este:

Xeon Quad Core
» CPU Intel Xeon Quad Core 2.1GHz ou Superior
» 4GB Memória RAM DDR2
» 1TB HDD SATA 2
» 100Mbps Uplink <-------------------------------
» 2000GB de Tráfego Mensal
» 1 Endereço IPv4
» Suporte para IPv6

Ele tem 100Mbps uplink, se for utilizado 120Mbps download ele não conseguirá servir os clientes todos.

Olha por exemplo este link e vê onde diz largura de banda: http://www.teclahost.com/servidoresdedicados/planos/

(lawl, uplink? uplink é o nome que se dá a ligações de terra-satélite, estranho...)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

:D Parabéns Ecchi. Reinventaste a roda, mas fizeste-lo sozinho. Tás no bom caminho para aprender cada vez mais.

Dessa experiência podes continuar a investigar várias coisas:

  • como funcionam as caches web;
  • ataques denial-of-service (DOS) e distributed-dos (DDOS)
  • usares outras ferramentas (shell scripts, wget, ...)
  • configuração de webservers para evitar ataques e/ou quebras por procura excessiva

Continua!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O teu ataque é do tipo denial of service.

Hoje em dia, um bom servidor está protegido contra isso.

A protecção é simples, guardas o ip de todas as consultas q recebes, e cada ip tem um limite de 1000 consultas num determinado tempo, se as passares és bloqueado tb por um periodo de tempo.

1000 pode parecer um numero alto, mas até é baixo tendo em conta o q os servidores aguentam.

Claro q podes sempre fazer um denial of service distribuido, usando vários pc com ips diferentes. É uma tecnica usada por alguns trojans q são distribuidos e programados para invadir um site todos ao mesmo tempo, fazer isto ao site da microsoft é pratica frequente de alguns.

Há tb quem se defenda desta situação logo no lado do cliente, implementando protecção no submit da página, podes ver um exemplo disto no site do control toolkit do ajax.

Continua com as tuas pesquisas e vai postando formas de ataque e se possivel, formas de defesa. Convém saber os dois lados.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

(lawl, uplink? uplink é o nome que se dá a ligações de terra-satélite, estranho...)

Uplink aplica-se a qualquer link de envio de dados do host a que te referes para um remoto.
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora