Mengumpulkan log Microsoft PowerShell

Didukung di:

Dokumen ini menjelaskan cara menyerap log Microsoft PowerShell ke Google Security Operations menggunakan agen Bindplane.

Microsoft PowerShell adalah framework otomatisasi tugas dan manajemen konfigurasi dari Microsoft, yang terdiri dari shell command line dan bahasa skrip. Log PowerShell merekam eksekusi skrip, aktivitas modul, dan pemanggilan perintah, sehingga memberikan visibilitas ke dalam operasi PowerShell untuk pemantauan keamanan dan analisis forensik.

Sebelum memulai

Pastikan Anda memiliki prasyarat berikut:

  • Instance Google SecOps
  • Windows Server 2016 atau yang lebih baru
  • Konektivitas jaringan antara host Windows dan Google SecOps
  • Jika beroperasi dari balik proxy, pastikan port firewall terbuka sesuai dengan persyaratan agen Bindplane
  • Akses administratif ke host Windows untuk mengonfigurasi logging PowerShell dan menginstal agen BindPlane

Mengonfigurasi logging PowerShell

Logging PowerShell harus diaktifkan di host Windows sebelum log dapat dikumpulkan. Secara default, logging PowerShell bersifat minimal. Aktifkan Logging Pemblokiran Skrip untuk merekam aktivitas PowerShell mendetail.

Mengaktifkan Logging Pemblokiran Skrip menggunakan kebijakan grup

  1. Buka Local Group Policy Editor dengan menjalankan gpedit.msc sebagai administrator.
  2. Buka Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell.
  3. Klik dua kali Turn on PowerShell Script Block Logging.
  4. Pilih Enabled.
  5. Atau, centang Log peristiwa mulai / berhenti pemanggilan blok skrip untuk merekam peristiwa mulai dan berhenti untuk setiap blok skrip. Perhatikan bahwa opsi ini menghasilkan log dalam jumlah besar.
  6. Klik Oke.
  7. Buka Command Prompt sebagai administrator dan jalankan gpupdate /force untuk menerapkan kebijakan secara langsung.

Mengaktifkan Logging Pemblokiran Skrip menggunakan registri

Atau, Anda dapat mengaktifkan Logging Pemblokiran Skrip dengan menyetel nilai registri berikut:

  1. Buka Registry Editor dengan menjalankan regedit sebagai administrator.
  2. Buka HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging.
  3. Jika kunci tidak ada, buat kunci tersebut.
  4. Buat DWORD (32-bit) Value baru bernama EnableScriptBlockLogging dan tetapkan nilainya ke 1.
  5. Mulai ulang sesi PowerShell agar perubahan diterapkan.

PowerShell Script Block Logging menulis peristiwa ke saluran log peristiwa Microsoft-Windows-PowerShell/Operational dengan ID Peristiwa 4104.

Opsional: Mengaktifkan logging modul

Logging Modul mencatat detail eksekusi pipeline untuk modul tertentu. Untuk mengaktifkan Pencatatan Log Modul untuk semua modul, lakukan hal berikut:

  1. Di Local Group Policy Editor, buka Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell.
  2. Klik dua kali Turn on Module Logging.
  3. Pilih Enabled.
  4. Klik Tampilkan di samping Nama Modul.
  5. Masukkan * untuk mencatat semua modul.
  6. Klik OK di jendela Module Names.
  7. Klik OK di jendela Module Logging.
  8. Jalankan gpupdate /force untuk menerapkan kebijakan.

Peristiwa Module Logging ditulis ke log peristiwa Windows PowerShell dengan ID Peristiwa 4103.

Opsional: Mengaktifkan transkripsi

Transkripsi membuat catatan berbasis teks dari semua input dan output sesi PowerShell. Untuk mengaktifkan Transkripsi, lakukan hal berikut:

  1. Di Local Group Policy Editor, buka Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell.
  2. Klik dua kali Turn on PowerShell Transcription.
  3. Pilih Enabled.
  4. Secara opsional, tentukan Direktori output transkrip. Jika dibiarkan kosong, transkrip akan disimpan ke folder Dokumen setiap pengguna.
  5. Centang Sertakan header pemanggilan untuk menyertakan stempel waktu dan metadata.
  6. Klik Oke.
  7. Jalankan gpupdate /force untuk menerapkan kebijakan.

Transkrip ditulis ke file teks dengan nama yang diawali dengan PowerShell_transcript.

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Klik Download untuk mendownload file autentikasi penyerapan.
  4. Simpan file dengan aman di host Windows tempat agen Bindplane akan diinstal.

Mendapatkan ID pelanggan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Profil.
  3. Salin dan simpan ID Pelanggan dari bagian Detail Organisasi.

Menginstal agen Bindplane

Instal agen BindPlane di host Windows Anda sesuai dengan petunjuk berikut.

Penginstalan Windows

  1. Buka Command Prompt atau PowerShell sebagai administrator.
  2. Jalankan perintah berikut:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. Tunggu hingga penginstalan selesai.

  4. Verifikasi penginstalan dengan menjalankan:

    sc query observiq-otel-collector
    

    Layanan akan ditampilkan sebagai RUNNING.

Referensi penginstalan tambahan

Untuk opsi penginstalan dan pemecahan masalah tambahan, lihat Panduan penginstalan agen BindPlane.

Mengonfigurasi agen BindPlane untuk mengumpulkan log PowerShell

Cari file konfigurasi Windows

  • Cari file konfigurasi Windows sebagai berikut:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

Edit file konfigurasi

  • Ganti seluruh konten config.yaml dengan konfigurasi berikut:

    receivers:
      windowseventlog/powershell:
        channel: Microsoft-Windows-PowerShell/Operational
        max_reads: 100
        poll_interval: 5s
        raw: true
        start_at: end
    
    processors:
      batch:
    
    exporters:
      chronicle/powershell:
        compression: gzip
        creds_file_path: 'C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json'
        customer_id: '<CUSTOMER_ID>'
        endpoint: malachiteingestion-pa.googleapis.com
        log_type: 'POWERSHELL'
        raw_log_field: body
        override_log_type: false
    
    service:
      pipelines:
        logs/powershell:
          receivers:
            - windowseventlog/powershell
          processors:
            - batch
          exporters:
            - chronicle/powershell
    

Parameter konfigurasi

Ganti placeholder berikut:

  • Konfigurasi penerima:

    • channel: Channel Log Peristiwa Windows yang akan dikumpulkan. Untuk Logging Blok Skrip PowerShell, gunakan Microsoft-Windows-PowerShell/Operational. Untuk Logging Modul, gunakan Windows PowerShell.
    • raw: Setel ke true untuk mengirim XML Log Peristiwa Windows mentah ke Google SecOps.
    • start_at: Setel ke end untuk mengumpulkan hanya peristiwa baru setelah agen dimulai. Setel ke beginning untuk mengumpulkan semua peristiwa yang ada.
  • Konfigurasi eksportir:

    • <CUSTOMER_ID>: Ganti dengan ID pelanggan dari langkah sebelumnya.
    • creds_file_path: Jalur lengkap ke file autentikasi penyerapan. Salin file autentikasi yang didownload ke lokasi ini.
    • endpoint: URL endpoint regional. Gunakan endpoint untuk region Google SecOps Anda:

      • Amerika Serikat: malachiteingestion-pa.googleapis.com
      • Eropa: europe-malachiteingestion-pa.googleapis.com
      • Asia: asia-southeast1-malachiteingestion-pa.googleapis.com
      • Lihat Endpoint Regional untuk mengetahui daftar lengkapnya.
    • log_type: Tetapkan ke POWERSHELL untuk menggunakan parser PowerShell.

Simpan file konfigurasi

Setelah mengedit, simpan file dengan mengklik File > Save.

Mulai ulang agen Bindplane untuk menerapkan perubahan

Windows

  • Menggunakan Command Prompt atau PowerShell sebagai administrator:

    net stop observiq-otel-collector && net start observiq-otel-collector
    
  • Atau menggunakan konsol Layanan:

    1. Tekan Win+R, ketik services.msc, lalu tekan Enter.
    2. Temukan observIQ OpenTelemetry Collector.
    3. Klik kanan, lalu pilih Mulai Ulang.
    4. Pastikan layanan sedang berjalan:

      sc query observiq-otel-collector
      
    5. Periksa log untuk mengetahui error:

      type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
      

Memverifikasi penyerapan log

Setelah mengonfigurasi agen BindPlane dan memulai ulang layanan, log PowerShell akan mulai mengalir ke Google SecOps.

  1. Login ke konsol Google SecOps.
  2. Buka Investigasi > Penelusuran.
  3. Jalankan penelusuran berikut untuk memverifikasi bahwa log PowerShell sedang di-ingest:

    metadata.log_type = "POWERSHELL"
    
  4. Pastikan peristiwa muncul dengan stempel waktu terbaru.

Peristiwa PowerShell Script Block Logging (ID Peristiwa 4104) akan muncul dengan detail blok skrip yang dieksekusi, termasuk konten skrip, ID blok skrip, dan konteks eksekusi.

Tabel pemetaan UDM

Kolom Log Pemetaan UDM Logika
HostId principal.resource.product_object_id ID unik untuk objek produk yang terkait dengan resource utama
System.Version metadata.product_version Versi produk yang menghasilkan peristiwa
System.EventId, EventID, winlog.event_id metadata.product_event_type Jenis peristiwa sebagaimana ditentukan oleh produk
Komputer, System.Computer, komputer, winlog.computer_name principal.hostname Nama host entitas utama
Komputer, System.Computer, komputer, winlog.computer_name principal.asset.hostname Nama host aset yang terkait dengan akun utama
System.EventRecordID, RecordNumber, winlog.record_id metadata.product_log_id ID unik untuk entri log dalam sistem logging produk
System.Opcode, opcode, winlog.opcode metadata.description Deskripsi acara atau konteks tambahan
ProviderGuid, winlog.provider_guid metadata.product_deployment_id ID unik untuk deployment produk
System.ProcessID, ProcessID, ExecutionProcessID, execution.process_id, winlog.process.pid principal.process.pid ID proses utama
SourceModuleName principal.resource.name Nama resource yang terkait dengan akun utama
SourceModuleType principal.resource.resource_subtype Subjenis resource yang terkait dengan prinsipal
security.user_id, UserID, winlog.user.identifier principal.user.windows_sid ID Keamanan (SID) Windows untuk pengguna utama
metadata.event_type Jenis peristiwa (misalnya, USER_LOGIN, NETWORK_CONNECTION)
SourceName, winlog.provider_name metadata.product_name Nama produk yang menghasilkan peristiwa
AccountName, Username, UserName, winlog.user.name principal.user.userid ID pengguna utama
Domain, winlog.user.domain principal.administrative_domain Domain administratif kepala sekolah
Path, target_file, ScriptName, script_name, ContextInfo_Script Name, file_path target.process.file.full_path Jalur lengkap ke file yang terkait dengan proses target
HostName, powershell.Host Name, ContextInfo_Host Name target.hostname Nama host entitas target
HostName, powershell.Host Name, ContextInfo_Host Name target.asset.hostname Nama host aset yang terkait dengan target
ID Host, HostID, ContextInfo_Host ID target.asset.asset_id ID unik untuk aset target
Nombre_de_comando, ContextInfo_Command Name, CommandName target.application Nama aplikasi yang terkait dengan target
HostApplication, ContextInfo_Host Application target.process.command_line Command line yang digunakan untuk meluncurkan proses target
ScriptBlockText target.process.command_line Command line yang digunakan untuk meluncurkan proses target
MessageSourceAddress principal.ip Alamat IP kepala sekolah
MessageSourceAddress principal.asset.ip Alamat IP aset yang terkait dengan prinsipal
Nombre_de_host principal.application Nama aplikasi yang terkait dengan akun utama
Version_de_host principal.platform_version Versi platform yang terkait dengan prinsipal
Id_de_host principal.resource.id ID unik untuk resource utama
Application_host principal.process.file.full_path Jalur lengkap ke file yang terkait dengan proses utama
HostApplication principal.process.command_line Command line yang digunakan untuk meluncurkan proses utama
Usuario, admin_domain principal.user.userid ID pengguna utama
Usuario, admin_domain principal.administrative_domain Domain administratif kepala sekolah
CommandLine principal.process.command_line Command line yang digunakan untuk meluncurkan proses utama
Mesin, machine_id principal.asset.asset_id ID unik untuk aset utama
Mesin, platform_software principal.asset.platform_software.platform Jenis platform aset (misalnya, WINDOWS, LINUX)
Mesin, platform_software principal.asset.platform_software.platform_version Versi software platform di aset
MessageSourceAddress intermediary.ip Alamat IP entitas perantara
MessageSourceAddress, Hostname intermediary.hostname Nama host entitas perantara
MessageSourceAddress, Hostname intermediary.asset.hostname Nama host aset yang terkait dengan perantara
MessageSourceAddress intermediary.port Nomor port yang digunakan oleh perantara
HostApplication target.process.command_line Command line yang digunakan untuk meluncurkan proses target
HostId target.asset.asset_id ID unik untuk aset target
SequenceNumber, ContextInfo_Sequence Number, Sequence Number security_result.detection_fields Key-value pair informasi deteksi tambahan
ProviderName principal.resource.attribute.labels Label atau atribut yang terkait dengan resource utama
NewEngineState additional.fields Kolom kustom tambahan yang tidak tercakup dalam skema UDM standar
PreviousEngineState additional.fields Kolom kustom tambahan yang tidak tercakup dalam skema UDM standar
ScriptName additional.fields Kolom kustom tambahan yang tidak tercakup dalam skema UDM standar
ManagementGroupName additional.fields Kolom kustom tambahan yang tidak tercakup dalam skema UDM standar
Sumber additional.fields Kolom kustom tambahan yang tidak tercakup dalam skema UDM standar
RenderedDescription security_result.description Deskripsi hasil keamanan atau tindakan yang diambil
TenantId additional.fields Kolom kustom tambahan yang tidak tercakup dalam skema UDM standar
NamaPengguna principal.user.userid ID pengguna utama
ActivityID security_result.detection_fields Key-value pair informasi deteksi tambahan
ExecutionThreadID, execution.thread_id, winlog.process.thread.id security_result.detection_fields Key-value pair informasi deteksi tambahan
Output security_result.detection_fields Key-value pair informasi deteksi tambahan
Data security_result.detection_fields Key-value pair informasi deteksi tambahan
Data_1 additional.fields Kolom kustom tambahan yang tidak tercakup dalam skema UDM standar
data_1 security_result.detection_fields Key-value pair informasi deteksi tambahan
Data_2 security_result.detection_fields Key-value pair informasi deteksi tambahan
winlog.activity_id security_result.detection_fields Key-value pair informasi deteksi tambahan
winlog.api additional.fields Kolom kustom tambahan yang tidak tercakup dalam skema UDM standar
winlog.channel principal.resource.attribute.labels Label atau atribut yang terkait dengan resource utama
Offset additional.fields Kolom kustom tambahan yang tidak tercakup dalam skema UDM standar
SeverityValue security_result.detection_fields Key-value pair informasi deteksi tambahan
perantara perantara Detail tentang entitas perantara yang terlibat dalam peristiwa
security_result security_result Hasil keamanan keseluruhan termasuk tindakan, tingkat keseriusan, dan deteksi
metadata.vendor_name Nama vendor yang menghasilkan peristiwa
SourceName metadata.product_name Nama produk yang menghasilkan peristiwa

Perlu bantuan lain? Dapatkan jawaban dari anggota Komunitas dan profesional Google SecOps.