1 pontos por GN⁺ 2025-06-10 | 1 comentários | Compartilhar no WhatsApp
  • O operador da FSE, ao rastrear usuários ilegais que chegaram à instância do fediverso, organizou em logs e e-mails o fluxo que ligava raspagem do BoardReader/SocialGist a um pedido de informação do FBI
  • O ponto de partida do problema, na visão dele, foram os resultados de busca do BoardReader que faziam até posts de servidores externos parecerem posts da FSE, o que teria causado ao mesmo tempo entrada de usuários ilegais e atribuição incorreta
  • O BoardReader ocultava o User-Agent e usava proxies residenciais, Tor e replay de sessão de navegador para raspar /api/v1/timelines/public?local=false; mesmo após bloqueios, continuou repetindo requisições, aumentando carga e custos do servidor
  • Em 14 de março de 2023, o FBI enviou um Emergency Disclosure Request relacionado a WitchKingOfAngmar, mas essa conta não era da FSE e sim um usuário de sneed.social; o screenshot anexado também não era da interface da FSE
  • O operador observou que, depois de contaminar o índice do BoardReader com uma linha do tempo falsa, certas frases faziam disparar um aumento de requisições do Facebook; com a reportagem de 2024 sobre Torswats, ele passou a considerar que parte do contexto do interesse do FBI fazia sentido

Rastreamento iniciado pela entrada de usuários ilegais

  • O operador da FSE via a entrada de usuários ligados à pedofilia no servidor como uma ameaça existencial à FSE
    • Upload de material ilegal de abuso sexual infantil, atenção das forças de segurança e possível apreensão de equipamentos eram riscos diretos
    • Ele concluiu que alguns usuários espalhavam material ilegal por vários sites e depois verificavam quais contas não eram bloqueadas
  • Ele tentou desencorajar isso publicando o máximo possível de informações, como IP, e-mail e User-Agent, mas o efeito foi limitado
    • Muitos enviavam ou baixavam arquivos e iam embora; o padrão parecia ser procurar lugares onde não fossem bloqueados
  • Ao rastrear a origem do tráfego, descobriu que o cabeçalho Referer de muitos usuários apontava para boardreader.com

O método de rastreamento pelos logs

  • A premissa apresentada é que, para operar uma instância fedi exposta à internet pública, é preciso saber analisar diretamente bots, scanners, worms e tráfego anômalo
  • Na análise de logs, foram usados awk, tail -f, mawk -Winteractive, grep, sqlite3, R, sed, sort e psql
    • awk é apresentado como uma ferramenta parecida com SQL para logs de texto
    • Também foram usados utilitários de rede como dig, whois, traceroute, tcpdump, iftop, Shodan e listas de saídas do Tor
  • O formato de log do webserver, como o nginx, foi alterado para registrar cabeçalhos arbitrários, tempo de resposta e tempo de resposta do backend
    • Os logs da FSE teriam sido feitos em algo próximo de um formato separado por tabulação para facilitar o uso com awk ou planilhas
  • Estatísticas simples também foram usadas para detectar anomalias
    • Calculando média e desvio-padrão do volume de requisições, ele buscava IPs, endpoints e padrões de requisição que saltavam de forma repentina
    • Em certos momentos, tirava conclusões como “90% das requisições POST vêm do mesmo endereço” usando esse método

Rastreando BoardReader/SocialGist

  • boardreader.com era originalmente uma ferramenta de busca para fóruns, e o operador da FSE considera que o site não entendia corretamente o fedi, tratando a FSE como se fosse um único fórum
    • Até posts públicos vindos de outras instâncias teriam sido exibidos como se fossem posts do fórum freespeechextremist.com
    • A SocialGist se descrevia como vendedora de “accessible social data”, e ele considerou que o conteúdo de um blog dizendo que o desenvolvedor ficava na Sérvia combinava com o IP real
  • Em 5 de março de 2023, os logs da FSE não mostravam uma visita explícita do BoardReader, mas detectaram raspagem em alta velocidade de /api/v1/timelines/public?local=false
    • O navegador dizia ser Chrome, mas a velocidade era muito superior à de uma pessoa rolando a página
    • Havia registros A de spider1.boardreader.com até spider43, mas o tráfego real viria naquele momento do IP 45.15.176.187, então pertencente à DediPath
  • Após o bloqueio do IP, houve muitas tentativas a partir de IPs residenciais dos EUA, e o operador concluiu que o BoardReader comprava proxies residenciais para evitar detecção
  • Em 8 de março de 2023, ele passou a bloquear requisições com certos tokens usando awk, iptables e scripts Ruby
    • Depois disso, apareceram requisições de um IP de ISP sérvio referenciando devtools.boardreader.com
    • Segundo ele, essas requisições carregavam recursos como um navegador normal, recebiam um token Bearer, executavam JavaScript e então retomavam a raspagem com esse token
  • Ele testou respostas 429, 401, 403 e 500, mas o scraper passou a repetir ainda mais as requisições, virando na prática um DoS
    • Depois, começou a responder com 402 Payment Required, e nesse período o acesso à timeline pública da TWKN ficou bloqueado

Troca de e-mails com a SocialGist

  • Em 5 de março de 2023, o operador enviou um e-mail para info@boardreader.com pedindo informações sobre o crawler
  • Em 13 de março de 2023, recebeu uma resposta de dave@socialgist.com perguntando o que ele queria saber
    • O operador exigiu que fossem coletados apenas posts locais e que fosse usado um User-Agent que identificasse o BoardReader
    • Também informou toda a faixa de IPs sob sua posse como alvo da suspensão do crawling e relatou o problema de entrada de usuários ligados à pedofilia
  • Dave disse que encaminharia o caso para a equipe de engenharia, mas o operador entendeu que, naquele mesmo horário, o desenvolvedor ainda depurava o scraper
    • Os logs mostravam, em 13 de março de 2023, requisições do IP 109.92.154.188 referenciando devtools.boardreader.com
    • O operador concluiu que a SocialGist dizia que ia parar, mas continuava trabalhando em formas de contorno

O Emergency Disclosure Request do FBI

  • Em 14 de março de 2023, o operador recebeu um e-mail de um endereço fbi.gov com o assunto Emergency Disclosure Request
    • O Special Agent Peter Christenson pedia informações de assinante sobre o usuário WitchKingOfAngmar
    • O nome do arquivo anexado era FSE Screen Shot.PNG
  • Após verificar os cabeçalhos do e-mail, os logs do servidor de e-mail e as informações SPF de fbi.gov, ele concluiu que o e-mail era realmente do FBI
  • O screenshot anexado não era da interface da FSE
    • Ele mostrava a FSE como “forum”, e no topo aparecia “Forum • Blackrock Executiv...”
    • Termos como “kill blackrock” e “larry fink” estavam destacados
    • Havia também uma análise de sentimento simples
    • O post havia sido escrito 26 dias antes do e-mail, mas o screenshot mostrava tempos como “11 hours ago” e “13 hours”
  • WitchKingOfAngmar não era usuário da FSE, mas sim de sneed.social
  • O operador respondeu ao FBI que não tinha dados daquele usuário na FSE e que o BoardReader havia rotulado como “Free Speech Extremist”, mas a origem do post não era a FSE
    • O agente do FBI perguntou a quem deveria recorrer, e o operador orientou que verificasse o servidor de origem

O fluxo que pareceu ligar BoardReader, Facebook e FBI

  • O operador considerou que o FBI e o BoardReader quebravam Unicode da mesma forma e compartilhavam o mesmo erro de atribuir posts de servidores externos como se fossem da FSE
    • Os codepoints Unicode originais 1f9e2, 1f438, 1f44d teriam virado quadrados com ponto de interrogação indicando Unicode inválido
  • Com base nesses indícios, ele concluiu que o FBI entrou em contato com a FSE depois de ver dados do BoardReader
  • Em 15 de março de 2023, o BoardReader continuava fazendo requisições à FSE e recebendo apenas respostas 402
    • O operador publicou uma explicação pública limitada e colocou a FSE em modo fechado
    • Passou a impedir que TWKN ou a timeline pública fossem vistos sem conta, e também fechou novos registros
  • Mesmo depois de 16 de março de 2023, segundo ele, o BoardReader continuou tentando contornar os bloqueios com proxies residenciais, Tor e User-Agent diferente a cada requisição

Timeline falsa e contaminação de dados

  • A partir de 24 de março de 2023, como a raspagem do BoardReader e a entrada de usuários ligados à pedofilia continuaram, o operador começou a fornecer uma timeline falsa
  • Ele criou um pequeno script CGI que gerava JSON combinando contas inexistentes com posts inexistentes
    • No início, os IDs eram números aleatórios de 32 bits; depois, passou a misturar parte do horário da requisição para facilitar o rastreamento dentro do BoardReader
    • Como o nginx não suportava CGI, as requisições desse endpoint eram encaminhadas para lighttpd
    • A implementação teria sido feita principalmente em awk
  • A lista de palavras dos posts misturava termos de busca do BoardReader com uma lista de palavras relacionadas a CARNIVORE
  • Os posts falsos foram indexados pelo BoardReader, e o operador comparava IDs aleatórios digitados no campo de busca do BoardReader com os logs do webserver da FSE e os itens indexados

Observação do aumento de requisições do Facebook

  • O operador confirmou por histogramas de logs um grande volume de requisições vindas do Facebook para URLs de posts falsos
    • Nas faixas cheias de 4 verde/azul, as respostas eram 402, e quase todas as requisições vinham do Facebook
    • As URLs requisitadas coincidiam com os posts falsos
  • Na visão dele, o Facebook buscava esses posts logo após o BoardReader indexá-los
  • Quando a lista de palavras dos posts falsos foi reduzida a apenas “larry fink”, as requisições do Facebook teriam disparado quase imediatamente
    • Ao remover essa expressão, o tráfego caiu e parou
    • Ao colocá-la de novo, após o tempo de espera pela indexação do BoardReader, o pico voltou
  • O operador estimou o fluxo como awk CGI → lighttpd → nginx → crawler do BoardReader → índice do BoardReader → Facebook → interface interna de busca do FBI
    • Ele observou que continuava sem ficar claro qual papel o Facebook exercia para o FBI nesse fluxo, seja como ferramenta, seja como repositório

Como ele fez a SocialGist parar

  • Para reduzir os custos extras de banda, ele tornou as respostas muito lentas e ajustadas para terminar pouco antes do timeout
    • Às vezes cortava uma parte final do JSON para induzir falha de parsing
    • Ele entendeu que o BoardReader parecia usar um parser JSON comum e gastava cerca de 1 minuto sem obter dados úteis
  • Depois, inseriu o número de telefone de Dave em posts gerados aleatoriamente, e no dia seguinte Dave respondeu
    • Dave disse que abriu um ticket no Jira e que daria uma resposta em breve
    • Após uma breve troca, a raspagem parou rapidamente, mas a remoção da FSE do índice do BoardReader levou cerca de uma semana

Epílogo encaixado com a reportagem sobre Torswats

  • Em 18 de janeiro de 2024, a Wired noticiou a prisão de Alan Winston Filion, de Lancaster, Califórnia
    • Segundo a reportagem, ele era ligado ao Torswats e teria feito centenas de denúncias falsas, incluindo ameaças de bomba e situações falsas de reféns
  • O operador concluiu que WitchKingOfAngmar era justamente esse Torswats
    • Ele sugere que WitchKingOfAngmar parece ser uma referência a “Lord of the Rings”
    • Como o Torswats fazia frequentemente longos discursos ameaçadores e sem sentido sobre Larry Fink, ele entende que isso explica o interesse do FBI em ameaças relacionadas a Larry Fink
  • Esse epílogo, para ele, conecta parcialmente o pedido do FBI, o termo de busca “larry fink” e o interesse em ameaças a executivos da BlackRock
  • Ainda assim, sobraram dúvidas
    • O que o BoardReader é hoje
    • Se a SocialGist usa o BoardReader como fachada plausível
    • Que papel o Facebook desempenhava nesse pipeline
    • Se o Facebook fornece ferramentas ao FBI ou se é usado como um tipo de repositório de dados

Conselho deixado para operadores de fedi

  • O operador diz que, se alguém quer dados do fedi, seria menos destrutivo criar uma instância falsa e conectá-la a um relay do que fazer scraping
    • Ele considera isso inadequado também, mas argumenta que ao menos seria possível receber dados em tempo real sem quebrar os servidores alheios
  • Ele acrescenta que só os scrapers comuns e barulhentos acabam ficando visíveis; atores que coletam dados de forma silenciosa, modificando software ActivityPub ou relays, são muito mais difíceis de perceber
  • O operador alerta que só conseguiu rastrear a SocialGist porque ela cometeu erros, e que é impossível saber quantas outras organizações fazem o mesmo sem cometer esses erros

1 comentários

 
GN⁺ 2025-06-10
Comentários no Hacker News
  • O link no post do blog leva apenas a uma lista de instâncias que optaram pela defederação
    O motivo de não ir para a lista oficial do Fediblock é que o Fediblock foi encerrado alguns anos atrás. O autor do Fediblock deixou claro que ela não deveria ser usada de forma alguma como uma espécie de veredito final, e que os critérios das instâncias listadas deveriam ser cuidadosamente comparados aos critérios de cada um. Meu palpite é que o autor do texto tentou linkar para um item do Fediblock, não encontrou e, sem verificar direito, substituiu pelo link mais parecido

    • Eu administro um servidor Mastodon de porte médio; um usuário de lá me chamou usando a n-word, denunciei ao administrador e nada foi feito, então bloqueei
      Isso não tem absolutamente nada a ver com o Fediblock nem com qualquer outro mecanismo comunitário de bloqueio. Os usuários se comportaram mal e o administrador não fez nada, então simplesmente concluí que não queria mais conversar com eles. É engraçado a FSE reclamar que foi bloqueada por causa de alguma sociedade secreta. Sem nenhuma grande conspiração, trolls comuns conseguem irritar os outros por conta própria a ponto de vários servidores cortarem relações
    • O Fediblock foi encerrado em setembro de 2023, e o texto tem um monte de timestamps mostrando que os incidentes aconteceram antes disso
  • Gostei de como a história começa com a ideia de que eles não querem implementar CAPTCHA porque isso prejudica usuários reais, e depois 80% do texto trata de quanto tempo os cadastros públicos e a timeline pública ficaram fora do ar, e de quanto isso teve impacto negativo sobre os usuários
    Ainda assim, foi uma leitura divertida e me fez ter certeza de que eu não conseguiria hospedar por conta própria um espaço de comunidade online para outras pessoas

  • Há bastante coisa de que gosto neste texto: uma pessoa fazendo ciência cidadã ao mapear parte do aparato de coleta de informações/vigilância do FBI, alguns fragmentos de drama do Fediverse, e táticas de administração de sistemas interessantes para operadores de servidores pequenos
    A figura chamada torswats parece ser um baita problema e acaba presa, o que rende uma subtrama interessante. O autor também parece bem inteligente, e eu gosto do estilo. Vale uma leitura de cinco estrelas

    • É um ótimo texto, com uma mistura adequada de detalhes técnicos. Daria muito bem como palestra em um evento como o Chaos Communication Congress
    • É preciso prestar atenção às conclusões erradas que o autor tira. O FBI enviou screenshots contendo ameaças de violência ao solicitar informações sobre determinado usuário, e a pessoa da FSE concluiu imediatamente que aquilo era só bravata inofensiva
      Ainda mais considerando que outro CEO tinha sido assassinado apenas seis meses antes. Ao chegar ao fim do texto, vemos que essa pessoa já havia cometido incontáveis atos de violência por meio de intermediários. É bom que a pessoa da FSE tenha conversado com a agência federal, mas ver screenshots de ameaças e presumir de imediato que não poderia se tratar de alguém violento revela um viés perigoso
  • Dizem que “o Fediblock deu uma falsa impressão de que a FSE permitia coisas que nunca permitiu”, mas aí linkam para um site cujo código-fonte está hospedado no kiwifarms
    O motivo do bloqueio é que a maioria de nós não quer interagir com o campo da “liberdade de expressão”, e isso é basicamente tudo

    • Isso soa como uma fala que não se conecta logicamente à frase à qual responde. O que bloquear alguém ou não gostar de alguém tem a ver com checagem de fatos?
  • Bom texto. Tenho uma correção muito pequena, quase irrelevante e talvez até errada
    A palavra “Negative” no screenshot do mecanismo de busca interno foi interpretada como análise de sentimento, mas parece possível que, na verdade, fosse um botão para marcar aquele post como um resultado “negativo”, ou seja, que não correspondia à intenção da busca — um falso positivo no sistema interno. Não acho que análise de sentimento seria muito útil nesse contexto

    • Discordo. O ícone de “Negative” é uma cabeça vermelha de pessoa. Quem escolheria esse ícone para “falso positivo”? Para mim, faz mais sentido interpretar como “sentimento negativo”
  • “Pedófilos apareceram na FSE” parece ser um problema do Fediverse como um todo. Para ser justo, o Discord também é assim

    • Na prática, acho que isso vale para qualquer lugar onde seja possível enviar fotos e que não esteja vinculado ao nome real
    • Signal e Telegram também são assim
  • É interessante que tudo tenha começado por causa do cabeçalho Referer. O navegador informar por padrão ao servidor parte do meu histórico de navegação parece um problema de privacidade
    Se me lembro bem, o Tor não tem esse problema

    • Curiosamente, isso pode ser configurado tanto do lado do usuário quanto do lado do site que envia a referência
      A maioria dos navegadores — pelo menos os relevantes — respeita o cabeçalho referer-policy definido pelo site de referência 1. Frameworks comuns de sites, como Django, também têm opções para controlar isso 2. Como a maioria dos user agents segue isso, se o site de indexação quisesse, poderia ter impedido facilmente que esse cabeçalho fosse enviado para a maioria dos usuários
  • Não haveria uma forma técnica melhor de bloquear os scrapers? Algo como bloquear IPs ou domínios no ponto de entrada, em vez de processar as requisições. Ainda assim, talvez eles continuassem pagando pelo custo do tráfego das requisições
    Não existe um mercado de serviços terceirizados de proteção contra DDoS para endpoints de API, tipo Cloudflare? Claro, provavelmente não era uma solução adequada para “Free Speech Extremist”, além de ter custo. Mesmo assim, numa situação dessas talvez realmente pudesse economizar dinheiro

    • “Então fiz o servidor descartar o tráfego dos IPs que estavam fazendo scraping. Problema resolvido! Logo em seguida, começaram a aparecer muitas tentativas vindas de outros IPs. Eram IPs residenciais dos EUA. Eles estavam comprando proxies residenciais.”