===== 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 [[https://www.gnu.org/software/bash/manual/html_node/Bash-Builtins.html|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 [[registrar_historial_de_bash_como_logs|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 [[registrar_actividad_de_la_consola_keylogger|PAM]], entre otras [[registrar_comandos_con_snoopy_logger#otras_alternativas_para_registrar_actividad_de_la_terminal_shell|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|Snoopy]]\\ [[registrar_historial_de_bash_como_logs|PROMPT_COMMAND]] (Bash)\\ [[registrar_actividad_de_la_consola_keylogger|PAM]] ---- [[http://sourceforge.net/projects/rootsh/|rootsh]]\\ [[http://sourceforge.net/projects/snoop/|Snoop]]\\ [[http://sniffy.sourceforge.net/|sniffy]]\\ [[http://ttyrpld.sourceforge.net/|ttyrpld]]\\ [[http://freecode.com/projects/ttysnoop|ttysnoop]]