Raccogli i log IOC di Palo Alto Networks

Supportato in:

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.

  1. In Cortex XSOAR o XSIAM, installa il pacchetto di contenuti TAXII Server da Settings & Info (Impostazioni e informazioni) > Settings (Impostazioni) > Integrations (Integrazioni) > Marketplace.
  2. Vai a Impostazioni > Integrazioni > Istanze, cerca Server TAXII2 e fai clic su Aggiungi istanza.
  3. 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.
  4. Nel campo JSON raccolta, incolla quanto segue. Pubblica una raccolta denominata SecOpsIOCs che contiene i tipi di indicatori supportati dal parser STIX:

    {
        "SecOpsIOCs": {
            "query": "type:IP or type:Domain or type:URL or type:File or type:Email",
            "description": "Indicators exported to Google SecOps"
        }
    }
    
  5. Fai clic su Salva ed esci e attiva l'istanza. Verifica che lo stato dell'istanza sia In esecuzione.

  6. 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-collections
    
  7. Dall'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.

Abilita le API Google Cloud richieste

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

  1. 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.json
    
  2. Crea il secret della password TAXII:

    printf '%s' 'YOUR_TAXII_PASSWORD' | gcloud secrets create taxii-password --data-file=-
    
  3. 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

  1. 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"
    
  2. 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.

  1. 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_taxii
    
  2. Crea un file denominato .env.yml con 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"
    
  3. 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.yml
    
  4. Salva 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

  1. 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"
    
  2. 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

  1. Attiva un'esecuzione iniziale:

    gcloud scheduler jobs run stix-taxii-scheduler --location=us-central1
    
  2. Esamina i log della funzione:

    gcloud functions logs read stix-taxii-ingestion --region=us-central1 --gen2 --limit=50
    
  3. In Google SecOps, cerca gli eventi con il tipo di log STIX per 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.