sábado, 13 de octubre de 2007

Virus, spyware, worms... etc. ¡Que no "Panda" el cúnico!

"The Creeper" fué el primer virus de computadora que apareció.

Infectaba solamente al sistema operativo TENEX (también conocido como TOPS-20, a pesar de tener poco que ver con el anterior TOPS-10), y fue "detectado" (gracias al mensaje que mostraba en la terminal: "I'M THE CREEPER : CATCH ME IF YOU CAN") en la antigua DARPANET (Defense Advanced Research Projects Administration (DARPA) Net), aquel antiguo proyecto militar que después derivó en lo que hoy conocemos como Internet.

Mucho tiempo pasó, y la tecnología ha cambiado bastante desde aquellos días. Máquinas más potentes, software más complejo, multi-tarea, multi-usuario, multi-procesador, multi-threading y también multi-problemático.

Las motivaciones detrás de la creación de virus (y otros tipos de "malware" en general) ha variado también con el tiempo. Desde diversión, hasta usufructo monetario, pasando por motivaciones políticas, estratégicas, vanagloria personal y hasta objetivos militares. La historia completa es demasiado larga como para que la desarrolle en este artículo.

Lo que sí quiero plantear es la "dura temática" de la existencia y propagación de virus y allegados, aún en pleno siglo XXI. Resulta realmente lamentable que aún continúe siendo moneda corriente la historia del "virus que me entró en la máquina y me hizo perder (datos|tiempo|trabajo|etc.)", pero más adelante se verá que existen bien fundadas razones para que esto siga sucediendo.

Eso sigue pasando aún hoy, gracias a las "nuevas" tecnologías de las innumerables versiones del sistema operativo más utilizado en equipos de escritorio en el mundo: Microsoft Windows ™

La balanza usabilidad/seguridad siempre está desequilibrada para estos "genios" de Seattle, y gracias a eso (y a otros detalles para nada menores que pronto pasaré a desarrollar) aún hoy, siguen existiendo innumerables alimañas que afectan de alguna forma a los pobres usuarios de dichos sistemas.

Antes de entrar de lleno en el tema, haré algunas definiciones para iluminar el asunto y evitar malentendidos posteriores. Comenzaremos enumerando los tipos de malware existente, lo cual ayudará a entender el funcionamiento de los mismos y los medios de propagación que tienen.

Un VIRUS es un programa que infecta otros programas, o sea que le agrega su propio código para que el programa infectado haga que se ejecute como si fuera parte de su función. Estos programas son siempre dependientes de un anfitrión, el cual debe ejecutarse para que el código del virus pueda actuar y seguir infectando, aunque también es importante destacar que son automáticos y no requieren de acción ninguna por parte del usuario. Las funciones principales de estos virus pueden variar, dependiendo de para qué fueron diseñados en primera instancia. Los hay que no hacen absolutamente nada, hasta los que destruyen información, pasando por bromas, mensajes que solo molestan , etc. Incluso algunos tienen "triggers", que son funciones programadas para ejecutar el código maligno ante un evento específico, como ser la llegada de una fecha, la ejecución de otro programa, etc. El medio de propagación más común de los virus es el correo electrónico, pero también pueden propagarse mediante redes de P2P o cualquier intercambio de archivos ejecutables que exista. Cualquier ejecutable binario puede estar infectado con este tipo de malware y una vez que dicho programa se ejecuta, el código del virus entra en acción y el proceso sigue. Hay variantes que infectan archivos de Microsoft Office, mediante la inclusión de código en forma de macros, y últimamente, pueden haber versiones que infecten archivos que no necesariamente son ejecutables (en el sentido estricto de la palabra) ni documentos, pero que pueden contener código ejecutable dentro de si mismos.

Un GUSANO (o WORM) es un programa que viaja por la red y ataca servicios, pero no necesita un anfitrión que cargue con el mismo y lo ejecute, sino que es 100% independiente y autónomo. Normalmente hacen uso de vulnerabilidades conocidas en los servicios que atacan para poder tomar el control del equipo donde ese servicio se ejecuta. El medio de propagación es cualquier red donde hayan equipos ejecutando servicios vulnerables.

Un TROYANO (o CABALLO DE TROYA), es un programa diseñado para engañar al usuario acerca de sus funciones reales, haciéndolo creer que es un programa que hace algo que el usuario quiere o necesita, pero que es en realidad un programa maligno cuyas funciones reales no tienen nada que ver con lo que el usuario desea. El medio de propagación más común es la navagación web (sobre todo sitios de cracks y pornográficos), intercambio de archivos P2P y la mensajería instantánea (mayormente el MSN Messenger). Sus funciones reales suelen estar relacionadas con el spamming (convierten la máquina del usuario en un emisor de SPAM, sin que el usuario lo note. A las máquinas que están en esta condición se les denomina "spam zombies"), o le abren una "puerta trasera" (backdoor), mediante la cual el equipo puede ser controlado remotamente por un potencial atacante mediante el envío de comandos a través de dicha puerta, o le instala un discador (dialer) que lo que hace es discar teléfonos con servicios pagos, algunos incluso en otros países, y convierten el equipo en un propagador de si mismos mediante alguna de las técnicas de mensajería instantánea, recursos compartidos o P2P. Es importante destacar (aunque espero que el lector lo tenga bien presente) que se les llama caballos de Troya porque utilizan la técnica (el engaño) que usaron los griegos contra Troya en la epopeya épica conocida como La Ilíada, el famoso caballo cargado de infiltrados que después comenzaron el ataque a la ciudad (teóricamente inexpugnable) desde el interior de la misma. En este caso la analogía se utiliza para explicar que en realidad el usuario fué engañado para que instale y ejecute el troyano, creyendo que era algo que en realidad no es. Cabe destacar que la propagación del troyano depende SIEMPRE de una acción del usuario, o sea que es gracias al mismo usuario que el troyano ataca la máquina y la "infecta". Muchos troyanos, luego de estar instalados tratan de desactivar las contramedidas de seguridad del usuario y descargar más software, generalmente spyware o virus, y tratan de ejecutarlos. De esta manera, el equipo puede quedar bajo el control de un potencial atacante en forma remota.

Un SPYWARE es un software que se instala en el equipo del usuario y literalmente espía sus movimientos, como ser patrones de navegación (por ejemplo, almacena una lista de los sitios que el usuario visita y elabora una base de datos con las preferencias del mismo en cuanto a contenido, información que después se transmite a un servidor central donde se procesa y es revendida por los creadores del spyware a empresas para que las mismas le ofrezcan propaganda de consumibles en forma focalizada, ya sea mediante SPAM o mediante la sustitución de los banners y propaganda de los sitios web que visita en forma totalmente transparente para el mismo), o también espía la información que el usuario ingresa mediante el teclado (este tipo de software se denomina "keylogger"), información que después es procesada y de la cual se obtienen claves de acceso, números de cuenta, datos personales, etc. Hay muchas variantes de este tipo de software, y algunas son más intrusivas que otras y las hay con funciones diversas. La forma más común de propagación de este tipo de programas es la navegación en sitios de contenido de dudosa confiabilidad (sitios web de cracks, porno, etc.), la instalación de "bundles" de software (algo así como la asociación de dos (o más programas en algunos casos), uno de los cuales depende de que el otro esté instalado para funcionar, una simbiosis creada para obligar al usuario a tener un programa que no quiere, a cambio de poder usar otro que sí quiere, como es el caso de Kazaa, Grokster o Morpheus), o casos similares. Lo que sí debe quedar claro es que estos programas se instalan normalmente gracias al desconocimiento del usuario y muchas veces con consentimiento del mismo. Es normal que cuando aparece una pantalla preguntandole "algo" al usuario, éste simplemente presione el botón "Aceptar" sin leer lo que se le está comunicando (ver Lusers2 como ejemplo de este tipo de usuarios), haciendo que este tipo de software se instale y entre en funcionamiento en forma practicamente inmediata. Una particularidad del SPYWARE es que no intenta reproducirse ni reenviarse a sí mismo a otros equipos de la red, a diferencia de los virus y worms, sino que permanece en el equipo donde fué instalado originalmente sin afectar a otros equipos de la red.

Existen variantes que utilizan múltiples métodos como los ya descritos, de forma de atacar varios puntos simultáneamente, logrando el efecto requerido de forma rápida y contundente, y haciendo más dificil su erradicación, pero básicamente, estos son los cuatro grupos principales de malware con los que un usuario "standard" debe lidiar en forma practicamente contínua si utiliza alguno de los sistemas operativos de Microsoft.

Y acá voy a hacer un alto para explicar algo necesario. Varios "expertos" (de esos que repiten lo que "otros expertos" dicen... y así sucesivamente) culpan a la popularidad de dichos sistemas operativos del problema. O sea, dicen que el problema existe porque Windows es muy popular, y por eso es atacado contínuamente. Sinceramente, esa demostración de desconocimiento técnico me resulta extremadamente graciosa, sobre todo porque están tán lejos de la verdad como de aquí a Abell 1835 IR 1916 (la galaxia más lejana que se conoce), y más aún viniendo de gente que vive de su experiencia a nivel técnico. Y exactamente lo mismo, pero a la inversa, replican cuando decimos que en Linux no existen virus... Dicen que eso es porque Linux no es muy popular todavía, y que apenas comience a ser más utilizado a nivel de escritorio, estas criaturitas malévolas van a empezar a aparecer en el mismo, como por arte de magia. Así que en este artículo, y al mejor estilo de los admirados Mythbusters, me propongo romper ese mito.

Técnicamente, los virus tal y como los conocemos en el ambiente Windows, NO existen en Linux.

Así de simple. ¿Porqué? Bueno, eso no es tán simple... pero voy a hacer el esfuerzo de intentar explicarlo. Resulta que para que un virus infecte un archivo, debe ejecutarse código capaz de efectuar la maniobra de infección, lo cual implica que un programa infectado se ejecute en el sistema. Supongamos por un momento que un usuario Linux recibe un mensaje de correo con un virus adjunto. Este usuario utiliza por ejemplo, el Thunderbird para Linux, así que puede ver el mensaje casi de la misma forma en que lo podría ver un usuario de Windows. Normalmente, y como pasa en la mayoría de los casos, un usuario Windows solo necesitaría "ver" el mensaje para que el virus se ejecutara en su equipo (por eso se recomienda desactivar la vista previa de los programas como Outlook y Outlook Express), ya que estos virus utilizan alguna técnica basada en las múltiples vulnerabilidades del sistema de despliegue de código HTML que tienen las herramientas de Microsoft, para ejecutar el virus en forma transparente e inmediata, así que con solo ver el mensaje, ya alcanza para que el virus se ejecute e infecte a la máquina. ¿Porqué sucede esto? Bueno, sucede porque para Windows, un archivo es ejecutable porque parte de su nombre así lo indica. Windows considera que un archivo cuya extensión sea .EXE, .COM, .BAT, .PIF, etc., es un ejecutable, así que cualquier archivo cuya extensión sea alguna de las mencionadas (y otras tantas que no menciono), es técnicamente un programa ejecutable para Windows, lo cual simplifica el trabajo para un potencial atacante, ya que el mismo solo tiene que asegurarse de que cuando el mensaje de correo se vea en el equipo, el adjunto sea invocado y por lo tanto, se ejecute e infecte la máquina del usuario.
En el caso de nuestro hipotético usuario Linux, las cosas no son tán simples. Si nuestro usuario recibe un archivo (con cualquier extensión que se les pueda ocurrir) y ese archivo necesita ser ejecutado, el usuario debe copiarlo a su disco duro, modificarle los atributos para convertirlo en un ejecutable y luego invocarlo. ¿Porqué tiene que hacer esto? Porque en Linux, un ejecutable solo es tal si sus atributos así lo definen. Linux (al igual que su primo lejano, UNIX) no entiende de extensiones, o mejor dicho, para Linux, las extensiones son irrelevantes, ya que existen solamente para que el usuario sepa qué tipo de archivos son, pero no sirven para designar su calidad de ejecutables. Para que un archivo sea ejecutable, el usuario debe manualmente asignarle el permiso de ejecución, seguramente utilizando el comando:


chmod +x /ruta/al/ejecutable

Una vez que el archivo se convierte en ejecutable, puede ser invocado y "actuar", y en caso de ser un virus, intentará infectar otros programas ya instalados en el sistema. Pero esto tampoco es tan simple... ya que normalmente, un usuario Linux standard, común y corriente, NO tiene los privilegios necesarios para poder modificar los archivos ejecutables del sistema, y ahí es que el potencial atacante encuentra otro problema.
En Linux, los procesos ejecutados por los usuarios tienen los mismos privilegios de acceso que el usuario que los ejecuta. Esto significa que un usuario normal no tiene forma de sobreescribir un ejecutable del sistema, y eso evita que el mismo pueda infectar dichos programas y por consiguiente, el equipo no puede ser infectado. Claro, si el usuario que ejecuta estos comandos es el usuario "root" (el Administrador del sistema), evidentemente que el sistema se va a infectar (en Linux, root es el único usuario del sistema con privilegios suficientes como para poder sobreescribir casi cualquier archivo en el mismo), pero en este caso, hay que tomar en cuenta algunos detalles:

  • Si el usuario es "root", se asume que conoce las implicaciones de sus acciones y sus responsabilidades como administrador de su sistema.

  • Así como sabe sus responsabilidades, conoce los riesgos de ejecutar un programa que recibe por correo electrónico, así que se puede asumir que si lo ejecuta, es porque SABE lo que está haciendo.

  • Si se le infecta la máquina (y no es porque lo hizo en forma deliberada), es porque ejecutó el programa en cuestión y el mismo era un malware, con lo cual, se puede asumir que dicho usuario no sabía lo suficiente como para poder determinar la peligrosidad de dicho programa ni para darse cuenta de lo que estaba haciendo realmente, y en ese caso, no debería estar "administrando" su propio sistema.

¿Moraleja? NO utilice su equipo con los privilegios del usuario root, a menos que sea estríctamente necesario hacerlo y que sepa exactamente qué es lo que está haciendo. Esto es otra forma de decir: "No te metas a hacer cosas que no sabés hacer".

(Cabe agregar que en Linux existen sistemas de seguridad más estrictos, como ser por ejemplo el SELinux, un framework que provee una granularidad en cuanto a asignación de privilegios extremadamente flexible y potente, aunque sacrificando bastante la usabilidad. Este sistema puede utilizarse incluso para evitar el acceso al usuario root a partes del mismo.)

Pero no me quiero ir del tema. La realidad es que en este caso hipotético, el VIRUS no sería un "VIRUS" tal y como lo definimos más arriba, sino que sería un "TROYANO", y las acciones del usuario serían el mecanismo de ataque, con lo cual, la idea de un VIRUS autónomo en Linux resulta simplemente descartada. Por eso es que decimos que los VIRUS en Linux NO EXISTEN, y eso es algo que la "popularidad" del sistema operativo no puede ni va a cambiar.

Claro, hay que tomar en cuenta que muchos de los "expertos" que hablan del tema son vendedores de productos antivirus, a los cuales les conviene seguir sembrando miedo, incertidumbre y duda (ver FUD) entre los consumidores. Tampoco ayuda el hecho de que existan versiones de ciertos antivirus para Linux, aunque como todo buen implementador de servidores Linux sabe, estos antivirus están destinados a ser utilizados mayormente como sistemas de protección perimetral entre Internet y los usuarios de equipos de escritorio con Windows, ya sea para chequear el contenido que consumen estos usuarios via web o para chequear los adjuntos que reciben por correo electrónico, y NO se utilizan para proteger al servidor Linux en sí mismo, pero bueno, para estos "expertos" el tema es una cuestión de fé: ¿Cómo pueden creer algo que por falta de conocimientos no pueden corroborar?.

Aquí voy a detenerme para citar en forma meritoria a la empresa Panda Software, la cual emite disparatados e hilarantes avisos de virus por televisión (que una linda chica lee sin pudor alguno frente a las cámaras, como si creyera realmente en lo que dice). Mejor ejemplo de propaganda desinformativa no creo haber visto. Claro, han hecho tanto ruido que la gente les compra, al igual que Microsoft. Son genios en el marketing, así que se merecen la cuota de mercado que tienen. Si han visto las noticias, seguramente saben de lo que hablo...

Pero siguiendo con el tema "central", es importante destacar que el 99.9% del malware que existe solo se ejecuta en alguna variante de Microsoft Windows ™, y que NO ES COMPATIBLE CON Linux, así que aunque quisiéramos, no podríamos infectar nuestros equipos con el Netsky, el Redlof, el Bagle, el Nimda, el Gator, el LOP o el CoolWebSearch...

Linux puede ser atacado por WORMS o por usuarios malintecionados (crackers). Un "administrador" descuidado o inexperto puede instalar un CABALLO DE TROYA o un SPYWARE sin saber qué era, pero es IMPOSIBLE que un VIRUS ataque a un sistema Linux y lo infecte, mediante las técnicas que dichos programas acostumbran utilizar. Lo siento mucho, señores "expertos" y vendedores de antivirus, pero por mucho que intenten convencernos de tales disparates, quienes sabemos cómo funcionan nuestros sistemas, sabemos que tal cosa NO puede pasar, así que por favor, no nos manden más spam sobre "soluciones antivirus para equipos de escritorio linux".

Por otro lado, hablemos de las contramedidas. Está claro que los antivirus convencionales (sin importar la marca) no son 100% efectivos, y para nada son eficientes. No importa qué versión se instale de lo que sea, cualquier Pentium IV, luego de que se instala un antivirus reactivo (de esos que escanean los archivos cada vez que se accede a los mismos) se convierte automáticamente en un 386SX (si, el modelo con bus externo de 16 bits). Los conceptos detrás de dichos antivirus no están errados, ya que en un sistema que puede ejecutar cualquier cosa solo dependiendo de como se llame, es menester que se deba chequear el acceso a cada archivo que el mismo tiene, pero el problema es que esto atenta en forma directa contra la performance.

Imagínese esta escena: Usted va a una biblioteca a buscar un libro, pero cuando lo encuentra y va a tomarlo para llevárselo, una persona que trabaja para la biblioteca lo toma de entre sus manos antes de que Usted lo abra y lo lee completo antes de dárselo nuevamente, para asegurarse de que cumple con los requerimientos gramaticales, sintácticos, semánticos y ortográficos de la biblioteca. Si cuando está leyendo la página 322, esta persona encuentra una errata, le dice que no puede leerlo y Usted tiene que irse sin el libro, habiendo perdido gran parte de su tiempo en la espera. ¿No le parece lento e ineficiente? Bueno, eso es EXACTAMENTE lo que pasa con los antivirus reactivos. Cada vez que Usted va a acceder a un archivo, el antivirus lo abre y lo lee buscando huellas de infección, y si las encuentra, le avisa que no puede acceder al archivo.

Esa es la razón por la cual, cuando utilizo Windows (si, también lo tengo y lo uso, porque a veces tengo que programar software para Windows), no le instalo ningún antivirus. Sí, leyeron bien: NO USO ANTIVIRUS.

La metodología que utilizo para evitar infectar mi equipo con malware mientras utilizo Windows es la siguiente:

  • No utilizo Microsoft Internet Explorer. Es la causa número 1 de infecciones en todo el mundo. En su lugar utilizo cualquier variante, siendo mi preferida Firefox

  • No navego en sitios web de dudosa credibilidad.

  • Mi computadora NUNCA está directamente conectada a Internet, sino que se conecta a través de otro equipo, el cual no tiene puertos abiertos hacia el "exterior" (Internet).

  • Utilizo servidores de correo electrónico que tienen filtros de contenido. Algunos de ellos los instalé yo mismo, así que confío plenamente en ellos y sé que ningún malware atraviesa los filtros que he implementado.

  • No confío en ningún archivo ejecutable que me envían, aunque sean amigos quienes lo hacen.


A este conjunto de reglas básicas, las denomino "políticas de uso de mi red", y la implementación de las mismas depende enteramente de mí. Como usuario, tengo que velar por la usabilidad de mis computadoras, y como administrador, tengo que velar por la seguridad de mi red y no me puedo dar el lujo de perder performance a causa de un proceso que puedo perfectamente evitar siendo cuidadoso y haciendo las cosas correctamente. Claro, no se le puede pedir a un usuario promedio que implemente las mismas políticas (¿o sí?). La mayoría no es capaz de determinar racionalmente cuando un sitio es de dudosa credibilidad o no, ni tampoco se le puede exigir que compre/instale un router/firewall para conectarse a Internet a través de él, así que es imposible que semejantes políticas se implementen a nivel global... y esa es otra de las razones por las cuales siguen existiendo los anti-malware. Claro, con la proliferación de los servicios ADSL en Uruguay, los peligros se multiplican, y los usuarios no se dan cuenta.

Es cierto, Internet es una jungla, está llena de animales peligrosos (a veces, también los llamamos "usuarios"), pero ese peligro es relativo al origen o al destino de los datos transmitidos. La mayor parte de los problemas a los que se enfrentan los usuarios, son causados por ellos mismos. No hay remedio ni antivirus para eso.

Y para terminar con este extenso artículo (de nuevo se me fué la mano, ruego a mis lectores que me disculpen), quisiera agregar algunos datos sobre las perspectivas de que se eliminen los problemas que aquejan a los sistemas operativos de Microsoft en cuanto a este tipo de programas maliciosos:

El grupo consumidor objetivo de los anti-malware es extenso y difuso. Es un negocio que se estima que en 2008 será de U$S 4.850.000.000 (por si se les dificulta leer los números, son cuatro mil ochocientos cincuenta millones de dólares, algo así como si cada persona del planeta hiciera un aporte de U$S 0,96 al F.A.M. "Fondo Antivirus Mundial") anuales, y solo hablamos de lo que se cobra realmente, no de las versiones pirata que existen en una proporción de 8 a 1 aproximadamente, dependiendo de donde se mida, ni tampoco hablamos de las opciones freeware u open source. El crecimiento anual de este valor es del 12.5% aproximadamente, lo cual permite proyectar con un error mínimo el desarrollo de una empresa que se dedique a este tipo de software. Empresas como Symantec, Trend Micro, F-Secure, Kaspers Labs, Panda Security, etc. están abocadas a obtener un "market share" (léase "tajada") de este negocio y por eso la competencia es cruda. Con la incorporación de Microsoft como competidor directo (algo con lo que no contaban hace 10 años estas empresas), estos números van a variar, pero no a declinar, dado que las necesidades van a seguir existiendo, puesto que es de esperarse que no se solucione la raíz del problema.

¿A qué empresa le interesaría dedicar tiempo, esfuerzos y dinero en matar una de sus gallinas de los huevos de oro?

Conclusión: La razón principal de la existencia de este tipo de programas maliciosos (como en todo otro asunto), es el dinero.

Si algunos usuarios no lo creen, es porque todavía creen en los reyes magos, y si es así, ahora entiendo porqué no usan una alternativa a Windows, existiendo otras opciones mejores...


Como siempre, dejo abierta la discusión para que quienes se sientan con ganas de expresar sus ideas, las agreguen como comentarios en este artículo.

No hay comentarios:

 
Gustavo Castro

Crea tu insignia