0Pricing
Cyber Security Academy · บทเรียน

การเขียนกฎ Sigma

ไวยากรณ์กฎตรวจจับที่นำไปใช้ได้หลายระบบ

การเขียนกฎ Sigma เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

ซิกมาคืออะไร

ซิกมา คือรูปแบบลายเซ็นทั่วไปที่ไม่ขึ้นกับผู้จำหน่ายสำหรับการตรวจจับจากบันทึก คุณเขียนตรรกะการตรวจจับเพียงครั้งเดียวใน YAML แล้วแปลงเป็น SPL ของ Splunk คำค้นหาของ Elastic, KQL ของ Sentinel และระบบปลายทางอื่น ๆ ได้อีกมากมาย

ซิกมาสำหรับการตรวจจับจากบันทึกก็เหมือนกับที่ YARA ใช้สำหรับการตรวจจับแฟ้ม นั่นคือเป็นภาษากลางที่ใช้งานข้ามระบบได้ ช่วยให้ทีมแบ่งปันกฎต่อสาธารณะและหลีกเลี่ยงการเขียนแนวคิดเดียวกันใหม่สำหรับ SIEM แต่ละระบบ

โครงสร้างของกฎ

กฎซิกมาเป็นเอกสาร YAML ที่มีส่วนที่จำเป็นและส่วนที่เลือกใช้ได้ ส่วนสำคัญคือ title, logsource และ detection

title: Suspicious PowerShell Encoded Command
id: 7e3f3c1a-1f2b-4c3d-9a8b-1234567890ab
status: experimental
logsource:
  category: process_creation
  product: windows
detection:
  selection:
    Image|endswith: '\\powershell.exe'
    CommandLine|contains: '-enc'
  condition: selection
level: high

บล็อกแหล่งบันทึก

บล็อก logsource บอกตัวแปลงว่ากฎนี้ใช้กับ บันทึกใด โดยตรง บล็อกนี้ไม่ได้ค้นหาข้อมูล แต่เลือกการจับคู่เขตข้อมูลและดัชนีที่ถูกต้องระหว่างการแปลง

คีย์ที่พบบ่อย:

  • product — เช่น windows, linux, aws
  • category — เช่น process_creation, network_connection, file_event
  • service — เช่น sysmon, security, sshd

เลือกชุดค่าผสมที่เจาะจงที่สุดเท่าที่ข้อมูลของคุณรองรับ เพื่อให้กระบวนการส่งต่อจับคู่เขตข้อมูลได้อย่างถูกต้อง

การเลือกและตัวระบุการค้นหา

ภายใน detection คุณกำหนด ตัวระบุการค้นหา ที่มีชื่อกำกับได้ตั้งแต่หนึ่งรายการขึ้นไป แต่ละรายการเป็นโครงสร้างจับคู่เกณฑ์ระหว่างเขตข้อมูลกับค่า เขตข้อมูลหลายรายการภายในการเลือกเดียวกันจะเชื่อมด้วยตรรกะ AND

ในที่นี้ เงื่อนไขทั้งสองข้อจะต้องเป็นจริงจึงจะตรงกับ selection

detection:
  selection:
    EventID: 4688
    NewProcessName|endswith: '\\whoami.exe'
  condition: selection

ตัวปรับแต่งเขตข้อมูล

ตัวปรับแต่งช่วยกำหนดวิธีจับคู่ค่าให้ละเอียดขึ้น โดยต่อท้ายชื่อเขตข้อมูลหลังเครื่องหมาย |

  • contains — จับคู่ข้อความย่อย
  • startswith / endswith — จับคู่โดยยึดจุดเริ่มต้นหรือจุดสิ้นสุด
  • all — ค่าทุกค่าในรายการต้องปรากฏอยู่
  • re — นิพจน์ปกติ
  • base64offset|contains — จับคู่ข้อความย่อยที่เข้ารหัสแบบ base64

ตัวปรับแต่งสามารถต่อกันจากซ้ายไปขวาและจะถูกนำไปใช้ตามลำดับ

detection:
  selection:
    CommandLine|contains|all:
      - 'Invoke-WebRequest'
      - 'DownloadString'
  condition: selection

รายการและโครงสร้างจับคู่แบบ OR / AND

มีกฎสองข้อที่กำหนดตรรกะภายในการเลือก:

  • รายการค่าภายใต้เขตข้อมูลเดียวกันเป็น OR — ค่ารายการใดรายการหนึ่งตรงกันก็เพียงพอ
  • โครงสร้างจับคู่ที่มีหลายเขตข้อมูลเป็น AND — เขตข้อมูลทั้งหมดต้องตรงกัน

ด้านล่างนี้ Image จะตรงกับไบนารีรายการใดรายการหนึ่ง และ User จะต้องมีค่าเท่ากับ SYSTEM ด้วย

detection:
  selection:
    Image|endswith:
      - '\\net.exe'
      - '\\net1.exe'
    User: 'SYSTEM'
  condition: selection

นิพจน์เงื่อนไข

condition ใช้รวมการเลือกที่มีชื่อกำกับเข้าด้วยกันด้วยตรรกะแบบบูลีน ส่วนนี้เป็นที่สำหรับระบุตัวกรองและข้อยกเว้น

ตัวดำเนินการประกอบด้วย and, or, not, วงเล็บ และการรวมค่าอย่าง count() นอกจากนี้ คุณยังใช้ 1 of selection* / all of selection* เพื่ออ้างอิงกลุ่มตัวระบุที่มีคำนำหน้าเดียวกันได้

detection:
  selection:
    EventID: 4625
  timeframe: 5m
  condition: selection | count() by SourceIp > 10

กรองสัญญาณรบกวนออก

หากต้องการระงับกิจกรรมที่ทราบว่าปลอดภัย ให้กำหนดตัวระบุแยกต่างหากแล้วตัดตัวระบุนั้นออกในเงื่อนไขด้วย not วิธีนี้ทำให้ตรรกะที่เป็นอันตรายอ่านได้ง่ายและทำให้ข้อยกเว้นระบุไว้อย่างชัดเจน

ในที่นี้ กฎจะทำงานเมื่อโปรแกรมเรียกใช้ไลบรารีแบบไดนามิกสร้างการเชื่อมต่อเครือข่าย ยกเว้นกระบวนการอัปเดตที่ทราบว่าเป็นกระบวนการที่ถูกต้อง

detection:
  selection:
    Image|endswith: '\\rundll32.exe'
  filter_legit:
    ParentImage|endswith: '\\MicrosoftEdgeUpdate.exe'
  condition: selection and not filter_legit

ข้อมูลกำกับสำหรับการคัดแยก

นอกเหนือจากตรรกะแล้ว กฎที่ดีควรมีข้อมูลกำกับที่ช่วยให้ผู้ตอบสนองดำเนินการได้อย่างรวดเร็ว และช่วยให้วิศวกรดูแลความครอบคลุมได้

  • level — ข้อมูล, ต่ำ, ปานกลาง, สูง, วิกฤต
  • tags — เทคนิคของ ATT&CK เช่น attack.t1059.001
  • falsepositives — ตัวกระตุ้นที่ทราบว่าไม่เป็นอันตราย
  • references — รายงานภัยคุกคามหรือเอกสาร
  • author และ date

เขตข้อมูลเหล่านี้ใช้เวลาเขียนเพียงไม่กี่นาที แต่ช่วยประหยัดเวลาได้หลายชั่วโมงระหว่างเกิดเหตุการณ์

กฎการเชื่อมโยง

กฎสำหรับเหตุการณ์เดียวไม่สามารถแสดงการโจมตีหลายขั้นตอนได้ กฎการ เชื่อมโยงของซิกมาจะรวมกฎพื้นฐานหลายข้อในช่วงเวลาเดียวกันเพื่อจับลำดับและรูปแบบ

ประเภทที่รองรับ ได้แก่ event_count (การตรงกัน N ครั้งภายในช่วงเวลา), value_count (ค่าที่ไม่ซ้ำกัน เช่น ผู้ใช้ที่เข้าสู่ระบบไม่สำเร็จจำนวนมาก) และ temporal (กฎ A แล้วจึงเป็นกฎ B) วิธีนี้ช่วยให้ตรวจจับได้ เช่น การเข้าสู่ระบบสำเร็จทันทีหลังจากความพยายามล้มเหลวเป็นชุด

name: bruteforce_then_success
correlation:
  type: temporal
  rules: [failed_logins, successful_login]
  group-by: [SourceIp, TargetUser]
  timespan: 10m

การแปลงเป็นระบบปลายทาง

ด้วยเครื่องมือบรรทัดคำสั่งของซิกมา คุณสามารถแปลงกฎเป็นภาษาคำค้นหาของระบบเป้าหมายได้ กระบวนการประมวลผลจะจับคู่ชื่อเขตข้อมูลของซิกมากับโครงสร้างข้อมูลจริงของคุณ

ผลลัพธ์คือคำค้นหาที่พร้อมนำไปใช้งาน ซึ่งคุณสามารถวางหรือส่งผ่านส่วนเชื่อมต่อโปรแกรมประยุกต์ได้

sigma convert -t splunk -p sysmon \
  -f default rule.yml

# Example output (Splunk SPL):
# Image="*\\powershell.exe" CommandLine="*-enc*"

ตรวจสอบความเข้าใจ

ตรวจสอบความเข้าใจตรรกะการตรวจจับของซิกมา

ทบทวน

ขณะนี้คุณสามารถเขียนกฎซิกมาที่ใช้งานข้ามระบบได้แล้ว:

  • logsource เลือกบันทึกและการจับคู่เขตข้อมูลที่เกี่ยวข้อง
  • การเลือกคือเกณฑ์เขตข้อมูลกับค่าที่มีชื่อกำกับ (เขตข้อมูล = AND, รายการค่า = OR)
  • ตัวปรับแต่ง เช่น contains, endswith, all และ re ช่วยกำหนดการจับคู่ให้ละเอียดขึ้น
  • condition รวมการเลือกด้วย and/or/not ตัวกรอง และการรวมค่า
  • ตัวระบุ การกรองที่แยกต่างหากใช้ตัดสัญญาณรบกวนที่ทราบว่าปลอดภัยออก
  • ข้อมูลกำกับ (level, tags, falsepositives) ช่วยให้คัดแยกได้รวดเร็วยิ่งขึ้น
  • sigma convert แปลกฎเป็นระบบปลายทางของ SIEM

ถัดไป คุณจะเชื่อมโยงกฎเหล่านี้กับเทคนิคของผู้โจมตีด้วย MITRE ATT&CK

คำถามที่พบบ่อย

บทเรียน “การเขียนกฎ Sigma” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การเขียนกฎ Sigma” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การเขียนกฎ Sigma”

ไวยากรณ์กฎตรวจจับที่นำไปใช้ได้หลายระบบ คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “การเขียนกฎ Sigma” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม

ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. หลักการตรวจจับในรูปแบบโค้ด
  2. การเขียนกฎ Sigma
  3. การจับคู่กับ MITRE ATT&CK
  4. การทดสอบและปรับแต่งการตรวจจับ
← กลับไปที่ Cyber Security Academy