Mengumpulkan log PowerShell

Didukung di:

Dokumen ini menjelaskan cara mengumpulkan log PowerShell ke Google Security Operations menggunakan BindPlane. Parser mengubah log Microsoft PowerShell mentah menjadi model data terpadu (UDM). Pertama-tama, kolom diekstrak dari pesan log mentah, dinormalisasi ke dalam kolom UDM, lalu data diperkaya dengan konteks tambahan berdasarkan ID peristiwa tertentu, yang pada akhirnya membuat peristiwa UDM terstruktur untuk analisis keamanan.

Sebelum memulai

  • Pastikan Anda memiliki instance Google SecOps.
  • Pastikan Anda memiliki Windows 2016 atau yang lebih baru.
  • Jika berjalan di belakang proxy, pastikan port firewall terbuka.

Mendapatkan file autentikasi penyerapan Google SecOps

  1. Login ke konsol Google SecOps.
  2. Buka Setelan SIEM > Agen Pengumpulan.
  3. Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat 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 di 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
    

Referensi penginstalan tambahan

Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps

  1. Sebelum mengonfigurasi file YAML, hentikan observIQ Distro for Open Telemetry Collector Service di Panel Layanan.
  2. Akses file konfigurasi:

    1. Cari file config.yaml. Biasanya, file ini berada di direktori /etc/bindplane-agent/ di Linux atau di direktori penginstalan di Windows.
    2. Buka file menggunakan editor teks (misalnya, nano, vi, atau Notepad).
  3. Edit file config.yaml sebagai 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:
        endpoint: malachiteingestion-pa.googleapis.com
        # Adjust the path to the credentials file you downloaded in Step 1
        creds: '/path/to/ingestion-authentication-file.json'
        log_type: 'POWERSHELL'
        override_log_type: false
        raw_log_field: body
        customer_id: '<customer_id>'
    
    service:
      pipelines:
        logs/winpowershell:
          receivers:
            - windowseventlog/powershell
          processors: [batch]
          exporters: [chronicle/powershell] 
    
  4. Ganti <customer_id> dengan ID pelanggan yang sebenarnya.

  5. Perbarui /path/to/ingestion-authentication-file.json ke jalur tempat file autentikasi disimpan di bagian Dapatkan file autentikasi penyerapan Google SecOps.

  6. Setelah menyimpan file config.yaml, mulai Layanan observIQ Distro for Open Telemetry Collector.

Mulai ulang agen Bindplane untuk menerapkan perubahan

  • Untuk memulai ulang agen Bindplane di Windows, Anda dapat menggunakan konsol Services atau memasukkan perintah berikut:

    net stop BindPlaneAgent && net start BindPlaneAgent
    

Tabel Pemetaan UDM

Kolom Log Pemetaan UDM Logika
AccountName principal.user.userid Dipetakan langsung dari kolom AccountName dalam log mentah.
ActivityID security_result.detection_fields[0].value Dipetakan langsung dari kolom ActivityID dalam log mentah. Kurung kurawal dihapus.
Saluran Tidak dipetakan ke objek IDM.
collection_time.nanos Tidak dipetakan ke objek IDM.
collection_time.seconds Tidak dipetakan ke objek IDM.
Perintah Tidak dipetakan ke objek IDM.
CommandLine Tidak dipetakan ke objek IDM.
Komputer principal.hostname Dipetakan langsung dari kolom Computer di log mentah jika ada.
ContextInfo Tidak dipetakan ke objek IDM.
Nama ContextInfo_Command security_result.detection_fields[0].value Dipetakan langsung dari kolom ContextInfo_Command Name di log mentah jika ada.
Jenis ContextInfo_Command security_result.detection_fields[1].value Dipetakan langsung dari kolom ContextInfo_Command Type di log mentah jika ada.
Aplikasi ContextInfo_Host target.process.command_line Dipetakan langsung dari kolom ContextInfo_Host Application dalam log mentah jika powershell.Host Application tidak ada.
ContextInfo_Host ID target.asset.asset_id Dipetakan langsung dari kolom ContextInfo_Host ID dalam log mentah jika powershell.Host ID tidak ada. Nilai diawali dengan Host ID:.
ContextInfo_Host Name target.hostname Dipetakan langsung dari kolom ContextInfo_Host Name dalam log mentah jika powershell.Host Name tidak ada.
Nama ContextInfo_Script target.process.file.full_path Dipetakan langsung dari kolom ContextInfo_Script Name dalam log mentah jika script_name tidak ada.
ContextInfo_Sequence Number security_result.detection_fields[2].value Dipetakan langsung dari kolom ContextInfo_Sequence Number di log mentah jika ada. Dikonversi menjadi string.
ContextInfo_Severity Tidak dipetakan ke objek IDM.
create_time.nanos Tidak dipetakan ke objek IDM.
create_time.seconds Tidak dipetakan ke objek IDM.
customer_id Tidak dipetakan ke objek IDM.
data Tidak dipetakan ke objek IDM.
Data security_result.detection_fields[0].value Dipetakan langsung dari kolom Data di log mentah jika ada.
Data_1 security_result.detection_fields[1].value Dipetakan langsung dari kolom Data_1 di log mentah jika ada.
Data_2 security_result.detection_fields[2].value Dipetakan langsung dari kolom Data_2 di log mentah jika ada.
Domain principal.administrative_domain Dipetakan langsung dari kolom Domain dalam log mentah.
entries Tidak dipetakan ke objek IDM.
ERROR_EVT_UNRESOLVED Tidak dipetakan ke objek IDM.
EventCategory Tidak dipetakan ke objek IDM.
EventData Tidak dipetakan ke objek IDM.
EventID metadata.product_event_type, security_result.rule_name Dipetakan langsung dari kolom EventID dalam log mentah. Nilai diawali dengan EventID: untuk kolom security_result.rule_name.
EventLevel Tidak dipetakan ke objek IDM.
EventLevelName security_result.severity Dipetakan berdasarkan nilai EventLevelName:
- Information dipetakan ke INFORMATIONAL.
- Verbose dipetakan ke LOW.
EventLog Tidak dipetakan ke objek IDM.
EventReceivedTime Tidak dipetakan ke objek IDM.
EventType Tidak dipetakan ke objek IDM.
EventTime metadata.event_timestamp Digunakan untuk mengekstrak stempel waktu jika ada.
ExecutionProcessID principal.process.pid Dipetakan langsung dari kolom ExecutionProcessID dalam log mentah jika ada dan tidak kosong atau 0. Dikonversi menjadi string.
ExecutionThreadID security_result.detection_fields[2].value Dipetakan langsung dari kolom ExecutionThreadID dalam log mentah jika ada dan tidak kosong atau 0. Dikonversi menjadi string.
File target.process.file.full_path Dipetakan langsung dari kolom File di log mentah jika ada.
Aplikasi Host Tidak dipetakan ke objek IDM.
HostApplication Tidak dipetakan ke objek IDM.
Hostname principal.hostname Dipetakan langsung dari kolom Hostname dalam log mentah.
id Tidak dipetakan ke objek IDM.
Kata kunci Tidak dipetakan ke objek IDM.
log_type metadata.log_type Dipetakan langsung dari kolom log_type dalam log mentah.
Mesin principal.asset.asset_id, principal.asset.platform_software.platform_version Kolom Machine diuraikan untuk mengekstrak ID mesin dan informasi platform. ID mesin diawali dengan Machine ID:. Platform dipetakan ke enum UDM berdasarkan nilai:
- win dipetakan ke WINDOWS.
- mac dipetakan ke MAC.
- lin dipetakan ke LINUX.
- Nilai lainnya dipetakan ke UNKNOWN_PLATFORM.
ManagementGroupName additional.fields[0].value.string_value Dipetakan langsung dari kolom ManagementGroupName di log mentah jika ada.
Message.EventTime metadata.event_timestamp Digunakan untuk mengekstrak stempel waktu jika ada. Dikonversi menjadi string.
Message.Message security_result.description Dipetakan langsung dari kolom Message.Message dalam log mentah jika EventID ada di [403, 4103, 4104] dan message_message_not_found. Baris baru dan tab diganti dengan koma.
Pesan security_result.description Dipetakan langsung dari kolom Message di log mentah jika ada.
MessageNumber Tidak dipetakan ke objek IDM.
MessageSourceAddress principal.ip Dipetakan langsung dari kolom MessageSourceAddress di log mentah jika ada.
MessageTotal Tidak dipetakan ke objek IDM.
MG Tidak dipetakan ke objek IDM.
Kode operasi metadata.description Dipetakan langsung dari kolom Opcode dalam log mentah.
OpcodeValue Tidak dipetakan ke objek IDM.
Output security_result.detection_fields[0].value Dipetakan langsung dari kolom Output di log mentah jika ada.
powershell.Command Name security_result.detection_fields[0].value Dipetakan langsung dari kolom powershell.Command Name jika ada.
powershell.Command Type security_result.detection_fields[1].value Dipetakan langsung dari kolom powershell.Command Type jika ada.
powershell.Host Application target.process.command_line Dipetakan langsung dari kolom powershell.Host Application di log mentah jika ada.
powershell.Host ID target.asset.asset_id Dipetakan langsung dari kolom powershell.Host ID di log mentah jika ada. Nilai diawali dengan Host ID:.
powershell.Host Name target.hostname Dipetakan langsung dari kolom powershell.Host Name di log mentah jika ada.
powershell.HostApplication target.process.command_line Dipetakan langsung dari kolom powershell.HostApplication di log mentah jika ada.
powershell.HostId target.asset.asset_id Dipetakan langsung dari kolom powershell.HostId di log mentah jika ada. Nilai diawali dengan Host ID:.
powershell.HostName target.hostname Dipetakan langsung dari kolom powershell.HostName di log mentah jika ada.
powershell.Nama Skrip target.process.file.full_path Dipetakan langsung dari kolom powershell.Script Name di log mentah jika ada.
powershell.ScriptName target.process.file.full_path Dipetakan langsung dari kolom powershell.ScriptName di log mentah jika ada.
powershell.Sequence Number security_result.detection_fields[2].value Dipetakan langsung dari kolom powershell.Sequence Number di log mentah jika ada.
powershell.SequenceNumber security_result.detection_fields[0].value Dipetakan langsung dari kolom powershell.SequenceNumber di log mentah jika ada.
powershell.UserId principal.user.userid Dipetakan langsung dari kolom powershell.UserId di log mentah jika ada.
ID proses principal.process.pid Dipetakan langsung dari kolom Process ID dalam log mentah jika ExecutionProcessID dan ProcessID tidak ada atau kosong atau 0. Dikonversi menjadi string.
ProcessID principal.process.pid Dipetakan langsung dari kolom ProcessID dalam log mentah jika ExecutionProcessID tidak ada atau kosong atau 0. Dikonversi menjadi string.
ProviderGuid metadata.product_deployment_id Dipetakan langsung dari kolom ProviderGuid dalam log mentah. Kurung kurawal dihapus.
PSEdition Tidak dipetakan ke objek IDM.
PSRemotingProtocolVersion Tidak dipetakan ke objek IDM.
PSVersion Tidak dipetakan ke objek IDM.
RecordNumber metadata.product_log_id Dipetakan langsung dari kolom RecordNumber dalam log mentah. Dikonversi menjadi string.
RenderedDescription security_result.description Dipetakan langsung dari kolom RenderedDescription di log mentah jika ada.
Pengguna RunAs Tidak dipetakan ke objek IDM.
ScriptBlockId Tidak dipetakan ke objek IDM.
ScriptBlockText security_result.detection_fields[0].value Dipetakan langsung dari kolom ScriptBlockText di log mentah jika ada.
ID ScriptBlock Tidak dipetakan ke objek IDM.
Keparahan security_result.severity, security_result.severity_details Dipetakan berdasarkan nilai Severity:
- verbose atau info dipetakan ke LOW.
- warn atau err dipetakan ke MEDIUM.
- crit dipetakan ke HIGH.
Nilai mentah juga dipetakan ke security_result.severity_details.
source.collector_id Tidak dipetakan ke objek IDM.
source.customer_id Tidak dipetakan ke objek IDM.
Sumber additional.fields[1].value.string_value Dipetakan langsung dari kolom Source di log mentah jika ada.
SourceModuleName principal.resource.name Dipetakan langsung dari kolom SourceModuleName dalam log mentah.
SourceModuleType principal.resource.resource_subtype Dipetakan langsung dari kolom SourceModuleType dalam log mentah.
SourceName metadata.product_name Dipetakan langsung dari kolom SourceName dalam log mentah.
start_time.nanos Tidak dipetakan ke objek IDM.
start_time.seconds Tidak dipetakan ke objek IDM.
TenantId additional.fields[2].value.string_value Dipetakan langsung dari kolom TenantId di log mentah jika ada.
ThreadID Tidak dipetakan ke objek IDM.
timestamp.nanos Tidak dipetakan ke objek IDM.
timestamp.seconds Tidak dipetakan ke objek IDM.
jenis Tidak dipetakan ke objek IDM.
UserID principal.user.windows_sid Dipetakan langsung dari kolom UserID dalam log mentah.
Nama pengguna principal.user.userid Dipetakan langsung dari kolom Username dalam log mentah jika AccountName tidak ada.
metadata.vendor_name Tetapkan ke Microsoft.
metadata.event_type Disetel ke PROCESS_LAUNCH jika EventID adalah 4104 dan _Path ada di Message, atau jika EventID adalah 4103, atau jika EventID berada di [800, 600, 400] dan powershell.ScriptName serta powershell.HostApplication ada. Tetapkan ke PROCESS_TERMINATION jika EventID adalah 403 dan _HostApplication ada di Message, atau jika EventID adalah 403 dan NewEngineState adalah Stopped. Disetel ke STATUS_UPDATE jika EventID adalah 4104 dan _Path tidak ada di Message, atau jika EventID adalah 4103 dan no_value, script_name kosong, script_name_not_found, dan host_application_not_found semuanya benar, atau jika EventID adalah 53504, atau jika EventID adalah 40962, atau jika EventID adalah 40961, atau jika EventID kosong dan MessageSourceAddress ada. Ditetapkan ke USER_UNCATEGORIZED jika EventID kosong dan Username ada. Ditetapkan ke GENERIC_EVENT jika EventID kosong dan MessageSourceAddress serta Username tidak ada.
metadata.product_name Ditetapkan ke Powershell jika SourceName tidak ada.
security_result.action Tetapkan ke ALLOW.
security_result.detection_fields[0].key Tetapkan ke Activity ID.
security_result.detection_fields[1].key Tetapkan ke Sequence Number.
security_result.detection_fields[2].key Tetapkan ke ExecutionThreadID.
additional.fields[0].key Tetapkan ke Management Group Name.
additional.fields[1].key Tetapkan ke Source.
additional.fields[2].key Tetapkan ke TenantId.
principal.asset.platform_software.platform Disetel ke WINDOWS jika platform_software berisi win, MAC jika berisi mac, LINUX jika berisi lin, dan UNKNOWN_PLATFORM jika tidak.
target.process.file.full_path Disetel ke _Path jika EventID adalah 4104 dan _Path ada di Message. Disetel ke file_path jika EventID adalah 4104 dan file_path ada di Message. Disetel ke _HostApplication jika EventID adalah 403 dan _HostApplication ada di Message.

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