Collecter les journaux des IOC du DHS

Version de l'analyseur : 1.0

Compatible avec :

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

  1. Accédez à la console Google Cloud.
  2. Sélectionnez votre projet ou créez-en un.
  3. Dans le menu de navigation, accédez à Cloud Storage > Buckets.
  4. Cliquez sur Créer un bucket.
  5. 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.
  6. 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.

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.

  1. Stockez le certificat et la clé du client AIS dans Secret Manager :

    1. Dans la console GCP, accédez à Sécurité > Secret Manager.
    2. Cliquez sur Créer un secret.
    3. 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.
  2. Créez un compte de service pour le job d'exportation :

    1. Dans la console GCP, accédez à IAM et administration > Comptes de service.
    2. Cliquez sur Créer un compte de service.
    3. 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.
    4. Cliquez sur Créer et continuer.
    5. 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)
    6. Cliquez sur OK.
  3. 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'
    
  4. Créez un job Cloud Scheduler pour déclencher la compilation :

    1. Dans la console GCP, accédez à Cloud Scheduler.
    2. Cliquez sur Créer une tâche.
    3. Fournissez les informations de configuration suivantes :

      Paramètre Valeur
      Nom dhs-ioc-export-hourly
      Ré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/builds
      Méthode HTTP POST
      En-tête d'authentification Ajouter un jeton OAuth
      Compte de service dhs-ioc-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
    4. Cliquez 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.

  1. Créer une VM Compute Engine :

    1. Dans la console GCP, accédez à Compute Engine > Instances de VM.
    2. Cliquez sur Créer une instance.
    3. Sélectionnez un petit type de machine (par exemple, e2-micro).
    4. Sous Identité et accès à l'API, sélectionnez un compte de service avec le rôle Administrateur des objets Storage.
    5. Cliquez sur Créer.
  2. 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"
    
  3. 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

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Ajouter un flux.
  3. Cliquez sur Configurer un flux unique.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, DHS IOC Feed).
  5. Sélectionnez Google Cloud Storage V2 comme Type de source.
  6. Sélectionnez Department of Homeland Security (Département de la sécurité intérieure) comme Type de journal.
  7. Cliquez sur Obtenir un compte de service.
  8. Une adresse e-mail de compte de service unique s'affiche, par exemple :

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. Copiez 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.

  1. Accédez à Cloud Storage > Buckets.
  2. Cliquez sur le nom de votre bucket (par exemple, dhs-ioc-logs).
  3. Accédez à l'onglet Autorisations.
  4. Cliquez sur Accorder l'accès.
  5. 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.
  6. Cliquez sur Enregistrer.

Configurer le flux Google SecOps

  1. Accédez à Paramètres SIEM> Flux.
  2. Cliquez sur Ajouter un flux.
  3. Cliquez sur Configurer un flux unique.
  4. Dans le champ Nom du flux, saisissez un nom pour le flux (par exemple, DHS IOC Feed).
  5. Sélectionnez Google Cloud Storage V2 comme Type de source.
  6. Sélectionnez Department of Homeland Security (Département de la sécurité intérieure) comme Type de journal.
  7. Cliquez sur Suivant.
  8. 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-logs par le nom de votre bucket GCS.
      • Remplacez ioc-data par le chemin d'accès du préfixe que vous avez configuré.
    • 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.

  9. Cliquez sur Suivant.

  10. 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.