Raccogli i log IOC di DHS
Parser Version: 1.0
Questo documento spiega come importare i log IOC del Dipartimento per la sicurezza interna (DHS) in Google Security Operations utilizzando Google Cloud Storage V2.
L'DHS distribuisce la threat intelligence tramite il programma Automated Indicator Sharing (AIS), fornendo indicatori di compromissione come indirizzi IP, domini, URL e hash di file dannosi in formato STIX/TAXII. Poiché AIS fornisce i dati IOC come bundle STIX scaricabili, devi esportare questi file in un bucket Google Cloud Storage (GCS) e poi configurare un feed Google SecOps per importarli.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza Google SecOps
- Un progetto cloud Google Cloud con l'API Storage Cloud Storage abilitata
- Autorizzazioni per creare e gestire bucket GCS
- Autorizzazioni per gestire le policy IAM nei bucket GCS
- Un account partecipante AIS DHS attivo con accesso al server TAXII o al portale AIS
- File del certificato client e della chiave privata AIS per l'autenticazione del server TAXII
Crea un bucket Google Cloud Storage
- Vai alla console Google Cloud.
- Seleziona il tuo progetto o creane uno nuovo.
- Nel menu di navigazione, vai a Cloud Storage > Bucket.
- Fai clic su Crea bucket.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Assegna un nome al bucket Inserisci un nome univoco globale (ad esempio dhs-ioc-logs).Tipo di località Scegli in base alle tue esigenze (regione singola, a due regioni, multiregionale) Località Seleziona la località più vicina alla tua istanza Google SecOps (ad esempio us-central1).Classe di archiviazione Standard (consigliato per i log a cui si accede di frequente) Controllo degli accessi Uniforme (consigliato) Strumenti di protezione (Facoltativo) Abilita il controllo delle versioni degli oggetti o la policy di conservazione Fai clic su Crea.
Configura un'esportazione automatica dei dati IOC di DHS in GCS
L'DHS distribuisce i dati IOC in formato STIX tramite il server AIS TAXII. Configura una pipeline automatizzata per estrarre gli indicatori in base a una pianificazione e scriverli direttamente in GCS.
Opzione 1: Cloud Scheduler con Cloud Build (consigliata)
Utilizza Cloud Build attivato da Cloud Scheduler per eseguire un job in container che recupera i bundle STIX dal server AIS TAXII e li scrive in GCS.
Archivia il certificato e la chiave del client AIS in Secret Manager:
- Nella console Google Cloud, vai a Sicurezza > Secret Manager.
- Fai clic su Crea secret.
- Crea due secret:
- Nome:
ais-client-cert, Valore: contenuti del file PEM del certificato client AIS. - Nome:
ais-client-key, Valore: contenuti del file PEM della chiave privata del client AIS.
- Nome:
Crea un account di servizio per il job di esportazione:
- Nella console Google Cloud, vai a IAM e amministrazione > Service account.
- Fai clic su Crea account di servizio.
- Fornisci i seguenti dettagli di configurazione:
- Nome del service account: inserisci
dhs-ioc-export-sa - Descrizione service account: inserisci
Service account for automated DHS IOC export to GCS
- Nome del service account: inserisci
- Fai clic su Crea e continua.
- Aggiungi i seguenti ruoli:
- Storage Object Admin (per scrivere file in GCS)
- Editor Cloud Build (per eseguire i job Cloud Build)
- Secret Manager Secret Accessor (per leggere i certificati AIS)
- Fai clic su Fine.
Crea un file di configurazione di 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'Crea un job Cloud Scheduler per attivare la build:
- Nella console Google Cloud, vai a Cloud Scheduler.
- Fai clic su Crea job.
Fornisci i seguenti dettagli di configurazione:
Impostazione Valore Nome dhs-ioc-export-hourlyRegione Seleziona la stessa regione del bucket GCS Frequenza 0 * * * *(ogni ora)Fuso orario UTC (consigliato) Tipo di target HTTP URL https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/buildsMetodo HTTP POST Intestazione autorizzazione Aggiungi un token OAuth Service account dhs-ioc-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.comFai clic su Crea.
Opzione 2: VM Compute Engine con cron (alternativa)
Se Cloud Build non è disponibile, utilizza una piccola VM Compute Engine con un cron job per estrarre i dati IoC e scriverli in GCS.
Crea una VM di Compute Engine:
- Nella console GCP, vai a Compute Engine > Istanze VM.
- Fai clic su Crea istanza.
- Seleziona un tipo di macchina piccolo (ad esempio
e2-micro). - In Identità e accesso API, seleziona un account di servizio con il ruolo Storage Object Admin.
- Fai clic su Crea.
Accedi tramite SSH alla VM e crea uno script di esportazione (
/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"Rendi eseguibile lo script e pianificalo con 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 -
Recuperare il account di servizio Google SecOps
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
DHS IOC Feed). - Seleziona Google Cloud Storage V2 come Tipo di origine.
- Seleziona Department of Homeland Security come Tipo di log.
- Fai clic su Ottieni service account.
Verrà visualizzato un indirizzo email del account di servizio univoco, ad esempio:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comCopia questo indirizzo email per utilizzarlo nel passaggio successivo.
Concedi le autorizzazioni IAM al account di servizio Google SecOps
Il account di servizio Google SecOps deve avere il ruolo Visualizzatore oggetti Storage nel tuo bucket GCS.
- Vai a Cloud Storage > Bucket.
- Fai clic sul nome del bucket (ad esempio
dhs-ioc-logs). - Vai alla scheda Autorizzazioni.
- Fai clic su Concedi l'accesso.
- Fornisci i seguenti dettagli di configurazione:
- Aggiungi entità: incolla l'email dell'account di servizio Google SecOps (ad esempio,
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com). - Assegna ruoli: seleziona Visualizzatore oggetti Storage.
- Aggiungi entità: incolla l'email dell'account di servizio Google SecOps (ad esempio,
Fai clic su Salva.
Configura il feed Google SecOps
- Vai a Impostazioni SIEM > Feed.
- Fai clic su Aggiungi nuovo feed.
- Fai clic su Configura un singolo feed.
- Nel campo Nome feed, inserisci un nome per il feed (ad esempio,
DHS IOC Feed). - Seleziona Google Cloud Storage V2 come Tipo di origine.
- Seleziona Department of Homeland Security come Tipo di log.
- Fai clic su Avanti.
Specifica i valori per i seguenti parametri di input:
URL del bucket di archiviazione: inserisci l'URI del bucket GCS:
gs://dhs-ioc-logs/ioc-data/- Sostituisci
dhs-ioc-logscon il nome del tuo bucket GCS. - Sostituisci
ioc-datacon il percorso del prefisso configurato.
- Sostituisci
Opzione di eliminazione dell'origine: seleziona l'opzione di eliminazione in base alle tue preferenze:
- Mai: non elimina mai i file dopo i trasferimenti (opzione consigliata per i test).
Elimina file trasferiti e directory vuote: elimina i file e le directory vuote dopo il trasferimento riuscito.
Età massima file: includi i file modificati nell'ultimo numero di giorni (il valore predefinito è 180 giorni).
Spazio dei nomi dell'asset: lo spazio dei nomi dell'asset.
Etichette di importazione: l'etichetta da applicare agli eventi di questo feed.
Fai clic su Avanti.
Controlla la nuova configurazione del feed nella schermata Finalizza e poi fai clic su Invia.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
| entity.application | Nome o identificatore dell'applicazione | |
| observable_id | entity.asset.asset_id | Identificatore asset |
| object_id | entity.asset.product_object_id | Identificatore dell'oggetto prodotto |
| hash_value | entity.file.md5 | Hash MD5 del file |
| hash_value | entity.file.sha1 | Hash SHA1 del file |
| hash_value | entity.file.sha256 | Hash SHA256 del file |
| file_size | entity.file.size | Dimensioni del file in byte |
| fuzzy_hash_value | entity.file.ssdeep | Hash SSDEEP del file |
| file_path | entity.file.full_path | Percorso file completo |
| ip_address_value | entity.ip | Indirizzo IP |
| country | entity.location.country_or_region | Paese o regione |
| administrativeArea | entity.location.state | Stato o provincia |
| porta | entity.port | Numero porta |
| file_name_label | entity.resource.attribute.labels | Etichette degli attributi per la risorsa |
| url | entity.url | URL |
| organisationInfo | entity.user.department | Reparto |
| email_address, email | entity.user.email_addresses | Indirizzi email |
| organisationName | entity.user.userid | ID utente |
| ioc.domain_and_ports.domain | Nome di dominio | |
| indicator_type, confidence_value | ioc.feed_name | Nome feed |
| ip_address_value, target_ip | ioc.ip_and_ports.ip_address | Indirizzo IP |
| porta | ioc.ip_and_ports.ports | Porte |
| description, desc1, ttp_description | metadata.description | Descrizione |
| entity_type | metadata.entity_type | Tipo di entità |
| start_time | metadata.interval.start_time | Ora di inizio dell'intervallo |
| object_id | metadata.product_entity_id | Identificatore entità prodotto |
| sightings_count_label | metadata.source_labels | Etichette delle origini |
| security_result_data, ttp_security_result | metadata.threat | Informazioni sulle minacce |
| metadata.vendor_name | Nome del fornitore o dell'azienda | |
| metadata.product_name | Nome del prodotto | |
| address_label, subject_label, file_label | security_result.about.labels | Etichette relative al risultato di sicurezza |
| indicator_type | security_result_data.category_details | Dettagli categoria |
| desc1 | security_result_data.description | Descrizione |
| confidence_value | security_result_data.severity | Livello di gravità |
| host, domain_name | target.hostname | Nome host di destinazione |
| target_ip | target.ip | Indirizzo IP di destinazione |
| domain_name | target.url | URL target |
| malware_category | ttp_security_result.category_details | Dettagli della categoria per TTP |
| ttp_id_label | ttp_security_result.detection_fields | Campi di rilevamento per TTP |
| ttp_description | ttp_security_result.description | Descrizione per TTP |
| ttp_summary | ttp_security_result.summary | Riepilogo per TTP |
Log delle modifiche
Visualizza il log delle modifiche per questo parser
Hai bisogno di ulteriore assistenza? Ricevi risposte dai membri della community e dai professionisti di Google SecOps.