Cyberdefenders Exfiltrated Walkthrough - Solution


Escenario

El EDR de la empresa alertó sobre posibles intentos de exfiltración que se originaron en una máquina de desarrollo RedHat Linux. Un compañero analista de SOC capturó una imagen de disco para la máquina sospechosa y la envió para que la analice e identifique las huellas del atacante.


Preguntas

¿Cuál es la versión de RHEL instalada en la máquina?

La versión del RHEL instalada es 8.4. La información se obtuvo del archivo /etc/rehl_release. La herramienta empleada para obtener la información es FTK Imager.

¿Cuántas usuarios tienen un shell de inicio de sesión?
El número de usuarios que tienen un shell de inicio de sesión es: 6. La información se obtuvo del archivo passwd. Con la herramienta FTK Imager extraimos el archivo para luego con la herramienta cat y grep de Linux filtramo la salida por "/bin/bash".


 
¿Cuántos usuarios pueden ejecutar el comando sudo en el sistema?
El número de usuarios que pueden ejecutar el comando sudo es: 2. La información se obtuvo del archivo sudoers y el archivo passwd. Con la herramienta FTK Imager extraemos el archivo sudoers y con la herramienta cat de Lunux buscamos la línea que tiene el siguiente comentario "## Allows people in group wheel to run all commands".

Como se observa en la imagen todos los usuarios que pertenezcan al grupo wheel pueden ejecutar todos los comando. Ahora toca analizar el archivo /etc/group, para analizar lo extraemos con la herramienta FTK Imager y con la herramienta cat y grep de Linux filtramos el archivo group como se muestra en la imagen.

En la imagen se muestra dos usuarios cyberdefenders y rachel con permiso de ejecutar todos los comandos del sistema.

¿Cuál es la contraseña del usuario 'rossatron'?
La contraseña del usuario rossantron es rachelgreen. Lo primer que debemos hacer es extraer del archivo passwd los datos del usuario completos del usuario rossatron y copiarlos en un archivo .txt, luego con la herramienta Jhon The Ripper crakear la contraseña. Se sugiere en este desafío utilizar la wordlist rockyou. 


Ahora con la herramienta Jhon The Ripper crackeamos la contraseña. 
Como se observa en la imagen la contraseña es rachelgreen.

¿Cuál es la dirección IP de la víctima?
La dirección IP de la víctima es: 192.168.196.129. La información se obtuvo de los archivos /etc/network-script/ifcfg-ens160 y /etc/var/log/messages.

Breve explicación
En REHL utiliza NetworkManager para gestionar  y configurar las conexiones de red para procesar los archivos ifcfg en el directorio /etc/network-script/. A medida que el sistema arranca, utiliza estos archivos para determinar qué interfaces mostrar y como configurarlos.

El directorio /etc/var/log/messages en este archivo se guardan notificaciones generales del sistema tales como, mail, kern, auth, cron, daemon, etc.

Volviendo a nuestra pregunta. En el directorio /etc/network-script/ se encuentra un archivo llamado ifcfg-ens160 donde se encuentran configurado la interfaz de red de la máquina.


Como se muestra en la imagen se proporciona el nombre de la interfaz de red de la máquina. Con esta información analizamos el directorio /etc/var/log/messages.

En la imagen se observa la frase "Registering new address record for..." lo que significa que se registro la dirección IP de la máquina de la víctima.

¿Qué servicio utilizó el atacante para obtener acceso al sistema?
El servicio que se utilizó para obtener acceso al sistema es ssh. La información se obtuvo del archivo secure ubicado en el directorio /var/log/secure. Con la herramienta cat y grep analizamos filtramos el archivo por la frase "Failed"


 

Como se muestran en las imágenes hay 161 intentos de autenticación al servicio ssh. Por lo tanto, estamos frente a un ataque de fuerza bruta al servicio ssh.  

¿Cuál es la dirección IP del atacante?
La dirección IP del atacante es 192.168.196.128. La información se obtuvo la pregunta anterior.


¿Qué ataque de autenticación usó el atacante para obtener acceso al sistema?
La técnica de ataque que utilizo el atacante es la Fuerza Bruta (Brute-Force). La conclusión aquí es obvia en el archivo /var/log/secure hay múltiples inicio de sesión fallidos.

¿A cuántos usuarios el atacante pudo forzar su contraseña por fuerza bruta?
El número de usuarios que el atacante pudo forzar su contraseña por fuera bruta son 2 usuario. La información se obtuvo de la siguiente manera:

Hay que deducir durante cuanto tiempo duro el proceso de ataque de fuerza bruta. Para determinar el tiempo debemos analizar el archivo /var/log/secure.

Como se puede observar en la imagen el ataque de fuerza bruta se ejecuto durante las 14:02:04 y 14:05:54 y posteriormente se produce un salto aproximadamente de 32 minutos de una conexión de password fallida y su vez el último registro del archivo /var/log/secure, se puede deducir que el ataque se produjo ente las horas antes mencionadas.

Ahora toca determinar los intentos de "Accepted password" durante el tiempo que duro el ataque.


Aquí nos interesa filtrar por fecha y usuario, es decir, la columna 3 y 9 para determinar por observación cuales password fueron encontradas por el atacante. 

como se observa en la imagen fueron 2 usuarios que durante el ataque de fuerza bruta el atacante pudo obtener.


¿Cuándo comenzó el ataque? (DD/MM/AAAA) 
El ataque comenzó con fecha 23/08/2021. La información se obtuvo del archivo /var/log/secure.

Aunque en la imagen no se proporciona el año solamente mes, día y hora, con la herramienta FTK Imager podemos obtener el año.

¿Cuál fue la primera cuenta de usuario utilizada por el atacante durante el ataque?
La primera cuenta de usuario utilizada por el atacante es chandler. La información se obtuvo analizando el archivo /var/log/secure.
Recordemos que el tiempo que duro el ataque fue entre 14:02:04 y 14:05:54. Por lo tanto, la primera cuenta que utilizo el atacante es chandler a las 14:29:59, es decir, fue la primera cuenta que se utilizó después del ataque según la línea de tiempo.

¿Cuál es el MITRE ID de la técnica utilizada por el atacante para lograr la persistencia?
El MITRE ID de la técnica utilizada por el atacante es T1098.004. La información se obtuvo utilizando la herramienta OSFMount para montar la imagen y la herramiente R-Studio Recovery para restaurar los archivos eliminados. 

Primero se se inspecciono el archivo .bash_history del usuario chandler(recordemos que fue la primera contraseña que se utilizo por el atacante). El archivo oculto .bash_history guarda todos los comando realizado por el usuario que tiene la sección activa en la máquina.


Como se observa en la imagen el atacante creo un archivo llamado p3333r.sh. en el directorio /tmp y luego lo ejecuta, por último el atacante lo elimina. Toca recuperar el archivo p3333r.sh.

Segundo, montamos la imagen con la herramienta OSFMount.
Luego con la herramienta R-Studio Recovery recuperamos los archivos eliminados del directorio /tmp/.

Por último, nos toca revisa el contenido p333r.sh.
El script al ejecutarlo crear un directorio oculto .ssh y luego realiza la descarga de la clave publica authorized_keys para iniciar sesion ssh mediante certificado ssh en la máquina víctima.

ahora toca buscar el MITRE ID para eso ingresamos a https://attack.mitre.org/techniques/  y en cuadro de búsqueda (search) ingresamos la frase "ssh authorization_key".


 

¿Cuál es el número CVE utilizado por el atacante para escalar su Privilegio?
El número CVE utilizado por el atacante es CVE-2021-3560. La información se obtuvo del archivo .bash_history.

Como se observa en la imagen el usuario ejecuto otros comandos ahora toca investigar un poco en Internet.  

Encontramos un CVE que apunta a nuestra búsqueda. Ahora confirmaremos la información en MITRE CVE en la pagina web https://cve.mitre.org/cve/search_cve_list.html  y el cuadro de búsqueda ingresaremos el numero CVE encontrado en nuestra búsqueda por Internet.


 Por último, confirmamos nuestra información.

Después de obtener más privilegios, el atacante dejó caer una puerta trasera para obtener más persistencia que recibe comandos de la cuenta de Gmail. ¿Cuál es el correo electrónico que se utiliza para enviar comandos?
El correo electrónico que se utiliza para enviar comandos es cdefender16@gmail.com. La información se obtuvo del archivo /var/log/secure y el archivo c2c.py.

Cuando el usuario realizo el escalamiento de privilegio creo un usuario llamado rachel.

Ahora toca analizar el archivo /var/log/secure para revisar que interacciones a ejecutado el atacante con la máquina comprometida.


Como se observa en la imagen el atacante descargo un archivo llamado c2c.py, por lo tanto, toca analizar este archivo para obtener la información para responder nuestra pregunta. Con la herramienta FTK Imager extraemos el archivo c2c.py ubicado en el directorio /usr/bin/.
Luego de exportar el archivo lo analizamos con la herramienta cat de Linux.
Como se observa en la imagen obtenemos el correo electrónico utilizado para enviar comandos a la máquina comprometida.

El atacante descargó un keylogger para capturar las pulsaciones de teclas de los usuarios. ¿Cuál es la palabra secreta que el atacante pudo exfiltrar?

Aquí debemos encontrar el archivo que ejecuta el keylogger para saber de que manera exfiltra datos el keylogger. Para eso volvemos a analizar el archivo /var/log/secure.


Como se observa en la imagen el usuario rachel interactua con dos archivos exfil.txt y xfil.py respectivamente. Analizaremos el archivo /etc/xfil.py primero.

Como se observa en la imagen el archivo /etc/xfil.py abre una conecxión mediante la herramienta Netcat o también conocida nc en el puerto 9999. Mientras que el archivo exfil.txt contiene la cadena 
 
Realizare un ping al dominio termbin.com para averiguar si el host esta vivo.

Ahora con la herramienta Shodan consultare la dirección IP entrega por el resultado entregado al ejecutar ping al host anteriormente.

Los resultado de Shodan nos indica que el host esta vivo y con varios puertos abiertos. ahora intentaremos de consultar la url  www.termbin.com/iof5.


 
 
 Al consulta la url anteriormente mencionada solo nos devuelve un objeto JSON. Es decir, no muestra nada que nos vincule con nuestro keylogger. Utilizaremos Internet Archive para saber si esta herramienta indexo alguna versión anterior del sitio que nos pueda ayudar a responder nuestra pregunta.


Los resultados mostrado por Internet Archive muestra una indexación en el año 2021 en mes de agosto hacemos clic en el para ver que es lo que indexo.

Como se observa en la imagen se muestra un código que a simple vista esta codificado en hexadecimal, ahora debemos descargar ese código y analizarlo.

Luego con la herramien xxd convetimos el archivo iof5 en un archivo con la extensión .bin


Volvamos a analizar el archivo xfil.py.
El script abre el archivo /dev/input/event1 y lo lee en formato binario. Aheremos un poco de análisis de porque el atacante utiliza el directorio /dev/input/evento1.

El directorio /dev/ en Linux es utilizados para almacenar todos los archivos de dispositivo "Driver" que están conectados en la máquina. Por otro lado, el subdirectorio /input almacena los archivos para los dispositivos de entrada (Por ejemplo, teclados, mouse, etc.). Por lo tanto, el atacante lee este archivo para enviar a través de la conexión Netcat (nc) al dominio termbin.com.

Ahora hay que buscar alguna herramienta que me permita realizar un parse de este archivo en Internet.

Hay varias herramientas yo me decidí por la que esta en la imagen. Es un script escrito en Ruby, el cual debemos realizar algunas modificaciones para utilizarlos e instalar la librería de Ruby binary_struct.


Luego debemos modificar las siguientes líneas en el script.
Por las siguientes líneas.
Luego, debemos cambiar los permisos del archivo para poder ejecutarlo.
Por último ejecutamos el script.

La salida del script es un poco enrevesado. Ejecutare nuevamente el script y con la función grep de Linux filtrare por "released".


Bien!, obtuvimos la respuesta para nuestra pregunta: HAVEAGOOOODDAY.
Happy Hack!!!

Comentarios