Mengumpulkan log PowerShell
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
- Login ke konsol Google SecOps.
- Buka Setelan SIEM > Agen Pengumpulan.
- Download File Autentikasi Penyerapan. Simpan file dengan aman di sistem tempat 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 di 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" /quiet
Referensi penginstalan tambahan
- Untuk opsi penginstalan tambahan, lihat panduan penginstalan ini.
Mengonfigurasi agen BindPlane untuk menyerap Syslog dan mengirimkannya ke Google SecOps
- Sebelum mengonfigurasi file YAML, hentikan
observIQ Distro for Open Telemetry Collector
Service di Panel Layanan. Akses file konfigurasi:
- Cari file
config.yaml
. Biasanya, file ini berada di direktori/etc/bindplane-agent/
di Linux atau di direktori penginstalan di Windows. - Buka file menggunakan editor teks (misalnya,
nano
,vi
, atau Notepad).
- Cari file
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]
Ganti
<customer_id>
dengan ID pelanggan yang sebenarnya.Perbarui
/path/to/ingestion-authentication-file.json
ke jalur tempat file autentikasi disimpan di bagian Dapatkan file autentikasi penyerapan Google SecOps.Setelah menyimpan file
config.yaml
, mulai LayananobservIQ 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.