Spoofing de servidor FiveM via proxy reverso: Tutorial técnico

Este tutorial demonstra uma vulnerabilidade de protocolo no funcionamento do relatório de status do servidor de jogos – a falsificação da contagem de jogadores no FiveM. A separação entre os endpoints HTTP de status e o tráfego UDP do jogo cria uma potencial oportunidade para falsificação. No entanto, os sistemas anti-cheat modernos empregam múltiplas camadas de verificação, dificultando a falsificação contínua sem detecção.

⚠️ AVISO LEGAL

Este tutorial é para apenas para fins educacionaisA implementação disso em um servidor FiveM em produção viola os Termos de Serviço da Cfx.re e resultará em banimentos permanentes de licença, inclusão em listas negras e possíveis ações judiciais. Este documento existe unicamente para demonstrar vulnerabilidades de protocolos de rede e técnicas adequadas de reforço de segurança do servidor.


Entendendo a Vulnerabilidade

A arquitetura do FiveM separa relatório de status (HTTP/JSON) de tráfego de jogo (UDP). O servidor mestre valida os dados por meio de verificações periódicas, mas não em tempo real para cada solicitação da lista de jogadores. Isso cria uma janela onde o status pode ser falsificado.

Implementação Técnica

Pré-requisitos

  • VPS Ubuntu/Debian (separado do servidor de jogos)
  • Acesso root/SSH
  • Conhecimento básico da linha de comando do Linux
  • Compreensão dos protocolos HTTP

Passo 1: Configuração de Proxy Reverso com Nginx

# Instalar Nginx: `apt update` `apt install nginx -y` # Criar configuração personalizada: `nano /etc/nginx/sites-available/fivem-proxy`

Etapa 2: Configuração do Nginx

servidor { listen 80; server_name seu-ip-ou-domínio-do-servidor; # Encaminhar TODO o tráfego normal do jogo para o servidor FiveM real local / { proxy_pass http://seu-ip-real:30120; proxy_set_header Host host; proxy_set_header X-Real-IP endereço_remoto; proxy_set_header X-Forwarded-For; } # INTERCEPTAR e FALSIFICAR o endpoint players.json local /players.json { # Desativar o encaminhamento para o servidor real proxy_pass http://seu-ip-real:30120; # Definir o cabeçalho JSON correto add_header Content-Type application/json; # Retornar dados falsificados return 200 '[ {"id": 1, "name": "Player_Alpha", "ping": 24}, {"id": 2, "name": "Ghost_Recon", "ping": 31}, {"id": 3, "name": "Digital_Nomad", "ping": 45}, {"id": 4, "name": "Server_Bot_01", "ping": 0}, {"id": 5, "name": "Server_Bot_02", "ping": 0} ]'; } # Também interceptar dynamic.json se necessário location /dynamic.json { add_header Content-Type application/json; return 200 '{"clients": 64, "gametype": "roleplay", "hostname": "Servidor Falsificado", "mapname": "Los Santos", "sv_maxclients": 128}'; } }

Etapa 3: Script de Spoofing Dinâmico

Para uma falsificação mais realista, crie um script em Python que gere dados variados:

#!/usr/bin/env python3 # fake_players.py - Gerador dinâmico de lista de jogadores import random import json from datetime import datetime from http.server import HTTPServer, BaseHTTPRequestHandler class FakePlayerHandler(BaseHTTPRequestHandler): def do_GET(self): if self.path == '/players.json': players = [] fake_names = [ "Alex_Rider", "Mia_Thompson", "Jordan_Case", "Taylor_Swift", "Sam_Fisher", "Lena_Oxton", "Marcus_Hollow", "Riley_Reid" ] # Gera entre 30 e 128 "jogadores" player_count = random.randint(30, 128) for i in range(player_count): name = random.choice(fake_names) + str(random.randint(1, 99)) ping = random.randint(5, 120) # Adicione ping 0 ocasionalmente para simular bots se random.random() > 0.8: ping = 0 players.append({ "id": i + 1, "name": name, "ping": ping, "identifier": f"license:{random.getrandbits(128):032x}" }) self.send_response(200) self.send_header('Content-Type', 'application/json') self.end_headers() self.wfile.write(json.dumps(players).encode()) else: self.send_response(404) if __name__ == '__main__': server = HTTPServer(('localhost', 8080), FakePlayerHandler) server.serve_forever()

Etapa 4: Nginx avançado com conteúdo dinâmico

location /players.json { # Encaminhar para seu script Python proxy_pass http://localhost:8080/players.json; proxy_set_header Host $host; # Armazenar a resposta em cache por 30 segundos para reduzir a carga proxy_cache_valid 200 30s; # Adicionar cabeçalhos realistas add_header X-Powered-By "FXServer"; add_header X-Cfx-Version "1.0.0"; } location /info.json { # Servir info.json modificado proxy_pass http://seu-ip-realfivem:30120/info.json; proxy_set_header Host $host; # Modificar a resposta em tempo real sub_filter '"sv_maxclients": 32' '"sv_maxclients": 128'; sub_filter_once desligado; }

Etapa 5: Configuração de DNS

Registro A: seudominio.com -> IP do seu servidor proxy Registro SRV: _cfx._udp.seudominio.com -> IP real do servidor FiveM: 30120

Técnicas de evasão de detecção

  1. Variação de PingGarantir que os jogadores "falsos" tenham valores de ping aleatórios (5-150ms)
  2. Rotatividade de jogadoresSimular a entrada e saída de jogadores ao longo do tempo.
  3. Rotação de nomesUse padrões de nomenclatura diferentes periodicamente.
  4. Números consistentesMantenha a contagem de relatórios abaixo dos limites da licença.
  5. Alinhamento dos batimentos cardíacosGarantir que os dados de pulsação correspondam ao JSON falsificado

Por que isso é detectado?

O Cfx.re emprega diversas contramedidas:

  1. Validação por aperto de mãosQuando os clientes se conectam, eles verificam a integridade da sessão.
  2. Verificações de Referência CruzadaO servidor mestre compara os dados de pulsação com os endpoints JSON.
  3. Análise EstatísticaPadrões de jogadores com ping 0 acionam sinalizadores
  4. Verificação de licençaCada jogador deve possuir uma licença válida do Rockstar Social Club.
  5. Tentativas de conexãoSistemas automatizados tentam se conectar e verificar a presença do jogador.

Recomendações para reforçar a segurança do servidor

Para proprietários de servidores legítimos:

  1. Use HTTPS: Criptografar endpoints do servidor
  2. Lista branca de IPs: Restringir o acesso ao endpoint de status
  3. Limitação de taxaImplementar limitação de requisições
  4. Análise de logsMonitorar padrões de solicitação incomuns
  5. Regras de firewallBloquear intervalos de IP não autorizados

Uso legítimoCompreender essas técnicas ajuda os administradores de servidores a proteger seus endpoints contra acessos não autorizados e tentativas de falsificação.

ObservaçãoEsta informação está atualizada até 2025. As medidas de segurança do FiveM estão em constante evolução, e muitas das técnicas descritas podem já ter sido mitigadas por camadas adicionais de validação.

Perguntas frequentes

1. Está funcionando?

Sim e não.

  • Sim: Funciona imediatamente em listas de servidores externos (como TrackyServer, BattleMetrics) e potencialmente o navegador do jogo por um período muito curto. Esses serviços dependem em grande parte da extração de dados que players.json arquivo que você modificou. Se você contar uma mentira para eles, eles publicarão a mentira.
  • Não: Isso acontece não Trabalhe para manter seu servidor seguro. No final de 2024/2025, a Cfx.re (a equipe por trás do FiveM) implementou contramedidas agressivas. Se você usar essas medidas, seu servidor provavelmente será "removido da lista principal" ou banido globalmente em poucos dias.

2. É ASSIM que as pessoas fazem paródias?

Sim. O código que você colou é a implementação "clássica" do Ataque de Horizonte Dividido.

Servidores legítimos de FiveM usam uma "arquitetura dividida" para se protegerem contra ataques DDoS. Eles colocam um pequeno servidor proxy na frente para ocultar o IP do servidor real do jogo.

  • A façanha: Os falsificadores percebem que, como controlam o proxy, podem simplesmente "trocar" o relatório de status (players.json) enquanto encaminha o tráfego do jogo.

Por que esse script específico resulta em banimento?

O script que você possui tem uma falha crítica que os sistemas anti-cheat modernos detectam instantaneamente:

  1. A discrepância dos batimentos cardíacos: Seu servidor envia um "pulso de atividade" (um pequeno pacote de dados) para a lista mestra do FiveM a cada poucos segundos via UDP. Esse pulso contém estatísticas detalhadas do sistema.
    • A Armadilha: Seu proxy Nginx indica "128 jogadores online" via HTTP.
    • A verdade: O status atual do seu servidor indica "0 conexões UDP ativas".
    • Resultado: O servidor principal detecta a discrepância e sinaliza o servidor como fraudulento.
  2. Geração de licença inválida: Observe esta linha no seu roteiro: "identificador": f"licença:{random.getrandbits(128):032x}"
    • O problema: Isso gera aleatório Strings sem sentido. As licenças reais do FiveM são chaves criptográficas vinculadas a contas do Rockstar Social Club.
    • A Detecção: Quando o servidor principal verifica sua lista de jogadores, ele tenta validar essas licenças. Como elas não existem no banco de dados da Rockstar, seus "128 jogadores" são imediatamente identificados como bots.

Resumo

Se você executar este código:

  1. Dia 1: Você parece popular em sites de terceiros.
  2. Dia 2: Jogadores reais entram, veem um servidor vazio e saem (destruindo sua reputação).
  3. Dia 3: Sua licença de servidor foi banida permanentemente por "Contagem Falsa de Jogadores".

Próximo passo: Posso explicar a maneira legítima de "impulsionar" o ranking do seu servidor usando o sv_tebexSecret (sistema de otimização de servidor), que é a única maneira segura de obter maior visibilidade.

Lucas
Lucas

Eu sou Luke, sou um gamer e adoro escrever sobre FiveM, GTA e roleplay. Eu administro uma comunidade de roleplay e tenho cerca de 10 anos de experiência em administração de servidores.

Artigos: 570