CCCCCCCCCCOOCCOOOOO888 @ 8 @ 8888OOOOCCOOO888888888 @ @ @ @ @ @ @ @ @ @ 8 8 @ @ @ @ 888OOCooocccc :::: CCCCCCCCCCCCCCCOO888 @ 888888OOOCCCOOOO888888888888 @ 88888 @ @ @ @ @ @ @ @ 888 8OOCCoococc ::: CCCCCCCCCCCCCCOO88 @ @ @ 888888OOOOOOOOOO8888888O88888888O8O8OOO8888 88 @ @ 8OOCOOOCoc :: CCCCooooooCCCO88 @ @ 8 @ 88 @ @ 888OOOOOOO88888888888OOOOOOOOOOCCCCCOOOO888 8888OOOCc :::: CooCoCoooCCCO8 @ 88 @ 8888888OOO888888888888888888OOOOCCCooooooooCCOOO8888888Cocooc: ooooooCoCCC88 @ 88888 @ @ 888OO8888888888888888O8O8888OOCCCooooccccccCOOOO88 888OCoccc ooooCCOO8O888888888 @ 88O8OO88888OO888O8888OOOO88888OCocoococ :: ccooCOO8O888888Cooo oCCCCCCO8OOOCCCOO88 @ 88OOOOOO8888O888OOOOOCOO88888O8OOOCooCocc ::: coCOOO888888OOCC oCCCCCOOO88OCooCO88 @ 8OOOOOO88O888888OOCCCCoCOOO8888OOOOOOOCoc :::: coCOOOO888O88OC oCCCCOO88OOCCCCOO8 @ @ 8OOCOOOOO8888888OoocccccoCO8O8OO88OOOOOCc:. ccooCCOOOO88888OO CCCOOOO88OOCCOOO8 @ 888OOCCoooCOO8888Ooc :: ... :: coOO88888O888OOo: cocooCCCCOOOOOO88O CCCOO88888OOCOO8 @ @ 888OCcc ::: cCOO888Oc ......... cCOOOOOOOOOOOc:. CooooCCCOOOOOOOOO OOOOOO88888OOOO8 @ 8 @ 8Ooc:.: ... COO8O88c. . . CoOOO888OOOOCoooooccoCOOOOOCOOOO OOOOO888 @ 8 @ 88888888Oo:. . ... CO888Oc ..: oOOOOOOOOOCCoocooCoCoCOOOOOOOO COOO888 @ 88888888888Oo:. . O8888C:. OCOO. CCCCOOOoooooocccooooooooCCCOO ... CCCCOO888888O888888Oo. . O8Oo. . CO88Oo. :: .: .. CcoCCCooCooccooccccoooooCCCC coooCCO8 @ 88OO8O888Oo ::: .....: cO8Oc. . .....:. .: CcCoooooccoooocccccooooCCC : CcooooCO888OOOO8OOc ..: ... ::. . CO8 @ 8Coc :: ........: cooCooooccccc :::: ccooCCooC . ::: CoocccoO8OOOOOOC: .. :: .... coCO8 @ 8OOCCOc: .......: ccoooocccc ::::::::: cooooooC .... :::: CcccoCCOOOOOCc ......: oCO8 @ 8 @ 88OCCCoccccc :: C :::. OCCC ::: cccc: .. :::: coooooo ....... :::::::: CCCCCCCoocc: cO888 @ 8888OOOOCOOOCoocc :::. :: Cocc cc ::: ... ::: coocccccc ........... ::: ..: CoCCCCCCCO88OOOO8OOOCCooCCCooccc :::: ccc :::::: .......: ccocccc: co ............. :: ....: OCCoooooCOOCCOCCCoccococc ::::: coc :::: .......... ::: cccc: cooo ................... CoocoooCCoco ::: ccccccc ::: ccc :: .............. ::: cc :: :: COC . . ..........: CccoCooc: .. :: cccc ::: c: ................. :::: c: cccco . .............: ...: Cooc :: cccccc: ................... ::::: ccoocc . . .... :: Cccc:. :: Ccoocc:. .............. .. :::. ::::::: Ccco
Bem-vindo ao SlowLoris - a baixa largura de banda, mas o cliente HTTP ganancioso e venenoso!
Escrito por RSnake com a ajuda de John Kinsella, versão IPv6 por Hugo Gonzalez e uma pitada de inspiração de Robert E Lee .
Update 3: versão IPv6 fornecido por Hugo Gonzalez.
UPDATE 2: vídeo de apresentação SlowLoris na DefCon (a parte do meio da apresentação) pode ser visto aqui: Sequestro sites da Web 2.0 com sslstrip e SlowLoris - Sam Bowne e RSnake na Defcon 17 .
UPDATE: Amit Klein me apontou para um post escrito por Adrian Ilarion Ciobanu escrito no início de 2007 que descreve perfeitamente este ataque de negação de serviço. Também foi descrito em 2005 na seção "Ataques do modelo de programação" da Segurança Apache. Assim, apesar de não haver ferramenta lançada naquele tempo estes dois ainda tecnicamente merece todo o crédito por isso. Peço desculpas por ter perdido estes.
Ao considerar as ramificações de uma negação de serviço ataque lento contra serviços específicos, ao invés de redes de inundação, um conceito emergiu que permitiria que uma única máquina para derrubar servidor web de outra máquina com efeitos mínimos de largura de banda e laterais em serviços não relacionados e portos. A situação ideal para muitos ataques de negação de serviços é o lugar onde todos os outros serviços permanecem intactos, mas o próprio servidor web é completamente inacessível. SlowLoris nasceu a partir deste conceito, e é, portanto, relativamente muito furtivo em comparação com a maioria das ferramentas de inundação.
SlowLoris mantém conexões abertas através do envio de solicitações HTTP parciais. Ele continua a enviar cabeçalhos subseqüentes em intervalos regulares para manter as bases de fechamento. Desta forma, servidores web podem ser rapidamente amarrado. Em particular, os servidores que têm segmentação tende a ser vulnerável, em virtude do fato de que eles tentam limitar a quantidade de enfiar eles permitem. SlowLoris deve aguardar todas as tomadas para tornar-se disponível antes que seja bem sucedido em consumi-los, por isso, se é um site de alto tráfego, pode demorar um pouco para o local para libertar-se É soquetes. Então, enquanto você pode não ser capaz de ver o site a partir de seu ponto de vista, outros podem ainda ser capaz de vê-lo até que todos os soquetes são liberados por eles e consumida por SlowLoris. Isto é porque os outros usuários do sistema deve terminar os seus pedidos antes que as tomadas se tornam disponíveis para SlowLoris para consumir. Se os outros re-iniciar suas conexões nesse breve período de tempo que ainda será capaz de ver o site. Portanto, é um pouco de uma condição de corrida, mas que SlowLoris acabará sempre ganhar - e, mais cedo ou mais tarde.
SlowLoris também tem algumas características furtivas incorporada. Em primeiro lugar, ele pode ser alterado para enviar diferentes cabeçalhos de host, se o seu destino é um host virtual e logs são armazenados separadamente por host virtual. Mas o mais importante, enquanto que o ataque está em andamento, o arquivo de log não será escrito até que a solicitação seja concluída. Assim, você pode manter um servidor para baixo por alguns minutos de cada vez, sem uma única entrada do arquivo de log, mostrando-se de avisar alguém que possa assistir naquele instante. Claro que uma vez que seu ataque pára ou assim que a sessão se encerrar, haverá várias centenas de 400 erros nos logs do servidor web. Isso é inevitável como SlowLoris senta hoje, embora possa ser possível transformá-los em 200 mensagens OK vez pelo preenchimento de um pedido válido, mas SlowLoris ainda não faz isso.
HTTPReady rapidamente surgiu como uma possível solução para um ataque SlowLoris, porque ele não vai fazer com que o servidor HTTP para lançar até um pedido completo é recebido. Isso só é verdade para solicitações GET e HEAD. Enquanto você dá SlowLoris a chave para modificar é método para POST, HTTPReady acaba por ser uma defesa inútil contra esse tipo de ataque.
Este é NÃO uma TCP DoS, porque ele é realmente fazer uma conexão TCP completa, não um parcial, no entanto, ele está fazendo solicitações HTTP parciais. É o equivalente a uma inundação SYN, mas através de HTTP. Um exemplo da diferença é que, se existem dois servidores web rodando na mesma máquina um servidor pode ser dosado, sem afetar a outra instância webserver. SlowLoris também funcionaria teoricamente sobre outros protocolos como UDP, se o programa foi ligeiramente modificado eo webserver apoiaram. SlowLoris também é NÃO uma solicitação flooder GET.SlowLoris requer apenas algumas centenas de pedidos em longo prazo e intervalos regulares, ao contrário de dezenas de milhares em uma base contínua.
Curiosamente, em testes este foi mostrado em pelo menos uma instância para bloquear conexões de banco de dados e força as outras questões estranhas e erros a surgir que podem permitir a recolha de impressões digitais e outras coisas estranhas para se tornar evidente uma vez que o DoS é completa e as tentativas de servidor para limpar-se para cima. Eu acho que esta questão surge quando o servidor web está autorizado a abrir mais conexões do que o banco de dados é, fazendo com que o banco de dados falhar em primeiro lugar e por mais tempo que o servidor web.
SlowLoris permite o retorno webserver ao normal quase que instantaneamente (geralmente dentro de 5 segundos ou menos). Isso o torna ideal para certos ataques que pode apenas exigem um breve tempo de inatividade. Conforme descrito no este blog, DoS é realmente muito útil para certos tipos de ataques onde o tempo é fundamental, ou como uma tática diversionista, etc ...
Isso afeta um número de servidores web que usam processos de rosca e, ironicamente, tentam limitar isso para evitar a exaustão de memória - a fixação de um problema criado outro. Isto inclui, mas não está necessariamente limitado ao seguinte:
Há um número de servidores web que isso não afeta, bem como, no meu teste:
Isso obviamente não é uma lista completa, e pode haver uma série de variações sobre esses servidores web que são ou não são vulneráveis. Eu não testei todas as configurações ou variante, assim que sua milhagem pode variar. Isso também pode não funcionar se houver um dispositivo a montante que de alguma forma limites / amortecedores / proxies solicitações HTTP. Por favor, note que embora SlowLoris representa apenas uma variante deste ataque e outras variantes podem ter diferentes impactos em outros servidores web e dispositivos a montante. Este comando deve funcionar na maioria dos sistemas, mas por favor não se esqueça de verificar as opções, bem como:
perl slowloris.pl-dns example.com
Requisitos: Este é um programa Perl que exige do intérprete Perl com os módulos de IO :: Socket :: INET , IO :: Socket :: SSL e GetOpt :: longas .SlowLoris funciona muito melhor e mais rápido se você enfiar, então eu altamente incentivá-lo a instalar também threads e threads :: compartilhado se você não tem esses módulos já. Você pode instalar módulos usando CPAN:
perl-MCPAN-e 'install IO :: Socket :: INET'
perl-MCPAN-e 'install IO :: Socket :: SSL'
A versão IPv6 precisa:
perl-MCPAN-e 'install IO :: Socket :: inet6'
perl-MCPAN-e 'install IO :: Socket :: SSL'
Os usuários do Windows : Você provavelmente não será capaz de executar com sucesso uma negação SlowLoris do serviço a partir do Windows, mesmo se você usar o Cygwin . Eu não tive qualquer sorte para conseguir SlowLoris negar com sucesso o serviço a partir do Windows, porque SlowLoris exige mais do que algumas centenas de bases para o trabalho (às vezes um mil ou mais), e Windows limita soquetes para cerca de 130, pelo que tenho visto. Eu sugiro que você use um sistema operacional * NIX para executar SlowLoris de obter os melhores resultados, e não a partir de uma máquina virtual, como que poderia ter resultados inesperados com base no sistema operacional pai.
Versão: SlowLoris está atualmente na versão 0.7 - 06/17/2009 e 0.7.1 (versão IPv6) - 04/02/2013
Baixar: slowloris.pl ou slowloris6.pl (versão IPv6)
Introdução: slowloris.pl perldoc ou perldoc slowloris6.pl
Questões: Para obter uma lista completa dos problemas olhar a documentação Perl, o que explica todas as coisas para pensar ao executar este ataque de negação de serviço.
Agradecimentos: Obrigado a John Kinsella pela ajuda com threading e ID e greyhat para obter ajuda com os testes. Um grande obrigado ao Hugo Gonzalez para IPv6 também!