Eliminación de huellas tras una intrusión
1. Introducción y objetivos
Esta fase, no contemplada en el ciclo del “hacking ético profesional”, pero sí en “Operaciones Red Team”, es necesaria para conocer más a fondo la metodología MITRE empleada por muchos “black/grey hats”. Además, esto también es de interés para aquellos que deban realizar labores de análisis forense del sistema víctima.
Una vez el atacante haya finalizado su intrusión en el sistema víctima, deberá eliminar su rastro mediante el borrado de los archivos de registro de eventos del sistema, y de otros programas y servicios específicos que hayan sido utilizados para la explotación; dificultando de esta manera su detección y análisis forense.
Cuando realicemos una “Operación Red Team”, el borrado y eliminación de huellas es una fase de suma importancia, ya que de esta manera el “Blue Team” encargado de defender los sistemas informáticos, detectar nuestra intrusión y desenmascararnos, tendrá una mayor dificultad en sus cometidos de detección e investigación.
Evidentemente el objetivo principal de eliminar nuestras huellas de la intrusión, siempre será el que nadie llegue a tener conocimiento jamás de que esa intrusión existió.
2. Entrando en materia
Si hablamos de “logs” del sistema, estaremos hablando de aquellos archivos del sistema en los que se registran todo lo que el usuario hace dentro de la máquina en cuestión.
En cuanto a las pistas o huellas que puedan existir, decir que existen tantos tipos de éstas como tipos de ataques realizados. Cada ataque es distinto al anterior, y por tanto cada esquema de acciones a llevar a cabo en el borrado de huellas será también distinto al anterior. No obstante, vamos a tratar de definir un groso con el que poder trabajar a modo “check-list” para poder tener una disciplina más metódica y organizada.
Lo primero que debemos tener presente es qué metodología de intrusión hemos realizado, qué puertos y servicios hemos vulnerado. En definitiva, qué es lo que hemos realizado y pensar en profundidad cómo pueden (“Blue Teamers”) desenmascararnos tras una investigación de análisis forense.
Extrapolando estas cuestiones al mundo físico, y para que pueda entenderse de una mejor manera la cuestión propuesta, debemos saber a groso modo que para realizar una intrusión en un domicilio, ésta se puede llevar a cabo de varias maneras:
- Se puede tirar la puerta abajo.
- Se puede utilizar una palanca para entrar por fuerza bruta.
- Pueden usarse métodos más sofisticados como son el uso del “bumping” o de las ganzúas.
Para eliminar las huellas tras la intrusión al domicilio, en el primer caso se debería reconstruir la puerta entera. En el segundo caso se debería reparar levemente. Y en el tercer caso únicamente se debería deshacer de las “llaves maestras” o de las ganzúas.
Durante una intrusión se hace uso de gran cantidad de herramientas: troyanos, puertas traseras, sniffers para capturar tráfico de red, servicios del propio sistema víctima, etc.
Gran cantidad de “Red Teamers” se limitan únicamente a eliminar los “logs” de accesos de aquellos servicios del sistema que hayan hecho uso, y de eliminar las herramientas que hayan empleado para realizar la intrusión (“webshells”, “backdoors”, “rootkits”, “exploits”, etc.). Como podremos ver a lo largo del artículo, únicamente con realizar eso no es suficiente para no ser descubierto.
Para realizar estas labores de eliminación, decir que hoy en día contamos con muchas herramientas tipo “zappers”, que automatizan estos procesos de eliminación. Sin embargo, conviene desarrollar nuestras propias herramientas, cogiendo otras como referencia, ya que por normal general aquellas “zappers” que podamos encontrar de código abierto, no son del todo eficientes.
Lógicamente, la correcta eliminación de archivos en el sistema víctima estará sujeta a los privilegios del usuario con el que estemos llevando a cabo nuestras operaciones.
3. Eliminación de huellas en Windows
En máquinas con S.O Windows los distintos “logs” de eventos del sistema los podemos encontrar en el siguiente directorio:
- “%SystemRoot%\System32\Winevt\Logs”
Para llevar a cabo la eliminación de archivos de registros específicos de seguridad en un sistema Windows, vamos a hacer uso de distintos comandos que veremos a continuación.
a) Empleando “Wevtutil”
Vamos a emplear las siguientes herramientas para poder copiar en un archivo el listado de los distintos eventos acontecidos en el sistema, para posteriormente poder buscar la palabra “security”, y localizar de esta manera aquellos eventos relacionados con la seguridad del sistema que tengamos que eliminar.
- C:\>wevtutil el > logs.txt
- C:\> type logs.txt | find /i “security”
Con la opción “gl” se muestra la información de configuración del “log” determinado, lo cual incluye si el “log” está habilitado o no, el límite máximo correspondiente al tamaño del archivo “log”, y la ruta al archivo donde se almacena el archivo de registro.
- C:\> wevtutil gl Security
Mediante la opción “gli” se muestra la información sobre el estado del log especificado.
- C:\> wevtutil gli Security
Una vez hayamos identificado el nombre del log que queremos eliminar, se procede al borrado de la totalidad del archivo de registro de eventos “Security”. Evidentemente se podrá eliminar cualquier archivo de registro de eventos. A continuación lanzamos el comando para la eliminación completa del archivo seleccionado.
- C:\> wevtutil cl Security
A partir de este momento los eventos de seguridad quedan eliminados. Si procedemos a visualizar contenido del archivo log “Security” con el Visor de Eventos de Windows, veremos que se registra únicamente la existencia de un solo evento.
Esta herramienta (wevtutil) presenta diversas opciones, entre las que podemos encontrar aquellas que permiten modificar la configuración de “logs” específicos, archivarlos, exportarlos, entre otras opciones que podemos ver en su contexto de ayuda (wevtutil /?).
b) Empleando “PowerShell”
Esta tarea de eliminación de registros de eventos, también podemos llevarla a cabo mediante comandos por “PowerShell”. Algunos de los comandos más útiles para ello son los siguientes:
- PS C:\>Clear-Eventlog -Log Application, System
- PS C:\>Get-WinEvent -ListLog Application,Setup,Security -Force | % { Wevtutil.exe cl $_.Logname }
Debemos saber que mediante estas acciones de limpieza no se realiza, sin embargo, un borrado seguro del directorio donde residía el archivo. Es por ello que tras un análisis forense podría posiblemente recuperarse (total o parcialmente) el archivo log, y por ende los eventos que éste contenía.
c) Empleando “Metasploit”
Si la intrusión la hemos realizado obteniendo una “Shell meterpreter”, también podemos hacer uso de las propias herramientas de Metasploit para llevar a cabo el borrado de huellas. Para ello deberemos cargar el módulo “incógnito” y posteriormente llamar al comando “clearev”:
- meterpreter> load incognito
- meterpreter> clearev
[*] Wiping 102 records from Application…
[*] Wiping 236 records from System…
[*] Wiping 48 records from Security…
d) Empleando “Clearlogs”
Para finalizar, hacer mención a otra excelente herramienta muy efectiva para eliminar los registros de acceso en entornos Windows. Se trata de “Clearlogs”. Su uso es muy simple, basta con lanzar el comando “clearlogs.exe -sec”. Podemos descargar la herramienta en el siguiente enlace:
https://sourceforge.net/projects/clearlogs/
4. Eliminación de huellas en Unix
En este tipo de sistemas, generalmente cada programa hace uso del demonio “syslogd” para generar sus propios registros de eventos (“logs”).
Un buen método para llevar a cabo la eliminación de estos “logs”, es mediante el empleo de la herramienta “Shred” (comando “shred -zu ‘*.log’ “) . Se trata de una herramienta que destruye y hace prácticamente imposible la recuperación de aquella información almacenada en disco.
Otra herramienta a tener en cuenta para el desarrollo de esta fase, es “secure-delete“. Se trata de una herramienta que realiza múltiples borrados del archivo en cuestión, y que además permite la eliminación de directorios completos. Podemos instalarla mediante el comando “apt-get install secure-delete“, y su lanzamiento por línea de comandos es “srm -r directorio“.
Entre los medios más empleados para la eliminación de huellas en estos sistemas, podemos encontrar:
a) Inhabilitar el sistema de la víctima
Este punto se ejecuta cuando en la intrusión se ha dejado tanto rastro que no queda otro remedio. Dependerá obviamente de los privilegios que se tengan en el sistema víctima. La forma más común consiste en inhabilitar la entrada al sistema (el login), y causar un destrozo del sistema por dentro, de forma que no pueda recuperarse sin antes formatear el sistema.
Se presentan algunos archivos de interés:
/etc/passwd
/etc/shadow
/bin/login
/etc/inetd.conf
b) Eliminar los registros de eventos de Apache
Si se ha realizado un ataque vía Web, como por ejemplo a través del uso de una Webshell, será conveniente eliminar estos archivos de registro. Los “logs” más comunes de “apache” los podemos encontrar en los siguientes directorios:
apache/logs/
etc/httpd/logs/
var/www/logs/
var/log/
usr/local/apache/logs/
var/log/apache/
var/log/apache2/
c) Eliminar el historial de la línea de comandos
Una de las maneras más sencillas de obtener información de un usuario en cuestión, es ver su historial de comandos lanzados en el sistema. Por ello, es necesario eliminar o modificar parcialmente este historial después de realizar nuestras operaciones. Para ello debemos:
- Editar o eliminar el fichero “.bash_history” ó “.sh_history” del directorio del usuario en cuestión (“/home/user/.bash_history“). Este fichero guarda un registro de todos aquellos comandos que han sido ejecutados por el usuario con el que se esté trabajando. Cada usuario tiene su propio “bash history” en su directorio “home”.
- Eliminar el historial pasado y el de la sesión actual por completo mediante el comando: “cat /dev/null > ~/.bash_history && history -c“
Tened en cuenta que esta acción debe realizarse justo antes de finalizar el trabajo de intrusión.
d) Eliminar herramientas empleadas para la intrusión
Debemos tener especial atención en no dejar ninguna herramienta empleada para la explotación del sistema. Es usual el subir exploits y compilarlos en la propia máquina víctima para realizar escalada de privilegios, capturar tráfico de red, entre otras tareas. Si nos dejamos cualquier herramienta de este tipo en el sistema víctima, más pronto que tarde nos delatarán y seremos descubiertos.
e) No dejar puertas traseras en el sistema víctima
Durante un corto período de tiempo puede pasar inadvertido, pero hay que ser precavido porque al tiempo puede ser descubierto, y de ser descubierto se iniciará una investigación que puede acarrear otros descubrimientos de la intrusión a través de un buen análisis forense. Es por ello que deberemos ser precavidos, y dejar las puertas traseras el tiempo justo y prudencial para no ser descubiertos.
f) Eliminar cuentas de usuarios creadas en la máquina víctima
Cuando llevamos a cabo una intrusión en la que necesitamos realizar una escalada de privilegios, a menudo explotamos fallos de seguridad con el lanzamiento de exploits que automáticamente crean nuevos usuarios con privilegios administrativos. No debemos olvidar eliminar estos usuarios antes de finalizar nuestro trabajo.
g) Atención a si hay alguien más trabajando en el sistema
A menudo realizamos intrusiones en sistemas donde hay otros usuarios conectados. Esto lo podremos ver mediante el comando “who”. Debemos prestar especial atención a esto, ya que es posible que algún usuario esté monitorizando la actividad del sistema y nos descubra..
h) Comandos de interés
- “who”: Lista usuarios activos en el sistema.
- “last”: Último inicio de sesión de usuarios.
- “lastb”: Último inicio sesión de usuarios fallido.
- “ps”: Procesos activos.
- “lastcomm” / “history”: Comandos lanzados en el sistema.
- “unset”: Empleamos este comando para detener el registro del historial de los comandos ejecutados desde el terminal. Su lanzamiento: “unset HISTFILE; unset SAVEHIST”.
i) Ficheros peligrosos
- “utmp”: Guarda un registro de eventos de los usuarios que están utilizando el sistema mientras están conectados. Directorios: “/var/adm/utmp” y “/etc/utmp”.
- “wtmp”: Guarda un “log” cada vez que un usuario entra o sale del sistema.
- “lastlog”: Guarda un “log” del momento exacto en que un usuario entró por última vez en el sistema.
- “acct” o “pacct”: Registra todos los comandos ejecutados por cada usuario, pero no registra los argumentos con que dichos comandos fueron ejecutados.
- “.bash_history” y “.sh_history”: ya mencionados anteriormente.
- “touch”: es utilizado para restablecer la fecha y la hora del último acceso a un archivo, entre otras funciones.
En máquinas con S.O Linux los principales “logs” de eventos y de servicios del sistema los podemos encontrar en el siguiente directorio:
- “/var/log”
j) Programas y herramientas de interés
- “TCP-Wrapper“
Se trata de una herramienta similar al “Syslog”, pero vinculada a servicios exclusivos tales como FTP, telnet, mail, etc. Además de realizar el registro de toda la actividad referente a la autenticación de estos servicios, es capaz de filtrarlos, restringiendo los accesos de manera que sólo ciertos usuarios puedan conectarse.
Para eliminar las huellas que generemos en este servicio deberemos seguir el mismo proceso que con el “Syslog”, es decir, deberemos encontrar su fichero de configuración y modificar sus ficheros vinculados.
- “Wzap“
“Zapper”, que se encarga de borrar a un usuario específico dentro del registro “wtmp”.
- “Zap2“
Se trata de un “Zapper” que elimina el “wtmp”, “utmp” y el “lastlog”. Deberemos tener en cuenta que cuando copiemos el código fuente, deberemos conocer el sistema de la víctima para cambiar las rutas donde se encuentren los “logs” a eliminar.
Ejemplo de la línea de código a modificar:
#define WTMP_NAME “/usr/adm/wtmp”
#define UTMP_NAME “/etc/utmp”
#define LASTLOG_NAME “/usr/adm/lastlog”
- “Metasploit”
Al igual que en un sistema Windows, si la intrusión la hemos realizado mediante una “Shell meterpreter”, podemos realizar el borrado de huellas mediante la carga del módulo “incógnito” y posterior ejecución del comando “clearev”.
k) Sistemas Android
En referencia a los sistemas Android, decir que generan muchos “logs” de sistema y de otras aplicaciones que corren en el dispositivo. Estos archivos no podrán eliminarse a no ser que se sea administrador del sistema. Los “logs” se encuentran en la ruta “/data/log” del dispositivo local.
Una vez hayamos finalizado con la eliminación de huellas generadas durante nuestra intrusión en el sistema víctima, podremos dar por concluida nuestra misión.