La consulta de eventos de inicio de sesión 4624_4625 proporciona a los defensores, en concreto a los analistas, una herramienta útil tanto para identificar los inicios de sesión RDP con éxito (Evento 4624 del Registro de Seguridad de Windows) como los intentos fallidos (Evento 4625 del Registro de Seguridad de Windows). Estos eventos pueden ser generados por sistemas, controladores de dominio y workstations.
Estos eventos de Windows son visibles en el Visor de Eventos, por supuesto, pero en este post (y en el vídeo complementario que hemos puesto en nuestro canal de YouTube) mostraremos nuestro análisis utilizando Sophos Central. La consulta SQL que utilizaremos a continuación está disponible para todos en nuestro Github.
Construir y ejecutar la consulta
La consulta SQL con la que trabajaremos tiene el siguiente aspecto:
SELECT strftime('%Y-%m-%dT%H:%M:%SZ',datetime) AS date_time, eventid AS EventID, CASE WHEN eventid = 4624 THEN eventid || ' - Successful Login' WHEN eventid = 4625 THEN eventid || ' - Failed login' END AS Description, 'Security' AS Source, JSON_EXTRACT(data, '$.EventData.TargetUserName') AS Target_User, JSON_EXTRACT(data, '$.EventData.WorkstationName') AS Source_Machine_Network, JSON_EXTRACT(data, '$.EventData.IpAddress') AS Source_IP, JSON_EXTRACT(data, '$.EventData.ProcessName') AS Process_Name, JSON_EXTRACT(data, '$.EventData.LogonType') AS Logon_Type, JSON_EXTRACT(data, '$.EventData.TargetUserSid') AS Target_User_SID, JSON_EXTRACT(data, '$.EventData.Status') AS Logon_Status_Code, JSON_EXTRACT(data, '$.EventData.TargetDomainName') AS Target_Domain_Name, JSON_EXTRACT(data, '$.EventData.AuthenticationPackageName') AS Authentication_package, NULL AS SessionID, NULL AS Session_ID, 'Security EVTX' AS Data_Source, 'Logins.01.1' AS Query FROM sophos_windows_events WHERE source = 'Security' AND (eventid = 4624 OR eventid = 4625) AND JSON_EXTRACT(data, '$.EventData.TargetUserName') LIKE '$$username$$' AND JSON_EXTRACT(data, '$.EventData.IpAddress') LIKE '$$source_ip$$' AND JSON_EXTRACT(data, '$.EventData.WorkstationName') LIKE '$$workstation$$' AND time > 0
Para ejecutar esto en Sophos Central, ve a:
Centro de Análisis de Amenazas > Live Discover > Modo Diseñador
y haz clic en el botón Crear nueva consulta, como se muestra en la Figura 1.
Al hacer clic en el botón se abre una pantalla con un cuadro SQL, en el que pegarás la consulta.
Observa que esta consulta tiene dos variables: una para el nombre o nombres de usuario objetivo (nombre_usuario) y otra para la dirección IP de la entidad que intenta acceder (source_ip). Ambas son cadenas; para estar seguros de que la consulta devuelve el mayor número posible de resultados, debes incluir comodines para esas variables. Cuando nuestros investigadores de Respuesta a Incidentes utilizan esto en el curso de su trabajo, por regla general lo ejecutan contra todos los dispositivos Windows de la red. La primera vez que lo ejecutes y ocasionalmente después, considera hacer lo mismo para obtener la visión más amplia posible de lo que ocurre en tu red.
Para ello, edita estas dos variables en el Editor de Variables, justo encima del cuadro en el que se pega la consulta. Haz clic en Mostrar Editor de Variables y, a continuación, en + Añadir variable. En el campo Nombre descriptivo, escribe el nombre de la primera variable (username); el tipo (String) y el nombre de la variable SQL ($$username$$) se rellenarán automáticamente. En la línea siguiente, haz lo mismo para la segunda variable ($$source_ip$$). A la derecha, añade el signo de porcentaje (%) que indica un comodín, como se muestra en la Figura 2:
A continuación, desplázate hasta el área Filtros y selecciona las máquinas en las que debe ejecutarse la consulta. Como se trata de un evento de Windows, no tiene sentido ejecutarlo en ninguna máquina macOS o Linux que tengas, por lo que estas deben ser filtradas. Si haces clic en la casilla situada junto a "Estado en línea" (en la parte superior de la columna), se seleccionan todos; haz clic en "Actualizar lista de dispositivos seleccionados" para confirmar.
Una vez establecidas las variables y los filtros, haz clic en Ejecutar consulta, y vuelve a hacer clic cuando el sistema te pregunte si quieres ejecutar esta consulta no probada. Comienza la ejecución; el tiempo que tarde en finalizar dependerá, por supuesto, del tamaño de tu patrimonio, de la velocidad de tu conexión y, sobre todo, de lo grande que sea el registro de eventos. Sin embargo, finalmente concluirá, devolviendo una tabla de resultados. Por supuesto, es posible revisarlos directamente en Sophos Central, pero también es posible (y quizá un poco más agradable) exportarlo todo a un archivo CSV para examinarlo en tu editor de hojas de cálculo preferido.
Comprender los resultados
Independientemente de cómo prefieras ver los resultados, hay algunos campos que destacan:
Resultados de la consulta: una visión general
epName | Nombre del endpoint |
date_time | La hora en formato UTC en la que se registró el evento en el registro consultado; ordenar por date_time puede localizar intervalos de actividad en momentos inesperados |
EventID | La conexión tuvo éxito (4624) o falló (4625) |
Source | El registro en el que se encontraron los resultados de la consulta |
Username | El nombre de usuario utilizado cuando se intentó la conexión; merece la pena comprobar si hay usuarios que no deberían hacer intentos de RDP, así como nombres de usuario que no se ajusten al "estilo" de tu organización (por ejemplo, si tu organización llama "Administrador" a las cuentas de administración del sistema, ver "ADMINISTRADOR", "admin" o similares debería llamar tu atención) |
Source_Machine_Network | El nombre verdadero del host que se conectó (o intentó conectarse); un nombre que no reconozcas o que no se ajuste al esquema de nombres de la organización probablemente merezca la pena investigarlo más a fondo |
Source_IP | La dirección IP de origen; si no procede del interior del estado (es decir, si se trata de una conexión no RFC 1819, una dirección IP remota), merece un escrutinio |
Logon_Type | Microsoft asigna una docena de códigos a los distintos tipos de inicio de sesión; en esta situación, los investigadores que analicen el uso indebido de RDP pueden observar el tipo 3 (inicio de sesión en red, incluido el post-NLA), el tipo 7 (la estación de trabajo estaba desbloqueada; si el campo IP asociado a este suceso es una dirección remota, es sospechoso), o el tipo 10 (inicio de sesión remoto mediante Terminal Servies o, sí, RDP) |
En la tabla anterior, hemos señalado una serie de posibles motivos para seguir investigando basándonos en los resultados que devuelve esta consulta; aquí tienes uno más. Aunque esta consulta puede detectar posibles problemas de exposición al RDP, puede detectar algo más que necesite tu pronta atención, por ejemplo, SMB.
En el año 2024 (siete años después de la caída de EternalBlue y WannaCry), no hay ninguna buena razón para dejar una carpeta o unidad compartida colgada en Internet de esta manera, y sin embargo uno de cada cinco casos tratados en 2022 y 2023 por el equipo de Respuesta a Incidentes tenía pruebas de abuso de SMB. Esta estadística no puede compararse con el dominio de RDP en nuestros hallazgos de IR, donde más del 90% de los casos incluyen situaciones relacionadas con RDP, pero es un buen recordatorio de que vigilar los registros de tu organización con consultas periódicas como esta puede arrojar resultados realmente reveladores.
Protocolo de escritorio remoto: la serie
Parte 6: ejecución de la consulta de inicio de sesión 4624_4625 (estás aquí, vídeo)
Repositorio de consultas en GitHub: SophosRapidResponse/OSQuery
Repositorio de transcripciones: sophoslabs/video-transcripts
Lista de reproducción de YouTube: Protocolo de escritorio remoto: la serie