bitcoin prize

ANALIZANDO UN ARCHIVO INFECTADO DE WINDOWS FORMATO PE/WINDOWS ❤💀💥📓💾💻

"ANALIZANDO UN ARCHIVO INFECTADO PE/WINDOWS"

esta vez resulta que estaba un poco aburrido del fin de semana y me puse a realizar un analisis dentro de las entranas de un archivo PE/EJECUTABLE de windows o los mas mejormente conocidos como .exe para ver que podria encontrar dentro.
Una de las tantas opciones y ventajas al analizar un ejecutable es que o bien podemos inyectar codigo malicioso o nos podemos ir por el buen camino y usarlos en investigaciones forenses, en la informatica forense se utiliza mucho para poder inspeccionar malware, hacia donde apunta y que APIS del sistema utiliza hacia como que conexiones es capaz de utilizar el malware.
una utilidad bastante increible es pe-estudio que se desarollo especificamente para este tipo de casos.
pero primero deberemos conocer la estructura general de un archivo PE en el sistema operativo winbugs, windows.
vamos a descargarnos un archivo infectado o malware para practicar un poco ,  OJO! utilizalo en alguna maquina virtual que no tenga acceso ala red donde te encuentras, es decir, una maquina virtual aislada del resto de tu red. 
antes de proceder al analisis vamos a ver como luce la estructura de un fichero general de windows con su estandar o estructura PE o portable ejecutable como se le llama comunmente.
 cada secccion la veremos mas adelante mas detalladamente para verificar hacia donde esta apuntando el ejeutable asi como que llamadas al sistema realiza.

DOS HEADER:
esta seccion hace uso de una funcion llamada STUB que lo que hace es linkear procedimentalmente a que S.O se refiere donde nos encontremos ,  de aqui que algunas veces nos salga el error "esto no es un archivo msdos ejecutable"  ya que el encabezado no es compatible con el S.O donde nos encontramos en alguun momento dado.
este encabezado es el que define dentro de las compatibilidades absolutas dentro del S.O , esta dada por la constante en formato hexadecimal 0x3c.

PE SIGNATURE:
La firma de la estructura principal y uno de los headers mas importantes dentro de un ejecutable de windows o de los sistemas operativos windows,   este offset tiene un valor de 4 bytes despues del encabezado anterior, dependiendo claro esta del archivo, su comprension , su codificacion, etc.
pero casi siempre su valor sera de 4 bytes si es mas largo o mas pequeno entonces estamos frente a un malware pero tambien pudiesen ocurrir excepciones,  entonces esto no es un estandar defacto. aqui tambien van las firmas de los fabricantes en caso de que el ejecutable sea por una entidad certificadora o de firma digital dependiendo del desarollador o los desarolladores que crearon el archivo.
los AV algunas veces detectan esta seccion cuando no tienen firmas o certificados de seguridad o simplemente el software no va firmado por lo que el AV o el windows defender lo detecta y lo elimina sin preguntarnoslo caso ocurre con algunos crackeadores y activadores ilegales de software como de microsoft office, entre otros.

COFF HEADER:
Una de las secciones mas complicadas,  desde aqui las cosas y los detalles se comienzan a poner un tanto oscuras y misteriosas si no fuera por la ayuda de internet y su inumerables recursos que disponemos hoy en dia,  facilmente nos perderiamos en el abismo.
este encabezado es el que carga algunas funciones importantes para las llamadas al sistema ademas de de campos opcionales,  por ejemplo dentro de este encabezado se definen algunas funciones que para definir el tipo de maquina en el que el archivo esta corriendo por ejemplo si es una maquina con arquitectura X86 o de 64 bits segun sea el caso.
ademas dentro de la documentacion correspondiente podremos encontrar que la carga limitada de funciones para esta seccion es de 96,  no es posible agregar mas aunque puediera ser que microsoft agregue mas en el futuro o en un futuro a mediano plazo.
Aqui se indican dentro de esta seccion  todos los apuntadores hacia las funciones internas o externas asi como llamadas al sistema correspondientes que hace uso de estas ultimas el sistema operativo.

estos son los offsets que podremos encontrar (solo algunos) ya que la lista completa y la explicacion de las mismas queda fuera del alcance de este articulo al ser muy grande si no que mas bien inmenso,  en la imagen siguiente podemos observar algunas funciones interesantes:


tenemos la funcion o el campo de MACHINE del que mencionabamos en un inicio,  en la descripcion nos dice que se trata del tipo de maquina en la que el ejecutable se esta ejecutando dentro del entorno corresponiente.
despues tenemos tambien que a su vez  estas funciones tienen sus valores que pueden traer por defecto,  por ejemplo veremos la llamada a MACHINE para ver que valores podemos tener tanto en string como en hexadecimal correspondientemente.

vamos analizar un poco la siguiente imagen para corroborar de lo que estamos comentando:
tenemos muchos valores del que dependiendo de la programacion del ejecutable o dentro de funciones del sistema operativo.
esto ya depende del software del que creamos y consecuentemente de la gestion de los recursos computacionales del sistema operativo, ademas tambien tendriamos que ver la codificacion de los caracteres ya sea big-endian o little-endian.

OPTIONAL HEADER:
en este encabezado es opcional pero contiene algunas funciones importanets como veremos a continuacion.
cada imagen  tiene un encabezado opcional dependiendo de la configuracion misma y la programacion como lo hemos mencionado en muchas ocasiones dentro del sistema operativo.
esto tambien depende del encabezado anterior por ejemplo la funcion SizeOfOptionalHeader.

la funcion SIZEOPTIONALHEADER controla realmente desde el encabezado anterior o funcion anterior cuantos bytes realmente ocupara en la memoria este encabezado en caso de ocuparse si asi lo adquiriese la gestion del mismo sistema operativo.

Ademas aqui mismo es donde se define dentro de las funciones enlazadas la arquitectura propia mediante un numero magico que asi le llaman en la documentacion oficial para corroborar si se es un ejecutable de 32 o 64 respectivamente.

dependiendo del offset dentro de la estrcutura principal es la arquitectura deseada que se estara ejecutando o de las otras funciones que esta misma hara uso dentro del funcionamiento interno del sistema operativo.

SECTION TABLE:
La mas importante si no que decir de las secciones mas importantes esta es la principal donde se cargan las direcciones de memoria principales por donde tendra acceso todo todo el codigo absoluto que estemos ejjecutando mediante procesos , procesos en segundo plano asi como las llamadas principales al sistema por ejemplo algunas llamadas en las que una atacante podria aprovecharse por ejemplo VIRTUALPROC o entre otras como podemos ver en la imagen siguiente:



vemos que tenemos acceso desde esta seccion a la memoria virtual donde se estan alojando , almacenando y ejecutando todos los procesos posibles.
aqui se almacena el nombre,  la direccion que alberga el nombre propio asi como cuando renombramos el nombre de un archivo es aqui mismo donde se almacena.
en la documentacion se encuentra toda la informacion relativa a cada funcion o llamada a la funcion misma.

al igual que las secciones anteriores cada opcion de esta seccion tambien podria contener cientos o decenas de valores como se observa en la siguiente imagen:


Podremos ver que tenemos muchas offsets o muchas direcciones de memoria,  algunas que contienen codigo ejecutable por ejemplo la ultima llamada al sistema que es IMAGE_SCN_LNK-INFO  contiene informacion cerca de los comentarios del ejecutable y de sus procesos relacionados o las directivias iniciales para comenzar a investigar hacia donde apunta realmente la seccion.

MAPPABLE SECTIONS:
la seccion de mapeado es como su nombre lo dice una funcion o conjunto de funciones que se mapen en conjunto con las directivas del sistema principal,   esta seccion se puede mapear por ejemplo para acceder a otras tantas llamadas al sistema por ejemplo si el ejecutable o la imagen windows como se le suele llamar a los ejecutables de windows por ejemplo puede mapear funciones o llamadas externas del sistema que tienenq ue tener acceso a la red o entre otros niveles del sistema operativo.

HERRAMIENTA PE-STUDIO Y ANALISIS
la herramienta pestudio puede ser una utilidad demasiada compleja y util al ahora de realizar un analisis forense o un analisis de malware o mejor conocido profesionalmente como malware analisis assesment.
esta herramienta es capaz de tracear las llamadas al sistema,  las llamadas alas funciones o ciertas funciones especificas del sistema operativo dependiendo de los niveles a los que las mismas funciones recursivamente intenta acceder.

vemos las llamadas al sistema que puede acceder o que en este caso esta accediendo dentro de un ejecutable PE de windows:


Ademas podremos acceder a las cadenas o hacia donde se esta dirigiendo la ejecucion y sus respectivos valores el ejecutable,   vemos tambien muchas de las secciones que inicializan en .  por ejemplo en .text o .data tambien vemos la carga de las librerias las que terminan en .DLL asi como las funciones del sistema que en este caso son EASYDISK, etc.
ademas vemos que se enlaza con la libreria dinamica de enlace kernel.dll que casi todos los ejecutables deben de seguir o inicializar.

atambien es capaz de realizar un escaneo profundo enlazandose con las APIS de virustotal para verificar que esto no contiene llamadas al sistema maliciosas en caso de que si tendremos un resultado como el que se muestra en la siguiente imagen:


vemos que nos resultado en positivos 37 lo que es altamente probable que estamos ante un ejecutable que realiza llamadas al sistema maliciosas como por ejemplo de la red o de ciertas funciones ilegales del sistema.
ademas podremos ver cuando fue reportada este ejecutable dentro de los antivirus conocidos y desconocidos tambien.

Podriamos tambien calcular los hashes criptograficos de cada ejecutable como se nos muestra en la siguiente ilustracion:



puede calcular md5 asi como sha-256 entre otros.

las caracteristicas de esta herramienta son ilimitadas,  ya sera decision de cada analista el seguir una u otra investigacion de los archvos ejecutables correspondientes.



REFERENCIAS Y BIBLIOGRAFIAS:
 https://www.winitor.com/
 https://es.wikipedia.org/wiki/Portable_Executable
https://en.wikibooks.org/wiki/X86_Disassembly/Windows_Executable_Files#PE_Optional_Header

0 comments:

Publicar un comentario

My Instagram

Uso cookies para darte un mejor servicio.
Mi sitio web utiliza cookies para mejorar tu experiencia. Acepto Leer más