Octosuite: una nueva herramienta para realizar investigaciones de código abierto en GitHub

GitHub es una de las plataformas de alojamiento de código más populares en la web. Comunidad global Más de 90 millones de personas informado para utilizar sus servicios.

Esto convierte a GitHub en la plataforma de referencia para programadores y desarrolladores. Puede encontrar muchas herramientas útiles en el sitio (incluido GitHub de Bellincgat depósito).

Dada la cantidad de datos que los usuarios comparten en la plataforma, GitHub en sí mismo puede ser un recurso útil para los investigadores en línea.

Por ejemplo, la información disponible en GitHub puede tener referencias cruzadas con otras redes sociales o contenido en línea compartido públicamente.

Aunque GitHub tiene una interfaz de usuario intuitiva, requiere muchos cambios y se limita a abrir un objeto (una página individual o un perfil de usuario u organización) a la vez.

Además, no hay una manera fácil de guardar la información que encuentra en GitHub.

Aquí es donde entra en juego Octosuite. Octosuite es un marco avanzado de GitHub escrito en Python que utiliza la API pública de GitHub para hacer que el proceso de búsqueda de cuentas y repositorios en la plataforma sea más eficiente, mientras crea un conjunto de consultas automatizado y fácilmente repetible.

Imagen: menú de ayuda de la interfaz de línea de comandos de Octosuite

¿Qué puede hacer Octosuite?

Octosuite viene con una amplia variedad de comandos que se pueden usar para acceder a información sobre cuentas y repositorios visibles públicamente en GitHub.

Con Octosuite, puede encontrar fácilmente información pública:

  • Usuarios: información de perfil, conceptos básicos (pequeños fragmentos de código), actividad de la cuenta (a través de acciones como suscribirse, crear, seguir), repositorios, organizaciones, suscripciones, seguidores y seguidores
  • Organizaciones: información de perfil, actividad de la cuenta, repositorios y miembros públicos
  • Almacenes: contribuyentes, lenguajes de codificación, observadores de estrellas (la plataforma equivalente a los me gusta), bifurcaciones (los detalles que crean una copia pública del repositorio) y lanzamientos

Octosuite también incluye una función de búsqueda que busca usuarios, repositorios, temas (una etiqueta de desarrollo que lo ayuda a comprender el propósito del código), confirmaciones (una respuesta o cambio a un archivo o conjunto de archivos realizados por un usuario) y problemas. (conversacion). hilos que la comunidad puede usar para informar problemas o solicitar funciones o ayuda).

Todos los resultados de estas búsquedas están disponibles en formato legible por humanos y se pueden exportar en formato de valores separados por comas (CSV).

Comience con Octosuite

Configurar Octosuite es un proceso simple.

Se puede instalar y utilizar de dos formas; como una interfaz de línea de comandos (CLI) o una interfaz gráfica de usuario (GUI).

Si no se siente cómodo con la línea de comandos, la opción GUI (con instrucciones de instalación ventanas y Mac OS) domina claramente. La versión GUI de la herramienta permite a los usuarios seleccionar comandos de búsqueda de un menú desplegable.

Sin embargo, la CLI podría ser más flexible en el manejo de datos raspados o procesamiento por lotes. También necesita conocer los conceptos básicos de la línea de comandos para instalar la versión GUI de la herramienta. Para obtener instrucciones completas sobre cómo instalar la versión GUI de Octosuite, consulte este Guía de GitHub.

El resto de este artículo detallará cómo usar la versión CLI de la herramienta.

Comandos de Octosuite

Si está familiarizado con la línea de comandos (en Windows, Linux o Mac), puede simplemente abrir una ventana de terminal e ingresar el siguiente comando para instalar Octosuite: `Instalar pip3 octosuite`

Pero asegúrese de que Python 3 esté instalado antes de ejecutar el comando.

Puede encontrar una guía para principiantes sobre el uso de la línea de comandos aquí.

Una vez que se completa el proceso de instalación, puede iniciar Octosuite ejecutando el comando: `octosuite`

Alternativamente, puede usar el siguiente comando para ver las opciones disponibles para iniciar Octosuite con argumentos de línea de comando: ‘octosuite – ayuda’

Imagen: Octosuite solicita habilitar los colores para la sesión.

Para habilitar los colores en la aplicación (lo que hace que la experiencia sea más atractiva), recibirá un mensaje inicial que le preguntará si desea seleccionar “y” para sí y “n” para no. Después de eso verás la pantalla principal.

Imagen: Pantalla principal de Octosuite con selección de color.

A partir de ahí, puede comenzar con `ayúdame comando para ver una lista de los comandos disponibles.

Imagen: menú de ayuda de Octosuite.

Los comandos de investigación de Octosuite tienen subcomandos con una funcionalidad única. Solo escribe para enumerarlos `ayuda:equipo_de_investigación`. Por ejemplo, si desea ver todos los subcomandos usuario comando debe escribir lo siguiente: `ayuda: usuario`.

tabla que muestra todos los subcomandos para usuario entonces aparecerá el comando.

Imagen: subcomandos de usuario de Octosuite.

Subcomandos de usuario

Intentemos obtener la información del perfil de un usuario.

Puede hacer esto ingresando el comando `usuario:perfil`. YSe le pedirá que ingrese un nombre de usuario. Después de hacer esto, presione enter.

La siguiente captura de pantalla muestra el resultado que contiene la información del perfil del usuario (se han redactado algunos detalles). Octosuite le preguntará si desea guardar el resultado en un archivo CSV. Puede leer archivos CSV guardados con el comando `csv:leereliminar un solo archivo CSV con `csv:borrar’ o elimine todos los archivos CSV escribiendo `csv: claro`.

Imagen: Octosuite que muestra la información del perfil del usuario (algunos detalles redactados).

Octosuite pragmática

Tener toda la API de GitHub al alcance de la mano abre nuevas posibilidades para hacer referencias cruzadas de puntos de datos o crear consultas personalizadas. Octosuite se puede extender para generalizar algunos de estos. Algunos ejemplos actuales incluyen:

  • Compruebe si el usuario A sigue al usuario B: `usuario:sigue`
  • Compruebe si el usuario A pertenece a la organización: `org:miembro`
  • Obtenga una lista de archivos en el directorio D especificado del repositorio R: `repo:ruta_contenidos`
  • Iterar a través de la lista de nombres de usuario y llamar a user_profile

En el siguiente ejemplo, usamos el indicador ‘-método’ para especificar con qué método queremos invocar Octosuite, y luego el indicador ‘-nombre de usuario’ para especificar el valor a buscar. Se espera que cada línea de usernames.txt contenga un solo nombre de usuario de github.

También usamos la opción “–colors” que ejecutará Octosuite con los colores habilitados, “–log-to-csv” nos permitirá registrar la salida en un archivo csv, útil para el análisis posterior de los resultados.

`while read username; do
octosuite —method user_profile —username 
"$username" —colours —log-to-csv
done; < usernames.txt`
Imagen: resultado de búsqueda de usuarios de Octosuite (algunos detalles redactados)

Otros usos de Octosuite

También se puede usar para explorar episodios como Octosuite 2022 Ataque de malware de GitHub se originó en una cuenta de usuario y tuvo más impacto 35.000 almacenes.

Una cadena que aparece en una URL que existe en varios repositorios que este ataque rompe ‘.ovz1’. Por lo tanto, buscar todas las instancias de .ovz1 permitirá al investigador verificar otros repositorios potencialmente comprometidos. Octosuite permite este tipo de búsqueda de las siguientes maneras:

  • Con ‘buscar: compromisos’ comando (o si funciona con argumentos de línea de comandos, use método search_commits), ingresando ‘.ovz1’ como cadena de consulta.
  • – con el método ‘commits_search –query .ovz1 –colors –log-to-csv’ solicitud.

Otro 2022 Eventoviendo Biblioteca ctx de Python y los ganchos phpass de PHP están rotos, lo que también se puede investigar con Octosuite.

Los usuarios pueden buscar rápidamente los repositorios de GitHub afectados ingresando los siguientes comandos:

  • ‘buscar: compromisos’ Comando e ingrese “phpass” “ctx” como indicador.
  • octosuite –método commits_search –query “phpass” “ctx” –colors –log-to-csv’

Estos comandos funcionan de manera similar a las búsquedas de ovz.1 y encuentran repositorios que usan la biblioteca ctx y phpass de Python.

Probablemente habrá muchos más usos para Octosuite en la investigación de código abierto que los que se detallan aquí. Se anima a los usuarios a explorar la herramienta y descubrir todas sus capacidades.

Bellingcat también quiere saber cómo se utiliza Octosuite. Si utiliza la herramienta en su investigación o investigación, infórmenos completándola. formulario.


Este artículo fue producido como parte de Bellingcat Programa de becas tecnológicas, busca crear herramientas de investigación y recursos en línea para investigadores de código abierto. Las solicitudes para nuestra próxima admisión de becas comenzarán pronto. Siga nuestro sitio web y los canales de redes sociales para obtener más información.

Bellingcat es una organización sin fines de lucro y la capacidad de llevar a cabo nuestro trabajo depende del generoso apoyo de donantes individuales. Si quieres apoyar nuestro trabajo, puedes hacerlo. aquí. También puedes suscribirte a nuestro canal de Patreon aquí. Suscríbete a nuestro canal Boletin informativo y síguenos en Twitter aquí.

Leave a Reply

Your email address will not be published. Required fields are marked *