خلاصه اجرایی

Detection as Code (DaC) یک رویکرد نوین در امنیت سایبری است که ruleهای تشخیص تهدید را به عنوان کد مدیریت می‌کند. این روش با بهره‌گیری از اصول توسعه نرم‌افزار مانند کنترل نسخه، تست خودکار و استقرار مداوم، دقت و کارایی تشخیص تهدیدات را افزایش می‌دهد. در این مقاله، ابتدا به معرفی DaC و اهمیت آن پرداخته می‌شود. سپس، نقش شواهد و تله‌متری در بهبود کیفیت ruleها بررسی می‌شود. گردش کار توسعه و انتشار ruleها، شامل مراحل طراحی، پیاده‌سازی، تست و استقرار، تشریح می‌گردد. روش‌های تست و اعتبارسنجی، از جمله تست بر روی داده‌های تاریخی و شبیه‌سازی حملات، مورد بحث قرار می‌گیرد. مدیریت مثبت‌های کاذب به عنوان یکی از چالش‌های اصلی، با تکنیک‌هایی مانند تنظیم آستانه‌ها و بازخورد تیم امنیت بررسی می‌شود. محدودیت‌های DaC، از جمله پیچیدگی پیاده‌سازی و نیاز به مهارت‌های تخصصی، نیز مطرح می‌گردد. در نهایت، معیارهای ارزیابی اثربخشی مانند نرخ تشخیص و نرخ مثبت کاذب معرفی و بر اهمیت عملیاتی‌سازی و نگهداری مداوم تأکید می‌شود. این مقاله راهنمایی عملی برای تیم‌های امنیتی است که به دنبال بهبود فرآیندهای تشخیص تهدید هستند.

مقدمه‌ای بر Detection as Code

Detection as Code رویکردی است که در آن محتوای شناسایی تهدید، مانند ruleهای SIEM یا YARA، به‌عنوان کد در نظر گرفته شده و تحت کنترل نسخه، آزمایش و استقرار قرار می‌گیرد. این رویکرد با بهره‌گیری از قالب‌های ساختاریافته و متنی، امکان مشارکت جمعی، بازبینی و نگهداری آسان‌تر را فراهم می‌کند. دو قالب مهم در این حوزه، سیگما (Sigma) برای رویدادهای لاگ و یارا (YARA) برای شناسایی بدافزار بر اساس الگوهای فایل هستند.

سیگما یک قالب باز، عمومی و ساختاریافته برای توصیف رفتارهای مخرب در رویدادهای لاگ است. این قالب به‌صورت متنی و قابل فهم برای انسان طراحی شده و امکان تبدیل به زبان‌های جستجوی SIEMهای مختلف را فراهم می‌کند. ساختار یک قانون سیگما شامل بخش‌هایی مانند عنوان، توصیف، منبع لاگ (logsource) و منطق شناسایی (detection) است که با استفاده از انتخاب‌گرها (selection) و فیلترها تعریف می‌شود. این ساختار ماژولار، اشتراک‌گذاری قوانین را در جامعه امنیتی آسان کرده و از دوباره‌کاری جلوگیری می‌کند.

یارا نیز یک ابزار متن‌باز برای شناسایی و طبقه‌بندی بدافزارها بر اساس الگوهای متنی یا باینری است. قوانین یارا شامل مجموعه‌ای از رشته‌ها (strings) و یک عبارت بولی (condition) هستند که تعیین می‌کنند یک فایل با قاعده مطابقت دارد یا خیر. این قوانین را می‌توان با استفاده از wildcard، عبارات منظم و عملگرهای پیشرفته‌تر غنی‌سازی کرد. هر دو قالب سیگما و یارا به‌صورت فایل‌های متنی ساده ذخیره می‌شوند و بنابراین به‌راحتی در ابزارهای کنترل نسخه مانند Git قابل مدیریت هستند.

  • سیگما: قالب باز برای شناسایی رویدادها در لاگ‌ها، قابل تبدیل به زبان‌های SIEM مختلف.
  • یارا: ابزار شناسایی الگو در فایل‌ها، مناسب برای نمونه‌های بدافزار.
  1. شناسایی نیازمندی‌ها و انتخاب قالب مناسب (سیگما برای لاگ، یارا برای فایل).
  2. ایجاد ساختار اولیه و استفاده از مستندات رسمی برای نگارش صحیح.
rule example {
  meta:
    description = "Example rule"
  strings:
    $a = "malicious_string"
  condition:
    $a
}

شواهد و تله‌متری در Detection as Code

در رویکرد Detection as Code، قوانین تشخیص تهدید به عنوان کد مدیریت می‌شوند؛ اما پیش از هر چیز، این قوانین به داده‌های ورودی متکی هستند که از منابع مختلف تله‌متری جمع‌آوری می‌شوند. این داده‌ها عمدتاً شامل لاگ‌های رویداد امنیتی، ترافیک شبکه، و اطلاعات میزبان‌ها هستند. به عنوان مثال، در پلتفرم‌های ابری مانند AWS، سرویس CloudTrail رویدادهای مرتبط با حساب ریشه را ثبت می‌کند و یک قانون سیگما می‌تواند با استفاده از فیلدهایی مانند userIdentity.type و eventType، الگوی استفاده از دسترسی ریشه را شناسایی کند. این لاگ‌ها به عنوان شواهد اولیه، پایه و اساس هر قانون تشخیصی را تشکیل می‌دهند.

در حوزه تحلیل بدافزار، ابزارهایی مانند YARA از الگوهای متنی و باینری برای شناسایی نمونه‌های مخرب استفاده می‌کنند. این الگوها می‌توانند شامل رشته‌های هگزادسیمال، عبارات باقاعده و یا ترکیبی از آن‌ها باشند. به عنوان مثال، یک قانون YARA می‌تواند دنباله‌ای از بایت‌های خاص را که در یک خانواده بدافزار مشترک است، جستجو کند. در اینجا، تله‌متری به جای لاگ‌های متنی، از محتوای فایل‌ها و ساختار باینری آن‌ها استخراج می‌شود. بنابراین، در Detection as Code، نوع و کیفیت شواهد مستقیماً بر اثربخشی قوانین تأثیر می‌گذارد.

نکته مهم این است که شواهد باید به گونه‌ای ساختار یافته و نرمال‌سازی شوند که قوانین قابل انتقال بین محیط‌های مختلف باشند. فرمت سیگما با ارائه یک ساختار استاندارد برای توصیف رویدادها، این امکان را فراهم می‌کند که یک قانون واحد به زبان‌های مختلف SIEM تبدیل شود. به عنوان مثال، قانونی که برای AWS CloudTrail نوشته شده است، می‌تواند به جستجوی Splunk یا KQL تبدیل شود. این امر نیازمند درک دقیق از ساختار لاگ‌ها و نگاشت صحیح فیلدها است. در غیر این صورت، ممکن است قوانین در محیط‌های مختلف نادرست عمل کنند یا رویدادهای مهم را از دست بدهند.

توصیه می‌شود که تیم‌های امنیتی ابتدا یک پایگاه داده از منابع تله‌متری موجود و ساختار آن‌ها ایجاد کنند. سپس، برای هر منبع، یک طرح (schema) مشخص تعریف کنند که شامل فیلدهای کلیدی، انواع داده و مقادیر مجاز باشد. این کار به عنوان پیش‌نیاز اصلی برای نوشتن قوانین دقیق و قابل نگهداری در چرخه حیات Detection as Code است. همچنین، باید فرایندی برای اعتبارسنجی شواهد و اطمینان از صحت و کامل بودن آن‌ها در نظر گرفته شود.

  • لاگ‌های رویداد امنیتی (مانند CloudTrail) منبع اصلی شواهد برای تشخیص ناهنجاری‌ها هستند.
  • الگوهای باینری و متنی در فایل‌ها برای شناسایی بدافزار با YARA استفاده می‌شوند.
  • استانداردسازی شواهد (مانند فرمت سیگما) قابلیت حمل قوانین را افزایش می‌دهد.
  1. شناسایی منابع تله‌متری موجود در سازمان (مانند لاگ‌های SIEM، EDR، و سرویس‌های ابری).
  2. مستندسازی ساختار داده‌ها و فیلدهای کلیدی هر منبع.
  3. تعریف طرح استاندارد برای هر منبع و نگاشت آن به فرمت‌های رایج مانند سیگما.
  4. توسعه قوانین اولیه بر اساس شواهد مستند و آزمایش آن‌ها در محیط آزمایشگاهی.

گردش کار توسعه و انتشار Ruleها

در رویکرد Detection as Code، قوانین تشخیص تهدید مانند کد نرم‌افزار مدیریت می‌شوند؛ بدین معنا که چرخه حیات آن‌ها شامل توسعه، تست، نسخه‌بندی، بازبینی و انتشار خودکار است. این گردش کار با تبدیل قوانین از یک فرمت میانی مانند Sigma به زبان‌های پرس‌وجوی بومی SIEM آغاز می‌شود. برای نمونه، ابزار خط فرمان sigma امکان تبدیل یک قانون Sigma به کوئری Splunk یا سایر فرمت‌های پشتیبانی‌شده را فراهم می‌کند. این تبدیل معمولاً با استفاده از پارامترهایی مانند -t برای تعیین هدف و -p برای اعمال پیکربندی‌های خاص انجام می‌شود. خروجی این تبدیل، کوئری‌هایی است که مستقیماً در موتور جستجوی SIEM قابل استفاده هستند.

پس از تبدیل، مرحله تست و اعتبارسنجی قوانین اهمیت حیاتی دارد. در این مرحله، قوانین تبدیل‌شده باید در برابر داده‌های نمونه (شامل رویدادهای عادی و سناریوهای حمله) اجرا شوند تا از صحت منطق تشخیص، نرخ مثبت کاذب پایین و پوشش مناسب اطمینان حاصل شود. برای قوانین مبتنی بر YARA نیز فرآیند مشابهی وجود دارد؛ قوانین YARA باید با استفاده از کامپایلر yara کامپایل شده و سپس در برابر مجموعه‌ای از نمونه‌های بدافزار و فایل‌های بی‌خطر تست شوند. این تست‌ها معمولاً در یک محیط آزمایشی (Staging) انجام می‌شوند تا از تأثیر منفی بر محیط عملیاتی جلوگیری شود.

پس از موفقیت‌آمیز بودن تست‌ها، قوانین وارد مرحله نسخه‌بندی و انتشار می‌شوند. در این مرحله، تغییرات در یک مخزن کد (مانند Git) ثبت شده و با استفاده از سیستم‌های یکپارچه‌سازی مداوم (CI/CD) به‌صورت خودکار به محیط‌های تولید منتشر می‌شوند. این فرآیند باید شامل بازبینی انسانی (Peer Review) و رعایت اصول امنیتی مانند حداقل دسترسی باشد. همچنین، ثبت تاریخچه تغییرات و قابلیت بازگشت به نسخه‌های قبلی از الزامات این رویکرد است. توصیه می‌شود که تمام مراحل فوق در مستندات فنی به‌طور شفاف ثبت شوند تا قابلیت ممیزی و ردیابی فراهم شود.

  • استفاده از مخزن مرکزی برای نگهداری قوانین و اعمال کنترل دسترسی مبتنی بر نقش
  • اجرای خودکار تست‌ها در هر تغییر با استفاده از پایپ‌لاین CI/CD
  • تعریف معیارهای پذیرش (مانند حداکثر نرخ مثبت کاذب) برای هر قانون
  • ثبت ابرداده‌ها (نویسنده، تاریخ، منبع تهدید) در داخل فایل قانون
  1. دریافت قانون اولیه از منابع معتبر (مانند مخزن SigmaHQ) یا ایجاد قانون اختصاصی
  2. تبدیل قانون به فرمت هدف با استفاده از ابزارهای خط فرمان (مانند sigma convert)
  3. اجرای تست‌های واحد و یکپارچه در محیط آزمایشی
  4. ثبت تغییرات در مخزن و ایجاد درخواست بازبینی
  5. انتشار خودکار به محیط تولید پس از تأیید و عبور از تمام تست‌ها
sigma convert -t splunk -p config.yml rule.yml
# خروجی: کوئری Splunk قابل استفاده در SIEM
yara -C compiled_rule.yarc sample_malware.exe
# بررسی تطابق قانون YARA با نمونه

تست و اعتبارسنجی Ruleها

تست و اعتبارسنجی قوانین شناسایی، یکی از ارکان اصلی رویکرد Detection as Code است. هدف از این مرحله، کاهش خطاهای شناختی و افزایش اطمینان از عملکرد صحیح قوانین در شرایط واقعی است. در حوزه سیگما، ساختار شرطی condition که ترکیبی از انتخاب‌ها (selection) و فیلترها (filter) است، باید به دقت مورد آزمایش قرار گیرد تا از بروز مثبت‌های کاذب و منفی‌های کاذب جلوگیری شود. این آزمایش‌ها می‌توانند به صورت واحد، یکپارچه و یا در محیط staging انجام شوند.

برای تست قوانین، ابتدا باید مجموعه‌ای از داده‌های ورودی معتبر و نامعتبر تعریف شود. این داده‌ها می‌توانند شامل نمونه‌های لاگ واقعی، داده‌های سنتتیک و یا سناریوهای تهاجمی شبیه‌سازی‌شده باشند. سپس قوانین روی این داده‌ها اجرا شده و خروجی با انتظارات مقایسه می‌شود. این فرآیند باید به صورت خودکار و در قالب پایپ‌لاین CI/CD انجام شود تا هر تغییر در قوانین، بلافاصله مورد بازبینی قرار گیرد.

در حوزه یارا، تست قوانین معمولاً با استفاده از نمونه‌های بدافزار شناخته‌شده و فایل‌های سالم انجام می‌شود. ساختار شرطی در یارا شامل مجموعه‌ای از رشته‌ها (strings) و یک عبارت بولین است که باید با دقت و بدون ابهام نوشته شود. توصیه می‌شود که برای هر قانون، یک مجموعه تست حداقلی شامل موارد مثبت و منفی تعریف شود و این مجموعه در مخزن نسخه‌بندی نگهداری شود تا در آینده نیز قابل استفاده باشد.

  • استفاده از داده‌های مرجع و سناریوهای بازتولیدپذیر برای اطمینان از صحت عملکرد
  • جداسازی محیط تست از محیط عملیاتی برای جلوگیری از تداخل
  • ثبت و مستندسازی نتایج تست به منظور پیگیری تغییرات
  1. تعریف سناریوهای تست مبتنی بر الگوهای شناخته‌شده و موارد مرزی
  2. اجرای خودکار قوانین بر روی مجموعه داده‌های تست
  3. بررسی خروجی‌ها و مقایسه با نتایج مورد انتظار
  4. به‌روزرسانی قوانین در صورت مشاهده خطا و تکرار چرخه تست
condition: selection and not filter

مثبت‌های کاذب و مدیریت آنها

در فرآیند Detection as Code، یکی از چالش‌های اصلی مدیریت مثبت‌های کاذب (False Positives) است. این رویدادها زمانی رخ می‌دهند که یک قانون امنیتی رفتاری را به‌عنوان مخرب شناسایی می‌کند در حالی که در واقعیت بی‌خطر است. در قالب سیگما (Sigma)، بخش falsepositives به‌طور مشخص برای مستندسازی سناریوهای شناخته‌شده‌ای طراحی شده که ممکن است باعث هشدار نادرست شوند. برای مثال، در قانون شناسایی استفاده از حساب ریشه AWS، این بخش شامل وظایف مجاز AWS است که نیاز به دسترسی ریشه دارند. استفاده صحیح از این بخش نه‌تنها شفافیت را افزایش می‌دهد، بلکه به تیم‌های امنیتی کمک می‌کند تا پیش از استقرار، قوانین را بر اساس زمینه محیط خود تنظیم کنند.

برای کاهش مؤثر مثبت‌های کاذب، باید از قابلیت‌های شرطی و فیلتر در قوانین استفاده کرد. در سیگما، می‌توان با افزودن فیلترهای دقیق در بخش detection، مانند استفاده از کلیدواژه‌های not یا filter، رویدادهای غیرمخرب را حذف کرد. برای نمونه، در قانون AWS Root Credentials، شرط filter: eventType: AwsServiceEvent باعث می‌شود رویدادهای سرویس‌های مجاز از تشخیص خارج شوند. این رویکرد نیازمند تحلیل دقیق لاگ‌ها و شناسایی الگوهای تکراری است. توصیه می‌شود تیم‌های امنیتی ابتدا قوانین را در محیط آزمایشی با داده‌های واقعی اجرا کنند و سپس بر اساس بازخورد، فیلترها را به‌روزرسانی نمایند.

در ابزار یارا (YARA) نیز مدیریت مثبت‌های کاذب از طریق استفاده از قوانین شرطی و متغیرهای خارجی امکان‌پذیر است. برای مثال، با تعریف متغیرهای خارجی مانند ext_var در بخش condition، می‌توان رفتار قانون را بر اساس ورودی‌های پویا تنظیم کرد. همچنین، استفاده از ماژول‌هایی مانند PE یا Math به تحلیل دقیق‌تر فایل‌ها کمک می‌کند. یک روش مؤثر، ترکیب چند قانون با اولویت‌بندی است: قانون اصلی با دقت بالا برای تشخیص، و قانون ثانویه برای فیلتر کردن موارد مشکوک. این رویکرد نیازمند نسخه‌بندی دقیق و تست مداوم است تا از افزایش بار محاسباتی جلوگیری شود.

  • بخش falsepositives در سیگما باید شامل سناریوهای مستند و قابل استناد باشد.
  • استفاده از فیلترهای شرطی مانند not و filter در بخش detection برای حذف رویدادهای مجاز.
  • در یارا، تعریف متغیرهای خارجی و استفاده از ماژول‌ها برای کاهش خطاهای تشخیصی.
  1. مستندسازی تمام سناریوهای شناخته‌شده مثبت کاذب در بخش falsepositives قانون.
  2. اجرای قانون در محیط آزمایشی با داده‌های واقعی و ثبت بازخورد.
  3. به‌روزرسانی فیلترها و قوانین بر اساس تحلیل بازخورد و تکرار فرآیند تست.
rule aws_root_account_usage {
  meta:
    description = "Detects AWS root account usage"
  detection:
    selection:
      userIdentity.type: "Root"
    filter:
      eventType: "AwsServiceEvent"
    condition: selection and not filter
  falsepositives:
    - "AWS Tasks That Require Root User Credentials"
  level: medium
}

محدودیت‌های Detection as Code

قالب‌های سیگما و یارا به‌رغم مزایای قابل توجه در اشتراک‌گذاری و استانداردسازی قوانین تشخیص، با محدودیت‌های ذاتی‌ای مواجه هستند که تیم‌های امنیتی باید پیش از اتخاذ آن‌ها در فرایند Detection as Code مدنظر قرار دهند. این محدودیت‌ها عمدتاً به ماهیت انتزاعی این قالب‌ها و نیاز به تطبیق آن‌ها با محیط‌های عملیاتی بازمی‌گردد. درک این محدودیت‌ها برای طراحی یک خط لوله انتشار امن و واقع‌بینانه ضروری است.

نخستین و مهم‌ترین محدودیت، نیاز به تطبیق قوانین سیگما با ساختار داده و نحوه ثبت رویدادها در هر SIEM است. سیگما یک قالب میانی است و خروجی نهایی آن پس از تبدیل به زبان پرس‌وجوی خاص هر SIEM (مانند SPL برای Splunk یا KQL برای Azure Sentinel) باید با دقت بررسی شود. نگاشت فیلدها، نام‌های ایندکس و نحوه مدیریت مقادیر در هر پلتفرم متفاوت است و یک قانون سیگما ممکن است در یک SIEM به‌درستی کار کند و در دیگری نتایج نادرست یا ناقص تولید کند. این تطبیق نیازمند دانش عمیق از هر دو سمت (قالب و SIEM) است و خطا در آن می‌تواند منجر به از دست رفتن رویدادهای مهم یا ایجاد هشدارهای نادرست شود.

دومین محدودیت، پیچیدگی قوانین در مقیاس بزرگ است. هرچه تعداد قوانین سیگما یا یارا افزایش می‌یابد، مدیریت، تست و نگهداری آن‌ها پیچیده‌تر می‌شود. قوانین پیچیده ممکن است شامل شرایط متعدد، الگوهای منظم یا وابستگی به ماژول‌های خاص باشند که درک رفتار آن‌ها را دشوار می‌کند. این پیچیدگی، به‌ویژه در فرایند Detection as Code که نیازمند تست خودکار و بازبینی کد است، چالش‌برانگیز می‌شود. به‌عنوان مثال، قوانین یارا با استفاده از رشته‌های هگزادسیمال و عبارات باقاعده می‌توانند بسیار دقیق باشند، اما همین دقت، آن‌ها را در برابر تغییرات جزئی در بدافزار آسیب‌پذیر می‌کند و نیاز به به‌روزرسانی مداوم دارد.

سومین محدودیت، وابستگی به کیفیت و پوشش داده‌های ورودی است. قوانین سیگما و یارا بر اساس الگوهای رفتاری یا محتوایی تعریف می‌شوند، اما اگر داده‌های لاگ یا نمونه‌های مورد بررسی کامل و غنی نباشند، این قوانین کارایی خود را از دست می‌دهند. به‌عنوان مثال، یک قانون سیگما برای تشخیص استفاده از حساب ریشه در AWS نیازمند رویدادهای CloudTrail با فیلدهای مشخص است؛ اگر این رویدادها به‌درستی ثبت نشوند یا فیلدها تغییر کنند، قانون بی‌اثر می‌شود. این وابستگی به کیفیت داده، یک محدودیت ذاتی است که در مستندات سیگما نیز به آن اشاره شده است و تیم‌ها باید در طراحی خط لوله Detection as Code آن را در نظر بگیرند.

  • نیاز به تطبیق با SIEM: قوانین سیگما باید برای هر SIEM به‌صورت اختصاصی تبدیل و تنظیم شوند که این فرایند زمان‌بر و خطاپذیر است.
  • پیچیدگی قوانین: قوانین پیچیده (مانند قوانین یارا با الگوهای متعدد) نیازمند تست و نگهداری بیشتری هستند و ممکن است در محیط‌های بزرگ مقیاس، مدیریت آن‌ها دشوار شود.
  • وابستگی به داده: کارایی قوانین به کیفیت و پوشش داده‌های لاگ وابسته است؛ اگر داده‌ها ناقص یا ناسازگار باشند، قوانین ممکن است نتایج نادرست تولید کنند.

معیارهای ارزیابی اثربخشی

ارزیابی کیفیت قوانین تشخیص (Detection Rules) نیازمند معیارهای عینی و قابل اندازه‌گیری است. در رویکرد Detection as Code، این معیارها باید در چرخه حیات توسعه قانون (توسعه، آزمایش، استقرار) به‌صورت خودکار بررسی شوند. بدون چنین معیارهایی، تشخیص کارایی قوانین به قضاوت ذهنی وابسته می‌شود که در محیط‌های پویا ناپایدار است.

یکی از معیارهای کلیدی، سطح (Level) تعریف‌شده در قالب سیگما (Sigma) است. این سطح نشان‌دهنده شدت تهدید یا اهمیت رویداد است و باید با دقت و بر اساس تحلیل ریسک تنظیم شود. به‌عنوان مثال، سطح «بالا» برای فعالیت‌های مشکوک مرتبط با دسترسی غیرمجاز به حساب‌های حساس مناسب است، در حالی که سطح «پایین» برای رویدادهای کم‌اهمیت‌تر به کار می‌رود. تنظیم نادرست سطح می‌تواند منجر به نادیده‌گرفتن تهدیدات واقعی یا ایجاد نویز بیش از حد در هشدارها شود.

معیار دیگر، دقت شرط‌ها (Conditions) در قوانین یارا (YARA) است. دقت به معنای توانایی قانون در تشخیص نمونه‌های واقعی بدافزار بدون ایجاد مثبت کاذب (False Positive) است. این معیار را می‌توان با استفاده از مجموعه داده‌های آزمایشی (شامل نمونه‌های مثبت و منفی) و محاسبه نرخ تشخیص و نرخ خطا سنجید. به‌عنوان مثال، یک قانون یارا که با استفاده از رشته‌های متنی ساده نوشته شده باشد، ممکن است دقت پایینی داشته باشد و فایل‌های بی‌ضرر را نیز شناسایی کند. در مقابل، استفاده از الگوهای باینری خاص و منطق شرطی پیچیده‌تر می‌تواند دقت را افزایش دهد.

توصیه می‌شود که سازمان‌ها معیارهای ارزیابی را به‌صورت صریح مستند کنند و آن‌ها را در فرآیند بازبینی کد (Code Review) قوانین لحاظ نمایند. این معیارها باید شامل حداقل آستانه‌های قابل قبول برای نرخ مثبت کاذب و منفی کاذب باشند. همچنین، ارزیابی باید در محیط آزمایشی (Staging) انجام شود و نتایج آن پیش از انتشار در محیط عملیاتی (Production) بررسی گردد.

  • سطح (Level) در سیگما: شاخصی برای شدت تهدید که باید با تحلیل ریسک هماهنگ باشد.
  • دقت شرط‌ها در یارا: معیاری برای سنجش توانایی قانون در تشخیص دقیق نمونه‌های هدف بدون خطا.
  • نرخ مثبت کاذب (False Positive Rate): درصد هشدارهای اشتباه از کل هشدارهای تولیدشده.
  • نرخ منفی کاذب (False Negative Rate): درصد موارد واقعی که قانون آن‌ها را شناسایی نمی‌کند.
  1. تعریف مجموعه داده‌های آزمایشی شامل نمونه‌های مثبت (تهدیدات واقعی) و منفی (ترافیک عادی).
  2. اجرای قانون بر روی مجموعه داده‌ها و ثبت نتایج (تشخیص صحیح، خطاها).
  3. محاسبه معیارهای دقت، فراخوانی (Recall) و F1-Score.
  4. مقایسه نتایج با آستانه‌های از پیش تعیین‌شده و تصمیم‌گیری برای پذیرش یا اصلاح قانون.
// مثال از یک قانون سیگما با سطح و شرط دقیق
level: high
detection:
  selection:
    userIdentity.type: Root
  condition: selection

عملیاتی‌سازی و نگهداری

استقرار قوانین تشخیصی در محیط عملیاتی، فراتر از صرفاً نوشتن Ruleها، نیازمند یک خط لوله مشخص برای تبدیل، اعتبارسنجی و انتشار کنترل‌شده است. در اکوسیستم سیگما، قوانین به‌صورت متنی و ساختاریافته (YAML) نگهداری می‌شوند و برای اجرا در SIEMهای مختلف، باید به زبان پرس‌وجوی بومی آن پلتفرم تبدیل شوند. این تبدیل توسط ابزارهایی مانند pySigma انجام می‌شود که خروجی آن برای سیستم‌هایی مانند Splunk، Elastic و Microsoft Sentinel قابل استفاده است. نکته کلیدی این است که خروجی تبدیل، باید پیش از انتشار، در محیط آزمایشی (Staging) مورد ارزیابی قرار گیرد تا از صحت منطق و نبود خطای نحوی اطمینان حاصل شود.

برای قوانین مبتنی بر YARA که عمدتاً برای شناسایی بدافزار و محتوای مخرب در فایل‌ها استفاده می‌شوند، فرآیند کامپایل اهمیت ویژه‌ای دارد. ابزار YARA امکان کامپایل قوانین به فرمت باینری را فراهم می‌کند که هم سرعت اسکن را افزایش می‌دهد و هم از دستکاری غیرمجاز قوانین جلوگیری می‌کند. در محیط‌های عملیاتی، به‌ویژه در ابزارهای بومی مانند یارا، این قابلیت کامپایل باید به‌عنوان یک گام الزامی در خط لوله انتشار در نظر گرفته شود. توصیه می‌شود که قوانین کامپایل‌شده، همراه با نسخه‌بندی دقیق و امضای دیجیتال، در مخزن مرکزی نگهداری و سپس به‌صورت خودکار به نقاط اجرا توزیع شوند.

نگهداری و به‌روزرسانی قوانین، یک چرخه مستمر است که شامل پایش بازخوردهای عملیاتی، تحلیل نتایج مثبت کاذب و منفی کاذب، و اصلاح قوانین بر اساس تهدیدات جدید است. برای این منظور، پیشنهاد می‌شود که یک فرآیند بازبینی دوره‌ای تعریف شود که در آن، قوانین بر اساس معیارهایی مانند نرخ تشخیص، حجم هشدارها و ارتباط با تهدیدات جاری، اولویت‌بندی و به‌روزرسانی شوند. همچنین، استفاده از مخازن عمومی مانند SigmaHQ به‌عنوان منبع الهام و تطبیق قوانین با نیازمندی‌های داخلی، می‌تواند به کاهش زمان توسعه و افزایش پوشش تشخیصی کمک کند. لازم به ذکر است که هرگونه تغییر در قوانین باید مستند شده و از طریق مکانیزم کنترل نسخه (مانند Git) پیگیری شود.

  • استفاده از خط لوله CI/CD برای خودکارسازی فرآیند تبدیل، تست و انتشار قوانین
  • ایجاد محیط آزمایشی ایزوله برای اعتبارسنجی قوانین پیش از استقرار در محیط تولید
  • برقراری مکانیزم بازخورد بین تیم‌های امنیتی و توسعه‌دهندگان قوانین برای بهبود مستمر
  1. قوانین سیگما را با استفاده از pySigma به فرمت SIEM هدف تبدیل کنید.
  2. خروجی تبدیل را در محیط آزمایشی اجرا کرده و نتایج را با داده‌های واقعی و شبیه‌سازی‌شده مقایسه کنید.
  3. قوانین YARA را با ابزار رسمی کامپایل کرده و صحت خروجی را بررسی کنید.
  4. قوانین نهایی را با برچسب نسخه و توضیحات تغییرات در مخزن مرکزی ثبت کنید.
  5. انتشار خودکار قوانین به نقاط اجرا را از طریق ابزارهای مدیریت پیکربندی انجام دهید.
sigma convert -t splunk -p config.yml rule.yml
# خروجی: پرس‌وجوی قابل اجرا در Splunk
yarac compiled_rules.yar rules.bin
# خروجی: فایل باینری کامپایل‌شده برای اسکن سریع‌تر
ویدئوی تکمیلی از کانال رسمی MITRE درباره تبدیل ATT&CK به یک فرایند عملی شکار تهدید.

منابع و مطالعه بیشتر

  1. SigmaHQ Documentationsigmahq.io
  2. YARA Documentationyara.readthedocs.io