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!