Underc0de

[In]Seguridad Informática => Ingeniería Inversa => Mensaje iniciado por: arphanetx en Mayo 18, 2017, 07:29:38 PM

Título: Identificando tipos de compiladores en ejecutables
Publicado por: arphanetx en Mayo 18, 2017, 07:29:38 PM
(http://i.imgur.com/mKRsxky.jpg)

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.
Título: Re:Identificando tipos de compiladores en ejecutables
Publicado por: d3mVs en Junio 11, 2017, 08:23:57 AM
Mola, alguna de esas herramientas no las conocía.
Título: Re:Identificando tipos de compiladores en ejecutables
Publicado por: zoro248 en Junio 13, 2017, 04:09:16 PM
Buen post, me estoy entrando en este mundo del Reversing