Este repositorio contiene una colección de scripts y complementos de IDA Pro utilizados por el equipo de ingeniería inversa avanzada (FLARE) de FireEye Labs.
Para instalar, copie el contenido del directorio de complementos en este repositorio a su carpeta %PROGRAMFILES%IDAplugins.
El directorio de Python aquí se puede copiar a su carpeta %PROGRAMFILES%IDApython, o puede modificar su variable de entorno PYTHONPATH para incluir el directorio.
El complemento IDA shellcode_hashes_search_plugin.py implementa la búsqueda hash que se describe aquí: https://www.mandiant.com/blog/precalculated-string-hashes-reverse-engineering-shellcode/.
El directorio shellcode_hashes contiene el script utilizado para crear la base de datos para el script shellcode_hash_search.py, junto con una base de datos proporcionada.
El complemento struct_typer_plugin.py implementa la escritura de estructuras que se describe aquí: https://www.mandiant.com/blog/applying-function-types-structure-fields-ida/
stackstrings_plugin.py implementa la recuperación de cadenas construidas manualmente que se describe aquí: http://www.fireeye.com/blog/threat-research/2014/08/flare-ida-pro-script-series-automatic-recovery-of- cadenas-construidas-en-malware.html
Este script para IDA Pro agrega información de MSDN desde un archivo XML a la base de datos. Puede encontrar información sobre este complemento en: https://www.fireeye.com/blog/threat-research/2014/09/flare-ida-pro-script-series-msdn-annotations-ida-pro-for-malware -análisis.html
Se incluye la siguiente funcionalidad:
TL;DR: En IDA ejecute annotate_IDB_MSDN.py .
Todos los archivos (scripts IDAPython, analizador XML, archivo XML de información MSDN, etc.) deben ubicarse en el mismo directorio al que puede acceder IDA Pro. En IDA use Archivo - Archivo de secuencia de comandos... (ALT + F7) para abrir annotate_IDB_MSDN.py . El formulario le permitirá cambiar la configuración y anotar el archivo IDB después de hacer clic en Aceptar.
Después de ejecutar el script una vez, también se puede utilizar Ver - Scripts recientes (ALT + F9).
Este complemento le permite especificar o elegir un tipo de función para llamadas indirectas como se describe aquí: https://www.fireeye.com/blog/threat-research/2015/04/flare_ida_pro_script.html
Este script le permite generar fácilmente patrones de funciones a partir de una base de datos BID existente que luego se pueden convertir en firmas FLIRT para ayudar a identificar funciones similares en archivos nuevos. Más información está disponible en: https://www.fireeye.com/blog/threat-research/2015/01/flare_ida_pro_script.html
Esta utilidad puede ayudarle a identificar argumentos estáticos para funciones utilizadas dentro de un programa. Esto se usa más comúnmente para extraer argumentos para funciones de decodificador de cadenas. El uso de ejemplo está disponible en
Una publicación de blog con más información está disponible en:
https://www.fireeye.com/blog/threat-research/2015/11/flare_ida_pro_script.html
Este script crea referencias cruzadas entre las referencias del selector y sus implementaciones como se define en las secciones relacionadas con el tiempo de ejecución de Objective-C del ejecutable Mach-O de destino. También parchea los punteros de referencia del selector para que apunten a su función de implementación. Esto facilita el análisis del código Objective-C al permitir transiciones fluidas entre una implementación y las ubicaciones donde se hace referencia a su selector en todo el código. Se agregan comentarios útiles del código Objective-C a cada llamada a las variantes de objc_msgSend para indicar claramente qué método se llama en qué clase.
ironstrings.py
es un script IDAPython que utiliza emulación de código para recuperar cadenas construidas (cadenas de pila) del malware. Consulte los detalles en el archivo README del script.
code_grafter.py
es un script IDAPython que inserta código en una base de datos IDA para implementar varias funciones importadas y aumentar la probabilidad de poder ejecutar un desempaquetador o decodificador completamente bajo Bochs (o cualquier otra herramienta de emulación que no implemente un manejo especial para estas funciones). Esto evita fallas cuando la ejecución emulada llega a funciones como VirtualAlloc
o lstrlenA
.