Durante análises do fluxo de tráfego de nossa CDN, muitas vezes nos deparamos com tráfegos de UDP Flood, e através de um desses ataques que mitigamos surgiu a ideia de desenvolvermos uma palestra que demonstre a possibilidade de amplificação de ataques DDoS com a utilização de Game Servers. Isso mesmo, servidores de jogos on-line hoje em dia se tornaram mais um vetor utilizado para a inundação em redes para ocasionar a Negação de Serviços importantes para certas empresas.
Os ataques de DDoS Amplification, normalmente utilizam máquinas que respondem a ‘chamadas’ de protocolos que não necessitam de uma autenticação da fonte de sua origem, com a utilização de outra técnica de ataque associada a esta técnica de amplificação do ataque, conseguimos então utilizar o protocolo UDP de forma maliciosa para ocasionar congestionamentos em link’s de Data-Center’s e redes de computadores.
Em um de nossos experimentos internos, durante a elaboração da palestra que será apresentada à clientes e instituições de ensino, ao analisarmos o jogo America’s Army Proving Grounds desenvolvido pelo próprio Exército Americano (US Army), identificamos a presença da plataforma Unreal Engine, ao qual é conhecida por ser uma das mais utilizadas no momento para desenvolvimento de jogos de tiro em primeira pessoa.
Após as ações de praxe de notificação do Mitre.org, Nist.gov e demais instituições envolvidas na divulgação de falhas e no desenvolvimento da plataforma afetada pela vulnerabilidade, somente obtivemos a confirmação do Mitre.org e Nist.gov, após algumas tentativas de contato com o Governo Americano através do DoD (Departamento de Defesa Americano), ao qual não obtivemos respostas satisfatórias, resolvemos publicar esta vulnerabilidade, que além de Amplificação de ataques DDoS, pode prender a comunicação dos servidores afetados em suas respectivas vítimas, ocasionando uma onda de dados desnecessários que pode ocasionar a negação de serviço em determinadas redes.
Desenvolvemos um scanner para determinar quantos servidores estariam portando a vulnerabilidade e que estariam disponíveis no www.gametracker.com, com o scanner podemos ter uma dimensão do tamanho do problema que servidores com esta falha podem provocar caso tomem proporções maiores de utilização, assim como presenciamos o DDoS contra o GitHub que foi utilizado o Memcached para a distribuição e amplificação dos ataques de negação de serviço. Segue print,
Exploit Checker
#!/usr/bin/perl use IO::Socket::INET; use IO::Socket::Timeout; use strict; use warnings; use diagnostics; # # Date dd-mm-aaaa: 29-05-2018 # Exploit for America's Army Proving Grounds # America's Army Proving Grounds DDoS Amplification Checker # Developed by Mauricio Corrêa # XLabs Information Security # WebSite: www.xlabs.com.br # # CAUTION! # Use with caution! # Use at your own risk! # my $Line = $ARGV[0]; if (@ARGV != 1){ print "\n"; print "XLabs Information Security www.xlabs.com.br\n"; print "America's Army Proving Grounds DDoS Amplification Checker\n"; print "Developed by Mauricio Correa\n"; print "Contact: mauricio\@xlabs.com.br\n"; print "Usage: perl $0 192.168.1.1:7778\n"; print "\n"; }else{ print "\n"; print "XLabs Information Security www.xlabs.com.br\n"; print "America's Army Proving Grounds DDoS Amplification Checker\n"; print "Developed by Mauricio Correa\n"; print "Contact: mauricio\@xlabs.com.br\n"; print "Usage: perl $0 192.168.1.1:7778\n"; print "\n"; my @ipinfo = split /:/, $Line; my $ip = $ipinfo[0]; my $port = $ipinfo[1]; print "Cheking IP: $ip Port:$port\n"; my $sock = new IO::Socket::INET(PeerAddr => $ip, PeerPort => $port, Proto => 'udp', Timeout => 1) or die('Error opening socket.'); IO::Socket::Timeout->enable_timeouts_on($sock); my $data = "\xff\xff\xff\xff\x00"; $sock->send($data) or die "Error on send Payload...\n"; $sock->read_timeout(2); my $output = <$sock>; close($sock); if(length($output) == 0){ print "[!] $ip:$port Not Vulnerable\n\n"; }else{ my $amp_factor = length($output); print "[+] $ip:$port Vulnerable [Amplification Factor $amp_factor Bytes]\n\n"; } }