#GEDZAC Mitosis eZine Issue 4
#MITOSIS ARTICLE#
#Conceptos basicos sobre Virus en Linux
#Autor: MOWPaX[GEDZAC] <mowpax[at]gedzac[dot]com>
El fin de este articulo es tener una nociones minimas sobre linux,aclarar tambien que todo lo que diga en este artículo es lo que he leído y experimentado, asi que si digo algo incorrecto por favor háganmelo saber.
Como ando con ganas de hacer un virus en otro S.O que no sea Windows, me tire por empezar a investigar Linux.
Por comentarios de otros me enteré que era imposible una infección de virus en este Sistema Operativo.
Obvio que eso lo dice la gente que mucho no entiende del tema, porque creo que todos sabemos que SI es posible infectar Linux, solo es cuestión de investigar como funciona.
Hice una búsqueda en google, y leí que existían los virus para Linux pero que eran muy pocos, ya que es muy seguro.
Este articulo es para todos aquellos que dicen “jaja, yo nunca me voy a infectar con un virus porque uso Linux!”.
Nadie niega que sea difícil una infección allí, pero nunca digas nunca!, pero tampoco pensemos que sea facil de hacerlo, pero bueh.
Primero, tendríamos que conseguir los privilegios de administrador (wuau), pero esto no es tan facil como lo es en Win, sigamos; los ficheros pueden tener distintos permisos, entonces una forma de infectarlos seria ver que permisos tiene cada fichero, y depende de la respuesta infectar o no. También podriamos usar los famosos Exploits (algo muy comun en Windows :P), pero aca es diferente, ya que las fallas se solucionan rapidamente (y efectivamente jeje). O sino tambien podriamos hacer que si el usuario en una partición tiene Linux, y en la otra Windos J, infectar via Windows los archivos ELF de Linux, pero eso ya es mas difícil de hacer (virus multiplataforma).
Deben existir mas formas de infectar Linux, pero esas son las que yo conozco, como habran visto no hay ninguna forma facil, pero con practica y esfuerzo todo se puede, asi que animo!, aviso que esta parte no la agrando porque no la tengo muy clara y no quiero provocar confusiones, solo les dejo algunas formas de infectar.
Bueno, cuando ya estamos dentro de Linux (con los privilegios de root), podemos empezar a buscar archivos, sonrían, aquí existe una funcion parecida al findfirst y findnext de Windows (FindFirstFile y FindNextFile), para leer directorios, y buscar archivos, pero en Linux estas funciones se llaman…opendir y readdir. Las funciones glob y fnmatch nos devuelven los archivos que pertenezcan a cada formato que nosotros especificamos. Bueno para usar estas funciones solo tenemos que abrir el directorio que queremos con opendir, de esta manera nos devuelve un puntero, al que le pasamos readdir, y asi nos devuelve los archivos que se encuentre en ese directorio, podemos tambien fucionar estas funciones con glob para especificar un formato, luego de todo esto cerramos el directorio closedir.
Tonces nosotros con esa funcion, podriamos especificar un directorio, y alli buscar los ejecutables (ELF) para infectar.
Este formato es el mas usado en Linux, su estructura interna es asi:
[----------CABEZERA ELF---------]
[Program Header Table (opcional)]
[-----------Section 1-----------]
[--------------...--------------]
[-----------Section N-----------]
[--------Section Tables---------]
De esta manera el programa nunca se ejecuta ya que el virus lo sobrescribre (perdida del programa).
Metodo Overwrite:
Sobre-escribe el fichero
[-----------APLICACION----------] -> [---------LINUX INFECTOR--------]
[----------CABEZERA ELF---------] -> [----------CABEZERA ELF---------]
[Program Header Table (opcional)] -> [Program Header Table (opcional)]
[-----------Section 1-----------] -> [-----------Section 1-----------]
[--------------...--------------] -> [--------------...--------------]
[-----------Section N-----------] -> [-----------Section N-----------]
[--------Section Tables---------] -> [--------Section Tables---------]
Metodo Appending:
Virus que se copian al final del programa.
[-----------APLICACION----------]
[----------CABEZERA ELF---------]
[Program Header Table (opcional)]
[-----------Section 1-----------]-|
[--------------...--------------] |
[-----------Section N-----------] |
[--------Section Tables---------] |
[---------LINUX INFECTOR--------] |
[----------CABEZERA ELF---------] |
[Program Header Table (opcional)] ------------|
[-----------Section 1-----------] <-----------|
[-----------Section N-----------]
[--------Section Tables---------]
Explicación: El virus pone una llamada hacia él al principio del programa, luego llama a al programa, y termina.
Metodo Prepending:
Virus que se copian al principio del archivo.
[---------LINUX INFECTOR--------]
[----------CABEZERA ELF---------]
[Program Header Table (opcional)]
[-----------Section 1-----------]
[-----------Section N-----------]
[--------Section Tables---------]
[-----------APLICACION----------]
[----------CABEZERA ELF---------]
[Program Header Table (opcional)]
[-----------Section 1-----------]
[--------------...--------------]
[-----------Section N-----------]
[--------Section Tables---------]
Ahora ya que conocemos de que manera puede infectarse un ejecutable, me enfocare en los ELF’s.
Comenzar a infectar un ELF:
Metodo Cavity:
PROGRAM PROGRAM PROGRAM PROGRAM
0000000 0000000 0000000 0000000
0000000 0000000 0000000 0000000
0000000 0000000 0000000 0000000
Este es un archivo ELF, antes de infectar
Primero tenemos que abrirlo para fijarnos si podemos infectarlo, osea, si hay espacio para meter el codigo de nuestro virus, una vez que verificamos eso, comenzamos la infeccion copiando nuestro codigo, sobrescribiendo lo que halla en “nuestro lugar” (ya que el ELF puede ejecutarse de igual modo, y sin problemas). Esta parte ya se me empieza a complicar asi que perdon si no se entiende bien. Luego ponemos en “orden” el punto de inicio del programa, y aumentamos el tamaño del segmento de datos para que podamos cargarnos en memoria (a nosotros y al programa original).
PROGRAM PROGRAM PROGRAM PROGRAM
0000000 0000000 0000000 0000000
0000000 0000000 0000000 0000000
0000000 0000000 #VIRUS# #VIRUS#
Asi quedaría el archivo luego de ser infectado.
Esto seria un ejemplo de un ELF infectado en Linux, claro que esto es solo la teoria, al aplicarlo se complica, y mucho.
Existen muchas mas cosas para hacer en Linux, solo queria mostrar que tambien pueden infectarse archivos al igual que en Windows.
Ya tienen algunas nociones mas algunos que no sabian nada de linux.
Saludos
(C) Mitosis 4 - GEDZAC LABS