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

التحقيق الجنائي في الشبكة — تحليل حزم البيانات

Wireshark, Zeek, Suricata, NetFlow, تحليل الجلسات

#PCAP#Wireshark#Zeek#Suricata#NetFlow

لماذا الـ Network Forensics لا غنى عنه

المهاجم يستطيع مسح logs على الـ endpoint، يحذف ملفات، يعطّل EDR. لكن لو الشبكة تسجّل ما يمر، لا يستطيع محو ما حدث في السلك. The network never lies.

تشبيه — شرح مبسط
ECG في غرفة العمليات — الجهاز يسجّل كل دقّة قلب لحظياً. الجرّاح قد ينسى، الممرض قد يخطئ، لكن الشريط لا يكذب.
القاعدة
في كل حادث جدّي: ابدأ بسؤال "ما المتاح من traffic data؟" قبل أن تنظر للـ host.

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

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

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

افتح pcap، أول ما تفعل:

  1. Statistics → Conversations — أيّ IPs تكلّمت أكثر، كم بايت؟
  2. Statistics → Protocol Hierarchy — توزيع البروتوكولات. شيء غير معتاد؟
  3. Statistics → Endpoints — قائمة كل المضيفين.
  4. File → Export Objects — استخرج files من 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 packet → 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
نصيحة
للـ long-term hunting، مرّر Zeek logs إلى Splunk/ELK. ثم استعلم بالـ SPL/KQL — تجمع بين قوة Zeek و سرعة SIEM.

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

Suricata يطبّق rules على traffic مباشر و يطلق تنبيهات. يستخدم نفس صيغة قواعد 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 package).

مؤشّرات شائعة في 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. Direct-to-IP HTTPS — اتصال HTTPS بدون 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 له JA3 ثابت.

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

ممارسات أفضل

  1. سجّل JA3/JA3S على كل egress.
  2. Zeek على mirror port من core switch — ثم Splunk/ELK.
  3. RITA يومياً على آخر 24 ساعة.
  4. Suricata مع ETPro rules + custom org rules.
  5. Full PCAP على edge بـ rotation 7–14 يوم (depends on storage).
  6. NetFlow طويل المدى (90+ يوم) لـ retroactive hunts.
  7. أوقف TLS inspection حيث يحظره القانون لكن سجّل Metadata + JA3.