Novos Ataques de Negação de Serviço com Memcached

O maior ataque distribuído de negação de serviço (DDoS) de que se tem conhecimento foi registrado em 28/02 e visou o GitHub. O ataque DDoS mediu 1.3 Tbps de tráfego e foi desferido por oito minutos de duração. Isso dobrou o recorde anterior, que foi o DDoS associado à botnet Mirai, em setembro de 2016 e que atingiu 620 Gbps.

O ataque atingiu esse patamar porque foi eficiente em refletir memcached para amplificação de tráfego. Um Ataque de Negação de Serviço Refletido Distribuído (sigla em inglês DRDoS) é uma forma de DDoS que depende de servidores com porta UDP acessível pela Internet e de fatores de ampliação de largura de banda, para sobrecarregar o sistema de uma vítima com tráfego UDP.

O UDP é um protocolo de transporte não orientado à conexão, ou seja, não valida os endereços IP com Three-Way Handshake. A menos que o protocolo da camada de aplicação use contramedidas, um invasor pode facilmente forjar o datagrama de pacotes IP para incluir um endereço IP de origem arbitrária. Quando muitos pacotes UDP têm seu endereço IP de origem forjado para o endereço IP da vítima, o servidor de destino (ou amplificador) responde para o endereço da vítima (em vez do atacante), criando um ataque de negação de serviço (DoS) refletido.

Certas requisições para determinados serviços ou aplicações que rodam sobre o protocolo UDP provocam respostas que são muito maiores do que a solicitação inicial. Um único pacote pode gerar respostas centenas ou até milhares de vezes maiores do que a requisição de origem. Isso é chamado de um ataque de amplificação e pode ser combinado com um ataque DoS reflexivo em grande escala, usando vários amplificadores e visando uma única vítima. Além disso, existem códigos e exploits disponíveis para abstrair a complexidade técnica que envolve a condução desse tipo ataque, o que faz com que um DDoS amplificado e refletido possa ser desferido com relativa facilidade.

O fator de amplificação pode ser calculado como o número de bytes de carga útil UDP que um amplificador envia para atender uma solicitação, em comparação com o número de bytes de carga útil UDP da solicitação. A tabela a seguir apresenta o fator de amplificação de banda por protocolo que utilizado UDP.

Protocolo Fator de Amplificação de Banda Comando Vulnerável
DNS 28 to 54 see: TA13-088A
NTP 556.9 see: TA14-013A
SNMPv2 6.3 GetBulk request
NetBIOS 3.8 Name resolution
SSDP 30.8 SEARCH request
CharGEN 358.8 Character generation request
QOTD 140.3 Quote request
BitTorrent 3.8 File search
Kad 16.3 Peer list exchange
Quake Network Protocol 63.9 Server info exchange
Steam Protocol 5.5 Server info exchange
Multicast DNS (mDNS) 2 to 10 Unicast query
RIPv1 131.24 Malformed request
Portmap (RPCbind) 7 to 28 Malformed request
LDAP 46 to 55 Malformed request
CLDAP [link] 56 to 70
TFTP [link] 60
Memcached [link] 10,000 to 51,000

Fator de amplificação por serviço UDP. Fonte: US-CERT

Observa-se que o Memcached apresenta fator de amplificação de até 51 mil vezes a requisição de origem, ou seja, muito superior à amplificação oferecida pelos já bem conhecidos DNS e NTP.

“Muitas outras organizações experimentaram ataques de reflexão semelhantes desde segunda-feira, e prevemos muitos outros ataques potencialmente maiores no futuro próximo”, explicou o time de resposta à incidentes de redes da Akamai, empresa que ajudou o GitHub a mitigar o ataque DDoS de quarta-feira.

A CloudFlare foi outro alvo desse tipo de ataque. Eles chegaram a receber 260Gbps de tráfego de Memcached de entrada. Apesar de ser menor do que o recebido pelo GitHub, esse também é um tráfego enorme, mas é possível por causa do fator de amplificação, que gera pacotes refletidos muito grandes.  O pedido pode ser pequeno e a resposta até 1 MB.

memcached-gpb
Gráfico divulgado pela CloudFlare demonstrando o tráfego de entrada do Memcached.

“Devido a sua capacidade de criar tais ataques maciços, é provável que os atacantes adotem a reflexão memcached como uma ferramenta favorita rapidamente. Além disso, à medida que as listas de refletores utilizáveis ​​são compiladas por atacantes, o impacto desse método de ataque tem potencial para crescer significativamente. A boa notícia é que os provedores podem avaliar o tráfego limitado da porta de origem 11211 e impedir que o tráfego entre e saia de suas redes, mas isso levará tempo.”, escreveu a equipe de Alertas SIRT da Akamai.

Identificamos o compartilhamento de códigos e de servidores expostos para a execução desse tipo de ataque, conforme a prova de conceito disponível em  https://pastebin.com/ZiUeinae e uma lista com 17 mil servidores Memcached expostos em outro post.

Lista de servidores Memcached vulneráveis sendo compartilhada no PasteBin.com

Segundo o site DDoS Mon, o Memcached é utilizado em menos de 2% dos ataques de amplificação de tráfego UDP, o que permite concluir que ataques muito maiores poderão surgir no curto e médio prazo.

Freqüência dos protocolos utilizados em ataques de reflexão, segundo o DDoS Mon.

Dinâmica do ataque

Lançar um ataque desse tipo não requer ações sofisticadas. Primeiro, o invasor implanta uma carga útil (payload) grande em um servidor Memcached exposto à Internet. Em seguida, o atacante falsifica a mensagem de solicitação “get” com o source IP de destino. Pronto, o alvo irá receber reiteradamente toda a carga. A depender do tamanho do payload implantado no Memcached, pode-se obter amplificação de até 51,200x.

 

Servidor Memcached Vulnerável

Verificar se uma máquina responde pelo serviço Memcached é simples. Basta se conectar na porta 11211 e em seguida verificar se o computador responde a algum comando do protocolo Memcached, como o stats. No exemplo abaixo, é possível verificar, por exemplo, o número de conexões correntes, além do tamanho de memória disponível para utilização. Além disso, em seguida foi possível implantar e obter, de forma arbitrária, um payload na memória:

$ telnet 138.X01.1X2.1XX 11211
Trying 138.X01.1X2.1XX...
Connected to 138.X01.1X2.1XX.
Escape character is '^]'.
stats
STAT pid 2393
STAT uptime 4509820
STAT time 1520624091
STAT version 1.4.30
STAT libevent 2.0.21-stable
STAT pointer_size 64
STAT rusage_user 16652.384452
STAT rusage_system 54709.754853
STAT curr_connections 21
STAT total_connections 652568
STAT connection_structures 266
STAT reserved_fds 20
STAT cmd_get 2009406099
STAT cmd_set 73977193
STAT cmd_flush 26
STAT cmd_touch 0
STAT get_hits 1828614475
STAT get_misses 180791624
STAT get_expired 3894622
STAT get_flushed 331
STAT delete_misses 3
STAT delete_hits 0
STAT incr_misses 0
STAT incr_hits 0
STAT decr_misses 0
STAT decr_hits 0
STAT cas_misses 0
STAT cas_hits 0
STAT cas_badval 0
STAT touch_hits 0
STAT touch_misses 0
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 530154427686
STAT bytes_written 11324757589791
STAT limit_maxbytes 67108864
STAT accepting_conns 1
STAT listen_disabled_num 0
STAT time_in_listen_disabled_us 0
STAT threads 4
STAT conn_yields 0
STAT hash_power_level 16
STAT hash_bytes 524288
STAT hash_is_expanding 0
STAT malloc_fails 0
STAT log_worker_dropped 0
STAT log_worker_written 0
STAT log_watcher_skipped 0
STAT log_watcher_sent 0
STAT bytes 61765879
STAT curr_items 28183
STAT total_items 71048212
STAT expired_unfetched 5096926
STAT evicted_unfetched 35237174
STAT evictions 52930480
STAT reclaimed 5242434
STAT crawler_reclaimed 0
STAT crawler_items_checked 0
STAT lrutail_reflocked 11
END


# implantando um cache pequeno de 9 bytes (a palavra memcached)
set setando_cache 0 900 9
memcached
STORED

# obtendo o cache implantado
get setando_cache
VALUE setando_cache 0 9
memcached
END

O computador acima está vulnerável a ataques de reflexão e amplificação de negação de serviço por meio de exploração do serviço Memcached.

Mapeamento

A primeira etapa do nosso mapeamento global do Memcached se concentrou em identificar os hosts que apresentaram resposta na porta 11211, considerando o espaço amostral do IPV4. Em nossa pesquisa identificados 129.736 hosts nessa condição, a título de comparação, publicação da Kaspersky indicou 88 mil hosts respondentes. A diferença se deve, provavelmente, a diferentes metodologias de mapeamento.

Sem muita surpresa, os Estados Unidos aparecem em 1º lugar, com mais de 36 mil servidores vulneráveis, seguido de perto pela China com mais de 32 mil computadores. O Brasil aparece na 18ª posição, com 1.250 servidores Memcached vulneráveis. Entre os 20, destacam-se Hong-Kong em 4º e o Vietnã em 12º.

Clique aqui para ver o mapa em tela cheia

Abaixo são apresentados o número de hosts por país, com filtro mínimo de 100 registros.

O infográfico abaixo apresenta o número de hosts vulneráveis com Memcached em 5 perspectivas diferentes. Cada análise está em sua própria planilha e deve ser selecionada na parte inferior do gráfico. Os dados foram agregados por:

  1. Top 100 Sistemas Autônomos (AS) no mundo
  2. Top 100 Organizações no mundo
  3. País (igual à tabela acima)
  4. Sistema Autônomo no Brasil
  5. Organização no Brasil

Clique aqui para visualizar os dados em tela cheia e com os filtros habilitados.

No caso de organizações brasileiras vinculadas ao governo, as principais entidades identificadas foram universidades públicas, companhias estaduais de processamento de dados e municípios.

Em relação ao total de servidores vulneráveis no território nacional, a “contribuição” do setor público para o problema é de apenas 3,94%.

Observação: o nosso Lab realiza a geolocalização dos endereços por meio da versão profissional da base de dados da MaxMind. Essa base consegue, em muitos casos, especificar a alocação de blocos de endereços IP no nível da organização, o que permite uma análise e agregação um pouco mais detalhada do que apenas no nível do Sistema Autônomo ou do ISP. Esse é o caso de algumas universidades, órgãos públicos e pequenos provedores. Portanto, para uma mesma entidade, as contabilizações por organização pode ser ligeiramente menor do que por AS.

Mitigação

Tão simples quanto esse ataque, é a sua mitigação. Em primeiro lugar, deve-se desativar o suporte do Memcached para UDP, isso impedirá a reflexão e a amplificação do tráfego. Se não for possível desabilitar o UDP, é recomendável operar os servidores atrás de um Firewall, para que o perímetro seja controlado e assim impedir que esses refletores fiquem expostos à Internet.

Ransom DDoS

À medida que se mostrarem mais efetivos os ataques com Memcached podem migrar para o modelo Ransom DDoS (RDDoS), onde o atacante exige pagamento de resgate para interromper um ataque em andamento ou para não executar uma negação de serviço.

Mensagem enviada em protocol UDP cobrando 50 Monero (criptomoeda)

É um modelo de negócio que se baseia na demonstração de força e em seguida em extorsão. As principais vítimas desse tipo de ataque são aqueles que disponibilizam serviços que não podem parar ou sujeitos a prejuízos significativos em caso de interrupção, como os sites de Internet Banking e de E-Commerce.

Terceirização de ataques

Os Booters são uma especie de serviço de nuvem para negação de serviço, onde um usuário sem conhecimento técnico pode terceirizar para o Booter a execução do ataque. É razoável de se concluir que o Booters irão rapidamente incorporar a amplificação por Memcached às demais técnicas já empregadas por eles. Isso quer dizer que um agente malicioso estatal ou não estatal, mesmo em um país com infraestrutura cibernética precária, como a Bolívia, será capaz de ser bem sucedido em um ataque de negação de serviço contra adversários em melhores condições.

Perspectiva no Brasil

Nos ataques mencionados, os estragos só não foram maiores porque a articulação e integração dos times de defesa foram muito bem desenvolvidas. No caso do GitHub, ele teve o apoio da Akamai, que é o maior fornecedor de conteúdo estático do mundo, sendo responsável por até 30% do tráfego da Internet.

O Brasil pode se tornar plataforma para ataques ao ter seus servidores vulneráveis empregados em ações de negação de serviço.

De outro lado, o Brasil possui muitos alvos em potencial de um eventual Ransom DDoS, como o setor bancário e os grandes sites de vendas online.  Além disso, o governo também pode ser vítima de operações hacktivistas, sobretudo em ano eleitoral.

A mitigação desse problema envolve articulação nacional, integrando provedores, equipes de tratamento de incidentes, de segurança e de operação de infraestrutura. Razões pelas quais o país precisa se articular e se estruturar para enfrentar e vencer esse tipo de ameaça, caso contrário, é possível que as redes brasileiras não resistam, sozinhas, a um ataque dessa magnitude.

Conclusão

O serviço de Memcached mal configurado está sendo abusado por atores maliciosos para desferirem ataques de negação de serviço de magnitude sem precedentes, apresentando tráfego superior a 1 Tbps.

Os agentes maliciosos já estão compartilhando ferramentas e listas de servidores vulneráveis, o que permite concluir que esse tipo de ataque tende a continuar e a aumentar. Além disso, novos modelos de atividade maliciosa podem surgir, como a extorsão mediante negação de serviço.

O atacante sai duplamente favorecido com ataques de negação de serviço por reflexão UDP, pois além de ter o tráfego amplificado em várias vezes, ele também ganha camadas de anonimização, uma vez que o endereço IP que chega no alvo é o do servidor que refletiu o tráfego.

É um paradoxo que enquanto se fala sobre explorações de alto nível e Guerra Cibernética, uma vulnerabilidade simplória e algumas linhas de código possam dar a um grupo pequeno e com recursos modestos o “poder de fogo” para enfrentar adversários muito mais poderosos, escalando facilmente um ataque simples para um nível em que seja necessário desencadear um protocolo de defesa cibernética nacional.