Premiers pas avec l’API QRadar XDR en utilisant python et Alienvault OTX
IBM QRadar XDR est une plateforme de gestion des informations et des événements de sécurité (SIEM) utilisée pour surveiller la sécurité du réseau d’une organisation et répondre aux incidents de sécurité aussi rapidement et complètement que possible. Bien que QRadar soit déjà incroyablement puissant et personnalisable, il y a plusieurs raisons pour lesquelles nous pourrions vouloir l’améliorer avec des scripts Python en utilisant son API complète.
Démarrer avec l’API QRadar
Voyons un exemple de la manière dont vous pouvez utiliser l’API QRadar pour obtenir différentes informations de sa base de données (ArielDB) à l’aide de Python. La première chose dont nous avons besoin est un jeton, qui est créé à partir de l’interface Admin – > Authorised Services.
Générer du code python pour l’API QRadar
Commençons par quelque chose de très simple, se connecter et récupérer les 100 derniers événements détectés par la plateforme.
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)
Dans cet exemple, remplacez <your_qradar_host>
par l’adresse de votre serveur QRadar et <your_api_token>
par le jeton API que vous avez obtenu de votre instance QRadar.
Ce code invite QRadar à effectuer une recherche sur les 100 derniers événements. La réponse à cette demande de recherche comprendra un “search_id” que vous pourrez utiliser pour récupérer les résultats de la recherche une fois qu’ils seront disponibles. Vous pouvez remplacer cette requête par n’importe laquelle des requêtes disponibles dans le
guide fourni par IBM
sur la manière de tirer le meilleur parti du langage de requête Ariel de QRadar.
Détection d’IP malveillantes dans QRadar à l’aide des sources ouvertes AlienVault OTX
Alors que dans QRadar nous avons X-Force comme module prédéfini pour effectuer des recherches d’IP malveillantes et les intégrer dans nos règles, pour une multitude de raisons (y compris la fin du support / paiement SWMA à IBM) nous pouvons vouloir utiliser des sources ouvertes pour effectuer ces types de fonctions. Un exemple assez courant que nous abordons dans nos cours et ateliers consiste à maintenir une série de structures de données mises à jour avec des adresses IP “malveillantes” obtenues par le biais de sources de données ouvertes sur la cybersécurité.
En utilisant l’API QRadar, nous pouvons créer un code python pour créer une règle qui met constamment à jour un ensemble de références que nous utiliserons plus tard dans d’autres règles.
Pour réaliser ce que vous demandez, vous devez le diviser en deux étapes.
- Tout d’abord, vous devez disposer d’une source ouverte de renseignements sur la sécurité qui fournit une liste d’adresses IP malveillantes. Un exemple couramment utilisé est la liste d’adresses IP malveillantes AlienVault Open Threat Exchange (OTX) que nous venons de mentionner.
- Ensuite, nous utiliserons l’API QRadar pour mettre à jour un ensemble de référence avec cette liste d’adresses IP.
La programmation en Python est très simple :
Tout d’abord, téléchargez les adresses IP malveillantes à partir de la source ouverte de renseignements sur la sécurité (dans ce cas, 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)
Nous utilisons ensuite l’API QRadar pour mettre à jour un ensemble de références avec ces IP :
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)
La prochaine et dernière étape consiste à utiliser ce jeu de référence dans les règles dont nous avons besoin – facile !
Vous souhaitez en savoir plus sur IBM QRadar XDR ?
Consultez nos services de vente, déploiement, conseilet formation officielle.