15 octubre 2007

Virus y diseño de interfaces (1era parte)

"Che sabes que la compu me anda raro, que puede ser?"
Como "compunerd" que soy es típico que me hagan estas consultas. En general la gente piensa que como uno estudia computación conoce absolutamente todo, desde hardware hasta las configuraciones mas rebuscadas de windows. Estas ultimas semanas me toco revisar la PC de mi novia y de unos amigos. Ambas maquinas tenían problemas parecidos. En una había un programa llamado Disk Knight que se copia por medio de los pendrives (no es un virus maligno, pero es igual de molesto). Y en la otra un virus cuyo nombre no me acuerdo. Una característica de estos virus es que no son rebuscados programas en assembler con código para mutar y ocultarse en archivos exe. Si no que son programas simples (es decir pueden ser creados por cualquier persona con un minimo de conocimiento de programación) que aprovechan algunos errores de diseño de Windows. Lo que me interesaría escribir en esta serie de posts es acerca de esos errores de diseño: cuales son y que se puede aprender de ellos. Los problemas Ambos virus utilizaron las siguientes características de Windows:
  • Archivos ocultos del sistema
  • Autorun
  • La entrada "Run" de la registry (para ejecutarse al inicio)
Archivos ocultos y de sistema Windows tiene flags para marcar a un archivo como oculto y de sistema, y evitar así que un usuario común y corriente lo borre accidentalmente. Estimo que el 90% de los usuarios -yo me incluyo en ese numero- tiene activada la opción de ocultar archivos de sistema. ¿Por que? Simplemente por que la mayoría de los archivos de sistema (thumbnails y otras hiervas) molestan cuando uno quiere manejar los archivos en la PC. (si selecciono fotos para copiar no quiero estar copiando siempre el Thumbs.db). Usando estos atributos un virus puede copiarse a un directorio/pendrive sin ser visto y sin usar ninguna técnica complicada de stealth (que por lo general es dectectada por un anti-virus). Desafíos:
  • Evitar que el usuario cometa un error que rompa el sistema
  • Ocultar ciertos niveles de complejidad más bajos del sistema
Autorun El autorun parece buena idea para las PC de hogar: si quiero jugar un juego solo pongo el CD como si fuese una consola y listo. Pero prácticamente todos los juegos de PC que requieren instalación. Así que el autorun se limita a ejecutar el setup, por lo que pierde un poco la gracia de la idea original. Además requiere de cierta "fe" por parte del usuario: si tengo activado autorun e inserto un CD tengo que saber de antemano que programa estoy queriendo ejecutar. Otro problema es que Windows permite que cualquier unidad de disco tenga autorun! (Prueben de poner un autorun.inf en el C: y vean como se comporta ahora el icono de Mi Pc). Desafíos:
  • Detectar según el contexto cual es la intención del usuario. (quizás quiero ver los archivos en el CD, no instalar la aplicación)
  • Como hacer que el usuario tenga el control sin hacer más complejo el uso del sistema.
La entrada "Run" de la registry El problema de la entrada "Run" en la registry es que uno nunca termina sabiendo que es todo lo que se ejecuta al iniciar Windows. Muchas aplicaciones colocan iconos en el system tray, otras como el Office o el Acrobat tienen "caches" para hacer que el programa se levante más rapido, otras programas para detectar nuevas versiones y otras para cosas que en realidad deberían ser servicios del sistema. Desafíos:
  • Intention revealing: como hacer que el usuario sepa que es necesario o no para que el sistema funcione bien.
En el próximo post me voy a dedicar a analizar el problema de los "Archivos ocultos" es decir como:
  • Evitar que el usuario cometa un error que rompa el sistema
  • Ocultar ciertos niveles de complejidad más bajos del sistema

7 comentarios:

  1. Diegacho, como va?, por lo que leí te topaste con el disk knight, y quería saber si pudiste eliminarlo. te mando un abrazo y gracias

    ResponderBorrar
  2. Z, es "sencillo" de eliminar:
    1. Configura el explorer para que te muestre los archivos ocultos y de sistema: Mi Pc->Herramientas->Opciones de carpeta... Tab de Ver
    Son dos opciones:
    - Mostrar todos los archivos y carpetas ocultos.
    - Ocultar archivos protegidos del sistema operativo (esta la tenes que desmarcar)
    2. Ahora vas a poder ver que en la carpeta de Windows (generalmente C:\Windows) hay un archivo llamado DiskKnight.exe eliminalo
    En el pendrive también esta este programa junto con un autorun.inf oculto, fijate que cuando metas el pendrive no se ejecute el autorun Apretando SHIFT mientras metes el pendrive logras eso. (si se ejecuta el autorun se vuelve a copiar DiskKnight.exe al disco)
    3. El ultimo paso para dejar todo limpio es borrarlo de la entrada Run en la registry.
    Si no sabes como hacer eso no importa... si borraste el .exe del directorio windows ya esta.
    Si lo queres hacer sin tener que usar el regedit, podes usar este programa http://www.microsoft.com/technet/sysinternals/Security/Autoruns.mspx

    ResponderBorrar
  3. Me falto agregar que para poder borrar DiskKnight.exe en el paso 2 vas a tener que sacarle el atributo de solo lectura. Podes hacer todo desde la linea de comandos usando:

    attrib -H -S -R C:\windows\diskknight.exe

    y despues:
    del C:\windows\diskknight.exe

    Espero que te haya sido de ayuda

    ResponderBorrar
  4. Diego, muchas gracias, tal y como lo contabas. te mando un abrazo.

    ResponderBorrar
  5. Buena Diego, gracias por enseñar.

    ResponderBorrar
  6. diegacho, me gustaria saber como borrar el diskKnight de mi memoria usb, porqeu simplemente no puedoo no se donde, de la pc ya lo elimine pero de mi memoria no puedo y me urge porque deberas que molesta. grxx besitos

    ResponderBorrar
  7. dixie: Fijate en los comentarios que le explique a otra persona como hacerlo.

    Si pudiste eliminarlo del directorio Windows, ya tenes el 90% hecho :)
    El otro 10% es eliminarlo del pendrive, para eso es importante que no se ejecute el autorun del pendrive... si no tenes que volver a empezar :(

    Cuando mientras enchufas pendrive apreta SHIFT para que no se ejecute el autorun.inf. Despues lo borras igual de como lo borraste del C:\WINDOWS

    Por si las moscas tambien abri el Administrador de Tareas (Ctrl-Alt-Del) y termina el proceso DiskKnight.exe.. si es que hay uno

    Oops! parece que hay mucha gente con este problema :(

    ResponderBorrar