Ejemplos de series de búsqueda de AQL

Utilice Ariel Query Language (AQL) para recuperar campos específicos de las tablas de sucesos, flujos y simarc en la base de datos Ariel .

Nota: Al crear una consulta AQL, si copia texto que contiene comillas simples de cualquier documento y pega el texto en IBM QRadar, la consulta no se analizará. Como solución temporal, puede pegar el texto en QRadar y volver a escribir las comillas simples, o puede copiar y pegar el texto desde IBM Knowledge Center.

Informes de uso de cuenta

Comunidades de usuarios diferentes pueden tener indicadores de amenazas y de uso diferentes.

Utilice datos de referencia para informar sobre diversas propiedades de usuario, tales como departamento, ubicación o gestor. Puede utilizar datos de referencia externos.

La consulta siguiente devuelve información de metadatos sobre el usuario a partir de sucesos de inicio de sesión.

SELECT
REFERENCETABLE('user_data','FullName',username) as 'Full Name',
REFERENCETABLE('user_data','Location',username) as 'Location',
REFERENCETABLE('user_data','Manager',username) as 'Manager',
DISTINCTCOUNT(username) as 'Userid Count',
DISTINCTCOUNT(sourceip) as 'Source IP Count',
COUNT(*) as 'Event Count'
FROM events
WHERE qidname(qid) ILIKE '%logon%'
GROUP BY 'Full Name', 'Location', 'Manager'
LAST 1 days

Identificadores de cuenta múltiples

En este ejemplo, los usuarios tienen varias cuentas en la red. La empresa necesita tener una vista individual de la actividad de un usuario.

Utilice datos de referencia para correlacionar un ID de usuario local con un ID global.

La consulta siguiente devuelve las cuentas de usuario que son utilizadas por un ID global en sucesos que están marcados como sospechosos.

SELECT
REFERENCEMAP('GlobalID Mapping',username) as 'Global ID', 
REFERENCETABLE('user_data','FullName', 'Global ID') as 'Full Name',
DISTINCTCOUNT(username),
COUNT(*) as 'Event count'
FROM events
WHERE RULENAME(creEventlist) ILIKE '%suspicious%'
GROUP BY 'Global ID'
LAST 1 days

La consulta siguiente muestra las actividades que se han realizado mediante un ID global.

SELECT
QIDNAME(qid) as 'Event name', 
starttime as 'Time',
sourceip as 'Source IP', destinationip as 'Destination IP',
username as 'Event Username',
REFERENCEMAP('GlobalID_Mapping', username)as 'Global User'
FROM events
WHERE 'Global User' = 'John Doe'
LAST 1 days

Identificar una emisión larga de señales de baliza sospechosa

Muchas amenazas utilizan mandato y control para transmitir periódicamente durante días, semanas y meses.

Las búsquedas avanzadas pueden identificar patrones de conexión a lo largo del tiempo. Por ejemplo, puede investigar conexiones breves, constantes y de pequeño volumen que se realizan cada día/semana/mes entre direcciones IP o entre una dirección IP y una ubicación geográfica.

La consulta siguiente detecta posibles casos de emisiones de señales de baliza realizadas cada hora.

SELECT sourceip, destinationip,
DISTINCTCOUNT(DATEFORMAT(starttime,'HH')) as 'different hours',
COUNT(*) as 'total flows'
FROM flows
WHERE flowdirection = 'L2R'
GROUP BY sourceip, destinationip
HAVING "different hours" > 20
AND "total flows" < 25
LAST 24 hours
Sugerencia: Puede modificar esta consulta para trabajar en registros de proxy y otros tipos de sucesos.

La consulta siguiente detecta posibles casos de emisiones diarias de señales de baliza.

SELECT sourceip, destinationip,
DISTINCTCOUNT(DATEFORMAT(starttime,'dd'))as 'different days',
COUNT(*) as 'total flows'
FROM flows
WHERE flowdirection='L2R'
GROUP BY sourceip, destinationip
HAVING "different days" > 4
AND "total flows" < 14
LAST 7 days

La consulta siguiente detecta la emisión diaria de señales de baliza entre una dirección IP de origen y una dirección IP de destino. Las horas de emisión de señales de baliza no son las mismas cada día. El intervalo de tiempo entre emisiones es corto.

SELECT
sourceip,
LONG(DATEFORMAT(starttime,'hh')) as hourofday,
(AVG( hourofday*hourofday) - (AVG(hourofday)^2))as variance,
COUNT(*) as 'total flows'
FROM flows
GROUP BY sourceip, destinationip
HAVING variance < 01 and "total flows" < 10
LAST 7 days

La consulta siguiente detecta la emisión diaria de señales de baliza hacia un dominio utilizando sucesos de registro de proxy. Las horas de emisión de señales de baliza no son las mismas cada día. El intervalo de tiempo entre emisiones es corto.

SELECT sourceip,
LONG(DATEFORMAT(starttime,'hh')) as hourofday,
(AVG(hourofday*hourofday) - (AVG(hourofday)^2)) as variance,
COUNT(*) as 'total events'
FROM events
WHERE LOGSOURCEGROUPNAME(devicegrouplist) ILIKE '%proxy%'
GROUP BY url_domain
HAVING variance < 0.1 and "total events" < 10
LAST 7 days

La propiedad url_domain es una propiedad personalizada de los archivos de registro de proxy.

Datos de inteligencia sobre amenazas externas

Los datos de uso y de seguridad que están correlacionados con datos de inteligencia sobre amenazas externas pueden proporcionar indicadores importantes sobre amenazas.

Las búsquedas avanzadas pueden asociar indicadores de amenazas externas con otros sucesos de seguridad y datos de uso.

Esta consulta muestra cómo puede analizar datos de amenazas externas durante muchos días, semanas o meses para identificar y priorizar el nivel de riesgo de activos y cuentas.

Select
REFERENCETABLE('ip_threat_data','Category',destinationip) as 'Category',
REFERENCETABLE('ip_threat_data','Rating', destinationip) as 'Threat Rating',
DISTINCTCOUNT(sourceip) as 'Source IP Count',
DISTINCTCOUNT(destinationip) as 'Destination IP Count'
FROM events
GROUP BY 'Category', 'Threat Rating'
LAST 1 days

Inteligencia y configuración de activos

Los indicadores de amenazas y de uso varían según el tipo de activo, sistema operativo, vulnerabilidad, tipo de servidor, clasificación y otros parámetros.

La consulta siguiente utiliza búsquedas avanzadas y el modelo de activos para obtener conocimientos operativos respecto a una ubicación.

La función Assetproperty obtiene valores de propiedad de activos, lo cual permite incluir datos de activos en los resultados.

SELECT
ASSETPROPERTY('Location',sourceip) as location,
COUNT(*) as 'event count'
FROM events
GROUP BY location
LAST 1 days

La consulta siguiente muestra cómo puede utilizar búsquedas avanzadas y el seguimiento de identidades de usuario en el modelo de activos.

La función AssetUser obtiene el nombre de usuario a partir de la base de datos de activos.

SELECT 
APPLICATIONNAME(applicationid) as App,
ASSETUSER(sourceip, now()) as srcAssetUser,
COUNT(*) as 'Total Flows'
FROM flows
WHERE srcAssetUser IS NOT NULL
GROUP BY App, srcAssetUser
ORDER BY "Total Flows" DESC
LAST 3 HOURS

Función de búsqueda de red

Puede utilizar la función Network LOOKUP para recuperar el nombre de red asociado a una dirección IP.

SELECT NETWORKNAME(sourceip) as srcnet,
NETWORKNAME(destinationip) as dstnet
FROM events

Función de búsqueda de regla

Puede utilizar la función Rule LOOKUP para recuperar el nombre de una regla por su ID.

SELECT RULENAME(123) FROM events

La consulta siguiente devuelve los sucesos que activaron un nombre de regla determinado.

SELECT * FROM events
WHERE RULENAME(creEventList) ILIKE '%my rule name%'

Propiedad personalizada

Puede acceder a las propiedades personalizadas para sucesos y flujos cuando utiliza la opción Búsqueda avanzada.

La consulta siguiente utiliza la propiedad personalizada "MyWebsiteUrl" para ordenar sucesos por un URL web determinada:
SELECT "MyWebsiteUrl", * FROM events ORDER BY "MyWebsiteUrl"