¿Nadie piensa en las DLL? I

¿Nadie piensa en las DLL? I
¿Nadie piensa en las DLL? II
[...]

Introducción

A primeros de octubre fue celebrada la 3ª edición de las conferencias Navaja Negra, como ya estuve comentado por aquí tenía una pequeña charla sobre librerías DLL. Faltaba por divulgar la parte más técnica.

En los siguientes artículos, vamos a ver como es posible mediante la manipulación y modificación de librerías logramos evitar las medidas de seguridad como son los antivirus, y ejecutar nuestros códigos en el sistema.

El objetivo principal, es concienciar de los peligros, ya que se tiene la falsas creencia que sólo un fichero (*.exe) puede ser infectado. Un usuario más avanzado puede tener más cuidado con otros ficheros como: (*.pdf;*.bat;*.msi…) Pero en definitiva, todos son peligrosos.

825000581

¿En que he basado tal afirmación?

Según virus total (a septiembre de 2013). Las DLL están en el 6º lugar de los ficheros más analizados. Lo cual no está nada mal, si no tenemos en cuenta que se han analizado un total de appx 1.000.000 fotografías en diferentes formatos.

Ser tan feo que salta el antivirus

-¡Eres tan feo que me ha saltado el antivirus!

¿Qué es una DLL?

dllUna librería es simplemente un conjunto de datos y código. Se utiliza para almacenar aquellas funciones que van a ser recurrentes. Es decir, si tenemos la función “Suma” y la vamos a necesitar utilizar en todos nuestros proyectos, es más sencillo crear una librería con la función que tener que escribirla de nuevo en cada uno de nuestros programas. De esta forma, además estamos segmentando las secciones de código, lo que simplifica la lectura.

Resumiendo, las librerías albergan:

Procedimientos (no devuelven valores).
Funciones (devuelven un valor)

Carga de librerías

Existen 2 formas de poder cargar una librería una es de forma estática, el programa tiene como parte del código las DLL que va a necesitar ejecutar. O de forma dinámica en la que el programa solicita las DLL que necesita y es en ese momento en el que le son cargadas.

Utilizar una de las dos formas, no  es excluyente. Un programa perfectamente puede utilizar ambas formas.

IAT (Estática)

La carga se produce al iniciar el ejecutable, antes de ser ejecutado carga e inicializa las librerías que se han agregado al programar. De esta forma, antes de ser ejecutado ya se sabe las necesidades del programa. Es obligatorio que todas las DLL declaradas se encuentren instaladas. En caso contrario el programa no podrá arrancar y saldría el mensaje avisando que nos falta una o varias librerías.

Imagen IAT de una aplicación

Dinámica

Como no todas las librerías tienen que ser declaradas, si no que durante la ejecución del programa puede necesitar cargarlas (Esto se puede producirse en caso de no utilizar una función hasta que se hace “click” en un apartado o zona concreta del programa ej: si no vas a usar la función de “sumar”.) De esta manera se evita cargar la memoria de componentes que pueden no ser necesarios

Con la carga dinámica, en caso de no  existir la librería que se ha solicitado el programa funcionará normalmente hasta que se utilice alguna de las funciones integradas. En caso de no utilizar ninguna, no se produce el error.

¿Cómo funciona un ejecutable?

Diagrama aplicacion

El sistema operativo carga el programa en memoria, revisa en la IAT las libarías declaradas y procede a inicializarlas. Una vez finalizado comienza la ejecución normal de la aplicación.

Continuará…

Ponente en Navaja Negra (Albacete)

 

winsock

Un año más se celebran las conferencias de seguridad informática en Albacete. Unas conferencias llenas de conocimiento, en las que se pueden ver a los más grandes del panorama exponiendo sus últimas investigaciones.

Cartel de ponentes

Este año, movido y empujado por mi gran amigo: Roberto, especialista en seguridad informática, brillante ponente en: #X1red+segura, y sin duda una bellisima persona, cuando nos encontrábamos tomando unas tapas por los bares de Madrid, me estuvo presionando para presentar alguna de mis investigaciones, tras un par de negativas, un venga que te invito a una hamburguesa, pero viendo que este tipo de sobornos no estaban funcionando, culminó con una frase muy española: “No tienes huevos

Finalmente (tras esa locuaz argumentación) les envié un pequeño resumen de una investigación sobre librerías, que llevaba un par de años realizando, y alguna que otra sorpresa (a modo de 0day), parece que les gustó, y sólo tuve que enviar el paper, una pata de jamón, y 2 billetes 50€.

Ha sido aceptada y estaré por allí los días: 3, 4, y 5 de octubre. Además de mi ponencia que debéis ir todos a ver, allí estarán: Roberto (@1gbdeinfo), Mónica (@Madrikeka), Longinos (@l0ngin0s), Óscar (@dot_ike), y el caballero del mejor peinado. Joaquín (@Kinomakino). Ahora ya hay otro motivo para pasarse por allí, y poder tomar unas cervezas. Si quieres poder reconocer al menos algunas de nuestras voces: Podcast

Muchísimas gracias tanto a todos mis amigos arriba mencionados, a Ángel (@angelucho), que se preocupa y me cuida que da verdadero gusto, animándome para seguir avanzando.. (Bla, bla, bla :P). No quiero olvidarme de dar las gracias a toda la organización por permitirme un hueco en unas conferencias espectaculares, que sé todo el trabajo y esfuerzo que lleva montar algo tan grande! ¡Gracias a todos!

Navaja Negra
Organización:
cr0hn – @ggdaniel
s4ur0n – @NN2ed_s4ur0n

WiNSoCk