lunes, 28 de febrero de 2011

Añadir código “portable” a un ejecutable 1/2

En anteriores episodios… Añadimos una sección a mano al notepad (lo subo por aquí). Se cambió el EntryPoint para apuntar a la nueva sección. En esa sección incluimos código para mostrar un mensaje usando la dirección hardcoded de MessageBoxA. Y por último se saltaba al EntryPoint Original del programa para que continuase su ejecución normal.

noportable

El problema como comenté es que la dirección de MessageBoxA, en mi caso 76F0FEAE, cambia dependiendo de versiones de Windows, ServicePack instalados, actualizaciones… Así que nuestro nuevo ejecutable “infectado” no sería muy portable.

La solución pasa por entender como Windows hace que un ejecutable se ejecute correctamente en distintas versiones de Windows. Para ello el cargador cuando se quiere ejecutar un programa entre otras cosas localiza la tabla de importaciones que contiene todas aquellas funciones que utiliza el ejecutable y rellena una estructura conocida como Import Address Table, IAT, con las direcciones de esas funciones en la versión actual de Windows.

Para entender todo esto bien, y ya de paso algo sobre como aprovechan esto los virus, recomiendo leerse este PDF Infección de ejecutables de iZan.

Continuará...continuó.

domingo, 27 de febrero de 2011

Añadiendo una sección a un exe

Una de las primeras cosas que se puede hacer con un exe para ir familiarizándonos con el formato PE es añadir una sección nueva, para ello he seguido un tutorial de Ferchu de elhacker.net:

En él primero se expone el formato PE, después se añade una sección y por último se añade código a la sección y se modifica el EP para que se muestre un MessageBox al inicio de la aplicación.

Resulta muy útil usar el editor hexadecimal que comentaba en la otra entrada 010 Editor. Y para añadir código a la sección una vez agregada la sección lo mejor es usar OllyDbg e ir poniendo las instrucciones en ensamblador y verificando que hacen lo que queremos.

Por cierto para localizar la dirección de la función MessgeBoxA lo mejor es abrir Olly, Ctrl+G y escribir MessageBoxA, nos llevara hasta la posición de memoria donde se encuentra dicha función.

Lo malo de esto es que el ejecutable solo funcionara en nuestra versión actual de Windows, en cuanto cambie el idioma, o las actualizaciones la dirección de MessageBoxA habrá cambiado y no funcionara. Por eso en siguientes posts veremos como localizar la dirección de MessageBoxA por código de modo que el exe funcione en todas las versiones de Windows.

sábado, 26 de febrero de 2011

010 Editor, editor hex perfecto para los exe

010 Editor Es un editor hexadecimal que admite el uso de plantillas, es perfecto para ver y modificar los valores del formato PE de un fichero. Por ejemplo:

010 Editor

Una vez descargada esta versión trial.

Es necesario descargarse las plantillas que necesitemos, en este caso las de el formato ejecutable. Hay dos la que mas me ha gustado a mi ha sido la segunda: http://www.sweetscape.com/010editor/templates/files/EXETemplate2.bt

Por comodidad mejor ponerla en el directorio de plantillas: C:\Users\%user%\Documents\SweetScape\010 Templates

Después hay que ir al menú templates > Edit templates list... y añadir la plantilla:

Sin tÃ-tulo

De este modo cada vez que abramos un ejecutable se cargara la plantilla y veremos los campos del PE.

A disfrutar!

Retorno

Queridos lectores hace mucho tiempo que no escribo en el blog la verdad es que al pobre lo tengo abandonado. Siento la necesidad de daros una explicación de por qué esto es así.

En parte es culpa de la falta de tiempo, entre el trabajo, estudios, vida universitaria en el extranjero ;) no me sobra demasiado tiempo para dedicarlo a aprender cosas nuevas y compartirlas con vosotros.

Otra razón es que cuando pienso en escribir sobre algo se me pasa por la cabeza "¿esto es muy básico?", "esto ya está dicho en mil sitios mas", "esto no le interesa a la gente", etc... Y al final termino por no escribir sobre ello.

Por último había perdido un poco la pasión que tenía antes, no era como hace unos años cuando leía con ansia textos sobre malware. Estaba menos interesado en dedicar tiempo a esto y prefería gastarlo en otras cosas.

Pero en los últimos meses en los que he estado mas alejado de la informática han surgido en mi unas ganas increíbles de aprender cosas nuevas, de dedicar tiempo a profundizar, entender, probar cosas de seguridad informática. incluso ganas de volver a programar!! Si, se que suena como si estuviera loco, probablemente lo esté.

Además pienso que el tiempo no es un problema, si hay ganas el tiempo se saca de donde se pueda (véase la hora de la entrada).

Así que para saciar estas ansias de conocimiento he decidido dedicar todos los días unas horas a la informática mas pura y dura. El tema elegido para profundizar en él es el formato PE. La intención es leer documentación sobre el mismo, y utilizarla para ver como se puede trastear los ejecutables para sacarles el máximo provecho, modificar ejecutables a mano, hacer encriptadores, protectores, etc...

Utilizare el blog para compartir con vosotros el proceso de aprendizaje, documentos sobre el tema, herramientas, código, todo lo que me encuentre por el camino.

Nos vemos pronto ;)