الفرق الزرقاء — الدفاعخبير85mL56

Detection & Monitoring — تشوف ولا بتتفرّج

Detection Engineering و Sigma و Suricata و Honeypots

#SIEM#Sigma#Suricata#Honeypots

بنراقب ليه أصلاً؟ ومين بيتفرّج؟

تشبيه — شرح مبسط
الكاميرات في المحل مفيدة لو في حد قاعد قدّامها. لو مفيش حد، يبقى دي مش كاميرات، دي ديكور. الـ logs نفس الكلام بالظبط — تتكدّس على قرص لحد ما القرص يمتلي، ومحدش يبصّ. لازم توصل لـ SIEM، وفي حد بيقرا، وفي rules بتشتغل، وفي playbooks بتتنفذ. غير كده، انت بتدفع فلوس على licenses عشان تحس إنك آمن.

- بس يا حضرتك إحنا عندنا SIEM وعندنا EDR وعندنا كل حاجة!

تمام يا نجم. طب لو الـ adversary دخل ومحدش حسّ، يبقى انت بتراقب فعلاً؟ ولا انت بتتفرّج على dashboard لأنه شكله حلو؟

هندسة الكشف — Detection Engineering

هرم Bianco (Pyramid of Pain) — كل ما طلعنا فوق، كل ما وجعنا الـ adversary أكتر:

  1. Hash values — بيتغيّروا بضغطة زرار. مفيش وجع.
  2. IP addresses — VPS جديد بـ 5 دولار. سهل.
  3. Domain names — محتاج registrar وسمعة. بيوجع شوية.
  4. Network/Host artifacts — بيوجع.
  5. Tools — لو منعت Cobalt Strike beacon signature، الـ adversary لازم يكتب tool جديد.
  6. TTPs — أصعب حاجة يغيّرها. السلوك نفسه. هنا الكشف بيوجع. هنا بنركّز.

الـ junior بيكتب IoCs. الـ senior بيكتب behavioral rules.

مصادر الـ logs اللي مفيش غنى عنها

على Linux
auditd, /var/log/auth.log, syslog, journald, eBPF (Falco / Tracee).
على Windows
Security Event Log, Sysmon (الأهم على الإطلاق), PowerShell ScriptBlock Logging, AMSI.
الشبكة
Zeek / Suricata / Snort, NetFlow, DNS query logs, TLS/JA3 fingerprints.
السحابة
CloudTrail (AWS), Activity Log (Azure), Audit Logs (GCP), VPC Flow Logs, GuardDuty.
غلطات الـ junior
بيشغّل Sysmon بـ default config. الـ default config بتسيب 70% من الأحداث المهمة. استخدم config بتاع SwiftOnSecurity أو Olaf Hartong — مكتوب من ناس بتشتغل في الـ field فعلاً.

SIEM — مركز التحليل

الـ SIEM بيجمع كل الـ logs، بيطبّق rules، وبيرفع alerts. ده الكلام النظري. الواقع إن 60% من الـ SIEM deployments عندنا في المنطقة بتشتغل بـ default rules ومحدش بيـ tune-هم. اللي بيحصل فعلياً: alert fatigue، الـ analyst بيقفل كل حاجة بـ "false positive"، والـ adversary بيعدّي.

  • مجاني/open source: Wazuh, ELK + Elastic Security, OpenSearch, Graylog, Security Onion.
  • تجاري: Splunk, Microsoft Sentinel, Chronicle, QRadar, Sumo Logic.

قواعد كشف بـ Sigma (الـ format الموحّد)

Sigma — Linux SSH brute force
title: SSH Multiple Failed Logins
logsource: { product: linux, service: auth }
detection:
  fail:
    process_name: 'sshd'
    msg|contains: 'Failed password'
  timeframe: 5m
  condition: fail | count() by src_ip > 10
level: high
tags: [attack.credential_access, attack.t1110]
Sigma — Suspicious AWS API
title: AWS Access Key Created for Another User
logsource: { product: aws, service: cloudtrail }
detection:
  sel:
    eventName: 'CreateAccessKey'
    requestParameters.userName|cidr|not: '{{ caller_user }}'
  condition: sel
level: critical

EDR / XDR على نقاط النهاية

  • CrowdStrike Falcon, SentinelOne, Microsoft Defender for Endpoint, Wazuh agent + Sysmon.
  • بيكشف: process injection, mimikatz, suspicious child processes (winword -> powershell).
  • القاعدة الذهبية: كل alert لازم يكون عنده SOAR playbook بيشتغل عليه automatically. لو الـ analyst هو اللي بيـ triage يدوي كل حاجة، انت بتشتري وقت الـ adversary.

IDS / NDR على الشبكة

Suricata rule — Log4Shell exploit
alert http any any -> $HOME_NET any (msg:"Log4Shell JNDI in HTTP header"; \
  flow:to_server,established; content:"jndi:"; nocase; http_header; \
  classtype:web-application-attack; sid:9000010; rev:1;)
Zeek — DNS exfil heuristic
event dns_request(c, msg, query, qtype, qclass) {
  if (|query| > 60 && /[a-f0-9]{40,}/ in query)
    NOTICE([$note=DNS::Long_Encoded_Query, $msg=fmt("possible DNS exfil: %s", query)]);
}

Honeypots و Honeytokens — فخاخ بتفضح اللي بيلمس

تشبيه — شرح مبسط
حطّ محفظة فاضية ظاهرة على الكونتر. أي لص بيلمسها بيكشف نفسه. ده الـ honeytoken بالظبط: ملف، مفتاح، حساب — مفيش حد شرعي محتاج يلمسهم. لو حد لمسهم، يبقى ده انت يا حبيبي.
  • Canarytokens.org — مجاني، بيولّد DNS / HTTP / DOC / AWS tokens في دقيقة.
  • SSH server وهمي بـ cowrie — بيسجّل كل command الـ adversary بيجرّبه. بتعرف الـ TTPs بتاعته قبل ما يدخل عندك أصلاً.
  • حساب AD اسمه svc_backup أو domain_admin_old — أي logon attempt = alert فوري. الـ adversary بيدوّر على الأسماء دي بالظبط.
  • ملف passwords.xlsx مزيّف على file share — مع canary token جواه. اللي يفتحه، انت شوفته.
ليه الـ honeytokens رخيصة وقوية؟
ما عندهاش false positives تقريباً. مفيش حد شرعي بيلمسها. كل alert منها = شغل حقيقي. مفيش tool تاني بيدّيك signal-to-noise بالحلاوة دي.

UEBA — تحليل سلوك المستخدم

الـ UEBA بيبني baseline لكل user. الـ admin اللي بيدخل عادةً من القاهرة الساعة 9 الصبح، فجأة ظاهر من فيتنام الساعة 3 الفجر بيحمّل 50MB من SharePoint؟ alert. حتى لو الـ password صح. حتى لو MFA عدّى. السلوك ده مش هو.

ده الفرق بين identity-based detection و password-based detection. الـ password ممكن يتسرق. السلوك أصعب يتقلّد.

Threat Hunting — اطلع دوّر بدل ما تستنّى

ما تستنّاش الـ alert. افترض إن في حد جوّه دلوقتي، ودوّر:

  • الفرضية: "لو الـ adversary دخل بـ phishing، أكيد هيستخدم PowerShell encoded commands".
  • الـ query في SIEM عن powershell.exe -enc * آخر 30 يوم.
  • حلّل النتايج، وثّق الـ false positives، حوّل اللي بيظهر مرتين لـ Sigma rule دائم.
MITRE D3FEND
كل technique هجومية مقابلها technique دفاعية. ابصّ على الـ matrix وشوف انت مغطّي ايه ومش مغطّي ايه. الفجوات اللي هتلاقيها هي اللي الـ adversary هيدخل منها.

الخلاصة الناشفة

الـ detection مش tools. الـ tools موجودة عند الكل. الفرق:

  1. data نضيفة (Sysmon config صح، EDR على كل device، DNS logs بتتجمع).
  2. rules مكتوبة على TTPs مش على hashes.
  3. tuning أسبوعي عشان تقلّل الـ noise.
  4. SOAR بيـ enrich كل alert automatically — IP reputation, user context, host context.
  5. hunting أسبوعي بفرضية جديدة.

غير كده، انت ما بتراقبش. انت بتدفع licenses بس.