Monitor de acceso a archivos

Monitor de acceso a archivos

Si un malware no root intenta descifrar la contraseña de los usuarios, ¿a qué archivos de contraseña o incluso a qué parte de la memoria debe acceder? ¿Cómo puedo monitorear y saber si el malware accede a los archivos de contraseñas?

Respuesta1

La mayoría de las distribuciones almacenan las contraseñas de inicio de sesión de los usuarios /etc/shadow, este archivo es propiedad de rooty tiene 0600permisos establecidos, es decir, solo rootpuede leer o escribir en este archivo.

Dicho esto, algunas distribuciones proporcionan 'llaveros' para que los utilicen los usuarios/programas. Los llaveros son esencialmente una base de datos o un archivo de almacenamiento secreto; por ejemplo, KDE proporciona KWallet y programas como Chromium usan KWallet para almacenar contraseñas, etc.

Estos conjuntos de claves generalmente se administran por usuario y también se almacenan con permisos 0600, por lo que solo el usuario propietario del conjunto de claves puede leerlo. Entonces, si le preocupa el malware que no es root, siempre y cuando no se esté ejecutando como su usuario, está bastante seguro en este sentido.

Desafortunadamente, no puedo darle una lista exhaustiva de qué archivos monitorear, porque cada distribución usa su propia solución de administración secreta (como GNOME3 que usa Seahorse en lugar de KWallet). Pero generalmente controlaría los cambios en:

~/.ssh/authorized keys # List of keys accepted during SSH logins
~/.profile             # File sourced by your login shell
~/.bash_profile        # File sourced by your login shell
~/.bashrc              # File sourced by your login shell

En cuanto al seguimiento, quizás la forma más sencilla de configurarlo sea utilizando el marco de auditoría a través de auditctl.

Por ejemplo, esto monitoreará todos los accesos al archivo de base de datos KWallet de Bob: (regla temporal, se borra al reiniciar a menos que se agregue a /etc/audit/audit.rules)

sudo auditctl -w /home/bob/.local/share/kwalletd/kdewallet.kwl -p rwxa

Y para revisar el acceso:

sudo less /var/log/audit/audit.log

AquíHay documentación que puede ayudarle a crear sus propias reglas.

Respuesta2

Si un software no root intenta cambiar de usuario, puede inspeccionarlo con el lastbcomando:

$ sudo lastb -a | more
user     pts/2        Mon Aug 10 08:17 - 08:17  (00:00)
root     ssh:notty    Mon Aug 10 08:17 - 08:17  (00:00)     46.148.201.206
root     ssh:notty    Mon Aug 10 08:17 - 08:17  (00:00)     161.35.32.43
root     ssh:notty    Mon Aug 10 08:16 - 08:16  (00:00)     13.68.137.194
root     ssh:notty    Mon Aug 10 08:16 - 08:16  (00:00)     115.196.179.138

En este caso, inicié sesión usercon una contraseña fallida usando su. Puedes ver eso en el registro. También puede ver que las IP aleatorias intentan constantemente adivinar mi contraseña de root a través de ssh.

Si desea configurar una ruta inotify o systemd para monitorear el acceso a archivos, el archivo a monitorear es /var/log/btmp. lastbutiliza este archivo.

Si desea comprobar si hay inicios de sesión exitosos, utilice last. Esto monitorea /var/log/wtmp:

$ last -a
usera    pts/5        Fri Jul 31 03:00 - 03:17  (00:16)     54.36.10.77
usera    pts/5        Thu Jul 30 21:36 - 21:37  (00:01)     54.36.10.77
usera    pts/5        Wed Jul 29 08:54 - 08:54  (00:00)     127.0.0.1
userb    tty7         Tue Jul 21 11:29   still logged in    :0
userb    tty7         Tue Jul 21 10:59 - 11:29  (00:30)     :0
userb    tty7         Tue Jul 21 07:27 - 10:58  (03:31)     :0
reboot   system boot  Tue Jul 21 09:27   still running      5.7.0-1-amd64
...

Respuesta3

En Linux, puede utilizar el marco inotify y las herramientas de línea de comandos asociadas para observar el acceso a archivos realizado por otro proceso.

Aquí están las páginas de manual como referencia.

Si desea un comportamiento más elaborado, existen enlaces para este marco para la mayoría de los lenguajes de secuencias de comandos (python, lua, etc.)

información relacionada