Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
AlphaGolang — Scripts de IDApython para analizar binarios Golang | Kitploit
Herramientas/GitHubGitHub/sentinelabs/alphagolang
Análisis EstáticoIngeniería InversaDepuradoresAnálisis de MalwareAnálisis de Binarios
GitHubsentinelabs/alphagolang

AlphaGolang

Scripts de IDApython para analizar binarios Golang

Ver Repositorio
67273hace 2 añosRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

AlphaGolang

por Juan Andres Guerrero-Saade (JAG-S @ SentinelLabs)

Descripción:

AlphaGolang es una colección de scripts IDAPython para ayudar a los ingenieros inversos de malware a dominar los binarios de Go. La idea es dividir los scripts en pasos concretos, evitando así scripts monolíticos frágiles, y emulando la metodología que un analista podría seguir al abordar un binario de Go.

Los scripts se publican bajo licencia GPL (honrando el GolangLoaderAssist original de Tim Strazzere, que refactorizamos y actualizamos para python3, créditos a Tim :) ). ¡Las contribuciones son bienvenidas y alentadas!

Requisitos: IDA Pro (idealmente v7.6+) y Python3 (puaj) Los primeros dos pasos (recreate_pclntab y function_discovery_and_renaming) funcionarán en IDA v7.5- pero los scripts más allá de eso requieren IDAv7.6+. Las versiones más nuevas son el objetivo ideal para los scripts más nuevos en adelante.

Referencia original: Charla de Mandiant Cyber Defense Summit 2021 (Video pendiente)

Metodología de Análisis de AlphaGolang

  • Paso 0: Regla YARA para identificar binarios Go (PE/ELF/MachO)

    • identify_go_binaries.yara
      • Verificación simple de cabecera + expresión regular para la cadena de ID de compilación de Go.
      • Probablemente se podría mejorar el rango de longitud del ID de compilación.
  • Paso 1: Recrear la tabla pcln

    • recreate_pclntab.py (IDA v7.5- compatible)
      • Recrea la sección gopclntab a partir de heurísticas
      • Mayormente útil para IDA v7.5-
  • Paso 2: Descubrir funciones recorriendo la tabla pcln y agregar nombres a todas

    • function_renaming.py (IDA v7.5- compatible)
      • Separado de golang loader assist
      • Descubrimiento por fuerza bruta de funciones faltantes basado en la tabla pcln
      • Corregí algunos problemas de limpieza de nombres de funciones de la transición a py3
      • Refactorizado para agregar mejoras para Go v1.18 basado en Panchan de Akamai. ¡Gracias a Alex (CycleOfTheAbsurd).
  • Paso 3: Mostrar funciones generadas por el usuario

    • categorize_go_folders.py (Requiere IDA v7.6+)
      • Categoriza automáticamente funciones en carpetas
      • Requiere IDAv7.6 y que 'mostrar carpetas' esté habilitado en la vista de funciones
      • ACTUALIZACIÓN 16.05.2022: Se corrigió conflicto con la ordenación de carpetas de IDA v7.7
      • Se recomienda encarecidamente revertir los metadatos de Lumina antes de ejecutar este plugin.
  • Paso 4: Corregir referencias a cadenas

    • fix_string_cast.py
      • Separado de golang loader assist
      • Se añadió lógica para indefinir blobs de cadenas existentes antes de definir nueva cadena
      • Las nuevas comprobaciones de cordura lo hacen mucho más efectivo
  • Paso 5: Extraer información de tipos (por Ivan Kwiatkowski)

    • extract_types.py
      • Comenta los argumentos de todas las llamadas a newobject, makechan, etc.
      • Aplica el tipo C correcto a estos objetos y los renombra
      • Obtiene el nombre legible por humanos y lo añade como comentario

Correcciones pendientes y espacio para contribuciones:

  • fix_string_cast.py - Todavía necesita refactorización + mejores heurísticas de carga de cadenas - Puede provocar bloqueo en binarios masivos. - Faltan algunos mecanismos de carga indirecta de cadenas.
  • extract_types.py
    • Funciona actualmente en archivos PE y Mach-O buscando los nombres de sección hardcodeados .rdata o __rodata.
    • Se necesita una verificación/implementación adecuada para tamaños codificados en varint

Próximos pasos:

  • Rastrear referencias a cadenas por funciones generadas por el usuario
  • Generar automáticamente firmas YARA basadas en funciones generadas por el usuario
  • Generar salida de pseudocódigo Hex-Rays para funciones generadas por el usuario
  • Establecer automáticamente puntos de interrupción para análisis dinámico de argumentos
  • ???

Créditos para:

  • Tim Strazzere por publicar el golang_loader_assist original
  • Milan Bohacek (Avast Software s.r.o.) por su invaluable ayuda para descifrar la API de idatree.
  • Joakim Kennedy (Intezer)
  • Ivan Kwiatkowski (Kaspersky GReAT) por el paso 5.
  • Igor Kuznetsov (Kaspersky GReAT)
  • Alex (alias CycleOfTheAbsurd) de ESET por refactorizar el Paso 2 para soporte de Go v1.18.
Descargar herramienta