En un sorprendente giro de los acontecimientos, una interrupción tecnológica global provocada por una actualización de software defectuosa de CrowdStrike ha provocado un caos generalizado en varios sectores de todo el mundo. El incidente, que afectó a los sistemas que ejecutan Microsoft Windows, dejó en tierra vuelos, interrumpió hospitales y detuvo numerosas operaciones comerciales, lo que demuestra las dependencias críticas de las infraestructuras de ciberseguridad en la era digital moderna.
THE CATALYST: UNA ACTUALIZACIÓN DEFECTUOSA
La interrupción se debió a una única actualización de contenido para Windows emitida por CrowdStrike, una empresa líder en ciberseguridad. La actualización contenía un defecto que provocó fallas importantes en numerosos sistemas, lo que provocó un efecto dominó de interrupciones de TI en todo el mundo. El impacto fue profundo y afectó a una variedad de sectores, desde aerolíneas y bancos hasta hospitales y usuarios individuales de computadoras.
IMPACTOS INMEDIATOS Y CAOS
Las repercusiones inmediatas fueron graves y generalizadas:
- Aerolíneas : miles de vuelos fueron cancelados, lo que provocó enormes retrasos y perturbaciones en los aeropuertos de todo el mundo.
- Hospitales : Las instalaciones médicas enfrentaron desafíos operativos críticos cuando sus sistemas de TI quedaron fuera de línea, lo que complicó la atención al paciente y los procedimientos médicos.
- Instituciones financieras : Los bancos y otras entidades financieras experimentaron perturbaciones importantes que afectaron las transacciones y las operaciones diarias.
- Medios de comunicación : varias organizaciones de medios se encontraron sin poder acceder a sus redes, lo que obstaculizó la difusión de noticias y las operaciones de los medios.
El caos se vio agravado aún más por la naturaleza interconectada de las infraestructuras globales de TI, lo que puso de relieve vulnerabilidades que pueden conducir a crisis tan generalizadas.
PASOS PARA DETERMINAR EL IMPACTO.
CrowdStrike, junto con Microsoft, ha estado trabajando incansablemente para solucionar el problema. A continuación se muestra una explicación paso a paso de cómo identificar y evaluar los sistemas afectados mediante consultas específicas en la Búsqueda avanzada de eventos.
PASO 1: DETERMINAR EL ARCHIVO DEL CANAL AFECTADO
El primer paso implica ejecutar una consulta para identificar el archivo de canal afectado, lo que ayudará a determinar el alcance de los sistemas afectados. Ejecute la siguiente consulta en Búsqueda avanzada de eventos con la ventana de búsqueda configurada en siete días.
#event_simpleName=ConfigStateUpdate event_platform=Win
| regex("\|1,123,(?<CFVersion>.*?)\|", field=ConfigStateData, strict=false) |
parseInt(CFVersion, radix=16)
| groupBy([cid], function=([max(CFVersion, as=GoodChannel)]))
| ImpactedChannel:=GoodChannel-1
| join(query={#data_source_name=cid_name | groupBy([cid],
function=selectLast(name), limit=max)}, field=[cid], include=name, mode=left)
Tome nota del valor que figura en la columna "ImpactedChannel".
Este número
Explicación:
- Filtrar Eventos : La consulta filtra eventos con el nombre
ConfigStateUpdate
en la plataforma Windows. - Extraer versión : utiliza una expresión regular para extraer la versión del archivo de configuración de los datos del evento.
- Versión de análisis : el número de versión extraído se analiza como un número entero.
- Agrupar por ID de cliente (cid) : Las versiones se agrupan por ID de cliente y se identifica el número de versión más alto.
- Determinar el canal afectado : el archivo del canal afectado se obtiene restando uno del número de versión más alto.
Tome nota del valor que figura en la columna “ImpactedChannel”. Este valor se utilizará en el siguiente paso y normalmente es de alrededor de 30 para los inquilinos de Falcon.
PASO 2: EJECUTAR UNA CONSULTA DETALLADA PARA IDENTIFICAR LOS SISTEMAS AFECTADOS
Una vez identificado el archivo del canal afectado, el siguiente paso es ejecutar una consulta más detallada para identificar los sistemas afectados durante la ventana de impacto crítico.
Consulta para identificar sistemas impactados:
// Get ConfigStateUpdate and SensorHeartbeat events
#event_simpleName=/^(ConfigStateUpdate|SensorHeartbeat)$/ event_platform=Win
// Narrow search to Channel File 291 and extract version number; accept all
SensorHeartbeat events
| case{
#event_simpleName=ConfigStateUpdate | regex("\|1,123,(?<CFVersion>.*?)\|",
field=ConfigStateData, strict=false) | parseInt(CFVersion, radix=16);
#event_simpleName=SensorHeartbeat | rename([[@timestamp, LastSeen]]);
}
// Restrict results to hosts that were online during impacted time window
| case{
#event_simpleName=ConfigStateUpdate | @timestamp>1721362140000 AND
@timestamp < 1721366820000 | CSUcounter:=1;
#event_simpleName=SensorHeartbeat | LastSeen>1721362140000 AND
LastSeen<1721366820000 | SHBcounter:=1;
*;
}
| default(value="0", field=[CSUcounter, SHBcounter])
// Make sure both ConfigState update and SensorHeartbeat have happened
| selfJoinFilter(field=[cid, aid, ComputerName], where=[{ConfigStateUpdate},
{SensorHeartbeat}])
// Aggregate results
| groupBy([cid, aid], function=([{selectFromMax(field="@timestamp",
include=[CFVersion])}, {selectFromMax(field="@timestamp", include=[@timestamp])
| rename(field="@timestamp", as="LastSeen")}, max(CSUcounter, as=CSUcounter),
max(SHBcounter, as=SHBcounter)]), limit=max)
// Perform check on selfJoinFilter
| CFVersion=* LastSeen=*
// ////////////////////////////////////////////////////////// //
// UPDATE THE LINE BELOW WITH THE IMPACTED CHANNEL FILE NUMBER //
// ////////////////////////////////////////////////////////// //
| in(field="CFVersion", values=[0,31])
// Calculate time between last seen and now
| LastSeenDelta:=now()-LastSeen
// Optional threshold; 3600000 is one hour; this can be adjusted
| LastSeenDelta>3600000
// Calculate duration between last seen and now
| LastSeenDelta:=formatDuration("LastSeenDelta", precision=2)
// Convert LastSeen time to human-readable format
| LastSeen:=formatTime(format="%F %T", field="LastSeen")
// Enrich aggregation with aid_master details
| aid=~match(file="aid_master_main.csv", column=[aid])
| aid=~match(file="aid_master_details.csv", column=[aid],
include=[FalconGroupingTags, SensorGroupingTags])
// Convert FirstSeen time to human-readable format
| FirstSeen:=formatTime(format="%F %T", field="FirstSeen")
// Move ProductType to human-readable format and add formatting
| $falcon/helper:enrich(field=ProductType)
| drop([Time])
| default(value="-", field=[MachineDomain, OU, SiteName, FalconGroupingTags,
SensorGroupingTags], replaceEmpty=true)
// Create conditions to check for impact
| case{
LastSeenDelta>3600000 | Details:="OK: Endpoint seen in past hour.";
CSUcounter=0 AND SHBcounter=0 | Details:="OK: Endpoint did not receive
channel file during impacted window. Endpoint was offline.";
CSUcounter=0 AND SHBcounter=1 | Details:="OK: Endpoint did not receive
channel file during impacted window. Endpoint was online.";
CSUcounter=1 AND SHBcounter=1 | Details:="CHECK: Endpoint received channel
file during impacted window. Endpoint was online. Endpoint has not been seen
online in past hour.";
}
// Create one final groupBy for easier export to CSV
| groupBy([cid, aid, ComputerName, LastSeen, CFVersion, LastSeenDelta, Details,
AgentVersion, aip, event_platform, FalconGroupingTags, LocalAddressIP4, MAC,
MachineDomain, OU, ProductType, SensorGroupingTags, SiteName,
SystemManufacturer,SystemProductName, Version], limit=max)
Explicación:
- Filtrar eventos : la consulta selecciona eventos con los nombres
ConfigStateUpdate
ySensorHeartbeat
en la plataforma Windows. - Extraer y analizar versión : extrae la versión del archivo de configuración de los
ConfigStateUpdate
eventos y la analiza como un número entero. - Identificar ventana de tiempo : filtra eventos que ocurrieron dentro de la ventana de impacto (0400 – 0600 UTC del 19 de julio de 2024).
- Indicadores de contador : establece contadores para los sistemas que estaban en línea y procesaron la actualización durante la ventana de impacto.
- Unirse a filtros : garantiza que ambos
ConfigStateUpdate
eventosSensorHeartbeat
ocurrieron para los mismos sistemas. - Resultados agregados : agrega los resultados, incluida la versión del archivo de configuración y la última marca de tiempo vista.
- Verificar versiones impactadas : filtra los sistemas que ejecutan la versión del archivo del canal impactado (
CFVersion
) identificada anteriormente. - Calcular deltas de tiempo : calcula el tiempo desde que se vieron los sistemas por última vez y lo formatea para facilitar la lectura.
- Enriquecer datos : relaciona detalles adicionales de archivos maestros y convierte marcas de tiempo a formatos legibles por humanos.
- Evaluación de impacto : establece mensajes de estado detallados basados en la actualización del sistema y el estado en línea durante la ventana de impacto.
- Exportar resultados : agrupa los resultados finales para exportarlos más fácilmente a CSV.
Importante : actualice la línea con el número de archivo del canal afectado derivado del Paso 1:
sqlCopiar código| in(field="CFVersion", values=[0,31])
Ajuste la ventana de tiempo si es necesario cambiando el valor del umbral. El valor predeterminado está establecido en una hora (3600000 milisegundos). El resultado de esta consulta mostrará los sistemas que informaron por última vez que ejecutaron una versión afectada del archivo de canal 291 que no se ha visto en la última hora.
Si el intervalo de tiempo de una hora es demasiado largo, se puede ajustar en la línea 26 de la consulta:
// Umbral opcional; 3600000 es una hora
| LastSeenDelta>3600000
El valor 3600000 es una hora en milisegundos. Podrás elegir el umbral que mejor se adapte a tus
necesidades.
Si sigue estos pasos y utiliza las consultas proporcionadas, podrá evaluar e identificar con precisión los sistemas afectados por la reciente interrupción de CrowdStrike. Este método garantiza que se evalúen todos los sistemas afectados y que se tomen rápidamente las medidas correctivas necesarias para restaurar las operaciones normales.
Es un conocido experto en seguridad móvil y análisis de malware. Estudió Ciencias de la Computación en la NYU y comenzó a trabajar como analista de seguridad cibernética en 2003. Trabaja activamente como experto en antimalware. También trabajó para empresas de seguridad como Kaspersky Lab. Su trabajo diario incluye investigar sobre nuevos incidentes de malware y ciberseguridad. También tiene un profundo nivel de conocimiento en seguridad móvil y vulnerabilidades móviles.
Envía tips de noticias a info@noticiasseguridad.com o www.instagram.com/iicsorg/
También puedes encontrarnos en Telegram www.t.me/noticiasciberseguridad