Como identificando tipos de compiladores en ejecutables
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.
Suscribirse a:
Enviar comentarios
0 comentarios: sobre Como identificando tipos de compiladores en ejecutables
Publicar un comentario para Como identificando tipos de compiladores en ejecutables