Mengumpulkan log Microsoft PowerShell
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
- Buka Local Group Policy Editor dengan menjalankan
gpedit.mscsebagai administrator. - Buka Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell.
- Klik dua kali Turn on PowerShell Script Block Logging.
- Pilih Enabled.
- 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.
- Klik Oke.
- Buka Command Prompt sebagai administrator dan jalankan
gpupdate /forceuntuk menerapkan kebijakan secara langsung.
Mengaktifkan Logging Pemblokiran Skrip menggunakan registri
Atau, Anda dapat mengaktifkan Logging Pemblokiran Skrip dengan menyetel nilai registri berikut:
- Buka Registry Editor dengan menjalankan
regeditsebagai administrator. - Buka
HKLM\SOFTWARE\Policies\Microsoft\Windows\PowerShell\ScriptBlockLogging. - Jika kunci tidak ada, buat kunci tersebut.
- Buat DWORD (32-bit) Value baru bernama
EnableScriptBlockLoggingdan tetapkan nilainya ke1. - 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:
- Di Local Group Policy Editor, buka Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell.
- Klik dua kali Turn on Module Logging.
- Pilih Enabled.
- Klik Tampilkan di samping Nama Modul.
- Masukkan
*untuk mencatat semua modul. - Klik OK di jendela Module Names.
- Klik OK di jendela Module Logging.
- Jalankan
gpupdate /forceuntuk 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:
- Di Local Group Policy Editor, buka Computer Configuration > Administrative Templates > Windows Components > Windows PowerShell.
- Klik dua kali Turn on PowerShell Transcription.
- Pilih Enabled.
- Secara opsional, tentukan Direktori output transkrip. Jika dibiarkan kosong, transkrip akan disimpan ke folder Dokumen setiap pengguna.
- Centang Sertakan header pemanggilan untuk menyertakan stempel waktu dan metadata.
- Klik Oke.
- Jalankan
gpupdate /forceuntuk menerapkan kebijakan.
Transkrip ditulis ke file teks dengan nama yang diawali dengan PowerShell_transcript.
Mendapatkan file autentikasi penyerapan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Klik Download untuk mendownload file autentikasi penyerapan.
Simpan file dengan aman di host Windows tempat agen Bindplane akan diinstal.
Mendapatkan ID pelanggan Google SecOps
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Profil.
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
- Buka Command Prompt atau PowerShell sebagai administrator.
Jalankan perintah berikut:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietTunggu hingga penginstalan selesai.
Verifikasi penginstalan dengan menjalankan:
sc query observiq-otel-collectorLayanan 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.yamldengan 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, gunakanMicrosoft-Windows-PowerShell/Operational. Untuk Logging Modul, gunakanWindows PowerShell.raw: Setel ketrueuntuk mengirim XML Log Peristiwa Windows mentah ke Google SecOps.start_at: Setel keenduntuk mengumpulkan hanya peristiwa baru setelah agen dimulai. Setel kebeginninguntuk 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.
- Amerika Serikat:
log_type: Tetapkan kePOWERSHELLuntuk 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-collectorAtau menggunakan konsol Layanan:
- Tekan
Win+R, ketikservices.msc, lalu tekan Enter. - Temukan observIQ OpenTelemetry Collector.
- Klik kanan, lalu pilih Mulai Ulang.
Pastikan layanan sedang berjalan:
sc query observiq-otel-collectorPeriksa log untuk mengetahui error:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- Tekan
Memverifikasi penyerapan log
Setelah mengonfigurasi agen BindPlane dan memulai ulang layanan, log PowerShell akan mulai mengalir ke Google SecOps.
- Login ke konsol Google SecOps.
- Buka Investigasi > Penelusuran.
Jalankan penelusuran berikut untuk memverifikasi bahwa log PowerShell sedang di-ingest:
metadata.log_type = "POWERSHELL"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.