Apisdismo
Este proyecto tiene como objetivo simplificar la recuperación de importación de API de Windows. Como entrada, se pueden procesar volcados de memoria arbitrarios para un entorno conocido (tenga en cuenta: primero se debe construir una DB de referencia primero, utilizando Apiscout/DB_Builder).
La salida es una lista ordenada de referencias de API de Windows identificadas con alguna meta información y una huella digital Apivector.
- Scout.py: debe dar un buen esquema sobre cómo trabajar con la biblioteca.
- Ida_SCout.py: es un envoltorio GUI de conveniencia para usar en Ida Pro.
- Ghidrascout.java-es un complemento Ghidra para Apiscout (contribuido por @Mari-Mari).
- Match.py: demuestra cómo los apivectores se pueden combinar entre sí y colecciones de huellas digitales.
- Collect.py: construye una base de datos de huellas dactilares de Winapi (apivectores) que se pueden usar para la coincidencia.
- Export.py: genera diagramas APIQR que visualizan los apivectores.
- Update.py: extraiga el DB Apivector más reciente de Malpedia (requiere un token de cuenta / API de Malpedia).
El código debe ser completamente compatible con Python 2 y 3.
Hay una publicación de blog que describe Apiscout con más detalle: http://byte-atlas.blogspot.com/2017/04/apiscout.html.
Además, otra publicación de blog que explica cómo se construyen y almacenan los apivectores: https://byte-atlas.blogspot.com/2018/04/apivectors.html.
También presentamos un artículo en Botconf 2018 que describe la metodología de Apiscout en profundidad, incluida una evaluación sobre Malpedia: https://journal.cecyf.fr/ojs/index.php/cybin/article/view/20/23
Historial de versiones
- 2023-03-27: v2.0.2-Caja de errores para IDASCOUT y manejo de conjuntos, contribuido por @7A6570 (¡gracias!)
- 2023-01-02: v2.0.1-interrupción de la mesa de importación basada en lief con Python 3.10, contribuido por @malware-kitten (thx !!)
- 2022-08-01: v1.2.0-complemento agregado para ghidra, contribuido por @mari-mari (thx !!)
- 2022-09-20: v2.0.0-(potencialmente roto) Los resultados de rastreo ahora tienen un campo de salida adicional con un conjunto de referencias de llamadas para un Winapi determinado. Esto también se incluye en la salida JSON de
scout.py , aportada por @Renzhexigua (¡Thx!) - 2022-08-01: v1.2.0-complemento agregado para ghidra, contribuido por @mari-mari (thx !!)
- 2022-01-17: V1.1.9-Se corrigió
ida_scout.py para trabajar con IDA 7.5+ cuando Apiscout también se instala como un paquete Python. - 2021-10-04: V1.1.8-Extensión de contextos de Winapi basados en observaciones proporcionadas por @Blattm (¡Thx!).
- 2021-08-30: V1.1.7-Advertencia de deprecación fija en APIQR planteada por Numpy.
- 2021-07-31: V1.1.6-Ya no es necesario mantener una versión fija de LIEF. (Gracias a @cccs-rs!)
- 2021-01-10: V1.1.5-Paquete Python3 Lief fijado a la versión 0.10.1 (¡gracias a @akhribfarouk!)
- 2020-12-09: V1.1.4-Python3 corrige en DatabaseBuilder (gracias a @dump-Guy!)
- 2020-07-13: v1.1.3-Se agregó "install_requires" a Setup.py para garantizar que se instalen dependencias.
- 2020-06-30: V1.1.0-Ahora usando lief para el análisis de la mesa de importación. Se corrigió un error que no produciría apivectores al usar el análisis de la tabla de importación. Apiscout ahora también está disponible a través de PYPI.
- 2020-03-03: Se agregó un script para extraer el Apivador DB más reciente de Malpedia (requiere Token de cuenta / API de Malpedia).
- 2020-03-02: portado a Ida 7.4 (gracias a @jenfrie).
- 2020-02-18: DB Builder ahora es compatible hasta Python 3.7 (gracias a @elanfer).
- 2019-10-08: Alternativa para el filtrado roto de la vista API en Ida 7.3 (gracias a @enzok por señalar esto).
- 2019-08-22: Se corrigió un error donde la información de tipo faltante en IDA conduciría a un bloqueo (ahora da un mensaje de error).
- 2019-08-20: Se agregó auto-filtro para eliminar los punteros para poseer una imagen de memoria que podría tratarse erróneamente como referencias de API.
- 2019-06-06: Se agregó soporte para la reconstrucción de tipo adecuado para las API anotadas en Ida Pro (Thx a @flxp0c)
- 2019-05-15: Soporte numpy agregado para los cálculos de vectores (basado en la implementación proporcionada por @garaNews-Thx!)
- 2019-05-15: Se corrigió un error en PE Mapper donde el búfer se acortaría debido a la mala interpretación de los tamaños de sección.
- 2019-01-23: Mejoras de calidad de vida: implementación de la carpeta de datos automatizada cuando se usa como módulo, inicialización del registrador (Thx a @JDVal)
- 2018-08-23: Se corrigió un error en PE Mapper donde el encabezado PE se sobrescribiría mediante datos de sección (vacíos).
- 2018-08-21: Funcionalidad agregada que permite usar la información de la tabla de importación en lugar de rastrear para referencias.
- 2018-07-31: Funciones de conveniencia fijas para crear/exportar vectores de/a listas y dicts, cobertura de prueba agregada.
- 2018-07-23: ADVERTENCIA: Cambio en el formato de Apivector-APIVECTORES INTRODUDADOS que son aún más eficientes en el espacio (20%+).
- 2018-06-25: Incompatibilidad fija con Ida Pro 7.0+ (¡gracias a @nazywam!)
- 2018-05-23: Se agregaron más grupos de contexto semántico (Thx a Quoscient.io)
- 2018-03-27: Estimación heurística de los recuentos de referencia de la API de Windows agregados
- 2018-03-06: Visualización APIQR de resultados vectoriales (C-1024)
- 2017-11-28: Se agregó el analizador de la tabla de importación adicional para enriquecer la información de los resultados
- 2017-08-24: Soporte de segmentos múltiples en Ida Pro (¡gracias a @nazywam!)
- 2017-05-31: Se agregó Windows 7 SP1 64bit Import DB (compatible con Malpedia)
Créditos
La idea previamente ha pasado por múltiples iteraciones hasta llegar a esta versión refactorizada.
Gracias a Thorsten Jenke y Steffen Enders por sus esfuerzos anteriores y evaluar una prueba de concepto de este método.
Más gracias a Steffen Enders por su trabajo sobre la visualización de los diagramas APIQR.
También gracias a ERO Carrera por Pefile y Elias Bachaalany por la plantilla Ida Python Askusingform. :)
Además, muchas gracias a Andrea Garavaglia por sus puntos de referencia de rendimiento que conducen a velocidades drásticas en la correspondencia aplicada.
¡Solicitud de solicitud de bienvenida! :)