Phát triển công cụ tự động chuyển đổi sigma rule sang Qradar custom rule với Pysigma

Phát triển công cụ tự động chuyển đổi sigma rule sang Qradar custom rule với Pysigma

Tổng quan

Trong những năm gần đây, các tổ chức hay đơn vị trên thế giới đã chú trọng hơn về bảo mật an ninh thông tin. Người người thu thập các loại log trên hệ thống để phân tích, xử lý hay tích hợp trên các giải pháp SIEM. Việc hiện nay có rất nhiều các hệ thống SIEM khác nhau đã trở thành một trở ngại cho cộng đồng bảo mật trong việc chia sẻ rule hay signature của các cuộc tấn công. Vì lí do trên, Sigma rule đã ra đời và đóng vai trò là một chuẩn chung để mô tả signature của các hành vi tấn công dựa trên logs.

Sigma rule được viết trên các file YAML, chứa cấu trúc gồm các dấu hiệu của hành vi tấn công. Đồng thời, người dùng có thể chuyển đổi linh hoạt định dạng các Sigma rule thành các detection rule cho SIEM của doanh nghiệp họ. Nhờ vậy cộng đồng bảo mật thông tin có thể dễ dàng chia sẻ các dấu hiệu của hành vi tấn công thông qua Sigma rule, và người dùng cũng thuận tiện hơn trong việc ứng dụng các rule trong việc phân tích, threat hunting, … trên hệ thống SIEM.

Để tìm hiểu thêm về sigma rule, người đọc có thể đọc thêm tại link https://github.com/SigmaHQ/sigmahttps://github.com/SigmaHQ/sigma/wiki/Specification

Trong nội dung bài viết này, chúng tôi sẽ tập trung vào các mục đính chính sau:

-          Giới thiệu về bộ thư viện Qradar Backend được phát triển bởi GTSC

-          Các tính năng chính của bộ thư viện Qradar Backend

Ý tưởng phát triển thư viện

Cơ bản về sigma rule

Để bắt đầu đi vào tìm hiểu vấn đề, chúng tôi xin mô tả cơ bản cấu trúc của một sigma rule như sau.

title

id [optional]

related [optional]

- type {type-identifier}

id {rule-id}

status [optional]

description [optional]

author [optional]

references [optional]

logsource

category [optional]

product [optional]

service [optional]

definition [optional]

...

detection

{search-identifier} [optional]

{string-list} [optional]

{field: value} [optional]

...

condition

fields [optional]

falsepositives [optional]

level [optional]

tags [optional]

...

[arbitrary custom fields]

 

Trong đó, phần nội dung chính của rule mà người sử dụng cần quan tâm là:

-          Logsource: phần dữ liệu trong log được sử dụng cho quá trình detection.

-          Detection: Một tập hợp các điều kiện (search-identifiers) đại diện cho các tìm kiếm trên dữ liệu nhật ký (log).

Lấy ví dụ về một sigma rule trên github repository https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_wmic_hotfix_enum.yml

Rule này phát hiện các hành vi sử dụng tiện ích wmic.exe để tìm kiếm các thông tin về các bản hotfixes trên máy chủ windows. Người đọc có thể nắm tổng quát các thông tin về rule thông qua trường title và description của rule, hoặc tìm hiểu sâu hơn thông qua các link tham chiếu trong trường references.

title: WMIC Hotfix Recon

id: dfd2fcb7-8bd5-4daa-b132-5adb61d6ad45

status: experimental

description: Detects wmic known recon method to look for installed hotfixes, often used by pentest and attackers enum scripts

author: Nasreddine Bencherchali

references:

- https://github.com/carlospolop/PEASS-ng/blob/master/winPEAS/winPEASbat/winPEAS.bat

- https://sushant747.gitbooks.io/total-oscp-guide/content/privilege_escalation_windows.html

date: 2022/06/20

logsource:

category: process_creation

product: windows

detection:

selection_img:

- OriginalFileName: 'wmic.exe'

- Image|endswith: '\WMIC.exe'

selection_cli:

CommandLine|contains|all:

- ' qfe '

- ' get '

- 'Caption,Description,HotFixID,InstalledOn'

condition: all of selection*

falsepositives:

- Unknown

level: medium

tags:

- attack.execution

- attack.t1047

 

Chú ý phần logsource ta có thể dễ dàng nhận thấy rule phát hiện dựa trên nguồn log Windows OS và các log tương ứng với việc thực thi tiến trình. Thông thường, có 2 eventid phổ biến tương ứng cần chú ý trong trường hợp này là event id 1 tương ứng với log Sysmon (nếu máy được cài đặt sysmon) và event id 4688 tương ứng với log Security (cần cấu hình audit policy).

logsource:

category: process_creation

product: windows

 

Rule phát hiện dựa trên tổng hợp của 2 điều kiện chính, chú ý đến điều kiện “condition: all of selection*”. Điều kiện 1 - “selection_img” mô tả tên của file thực thi tiến trình và điều kiện 2 – “selection_cli” mô tả tham số của tiến trình đã thực thi. Về cơ bản, để hiểu về các tường thông tin và giá trị của chúng, người đọc cũng cần nắm được các kiến thức liên quan tới loại log source tương ứng với rule.

detection:

selection_img:

- OriginalFileName: 'wmic.exe'

- Image|endswith: '\WMIC.exe'

selection_cli:

CommandLine|contains|all:

- ' qfe '

- ' get '

- 'Caption,Description,HotFixID,InstalledOn'

condition: all of selection*

 

Tóm lại, rule sẽ phát hiện các sự kiện trong log thỏa mãn các điều kiện sau:

1.      Các log là các sự kiện tạo tiến trình trên nhật ký windows event log (event id 1 hoặc event id 4688).

2.      Các log có giá trị trường OriginalFileName là “wmic.exe” hoặc giá trị trường Image kết thúc với “WMIC.exe”.

3.      Các log có trường “CommandLine” phải bao gồm 3 tham số ' qfe ', ' get ', 'Caption,Description,HotFixID,InstalledOn' (bao gồm cả dấu cách).

 

Bài toán convert sigma rule

Như vậy, ta đã có rule bao gồm các điều kiện cơ bản. Công việc tiếp theo cần thực hiện là chuyển đổi rule này sang định dạng cần thiết để tìm kiếm hay cập nhật vào rule trên các nền tảng SIEM khác nhau. Để làm được việc này, hiện tại ta vẫn có thể sử dụng công cụ sigmac. Tuy nhiên, vì một số lý do mà các nhà phát triển về lâu dài sẽ dừng hỗ trợ công cụ này và chuyển sang phát triển một module linh hoạt và ổn định hơn có tên pySigma và giao diện dòng lệnh có tên sigma-cli hỗ trợ việc sử dụng pySigma.

Với pySigma, hai thành phần chính là backends hỗ trợ việc chuyển đổi sigma rule thành ngôn ngữ truy vấn, processing pipelines sử dụng để chuyển đổi rule cho các mô hình dữ liệu nhật ký, cả hai được tách riêng thành các dự án chuyên biệt để giữ cho thư viện pySigma đơn giản và gọn nhẹ.

Để tìm hiểu thêm về pySigma và công cụ sigma-cli, xem thêm tại https://github.com/SigmaHQ/pySigmahttps://github.com/SigmaHQ/sigma-cli

Đối với pysigma

Khác với sigmac gần như đã đẩy đủ các nền tảng hỗ trợ cho việc chuyển đổi, pySigma hiện tại vẫn đang trong quá trình cập nhật và hoàn thiện các bộ thư việc backend. Nhận thấy sự cần thiết và và nhu cầu sử dụng thực tế, đội ngũ nhân sự của GTSC đã góp phần đóng góp thêm Qradar Backend cho thư viện pySigma.

 

Qradar backend hiện tại đang hỗ trợ hai tính năng chính là khả năng chuyển đổi các sigma rule thành ngôn ngữ truy vấn Ariel Query Language và bổ sung thêm tính năng chuyển đổi sigma rule thành Extension Package dùng để cài đặt trên hệ thống Qradar(Tính năng mà hiện tại Sigmac không support). Với tính năng thứ nhất, người sử dụng có thể convert trực tiếp sigma rule sang ngôn ngữ sử dụng để query thông tin trực tiếp trên Qradar. Với tính năng thứ hai, sử dụng trong trường hợp chúng ta cần cấu hình với số lượng lớn rule trên hệ thống Qradar hoặc cấu hình rule một cách tự động. Để hiểu thêm về cách thức cấu hình custom rule trên Qradar, người đọc có thể xem thêm tại https://www.ibm.com/docs/en/qsip/7.4?topic=rules-creating-custom-rule. Cách thức cấu hình yêu cầu một số bước nhất định và tiêu tốn khá nhiều thời gian trong trường hợp chúng ta cần cấu hình một số lượng lớn rule. Để tự động hóa quá trình này, đội ngũ GTSC bổ sung thêm tính năng chuyển đổi các sigma rule cho phép sinh ra tệp tin extension (zip file) sử dụng để cài đặt trực tiếp trên Qradar.

Chi tiết xem tại https://github.com/nNipsx-Sec/pySigma-backend-qradar

Cách thức cài đặt và sử dụng

sử dụng công cụ, trước tiên ta tiến hành cài đặt công cụ sigma-cli. https://github.com/SigmaHQ/sigma-cli. Hiện tại Qradar Backend đã được xác nhận và cập nhật vào kho backend của sigma-cli, do vậy người dùng không cần phải cài đặt thêm bất kỳ module nào.

Lựa chọn cách cài đặt phù hợp, ở đây chúng tôi tiến hành cài đặt công cụ sử dung PIP.

 

Bắt đầu cài đặt:

Download file sigma rule đã mô tả ở phần trước để tiến hành thử nghiệm.

 

Tính năng thứ nhất, tiến hành convert rule.

 

Đầu ra là một câu lệnh query được sử dụng trực tiếp trên Qrdar.

SELECT UTF8(payload) as search_payload from events where ("ImageName"='wmic.exe' OR "Image" ILIKE '%\WMIC.exe') AND "Process CommandLine" ILIKE '% qfe %' AND "Process CommandLine" ILIKE '% get %' AND "Process CommandLine" ILIKE '%Caption,Description,HotFixID,InstalledOn%'

 

Tiến hành generate extension để cài đặt trên Qradar:

 

Kết quả thu được tệp rules-extension.zip có thể sử dụng để cài đặt trực tiếp trên giao diện quản lý của Qradar. Trên giao diện Qradar, truy cập Admin > System Configuration > Extension Management.

 

Chọn Add > Chọn file extension (.zip) > Tích chọn Install immediately > Click Add.

 

Bỏ qua cảnh báo extension is not signed > chọn Install.

  

Khi cài đặt, danh sách các tham số trong extension sẽ được hiển thị trong danh sách bên dưới.

  

Extension đã được cài đặt thành công

  

Kiểm tra danh sách building block và rule đã được cấu hình.

  

Như vậy, quá trình từ bước chuyển đổi sigma rule sang định dạng có thể sử dụng trên Qradar đến việc hoàn thành việc cấu hình rule đã được tự động hóa hoàn toàn.

Một số hạn chế

-          Hiện tại Backend chỉ hỗ trợ với các log windows.

-          Hiện tại PySigma đang phát triển dần dần cho nên chưa support các rule Correlations

Hướng phát triển trong tương lai:

-          Cập nhật hỗ trợ cho log source Linux

-          Cập nhật file manifest.txt và mapping các rule theo MITRE trên Qradar (Usecase manager)

@GTSC Purple Team

 

 

 

 

 

Các gói dịch vụ

Liên hệ

Name
Email
Phone
Message