Breve teoria sobre el malware
Este es uno de los post que escribí en mi antiguo blog Alevsk-Zone y por el cual también fui cuestionado, primeramente creo que actualmente tengo un poco mas de madurez de la que tenia hace 2-3 años :), también creo que puedo dar respuestas bien fundamentadas sobre por que hago ciertas cosas.
Hace mucho me preguntaron, ¿por que practicas la seguridad informática sino estas llevando clases de eso?, mi respuesta es: no deseo esperar a que alguien me enseñe algo nuevo si yo se que puedo aprenderlo por mi propia cuenta, eso se llama ser autodidacta y creo que le da a la persona un plus de calidad por que significa que quiere mejorar y superarse así misma cada día :), además de todo siempre hay que tener en cuenta la humildad.
Si bien es cierto que la informática tiene demasiadas ramas, algunas buenas y algunas otras que no son precisamente éticas como el cracking o el desarrollo de malware sigo pensando que el conocimiento y la información no es buena ni mala, todo depende de para que se use, por ejemplo un automóvil puede ser usado para transportar gente o para atropellarla, ahí es cuando interviene el factor humano y le da un giro positivo o negativo a dicha tecnología. Además yo creo que todos aqui ya no somos ningunos niños (eso quiero pensar xD) para saber lo que es bueno o lo que es malo 😉
Con todo esto lo que trato de explicar es que si bien, el malware es algo malo por donde lo miren, no tiene nada de malo realizar investigaciones acerca de su desarrollo, además si me apetece publicar cosas que podrían no ser éticas (ojo que como explicaba mas arriba, la información no es mala solo el uso que se le puede dar) lo voy a hacer ya que creo que es bueno tener conocimientos de todo tipo.
Ya con todo el sermón anterior puedo publicar el contenido del post x’D.
¿Que es un malware indetectable?
El malware indetectable o FUD (full undetected) es el resultado de leves alteraciones en el cuerpo del virus, como quitar, agregar o modificar cadenas de bits, producto de patrones aleatorios que estos incorporan para
evadir los antivirus, esto se realiza para que los antivirus no detecten las firmas generadas del malware, sin embargo no todos los antivirus se pueden evadir con la misma técnica.
¿Como convertir un malware en indetectable?
Para alterar un virus de tal modo que sea indetectable al control del antivirus, se deben modificar unos cuantos bits en el archivo de tal modo que la firma que se genera del archivo difiera de las firmas que poseen los antivirus, pero la parte fundamental para que esta alteración sea óptima y permita que el archivo sea funcional e indetectable posterior al cambio es saber en que offset’s se debe inyectar la modificación, solo basta con cambiar algunos bits de posición si así se requiere y la tarea quedaría cumplida. En otras palabras y siendo mas idealista se podría afirmar que la ley matemática para la suma y multiplicación la cual dice que:
“El orden de los factores no altera el producto" no es aplicable para la suma, multiplicación o cualquier operación algorítmica entre bits que generen un hash o firma como es el caso de la identificación de virus, dado que con unos cuantos movimientos posicionales de bits el resultado no es el mismo, la firma de identificación del virus es alterada.
Vale la pena mencionar que no en cualquier segmento del archivo se puede realizar la alteración de los bits o bytes si se trabaja en hexa, dado que si se realizará el cambio en los offset’s vitales del archivo, este quedaría inservible y si por el contrario se realizara la alteración en algún offset que no fuera parte de la firma o del patrón de identificación, el archivo simplemente quedaría modificado pero aun seguiría siendo detectable para los antivirus. Lo ideal es conseguir que el archivo sea sutil y eficazmente alterado sin afectar su estabilidad.
Estos patrones de bits, firmas o offsets que lee el antivirus se le denominan Patrones Heurísticos:
Los Patrones Heurísticos son Técnicas que se emplean para reconocer códigos maliciosos (malware) que no se encuentren en la base de datos del antivirus (ya sea porque son nuevos, o porque no son muy divulgados. Estas técnicas usadas por el antivirus son:
- Recreacion del código compilado
- Desensamblado
- Firmas genéricas
- Desempaquetamiento
Indetección en scan-time y run-time
Un archivo puede pasar como indetectable al antivirus en dos fases, una al momento de residir en el disco y ser escaneado, y la otra al momento de ejecutarse y lanzar el código.
SCANTIME: Un archivo que no posea patrones heurísticos visibles al Antivirus puede pasar como scantime.
RUNTIME: Un archivo que además de no poseer patrones heurísticos, proteja en memoria sus llamadas y procedimientos, los virtualize o los inyecte, podría pasar a ser indetectado en tiempo de ejecución.
Quise publicar esto por que estoy llevando algunas clases este semestre en la universidad que me hacen mas fácil comprender toda esta teoría de la que se habla acerca del malware :), como es que un proceso puede proteger sus llamadas y procedimientos al sistema, inyectar código en otros procesos, desencriptar parte de su código encriptado cuando esta cargado en memoria, virtualizacion etc.
Me atrevo a mirar el trabajo que realizan algunos desarrolladores de malware como algo respetable, desde el punto de vista de la programación claro y también creo que todo esto es mas una cuestión de ego personal (como decir, mira lo que puedo llegar a crear), mas que tener en mente dañar a los demás COMO PIENSAN ALGUNAS PERSONAS :).