امیرحسین تنگسیری نژاد
مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

قوانین Sigma چیست؟ راهنما نوشتن Sigma Rule

فرمت SIGMA یکی از زبان های مشترک سیستم های امنیتی مانند EDR ها و SIEM ها میباشد. به واسطه این فرمت ما توانایی این را داریم که قوانینی را برای شناسایی تهدیدات ایجاد کنیم.
توجه داشته باشید که مهندسین SOC همواره با تجهیزات امنیتی از جمله SIEM ها سروکار دارند. SIEM ها دارای زبان های مختلف هستند که هرکدام از یک اصول دستوری پیروی میکند. به عنوان مثال جهت شناسایی آسیب پذیری Microsoft Follina ما از Rule زیر برای Splunk استفاده میکنیم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
Index=* sourcetype=wineventlog:security EventCode=4688 process_name=”msdt.exe”
| regex Creator_Process_Name=(“winword.exe|excel.exe|powerpnt.exe”)
| regex CommandLine=(“ms-msdt:/id|ms-msdt:-id|PCWDiagnostic”)
| stats count by _time, host, process_name, Create_Process_Name, CommandLine

در اینجا نیز از Rule زیر برای IBM QRadar استفاده میکنیم.

SELECT UTF8(payload) from events where LOGSOURCETYPENAME(devicetype)='Microsoft Windows Security Event Log' and ("Process CommandLine" ilike '%WINWORD.EXE%') and ("Process CommandLine" ilike '%msdt.exe%') and ("Process CommandLine" ilike '%sdiagnhost.exe%' or "Process CommandLine" ilike '%csc.exe%' or "Process CommandLine" ilike '%PCWDiagnostic%' or "Process CommandLine" ilike '%IT_ReBrowserForFile%' or "Process CommandLine" ilike '%IT_BrowserForFile%' or "Process CommandLine" ilike '%conhost.exe%')
GrayLog
(CommandLine.keyword:WINWORD.EXE AND CommandLine.keyword:msdt.exe AND CommandLine.keyword:(sdiagnhost.exe csc.exe PCWDiagnostic IT_ReBrowserForFile IT_BrowserForFile conhost.exe))
Sumologic
(_sourceCategory=windows AND (CommandLine = "WINWORD.EXE") AND (CommandLine = "msdt.exe") AND (CommandLine = "sdiagnhost.exe" OR CommandLine = "csc.exe" OR CommandLine = "PCWDiagnostic" OR CommandLine = "IT_ReBrowserForFile" OR CommandLine = "IT_BrowserForFile" OR CommandLine = "conhost.exe"))

حالا سوال اینجاست که مهندسین SOC چطور باید درک کاملی از تمامی زبان های مربوط به SIEM ها داشته باشند؟ اینجاست که Sigma به کمک‌ مهندسین SOC می آید. به واسطه SIGMA ما به جای اینکه دو Rule بنویسیم، یکی برای Splunk و‌ یکی برای IBM QRadar از یک Rule با فرمت SIGMA ایجاد میکنیم و به راحتی از طریق SIGMA Converter آن را به هر زبان دیگری که توسط SIEM موردنظر ما قابل فهم است تبدیل میکنیم.

چگونه Sigma Rule ایجاد کنیم؟

حالا بیاید در رابطه به اینکه چطور میتوانیم Sigma Rule هارا ایجاد کنیم صحبت‌ کنیم. توجه داشته باشید که نوشتن Rule در Sigma بسیار ساده تر از نوشتن Rule در SIEM ها میباشد. Sigma از حالت نوشتاری Yaml Based برای Rule های خود استفاده میکند. در نوشتن Sigma Rule ها ابتدا باید در یک Text Editor استفاده کنید‌ ( من از VSCode استفاده میکنم ).
در Text Editor ابتدا یک فایل با فرمت YAML ایجاد میکنیم زیرا فرمت مربوط به Sigma Rule ها Yaml میباشد.

قوانین Sigma چیست؟ راهنما نوشتن Sigma Rule

نکته: حتما قبل از ساخت فایل YAML از نصب بودن افزونه YAML در VSCode مطمئن شوید.

قوانین Sigma چیست؟ راهنما نوشتن Sigma Rule

ساختار یک Rule در Sigma بسیار ساده است. در نوشتن Rule های Sigma سه بخش برای ما وجود دارد که هرکدام کار خاصی را انجام میدهند و دارای ویژگی های اجباری و اختیاری میباشند، این سه بخش در Rule های Sigma عبارتند از:

  • Metadata
  • LogSource
  • Detection

هرکدام از قسمت های بالا دارای ویژگی های متعددی میباشند که بعضی از آن اختیاری است یعنی نیاز نیست حتما آن هارا بنویسیم و بعضی از ویژگی های آن اجباری هست تو حتما باید مشخص شود.

معرفی Metadata

در این بخش اطلاعاتی در رابطه Rule که ما نوشتیم را ارائه میکنیم مثله زمان نوشته شدن آن، نام نویسنده، توضیحات و مراجع را میتوانیم در این بخش مشخص کنیم. این بخش دارای ویژگی های مختلفی است که به شرح زیر هستند:

  • بخش Date ( اختیاری ) - در این بخش زمان ایجاد Rule را مشخص میکنیم.
  • بخش Status ( اختیاری ) - در این بخش وضعیت Rule را مشخص میکنیم که معمولا سه انتخاب برای این بخش داریم.
  • بخش Description ( اختیاری ) - در این بخش توضیحاتی در رابطه با Rule مورد نظرمان مینویسیم برای مثال میگویم که این Rule جهت شناسایی آسیب پذیری Microsoft Follina میباشد.
  • بخش Reference ( اختیاری ) - در این بخش میتوانیم مرجع معرفی کنیم.
  • بخش سطح ( اختیاری ) - در این بخش سطح حمله را مشخص میکنیم که چه میزان است.
  • بخش Tag ( اختیاری ) - میتوانیم یک Tag از حملات را که مرتبط با Rule ما میباشد را وارد کنیم.
  • نکته: معمولا در این بخش MITRE ATT&CK Tag قرار میگیرد.

بیشتر بخوانید: بستر Azure Sentinel چیست؟ به زبان ساده

title: Possible DNS Tunneling

id: 1ec4b281-aa65-46a2-bdae-5fd830ed914e

status: test

description: Normally, DNS logs contain a limited amount of different dns queries for a single domain. This rule detects a high amount of queries for a single domain, which can be an indicator that DNS is used to transfer data.

author: Patrick Bareiss

references:

  – https://zeltser.com/c2-dns-tunneling/

  – https://patrick-bareiss.com/detect-c2-traffic-over-dns-using-sigma/

date: 2019/04/07

modified: 2021/11/27

معرفی بخش LogSource

در این بخش دراصل ما منبع Log های خودمان و نوع آنهارا که از چه منبعی ارسال میشوند را مشخص میکنیم. Sigma دارای 4 دسته بندی برای LogSource ها میباشد که این دسته بندی ها به همراه مثال های آن در زیر آماده است.

logsource:
service: apache
category: dns

معرفی بخش Detection

به مراتب میشه گفت مهم ترین بخش از Sigma Rule ما بخش Detection میباشد. این بخش دراصل تعیین کننده عواملی است که جهت شناسایی حمله مورد نظر استفاده میشود.

detection:
keywords:
– ‘exit signal Segmentation Fault’
condition: keywords

بررسی یک مثال عملی

به مثال زیر توجه کنید. در مثال زیر ما از طریق Sigma Rule میخواهیم که عبارت Exit Signal Segmentation Fault را در Log های خودمان جست و جو کنیم. در بخش Detection از keywords استفاده میکنیم در پایین آن عبارتمان را قرار میدهیم و Sigma Rule ما جات شناسایی Segmentation Fault Error در Log های ما آماده میباشد.
نکته: بقیه بخش های Sigma Rule بالا را از توضیحات بالا تحلیل و بررسی کنید.

title: Apache Segmentation Fault
id: 1da8ce0b-855d-4004-8860-7d64d42063b1
status: test
description: Detects a segmentation fault error message caused by a creashing apache worker process
author: Florian Roth
references:
- http://www.securityfocus.com/infocus/1633
date: 2017/02/28
modified: 2021/11/27
logsource:
service: apache
detection:
keywords:
- 'exit signal Segmentation Fault'
condition: keywords
falsepositives:
- Unknown
level: high
tags:
- attack.impact
- attack.t1499.004


چگونه Sigma Rule را به زبان های دیگر ترجمه کنیم؟

توجه کنید که ما گفتیم زمانی که یک Sigma Rule مینویسیم میتوانیم آن را به زبان های دیگر تجهیزات امنیتی از جمله SIEM ها ترجمه کنیم. برای اینکه اینکار را انجام دهیم ما دو راه اصلی داریم:

  • اول - استفاده از سایت uncoder.io
  • دوم - استفاده از Sigmac.py

استفاده از سایت Uncoder.io

برای اینکه از سایت Uncoder.io برای ترجمه Sigma Rule خودمان به یک زبان دیگر استفاده کنیم فقط کافیه که وارد این وب سایت بشویم و در سمت چپ گزینه Sigma را انتخاب کنیم و در سمت راست SIEM و یا فرمت مورد نظرمان را مشخص کنیم.

قوانین Sigma چیست؟ راهنما نوشتن Sigma Rule

در اینجا هدف ما تبدیل Sigma Rule مورد نظرمان به یک Splunk SPL میباشد. برای این موضوع کافیست در سمت راست گزینه Splunk را انتخاب کنیم و گزینه Translate را بزنیم.

قوانین Sigma چیست؟ راهنما نوشتن Sigma Rule

قوانین Sigma چیست؟ راهنما نوشتن Sigma Rule

استفاده از Sigmac

برای استفاده از Sigmac میتوانید به شکل زیر عمل کنید.

./sigmac -t [Target Format] -c [Config File Path] [Rule File Path]

امیرحسین تنگسیری نژاد
امیرحسین تنگسیری نژاد

مهندس و مدرس شبکه و امنیت سایبری و مدیر کل جزیره هک و امنیت اطلاعات توسینسو

متخصص امنیت اطلاعات و کارشناس شکار تهدیدات بانک ملی ایران ، دارای مدارک مختلف از Splunk و AWS و Fortinet و Huawei حوزه اصلی فعالیت بنده در زمینه شبکه مباحث R&S و Service Provider می‌باشد و در زمینه امنیت نیز در موقعیت های مختلفی مانند PenTest و SoC فعالیت داشته و دارم. سابقه همکاری با بعضی سازمان های در قالب پروژه و... را داشته ام الان به عنوان تحلیلگر امنیت سایبری در زیرساخت بانک ملی مشغول به کار هستم. لینکداین: https://www.linkedin.com/in/amirhoseintangsirinezhad/

نظرات