
Complemento de IDA Python para la coincidencia rápida y basada en ubicación de símbolos de bibliotecas de código abierto en binarios, lo que permite un análisis eficiente de ingeniería inversa y vulnerabilidades en firmware y malware de gran tamaño.
/$$ /$$ /$$
| $$ /$$/ | $$
| $$ /$$/ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$
| $$$$$/ |____ $$ /$$__ $$|_ $$_/ |____ $$
| $$ $$ /$$$$$$$| $$ \__/ | $$ /$$$$$$$
| $$\ $$ /$$__ $$| $$ | $$ /$$ /$$__ $$
| $$ \ $$| $$$$$$$| $$ | $$$$/| $$$$$$$
|__/ \__/ \_______/|__/ \___/ \_______/
"Karta" (en ruso, "Mapa") es un plugin de IDA Python que identifica y empareja bibliotecas de código abierto en un binario dado. El plugin utiliza una técnica única que le permite soportar binarios enormes (>200,000 funciones), con casi ningún impacto en el rendimiento general.
El algoritmo de emparejamiento está basado en la ubicación. Esto significa que su principal objetivo es localizar los diferentes archivos compilados y emparejar cada una de las funciones del archivo según su orden original dentro del mismo. De esta manera, el emparejamiento depende de K (número de funciones en el código abierto) en lugar de N (tamaño del binario), obteniendo una mejora significativa en el rendimiento ya que normalmente N >> K.
Creemos que hay 3 casos de uso principales para este plugin de IDA:
Para las últimas versiones, usando Python 3, simplemente clone el repositorio y ejecute el script setup.py install. Python 3 es compatible desde las versiones v2.0.0 en adelante.
A partir del lanzamiento de IDA 7.4, Karta solo se desarrolla activamente para IDA 7.4 o superior, y Python 3. Python 2 y versiones antiguas de IDA aún son compatibles usando la versión de lanzamiento v1.2.0, que probablemente será la última versión compatible debido al fin de la vida útil de Python 2.X.
El identificador de Karta es un plugin más pequeño que identifica la existencia y toma las huellas digitales de las versiones de las bibliotecas de código abierto (compatibles) presentes en el binario. Ya no es necesario realizar ingeniería inversa de la misma biblioteca de código abierto una y otra vez; simplemente ejecute el plugin identificador y obtenga una lista detallada de los códigos abiertos utilizados. Actualmente, Karta soporta más de 10 bibliotecas de código abierto, incluyendo:
Después de identificar los códigos abiertos utilizados, se puede compilar un archivo de configuración .JSON para una biblioteca específica (por ejemplo, libpng versión 1.2.29). Una vez compilado, Karta intentará automáticamente emparejar las funciones (símbolos) del código abierto en el binario cargado. Además, en caso de que su código abierto haya utilizado funciones externas (memcpy, fread o zlib_inflate), Karta también intentará emparejar esas funciones externas.
Este proyecto fue desarrollado por mí (ver detalles de contacto a continuación) con ayuda y apoyo de mi grupo de investigación en Check Point (Check Point Research).
Este repositorio fue desarrollado y mantenido por mí, Eyal Itkin, durante mis años en Check Point Research. Lamentablemente, con mi salida del grupo de investigación, ya no podré mantener este repositorio. Esto se debe principalmente a la larga lista de requisitos para ejecutar todas las pruebas de regresión y las versiones de IDA Pro involucradas en el proceso.
Por favor, acepten mis sinceras disculpas.