IBM QRadar XDR es una plataforma de gestión de eventos e información de seguridad (SIEM) que se utiliza para monitorear la seguridad de la red de una organización y responder a incidentes de seguridad de la manera más rápida y completa posible. Aunque QRadar ya es increiblemente potente y personalizable por sí mismo, hay varias razones por las que podríamos querer mejorarlo con scripts de Python utilizando su completa API.
Veamos un ejemplo de cómo podrías usar la API de QRadar para obtener diferentes informaciones de su base de datos (ArielDB) usando Python. Lo primero que necesitamos antes es un token, que se crea desde el Admin – > Authorized Services
Vamos a empezar por algo muy simple, conectarnos y sacar los últimos 100 eventos detectados por la plataforma.
import requests
import json
# Configura las credenciales y la URL del servidor QRadar
qradar_host = 'https://<your_qradar_host>'
api_token = '<your_api_token>'
# Define la URL de la API para obtener los eventos
url = f'{qradar_host}/api/ariel/searches'
# Define los encabezados de la solicitud
headers = {
'SEC': api_token,
'Content-Type': 'application/json',
'Accept': 'application/json'
}
# Define la consulta AQL (Ariel Query Language) para obtener los últimos 100 eventos
query_data = {
'query_expression': 'SELECT * FROM events LAST 100'
}
# Realiza la solicitud a la API de QRadar
response = requests.post(url, headers=headers, data=json.dumps(query_data))
# Verifica que la solicitud fue exitosa
if response.status_code == 201:
print("Solicitud de búsqueda enviada correctamente.")
search_id = response.json()['search_id']
else:
print("Error al enviar la solicitud de búsqueda:", response.content)
En este ejemplo, reemplaza <your_qradar_host>
con la dirección del host de tu servidor QRadar y <your_api_token>
con el token de la API que obtuviste de tu instancia de QRadar.
Este código solicitará a QRadar que ejecute una búsqueda de los últimos 100 eventos. La respuesta a esta solicitud de búsqueda incluirá un ‘search_id’ que luego puedes usar para obtener los resultados de la búsqueda una vez que estén disponibles. Puedes cambiar esta consulta por cualquiera disponible en la guía que IBM nos facilita para aprovechar al máximo el Ariel Query Language de QRadar
Si bien en QRadar tenemos X-Force como módulo pre-determinado para realizar búsquedas de IPs maliciosas e integrarlas en nuestras reglas, por multitud de razones (incluido el fin del pago del soporte / SWMA a IBM) podemos querer usar fuentes abiertas para realizar este tipo de funciones. Un ejempo bastante habitual del que hablamos en nuestros cursos y talleres, es el mantener una serie de estructuras de datos actualizadas con IPs “maliciosas” obtenidas a través de fuentes de datos de cibserseguridad abiertas.
Usando la API de QRadar, podemos crear código en python para crear una regla que actualice constamentemente un reference_set que posteriormente utilizaremos en distintas reglas.
Para lograr lo que estás pidiendo, necesitarías dividirlo en dos pasos.
Programarlo en Python es muy sencillo:
Primero, descarga las IPs maliciosas de la fuente de inteligencia de seguridad de código abierto (en este caso, AlienVault OTX):
import requests
import json
otx_api_key = '<your_otx_api_key>'
otx_url = 'https://otx.alienvault.com:443/api/v1/indicators/export'
headers = {
'X-OTX-API-KEY': otx_api_key,
}
response = requests.get(otx_url, headers=headers)
if response.status_code == 200:
malicious_ips = response.json()
else:
print("Error al obtener las IPs maliciosas:", response.content)
A continuación usamos la API de QRadar para actualizar un reference set con esas IPs:
qradar_host = 'https://<your_qradar_host>'
api_token = '<your_api_token>'
reference_set_name = '<your_reference_set_name>'
url = f'{qradar_host}/api/reference_data/sets/{reference_set_name}'
headers = {
'SEC': api_token,
'Content-Type': 'application/json',
'Accept': 'application/json'
}
for ip in malicious_ips:
data = {'value': ip}
response = requests.post(url, headers=headers, data=json.dumps(data))
if response.status_code != 201:
print(f"Error al agregar la IP {ip} al conjunto de referencia:", response.content)
El siguiente y último paso paso es utilizar este reference set en las reglas que necesitemos ¡Facil!
Consulta nuestros servicios de venta, despliegue, consultoríay formación oficial.
Post en constante actualización (basada exclusivamente en la opiniones y expectativas de SIXE) La evolución…
¿Mi Power9 está obsoleto?, ¿pasamos a Power10 o Power11? Para un momento, no te precipites.…
¿Sabías que muchos sistemas AIX están "funcionando bien" hasta que, de repente... dejan de hacerlo?😱…
La evolución de la arquitectura Power de IBM ha sido objeto de intenso debate en…
¿Sabías que mientras has abierto el navegador para leer esto... tu ordenador ha decidido priorizar…
En una conversación reciente con lo que yo llamo los Magos de Power, es decir,…