التحقيق الجنائي في الشبكة — تحليل حزم البيانات
Wireshark, Zeek, Suricata, NetFlow, تحليل الجلسات
لماذا الـ Network Forensics لا غنى عنه
المهاجم يستطيع مسح logs على الـ endpoint، يحذف ملفات، يعطّل EDR. لكن لو الشبكة تسجّل ما يمر، لا يستطيع محو ما حدث في السلك. The network never lies.
مصادر البيانات — متى تستخدم ماذا
Wireshark — أساسيات حقيقية
افتح pcap، أول ما تفعل:
- Statistics → Conversations — أيّ IPs تكلّمت أكثر، كم بايت؟
- Statistics → Protocol Hierarchy — توزيع البروتوكولات. شيء غير معتاد؟
- Statistics → Endpoints — قائمة كل المضيفين.
- File → Export Objects — استخرج files من HTTP/SMB/FTP.
# أهم 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 على سطر الأوامر
Zeek — أداة المحقّقين الجدّية
Zeek يحوّل traffic إلى logs منظمة. ملفات نصية tab-separated، سهلة الـ grep.
# تشغيل 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 nameSuricata — IDS/IPS قوي مفتوح المصدر
Suricata يطبّق rules على traffic مباشر و يطلق تنبيهات. يستخدم نفس صيغة قواعد Snort تقريباً.
# مثال قاعدة — كشف 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 حادث
- Beaconing منتظم — connection كل 60s لنفس domain. مؤشّر C2.
- User-Agent غير معتاد — curl/8.4 من workstation, python-requests.
- JA3/JA3S hashes — بصمة TLS handshake. malware له JA3 ثابت يكشفه.
- Direct-to-IP HTTPS — اتصال HTTPS بدون DNS lookup سابق = مشبوه.
- SMB من workstation لـ workstation — lateral movement.
- TXT records طويلة — DNS tunneling.
- Burst exfil — 5GB upload في 10 دقائق من host لم يفعل ذلك من قبل.
- RDP خارج ساعات العمل — أو من IP خارجي مباشرة.
JA3 / JA3S — بصمة TLS
JA3 = MD5 من ترتيب TLS Client Hello extensions. JA3S = نفس الفكرة من Server Hello. كل client/server له بصمة فريدة، malware له JA3 ثابت.
# 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.
# استيراد 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 C2Federal context — اعتبارات قانونية
- 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.
ممارسات أفضل
- سجّل JA3/JA3S على كل egress.
- Zeek على mirror port من core switch — ثم Splunk/ELK.
- RITA يومياً على آخر 24 ساعة.
- Suricata مع ETPro rules + custom org rules.
- Full PCAP على edge بـ rotation 7–14 يوم (depends on storage).
- NetFlow طويل المدى (90+ يوم) لـ retroactive hunts.
- أوقف TLS inspection حيث يحظره القانون لكن سجّل Metadata + JA3.