iT邦幫忙

0

Day 13|動手建立 Wazuh 自訂 Decoder

  • 分享至 

  • xImage
  •  

昨天介紹了 Wazuh Decoder 的基本概念,今天實際建立一個簡單的自訂 Decoder,讓 Wazuh 能夠解析我們自己設計的日誌格式。

1. 為什麼需要自訂 Decoder?

Wazuh 本身已經內建許多 Decoder,可以辨識 Linux、Windows、SSH、Firewall 等常見日誌。
但實際環境中也可能遇到:
自行開發的網站
公司內部系統
特殊應用程式
第三方服務產生的日誌
這些日誌格式如果不在 Wazuh 預設規則中,就可能無法正確拆解其中的資訊。
因此可以建立** Custom Decoder(自訂解碼器)。**


2. 假設我們有一筆登入日誌

例如某個系統產生以下紀錄:
myapp: User 'admin' logged from '192.168.1.100'
我們希望 Wazuh 能夠從中辨識出:
使用者:admin
來源 IP:192.168.1.100
原本這只是一整串文字,Decoder 的工作就是把重要欄位拆出來。


3. 編輯 local_decoder.xml

自訂 Decoder 可以加入:
/var/ossec/etc/decoders/local_decoder.xml
使用:

sudo nano /var/ossec/etc/decoders/local_decoder.xml

加入以下內容:

<decoder name="myapp"> <prematch>^myapp:</prematch> </decoder> <decoder name="myapp-login"> <parent>myapp</parent> <regex>User '(\w+)' logged from '(\d+\.\d+\.\d+\.\d+)'</regex> <order>user,srcip</order> </decoder>

4. Decoder 在做什麼?

第一個 Decoder:

<decoder name="myapp"> <prematch>^myapp:</prematch> </decoder>

先確認日誌是否以:

myapp:

開頭。
第二個 Decoder 再利用:

<regex>

找出我們需要的資料。
其中:

(\w+)

抓取使用者名稱。
而:

(\d+\.\d+\.\d+\.\d+)

則負責抓取 IP 位址。
最後:

<order>user,srcip</order>

代表第一組資料存成 user,第二組存成 srcip。


5. Decoder 的幾個重要標籤

標籤 功能
<decoder> 定義 Decoder 的名稱與範圍
<prematch> 初步判斷日誌是否符合指定格式
<parent> 指定此 Decoder 所屬的父 Decoder
<regex> 使用正規表示式擷取日誌中的資料
<order> 指定擷取出的資料要存入哪些欄位

Decoder 的核心概念其實就是:
原始日誌
↓
prematch 找出符合的日誌
↓
regex 擷取資料
↓
order 指定欄位
↓
結構化資料


6. 使用 wazuh-logtest 測試

修改 Decoder 後,不需要直接等真實攻擊事件發生,可以先使用 Wazuh 提供的測試工具:

sudo /var/ossec/bin/wazuh-logtest

接著輸入:

myapp: User 'admin' logged from '192.168.1.100'

如果 Decoder 正常運作,在 Phase 2 的解碼結果中就可以看到類似:

name: 'myapp'
user: 'admin'
srcip: '192.168.1.100'

代表 Wazuh 已經成功把原本的文字日誌拆解成可使用的欄位。


7. Decoder 和 Rule 的關係

前幾天介紹的 Rule 與 Decoder 並不是同一個東西。
可以簡單理解成:
Log
↓
Decoder
↓
解析出 user、IP、action 等欄位
↓
Rule
↓
判斷是否為可疑行為
↓
Alert
例如 Decoder 解析出:

user = admin
srcip = 192.168.1.100

之後 Rule 才能根據這些資訊判斷:
是否為登入失敗?
是否來自可疑 IP?
是否短時間出現大量登入?
因此:
Decoder 負責「看懂日誌」,Rule 負責「判斷事件」。


8. 實際應用

假設公司自己開發了一個會員系統,系統產生:

LOGIN_FAILED user=alex ip=10.0.0.25

我們就可以自行建立 Decoder,將它拆解為:

action = LOGIN_FAILED
user = alex
srcip = 10.0.0.25

之後再搭配自訂 Rule,例如:
同一個 IP 短時間登入失敗多次
就有機會進一步偵測暴力破解等異常行為。
這也是 Wazuh 能夠適應不同系統的重要原因之一:即使不是官方預先支援的日誌格式,也能透過 Decoder 與 Rule 自行擴充偵測能力。


圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言