User Tools

Site Tools


registrar_comandos_con_snoopy_logger

Compilar / Instalar / Configurar Snoopy Logger (+ Bypassing)

Snoopy es una herramienta que permite registrar los comandos introducidos en la terminal (incluidos accesos remotos) en ficheros log, algo a destacar es que no registra shell builtins. Debido a que es fácil evitar su monitoración, se recomienda por tanto para entornos personales o de confianza, al igual que pasa con el otro método basado en PROMPT_COMMAND para Bash.

Snoopy intercepta las ejecuciones de comandos anteponiendo su biblioteca al resto de librerías del sistema, anulando así en una primera instancia las llamadas a las funciones execv() y execve() originales de libc. Esto significa que cada vez que un programa enlazado dinámicamente se ejecuta, se realizan llamadas a execv() y execve() de la biblioteca de Snoopy, este las registra y las pasa de nuevo a las funciones originales de libc para su normal ejecución. Por tanto, son también registrados los comandos que se encuentran en scripts, tareas programadas del sistema (at, crontab,…), alias, etc.

Con Snoopy logger: comando → Snoopy → libc
Sin Snoopy logger: comando → libc

Si se quiere tener un método para monitorizar todo lo que pasa en las terminales, se puede usar PAM, entre otras aplicaciones.

Compilar instalar Snoopy

En sistemas Fedora, RHL y CentOS 6.X.

yum -y groupinstall "Development Tools"
tar -zxvf snoopy-1.9.0.tar.gz
cd snoopy-1.9.0
./configure 
make
make install
 
install -m 755 -d /usr/local/lib
install -m 755 snoopy.so /usr/local/lib/snoopy.so
 
Snoopy shared library installed in /usr/local/lib.
Run 'make enable' to actually enable snoopy logging.

Leer soporte para filtros en Snoopy: https://github.com/a2o/snoopy/blob/master/README.filtering

Habilitar Snoopy en el sistema

Para una instancia en particular.

export LD_PRELOAD=/usr/local/lib/snoopy.so    # default path
cat /etc/passwd
dmesg
...
unset LD_PRELOAD

Para todo el sistema 24/7 (i386 / X86_64) (agrega una linea en /etc/ld.so.preload)

AVISO: No indicado para sistemas multilibrería (multilib) !

# make enable
./enable.sh /usr/local/lib
Snoopy is now enabled in /etc/ld.so.preload.
Check your syslog files for output.

Para todo el sistema 24/7 (multilib) (agrega una linea en /etc/ld.so.preload)

/usr/local/$LIB/snoopy.so

Ficheros de log

Por defecto Snoopy logger registra los comandos del usuario en alguno de estos ficheros.

  • /var/log/auth*
  • /var/log/messages
  • /var/log/secure

Si se quiere (recomendable) tener los registros generados por Snoopy en un fichero separado, en rsyslog se debería hacer lo siguiente.

Crear el fichero /etc/rsyslog.d/10-snoopy.conf

:programname, isequal, "snoopy" /var/log/snoopy.log
& ~
service rsyslog restart

El fichero de logs para Snoopy sería /var/log/snoopy.log

Ejemplo de contenido del fichero log de Snoopy logger

Mar 27 16:51:10 pollux snoopy[7729]: [uid:501 sid:7712 tty:/dev/pts/2 cwd:/home/stallman filename:/bin/ls]: ls --color=auto -lt
Mar 27 16:51:27 pollux snoopy[7730]: [uid:0 sid:1948 tty:/dev/pts/1 cwd:/root/snoopy-1.9.0 filename:/usr/bin/tail]: tail -f /var/log/snoopy.log
Mar 27 16:52:19 pollux snoopy[7732]: [uid:501 sid:7712 tty:/dev/pts/2 cwd:/home/stallman filename:/bin/dmesg]: dmesg

Deshabilitar Snoopy

Eliminar del fichero /etc/ld.so.preload la linea agregada anteriormente. Si se ha asignado valor a alguna de las variables LD_PRELOAD, LD_PRELOAD_32 o/y LD_PRELOAD_64 se deben liberar.

unset LD_PRELOAD
unset LD_PRELOAD_32
unset LD_PRELOAD_64

Detectar Snoopy en un sistema

ldd /bin/dmesg
     linux-vdso.so.1 =>  (0x00007fff78b2e000)
     /usr/local/lib/snoopy.so (0x00007fae84ce6000)
     libc.so.6 => /lib64/libc.so.6 (0x00007fae8494b000)
     ...

Saltarse / Bypassear Snoopy looger sin tener privilegios

export LD_PRELOAD=/lib64/libc.so.6
bash

Mejorar la seguridad de Snoopy

Configurar la variable LD_PRELOAD de solo lectura.

echo "readonly LD_PRELOAD"  >> /etc/profile
$ export LD_PRELOAD=/lib64/libc.so.6
-bash: LD_PRELOAD: readonly variable

Otras alternativas para registrar actividad de la terminal (Shell)

registrar_comandos_con_snoopy_logger.txt · Last modified: 2020/12/25 22:57 by 127.0.0.1