Post

HOWTO detect a sniffer

السلام عليكم ورحمة الله وبركاته

بعدما كتبت بالسابق حول كيفية عمل Sniff من خلال إستعمال Ethernet TAP وذكرت أيضاً طرق أخرى في نفس الموضوع … أصبح السؤال الذي يدور في أذهاننا جميعاً: كيف أستطيع إكتشاف من يقوم بعمل Sniff ؟

بصراحة الجواب ليس بسيط أبداً … هناك عدة أمور وعدة عوامل ممكن تعملها لكي تستطيع أن “تشك” أو “تفترض” وجود شخص يقوم بعمل Sniff على الشبكة … أما يكون جواب جازم؟ الى الآن لم أجد سوى كم برنامج وحسب ما فهمت بإنها أصبحت Out of Date !!! منها AntiSniff …

طيب والحل؟ الحل أن نقوم بعمل عدة تجارب ممكن تعطينا تصور معيين عن الوضعية في الشبكة وممكن تجعلنا نخمن، نفترض، أو نشك بوجود شخص جالس يعمل Sniff على الشبكة … هذه التجارب سأقوم بذكرها وشرح آلية إستعمالها لعلها تكون ذات فائدة لكم إن شاء الله …

ملاحظة مهمة جداً: لكي تنجح معك هذه العمليات/التجارب التي سأقوم بذكرها عليك أن تقوم أنت بدورك بعمل Sniff أو لكي لا يزعل البعض عمل Packet Capturing على الحزم المارة بالشبكة مثلك مثل الـ Sniffer لكي ترى جميع ما يرسل بالشبكة … الرجاء لا تنسى ذلك وأكمل القراءة …

التجربة الأولى: من خلال DNS

بعض الـ Sniffers عند رؤيتها لحزم متجهة الى IP معيين، تقوم بعمل DNS Lookup وذلك لكي تستبدل الـ IP’s هذه بـ FQDN … فلو قمت أنت مثلاً بعمل طلب الى IP وليكن تابع لموقع Security Geeks، إذا كان هناك Sniffer وقام بعمل DNS Lookup ستستطيع أن ترى أنت هذه الحزم الخاصة بالـ Lookup ومنها تعرف بإن هناك ربما Sniffer على الجهاز الفلاني …

التجربة الثانية: من خلال Network Latency

في هذه الطريقة نقوم بمراقبة ضغط العمل على الأجهزة التي على الشبكة … فمن المعروف عملية فلترة الحزم وقراءتها تعني إستعمال كمية كبيرة من الـ CPU، أي عليه ضغط أو Load … وهذا ممكن يدل على إن هناك من يقوم بعمل Sniff … طبعاً لكي تستطيع الوصول الى هذه الحالة عليك بإغراق أو محاولة إغراق أو عمل Flood على الشبكة لكي تستطيع معرفة هذه الحالة … طبعاً هي ليست سهلة وبحاجة الى دقة عالية لكي لا تعمل DoS للشبكة بكاملها وبالتالي لم تستفد بشيء …

التجربة الثالثة: من خلال عمل Ping بإستعمال Fake MAC Address

نقوم بإرسال حزم تحتوي على IP شرعي (كأن يكون من الشبكة نفسها) ولكن الـ MAC Address يكون غير حقيقي. إذا قام أحد الأجهزة بالرد بـ MAC Address غير صحيح، فهذا يعني الجهاز مشغل Promiscuous Mode … وتشغيل هذا الـ Mode ممكن يكون أثر عمل Sniffer …

التجربة الرابعة: من خلال ARP

بعض الأنظمة خاصة الويندوز (98 و NT) منها، تقوم بفحص أول Octet من الـ MAC فقط، لمعرفة هل هو BroadCast أم لا … وبالتالي نستطيع أن نقوم بإرسال حزمة يكون الـ MAC Address فيها هو FF:00:00:00:00:00 و IP الـ Destination يكون صحيح … إن كان هناك جهاز عليه نظام بهذه المواصفات سيقوم بالرد على هذه الحزمة وهذا يعني الجهاز مشغل Promiscuous Mode وتشغيل هذا الـ Mode كما ذكرنا ممكن يكون أثر عمل Sniffer …

التجربة الخامسة: من خلال التلاعب بالمسار Source-Route

ربما هذه من انجح الطرق حسب رأيي وذلك لأن ما سنقوم به هو إضافة المسار المطلوب source-route بداخل الـ IP Header للحزمة نفسها، وبالتالي لو وصلت الحزمة الى الراوتر Router سيقوم بعمل تمرير الى الجهة المحددة بداخل الحزمة نفسها. لكي أوضح أكثر هذه الطريقة ركزوا وياي على المثال التالي:

لدينا شبكة عليها جهاز A و B و C … ونقوم مثلاً بعمل Disable لإمكانية التمرير Routing على الجهاز C … الآن يريد الجهاز A بإرسال حزمة الى الجهاز B ولكن يقوم بتثبيت المسار الذي تمر فيه الحزمة … هنا يقوم بتحديد طلب المرور من خلال الجهاز C … أي يجب على الحزمة ان تمر الى الجهاز C ومن هناك تصل الى الجهاز B … فعند إرسال A للرسالة ستصل الى الراوتر Router بالبداية ويقوم بقراءة الحزمة ويرى بإن المسار محدد فيقوم بإرسالها الى الجهاز C … لكن بسبب كون الجهاز C لا يعمل تمرير (قمنا بإيقافها فيه) فإن الحزمة يتم عمل DROP لها … الآن وبسبب كون الجهاز B على فرض مشغل الـ Promiscuous Mode فإنه قام بقراءة الحزمة مسبقاً وبسبب كون الحزمة موجهة له، قام بالرد عليها … هذه حالة للكشف …

الحالة الأخرى وهي الـ TTL للحزم معروف عندما تمر من مسار الى آخر تقوم بعمل تنقيص لرقم الـ TTL أي لو كان 30 سيصبح 29 وهكذا على كل المسارات التي تمر بها الحزمة … الآن بالنسبة الى مثالنا السابق، لو إن الجهاز C يقوم بالتمرير الصحيح فإن الحزمة هذه ستصل الى الجهاز B وقيمة TTL لها هي 29 وذلك لأنها مرت من خلال محطة تمرير واحدة … ولكن بسبب إن C لم يقم بعملية التمرير فإن الحزمة وصلت الى الجهاز B وقيمتها 30 (بسبب كونه قام بإلتقاط الحزمة بواسطة عملية Sniffing) وبالتالي حين يرد على A فإنه سيرد وقيمة الـ TTL للحزمة هي 30 !!! أي لم تتغيير وهذا يجعلك تعرف بإن الجهاز B عليه Sniffer …

التجربة السادسة: طريقة إستعمال Decoy أي الفخ

في هذه الطريقة كل ما نقوم به هو مثلاً بتشغيل VirtualMachine أو أي جهاز براحتك، وتضع عليه خدمات وهمية … مثل: FTP و Telnet … معروف بإن هذه الخدمات كلها يتم إرسال اسم المستخدم وكلمة المرور لها على شكل نصوص مقروءة وواضحة Plain Text وبالتالي لو هناك Sniffer على الشبكة بدون شك سيقوم بإلتقاطها … وبعد أن قام هذا الشخص الذي يعمل Sniff بإلتقاطها فإنه سيقوم بدون شك بمحاولة الدخول بواسطة هذه الأسماء للمستخدمين وكلماتهم السرية وبالتالي تكون كشفت أنت من الجهاز الذي يعمل Sniff عندك على الشبكة … من ميزات هذه الطريقة هي إنها تعمل على مدار واسع في الشبكة … أي ممكن أن تعمل وتصطاد الشخص وهو على Network Segment مختلفة … عكس طريقة Source-Route التي يجب أن تكون أنت وهو (Sniffer) على نفس الجزئية من الشبكة … طبعاً نقدر نقول عن هذه الطريقة هي بإستعمال Honeypot … يعني مو شرط نسميها Decoy …

التجربة السابعة: إستعمال طريقة TDR أي Time Domain Reflectometers

هذه الطريقة تعتمد على نظرية إمكانية حساب المسافة من خلال حساب الوقت المستغرق للطاقة المنعكسة Reflected Energy الى المصدر … وهي نفس الطرق المستعملة في السونار والرادارات (حسب ما فهمت) … كيف تعمل هنا … يقوم TDR بإرسال بإرسال نبظات كهربائية Electrical Pulses على الشبكة ويقوم بعمل مخطط مبني على الإنعكاسات المنبثقة … طبعاً وسيقوم بحساب المسافات بدون شك بناءاً على الطرق التي ذكرتها … من خلال هذه المخططات والمسافات يستطيع أن يقوم الخبراء في هذا المجال بدراستها ومعرفة الأجهزة الموجودة على الشبكة والتي يفترض أن لا تكون مربوطة على الشبكة … وبما إنه المسافات موجودة فإنه يستطيع أن يعرف إن كان هناك مثلاً Ethernet TAP ومكان وجوده … هذه الطريقة حسب ما فهمت هي من أعقد الطرق والتي من خلالها يستطيع الخبراء إكتشاف حتى الأجهزة Hardware التي تقوم بعمل Packet Capturing أو Sniffing على الشبكة والتي لا ترسل ولا تعطيك دلالة على وجودها وتعمل بشكل صامت للغاية …

هذه هي الطرق التي أستطعت أن أعرفها الى الآن حول كيفية معرفة وجود Sniffer على الشبكة … لو وجدت حاجات أخرى سأقوم بذكرها لكم بدون شك … إن شاء الله تفيدكم …

ودمتم بود …

This post is licensed under CC BY 4.0 by the author.