[Nota: Esta serie de posts es una narración de un análisis forense de un caso práctico de respuesta ante incidentes totalmente ficticio (pero contada, esperamos, de forma didáctica y con gracia y salero). Si queréis una versión con la misma dosis técnica pero con menos narrativa, podéis consultar el vídeo de la charla que el autor dio en las XIII Jornadas STIC del CCN-CERT, o echar un ojo las slides de la presentación].
[Nota 2: Estos posts desgranan un taller de análisis forense englobado dentro de la respuesta ante un incidente. Habrá algunas cosas que se podrían hacer de manera más eficiente y elegante, pero la idea era hacerlas de forma sencilla para que sean fáciles de entender. Y como todo buen taller práctico, se puede seguir paso a paso: el CCN-CERT está alojando en LORETO todo el material, que podéis descargar desde aquí. Tenéis tanto las evidencias en bruto (si queréis primero intentar encontrar el bicho por vuestra cuenta sin leer nada de la solución) como una guía paso a paso con todas las herramientas y evidencias necesarias en cada paso].
Al día siguiente, con medio litro de café en el cuerpo, Ángela queda en el MINAF con Salvador y le pone al corriente de todo lo sucedido. A grandes rasgos, su teoría de lo sucedido es la siguiente:
- Los atacantes han descubierto el servidor web WEBSERVER, han visto que era vulnerable a BlueeKeep y han explotado la vulnerabilidad para lograr acceso al sistema.
- Una vez dentro, han volcado las credenciales del sistema con procdump, y obtenido las de salvador.bendito (admin del dominio)
- Han dejado una webshell como acceso secundario, y han entrado en el equipo de salvador.bendito (ADMINPC1)
- Se ha realizado un reconocimiento de la red, y han encontrado CHITONSRV.
- Han intentado acceder a CHITONSRV con las credenciales de admin de domino sin éxito (CHITONSRV está fuera de dominio, con un admin local distinto)
- Los atacantes han desplegado el keylogger Refog, y esperado a que Salvador Bendito entrara en CHITONSRV
- Una vez Salvador Bendito ha entrado en CHITONSRV (y su contraseña queda capturada en Refog), los atacantes entran de nuevo por Escritorio Remoto siguiendo la cadena WEBSERVERà ADMINPC1à CHITONSRV, y roban la carpeta Secreto.
- Se instala TeamViewer en el equipo ADMINPC1, y se emplea para exfiltrar los datos.
Una vez hemos comprendido las acciones de los atacantes (fase de análisis), y realizado las acciones necesarias para impedir la operación de los atacantes (fase de contención), podemos pasar a las fases de erradicación y recuperación.
Erradicar a los atacantes implica conocer todos los accesos realizados por los mismos. Recordemos que han estado en disposición de un admin de dominio, por lo que potencialmente han tenido acceso a prácticamente todos los equipos del MINAF, y la cantidad de maldades que han podido realizar es prácticamente infinita.
Afortunadamente, Bro entra en juego para echarnos un cable. Al estar monitorizando toda la red, Ángela es capaz de trazar las sesiones de Escritorio Remoto de los atacantes y de repasar todas las conexiones realizadas desde todos los equipos sin encontrar nada anómalo.
Tiene toda la pinta de que los atacantes tenían un objetivo primario (la información del proyecto EHP), y que la detección y aviso del CCN-CERT, junto con la rapidísima reacción del MINAF, ha impedido que los atacantes puedan progresar más en el sistema.
Ángela y Salvador son de todas formas metódicos. A lo largo del incidente se han obtenido una serie de IOC:
- Existencia de TeamViewer en un equipo.
- Existencia de Refog en un equipo.
- Conexiones por Escritorio Remoto desde WEBSERVER o ADMINPC1
- Reinicios no programados de servidores
- Conexiones al equipo kali-one o a la IP 101.132.122.231
- Existencia de feliz.exe / de ficheros .dmp no conocidos
- Existencia de la webshell Laudanum
Todos los IOC se revisan cuidadosamente en los equipos del MINAF sin encontrar nuevos equipos afectados, por lo que podemos proceder a la fase de recuperación:
- Se restauran snapshots de las VM de CHITONSRV y WEBSERVER de una fecha previa al incidente.
- Se retira WEBSERVER de la DMZ, y se planifica su migración a Windows 2016 Server.
- Se replataforma ADMINPC1
- Se cambian las credenciales de salvador.bendito (y, por prudencia, de los otros 3 admin de dominio del MINAF).
- Se cambian las credenciales de todos los usuarios de CHITONSRV.
Sin embargo, la pregunta que Ángela sabe que le va a hacer la Subdirectora General el lunes es obvia: ¿se ha visto comprometida la base de datos de los ciudadanos del proyecto EHP? Analizando los datos, Ángela llega a las siguientes conclusiones:
- El fichero .pgp con la BD ha sido definitivamente exfiltrado del MINAF
- Sin embargo, está cifrado con GnuPG (y clave privada AES-256 de 4096 bits)
- No se han detectado accesos a ninguno de los equipos de los altos cargos (que eran los que tenían la clave privada y su contraseña adicional)
- Sin la clave privada, el cifrado se considera irrompible (al menos en un tiemporazonable), por lo que los datos están seguros.
Una vez atados todos los cabos importantes, Ángela realiza un resumen muy escueto del incidente (estamos a las 13.30h de un sábado, ya habrá tiempo de hacer el informe completo el lunes), junto con los IOC completos crea el incidente en LUCIA y se va a su casa a disfrutar de un merecidísimo descanso…
El lunes a exactamente las 08.10h (hora española), Ángela recibe una llamada del CCN-CERT y les cuenta con detalle el incidente completo. El analista del CCN-CERT le indica que las TTP (Tácticas, Técnicas y Procedimientos) de los atacantes se ajustan mucho a las empleadas por un grupo de atacantes de Anjapistán (ex-república soviética caracterizada por su carencia total de sentido del humor y enemiga declarada de la felicidad mundial), y que le enviará un paquete de IOC adicionales.
El resto de la mañana transcurre para Ángela en reuniones con diversos departamentos del MINAF, explicando el incidente. Es ya después de comer cuando tiene tiempo de comenzar a redactar el informe del incidente, y Ángela decide empezar con la parte que en muchos casos es más importante: las lecciones aprendidas (y sus consiguientes medidas de mejora).
El incidente de seguridad ha sido solventado con bastante rapidez, pero nos deja con bastante trabajo a realizar. Ángela enumera las siguientes lecciones aprendidas:
- Pasa a producción de forma controlada: si alguien hubiera avisado a Seguridad del paso a producción de WEBSERVER, Ángela habría puesto el grito en el cielo y habría al menos realizado una auditoria previa del servicio. Queda como mejora el realizar un procedimiento detallado de paso a producción, en el que se tengan unos criterios mínimos de seguridad, y se informe a todas las partes implicadas.
- Controla el perímetro con extremo prejuicio: si las políticas de acceso hubieran sido las correctas, el cortafuegos perimetral habría bloqueado el intento de explotación de BlueKeep. Queda como mejora revisar las políticas de la DMZ, dejando únicamente aquellos accesos que sean estrictamente necesarios (y justificados).
- Parchea bien los sistemas: hay que aplicar una política de tolerancia cero con la falta de parches. Aunque el MINAF parchea todos sus servidores de producción, el incidente ha hecho ver que no sucede lo mismo con los equipos de Desarrollo. Se apunta como mejora el gestionar TODOS los equipos de desarrollo con el mismo procedimiento de parcheo.
- Segmenta las credenciales por niveles: Salvador accedió a WEBSERVER con las credenciales de admin de dominio, lo que habría permitido a los atacantes acceder a prácticamente todos los equipos del MINAF. Se plantea como mejora el crear un “tiering” de accesos, como indica Microsoft en su documento de “Mitigating Pass-the-Hash and Other Credential Theft, version 2”.
- Controla el perímetro interno: Una política de accesos suficientemente estricta habría permitido al acceso por Escritorio Remoto ADMINPC1 à WEBSERVER … pero no el contrario. Es necesario realizar una revisión de las políticas de acceso internas, y quizás retomar el concepto de “equipos de salto” (equipos que recogen todos los accesos de los técnicos y a través de los cuales se accede a los servidores, simplificando los controles de acceso).
- Los admin de dominio NO entran en los puestos de escritorio: el hecho de que los atacantes se hicieran con las credenciales de Salvador Bendito implicaba su acceso total, algo que no debería de permitirse en el MINAF. Se plantea prohibir por GPO que los admin de dominio inicien sesión en los puestos de escritorio (probablemente unido al despliegue de LAPS para la gestión de los administradores locales).
- El cifrado es bueno. El cifrado es tu amigo: en última instancia, el cifrado fuerte ha sido la medida que ha evitado que la información confidencial caiga en manos de los atacantes. Se plantea el desplegar más esquemas de cifrado fuerte en los sistemas en los que existe información confidencial.
A lo largo de la semana Ángela le sigue dando vueltas al incidente, porque le queda una duda rondando por la cabeza: ¿cómo exfiltraron realmente los atacantes la carpeta Secreto de CHITONSRV? ¿Y cómo metieron el keylogger en ADMINPC1 si el ejecutable no estaba en la carpeta de Descargas (sí, podrían haberlo borrado, pero no se molestaron en borrar el instalador de TeamViewer).
Dado que en el triage tenemos los datos de Sysmon, Ángela peina cuidadosamente todos los ejecutables lanzados por la sesión de Escritorio Remoto sin encontrar ningún otro ejecutable que haya podido haber sido empleado para exfiltrar los datos. Después de un rato dándole vueltas, a Ángela se le ilumina la bombilla: hay una característica de una sesión de Escritorio Remoto que casi nadie usa, pero que suele estar presente en todas las sesiones. Volviendo a mirar en los logs de Sysmon, encuentra lo que estaba buscando:
Los atacantes no han tenido que usar el “custom-haxx0r-loader-APT-evasion-modular-malware”. Han empleado la funcionalidad de copiar y pegar del Escritorio Remoto. Para verificar esta teoría, Ángela lanza Volatility y hace uso del plugin wndscan para obtener el estado de las Windows Stations :
El valor de iClipSerialNumber indica el número de operaciones de copiado de ficheros realizadas. En la sesión de los atacantes, se realizaron 9 operaciones de copiado (ojo, cada operación de copiado puede ser de varios ficheros o carpetas, por lo que el saber exactamente qué se han llevado no es posible).
Salvador también tiene su aportación a la causa. A raíz del incidente, se puso a investigar cómo funciona el protocolo RDP y qué información era interesante desde el punto de vista de la ciberseguridad. La siguiente lista de enlaces es … interesante:
- PtH con RDP https://michael-eder.net/post/2018/native_rdp_pass_the_hash/
- An overview of Windows EventID 4648 – Logon with explicit credentials. https://blog.menasec.net/2019/03/an-overview-of-windows-eventid-4648.html
- RDP & SMB Tunneling using SECFORCE/Tunna https://github.com/sbousseaden/EVTX-ATTACK-SAMPLES/tree/master/Command%20and%20Control
- Bypassing Network Restrictions Through RDP Tunneling https://www.fireeye.com/blog/threat-research/2019/01/bypassing-network-restrictions-through-rdp-tunneling.html
- Windows Microsoft-Windows-RemoteDesktopServices-RdpCoreTS/Operational Logs https://twitter.com/SBousseaden/status/1168901401222758401
- Logs RDP (JPCERTCC) https://jpcertcc.github.io/ToolAnalysisResultSheet/details/mstsc.htm
- Detect RDP session hijacking https://twitter.com/Moti_B/status/909449115477659651
- RDP logging https://twitter.com/SBousseaden/status/1170747579400892416?s=17
- Threat Hunting #24 – RDP over a Reverse SSH Tunnel https://blog.menasec.net/2019/02/threat-hunting-25-rdp-over-reverse-ssh.html
- Hunting for suspicious use of TeamViewer – Part 1/2 https://blog.menasec.net/2019/11/hunting-for-suspicious-use-of.html
Aunque lo realmente interesante es el análisis forense de la Bitmap Cache. El protocolo RDP estaba diseñado en sus inicios para funcionar con redes que tenían muy poco ancho de banda, así que “pintar” la pantalla era muy costoso. Para ahorrar recursos de red, RDP divide la pantalla en baldosas (tiles), y solo cambia las baldosas del área de pantalla que han sufrido cambios.
Eficiente, ¿verdad? Pues resulta que estas baldosas quedan guardadas en cada cliente en el directorio:
C:\Users\salvador.bendito\AppData\Local\Microsoft\Terminal Server Client\Cache\*
Así que podemos recuperar el conjunto de ficheros binarios que contiene todas esas baldosas y traducirlas de nuevo a imágenes con el script bmc-tools.py . El resultado (usando la opción –b para que cree un collage juntando todas las imágenes) es impresionante:
(Para los que queráis observarla en su tamaño real de 40Mb, aquí la tenéis)
Como muestra, un resumen de muchas de las acciones de los atacantes se dejan entrever en las distintas baldosas:
Este análisis parece dar punto y final a nuestra historia … pero todavía tenemos un último giro: un mes más tarde del incidente, justo cuando Ángela está a punto de dar por terminado el día, un analista del CCN-CERT la llama para agradecerle los IOC y el informe detallado del incidente.
El CCN-CERT diseminó esa información entre el resto de Ministerios de la AGE, así como entre el resto de CERT nacionales de la UE, con el resultado de dos operaciones de Anjapistán detectadas y erradicadas en otros dos países.
Mientras apaga el equipo para irse a su casa, Ángela piensa satisfecha: “hoy me he ganado un buen whisky”.