Formação
Acesso à Informação
Help Desk
Veja como monitorar em tempo real ataques coordenados no Twitter
* Tutorial escrito com o apoio do jornalista Adriano Belisário, coordenador da Escola de Dados no Brasil.
Em um dos casos recentes de ataques virtuais à imprensa brasileira, a jornalista Patrícia Campos Mello (Folha de S. Paulo) voltou a ser alvo de ofensas machistas e misóginas nas redes sociais, em 11.fev.2020. Milhares de contas nas redes sociais disseminaram mensagens ofensivas logo após um depoimento na Comissão Parlamentar Mista de Inquérito das Fake News, levantando suspeitas de ações orquestradas com o uso de robôs no Twitter.
Uma ótima ferramenta para investigar ações de ataques coordenados nesta rede social é o BotSlayer, que encontra-se em fase beta na Universidade de Indiana (EUA) e serve para rastrear e detectar possíveis manipulações de informações no Twitter. O programa usa um algoritmo de detecção de anomalias e cria um índice para sinalizar hashtags, links, contas e mídias com alta probabilidade de terem sido impulsionadas na rede social de forma coordenada, com a ajuda de bots.
Filippo Menczer, professor de Informática e Ciência da Computação e diretor do Observatório de Mídias Sociais, explica que o BotSlayer usa um novo algoritmo chamado BotometerLite para calcular uma pontuação (entre 0 e 5) com base na probabilidade de uma conta ser um bot. Seu funcionamento é descrito em detalhes neste artigo (em inglês) publicado no final do ano passado. O grande diferencial é contornar alguns dos maiores problemas para detectar robôs: a possibilidade de aumentar a escala para analisar mais conteúdos e a capacidade de “generalização” do modelo, ou seja, seu correto funcionamento em contextos diferentes.
Ao invés de considerar as ações e conexões dos usuários, o BotSlayer leva em conta apenas as informações de seu perfil, que podem ser facilmente acessadas em massa. "Isso permite que cada tweet capturado pelo BotSlayer seja verificado em tempo real", explicou Menczer, em entrevista para à Abraji e à Escola de Dados.
O BotSlayer é gratuito e foi desenvolvido pelo Observatório de Mídias Sociais da Universidade de Indiana (EUA), o mesmo grupo que no passado fez outras ferramentas, como o Botometer e o Hoaxy. O primeiro checa a atividade uma conta no Twitter e dá uma nota baseada na probabilidade do usuário em questão ser um robô, enquanto o Hoaxy permite visualizar como os fluxos de informação se espalham em redes de usuários.
O programa pode ser instalado tanto localmente, na máquina de cada usuário, como na nuvem. Porém, como seu objetivo maior é realizar análises em tempo real e 8 horas é o tempo mínimo de funcionamento para o melhor aproveitamento de suas métricas, é recomendável a instalação do software em um servidor. Um painel acessível pelo navegador permite que os usuários explorem os tweets e contas associados a campanhas suspeitas, visualizem sua propagação com o Hoaxy e pesquisem conteúdos relacionados na web.
Modelo da tela do Botslayer (Foto: Reprodução)
O BotSlayer foi projetado como uma plataforma de crowdsourcing: em troca do serviço gratuito, o sistema fornece dados anônimos de volta ao laboratório para pesquisa, de maneira compatível com os termos e diretrizes do Twitter. Os dados ajudarão no estudo e na detecção precoce de fenômenos de manipulação de mídia social. O projeto é apoiado pela Craig Newmark Philanthropies.
A Abraji e a Escola de Dados traduziram e complementaram o tutorial fornecido pela Universidade de Indiana. Confira abaixo como instalar o BotSlayer no seu próprio computador, desde que você tenha o software Docker, ou em um servidor da Amazon. Todo o tutorial do BotSlayer pode ser encontrado neste vídeo (em inglês) também.
Analisando mensagens com o BotSlayer
Abaixo, vamos ensinar como instalar o BotSlayer e configurá-lo. Antes disso, porém, vejamos as métricas e principais resultados que o programa nos oferece, quando em funcionamento.
Tudo começa com a definição de termos de buscas iniciais, que serão coletadas de forma contínua a partir do momento da configuração inicial. Segundo Diogo Pacheco, pesquisador envolvido no projeto, o sistema não armazena mensagens retrospectivamente e a API do Twitter não retorna mais que 1% do volume total de mensagens na plataforma em um certo período.
Isto exige um cuidado na hora de escolher os termos de busca: se eles forem bem específicos, você provavelmente conseguirá coletar todas as mensagens relativas àquele assunto. Já se forem demasiadamente genéricos, é possível que nem todos sejam coletados, por conta da limitação da API do Twitter.
Depois de coletadas as mensagens, o BotSlayer identifica as entidades envolvidas em cada uma delas. Entidades podem ser hashtags, links, imagens ou vídeos, usuários do Twitter e frases textuais. O funcionamento desta última em português ainda não é perfeito, pois o sistema remove automaticamente palavras e expressões comuns (“stopwords”) apenas em inglês, de modo que muitas frases textuais identificadas como entidades pelo BotSlayer são palavras comuns do nosso vocabulário.
Depois de extrair as entidades, o BotSlayer as exibe em um painel com as métricas abaixo para cada uma delas. :
- Tweets: o número de tweets e retweets que correspondem à consulta inicial e contêm essa entidade nas últimas quatro horas;
- Accounts: o número de contas distintas que postaram mensagens que correspondem à consulta nas últimas quatro horas;
- Trendiness: alteração relativa no número de tweets que correspondem à consulta e contêm essa entidade nas últimas quatro horas, em comparação com as quatro horas anteriores;
- Botness: média do índice que mede a probabilidade de dado usuário ser um bot, entre os tweets de que contêm essa entidade nas últimas quatro horas;
- BS Level: este índice, mencionado no início do texto, leva em consideração os números anteriores para chegar a uma nota entre 0 e 1. Quanto maior o índice, mais provável desta “entidade” ter a participação de robôs em sua propagação online. Ele é determinado de forma relativa, considerando cada conjunto de dados, e não através de uma escala absoluta. Por isso, a comparação do “BS Level” entre datasets diferentes não é recomendada. Segundo seus desenvolvedores, a definição do que é um BS Level alto deve ser feita caso a caso.
Vale reforçar o fato de que o BotSlayer não coleta mensagens retrospectivamente. Ou seja, é preciso deixar o programa rodando por pelo menos 8h sem interrupções para levar em conta o índice de Trendiness, por exemplo. Todos estes dados podem ser exportados para o formato CSV diretamente do painel web do programa.
O professor Filippo Menczer pondera no entanto que o BotSlayer não faz uma avaliação definitiva sobre robôs ou ações orquestradas de ataque. A ferramenta apenas seleciona vários usuários com indícios fortes, mas cabe ao usuário fazer avaliações finais, analisando os próprios dados e com o uso de outras ferramentas gratuitas, como o Hoaxy, do próprio Observatório.
"Não tentamos classificar uma entidade como orquestrada/coordenada ou não. O BS Level tenta classificar as entidades que podem ser suspeitas devido a uma combinação de fatores, mas você pode examinar como uma entidade específica está se espalhando usando também outras ferramentas, como o Hoaxy, para chegar a seu próprio julgamento sobre se existe ou não uma campanha de manipulação coordenada”, explica.
BotSlayer: da instalação à primeira busca
Primeiro, para usar o BotSlayer é preciso preencher este formulário. Você também deve estar conectado a uma conta do Google para verificar sua identidade e concordar com o EULA (End User License Agreement). Você receberá os detalhes necessários para seguir as instruções de instalação abaixo no texto. Anote a "Secret string", a "URL", e a "Password" que serão geradas após preencher o formulário: você precisará delas para fazer o download. Confira as diferentes instruções de instalação:
Para usuários Docker
O BotSlayer pode ser instalado em qualquer computador por meio de uma imagem pré-construída no Docker. Para instalá-lo na sua máquina, siga as instruções noDepois de solicitar o software e concordar com os termos de uso, você deverá receber um URL vinculado a uma imagem do Docker e uma senha. Faça o download do arquivo de imagem. Você precisará inserir um nome de usuário (botslayer) e a senha fornecida.
Você também pode usar o seguinte comando para baixar a imagem do Docker diretamente do terminal (substitua url2image pelo URL que você recebeu):
wget --user = botslayer --ask-password url2image
Em seguida, execute no terminal os seguintes comandos para carregar a imagem baixada e execute o contêiner do Docker. Substitua o nome do arquivo pelo nome do arquivo baixado.
gunzip filename.gz
docker load < filename
docker volume create pgdata
docker volume create rpdata
docker run -dit -p 5000:5000 -p 9001:9001 -v rpdata:/root/bev -v pgdata:/var/lib/postgresql/data bev
O último comando mapeia portas que fornecem funcionalidades diferentes. As interfaces estão disponíveis no “localhost” ou no endereço IP do seu servidor. O painel do BotSlayer está na porta 5000. A interface com os log é exposta na porta 9001, transmitindo arquivos de dentro do contêiner sobre o funcionamento do sistema.
Para um acesso mais fácil ao painel na porta HTTP padrão (80), você pode (1) configurar um proxy reverso da porta 5000 à porta 80 ou (2) usar o sudo para forçar a porta 5000 do mapa à porta 80 ao executar o docker recipiente.
Se o computador reiniciar por qualquer motivo, você precisará reiniciar o contêiner BotSlayer no Docker. Uma solução alternativa é configurar algum gerenciador de processos, como o supervisord.
Se você quiser ver um exemplo de código de configuração em ambiente EC2, que inclui a instalação do Docker, a instalação do proxy reverso no nginx e a configuração da supervisão, consulte esta página (em inglês) para obter as etapas da instalação.
Com o uso do Amazon Web Services
O BotSlayer usa o Amazon Web Services (AWS) por meio de uma Amazon Machine Image (AMI) para otimizar o processo de instalação para usuários não técnicos.
Etapa 1. Acesse à AWS. Se você não possui uma conta, precisará criar uma. Isso é gratuito, mas requer um cartão de crédito para cadastro. ATENÇÃO: Você pode selecionar o nível gratuito depois quando escolher seu plano, mas o cadastro deve cobrar US$ 1.
Faça o login no console. No AWS Management Console (Console de gerenciamento da AWS), clique em “Serviços AWS”, depois você irá ver o menu “Computação” e clique em “EC2”.
Etapa 2. Clique no botão para iniciar uma instância do EC2. Clique em “Launch instance”.
Etapa 3. Depois de solicitar o software e concordar com o EULA, você deverá receber instruções que incluem uma longa cadeia secreta como “0e ... f2”. É o item "Secret string" que você recebeu após preencher o formulário do BotSlayer.
Copie isso isso na caixa de pesquisa na parte superior (aparece como ‘Search for AMI by entering a search term”). Clique na guia "Community AMIs".
Selecione o resultado em AMIs da comunidade. Se a pesquisa não retornar nada, defina sua região de serviço da AWS como Ohio no canto superior direito da página e pesquise novamente.
Etapa 4. Selecione a imagem correta. Deve ser a imagem de um pinguim (o símbolo do Linux). Pressione Select.
Etapa 5. Na nova tela (Choose an Instance Type) você pode selecionar o tipo de instância marcado como "nível gratuito qualificado" (Free tier eligible).
Como alternativa, você pode selecionar o "t2.xlarge", recomendado pelo Observatório de Mídias Sociais, mas não gratuito; pode custar cerca de US$ 0,20/hora. Clique em "Configurar detalhes da instância" (Next:Configure Instance Details) no canto inferior direito para continuar. A Abraji usou a versão gratuita.
Etapa 6. Use as configurações padrão na página "Configurar detalhes da instância" (Configure Instance Details) e clique diretamente em "Adicionar armazenamento" (Next: Add Storage) na parte inferior direita para prosseguir.
Etapa 7. Escolha o tamanho do seu disco rígido. Você pode selecionar até 30 GB para o nível gratuito; o Observatório de Mídias Sociais recomenda 100 GB ou mais para manter os dados além de vários dias, dependendo da quantidade de informações que você rastrear. Clique em "Adicionar tags" (Next: Add Tags) no canto inferior direito para continuar.
Etapa 8. Use as configurações padrão na página "Adicionar tags" e clique diretamente em "Configurar grupo de segurança" (Next: Configure Security Group) para continuar.
Etapa 9. Adicione duas regras para abrir as portas exigidas pelo BotSlayer.
Clique em Add Rule – escolha “HTTP” em Type – “TCP” em Protocol – “80” em Port Range – “Custom” e “0.0.0.0/0, ::/0” em Source
Clique mais uma vez em Add Rule – escolha “Custom TCP Rule” em Type – “TCP” em Protocol – “9001” em Port Range – “Custom” e “0.0.0.0/0, ::/0” em Source
Clique em "Revisar e iniciar" (Review and Launch) no canto inferior direito para continuar.
Etapa 10. Revise cuidadosamente a configuração da máquina. Se você encontrar algum erro, poderá voltar para corrigi-lo. Caso contrário, clique em "Iniciar" (Launch) no canto inferior direito para continuar.
Etapa 11. Crie um novo par de chaves (Create a new key pair) e atribua um nome significativo, como “procura_bot_brasil” ou outro de sua preferência. Este par de chaves é necessário para acessar a máquina EC2. Faça o download do par de chaves (Download Key Pair) e mantenha-o em um ambiente seguro. Em seguida, inicie a instância (Launch Instances).
Etapa 12. Você terminou de configurar o BotSlayer, então clique no link da instância para ir para a Etapa 13. Clique no link após a frase: “The following instance launches have been initiated:”.
Etapa 13. Copie o nome do domínio ou o endereço IP e cole-o no seu navegador para acessar a interface web do BotSlayer. Em Instance State deve aparecer “running”.
Você pode encontrar o endereço em “IPv4 Public IP”. Algo como “18.XXX.XXX.XX”, sendo que no lugar dos Xs existirão números. Aguarde 5 minutos para que a máquina tenha tempo suficiente para iniciar o BotSlayer.
Marque o endereço IP como favorito, pois é assim que você acessará o painel do BotSlayer. Nota: se você reiniciar a instância do EC2, o endereço IP será alterado. Para atribuir um endereço IP estático, você pode usar um Endereço IP Elástico (não gratuito).
Configurando o BotSlayer
Depois de instalar o BotSlayer e acessar o painel da Web, clique em "Config" no menu, digite a senha de sua escolha e forneça as chaves do aplicativo de desenvolvedor do Twitter e uma consulta permanente (veja abaixo mais detalhes em “Seu primeiro raspador”). Consulte a página de Ajuda (Help) para obter mais instruções, dicas sobre as chaves do Twitter e o formato da consulta.
Atenção:
O painel é acessível via Web usando o endereço IP do servidor. Caso você esteja utilizando um servidor na nuvem, não compartilhe a URL com alguém de fora da sua organização ou pessoas em que você não confia. Eles podem fazer alterações no sistema ou acessar dados em violação dos termos de serviço do Twitter. Para evitar possíveis problemas de segurança e violação de termos, o BotSlayer bloqueia a indexação do mecanismo de pesquisa por padrão.
Coloque no browser o endereço do BotSlayer que você pegou no seu “IPv4 Public IP”. Clique em Config. É o momento que você escolhe uma senha para seu BotSlayer e depois clique em Change Password. E depois é preciso se logar com a senha que acabou de escolher.
Inserindo chaves da API do Twitter
Agora, chega o momento em que você precisa colocar suas identificações de desenvolvedor no Twitter para continuar. Para conseguir essas chaves você deve ir até o site desta rede social e se logar com seu usuário e senha no Twitter.
Clique no botão “Apps” e na próxima tela “Create an App”. Se for a primeira vez, você pode ter que preencher um questionário longo sobre os motivos do app e seus dados básicos.
Após isso você precisa colocar em “App details” o “App name”, depois a descrição em “Application description”, o “Website URL” e “Callback URLs” do seu projeto (por exemplo, no nosso caso, http://www.abraji.org.br), e escrever “Diga-nos como este aplicativo será usado” (Tell us how this app will be used).O Twitter pode levar algum tempo para aprovar o App depois disso.
Uma vez criado, vá até a aba Key and tokens. Clique nos dois botões Regenerate. Na tela que abre clique Copy para Access token, dê Ctrl+C no bloco de notas, depois Copy para Access token secret e dê Ctrl+C no bloco de notas. E também copie os valores de API key. Guarde estas chaves.
De volta à tela do BotSlayer, copie em Consumer Key o conteúdo de API key, depois em Consumer Secret copie API secret key, depois em Access Token copie o valor de Access token e, por fim, em Access Token Secret o valor de Access token secret. Clique em “Save”.
Fazendo sua primeira busca
Agora, no campo “Track” você pode escolher o que deseja vasculhar: palavras, nomes, hashtags, usuários do Twitter e até localizações. Durante o episódio envolvendo a Patrícia Campos Mello, por exemplo, a busca foi feita com diversas hashtags e palavras-chave que foram utilizadas naquela ocasião nas redes sociais, tais como: @camposmello, #somostodoshansriver, #hansriver, @folha, #zapgate, @bolsonarosp e “CPMI das Fake News” (alguns textos e hashtags que envolvem xingamentos foram retirados deste texto para não impulsionar ainda mais estes termos, porém são usados nas postagens e devem portanto serem considerados durante as pesquisas com o Botslayer).
Clique em Save de novo para salvar os parâmetros de buscas. Também é possível escolher itens em Follow (delimitar usuários específicos para seguir) e Location (locais dos tweets). Depois clique em Data e aguarde um pouco.
O BotSlayer começará a coletar mensagens deste momento. Depois de algum tempo, aperte Refresh para ver os resultados e as métricas da ferramenta.
Modelo da visualização de dados no programa (Foto: Reprodução)
Além de conferir as métricas comentadas acima, também é possível alterar as datas de busca em “Time Warp” e filtrar a tabela apenas por termos específicos. Também podem ser criadas visualizações dos dados com outro projeto do Observatório de Mídias Sociais, o Hoaxy. Por fim, na aba "Research" é possível ver timeline dos dados e os resultados das buscas encontrados no Twitter, Google, 4chan, Facebook, Reddit e YouTube.
No momento, não é possível obter mais informações sobre a quantidade total de mensagens coletadas ou ter acesso aos conteúdos baixados através da interface gráfica. Para isso, é preciso acessar o banco de dados, que provê os dados para o BotSlayer. Em um ambiente Docker, isto pode ser feito através do comando abaixo:
sudo docker exec -it <id_docker> psql -U bev -h localhost -p 5432
Para mais informações sobre a arquitetura de software do BotSlayer, consulte esta página no Github.