איסוף יומנים של DHS IOC

גרסת כלי הניתוח: 1.0

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומני IOC של Department of Homeland Security (DHS) ב-Google Security Operations באמצעות Google Cloud Storage V2.

משרד ביטחון המולדת (DHS) מפיץ מודיעין איומי סייבר באמצעות התוכנית Automated Indicator Sharing (שיתוף אוטומטי של אינדיקטורים, AIS), ומספק סימנים מחשידים (IoC) כמו כתובות IP זדוניות, דומיינים, כתובות URL וגיבוב קבצים בפורמט STIX/TAXII. מכיוון ש-AIS מספק נתוני IOC כחבילות STIX שאפשר להוריד, צריך לייצא את הקבצים האלה לקטגוריה של Google Cloud Storage ‏ (GCS) ואז להגדיר פיד של Google SecOps כדי להטמיע אותם.

לפני שמתחילים

חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:

  • מופע של Google SecOps
  • פרויקט בענן של Google Cloud שמופעל בו Cloud Storage API
  • הרשאות ליצירה ולניהול של מאגרי GCS
  • הרשאות לניהול מדיניות IAM בקטגוריות GCS
  • חשבון פעיל ב-DHS AIS עם גישה לשרת TAXII או לפורטל AIS
  • קובצי אישור לקוח ומפתח פרטי של AIS לאימות שרת TAXII

יצירת קטגוריה של Google Cloud Storage

  1. נכנסים אל מסוף Google Cloud.
  2. בוחרים פרויקט או יוצרים פרויקט חדש.
  3. בתפריט הניווט, עוברים אל Cloud Storage > Buckets.
  4. לוחצים על Create bucket.
  5. מספקים את פרטי ההגדרה הבאים:

    הגדרה ערך
    Name your bucket (שם הקטגוריה) מזינים שם ייחודי גלובלית (לדוגמה, dhs-ioc-logs)
    סוג המיקום בוחרים לפי הצרכים (אזור, שני אזורים, מספר אזורים)
    Location בוחרים את המיקום הכי קרוב למופע של Google SecOps (לדוגמה, us-central1)
    סוג אחסון (storage class) רגיל (מומלץ ליומנים שמתבצעת אליהם גישה לעיתים קרובות)
    בקרת גישה אחיד (מומלץ)
    כלים להגנה אופציונלי: הפעלת ניהול גרסאות של אובייקטים או מדיניות שמירת נתונים
  6. לוחצים על יצירה.

הגדרת ייצוא אוטומטי של נתוני IOC של DHS ל-GCS

משרד DHS מפיץ נתוני IOC בפורמט STIX דרך שרת ה-TAXII של AIS. הגדרת צינור אוטומטי לשליפת אינדיקטורים לפי לוח זמנים ולכתיבתם ישירות ל-GCS.

שימוש ב-Cloud Build שמופעל על ידי Cloud Scheduler כדי להריץ משימה בקונטיינר שמביאה חבילות STIX משרת AIS TAXII וכותבת אותן ל-GCS.

  1. מאחסנים את אישור הלקוח ואת המפתח של AIS ב-Secret Manager:

    1. במסוף GCP, עוברים אל Security > Secret Manager (אבטחה > ניהול סודות).
    2. לוחצים על Create Secret (יצירת סוד).
    3. יוצרים שני סודות:
      • ‫Name: ais-client-cert, Value: התוכן של קובץ ה-PEM של אישור הלקוח שלכם ב-AIS.
      • ‫Name: ais-client-key, Value: התוכן של קובץ ה-PEM של המפתח הפרטי של לקוח AIS.
  2. יוצרים חשבון שירות למשימת הייצוא:

    1. במסוף GCP, עוברים אל IAM & Admin > Service Accounts.
    2. לוחצים על יצירת חשבון שירות.
    3. מספקים את פרטי ההגדרה הבאים:
      • שם חשבון השירות: מזינים dhs-ioc-export-sa
      • תיאור חשבון השירות: מזינים Service account for automated DHS IOC export to GCS
    4. לוחצים על יצירה והמשך.
    5. מוסיפים את התפקידים הבאים:
      • אדמין של אובייקט אחסון (לכתיבת קבצים ב-GCS)
      • עריכה ב-Cloud Build (להרצת משימות של Cloud Build)
      • ‫Secret Manager Secret Accessor (לקריאת אישורי AIS)
    6. לוחצים על סיום.
  3. יוצרים קובץ תצורת build של 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. יוצרים משימה של Cloud Scheduler כדי להפעיל את הבנייה:

    1. במסוף GCP, עוברים אל Cloud Scheduler.
    2. לוחצים על Create Job (יצירת משימה).
    3. מספקים את פרטי ההגדרה הבאים:

      הגדרה ערך
      שם dhs-ioc-export-hourly
      אזור בוחרים את אותו אזור שבו נמצא מאגר GCS
      תדירות 0 * * * * (כל שעה)
      אזור זמן UTC (מומלץ)
      סוג הטירגוט HTTP
      כתובת URL https://cloudbuild.googleapis.com/v1/projects/YOUR_PROJECT_ID/builds
      שיטת HTTP POST
      כותרת אימות הוספת טוקן OAuth
      חשבון שירות dhs-ioc-export-sa@YOUR_PROJECT_ID.iam.gserviceaccount.com
    4. לוחצים על יצירה.

אפשרות 2: מכונה וירטואלית ב-Compute Engine עם cron (אפשרות חלופית)

אם Cloud Build לא זמין, אפשר להשתמש במכונה וירטואלית קטנה ב-Compute Engine עם משימת cron כדי לשלוף נתוני IOC ולכתוב אותם ל-GCS.

  1. יצירת מכונה וירטואלית ב-Compute Engine:

    1. במסוף GCP, עוברים אל Compute Engine > VM instances.
    2. לוחצים על Create instance.
    3. בוחרים סוג מכונה קטן (לדוגמה, e2-micro).
    4. בקטע Identity and API access (זהות וגישה ל-API), בוחרים חשבון שירות עם התפקיד Storage Object Admin (אדמין אובייקט אחסון).
    5. לוחצים על יצירה.
  2. מתחברים למכונה הווירטואלית באמצעות SSH ויוצרים סקריפט ייצוא (/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. הופכים את הסקריפט לסקריפט שניתן להפעלה ומתזמנים אותו באמצעות 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 -
    

אחזור חשבון השירות של Google SecOps

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על הוספת פיד חדש.
  3. לוחצים על Configure a single feed (הגדרת פיד יחיד).
  4. בשדה שם הפיד, מזינים שם לפיד (לדוגמה, DHS IOC Feed).
  5. בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות Department of Homeland Security (המשרד לביטחון המולדת) בתור סוג היומן.
  7. לוחצים על קבלת חשבון שירות.
  8. תוצג כתובת האימייל בחשבון שירות ייחודי, לדוגמה:

    chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com
    
  9. מעתיקים את כתובת האימייל הזו לשימוש בשלב הבא.

הענקת הרשאות IAM לחשבון השירות של Google SecOps

לחשבון השירות של Google SecOps צריך להיות התפקיד צפייה באובייקט אחסון בקטגוריה של GCS.

  1. עוברים אל Cloud Storage > Buckets (קטגוריות).
  2. לוחצים על שם הקטגוריה (לדוגמה, dhs-ioc-logs).
  3. עוברים לכרטיסייה Permissions.
  4. לוחצים על הענקת גישה.
  5. מספקים את פרטי ההגדרה הבאים:
    • Add principals (הוספת ישויות מורשות): מדביקים את כתובת האימייל בחשבון של חשבון השירות של Google SecOps (לדוגמה, chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.com).
    • הקצאת תפקידים: בוחרים באפשרות צפייה באובייקט אחסון.
  6. לוחצים על Save.

הגדרת הפיד של Google SecOps

  1. עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
  2. לוחצים על הוספת פיד חדש.
  3. לוחצים על Configure a single feed (הגדרת פיד יחיד).
  4. בשדה שם הפיד, מזינים שם לפיד (לדוגמה, DHS IOC Feed).
  5. בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
  6. בוחרים באפשרות Department of Homeland Security (המשרד לביטחון המולדת) בתור סוג היומן.
  7. לוחצים על הבא.
  8. מציינים ערכים לפרמטרים הבאים של הקלט:

    • כתובת ה-URL של קטגוריית האחסון: מזינים את ה-URI של קטגוריית GCS:

      gs://dhs-ioc-logs/ioc-data/
      
      • מחליפים את dhs-ioc-logs בשם של קטגוריית GCS.
      • מחליפים את ioc-data בנתיב הקידומת שהגדרתם.
    • אפשרות למחיקת המקור: בוחרים את אפשרות המחיקה לפי ההעדפה שלכם:

      • אף פעם: לא נמחקים קבצים אחרי ההעברה (מומלץ לבדיקות).
      • מחיקת קבצים שהועברו וספריות ריקות: מחיקת קבצים וספריות ריקות אחרי שההעברה מסתיימת בהצלחה.

    • הגיל המקסימלי של הקובץ: כולל קבצים ששונו במספר הימים האחרון (ברירת המחדל היא 180 ימים).

    • מרחב השמות של הנכס: מרחב השמות של הנכס.

    • תוויות להוספה: התווית שתתווסף לאירועים מהפיד הזה.

  9. לוחצים על הבא.

  10. בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.

טבלת מיפוי UDM

שדה ביומן מיפוי UDM היגיון
entity.application שם או מזהה של אפליקציה
observable_id entity.asset.asset_id מזהה נכס
object_id entity.asset.product_object_id מזהה אובייקט של מוצר
hash_value entity.file.md5 גיבוב MD5 של הקובץ
hash_value entity.file.sha1 גיבוב SHA1 של הקובץ
hash_value entity.file.sha256 גיבוב SHA256 של הקובץ
file_size entity.file.size גודל הקובץ בבייטים
fuzzy_hash_value entity.file.ssdeep גיבוב SSDEEP של הקובץ
file_path entity.file.full_path נתיב הקובץ המלא
ip_address_value entity.ip כתובת IP
מדינה entity.location.country_or_region מדינה או אזור
administrativeArea entity.location.state מדינה או מחוז
יציאה entity.port מספר יציאה
file_name_label entity.resource.attribute.labels תוויות מאפיינים של המשאב
url entity.url כתובת URL
organisationInfo entity.user.department מחלקה
email_address, email entity.user.email_addresses כתובות אימייל
organisationName entity.user.userid מזהה משתמש
ioc.domain_and_ports.domain שם דומיין
indicator_type, confidence_value ioc.feed_name שם הפיד
ip_address_value, target_ip ioc.ip_and_ports.ip_address כתובת IP
יציאה ioc.ip_and_ports.ports יציאות
description, desc1, ttp_description metadata.description תיאור
entity_type metadata.entity_type סוג הישות
start_time metadata.interval.start_time שעת ההתחלה של מרווח הזמן
object_id metadata.product_entity_id מזהה ישות מוצר
sightings_count_label metadata.source_labels תוויות של מקור
security_result_data, ttp_security_result metadata.threat פרטים על סכנות
metadata.vendor_name שם הספק או שם חברה
metadata.product_name שם המוצר
address_label, subject_label, file_label security_result.about.labels תוויות לגבי תוצאת האבטחה
indicator_type security_result_data.category_details פרטי הקטגוריה
desc1 security_result_data.description תיאור
confidence_value security_result_data.severity רמת החומרה
host, domain_name target.hostname שם המארח של היעד
target_ip target.ip כתובת ה-IP של היעד
domain_name target.url כתובת URL של יעד
malware_category ttp_security_result.category_details פרטי הקטגוריה של TTP
ttp_id_label ttp_security_result.detection_fields שדות זיהוי של TTP
ttp_description ttp_security_result.description תיאור של TTP
ttp_summary ttp_security_result.summary סיכום של TTP

יומן שינויים

צפייה ביומן השינויים של מנתח התוכן הזה

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.