howtos/Linux/borrar nuestras huellas de ...

167 lines
15 KiB
Plaintext

Borrar nuestras huellas
Este paso es importante, ya que de nada nos habrá servido habernos introducido en el sistema y haber conseguido el nivel de root si al día siguiente nos han cortado el acceso debido a que hemos dejado huellas por todas partes.
El sistema operativo Unix guarda varios registros (logs) de las conexiones de los usuarios al sistema. Existen varios ficheros y comandos que ayudan al administrador a conocer todos los detalles acerca de las conexiones de los usuarios. Aparte de estos ficheros y comandos, existen diversas facilidades y aplicaciones que realizan un registro continuado y exhaustivo acerca de las actividades del usuario dentro del sistema.
Ficheros:
(Cuando pongo dos directorios significa que el fichero puede estar en cualquiera de esos dos directorios).
utmp
Guarda un registro (log) de los usuarios que están utilizando el sistema mientras están conectados a él.
Directorios: /Var/Adm./utmp /etc/utmp
wtmp
Guarda un log cada vez que un usuario se introduce en el sistema o sale del sistema.
Directorios: /Var/Adm./wtmp /etc/wtmp
lastlog
Guarda un log del momento exacto en que un usuario entró por última vez.
Directorio: /Var/Adm./lastlog
acct
Registra todos los comandos ejecutados por cada usuario (aunque no registra los argumentos con que dichos comandos fueron ejecutados).
Directorio: /Var/adm/acct
En algunos sistemas el fichero acct se puede llamar pacct
Comandos:
who
Permite saber quién está conectado al sistema en el momento en que ejecutamos el comando.
finger
Lo mismo que el comando who, con el añadido de que se puede aplicar a otras máquinas. Es decir, podemos saber qué usuarios están conectados a una determinada máquina en el momento en que ejecutamos el comando.
users
Igual que el who
rusers
Igual que finger, pero la máquina remota debe utilizar el sistema operativo Unix.
Los comandos who, finger, users y rusers toman la información que sacan en pantalla del fichero utmp.
last
Permite saber cuando fue la última vez que se conectó un usuario.
El comando last toma la información que saca en pantalla del fichero wtmp.
ps
Permite saber qué procesos están siendo ejecutados por el sistema y que usuarios los ejecutan.
El comando ps ofrece una información mucho más completa de quién está utilizando el sistema puesto que un usuario que no aparezca en los ficheros utmp o wtmp puede tener procesos ejecutándose, por lo que el comando ps ofrecerá la información de quién está ejecutando dichos procesos. En contrapartida, la información que ofrece el comando ps es más complicada de interpretar que la información ofrecida por el resto de comandos.
accton
Activa un proceso llamado accounting, que es el que proporciona información al fichero acct.
lastcomm
Permite saber qué comandos han ejecutado los usuarios.
acctcom
Igual que lastcomm pero exclusivamente para Unix del tipo SYSTEM V.
Los comandos lastcomm y acctcom toman la información que sacan por pantalla del fichero acct (pacct en algunos sistemas).
Por lo tanto, si queremos borrar nuestras huellas del sistema, bastará con borrar cualquier log relativo a nuestro usuario de los ficheros utmp, wtmp y acct. Esto se puede hacer de dos formas:
Ficheros utmp y wtmp:
1 - No borramos los ficheros pero los dejamos con cero bytes. Sólo se utiliza como último recurso por suscitar muchas sospechas por parte de los administradores. Hay hackers que opinan que esto es incluso peor que no borrar los logs.
2 - Los ficheros utmp y wtmp no son ficheros de texto, es decir, no se pueden editar con un editor de textos. Sin embargo, existen programas llamados zappers (debido a que el programa más famoso de este tipo se llama zap) que pueden borrar los datos relativos a un usuario en particular de estos ficheros dejando el resto de los datos relativo a los demás usuarios intacto.
Fichero acct:
Cuando el accounting está activado (es decir, cuando el sistema recoge información acerca de los comandos ejecutados en el fichero acct) es bastante complicado borrar nuestras huellas, de hecho no se pueden borrar del todo, aunque sí se pueden reducir a una mínima información de nuestra presencia en el sistema.
1 - Lo primero que hacemos nada más entrar en el sistema es copiar el fichero acct a otro fichero y lo ultimo que hacemos antes de abandonar el sistema es copiar dicho fichero de nuevo al acct, de modo que los comandos que hemos ejecutado durante la sesión no aparecen en el fichero acct.
Problema: Nuestra entrada en el sistema queda registrada, así como las dos copias.
2 - Dejamos el fichero acct a cero bytes. Como antes, esto es bastante sospechoso para un administrador, además, algunos sistemas reaccionan mal y paran el proceso de accounting, para no levantar sospechas habría que reactivarlo con el comando accton.
Problema: Bastante sospechoso. El propio comando accton quedaría registrado como ejecutado por nuestro usuario.
3 - Hacerse un editor para el fichero acct que borrara los datos correspondientes a nuestro usuario y dejara intactos los datos relativos al resto de los usuarios. Existen unos pocos programas que hacen esto.
Problema: La ejecución del programa editor que borra nuestras huellas quedaría registrado como ejecutado por nuestro usuario.
Afortunadamente, no hay muchos sistemas que tengan activado el accounting debido a la cantidad de capacidad que es necesaria para guardar los comandos ejecutados por cada usuario.
Aparte de los ficheros utmp, wtmp, acct y lastlog, hay que tener en cuenta otras facilidades y aplicaciones que posee el sistema operativo Unix que permiten al administrador vigilar ciertos aspectos críticos relativos a la seguridad y al mantenimiento del sistema.
1 - Syslog
Syslog es una aplicación que viene con el sistema operativo Unix. El sistema operativo Unix se puede configurar de tal forma que determinados programas, procesos o aplicaciones generen mensajes que son enviados a determinados ficheros donde quedan registrados dichos mensajes. Estos mensajes son generados cuando se dan unas determinadas condiciones, ya sean condiciones relativas a seguridad, mantenimiento o simplemente de tipo puramente informativo.
Para conseguir esto hay que configurar varias cosas:
A - Decidir qué programas, procesos y aplicaciones pueden generar mensajes. (Pongo los principales)
kern: mensajes relativos al kernel.
user: mensajes relativos a procesos ejecutados por usuarios normales.
mail: mensajes relativos al sistema de correo.
lpr: mensajes relativos a impresoras.
auth: mensajes relativos a programas y procesos de autentificación (aquellos en los que estén involucrados nombres de usuarios y passwords, por ejemplo login, su, getty, etc).
daemon: mensajes relativos a otros demonios del sistema.
B - Decidir qué tipos de mensajes pueden generar cada uno de esos programas, procesos o aplicaciones.
emerg: emergencias graves.
alert: problemas que deben ser solucionados con urgencia.
crit: errores críticos.
err: errores ordinarios.
warning: avisos.
notice: cuando se da una condición que no constituye un error pero a la que se le debe dar una cierta atención.
info: mensajes informativos.
C - Decidir a qué ficheros van a parar dichos mensajes dependiendo del tipo al que pertenezca el mensaje correspondiente.
Syslog cumple su función mediante el syslogd (syslog daemon o en castellano el demonio syslog).
Nota: un demonio (o daemon) es un proceso que no tiene propietario (es decir, no es ejecutado por ningún usuario en particular) y que se está ejecutando permanentemente.
El syslogd lee su configuración del fichero /etc/syslog.conf Dicho fichero contiene la configuración relativa a qué eventos del sistema son registrados y en qué ficheros son registrados. Los ficheros a los cuales se mandan los registros (logs) pueden estar situados en la misma máquina en la que estamos trabajando o en otra máquina de la red.
Cómo borrar las huellas relativas al syslog:
Bien, nuestras andanzas por el sistema cuando hemos accedido a él y cuando nos hemos convertido en root, pueden generar diversos mensajes registrados por el syslogd y guardados en los ficheros indicados en el /etc/syslog.conf
A diferencia de los ficheros utmp, wtmp, acct y lastlog, los ficheros en los que se guardan los registros del syslog sí se pueden editar con un editor de textos.
Para poder borrar estas huellas necesitamos tener privilegios de root, naturalmente. Bastará con examinar el fichero /etc/syslog.conf para saber los ficheros que guardan los registros del syslog. Después miraremos cada uno de esos ficheros comprobando que no hay ningún mensaje relativo a nuestra intrusión en el sistema (los mensajes del estilo "login: Root LOGIN REFUSED on ttya" a ciertas horas de la noche son bastante sospechosos :-) ). En caso de que lo haya, lo borramos y cambiamos la fecha del fichero con el comando touch de forma que coincida la fecha del último mensaje (después de haber borrado nuestras huellas) con la fecha del fichero. Si no lo hacemos así, algún administrador demasiado suspicaz puede comprobar que las fechas no coinciden y deducir que alguien ha modificado el fichero (esta es una precaución extrema pero la recomiendo por experiencia). Si es necesario, y sólo si es necesario, habría que cambiar la fecha de los directorios en los que estén incluidos los ficheros que guardan los logs.
Si en el fichero /etc/syslog.conf hay mensajes que se destinan a /dev/console eso significa que los mensajes (ya sean de error, alerta o emergencia) salen directamente en la pantalla del root (o sea, en la consola). En este caso no se puede hacer nada (que yo sepa), pero mensajes de este tipo suelen estar generados por alertas bastante graves como por ejemplo intentar acceder con la cuenta de root directamente o utilizar el comando su para intentar convertirse en root, etc. Es decir, cuanto más sigilosos seamos a la hora de hacernos root y menos ruido armemos más posibilidades tendremos de no aparecer en este tipo de logs.
2 - TCP-Wrapper
Se trata de una aplicación que proporciona una serie de mecanismos para el registro (logging) y filtro (filtering) de aquellos servicios invocados o llamados a través del inetd (internet daemon). Con esta herramienta el administrador posee un control absoluto de las conexiones hacia y desde su máquina.
Puede, entre otras muchas cosas, filtrar un servicio de internet como por ejemplo el telnet, ftp, etc de forma que nadie pueda conectarse al sistema desde otra máquina o puede especificar una lista de máquinas que sí pueden conectarse (y las demás no podrán). Además, el administrador es informado en todo momento y con todo lujo de detalles de las conexiones que se han hecho desde su máquina y hacia su máquina con cualquiera de los diferentes servicios de internet (telnet, ftp, finger, etc...)
Como en el syslog, para borrar nuestras huellas del tcp-wrapper, tendremos que buscar posibles huellas mirando el archivo de configuración (alojado normalmente en el directorio /etc), borrar dichas huellas y cambiar las fechas de los ficheros correspondientes.
Bien, hasta aquí un resumen sobre cómo borrar las huellas. Como veréis me he extendido un poco más porque me parece importante que la gente adquiera conciencia de que tan importante o más que controlar el sistema (convertirse en root) es saber ocultarse en él (aunque es una opinión personal).
Puede parecer bastante pesado el borrar todas las posibles huellas que hayamos dejado, pero en algunas ocasiones, una vez que hayamos visto los ficheros de configuración es posible preparar un shell script (el equivalente a los ficheros batch en MS-DOS, aunque la programación en shell es infinitamente más potente :-) ) que haga todo el trabajo por nosotros en cuestión de borrar las huellas. Dicho script lo podemos dejar bien camuflado en el sistema para que la próxima vez que entremos lo podamos ejecutar (utilizando como parámetros el usuario con el que hayamos entrado, el terminal por el que hayamos entrado, la hora a la que hayamos entrado, etc..) ahorrándonos todo el trabajo pesado.
Para terminar con lo de borrar las huellas, sólo advertir que aunque seamos perfectamente invisibles en el sistema, cualquier usuario que esté conectado al mismo tiempo que nosotros podría detectarnos viendo el terminal por el que hemos entrado (el fichero /dev/ correspondiente a nuestro terminal tendría como propietario (owner) al usuario con el que hemos entrado en el sistema, y la fecha del fichero /dev/ correspondiente al terminal también nos delataría). Para evitar esto tendríamos que cambiar de owner el fichero correspondiente al terminal (teniendo privilegios de root naturalmente) al owner que tengan los otros terminales a los cuales no hay nadie conectado (es decir, al owner de los terminales por defecto que normalmente es el root).
De todas formas, esto último, junto con lo de cambiar de fecha ciertos ficheros de logs, son medidas quizá extremas, pero vuelvo a insistir que son muy recomendables.
Por último, la cuestión de ocultar o camuflar procesos mientras los estamos ejecutando es otra cuestión que se tratará en otro mensaje si tenéis la paciencia de seguir. :-)
Ya hemos visto de forma resumida y sin detallar algunas técnicas sobre cómo conseguir acceso, conseguir privilegios y borrar nuestras huellas. Vamos a ver el último paso, cómo conseguir acceso a otros ordenadores una vez controlado el host que hayamos hackeado (es decir, después de asegurarnos que hemos borrado absolutamente todas nuestras huellas y de implantar algún sushi u otro método análogo para conseguir privilegios de root).
Una vez controlado el host que teníamos como objetivo, podemos hacer todo lo que queramos en el sistema, aunque hay que tener en cuenta que nuestras acciones pueden ser registradas por el syslog, tcp-wrapper u otra utilidad que genere logs, por lo que cuando vayamos a irnos del sistema siempre tendremos que comprobar antes que no hemos dejado registros (logs).
Es en este punto donde adquiere importancia la "filosofía" del hacker. La diferencia entre un hacker y un cracker (no me estoy refiriendo a alguien que rompe las protecciones de software), consiste en que un cracker accede al sistema para dañarlo o corromperlo y un hacker accede al sistema simplemente para conseguir información o por pura curiosidad, pero nunca corromperá ni borrará ningún fichero del sistema, sigue el lema (aunque tampoco de forma radical, es decir, sin tomárselo al pie de la letra) de "se ve pero no se toca". A esto último hay que hacer una excepción , naturalmente. Los únicos ficheros que el hacker modificará o borrará serán los ficheros relativos a los logs que haya podido dejar en el sistema. Por supuesto que esto es una situación ideal y no realista, en la práctica un hacker puede que realice otras acciones en el sistema que puedan modificar ficheros ya existentes, pero siempre procurará que los cambios sean mínimos.