DOE AGORA Qualquer valor

Octosuite: uma nova ferramenta para conduzir investigações

Octosuite: uma nova ferramenta para conduzir investigações de código aberto no GitHub

O GitHub é uma das plataformas de hospedagem de código mais populares da Internet, com uma comunidade global de mais de 90 milhões de pessoas que usam seus serviços.

Isso torna o GitHub uma plataforma chave para codificadores e desenvolvedores. Muitas ferramentas úteis que auxiliam nas investigações de código aberto podem ser encontradas no site (incluindo no repositório GitHub da Bellincgat ).

Dada a quantidade de informações que os usuários compartilham na plataforma, o próprio GitHub também pode ser uma fonte útil para investigadores online.

Por exemplo, as informações disponíveis no GitHub podem ser cruzadas com outras mídias sociais ou conteúdo online que foi compartilhado publicamente.

Embora o GitHub tenha uma interface de usuário intuitiva, ele requer muitos cliques e é limitado a abrir uma entidade (seja uma página individual ou perfil de usuário ou organização) por vez. 

Além disso, não há uma maneira fácil de salvar as informações encontradas no GitHub.

É aqui que entra o Octosuite. O Octosuite é uma estrutura GitHub avançada escrita em Python que usa a API pública do GitHub para tornar o processo de investigação de contas e repositórios na plataforma mais eficiente, além de criar um conjunto de consultas automatizadas e facilmente reproduzíveis. 

Imagem: menu de ajuda da interface de linha de comando Octosuite

O que a Octosuite pode fazer? 

O Octosuite vem com uma ampla variedade de comandos que podem ser usados ​​para obter informações sobre contas e repositórios visíveis publicamente no GitHub. 

Com Octosuite, pode-se encontrar facilmente informações públicas sobre:

  • Usuários : informações de perfil, gists (pequenos trechos de código), atividade da conta (por meio de eventos como inscrever-se, criar, seguir), repositórios, organizações, assinaturas, seguidores e seguidores
  • Organizações : informações de perfil, atividade de conta, repositórios e membros públicos
  • Repositórios : contribuidores, linguagens de codificação, stargazers (equivalente a curtidas na plataforma), bifurcações (detalhes de quem criou uma cópia pública do repositório) e lançamentos 

O Octosuite também inclui um recurso de pesquisa que procura por usuários, repositórios, tópicos (uma tag de desenvolvimento que ajuda a entender o propósito do código), commits (uma resposta ou alteração em um arquivo ou conjunto de arquivos feito por um usuário) e problemas (conversação tópicos que a comunidade pode usar para sinalizar problemas ou solicitar recursos ou ajuda). 

Todas as saídas dessas pesquisas estão disponíveis em um formato legível e podem ser exportadas no formato de valores separados por vírgula (CSV). 

Introdução ao Octosuite 

Configurar o Octosuite é um processo simples. 

Pode ser instalado e utilizado de duas formas; como uma interface de linha de comando (CLI) ou como uma interface gráfica do usuário (GUI). 

Se você não se sentir confortável com a linha de comando, a opção GUI (com instruções de instalação no Windows e macOS ) é obviamente preferível. A versão GUI da ferramenta permite que os usuários selecionem comandos de pesquisa em um menu suspenso.

No entanto, a CLI pode ser mais flexível no processamento dos dados copiados ou no processamento em lote. Você também precisará conhecer os fundamentos da linha de comando para instalar a versão GUI da ferramenta. Para obter instruções completas sobre como instalar a versão GUI do Octosuite, consulte este guia do GitHub . 

O restante deste artigo detalhará como usar a versão CLI da ferramenta.

Comandos Octosuite

Se você estiver familiarizado com a linha de comando (no Windows, Linux ou Mac), basta abrir uma janela de terminal e digitar o seguinte comando para instalar o Octosuite: ` pip3 install octosuite `

Mas certifique-se de ter o Python 3 instalado antes de executar o comando. 

Um guia para iniciantes sobre como usar a linha de comando pode ser encontrado aqui .

Depois que o processo de instalação estiver concluído, você poderá iniciar o Octosuite executando o comando: ` octosuite` 

Como alternativa, você pode usar o seguinte comando para ver as opções disponíveis para executar o Octosuite com argumentos de linha de comando: `octosuite –help`

Imagem: prompt do Octosuite para habilitar cores para uma sessão.

Você receberá um prompt inicial perguntando se deseja habilitar cores no programa (isso torna a experiência mais envolvente), escolha 'y' para sim e 'n' para não. Depois disso, você verá a tela principal. 

Imagem: Tela principal do Octosuite com a opção de cor ativada.

A partir daí, você pode começar com o comando ` help` para ver uma lista de comandos disponíveis.

Imagem: O menu de ajuda do Octosuite.

Os comandos de investigação Octosuite têm subcomandos com sua própria funcionalidade exclusiva. Para listá-los, basta digitar `help:investigation_command` . Por exemplo, se você quiser ver todos os subcomandos para o comando do usuário , digite o seguinte: ` ajuda:usuário `.

Uma tabela mostrando todos os subcomandos para o comando do usuário aparecerá.

Imagem: subcomandos do usuário Octosuite.

Subcomandos do usuário

Vamos tentar obter as informações do perfil de um usuário. 

Você pode fazer isso digitando o comando ` user:profile`. Você será solicitado a inserir um nome de usuário. Depois de fazer isso, aperte enter. 

A captura de tela abaixo mostra a saída contendo as informações do perfil de um usuário (com alguns detalhes editados). O Octosuite perguntará se você deseja salvar a saída em um arquivo CSV. Você pode ler arquivos CSV salvos com o comando ` csv:read` , excluir um único arquivo CSV com ` csv:delete` ou excluir todos os arquivos CSV digitando ` csv:clear `.

Imagem: Octosuite mostrando as informações do perfil de um usuário (com alguns detalhes editados).

Pragmática Octosuite

Ter toda a API do GitHub na ponta dos dedos abre novas possibilidades para pontos de dados de referência cruzada ou elaboração de consultas específicas. Octosuite pode ser estendido para generalizar alguns deles. Alguns exemplos atuais incluem:

  • Verifique se o usuário A segue o usuário B: `user:follows`
  • Verifique se um usuário A pertence a uma organização: `org:member`
  • Obtenha uma lista de arquivos em um diretório especificado D de um repositório R: `repo:path_contents`
  • Iterar uma lista de nomes de usuários e chamar user_profile

    No exemplo a seguir, usamos o sinalizador '–method' para especificar com qual método queremos executar o Octosuite e, em seguida, o sinalizador '–username' para indicar o valor a ser pesquisado. Espera-se que cada linha de usernames.txt tenha um único nome de usuário github.

    Também usamos a opção '–colours', que executará o Octosuite com cores habilitadas, o '–log-to-csv' nos permitirá registrar a saída em um arquivo csv, isso é útil para análise posterior dos resultados.

    `durante a leitura do nome de usuário; Faz
    octosuite —method user_profile —username
    "$username" —cores —log-to-csv
    feito; < usernames.txt`
    Imagem: O resultado de uma pesquisa do usuário Octosuite (com alguns detalhes editados)

    Outros usos do Octosuite

    O Octosuite também pode ser usado para investigar episódios como o ataque de malware do GitHub em 2022, que se originou de uma única conta de usuário e afetou mais de 35.000 repositórios .

    Uma string que apareceu em uma URL presente em vários repositórios comprometidos por esse ataque foi  '.ovz1'. A busca por todas as instâncias de .ovz1 permitiria, portanto, que um pesquisador verificasse outros repositórios potencialmente comprometidos. O Octosuite possibilita esse tipo de busca das seguintes formas:

    • Com o comando 'search:commits' (ou se estiver executando com argumentos de linha de comando, use o método search_commits ), inserindo '.ovz1' como uma string de consulta.
    • Com a consulta –method 'commits_search –query .ovz1 –colors –log-to-csv' .

    Outro incidente de 2022 , que viu a biblioteca ctx do Python e um fork do phpass do PHP comprometidos, também pode ser investigado usando o Octosuite. 

    Ao inserir os seguintes comandos, os usuários podem pesquisar rapidamente para descobrir os repositórios do GitHub afetados:

    • comando 'search:commits' e inserindo “phpass” “ctx” como string de consulta.  
    • octosuite –method commits_search –query “phpass” “ctx” –colors –log-to-csv'

    Esses comandos operam da mesma forma que as pesquisas ovz.1 e localizam repositórios que usaram a biblioteca ctx e phpass do Python.

    Provavelmente haverá muito mais usos para o Octosuite em investigações de código aberto do que os detalhados aqui. Os usuários são encorajados a explorar a ferramenta e descobrir todas as suas possibilidades.

    A Bellingcat também está interessada em saber como o Octosuite é usado. Se você utilizar a ferramenta em sua pesquisa ou investigação, sinta-se à vontade para nos informar preenchendo este formulário .


    Este artigo foi produzido como parte do programa Tech Fellowship da Bellingcat , que busca criar ferramentas investigativas e recursos online para pesquisadores de código aberto. As inscrições para nossa próxima admissão de bolsistas começarão em breve. Por favor, fique de olho em nosso site e canais de mídia social para mais detalhes.

    Bellingcat é uma organização sem fins lucrativos e a capacidade de realizar nosso trabalho depende do apoio gentil de doadores individuais. Se quiser apoiar o nosso trabalho, pode fazê-lo  aqui . Você também pode se inscrever em nosso canal do Patreon  aqui . Subscreva a nossa  Newsletter  e siga-nos no Twitter  aqui .

    Comentários

    Ebook

    Postagens mais visitadas