O documento discute vários tipos de ataques cibernéticos como packet sniffing e man-in-the-middle. Ele também fornece estratégias para prevenir esses ataques, como criptografia de chave pública, validação de entrada no servidor e no cliente, software anti-cheat, e proteção contra DDoS e invasões no servidor.
2. Packet Sniffing
● Ler o conteúdo de pacotes que trafegam pela rede por razões que não são as
operações normais de rede
● Ex: Roubar informações de login ou tentar trapacear (cheating) em jogos
multiplayer
3. Ataque Man-in-the-Middle
● Ocorre quando alguém, em algum lugar no caminho entre a origem e o
destino, está fazendo sniffing de pacotes
● Qualquer computador usando uma rede Wifi insegura pode ter seus pacotes
lidos por outra máquina na rede
● Numa rede cabeada, o sniffing pode ser feito pelo computador gateway
(malware ou administrador de redes mal intencionado)
● Um jogador poderia usar essa técnica para trapacear ou roubar informações
de um jogo
4. Criptografia de Chave Pública
● Pode-se combater o ataque man-in-the-middle ao criptografar dados
transmitidos
● RSA (criado em 1977 por Rivest, Shamir e Adelman) – o mais popular sistema
de criptografia por chave pública
● Ao enviar uma informação, usa-se a chave pública para criptografar.
● Ao receber a informação, usa-se a chave privada para descriptografar
5. Sniffing no Host
● O executável (.exe) de um jogo pode ser hackeado – e o hacker pode
aprender a descriptografar os dados
● Mas engenharia reversa de código para encontrar chaves privadas leva
tempo…
6. Torne as coisas mais difíceis para o hacker...
● Criptografe e mude a localização das chaves na memória frequentemente
● Mude a ordem ou o formato dos pacotes de tempos em tempos
● Alterne o tipo de criptografia se possível…
● Você não vai conseguir garantir que será impossível hackear, mas vai tornar
isso uma tarefa trabalhosa e chata o suficiente para desestimular que alguém o
faça...
7. Validação de Entrada no Servidor
● O servidor não deve executar qualquer comando que ele receber – deve
validar primeiro
● Exemplo: se o servidor receber uma informação que um jogador atirou,
primeiro deve verificar coisas como:
● Esse jogador tem uma arma?
● Essa arma tem munição?
8. Validação de Entrada no Cliente
● No modelo de Servidor Autoritário, somente o servidor tem a visão completa
do jogo, como o cliente pode validar algo vindo do servidor?
● Método simples: não permitir que jogadores hospedem o servidor do jogo
● Outro método: manter contato com outros clientes, para validar informações
vindas do servidor (problema: aumentaria muito o tráfego na rede...)
9. Software de Detecção de Cheating
● Executa como parte do jogo ou uma ferramenta externa que monitora sua
integridade
● Exemplos de cheat que podem ser detectados:
● Em jogo ponto-a-ponto, algumas áreas com exército inimigo são
escondidas (fog of war), mas há cheats que permitem visualizá-las (todas
as informações são compartilhadas no modelo lockstep determinístico)
● Bots que jogam MMOs para acumular XP e/ou subir de nível, mesmo que o
jogador esteja fora
10. Software de Detecção de Cheating – Como
funcionam?
● Geralmente escaneam procurando programas de cheating conhecidos
● Se um jogador é detectado trapaceando, não é banido automaticamente, mas
colocado em uma lista (para que ele não perceba que aquele cheat não é mais
válido)
● Criam uma lista para banimento futuro – assim pode pegar mais usuários
numa ban wave
● Em alguns casos: cliente precisa enviar o checksum de seus arquivos para
um servidor “puro” verificar se não houve alteração
● Exemplos: Valve Anti-Cheat (VAC) e Warden (da Blizzard Entertainment)
11. Segurança do Servidor - DDoS
● Proteger contra ataques DDoS (Distributed Denial of Service) – Servidor
sobrecarregado com requisições que ele não pode atender
● Solução: é preciso atualizar o hardware e distribuir o tráfego em servidores
diferentes.
● Dica: serviços de cloud já tratam DDoS
12. Segurança do Servidor – Dados Mal estruturados
● Usuários maliciosos podem enviar informações mal-formadas para tentar
quebrar o servidor ou tentar executar código malicioso
● Solução: Faça testes automatizados enviando grandes quantias de dados
mal estruturados para o servidor, e corrija os bugs que encontrar
13. Segurança do Servidor – Ataques temporais
● Suponha que o servidor recebe uma senha ou código como requisição e o
valida (ex: login/senha)
● Se o servidor rejeita logo que percebe que o código está errado, o tempo que
demora para rejeitar dá uma pista ao hacker sobre quanto do código ele
acertou
14. Segurança do Servidor – Ataques temporais
● Solução: Garanta que seus códigos sempre levam o mesmo tempo para
terminar, aceitando ou rejeitando um código
Código vulnerável Código seguro
15. Segurança do Servidor – Invasões
● Usuários maliciosos podem tentar invadir o servidor para roubar dados,
número de cartão de crédito, senhas, ou mesmo destruir toda sua base de
dados!
● Garanta que seu sistema operacional e aplicações estão sempre atualizadas
● Reduza o número de serviços funcionando o servidor ao mínimo necessário
● Não armazene senhas originais, prefira guardar apenas seu Hash
● Criptografe os dados sensíveis
● Faça Backups! :)