Identificando tipos de compiladores en ejecutables

Iniciado por arphanetx, Mayo 18, 2017, 07:29:38 PM

Tema anterior - Siguiente tema

0 Miembros y 2 Visitantes están viendo este tema.

Mayo 18, 2017, 07:29:38 PM Ultima modificación: Mayo 19, 2017, 12:01:49 AM por Gabriela

Pues aqui va mi primer post....

Comenzare por explicar a grandes rasgos que es lo que pasa cuando se compila código de cualquier lenguaje para generar un ejecutable:

Cuando compilamos un código en algún lenguaje que nos permite entregar un ejecutable, lo que hace el lenguaje de programación es que mide y asigna los recursos necesarios para la ejecución de lo que has programado, lo guarda todo y lo empaqueta, de forma tal que si tu al programar usaste 7 librerías, son las mismas que mete o hace referencia para poder ejecutar tu programa.

Un ejemplo burdo seria, construir una silla de madera y pedirle al carpintero que la hizo que por favor te mande todas las piezas y herramientas necesarias para volverla a armar, todo en una caja y lo que hará este carpintero es meter en la caja, la madera cortada con las instrucciones para armar, los tornillos, desarmadores, martillos y pegamento y mas herramientas que haya usado para el armado de la silla y es lo que te llega para que tu en tu casa puedas armar la silla.

Como podras imaginar, usualmente todos tenemos casi las mismas herramientas, como desarmadores planos y de cruz, así como martillo y pinzas.

Pero para algunos muebles u otros objetos es necesario cosas mas especificas como desarmadores de punta de estrella ( para abrir una laptop ) o martillos de goma para poder golpear objetos sin dejar marca.

y eso mismo pasa con los sistemas operativos, la mayoría conocen las librerías de C, pero en linux tienen librerías que en windows son de otra forma y en mac son de otra. pero todos son C.

En este post por el momento solo explicare como con unas pocas herramientas podemos identificar los compiladores usados para ejecutables ( .exe )  y obtener un poco mas de información del mismo programa, tal vez como nombre original o fecha de creación, version de sistema operativo para la que se hizo, arquitectura, etc.

Nota: Recomiendo para el análisis de cualquier programa, no hacerlo en la plataforma para la que esta hecha, por que? para que no ejecutes por error el programa y si es malware o algo malicioso te infectes o causes daño a tu maquina y lo mas importante UTILIZA MAQUINAS VIRTUALES.


Herramientas en Windows:

PEiD: Herramientas para identificar que tipo de lenguaje fue usado, el Entrypoint, EP Section, File Offset, Información del Linker ( la parte del compilador que une todo ).


Eceinfo PE: Esta herramienta, trae ya inclusive la identificación de mas archivos dentro del mismo ejecutable, que es común en malware, siendo capaz de extraer estas partes y guardarlas. también da la misma información que PEiD.

RDG Packer Detector: esta herramienta mas especializada para identificar aparte de en que lenguaje esta hecho, con que otro programa para comprimir o cifrar el código  ( llamado packers )


Herramientas de linea de comando para linux

Exiftool : herramienta para leer metadatos de cualquier archivo, que en cualquier caso te da detalles de que en sistema operativo fue hecho, a que hora, con que programa. Muy util no solo para análisis de malware

file: comando de linux que te dice el contenido del archivo, lo que hace es que lee los headers del archivo y estos usualmente identifican que formato es. Ver Magic Numbers Files para mas información.

strings -a : este archivo con el parámetro -a, te dira todas las lianas que encuentre en el ejecutable que le digas y si no viene con algún packer ( ver packers ) te dará información como mas archivos dentro, formatos y posibles dlls o archivos que contenga.

Si necesitan ayuda con alguna de las herramientas con gusto contesto en este mismo post.

Saludos.

Mola, alguna de esas herramientas no las conocía.

Buen post, me estoy entrando en este mundo del Reversing