Raccogli i log IOC di Palo Alto Networks
Questo documento spiega come importare gli indicatori di compromissione (IOC) di Palo Alto Networks in Google Security Operations utilizzando STIX su TAXII. Lo script di importazione stix_taxii (una funzione Cloud Run) estrae gli indicatori da un server Palo Alto TAXII 2.1 in base a una pianificazione e li invia a Google SecOps utilizzando il tipo di log STIX.
Palo Alto Networks espone gli IOC come feed STIX 2.1 su TAXII da Cortex XSOAR o XSIAM Threat Intelligence Management (TIM). Il parser STIX in Google SecOps mappa i tipi di indicatori comuni (indirizzi IPv4, domini, URL, hash di file e indirizzi email) a UDM.
Prima di iniziare
Assicurati di soddisfare i seguenti prerequisiti:
- Un'istanza di Google SecOps e il file di autenticazione dell'importazione di Google SecOps (il file JSON dell'account di servizio) e l'ID cliente.
- Un progetto Google Cloud con fatturazione abilitata e autorizzazioni per creare service account, secret di Secret Manager, funzioni Cloud Run Functions e job Cloud Scheduler.
Palo Alto Cortex XSOAR o XSIAM con una licenza Threat Intelligence Management (TIM) e accesso con privilegi per configurare le integrazioni.
Configurare il feed Palo Alto TAXII 2.1 in Cortex TIM
L'integrazione TAXII2 Server pubblica gli indicatori Cortex XSOAR o XSIAM come feed TAXII 2.1 in uscita che lo script di importazione recupera.
- In Cortex XSOAR o XSIAM, installa il pacchetto di contenuti TAXII Server da Settings & Info (Impostazioni e informazioni) > Settings (Impostazioni) > Integrations (Integrazioni) > Marketplace.
- Vai a Impostazioni > Integrazioni > Istanze, cerca Server TAXII2 e fai clic su Aggiungi istanza.
- Fornisci i seguenti dettagli di configurazione:
- Nome: inserisci un nome per l'istanza (ad esempio,
SecOps-TAXII). - Istanza con tempi di esecuzione lunghi: attiva questa opzione.
- Versione server TAXII2: seleziona 2.1.
- Credenziali: imposta il nome utente e la password utilizzati dallo script di importazione per l'autenticazione HTTP Basic.
- Nome: inserisci un nome per l'istanza (ad esempio,
Nel campo JSON raccolta, incolla quanto segue. Pubblica una raccolta denominata
SecOpsIOCsche contiene i tipi di indicatori supportati dal parserSTIX:{ "SecOpsIOCs": { "query": "type:IP or type:Domain or type:URL or type:File or type:Email", "description": "Indicators exported to Google SecOps" } }Fai clic su Salva ed esci e attiva l'istanza. Verifica che lo stato dell'istanza sia In esecuzione.
Nel playground Google SecOps o nella barra dei comandi dell'integrazione, esegui i seguenti comandi e salva l'output:
!taxii-server-info !taxii-server-list-collectionsDall'output comando, salva questi valori per il passaggio di deployment:
- URL Discovery: l'URL di base dell'API restituito da
!taxii-server-info(ad esempio,https://ext-TENANT.crtx.REGION.paloaltonetworks.com/xsoar/instance/execute/SecOps-TAXII/threatintel/). - Nome della raccolta:
SecOpsIOCs. - Nome utente e password: le credenziali di autenticazione di base che hai impostato.
- URL Discovery: l'URL di base dell'API restituito da
Abilita le API Google Cloud richieste
Nella console Google Cloud , apri Cloud Shell ed esegui:
gcloud services enable \ cloudfunctions.googleapis.com \ cloudbuild.googleapis.com \ cloudscheduler.googleapis.com \ secretmanager.googleapis.com
Archivia le credenziali in Secret Manager
Lo script legge il file JSON del account di servizio Google SecOps e la password TAXII da Secret Manager.
Crea il secret account di servizio di importazione di Google SecOps dal file di autenticazione dell'importazione:
gcloud secrets create secops-ingestion-sa --data-file=./ingestion-auth.jsonCrea il secret della password TAXII:
printf '%s' 'YOUR_TAXII_PASSWORD' | gcloud secrets create taxii-password --data-file=-Salva entrambi i nomi delle risorse nel formato
projects/PROJECT_ID/secrets/SECRET_NAME/versions/latest. Le utilizzi in.env.yml.
Crea un account di servizio per la funzione
Crea un account di servizio di runtime per la funzione Cloud Run:
gcloud iam service-accounts create stix-taxii-sa \ --display-name="STIX/TAXII ingestion function"Concedi l'accesso ai due secret:
gcloud secrets add-iam-policy-binding secops-ingestion-sa \ --member="serviceAccount:stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor" gcloud secrets add-iam-policy-binding taxii-password \ --member="serviceAccount:stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com" \ --role="roles/secretmanager.secretAccessor"
Esegui il deployment dello script di importazione
Lo script di importazione stix_taxii è una funzione Cloud Run che estrae gli indicatori dal server TAXII e li trasmette in streaming a Google SecOps utilizzando l'API Ingestion. L'importazione avviene sempre utilizzando il tipo di log STIX.
In Cloud Shell, clona il repository degli script di importazione:
git clone https://github.com/chronicle/ingestion-scripts.git cp -r ingestion-scripts/common ingestion-scripts/stix_taxii/common cd ingestion-scripts/stix_taxiiCrea un file denominato
.env.ymlcon i seguenti contenuti. Sostituisci i valori segnaposto con quelli che hai salvato in precedenza:CHRONICLE_CUSTOMER_ID: "YOUR_CUSTOMER_ID" CHRONICLE_REGION: "us" CHRONICLE_SERVICE_ACCOUNT: "projects/PROJECT_ID/secrets/secops-ingestion-sa/versions/latest" TAXII_VERSION: "2.1" TAXII_DISCOVERY_URL: "https://ext-TENANT.crtx.REGION.paloaltonetworks.com/xsoar/instance/execute/SecOps-TAXII/threatintel/" TAXII_COLLECTION_NAMES: "SecOpsIOCs" TAXII_USERNAME: "YOUR_TAXII_USERNAME" TAXII_PASSWORD_SECRET_PATH: "projects/PROJECT_ID/secrets/taxii-password/versions/latest" POLL_INTERVAL: "60"Esegui il deployment della funzione:
gcloud functions deploy stix-taxii-ingestion \ --gen2 \ --entry-point main \ --trigger-http \ --runtime python312 \ --region us-central1 \ --service-account stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com \ --timeout 540 \ --memory 512MB \ --no-allow-unauthenticated \ --env-vars-file .env.ymlSalva l'URL di attivazione della funzione dall'output del deployment (ad esempio,
https://us-central1-PROJECT_ID.cloudfunctions.net/stix-taxii-ingestion).
Pianifica la funzione con Cloud Scheduler
Concedi al account di servizio l'autorizzazione per richiamare la funzione:
gcloud functions add-invoker-policy-binding stix-taxii-ingestion \ --region=us-central1 \ --member="serviceAccount:stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com"Crea un job di pianificazione che chiami la funzione ogni ora (corrispondi la frequenza a
POLL_INTERVAL):gcloud scheduler jobs create http stix-taxii-scheduler \ --location=us-central1 \ --schedule="0 */1 * * *" \ --uri="FUNCTION_TRIGGER_URL" \ --http-method=POST \ --oidc-service-account-email="stix-taxii-sa@PROJECT_ID.iam.gserviceaccount.com" \ --oidc-token-audience="FUNCTION_TRIGGER_URL"
Verifica il deployment
Attiva un'esecuzione iniziale:
gcloud scheduler jobs run stix-taxii-scheduler --location=us-central1Esamina i log della funzione:
gcloud functions logs read stix-taxii-ingestion --region=us-central1 --gen2 --limit=50In Google SecOps, cerca gli eventi con il tipo di log
STIXper verificare che gli indicatori vengano importati.
Tabella di mappatura UDM
| Campo log | Mappatura UDM | Logica |
|---|---|---|
observable.object.properties.type |
categorization |
Mappato direttamente |
type |
categorization |
Mappato direttamente |
x_ctix_confidence_score |
confidence_score |
Rinominate/mappate |
name |
domain_and_ports.domain |
Mappato direttamente |
observable.object.properties.value |
domain_and_ports.domain |
Mappata direttamente |
value |
domain_and_ports.domain |
Mappato direttamente |
type |
feed_name |
Mappato: "ipv4","ipv4-addr", "scan_ip", "mal_ip" → STIX-IOC, `"phish_domain", "domain", "… |
src_ip |
ip_and_ports.ip_address |
Mappato direttamente |
value |
ip_and_ports.ip_address |
Mappato direttamente |
src_port |
ip_and_ports.ports |
Unita |
type |
ip_and_ports.ports |
Mappatura: "ipv4","ipv4-addr", "scan_ip", "mal_ip" → src_port, ipv4-addr → src_port |
created |
metadata.event_timestamp |
Analizzato come ISO8601 |
modified |
metadata.event_timestamp |
Analizzato come ISO8601 |
timestamp |
metadata.event_timestamp |
Analizzato come ISO8601 |
valid_from |
metadata.event_timestamp |
Analizzato come ISO8601 |
valid_until |
metadata.event_timestamp |
Analizzato come ISO8601 |
| N/D | feed_name |
Costante: STIX-IOC |
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.