Cómo ocultar rastros en Bash
Bash guarda una lista de los comandos escritos en su memoria interna, específicamente en $HISTFILE (~/.bash_history).
Aquí se verán algunas técnicas que los atacantes usan para evitar dejar rastros en el historial.
1. Empezar con un espacio
Esto puede no estar permitido por default para todas las distribuciones. Para ver si es posible, se tiene que checar $HISTCONTROL.
En el caso de que aparezca «ignoreboth» o «ignoredups:ignorespace», este truco te sera útil.
Básicamente se trata de poner un espacio antes de escribir tus comandos y esto evitará que se guarde en el historial.
Como pueden ver en la imagen de arriba, el comando ‘echo «con espacio» ‘ no aparece en el historial.
2. Modificar HISTFILE
Aquí simplemente debes establecer los valores de HISTFILE a /dev/null. Puede ser con alguno de los siguientes comandos.
3. Usar unset
Se puede usar unset para remover la variable HISTFILE de la sesión en uso.
Recuerden que sólo es válido para la sesión (terminal) en uso. Esto permite que no haya lugar donde guardar los comandos escritos.
4. Modificar HISTSIZE & HISTFILESIZE
HISTSIZE indica el número de lineas o comandos que pueden ser almacenados en la memoria mientras la sesión esté activa. Por default son 1000, por lo que para remover los comandos basta establecer esta variable a un valor 0 con alguno de los siguientes comandos.
Por otro lado HISTFILESIZE es el número de líneas o comandos que están permitidos en el historial al momento de iniciar una sesión, y se almacenan en el historial al finalizarla para usar en futuras ocasiones. Por default son 2000, por lo que para remover estos comandos basta establecer, al igual que HISTSIZE, la variable con valor 0. Esto se puede hacer con alguno de los siguientes comandos.
HISTFILESIZE=0 o export HISTFILESIZE=0
5. Comandos set y shopt
El primer comando permite cambiar los valores de las opciones de la shell y establece parámetros posicionales. Usando set podemos evitar grabar nuevos comandos en el historial.
Se usara el parámetro «o» el cual permite activar o desactivar el archivo deseado.
El segundo comando permite cambiar el comportamiento opcional de shell. Los parámetros «-u» deshabilita cada nombre de opt., mientras que «-o» restringe los valores de optname, por último «-s» habilita cada nombre de opt.
6. Limpiar el historial
Es la opción mas sencilla de todas, aunque esta opción, al igual que varias pasadas, sólo sirve para la terminal en uso. Se tiene que usar dos sencillos parámetros «-c» para limpiar y «-w» para hacer válidos nuestros cambios.
7. «Destrozar» el historial
Para esto se usará el comando shred el cual permite sobrescribir un archivo para ocultar su contenido y, opcionalmente, eliminarlo. De una manera sencilla, shred permite que el archivo no sea capaz de ser leído.
El hecho de ver un archivo así puede considerarse como evidencia de actividad maliciosa. Incluso podemos eliminar eso combinando el comando shred con las banderas -zu:
«-u» modificar y eliminar el archivo después de sobrescribir.
«-z» una sobrescritura final con ceros para ocultar la destrucción.
8. Matar el proceso de la terminal
Usando el comando kill podemos salir de la sesión sin guardar comandos en la memoria en el disco.
9. Usar el comando less
Se puede ocultar un comando para que no se guarde, al usar la capacidad para ejecutar comandos al anteponerlos con el símbolo «!».
Espero que esta entrada les sea tan útil como a mí me ha sido.