Búsqueda de Ciberamenazas

Protocolo de escritorio remoto: ejecución de la consulta de inicio de sesión 4624_4625

Vigilar quién intenta entrar en tu red, lo consiga o no, puede dar sus frutos en múltiples frentes

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.

figura 1
Figura 1: creación de una consulta en la pantalla del Modo Diseñador; el botón Crear nueva consulta está a la derecha, cerca del centro de la pantalla

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:

Editing the variable in the query
Figura 2: la edición de la variable está casi terminada, un signo de porcentaje más y estará lista

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 1: protocolo de escritorio remoto: introducción (postvídeo)

Parte 2: RDP expuesto (es peligroso) (postvídeo)

Parte 3: consultas para la investigación (postvídeo)

Parte 4: factor zona horaria RDP (postvídeo)

Parte 5: ejecución de la consulta RDP externa (postvídeo)

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