Ricerca personalizzata

Los virus que amenazan Linux y las opciones de seguridad gratuitas.

Publicado por Hugo

La creencia popular de que sistemas operativos como Mac o GNU/Linux no tienen virus es falsa. Evidentemente existen (mucho menos que en Windows obviamente) y cada día hay más amenazas sobre ellos. Es interesante ver cómo los creadores de malware centran sus esfuerzos en plataformas con un mayor número de usuarios. GNU/Linux también es vulnerable a ciertos programas malware, gusanos y virus tradicionales, por ello hay una serie de opciones de seguridad gratuitas (ClamAV, AVG, Avast y F-Prot).

¿Que es un Virus?

Se trata de un programa que se copia y se ejecuta automáticamente, y que tiene por objeto alterar el normal funcionamiento de un ordenador, sin el permiso o el conocimiento del usuario. Para ello, los virus reemplazan archivos ejecutables por otros infectados con su código.

Un virus se instala solo, sin el permiso o el concentimiento de un usuario. Si no se instala solo, no es un virus: podría ser un ser un rootkit, o un troyano.

Un rootkit es un parche al kernel que permite ocultar determinados procesos a las utilidades de área de usuario. Dicho de otra forma, es una modificación del código fuente del kernel que tiene como objeto que las utilidades que permiten ver qué se está ejecutando en cada momento no visualicen un determinado proceso, o un determinado usuario.

Un troyano es análogo: es una modificación al código fuente de un servicio concreto para ocultar determinada actividad fraudulenta. En ambos casos es necesario obtener el código fuente de la versión exacta instalada en la máquina Linux, parchear el código, recompilarlo, obtener privilegios de administrador, instalar el ejecutable parcheado, e inicializar el servicio –en el caso del troyano– o el sistema operativo completo –en el caso del rootkit.

El proceso, como vemos, no es trivial, y nadie puede hacer todo esto “por error”. Tanto unos como otros exigen en su instalación que alguien con privilegios de administrador, de forma consciente, ejecute una serie de pasos tomando decisiones de índole técnica.

La arquitectura de Unix en general y de Linux en particular NO hace factible la dispersión de un virus.Supongamos que tenemos un virus que quiere transmitirse solo. Supongamos que ha sido lanzado por un usuario normal, de forma inocente, al lanzar un programa. Dicho virus tiene exclusivamente dos mecanismos de transmisión:

Replicarse tocando la memoria de otros procesos, anclándose a ellos en tiempo de ejecución.

Abriendo los ejecutables del sistema de ficheros, y añadiendo su código –payload– al ejecutable.

Todos los virus que podemos considerar como tales tienen al menos uno de estos dos mecanismos de transmisión, o los dos. no hay más mecanismos.

Respecto al primer mecanismo, recordemos la arquitectura de memoria virtual de Linux y cómo funcionan los procesadores intel. Estos poseen cuatro anillos, numerados de 0 a 3; a menor número, mayores los privilegios que tiene el código que se ejecute en dicho anillo.

Estos anillos corresponden con estados del procesador, y, por lo tanto, con lo que se puede hacer con un sistema estando en un anillo concreto. Linux hace uso del anillo 0 para el kernel, y del anillo 3 para los procesos. no hay código de proceso que se ejecute en anillo 0, y no hay código de kernel que se ejecute en anillo 3. solo hay un único punto de entrada al kernel desde el anillo 3: la interrupción 80h, que permite saltar del área donde está el código de usuario al área donde está el código de kernel.

El kernel mediante el uso de la memoria virtual hace creer a cada proceso que tiene toda la memoria para él solo. Un proceso –que trabaja en anillo 3– solo puede ver la memoria virtual que le han configurado, por el anillo en el que opera. No es que la memoria de los otros procesos esté protegida; es que para un proceso la memoria de los otros está fuera del espacio de direcciones. Si un proceso diese una batida a todas las direcciones de memoria, no sería capaz ni de referenciar una dirección de memoria de otro proceso.


Como vemos, ni siquiera un virus como root puede saltar esta barrera. La única solución que queda es la transmisión entre ficheros ejecutables. Lo que tampoco funciona como veremos a continuación.

En Linux, un proceso puede hacer simplemente lo que le permita su usuario efectivo y su grupo efectivo. Es cierto que existen mecanismos para intercambiar el usuario real con el efectivo, pero poco más. Si nos fijamos donde están los ejecuables, veremos que solamente root tiene privilegios de escritura tanto en dichos directorios, como en los ficheros contenidos. Dicho de otro modo, solamente root puede modificar dichos archivos.

Esto es así en Unix desde los 70, en Linux desde sus orígenes, y en un sistema de ficheros que soporte privilegios, aún no ha aparecido ningún error que permita otro comportamiento. La estructura de los ficheros ejecutables ELF es conocida y está bien documentada, por lo que es técnicamente posible que un fichero de este tipo cargue el payload en otro fichero ELF… siempre que el usuario efectivo del primero o el grupo efectivo del primero tengan privilegios de lectura, escritura y ejecución sobre el segundo fichero.

En sistemas operativos donde es necesario ser administrador para tareas comunes o para ejecutar muchas aplicaciones diarias, esto sí se puede dar. Pero en Unix es necesario ser administrador para configurar la máquina y modificar los archivos de configuración, así que es escaso el número de usuarios que emplea como cuenta diaria la de root. En casi todas, si accedes como tal al entorno gráfico, el fondo se cambia a rojo intenso, y se repiten mensajes constantes que recuerdan que no se debe emplear esta cuenta. Finalmente, todo lo que se debe hacer como root es posible hacerlo mediante un comando sudo sin riesgo.

Por ello, en Linux un ejecutable no puede infectar a otros siempre que no estemos usando la cuenta de root como cuenta de uso común; y aunque las compañías antivirus se empeñan en decir que hay virus para Linux, realmente lo más parecido que se puede crear en Linux es un troyano en área de usuario. La única forma de que estos troyanos puedan afectar algo del sistema es ejecutándolo como root y con lo privilegios necesarios. Si solemos emplear la máquina como usuarios de a pie, no es posible que un proceso lanzado por un usuario común infecte al sistema.

A la pregunta ¿Existen vulnerabilidades en sistemas Linux? la respuesta es ciertamente sí. Nadie en su sano juicio lo duda; Linux no es OpenBSD. Otra cosa es la ventana de vulnerabilidad que tiene un sistema Linux que sea actualizado adecuadamente. Si nos preguntamos mientas para aprovechar estos agujeros de seguridad, y explotarlos? Pues también sí, pero eso no son virus, son exploits.

Este es un pequeño resumen de la historia de virus en GNU/Linux.



1996:

El grupo de crackers VLAD escribió el primer virus GNU/Linux conocido como Staog. Hacía uso de una vulnerabilidad en el kernel que le permitía quedarse como proceso residente y esperar a que un binario se ejecutase. Una vez ejecutado, el virus se añadía al ficero en cuestión. Después de que el virus fuera descubierto, la vulnerabilidad fue solucionada rápidamente. VLAD también fue responsable del virus para Windows 95 Boza.

1997:

El virus Bliss llegó a GNU/Linux como un virus que se adjuntaba a ejecutables del sistema y evitaba que corrieran. Un usuario tení que tener acceso root, por tanto, para que el virus fuese efectivo. A día de hoy Debian sigue mostrándose vulnerable a este virus, aunque la amenaza es mínima ya que los usuarios no suelen trabajar cono root.

1999:

No hubo virus de renombre ese año, pero es cuanto menos curioso el mensaje que fue lanzado en PCs, instando al usuario a instalar Linux. Llegó en plena época de virus Melissa y aparecía un mensaje en el PC que comentaba que el virus Tuxissa iba a instalar Linux, no era más que un mensaje en sí, sin acción posterior.

2000:

Un virus conocido como Virus.Linux.Winter.341 llegó y se introducía en archivos ELF. Dicho formato es el ejecutable en Linux. El virus era muy pequeño, sólo 341 bytes, e insertaba LoTek by Wintermute en la sección de notas del archivo ELF. El virus también permitía el cambio del nombre del ordenador a Wintermute, pero nunca llegó a obtener el control de la máquina para poder conseguir dicho efecto.

2001:

Este año fue bastante movido en el mercado de virus GNU/Linux ya que comenzó con el virus ZipWorm, que se adjuntaba en cualquier archivo Zip que estuviese en el mismo directorio que se ejecutaba. El siguiente fue el virus Satyr que no era dañino, añadiendo en archivos ELF la entrada unix.satyr version 1.0 (c)oded jan-2001 by Shitdown [MIONS], http://shitdown.sf.**. También llegó un virus llamado Ramen que reemplazaba los archivos index.html con su propia versión que mostraba Ramen Crew en la parte superior y un paquete de Ramen Noodles en la parte inferior. Otro de las amenazas Linux de 2001 fue el gusano Cheese que bloqueaba las puertas traseras creadas por el virus Ramen.

2002:

Una vulnerabilidad en Apache sirvió de guía para la creación y expansión del gusano Mughty. El gusano explotaba la vulnerabilidad en el interfaz SSL de Apache que infectaba los ordenadores de manera silenciosa. Tras ello se creaba una conexión a un servidor IRC y se esperaba en un canal a recibir intrucciones / comandos.

2003:

Este año llegaron virus no dañinos como el virus Rike, escrito en ensamblador y que se adjuntaba en archivos ELF. Una vez adjunto extendía el espacio que ocupaba el archivo y escribía RIKE en ese espacio libre.

2004:

De manera similar al virus anterior, llego al mercado el virus Binom que extendía el tamaño del fichero y escribía la entrada [ Cyneox/DCA en ese espacio. El virus se extendía tras la ejecución del archivo infectado.

2005:

El gusano Lupper comenzó a extenderse entre servidores web Linux vulnerables. El gusano buscaba una URL específica y trataba de utilizar un exploit que aprovechaba una vulnerabilidad PHP/CGI. Si el servidor permitía recibir comandos remotos y descarga de archivos, entonces comenzaba la infección y continuaba buscando otros servidores que infectar.

2006:

Apareció una variante del gusano Mighty de 2002 conocido como Kaiten. Abría una conexión a un canal IRD y esperaba comandos para ser ejecutados.

2007:

Un exploit en OpenOffice sirvió para extender un virus conocido como BadBunny. Este virus infectaba Windows, Mac y Linux. El virus creaba un fichero badbunny.py y un script XChat creaba badbunny.pl, un virus Perl que infectaba otros archivos Perl. También hubo un troyando de renombre, Rexob, que una vez en la máquina abría una puerta trasera que permitía la ejecución de código.

2009:

El año pasado hubo un problema para usuarios GNOME que mediante la descarga de “salvapantallas” y otros archivos aparentemente seguros, hospedaban un salvapantallas conocido como WaterFall. Una vez instalado en la máquina abría una puerta trasera que tras la ejecución causaba que la máquina participase en ataques DDoS. Este tipo de ataques afectaron a webs como MMOwned.com.

2010:

Este año llegó el gusano koobface que se extendía a través de redes sociales y tenía como objetivos equipos Windows, Mac y más recientemente GNU/Linux. Una vez infectado el equipo, el virus trataba de conseguir información de login de FTPs y redes sociales. Una vez que la contraseña queda comprometida, el virus enviaba un mensaje infectado a todos tus contactos.

Evidentemente esta es una lista incompleta, no son todos los virus existentes -claro está- pero si es una pequeña muestra de la existencia de virus y gusanos para GNU/Linux. Con ello queremos decir que un análisis del sistema de vez en cuando no hace daño a nadie, y habiendo opciones gratuitas (ClamAV, AVG, Avast y F-Prot) no hay excusa para no hacerlo.


Búsqueda personalizada
www.zanox.com


Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:

3 comentarios:

  1. Guillermo dijo...

    Hablas de virus y vulnerabilidades de Apache, PHP, Openoffice... pero eso no son vulnerabilidades de linux sino de aplicaciones que corren sobre linux, son cosas distintas ¿no?.

  2. Hugo dijo...

    Estoy de acuerdo contigo per te recuerdo que el titulo de la entrada es: "Los virus que amenazan Linux" y no los virus que contiene Linux. Es decir aplicaciones que se usan normalmente en Linux, algunas nativas, y que permiten la infiltracion de estas amenazas. Esto no quita que Linux que Linux, en este contexto, sea uno de los màs seguros.

  3. kastanedowski dijo...

    Linux no necesita antivirus porque no se necesita ser adminustrador para instalarlos... no es windows

    Ademas, los virus estan hechos pore las mismas empresas para hacerte comprar, es mucho dinero de por medio

Publicar un comentario en la entrada

Ultimas entradas publicadas

Flickr Photostream