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.
Primeros pasos con la API de QRadar
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
Generando el código en python para la API de QRadar
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
Detectando IPs maliciosas en QRadar usando fuentes abiertas de AlienVault OTX
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.
- Primero, necesitarías una fuente de inteligencia de seguridad de código abierto que proporcione una lista de IPs maliciosas. Un ejemplo comúnmente usado es la lista de IPs maliciosas de AlienVault Open Threat Exchange (OTX) que acabamos de mencionar.
- Luego, usaremos la API de QRadar para actualizar un “reference set” con esa lista de IPs.
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!
¿Quieres saber más de IBM QRadar XDR?
Consulta nuestros servicios de venta, despliegue, consultoríay formación oficial.