O caso em que meu gato me avisou sobre um ataque DDoS
(dannyguo.com)- Em uma época em que não havia uma rotação formal de plantão, às 3 da manhã um gato acordou uma pessoa que estava dormindo, permitindo que ela visse imediatamente um alerta do AWS CloudWatch e a indisponibilidade do site
- Após um alerta de unhealthy targets no load balancer, o site parou de abrir, e um grande volume de requisições estava chegando de muitos IPs ligados a vários países
- Como o produto era oferecido apenas a usuários dos Estados Unidos, o tráfego internacional era anormal e, pelas circunstâncias, tratava-se de um ataque DDoS
- Bloquear IPs um a um no servidor poderia ser ineficiente, mas com uma regra de bloqueio por país já configurada no AWS WAF, a empresa bloqueou centenas de milhares de requisições ao longo de cerca de 1 hora
- Perto do início do ataque, a caixa de entrada do suporte ao cliente recebeu um e-mail de ameaça dizendo que havia derrubado o site por uma vulnerabilidade no Apache e exigindo US$ 5.000 em Bitcoin; a empresa não respondeu
A falha revelada às 3 da manhã
- Na época, a startup não tinha uma rotação formal de plantão, e a equipe operava acompanhando em conjunto os alertas de emergência
- Por volta das 3 da manhã, o gato mexeu no cabelo da pessoa enquanto se limpava e a acordou; ao olhar o celular, havia chegado minutos antes um alerta do AWS CloudWatch
- A causa do alerta era unhealthy targets no load balancer, e o site realmente não carregava
- No dashboard de monitoramento, era possível ver um grande volume de requisições vindo de muitos endereços IP ligados a vários países
- Como o produto era oferecido apenas a usuários dos Estados Unidos, o tráfego internacional era diferente do normal e, pelas circunstâncias, concluiu-se que era um ataque DDoS
A enxurrada de requisições bloqueada com AWS WAF
- A primeira resposta considerada foi bloquear endereços IP no nível do servidor, mas isso poderia ser trabalhoso e ter efeito limitado se o atacante usasse ainda mais IPs de origem
- Aproveitando o AWS Web Application Firewall já configurado, foi adicionada uma regra para bloquear requisições de outros países como resposta imediata à indisponibilidade
- Depois que a regra foi aplicada, centenas de milhares de requisições foram bloqueadas ao longo de cerca de 1 hora, e o site voltou a funcionar
- Com o fim da enxurrada de requisições, a indisponibilidade imediata foi resolvida
O e-mail de ameaça que chegou logo após o ataque
- Naquela manhã, foi verificado um e-mail que havia chegado à caixa de entrada do suporte ao cliente por volta do início do ataque
- O remetente alegava ter encontrado uma vulnerabilidade no site e derrubado o Apache, mas a empresa não usava Apache
- Dizia ter parado todo o tráfego do site e que poderia manter isso por meses, exigindo o envio de US$ 5.000 em Bitcoin em troca de um “solution file”
- A empresa não respondeu
- Como o celular estava no modo não perturbe durante a noite, não faz sentido dizer que a vibração ou o som do alerta da AWS acordaram o gato primeiro
- A pessoa envolvida acha que o gato somehow percebeu que era algo que não podia esperar até de manhã, e considera que foi uma forma de acordar muito menos desagradável do que um alerta do PagerDuty
1 comentários
Comentários do Hacker News
Como sempre, é fácil deixar passar a ameaça interna. Um e-mail de extorsão com gramática suspeita? Pedido de resgate em Bitcoin? Você nunca considerou a possibilidade de que quem estava por trás do ataque fosse o gato?
Não há muitos terremotos no Kansas, mas ainda me lembro do primeiro e único que senti
Eu estava dormindo profundamente quando meu gato siamês me acordou dando tapinhas no meu rosto com a pata, depois sentou na ponta da cama e rosnou de um jeito incomumente agressivo
Em menos de 30 segundos, começou a tremer. Não sei como ele soube, mas foi bem impressionante; ele se foi em 2020 e ainda sinto falta dele
No terremoto recente em NYC também havia vídeos de cachorros uivando antes de as pessoas sentirem a vibração, e vejo isso como algo bem comum
Quando passei por um terremoto de magnitude 7,4 em Taipei algumas semanas atrás, tudo em que eu conseguia pensar era que precisava voltar para o meu cachorro, como prometido. Antes de eu sair, ele estava ansioso; não sei se percebeu que eu estava indo embora ou se sentiu o terremoto para o qual eu estava indo
Nas rochas há dois tipos de ondas: ondas P e ondas S. As ondas P são ondas de pressão, então são mais rápidas; as ondas S se movem lateralmente e são um pouco mais lentas. É bem provável que o gato tenha acordado com o som sibilante das ondas P, que chegam um pouco antes do terremoto que as pessoas sentem
Dá para confirmar que existem dois tipos de ondas e que as ondas P chegam primeiro em https://manoa.hawaii.edu/exploringourfluidearth/physical/oce...
Talvez o celular estivesse no silencioso, mas a tela continuasse piscando. O meu também se comporta assim nesse modo
No meu primeiro emprego havia uma pessoa que percebia pelos dashboards de monitoramento antes de um incidente estourar. Ela não conseguia explicar nem entender o que estava vendo, e ninguém mais conseguia imitar, mas, quando dizia que algo parecia estranho, geralmente o alerta vinha logo depois
Li uma vez sobre um encarregado de obra que era respeitado pelos trabalhadores por conseguir encontrar canos enterrados ou dentro de paredes com uma habilidade fora do normal. No começo, ele começou a acreditar que fosse algum poder paranormal, mas depois concluiu que tinha aprendido inconscientemente padrões típicos e algumas pistas ocasionais nada intuitivas. Por exemplo, ver um duto de ventilação na parede de um prédio e perceber que provavelmente havia tubulação de esgoto no subsolo
Cheguei ao ponto de perceber com bastante precisão: “este jogo vai crashar logo, melhor salvar”. Eu salvava e, ao reiniciar 10 segundos depois, ele de fato crashava; até hoje não sei como eu sabia
5.000 dólares é um valor bem de príncipe mesmo. Em 2016, minha empresa também recebeu uma exigência dessas
Sofremos um DDoS e decidimos ignorar, mas, por via das dúvidas, deixamos algum BTC separado. Depois gastamos muito mais do que 5.000 dólares aplicando um monte de proteção contra DDoS, mas não pagar criminosos vale a pena
Não respondemos a nenhum e-mail. Os atacantes também eram bem burros e só atacaram o servidor web que ficava em um lugar com boa conectividade
O serviço que realmente gerava dinheiro ficava no Caribe e tinha apenas um T1 de 1,5 Mbps e um backup via satélite de 0,5 Mbps. Teria sido muito mais fácil saturar aquele link por mais tempo, e isso teria causado cerca de 1 milhão de dólares por hora em perda de receita
Pagar 5 mil dólares a um atacante pode parecer mais barato do que construir defesas, mas, quando você tem defesas, a chance de sofrer ataques no futuro diminui. E, como você disse, não dar dinheiro a criminosos já tem valor por si só
Sobre a parte “não respondi, mas, olhando para trás, teria sido divertido provocá-los”, não responder é a única resposta válida
Provocar pode acabar chamando ainda mais atenção e torná-lo alvo de outros ataques. O que você ganha com isso?
Mesmo assim, era divertido imaginar, especialmente depois de ver este vídeo linkado no texto: https://www.youtube.com/watch?v=dWzz3NeDz3E
Antigamente, uma pessoa da minha família percebeu que a lava-louças estava vazando graças a um alerta do gato
A conclusão foi que o gato ou estava tentando nos salvar, ou tentando nos matar
Uma pessoa dormindo ao ar livre acorda com o grasnar de um corvo, e naquele exato momento um grande felino, talvez um tigre, estava se aproximando sorrateiramente
Um personagem interpreta que o corvo estava tentando avisar a pessoa; outro interpreta que a ave estava indicando a pessoa adormecida ao tigre para comer os restos depois da refeição
“Gramática horrível”? Bem típico da era pré-ChatGPT
Falando mais seriamente, será que algum dia vai surgir uma forma de bloquear ataques DDoS para sempre? Todas as ameaças são ruins, mas DDoS parece o tipo de ataque mais sem graça. Não exige nenhuma habilidade ou conhecimento especial: basta rodar um script ou pagar alguém para executá-lo como serviço
Endereços IP — e, no caso de IPv6, sub-redes — são recursos limitados para usuários comuns, e largura de banda também. A maioria dos ataques de amplificação exige spoofing de IP, o que muitas vezes não é possível em conexões comuns
Se for um ataque baseado em volume, vence quem tiver mais largura de banda. O atacante pode usar amplificação nesse caso. Se for um ataque baseado em carga ou na camada de aplicação, dá para resolver bloqueando os IPs dos atacantes no nível do firewall. Neste caso, como já havia WAF/CloudFront, parece mais próximo de um ataque na camada de aplicação do que de um ataque puramente volumétrico
Encontrar os IPs dos atacantes a bloquear é um problema de atribuir corretamente o custo por IP de origem, atribuir também corretamente por IP de origem o benefício da atividade de usuários legítimos e então bloquear os IPs ou faixas em que o custo excede muito o benefício
Não é tão fácil quanto parece. O custo aparece de várias formas: conexões abertas ocupando memória, handshakes TLS, requisições caras para o servidor web fazer parsing, requisições que disparam consultas caras ao banco de dados, largura de banda de entrada e saída etc. Por isso, a maioria coloca Cloudflare — ou, como aqui, CloudFront — na frente e contorna com regras manuais, como neste caso
Seria ótimo se houvesse uma forma de tornar o DDoS resistente na camada de protocolo, mas não sei bem se isso é possível
E existe o DDoS baseado em volume. Esse dá para bloquear se você tiver mais largura de banda do que todo mundo, mas é bem difícil, e você também acaba virando um potencial atacante
A inovação aqui é distribuir filtros de tráfego via BGP. Null routing é o produto mínimo viável disso: este IP está sob ataque, então descartem o tráfego para ele o mais rápido possível. Já vi sistemas mais refinados, com coisas como descartar UDP, descartar pacotes fragmentados, descartar pacotes de entrada e saída em portas específicas UDP/TCP
A maioria desses sistemas é projetada para que rotas especiais não se propaguem diretamente para além dos peers, mas, em alguns casos, pode ser desejável que elas se propaguem
Se a maior parte dos clientes estiver no México e o Canadá fizer um DDoS que sature o enlace entre mim e o Canadá, isso talvez não seja um grande problema. Desde que os roteadores domésticos dos consumidores no México não resolvam ajudar com esse gargalo no Canadá, claro
Achei que tinham conectado o alimentador do gato aos alertas
De todo modo, fofo. Qual era o nome do gato?
O nome dele era Bamboo. Infelizmente, ele morreu de câncer. Dei esse nome porque uma das primeiras coisas que ele fez depois de ser adotado foi tentar comer meu vaso de bambu
Um alimentador automático de gato sem fio dependia da internet e, quando a comida não saiu, o gato foi reclamar com o administrador
Isso me lembrou este livro: Dogs that Know When their Owners are Coming Home https://www.sheldrake.org/books-by-rupert-sheldrake/dogs-tha...
Bloquear DDoS com token bucket é tão fácil que, normalmente, a única hora em que o gato precisa me acordar é quando meu Discord está sendo invadido
Parece mais com uma forma de descartar, no firewall ou na entrada da rede, pacotes que geram carga excessiva antes que cheguem ao servidor de aplicação
Se o volume de solicitações de conexão ou o número de endereços IP únicos for grande o suficiente, o ataque ainda pode sobrecarregar o serviço
Token bucket normalmente é parte de uma estratégia de resiliência mais ampla, não uma solução mágica que resolve todos os problemas de negação de serviço