الفرق الزرقاء — الدفاعخبير90mL63

Network Forensics — PCAP بيحكي اللي حصل

Wireshark و Zeek و Suricata و NetFlow — تركّب الجلسة تاني

#PCAP#Wireshark#Zeek#Suricata#NetFlow

ليه الـ Network Forensics مفيش غنى عنه؟

تشبيه — شرح مبسط
المهاجم دخل، نضّف logs الـ endpoint، شال ملفاته، قفل الـ EDR. - يبقى خلاص خلاص، ما حدش هيعرف عمل ايه؟؟ يا نجم الجيل.. كنت مستنيك تسأل. الشبكة لو بتسجّل اللي بيمر، مش هيقدر يلغي اللي قاله في السلك. زي الـ ECG في غرفة العمليات — بيسجّل كل دقة قلب لحظة بلحظة. الجراح ممكن ينسى، الممرض ممكن يغلط، الشريط مش بيكدب.The network never lies.

SolarWinds 2020: APT29 قعدوا 9 شهور جوه. اللي فضحهم في النهاية مش endpoint logs — لأ، beacon traffic كل 12 ساعة لـ avsvmcloud.com. الـ Mandiant لاقوها في NetFlow archives قديمة. الشبكة فضحت اللي الـ EDR ما شافوش.

القاعدة
في أي حادث جدّي: اسأل الأول "إيه الـ traffic data المتاح؟" قبل ما تبصّ للـ host خالص. لو فات عليك ده، يبقى مش بتراقب — بتتفرّج.
غلطات الـ junior في network forensics
  • بيدوّر على malicious IPs في threat intel feeds — معظم الـ C2 الحديث على Cloudflare وAWS وAzure. الـ IP نظيف، الـ behavior فاضح.
  • بيتجاهل DNS — DNS هو أرخص telemetry وأقوى hunt surface. أي malware لازم يعمل lookup.
  • بيفتح Wireshark على pcap حجمه 50GB ويستنّى — استخدم Zeek الأول، Wireshark بعدين على stream محدد.
  • بينسى JA3/JA3S — TLS handshake fingerprint بتفضح Cobalt Strike وSliver حتى لو الـ cert مزوّر.

مصادر البيانات — متى تستخدم ماذا

Full Packet Capture (PCAP)
كل byte. أعلى دقة. حجم ضخم (TB/يوم). عادة بيتخزّن 7–30 يوم على المحيط.
Zeek logs (Bro)
Metadata غنية: connection logs, DNS, HTTP, SSL, files. ~1% من حجم PCAP. تحفة في الـ hunting الطويل.
NetFlow / IPFIX / sFlow
Source/Dest IP, Port, Bytes, Packets. مفيش content. أصغر بكتير. الأحسن للـ baselining الطويل.
Suricata / Snort alerts
IDS — تنبيهات على signatures معروفة. بيكمّل PCAP، مش بيحلّ محله.
Firewall logs
Allow/Deny. موجود دايماً، أساسي للـ audit.
DNS / DHCP / Proxy logs
ماتقللش من قيمتها. DNS + DHCP lease بيقولوك مين كان IP X الساعة كذا.

Wireshark — أساسيات حقيقية

افتح الـ pcap. أول حاجة هتعملها:

  1. Statistics → Conversations — مين اتكلّم مع مين، وكام بايت؟
  2. Statistics → Protocol Hierarchy — توزيع البروتوكولات. فيه حاجة شاذة؟
  3. Statistics → Endpoints — قايمة كل الأجهزة الموجودة.
  4. File → Export Objects — طلّع الملفات من HTTP/SMB/FTP.
text
# أهم display filters في Wireshark
ip.addr == 192.168.1.10                  # كل ما يخص IP
tcp.port == 445                          # SMB
http.request                             # طلبات HTTP فقط
http contains "password"                 # نص في HTTP
dns.qry.name contains "evil"             # DNS lookups
tls.handshake.extensions_server_name      # SNI
frame.time >= "2026-04-30 14:00:00"      # نطاق زمني
tcp.analysis.flags                       # مؤشرات شذوذ TCP
tcp.stream eq 5                          # كل packets في session معينة
ip.geoip.country != "US"                 # خارج الولايات (يحتاج GeoIP plugin)

استعادة محادثة TCP — أهم تقنية

كل اتصال TCP ليه stream برقم. في Wireshark: Right-click → Follow → TCP Stream. هتشوف المحادثة كلها كنص.

إيه اللي هتدور عليه
  • HTTP غير مشفّر — باسوردات، session cookies، مرفقات.
  • FTP — USER/PASS صريحين. حدّد الملفات اللي اتنقلت.
  • SMTP — رسايل ومرفقات base64، تقدر تطلّعهم.
  • Telnet — كل keystroke. لو لقيته، ادور في كل pcap على أوامر مكتوبة.
  • SMB — الملفات المنقولة (Wireshark بيطلّعهالك).

tshark — Wireshark على سطر الأوامر

$ # قائمة كل HTTP requests
$ tshark -r capture.pcap -Y 'http.request' -T fields -e ip.src -e http.host -e http.request.uri
$ # استخراج كل DNS queries
$ tshark -r capture.pcap -Y 'dns.qry.name' -T fields -e dns.qry.name | sort -u
$ # جميع SNI من TLS
$ tshark -r capture.pcap -Y 'tls.handshake.type==1' -T fields -e tls.handshake.extensions_server_name
$ # top talkers
$ tshark -r capture.pcap -q -z conv,ip | head -20
$ # استخراج files من HTTP
$ tshark -r capture.pcap --export-objects http,/tmp/extract
$ ls /tmp/extract/

Zeek — أداة المحقّقين الجدّية

Zeek بيحوّل الـ traffic لـ logs منظمة. ملفات tab-separated، سهلة جداً مع grep.

bash
# تشغيل Zeek على pcap
zeek -r capture.pcap

# يولّد: conn.log, dns.log, http.log, ssl.log, files.log, weird.log, notice.log

# zeek-cut يفلتر الأعمدة
cat conn.log | zeek-cut id.orig_h id.resp_h id.resp_p service duration orig_bytes resp_bytes
cat dns.log | zeek-cut id.orig_h query qtype_name answers | sort -u
cat http.log | zeek-cut id.orig_h host uri user_agent

# files.log — كل ملف عبر الشبكة مع hash
cat files.log | zeek-cut tx_hosts rx_hosts mime_type filename md5 sha1

# weird.log — شذوذات بروتوكولية
cat weird.log | zeek-cut id.orig_h name
نصيحة
للـ hunting الطويل، شحن Zeek logs على Splunk/ELK. وبعدين استعلم بـ SPL/KQL — تجمع عمق Zeek مع سرعة الـ SIEM.

Suricata — IDS/IPS قوي مفتوح المصدر

Suricata بيطبّق rules على ترافيك حي ويطلّع تنبيهات. صيغة القواعد قريبة جداً من Snort.

text
# مثال قاعدة — كشف Cobalt Strike default certificate
alert tls any any -> any any (msg:"Cobalt Strike default cert"; \
  tls.cert_subject; content:"CN=major"; \
  classtype:trojan-activity; sid:2030001; rev:1;)

# قاعدة كشف DNS query لـ TLD مشبوه
alert dns any any -> any any (msg:"DNS query to .top TLD"; \
  dns.query; content:".top"; endswith; \
  classtype:bad-unknown; sid:2030002; rev:1;)

قواعد جاهزة: Emerging Threats Open (مجاني)، ETPro (مدفوع)، SELKS (Suricata + ELK في باكدج واحد).

مؤشّرات شائعة في pcap حادث

دور على الحاجات دي
  1. Beaconing منتظم — connection كل 60s لنفس الـ domain. ده C2 كلاسيك.
  2. User-Agent غريبcurl/8.4 من workstation، أو python-requests.
  3. JA3/JA3S hashes — بصمة TLS handshake. أغلب malware ليها JA3 ثابت يفضحها.
  4. HTTPS Direct-to-IP — اتصال TLS من غير ما يحصل DNS lookup قبله = مشبوه.
  5. SMB من workstation لـ workstation — lateral movement.
  6. TXT records طويلة — DNS tunneling.
  7. Burst exfil — 5GB upload في 10 دقايق من host ما عملش كده قبل كده.
  8. RDP بره ساعات الشغل — أو من IP خارجي على طول.

JA3 / JA3S — بصمة TLS

JA3 = MD5 لترتيب TLS Client Hello extensions. JA3S = نفس الفكرة بس على الـ Server Hello. كل client/server ليه بصمة، والـ malware عادة بصمته ثابتة.

bash
# tshark استخراج JA3 (يحتاج plugin)
tshark -r capture.pcap -T fields -e tls.handshake.ja3 -e tls.handshake.ja3_full \
  -Y 'tls.handshake.type==1' | sort -u

# أو من Zeek مع plugin ja3
cat ssl.log | zeek-cut id.orig_h server_name ja3 ja3s

# ابحث عن JA3 في abuse.ch SSL Blacklist
curl -s "https://sslbl.abuse.ch/api/v1/?ja3_hash=72a589da586844d7f0818ce684948eea"

RITA — كشف beaconing تلقائياً

RITA (من Black Hills Infosec، مفتوح المصدر) بياخد Zeek logs ويحلّل الـ frequency والـ jitter ليطلّع الـ beacons.

bash
# استيراد Zeek logs
rita import /opt/zeek/logs/* mydataset

# عرض قائمة beacons
rita show-beacons mydataset

# Output:
# Score    Source IP        Destination IP    Connections    Avg Bytes    Intvl
# 0.978    10.0.0.5         185.x.x.x         286            612          60s
# 0.945    10.0.0.12        evil.com          179            512          120s

# طويل وفعّال جداً ضد Cobalt Strike, Sliver, custom C2

Federal context — اعتبارات قانونية

حدود الـ Network capture
التقاط الترافيك في بيئة فيدرالية بيقع تحت Title III (Wiretap Act) وECPA. القاعدة العامة:
  • Banner / acceptable-use policy ضروري — بيقول للمستخدم إن الشبكة مراقبة. ده "consent" قانوني.
  • أي capture بره الـ consent ده محتاج court order / Pen Register / Trap-and-Trace أو wiretap warrant كامل.
  • Metadata (NetFlow, headers) قواعدها مختلفة عن content (PCAP body).
  • وقت الشك — اسأل OGC أو الـ Legal team قبل الـ capture. ومتناقشش قرارات قانونية في chat أبداً.

ممارسات أفضل

  1. سجّل JA3/JA3S على كل egress.
  2. Zeek على mirror port من core switch ← Splunk/ELK.
  3. RITA يومي على آخر 24 ساعة.
  4. Suricata بـ ETPro rules + قواعد خاصة بالمؤسسة.
  5. Full PCAP على الـ edge مع rotation 7–14 يوم (على حسب الـ storage عندك).
  6. NetFlow طويل المدى (90+ يوم) للـ retroactive hunts.
  7. وقّف TLS inspection لو القانون مش سامح، بس سجّل Metadata + JA3.
الخلاصة الناشفة
المهاجم بيقدر يخفي شغله على endpoint. ما بيقدرش يخفيه على الشبكة. ولو شغّلت Zeek + JA3 + RITA + NetFlow طويل المدى، انت بنيت time machine — لو ضربتك حادثة بكره، تقدر ترجع 90 يوم وتشوف من امتى المهاجم جوه. اكتبها على كشكولك: مفيش بديل عن الـ visibility دي. الـ EDR لوحده مش كفاية. اوعى تـ trust الـ endpoint بس.