Collecter les journaux des IOC du DHS
Version de l'analyseur : 1.0
Ce document explique comment ingérer des journaux d'IOC (indicateurs de compromission) du Department of Homeland Security (DHS) dans Google Security Operations à l'aide de Google Cloud Storage V2.
Le DHS distribue des renseignements sur les menaces via le programme AIS (Automated Indicator Sharing). Il fournit des indicateurs de compromission tels que des adresses IP, des domaines, des URL et des hachages de fichiers malveillants au format STIX/TAXII. Étant donné qu'AIS fournit les données IOC sous forme de bundles STIX téléchargeables, vous devez exporter ces fichiers vers un bucket Google Cloud Storage (GCS), puis configurer un flux Google SecOps pour les ingérer.
Avant de commencer
Assurez-vous de remplir les conditions suivantes :
- Une instance Google SecOps
- Un projet Google Cloud avec l'API Cloud Storage activée
- Autorisations permettant de créer et de gérer des buckets GCS
- Autorisations permettant de gérer les stratégies IAM sur les buckets GCS
- Un compte actif de participant au programme AIS du DHS avec accès au serveur TAXII ou au portail AIS
- Fichiers de certificat client et de clé privée AIS pour l'authentification du serveur TAXII
Créer un bucket Google Cloud Storage
- Accédez à la console Google Cloud.
- Sélectionnez votre projet ou créez-en un.
- Dans le menu de navigation, accédez à Cloud Storage > Buckets.
- Cliquez sur Créer un bucket.
Fournissez les informations de configuration suivantes :
Paramètre Valeur Attribuez un nom au bucket Saisissez un nom unique (par exemple, dhs-ioc-logs).Type d'emplacement Choisissez en fonction de vos besoins (région, birégion, multirégion). Emplacement Sélectionnez l'emplacement le plus proche de votre instance Google SecOps (par exemple, us-central1).Classe de stockage Standard (recommandé pour les journaux auxquels vous accédez fréquemment) Access control (Contrôle des accès) Uniforme (recommandé) Outils de protection Facultatif : Activez la gestion des versions des objets ou la règle de conservation. Cliquez sur Créer.
Configurer une exportation automatique des données des FIO du DHS vers GCS
Le DHS distribue les données des IOC au format STIX via son serveur AIS TAXII. Configurez un pipeline automatisé pour extraire les indicateurs selon une programmation et les écrire directement dans GCS.
Option 1 : Cloud Scheduler avec Cloud Build (recommandé)
Utilisez Cloud Build déclenché par Cloud Scheduler pour exécuter un job conteneurisé qui récupère les bundles STIX à partir du serveur AIS TAXII et les écrit dans GCS.
Stockez le certificat et la clé du client AIS dans Secret Manager :
- Dans la console GCP, accédez à Sécurité > Secret Manager.
- Cliquez sur Créer un secret.
- Créez deux secrets :
- Nom :
ais-client-cert, Valeur : contenu de votre fichier PEM de certificat client AIS. - Nom :
ais-client-key, Valeur : contenu du fichier PEM de clé privée de votre client AIS.
- Nom :
Créez un compte de service pour le job d'exportation :
- Dans la console GCP, accédez à IAM et administration > Comptes de service.
- Cliquez sur Créer un compte de service.
- Fournissez les informations de configuration suivantes :
- Nom du compte de service : saisissez
dhs-ioc-export-sa. - Description du compte de service : saisissez
Service account for automated DHS IOC export to GCS.
- Nom du compte de service : saisissez
- Cliquez sur Créer et continuer.
- Ajoutez les rôles suivants :
- Administrateur des objets Storage (pour écrire des fichiers dans GCS)
- Éditeur Cloud Build (pour exécuter des jobs Cloud Build)
- Accesseur de secrets Secret Manager (pour lire les certificats AIS)
- Cliquez sur OK.
Créez un fichier de configuration Cloud Build (
cloudbuild.yaml) :steps: - name: 'gcr.io/cloud-builders/gcloud' entrypoint: 'bash' args: - '-c' - | apt-get update && apt-get install -y curl # Retrieve AIS certificates from Secret Manager gcloud secrets versions access latest --secret=ais-client-cert > /tmp/ais-cert.pem gcloud secrets versions access latest --secret=ais-client-key > /tmp/ais-key.pem # Fetch IOC data from AIS TAXII server TIMESTAMP=$(date -u +%Y%m%d_%H%M%S) FROM=$(date -u -d '-60 minutes' +"%Y-%m-%dT%H:%M:%SZ") curl -s --cert /tmp/ais-cert.pem --key /tmp/ais-key.pem \ -H "Accept: application/taxii+json;version=2.1" \ "https://ais2.cisa.dhs.gov/taxii2/ais2/collections/${_COLLECTION_ID}/objects?added_after=$${FROM}" \ -o /workspace/dhs_ioc_$${TIMESTAMP}.json # Upload to GCS gcloud storage cp /workspace/dhs_ioc_$${TIMESTAMP}.json \ gs://${_BUCKET_NAME}/ioc-data/ # Clean up certificates rm -f /tmp/ais-cert.pem /tmp/ais-key.pem substitutions: _BUCKET_NAME: 'dhs-ioc-logs' _COLLECTION_ID: 'YOUR_AIS_COLLECTION_ID'Créez un job Cloud Scheduler pour déclencher la compilation :
- Dans la console GCP, accédez à Cloud Scheduler.
- Cliquez sur Créer une tâche.
Fournissez les informations de configuration suivantes :
Paramètre Valeur Nom dhs-ioc-export-hourlyRégion Sélectionnez la même région que votre bucket GCS. Fréquence 0 * * * *(toutes les heures)Fuseau horaire UTC (recommandé) Type de cible HTTP URL https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/buildsMéthode HTTP POST En-tête d'authentification Ajouter un jeton OAuth Compte de service dhs-ioc-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.comCliquez sur Créer.
Option 2 : VM Compute Engine avec cron (alternative)
Si Cloud Build n'est pas disponible, utilisez une petite VM Compute Engine avec un job cron pour extraire les données d'IOC et les écrire dans GCS.
Créer une VM Compute Engine :
- Dans la console GCP, accédez à Compute Engine > Instances de VM.
- Cliquez sur Créer une instance.
- Sélectionnez un petit type de machine (par exemple,
e2-micro). - Sous Identité et accès à l'API, sélectionnez un compte de service avec le rôle Administrateur des objets Storage.
- Cliquez sur Créer.
Connectez-vous en SSH à la VM et créez un script d'exportation (
/opt/dhs-ioc/export.sh) :#!/usr/bin/env bash set -euo pipefail TAXII_URL="https://ais2.cisa.dhs.gov/taxii2" API_ROOT="ais2" COLLECTION_ID="YOUR_AIS_COLLECTION_ID" CERT="/etc/ais/client-cert.pem" KEY="/etc/ais/client-key.pem" BUCKET="dhs-ioc-logs" TIMESTAMP=$(date -u +%Y%m%d_%H%M%S) FROM=$(date -u -d '-60 minutes' +"%Y-%m-%dT%H:%M:%SZ") curl -s --cert "$CERT" --key "$KEY" \ -H "Accept: application/taxii+json;version=2.1" \ "${TAXII_URL}/${API_ROOT}/collections/${COLLECTION_ID}/objects?added_after=${FROM}" \ -o "/tmp/dhs_ioc_${TIMESTAMP}.json" gcloud storage cp "/tmp/dhs_ioc_${TIMESTAMP}.json" "gs://${BUCKET}/ioc-data/" rm -f "/tmp/dhs_ioc_${TIMESTAMP}.json"Rendez le script exécutable et planifiez-le avec cron :
chmod +x /opt/dhs-ioc/export.sh (crontab -l ; echo "0 * * * * /opt/dhs-ioc/export.sh >> /var/log/dhs-ioc-export.log 2>&1") | crontab -
Récupérer le compte de service Google SecOps
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Ajouter un flux.
- Cliquez sur Configurer un flux unique.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple,
DHS IOC Feed). - Sélectionnez Google Cloud Storage V2 comme Type de source.
- Sélectionnez Department of Homeland Security (Département de la sécurité intérieure) comme Type de journal.
- Cliquez sur Obtenir un compte de service.
Une adresse e-mail de compte de service unique s'affiche, par exemple :
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopiez cette adresse e-mail pour l'utiliser à l'étape suivante.
Accorder des autorisations IAM au compte de service Google SecOps
Le compte de service Google SecOps a besoin du rôle Lecteur des objets Storage sur votre bucket GCS.
- Accédez à Cloud Storage > Buckets.
- Cliquez sur le nom de votre bucket (par exemple,
dhs-ioc-logs). - Accédez à l'onglet Autorisations.
- Cliquez sur Accorder l'accès.
- Fournissez les informations de configuration suivantes :
- Ajouter des comptes principaux : collez l'adresse e-mail du compte de service Google SecOps (par exemple,
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com). - Attribuer des rôles : sélectionnez Lecteur d'objets Storage.
- Ajouter des comptes principaux : collez l'adresse e-mail du compte de service Google SecOps (par exemple,
Cliquez sur Enregistrer.
Configurer le flux Google SecOps
- Accédez à Paramètres SIEM> Flux.
- Cliquez sur Ajouter un flux.
- Cliquez sur Configurer un flux unique.
- Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple,
DHS IOC Feed). - Sélectionnez Google Cloud Storage V2 comme Type de source.
- Sélectionnez Department of Homeland Security (Département de la sécurité intérieure) comme Type de journal.
- Cliquez sur Suivant.
Spécifiez les valeurs des paramètres d'entrée suivants :
URL du bucket de stockage : saisissez l'URI du bucket GCS :
gs://dhs-ioc-logs/ioc-data/- Remplacez
dhs-ioc-logspar le nom de votre bucket GCS. - Remplacez
ioc-datapar le chemin d'accès du préfixe que vous avez configuré.
- Remplacez
Option de suppression de la source : sélectionnez l'option de suppression de votre choix :
- Jamais : ne supprime jamais aucun fichier après les transferts (recommandé pour les tests).
Supprimer les fichiers transférés et les répertoires vides : supprime les fichiers et les répertoires vides une fois le transfert réussi.
Âge maximal du fichier : incluez les fichiers modifiés au cours des derniers jours (180 jours par défaut).
Espace de noms de l'élément : espace de noms de l'élément.
Libellés d'ingestion : libellé à appliquer aux événements de ce flux.
Cliquez sur Suivant.
Vérifiez la configuration de votre nouveau flux sur l'écran Finaliser, puis cliquez sur Envoyer.
Table de mappage UDM
| Champ de journal | Mappage UDM | Logique |
|---|---|---|
| entity.application | Nom ou identifiant de l'application | |
| observable_id | entity.asset.asset_id | Identifiant de l'élément |
| object_id | entity.asset.product_object_id | Identifiant de l'objet produit |
| hash_value | entity.file.md5 | Hachage MD5 du fichier |
| hash_value | entity.file.sha1 | Hachage SHA1 du fichier |
| hash_value | entity.file.sha256 | Hachage SHA256 du fichier |
| file_size | entity.file.size | Taille du fichier en octets |
| fuzzy_hash_value | entity.file.ssdeep | Hachage SSDEEP du fichier |
| file_path | entity.file.full_path | Chemin d'accès complet au fichier |
| ip_address_value | entity.ip | Adresse IP |
| pays | entity.location.country_or_region | Pays ou région |
| administrativeArea | entity.location.state | État ou province |
| port | entity.port | Numéro du port |
| file_name_label | entity.resource.attribute.labels | Libellés d'attributs pour la ressource |
| url | entity.url | URL |
| organisationInfo | entity.user.department | Département |
| email_address, email | entity.user.email_addresses | Adresses e-mail |
| organisationName | entity.user.userid | ID utilisateur |
| ioc.domain_and_ports.domain | Nom de domaine | |
| indicator_type, confidence_value | ioc.feed_name | Nom de flux |
| ip_address_value, target_ip | ioc.ip_and_ports.ip_address | Adresse IP |
| port | ioc.ip_and_ports.ports | Ports |
| description, desc1, ttp_description | metadata.description | Description |
| entity_type | metadata.entity_type | Type d'entité |
| start_time | metadata.interval.start_time | Heure de début de l'intervalle |
| object_id | metadata.product_entity_id | Identifiant de l'entité produit |
| sightings_count_label | metadata.source_labels | Étiquettes sources |
| security_result_data, ttp_security_result | metadata.threat | Informations sur la menace |
| metadata.vendor_name | Nom du fournisseur ou de l'entreprise | |
| metadata.product_name | Nom du produit | |
| address_label, subject_label, file_label | security_result.about.labels | Libellés concernant le résultat de sécurité |
| indicator_type | security_result_data.category_details | Détails de la catégorie |
| desc1 | security_result_data.description | Description |
| confidence_value | security_result_data.severity | Niveau de gravité |
| host, domain_name | target.hostname | Nom d'hôte de la cible |
| target_ip | target.ip | Adresse IP cible |
| domain_name | target.url | URL cible |
| malware_category | ttp_security_result.category_details | Détails des catégories pour les TTP |
| ttp_id_label | ttp_security_result.detection_fields | Champs de détection pour les TTP |
| ttp_description | ttp_security_result.description | Description pour TTP |
| ttp_summary | ttp_security_result.summary | Résumé pour le TTP |
Journal des modifications
Afficher le journal des modifications pour ce parseur
Vous avez encore besoin d'aide ? Obtenez des réponses de membres de la communauté et de professionnels Google SecOps.