Descripción de algunas posibles técnicas de implementación de virus en Linux.
Introducción
Si seguís :Barrapunto: , habréis visto que de tanto en tanto se discute si existe la posibilidad de programar virus en Linux, de cuál sería (o es) su impacto, qué posibilidades de propagación de los mismos hay, etc.
De hecho, hace poco salió de nuevo el tema en portada con motivo de la aparición de un nuevo troyano y las opiniones que la gente vertió al respecto oscilaron desde lo tremendista ("es más fácil programar virus en Linux que en Windows") hasta la despreocupación absoluta ("a mi me dan risa los virus: yo uso Linux").
Este documento pretende humildemente arrojar un poco de luz sobre el tema de los virus en Linux y posibles implementaciones.
Antes de nada, yo ni soy un programador de virus ni estoy dentro de ese mundillo... El 90% de lo que podéis leer en ha sido extraido de las contribuciones de Silvio Cesare a la revista :Phrack: lo único que es de cosecha propia es la implementación de los ejemplos (con vocación de ser más simple y comprensible que la de Silvio) más algunas partes del texto sobre ELF y PE, sobre los virus de macro o las notas sobre las llamadas a sistema en Linux.
Por otra parte, el trabajo de Silvio Cesare es además mucho más original y complejo de lo que puede reflejar el texto. Suyos son muchos de los mecanismos de infección actuales en UNIX, tales como la infección vía .plt, LD_PRELOAD o la infección en pila.
Resumiendo: se podría decir que conozco algo de esto porque me gusta leer por ahí y porque en la vida hay que saber un poco de todo :-). Sospecho que cualquier programador de virus competente (o incluso aficionado) podría sacarme muchas falta :-).
Pero, ¿hay una amenza real de virus en Linux?
Existen virus de circo y de laboratorio (como :Bliss: axel/bliss/ ), pero nada demasiado alarmante. Un virus real en Linux sólo tendría posibilidad de afectar a un tipo muy determinado de usuario medio: aquel que dispone de una "distribución popular" que usa en modo "workstation" y que posee unos conocimientos medios o bajos del sistema.
Hablo de "worstations" porque, en mi opinión, un servidor es improbable que llegue a infectarse. La razón principal es que la frecuencia de instalación de nuevo software en un servidor es muy limitada: se restringe a, entre lapsos respetables de tiempo, renovar los mismos programas con nuevas versiones, que son probadas antes en máquinas aparte.
Por contra, el trasiego de instalaciones de software de todo tipo (lúdico, versiones diversas, aplicaciones de usuario, etc) que se da en un Linux digamos "Personal" aumenta mucho más la probabilidad de infección.
Ese "inmovilismo" en los servidores también acarrea problemas en ocasiones (exploits contra servicios no actualizados) pero de naturaleza distinta de los que tratamos aquí.
Además, en los servidores (usualmente administrados por usuarios más competentes) se suelen utilizar herramientas sofisticadas como :Tripwire: que dificultan que la modificación introducida por un virus en un archivo pase inadvertida al administrador.
Tripwire, Lids y muchas herramientas que, bien utilizadas, incrementan la seguridad de nuestra máquina, también están disponibles para computadoras distintas de servidores dedicados. El problema es que no son incluidas habitualmente en las "distribuciones populares" y eso conlleva que un gran número de usuarios no las utilicen por simple desconocimiento (o por comodidad).
Un ejemplo de distribución que pretende cierto grado de seguridad e incluye muchos "extras" para lograrlo puede ser "Engarde Linux" (200mb de oro puro para un servidor). Otras distribuciones como REDHAT, aunque no dejan de lado totalmente la seguridad, están obligadas por su orientación al usuario final a ser menos estrictas en este tema.
Estructura del documento
El documento está estructurado en dos partes: una dedicada a virus binarios y otra a virus de macro y a técnicas para saltarse (con un poco de ayuda :-)) los permisos de Linux.