22 ene 2010

Mods para novatos 1

Hola, soy masterpassword y he escrito este tutorial para toda la gente que está empezando en esto de modificar malware, si ya tienes experiencia en ingeniería inversa este tutorial definitivamente NO ES PARA TI.

No quiero que pequeñas alimañas propaguen estúpidos troyanos por el mundo, si lo que buscas es una manera facilona de conseguir victimas este tutorial definitivamente NO ES PARA TI.

Si llevas un tiempo rompiendote la cabeza con el método Rit,Hex,Meepa,Xor… definitivamente ESTE ES TU TUTORIAL.

Aquí voy a enseñar los fundamentos de la tecnica de modificación, es decir, voy a explicar la técnica en su esencia, en lo más básico y elemental. Este será el primer escalón para que puedas pisar firme y avanzar.

He dividido el tutorial en 2 partes, una parte teorica y otra práctica, esto que estás leyendo es la parte teorica del documento, la parte practica saldrá dentro de un par de semanas (ya casi está terminada mientras ultimo la edición de este documento), espero que disfruteis y sobre todo espero que entendais que el aprendizaje solo puede ser gradual, con el siguiente ejemplo lo entendereis mejor: “en las artes marciales hay distintos cinturones, estos cinturones indican el nivel de conocimiento del arte marcial, si vosotros teneis un cinturón blanco, es decir, acabais de apuntaros a las clases de artes marciales, no vais a pelear con alguien que tiene cinturon negro porque os dejaría hechos puré.”

Dicho esto, empezamos.

“¿ A quien va Usted a creer ?, ¿ a mi ?, ¿ o a sus propios ojos ?”

Groucho Marx


Las mods (modificaciones) no son otra cosa que codigo modificado, hacer una mod es simplemente modificar un programa. Esto se lleva haciendo desde que existen los programas (para añadirles funcionalidades o para quitarselas).

Como seguramente sabreis un programa no es más que un conjunto de instrucciones.

Cuando un programador escribe un programa puede distribuirlo despues de 2 formas, una es distribuyendo el codigo fuente y otra es distribuyendo el código ya compilado y enlazado. Esto nos lleva a que existen 2 tipos de modificaciones, las que se hacen teniendo el código fuente del programa y las que se hacen sin el código fuente del programa.

Las modificaciones de programas teniendo el código fuente de los mismos no seran objeto de este tutorial. Podeis documentaros sobre este tema leyendo libros de programación.

Aquí trataremos las modificaciones a programas distribuidos por el programador compilados y enlazados. ¿Y esto de compilados y enlazados que carajo significa? Pues veras, cuando un programador escribe un programa tiene que pasar ese código a otro tipo de codigo que el ordenador pueda entender, el codigo fuente del programa solo lo entendemos los humanos. Mediante el proceso de compilado y enlazado transformamos ese código fuente en código que la máquina puede comprender y ejecutar.

El principal problema de un programa del que no se tiene el código fuente es que su modificación requiere el uso de la ingeniería inversa ya que podriamos decir que el programa está minimamente protegido. Si tuvieramos el código fuente del programa solamente deberíamos, conociendo el lenguaje de programación en el que está escrito, escribir o borrar codigo para hacer la modificación, pero cuando el programa está compilado y enlazado la cosa se complica pues al conocimiento de algun lenguaje de programacion deberemos sumar el conocimiento sobre archivos ejecutables.

En windows los archivos ya compilados y enlazados tienen por regla general extensión EXE, tambien se les conoce por el nombre de ejecutables. Su estudio daria para varios libros, con el tiempo llegaras a saber muchas cosas sobre este tipo de archivos, pero creeme, nunca lo sabras todo.

La ingeniería inversa es un proceso mediante el cual se analiza un programa del que no se tiene el código fuente con la finalidad de modificar el código o generar código propio que haga las mismas funciones que el programa analizado.

Bien, hacer modificaciones no es más que hacer ingeniería inversa, aquí trataremos de la ingeniería inversa orientada a la evasión de antivirus.

A nosotros no nos interesa modificar un juego para obtener vidas extras, o modificar un programa para obtener una licencia de uso… La cuestión es que sabiendo modificar programas puedes hacer casi cualquier cosa con ellos. Tambien he de advertirte del hecho de que modificar programas puede ser ilegal, pero no te preocupes, puedes enseñarle este documento a tus padres o a tu esposa o novia ,o a tu marido ;)

Todo lo que haremos aquí será legal, y además será ético, porque estamos cansados de respirar falta de etica y justicia en buena parte de internet.

Decía que modificar programas puede ser ilegal, y efectivamente, el programador podría haber prohibido la modificación de su programa. Podriamos incurrir en un delito si modificamos un programa sin permiso de su autor, esto no es una broma.

Además aquí tratamos la modificación de malware, el uso de malware y su mera tenencia pueden ser constitutivos de delito, no estamos aquí para molestar a nadie, al contrario, queremos conocer como funcionan las cosas y para eso no hace falta saltarse la ley ni abandonar la ética.

Es dificil determinar cuando se comenzó a modificar software para evadir antivirus, las fechas que doy a continuación son aproximadas:

Los virus para PC empezaron a hacerse populares alrededor de 1986, se suele decir que Brain fue el primer virus para ordenadores domésticos que se hizo conocido.

En 1987-1988 el virus brain empezó a hacerse notar y unas cuantas empresas que se dedicaban a la recuperación de datos empezaron a recibir discos infectados.

Estas empresas empezaron creando vacunas, es decir, programas que detectaban y en algunos casos eliminaban un virus específico. Esto se hizo necesario porque cuando una empresa con 1000 ordenadores se infectaba el técnico no tenía tiempo para ir desinfectando manualmente cada máquina.

Durante 1988 empezó a fundarse la industria antivirus, personajes como Alan Solomon, Fridirik Skulason, John Mcaffe (este último llegó alrededor de 1990), Eugene Kaspersky (1991), todos ellos empiezan a interesarse por los virus informáticos y cada cual funda sus compañias, y empiezan a comercializar sus productos, programas que automatizan la tarea de encontrar y eliminar virus de los PC. Estos programas empiezan a incorporar lo que se conoce como escaner, un programa que analizaba los ficheros en busca de un patrón previamente escogido y guardado en una base de datos. Este patrón es lo que se conoce como firma, si el escaner reconocía el patrón en un archivo entonces lo catalogaba como virus.

Estos programas se hicieron imprescindibles, solo hay que ver como están las cosas en el año 2009, y de momento la industria antivirus sigue dando muchos beneficios.

En mi opinion solamente microsoft y el software libre podrán hacerle frente a esta industria en el futuro. En el año 2003 el gusano blaster propició que microsoft lanzara el Windows Blaster Worm Removal Tool, que no es mas que una vacuna contra el blaster. En el 2005 microsoft publica la Microsoft Malicious Software Removal, un producto que si bien es más generalista que su predecesor sigue siendo un lote de vacunas. Pero es que microsoft lanzó tambien el windows defender, una herramienta más completa (incluida ya en vista) que sirve para detectar y remover spyware. En el 2006 microsoft publico una beta de Live OneCare, la cual no tiene nada que envidiar a los programas antivirus modernos. Si microsoft continua incursionando en el terreno y además va incluyendo sus programas de serie con su sistema operativo la industria de los antivirus debería, cuanto menos, tomarse en serio a microsoft.

Por el lado del software libre tenemos a ClamAV que salió en el 2001 y desde entonces su numero de usuarios no ha parado de crecer.

Ahora, despues de esta digresión, volvamos al pasado.

En 1991 dos escritores de virus (Hellraiser y Bionic Slasher) editan el primer número de un ezine llamado 40hex, un servidor a traducido/adaptado un artículo del primer número de tan mitico ezine ya que tratan nuestro tema, las mods. Puedo equivocarme pero creo que es el primer texto colgado en la red que trata este tema.

Se que varias cosas del texto os sonarán a chino, leerlo hasta el final, lo importante es que os quedeis con el concepto. Este antiguo texto resume al completo la filosofia de las modificaciones (es mas bonito mutaciones).

Vamos a ello:
“Como modificar un virus para que el escaner no lo atrape o como crear nuevas cepas de un virus”

El problema con la mayoría de los virus es que este imbecil que vive en California, llamado John Mcaffe, mete sus codiciosas manos en ellos y los convierte en dolares para el. Este chico, John, es el responsable de que alla más de 500 virus ahí fuera y no albergo ninguna duda respecto a que él es el autor de almenos 10 de ellos.

Lo mejor que podemos hacerle a los que dependen de Mcaffe es esto.

Digamos que tienes por ahí algún virus viejo, como el Armstand o como el Jerusalem. La mayoría de escaners antivirus deberían detectar estos 2 virus porque ya tienen tiempo. Bien he aquí un metodo rápido para que el escaner no detecte el virus.

Las herramientas necesarias son:

Norton utilites
debug


Ahora esto es lo que tienes que hacer.

Paso A
Haz un archivo objetivo como este con el debug.
Copia el siguiente codigo en tu editor de texto y guardalo con el nombre de SAMPLE.USR
n sample.com
a
int 20

rcx
2
w
q

Luego usa debug para hacer el archivo SAMPLE.COM ejecutando este comando: DEBUG < SAMPLE.USR

Esto creará un fichero de 2 bytes llamado SAMPLE.COM

Paso B
Infecta este archivo con el virus y haz luego una copia del mismo y guardalo en lugar seguro.

Paso C
Arranca DISKEDIT de Norton, vale tambien un Editor hexadecimal. Abre el fichero infectado con cualquiera de los programas anteriores. Situate en la mitad del fichero y selecciona un bloque desde esta mitad hasta el final, y llena todo el bloque de ceros. Salva los cambios y vete al DOS. Escanea el fichero y si este aun detecta el virus es porque tu no has borrado la cadena que busca el escaner. ¿Lo pillas?.

Como ves todo lo que hace el escaner es buscar una cadena en los archivos que analiza y si encuentra esa cadena entonces dice que ha encontrado un virus. Por ejemplo si el escaner está mirando si el fichero está infetado con el virus Cascade buscará esta cadena:
EB1DAD1273D1FF121F

Todo lo que tienes que hacer es localizar esa cadena y modificarla.

Ten esto en mente, el 75% de las veces el escaner busca esta cadena en los primeros 150 bytes del fichero.

Muy bien, has hecho la busqueda y has encontrado la siguiente cadena:
B8 92 19 B7 21 CD

Esto es un ejemplo, vamos a DEBUG y hacemos lo siguiente:

DEBUG
E 0100 b8 92 19 b7 21 cd ----- esta es la cadena que encontraste
Luego escribe
u
Este comando desensamblará nuestra cadena y en este caso nos devolverá:
mov ax,1992h
mov bx,21h
int 21h

Ahora esto es lo que tienes que hacer, pero no olvides lo siguiente:

HAY QUE SABER ENSAMBLADOR PARA HACER ESTO BIEN

Con el debuger modificamos el código dejandolo así:

mov bh,21h
mov ax,1992h
int 21h

Solo intercambiamos el orden de las instrucciones mov

¿Lo pillas?

No has alterado el funcionamiento del programa (si sabes lo que estas haciendo claro) pero has cambiado esa string que detectaba el escaner.

Salva el fichero y escanealo, si el escaner no lo detecta FELICIDADES, trabajo terminado.

Una advertencia, este método solo sirve con virus no encriptados o con el mecanismo de encriptación del virus.

Con esto en mente, diviertete.


Un texto realmente corto y conciso, no te preocupes si no has entendido los trozos de código, lo que debe quedarte claro es que los virus no son más que código, y que los antivirus añaden un trocito de ese código a su base de datos y cuando estos buscan un virus lo que están haciendo es buscar ese trocito de código en los ficheros, si encuentran ese trocito de código entonces salta la alarma. No buscan el virus entero, buscan solamente un trocito, por eso modificando ese trocito evitamos que encuentren el virus.

Si quieres hacer mods es NECESARIO SABER ENSAMBLADOR, aunque en este tutorial iré enseñando algunas cosas deberías cojerte algun tutorial de ensamblador y leertelo, tenerlo a mano siempre que te pongas a hacer una mod es buena idea.

Cuanto mayor sea tu conocimiento de ensamblador mejores serán tus mods, cuando yo empecé simplemente cambiaba los valores aleatoriamente y así muchos programas dejaban de funcionar. Poco a poco podrás ir avanzando y llegarás a hacer cosas increibles, ya lo veras.

Solo me resta exponeros una serie de notas finales y despedirme, esto se acaba amigos.

Si sois perspicaces habreis notado que existe una guerra abierta entre aquellos que escriben malware (virus,troyanos,keyloggers…) y aquellos que escriben antivirus. Y en el medio estamos todos los demas. Ademas los distintos antivirus compiten entre ellos por una posicion en el mercado (excepto clamav que es software libre y por tanto su presencia en el mercado es totalmente especial).

Entre las filas de los que escriben malware hay de todo, incluso mafias organizadas que tambien compiten en el mercado por un buen puñado de euros. Pero la mayoria de los que escriben malware no son empresas, su organización es diferente porque no reciben un salario a cambio. Es cierto que algunos autores de malware venden sus programas, pero no es comparable su volumen de ventas con el volumen de ventas de un antivirus.

Recuerda que casi nadie consume malware pero casi todo el mundo tiene antivirus.

Esta guerra lleva librandose desde 1988, hace ya mas de 20 años, las cosas entonces eran de otra manera. Hoy los antivirus se han perfeccionado mucho, cuentan con nuevos metodos de deteccion ademas del metodo de firmas. Paradojicamente el numero de programas detectados ha crecido mucho desde aquellos tiempos y los antivirus aun llevando ventaja frente a la mayoria del malware que se produce se han convertido en monstruosos programas que se apoderan de los recursos del ordenador. Resumiendo, la industria antivirus se ha visto obligada a hacer sus herramientas mas pesadas y acaparadoras de recursos y aun asi siguen vendiendo porque la gente cree que sus productos son necesarios. En realidad existe malware que pasa desapercibido y, aunque hoy en dia los antivirus cuentan con tecnicas heuristicas de deteccion mediante las cuales pretenden detectar variaciones de virus ya conocidos e incluso virus desconocidos (es decir, todo aquel malware que no esta en su base de datos y del cual no tienen una firma), siguen produciendose especimenes que no son detectados y siguen produciendose infecciones en masa.

Los virus empezaron la guerra, y la empezaron con ventaja, no todo el mundo podia coger y desensamblar un virus para analizarlo y eliminarlo, pero llego la industria antivirus y empezaron a desensamblar virus, observaron como funcionaban, y los clasificaron. Ahora los antivirus llevan cierta ventaja..

Los usuarios normales ignoran lo que es y lo que hace el malware, ellos hablan del malware sin haber desensamblado nunca una muestra, asi que es facil meterles el miedo en el cuerpo y venderles un producto que les ayudara a eliminar el malware. Ellos solo veran ventanas y botones, y lo que es mas importante, ellos veran si su antivirus no detecta una muestra y otro antivirus si la detecta, si eso ocurre, se cambiaran de antivirus ya que ellos buscan seguridad. Nosotros aprenderemos que la unica manera de asegurarse es desensamblando el malware y viendo que hace.

Los antivirus fallan, no son perfectos ni mucho menos. Desensamblando antivirus y haciendoles lo que ellos les hacen a los virus (estudiarlos) se llega a comprender como funciona un antivirus y por tanto como “detectarlo y eliminarlo”.

Cuando los antivirus dicen que detectan 10 virus nuevos lo que quieren decir es que detectan 7 modificaciones del troyano bifrost, 2 modificaciones del encriptador X y un nuevo virus.

Ademas, piensen ustedes como de efectivos seran los antivirus cuando detectan un troyano tan extendido como bifrost y luego un chico de 15 años modifica un par de bytes del troyano y ya no es detectado hasta que una muestra del mismo cae en las manos de los que desarrollan el antivirus.

Los antivirus no evolucionan si los virus no evolucionan, el malware espolea a los antivirus para que se hagan mejores y no se duerman en los laureles. Es por esto que los trabajadores de las compañias antivirus visitan con asiduidad foros y comunidades donde se intercambia malware, para asi obtener muestras con las que hacer nuevas actualizaciones de sus bases de datos y luego vender estas actualizaciones a sus usuarios. Tambien servicios como virus total donde uno sube sus muestras para analizar sirven para recolectar muestras y aumentar la base de datos de virus detectados, y asi vender mas actualizaciones.

Obviamente aquellos que desarrollan antivirus nunca van a admitir esto, si son ustedes observadores se daran cuenta de que en los foros de virus no hay ninguna persona que afirme abiertamente trabajar para una compañía antivirus, mientras que hay cientos de personas dejando alli su software malicicoso con todo tipo de instrucciones. Los que trabajan en empresas antivirus son silenciosos, tienen prohibido decir que trabajan alli en estos foros (porque se les impediria acceder a las muestras), y nunca van a reconocer publicamente que su empresa en realidad vive del miedo que tienen los usuarios normales a que su ordenador se llene de virus.

Por tanto no solo es necesario que aprendais ensamblador sino que será necesario que estudies a fondo como trabaja cada antivirus en cuestion, si queremos modificar un programa para dejarlo indetectable a un antivirus debemos estudiar como funciona ese antivirus.

Me estoy dejando muchas cosas sin explicar, pero es que este manual es para cinturones blancos. Los antivirus en la actualidad no solo emplean el método de las firmas en el proceso de detección de programas maliciosos, pero el método de las firmas sigue siendo empleado por los antivirus por lo que es funcional, así que cuidado con lo que modificais.

Y llegamos al final de la primera parte, espero que haya sido de provecho. En la segunda parte os presentaré un “virus” y miraremos sus tripas, luego lo haremos indetectable a un antivirus muy especial. Antes era necesario un poco de historia.

Saludos!

3 comentarios:

Lordcam dijo...

Te felicito por la informacion, debo decirte que esta muy bien explicada... Me gustaria poder platicar contigo, espero sera posible..

Saludos, LordCam

masterpassword dijo...

Gracias LordCam.

Podemos hablar de lo que gustes, deja tu comentario y te responderé lo más pronto posible.

Anónimo dijo...

wow buena la info, bien segui tu consejo de empezar por lo mas liviano y veme aqui leyendo esto, esta genial, y mas para los principiante scomo uno. felicitaciones y un saludo.