4/8/09

¿Como es un crypter? ¿Para que es? y más...

Poco a poco voy a ir soltando y desplegando conocimientos para que todo el mundo pueda optar a entender un poco más lo que utiliza y lo que programa.

¿Qué es un crypter?
Pese a que podré ser colgado por un experto, podríamos definir sin equivocarnos que un crypter será la herramienta que nos transforme un fichero A en un fichero B, realizando cambios (muchos o pocos), sobre el fichero original A, y añadiendole o no alguna funcion que antes no tenia.

¿Para que nos sirve un crypter?

-Habitualmente se utiliza para evitar la decompilación del código, al menos tratar de complicarlo.
-Saltar la heuristica de los antivirus.
-Simplemente camuflar un fichero bajo la apariencia de otro (normalmente, haciendo creer que es inofensivo)

¿Hay tipos de crypter?
Existen 2, pese a que podriamos catalogarlos en más.
-Runtime pueden llegar a ser ejecutados, sin que sean detectados por un anti virus por ejemplo.
-Scantime no son ejecutados, simplemente cuando un antivirus scanea en busca de firmas, heuristica, etc, no detectará nada extraño sobre este fichero.

¿Como funciona un crypter?
Lo normal es que existan 2 ficheros, el primero se encangará de realizar el pastel, es decir, mezclar, batir y aliñar nuestro programa. El segundo, será un lanzador o stub, se encargará de situar el código de nuestro programa en memoria.

¿Puedes ser más técnico?
Aquí es la zona que a mi me gusta, y en la que creo despistaré a unos cuantos.
Previo a entrar en materia supongamos que tenemos un fichero virusmortal.exe, el código de mi virusmoral, será: linea que hace todo el mal.

Un crypter, leera el código de mi programa, en este caso situará en una variable: "linea que hace todo el mal", suponemos que los antivirus detectan por firma la palabra "mal". nota; tristemente el funcionamiento de los antivirus es bastante parecido a esto.

Si guardamos el contenido de la variable, de nuevo en un fichero nuestro antivirus (de ahora en adelante AV), saltará y nos avisará. Por lo tanto algo tiene que hacer el crypter, dependiendo del programador, aplicará una tecnica, ya sea dar la vuelta a la cadena, o encriptarla con xor, con base64, por comodidad yo utilizaré base64.

El programa pasará la cadena que tenia en la variable, por una funcion que me codificará el el texto almacenado, en base64, nos quedaría: "bGluZWEgcXVlIGhhY2UgdG9kbyBlbCBtYWw=". Si guardamos esto de nuevo en virusmortal.exe, NO funcionará, ha perdido el poder de ser ejecutado. Tendriamos un fichero en scantime.

Aquí es donde entra a funcionar el stub, este tambien es un fichero ejecutable, suele funcionar con un código similar a este pseudocódigo:
-Busco mi ruta
-Leo todo mi código
-Ejecuto en memoria todo lo que hay debajo de mi.

Como se puede observar si ejecutamos este fichero, no pasará nada, pues por si solo es completamente inofensivo. Un crypter nos mezclará el código obtenido antes en base64 y pondrá encima de dicho código el stub. El código finalmente quedaría:
-Busco mi ruta (ej: c:\bichito_encriptado.exe)
-Leo todo mi código: Rutinas varias para ejecutar código, des-encriptar, etc.
-Ejecuto en memoria el código des-encriptado: "bGluZWEgcXVlIGhhY2UgdG9kbyBlbCBtYWw=".

El stub... Un poco más a fondo.
Tal y como se ha podido ver, una gran parte del trabajo lo tendrá el stub. Para el programador, es el que más juego puede proporcionar pues se le pueden añadir tantas rutinas como se quiera. Es decir, podriamos meter todo lo necesario para tener un fichero con nuestro código virico, pero no solo eso, si no a su vez que este se replicase por usb por ejemplo. Cosas que se me ocurren podrian ser:
-Replicacion de usb.
-Replicacion por programas de P2P.
-Modificar el fichero host. Para esquivar actualización de los Av.
-Añadir rutinas que imposibiliten o dificulten el analisis. Is debugger present, anti-anubis....
-Crear un nuevo proceso, para asi poder mostrar que la aplicacion funciona y no un simple mensaje de error...
-Modificar algún fichero de sistema o varios, ej: Salvapantallas para que pueda cargar nuestro amigo, taskmngr,explorer,firefox...

Por supuesto cuantas más opciones más fácil será detectarlo, pues facilitas las firmas a las compañias AV, si detectan ejecución en memoria, más leer fichero... blanco y en botella.


NOTA IMPORTANTE: Toda esta información es para aquellos que os dedicais al analisis, detección, programación, por hobby o por trabajo. Nunca deberá ser utilizada para cometer maldades... Sobra recordar que ir infectando máquinas por ahí es un delito y tiene penas de prisión.