Hola debian,

Esta idea me ha parecido muy interesante y se podrian a partir de esta
base hacer numerosas cosas mas, para administradores, yo como usuario
casero no me veo en la necesidad (jeje ahora no me digais que existe
un soft que ya haga esto eh??, jeje, si lo hay perdonad...):
(de la lista hackindex)

___________________________


    El software es bastante sencillo, y lo puede realizar cualquiera
que sepa C en Linux.

    Su misi�n consiste en intentar establecer una �ltima l�nea de
defensa cuando todos los dem�s m�todos han fallado.


  Funcionamiento:

    Tenemos el siguiente escenario, un servidor basado en
Linux/BSD/Unix, que est� ejecutando uno o varios servidores
vulnerables, wuftpd, sendmail, etc.

    Un atacante, encuentra en bug, ejecuta el xploit, por ejemplo un
buffer overflow, y ejecuta ...  

  * Por ejemplo bash, u otro shell, sh, ash, csh, ksh, etc. 

  * Alg�n interprete que pueda estar instalado, como perl.

  * El cliente de ftp, para conectarse a su m�quina e instalar un
troyano o rootkit...

  * etc.

   El software que propongo, al que de ahora en adelante voy a llamar
LLD (Last Line Defense, a falta de otro nombre) tiene como
misi�n sustituir a estos programas, bueno, al menos s�lo en el nombre
...

   Por ejemplo, renombramos a /etc/bash como /etc/qwert

   Y renombramos al programa lld como /etc/bash y su misi�n
principal, consistir� en ejecutar /etc/qwert

   Hasta aqu� no hay ninguna seguridad adiccional, ...

   La idea consiste, en analizar dentro de lld el descriptor de
fichero de la entrada estandar para averiguar si es un socket o 
si es un dispositivo, /dev/console, /dev/pty01, etc.

    Si se trata de un dispositivo, la consola o un terminal 
tonto conectado a un puerto serie, simplemente ejecuta /etc/qwert 
de forma transparente, pasandole cualquier par�metro que pueda 
tener.

    Pero, si se trata de un socket, simplemente, hacemos un 

    close(0);
    close(1);
    close(2);

   Pues en este caso, seguro que es una conexi�n que procede desde 
 el exterior.

    Ahora bi�n, si queremos hacer eso con 10 o 20 programas de l�neas
de comando, �recompilamos 10 o 20 veces lld?

   No, por que lo primero que se puede hacer dentro de lld, es
analizar el argumento argv[0], para saber que nombre tiene 
puesto, y lee en un fichero de configuraci�n, que programa 
tiene que ejecutar.

    Para evitar usar espacio innecesario en el disco duro, en
realidad lld no se renombrar�a, s�lo se hace enlaces duros. (ln)

   Como veis la idea es simple y f�cil de implementar, probablemente,
alguien ya la tenga desarrollada, simplemente la 
dejo aqui para quien se aburra.



    Como posibles mejoras adiccionales, se puede extraer del
decriptor de fichero, en el caso de que se trate de un socket, 
la direcci�n IP de origen, y anotarla en un fichero de trazas, 
tambi�n se puede anotar el PID y nombre del proceso padre que 
ha ejecutado lld.

    Y para nota, la posibilidad de permitir ejecuciones desde la 
red, en funci�n de la IP o del proceso padre, (no es lo mismo que
bash tenga como proceso padre telnetd que httpd).



        Lokutus, asimilando la red.
______________________________________________________


  

Saludos y ta luego,
 Ostots                          mailto:[EMAIL PROTECTED]


Responder a