يهدف هذا المشروع إلى بناء أداة سهلة الاستخدام يمكنها تحليل ملف pcap
لإرجاع أي غموض موجود في حزم TCP. نحن نعمل حاليًا على تنفيذ تحليل UDP وARP أيضًا.
المخطط التفصيلي:
المساهمة: أي تعليق / فكرة / مساهمة هو موضع ترحيب.
make
./p2a -v ./pcap_files/some_pcap_file.pcap -s results.json
$ ./p2a -h
Usage: ./p2a [OPTIONS] FILE
-h,--help: display this help message
-v,--verbose: verbose option
-d,--debug: debug option
-x,--exclude OPTIONS: exclude some possible ambiguities from analysis
--exclude ret,mac,ttl
ret: exclude retransmission analysis
mac: exclude MAC addresses analysis
ttl: exclude TTL analysis
-s,--save FILENAME: saves results to file FILENAME
JSON format - FILENAME should contain the JSON extension
Examples:
./p2a -v ./pcap_files/some_pcap_file.pcapng
./p2a --exclude mac,ttl --verbose my-pcap-file.pcap -s results.json
لقد أضفت للتو خيار حفظ جميع النتائج في ملف JSON. للقيام بذلك، يمكن للمرء استخدام خيار --save file.json
. يقوم بحفظ جميع الجلسات الموجودة في هذا الملف سواء وجد فيها غموض أم لا. أعمل حاليًا على طريقة لعرض ملف JSON بشكل جيد في ملف HTML (باستخدام بعض JavaScript)..
SHA(IP, Port)
لقد جعلنا البرنامج النصي sha
متاحًا لأغراض تصحيح الأخطاء. يأخذ عنوان IP ورقم منفذ كوسيطة ويقوم بإرجاع تجزئة SHA1 لـ (IP|Port). يتم استخدام هذه القيمة كمعرف الجلسة في البرنامج النصي p2a
.
make sha
./sha -h
Usage:
./sha IP PORT
./sha 127.0.0.1 12345
IP: 127.0.0.1
Port: 12345
SHA1: 21bf549a8095063f49cff573e689b6b10365f4c8
عناوين IP و whois
إذا كانت إحدى الجلسات مشبوهة، فقد يكون من المفيد معرفة ما يتعلق بها. للقيام بذلك، يمكن للمرء استخدام Wireshark وتطبيق مرشح العرض لعرض الجلسة المحددة فقط.
يمكن أن يكون الأسلوب الأبسط هو استخدام whois
لمعرفة من يملك عنوان IP.
لاستخدام whois
مع كافة عناوين IP من ملف الالتقاط:
for ip in $( tshark -r file.pcapng -T fields -e ip.dst -e ip.src | egrep -o " [0-9]+.[0-9]+.[0-9]+.[0-9]+ " | sort | uniq ) ; do whois $ip | egrep " ^[Oo]rgani[sz]ation " ; done
إذا لم يعمل
tshark
، فإليك برنامج نصي C سيفعل نفس الشيء.
يتوافق حقل مدة البقاء (TTL) لحزمة IP مع المدة "المسموح بها" لتلك الحزمة بالتنقل حول الشبكة قبل أن يتم إسقاطها بواسطة أجهزة التوجيه. وهي قيمة مكونة من 8 بت يتم تقليلها عادةً بمقدار واحد في كل قفزة.
وفقًا لصفحة Cisco حول هجوم انتهاء صلاحية TTL:
"عندما يتلقى جهاز IOS حزمة ذات قيمة TTL أقل من أو تساوي واحدًا، يتم إرسال رسالة ICMPv4 Type 11، Code 0 بواسطة جهاز IOS، مما يؤدي إلى تأثير مماثل على وحدة المعالجة المركزية (CPU) . يحدث هذا التأثير بسبب وجود المزيد من وحدة المعالجة المركزية (CPU) المعالجة مطلوبة للاستجابة (باستخدام الحزم التي تجاوزت TTL) للحزم التي تحتوي على قيم TTL أقل من واحد بدلاً من إعادة توجيه حزمة ذات قيمة TTL أكبر من واحد.
"يؤدي سلوك انتهاء صلاحية TTL إلى إنشاء ناقل هجوم رفض الخدمة (DoS) ضد معدات الشبكة. تم تصميم أجهزة الشبكة خصيصًا لإعادة توجيه الحزم العادية في أسرع وقت ممكن. عند مواجهة حزم استثناء، مثل تلك التي تحتوي على قيم TTL منتهية الصلاحية، تختلف الكميات من الجهد يبذله جهاز التوجيه للاستجابة بشكل مناسب."
التحليل/الكود:
في utils.c
، حددنا TTL_THRESHOLD
(=10 في الوقت الحالي). إذا كانت مدة البقاء (TTL) لحزمة ما أقل من هذه القيمة، يتم رفع علامة للإشارة إلى أن مدة البقاء (TTL) منخفضة. إذا تم رفع عدد كبير جدًا من هذه العلامات، فقد يكون ذلك بمثابة هجوم انتهاء صلاحية TTL.
تم التقاط نموذج ملف pcap (الذي يحتوي على حزمة ذات TTL منخفض) باستخدام البرامج النصية الموجودة في الدليل ./attack_scripts/low_ttl
.
يتكون تسمم ARP من خداع المضيف بالاعتقاد بأننا البوابة الافتراضية . يسأل الضحية بانتظام البوابة الافتراضية عن عنوان MAC الخاص بها (بروتوكول ARP). لكن يمكن للمهاجم إرسال حزم الضحية لإبلاغه بأن البوابة الافتراضية موجودة على عنوان MAC آخر (عنوان MAC الخاص بالهجوم على سبيل المثال). يحتاج المهاجم فقط إلى إرسال تلك الحزم "بشكل منتظم بما فيه الكفاية" حتى يتمكن الضحية من "تجاهل" الرسائل الحقيقية من البوابة الافتراضية .
يمكن أن يسمح هذا للمهاجم بالمضي قدمًا ومهاجمة الضحية بعدة طرق: رجل في الوسط، وحجب الخدمة، والثقب الأسود، ...
مثال:
عنوان IP الخاص بالضحية هو 192.168.10.2
والعبّارة الافتراضية هي 192.168.1.1
:
sudo arpspoofing -i wlan0 -t 192.168.10.2 192.169.1.1
سيستمر المهاجم في إرسال حزم ARP للضحية لإخباره بأن 192.168.1.1
موجود على عنوان MAC الخاص بالمهاجم. بهذه الطريقة، سترسل الضحية حزمها (الموجهة إلى الإنترنت) إلى المهاجم، الذي لا يعيد توجيهها (الخيار -r
لإعادة توجيهها).
التحليل/الكود:
بالنسبة للتحليل، نظرًا لأننا ننظر فقط إلى حزم IP (في الوقت الحالي)، يحفظ p2a
في قائمة مرتبطة جميع الأزواج (MAC address, IP address)
التي يواجهها. عند التحقق من زوج معين جديد، فإنه يمر عبر القائمة المرتبطة ويعرض خطأ إذا كان عنوان IP مرتبطًا بالفعل بعنوان MAC آخر.
في المثال أعلاه، سيكتشف البرنامج النصي الخاص بنا أن 192.168.1.1
( البوابة الافتراضية ) مرتبط بعنوانين MAC مختلفين: العنوان الحقيقي، حتى يأتي المهاجم ويخبر الضحية أنها البوابة الافتراضية وأن عنوان MAC الخاص بها يحصل على المرتبطة بالبوابة الافتراضية (من وجهة نظر الضحية).
كل بايت من البيانات المرسلة في اتصال TCP له رقم تسلسلي مرتبط. تتم الإشارة إلى ذلك في حقل الرقم التسلسلي لرأس TCP .
عندما يكتشف مأخذ الاستقبال مقطعًا واردًا من البيانات، فإنه يستخدم رقم الإقرار في رأس TCP للإشارة إلى الاستلام. بعد إرسال حزمة من البيانات، سيبدأ المرسل مؤقت إعادة الإرسال ذو الطول المتغير. إذا لم يتلق إقرارًا قبل انتهاء المؤقت، فسيفترض المرسل أن المقطع قد فقد وسيعيد إرساله.
يمكننا أن نرى إعادة إرسال TCP عندما تمتلك حزمة أخرى نفس أرقام الإقرار والتسلسل مثل الحزمة الحالية.
تعد عمليات إعادة إرسال TCP شائعة جدًا ويمكن أن تكون طبيعية تمامًا (إذا تمت إعادة إرسال حزمة واحدة بسبب فقدانها بشكل شرعي)، ولكنها يمكن أن تكون أيضًا علامة على وجود مشكلة على الشبكة أو على الاتصال.
يحدث الاستغلال المتراكب لجزء IP عندما يكون للجزأين الموجودين في نفس حزمة IP إزاحات تشير إلى تداخلهما في تحديد موضعهما داخل الحزمة. قد يعني هذا أن الجزء "أ" قد تمت كتابته بالكامل بواسطة الجزء "ب"، أو أن الجزء "أ" تمت كتابته جزئيًا بواسطة الجزء "ب". لا تتعامل بعض أنظمة التشغيل بشكل صحيح مع الأجزاء التي تتداخل بهذه الطريقة وقد تطرح استثناءات أو تتصرف بطرق أخرى غير مرغوب فيها عند استلام شظايا متداخلة. هذا هو الأساس لهجوم الدمعة . ( من ويكيبيديا )
يمكن أيضًا استخدام الأجزاء المتداخلة في محاولة لتجاوز أنظمة كشف التسلل . في هذا الاستغلال، يتم إرسال جزء من الهجوم على شكل أجزاء مع بيانات عشوائية إضافية؛ قد تقوم الأجزاء المستقبلية بالكتابة فوق البيانات العشوائية مع ما تبقى من الهجوم. إذا لم يتم إعادة تجميع الحزمة المكتملة بشكل صحيح في IDS، فلن يتم اكتشاف الهجوم.
هجوم الدمعة: يتضمن إرسال أجزاء IP مشوهة مع حمولات متداخلة كبيرة الحجم إلى الجهاز المستهدف.
لم يتم تنفيذها بعد
إذا لاحظنا قيم TTL متعددة لجلسة معينة، فقد يعني ذلك أن المسار قد تغير، مما يعني أن الحزم لا تتبع نفس المسار مثل نهاية الاتصال كما فعلت في البداية. قد يكون هذا بسبب تغييرات حقيقية خارجية ولكنه قد يعني أيضًا أن يقوم المهاجم بتغيير المسار الذي تسلكه الحزم (للقيام بهجوم MiTM على سبيل المثال).
ومع ذلك، في معظم الأحيان، تحتوي الجلسة الواحدة على قيمتين أو ثلاث قيم TTL مختلفة طوال الاتصال بالكامل: في معظم الأحيان، لا يستخدم العميل والخادم نفس قيم TTL الأولية.
يقوم البرنامج النصي بإرجاع خطأ إذا كان هناك أكثر من قيمتين مختلفتين لـ TTL لجلسة معينة.
دليل | الوصف/المحتوى |
---|---|
./attack_scripts | نصوص برمجية بسيطة لاختبار وتسجيل بعض أوجه الغموض في بروتوكول TCP (الانتحال، وانخفاض مدة البقاء) |
./pcap_files | ملفات PCAP لاختبار p2a |
./tests_libpcap | نصان للاختبار والبدء في استخدام libpcap |
libpcap
pcap
pcap
في نهاية صفحة الويبtcpdump
libpcap
libpcap
في Cpcap.h