إجهاد الجوارب

Sockstress هي طريقة لمهاجمة الخوادم والأجهزة الأخرى التي تقبل اتصالات TCP على الإنترنت والشبكات الأخرى القائمة على TCP . [ 1 ] تستنزف هذه الطريقة الموارد المحلية بهدف تعطيل خدمة أو جهاز بأكمله، وتعمل بشكل أساسي كهجوم حجب الخدمة .

طُوِّر برنامج Sockstress كنموذج تجريبي داخلي على يد الراحل جاك سي. لويس في شركة Outpost24 . اكتشف لويس ثغرات باستخدام برنامج Unicornscan لاختبار الشبكات وفحصها لأغراض أمن الشركات، مما أدى إلى تطوير Sockstress. [ 2 ] عُرض المفهوم لأول مرة في سبتمبر 2008. [ 3 ] [ 4 ] [ 5 ] [ 6 ] كان الباحثون يخططون لنشر المزيد من التفاصيل في مؤتمر T2 في فنلندا، حيث عرضوا الهجمات. [ 7 ] [ 8 ] لكنهم اختاروا بدلاً من ذلك مواصلة العمل عن كثب مع مجتمعات الموردين والمعايير، وتخصيص المزيد من الوقت لهم. وفي تدوينة على مدونتهم، قالوا: "نحن لا نضغط عليهم [الموردين] لإصدار حلول متسرعة وضعيفة التنفيذ."

أصدر فوتيس شانتزيس، المعروف أيضًا باسم ithilgore، أداة Nkiller2 التجريبية، التي عرضت هجومًا مشابهًا لهجوم sockstress، على موقع Phrack الإلكتروني . [ 9 ] تعمل Nkiller2 بشكل كامل دون الاحتفاظ بالحالة، باستخدام تقنيات تحليل الحزم والحالات الافتراضية، وتستغل آلية متأصلة في بروتوكول TCP، وهي مؤقت الاستمرار، مما يُمكّنها من تنفيذ هجوم حجب الخدمة (DoS) عام وإطالة مدته إلى ما لا نهاية بأقل قدر من حركة مرور الشبكة.

حول سوكستريس

Sockstress هو إطار عمل لاختبار إجهاد مقابس TCP في بيئة المستخدم، قادر على إكمال عدد غير محدود من المقابس المفتوحة دون تكبّد العبء المعتاد لتتبع الحالة. بمجرد إنشاء المقبس، يصبح قادرًا على إرسال هجمات TCP تستهدف أنواعًا محددة من موارد النواة والنظام، مثل العدادات والمؤقتات ومجمعات الذاكرة. بعض الهجمات المذكورة هنا تُعتبر "معروفة"، إلا أن آثارها الكاملة لا تزال غير معروفة. علاوة على ذلك، هناك المزيد من الهجمات التي لم تُكتشف أو تُوثّق بعد. مع توثيق الباحثين لطرق استنزاف موارد محددة، يمكن إضافة وحدات هجومية إلى بنية إطار عمل Sockstress.

تتكون أداة هجوم ضغط الجوارب من جزأين رئيسيين:

1) فانتايب: فانتايب [ 10 ] هو برنامج يُزوّر عناوين IP لاستخدامها مع سوكستريس. ويحقق ذلك عن طريق إرسال ردود ARP إلى الأجهزة المضيفة التي تطلب عنوان IP المُزوّر. لاستخدام فانتايب، اكتب الأمر 'fantaip -i interface CIDR'، على سبيل المثال، 'fantaip -i eth0 192.168.0.128/25'. يمكن توفير وظيفة ARP/الطبقة الثانية هذه اختياريًا بوسائل أخرى حسب متطلبات بنية الشبكة المحلية . بما أن سوكستريس يُكمل اتصالات TCP في مساحة المستخدم، فلا يُنصح باستخدامه مع عنوان IP مُهيأ للاستخدام من قِبل النواة، لأن النواة ستُعيد ضبط الاتصالات (RST). هذا ليس شرطًا أساسيًا، إذ يُمكن استخدام جدار حماية لحظر الحزم الواردة التي تحمل علامة rst لتحقيق نفس الهدف ومنع النواة من التدخل في مسار الهجوم .

٢) اختبار الضغط عبر الشبكة (Sockstress): في أبسط استخداماته، يقوم اختبار الضغط عبر الشبكة بفتح منافذ TCP وإرسال اختبار ضغط محدد. ويمكنه اختيارياً إرسال حمولة TCP خاصة بالتطبيق (مثل طلب HTTP). افتراضياً، يتجاهل اختبار الضغط عبر الشبكة المُنشأة بعد الهجوم. ويمكنه اختيارياً تأكيد طلبات التحقق من المنافذ النشطة. تستغل هذه الهجمات الموارد المكشوفة التي يوفرها الهدف بعد المصافحة.

تُعد ملفات تعريف الارتباط الخاصة بالعميل، والتي تمت مناقشتها بكثرة في المدونات والأخبار وقوائم المناقشة، تفصيلاً تنفيذياً لـ sockstress وليست ضرورية تماماً لتنفيذ هذه الهجمات.

سيناريوهات الهجوم

لكل هجوم في إطار عمل "سوكستريس" تأثير ما على النظام/الخدمة المستهدفة. مع ذلك، تكون بعض الهجمات أكثر فعالية من غيرها ضد مجموعة محددة من الأنظمة/الخدمات.

ضغط الفيضانات على الاتصال

لا يحتوي برنامج Sockstress على وحدة هجوم خاصة لتنفيذ هجوم بسيط لإغراق الاتصالات، ولكن يمكن استخدام أي من وحدات الهجوم على هذا النحو إذا تم استخدام الخيارين -c-1 (الحد الأقصى للاتصالات غير محدود) و -m-1 (الحد الأقصى للمزامنة غير محدود).

أمثلة على الأوامر:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -Mz -p22,80 -r300 -s192.168.1.128/25 -vv

لا يوجد أي ضغط على وصلات النوافذ

قم بإنشاء اتصال بمقبس استماع، وعند المصافحة الثلاثية (داخل آخر ACK) أرسل نافذة 0.

 syn -> (نافذة 4K) <- syn+ack (نافذة 32 كيلوبايت) ack -> (0 window)

الآن، سيتعين على الخادم "فحص" العميل حتى يتم فتح نافذة الصفر. يُعد هذا النوع من الهجمات أبسطها فهمًا. والنتيجة مشابهة لهجوم إغراق الاتصالات، باستثناء أن المقابس تظل مفتوحة بشكل دائم (عند تفعيل خيار -A/ACK). هذا موضح في وثيقة CPNI في القسم 2.2. يتمثل أحد الاختلافات هنا في إرسال حمولة بيانات العميل (مثل 'GET / HTTP/1.0') قبل ضبط النافذة على 0. يشبه هذا الاختلاف ما هو موضح في وثيقة CPNI في القسم 5.1.1. يتمثل اختلاف آخر في الإعلان أحيانًا عن نافذة TCP أكبر من 0، ثم العودة إلى نافذة الصفر.

فعال ضد:

  • الخدمات التي تتطلب مهلة زمنية طويلة

أمثلة على الأوامر:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -Mz -p22,80 -r300 -s192.168.1.128/25 -vv

ضغط النوافذ الصغيرة

Create a connection to a listening socket and upon 3 way handshake (inside last ACK) set a window size of 4 bytes, then create an ACK/PSH packet with a TCP payload (into a window that is hopefully large enough to accept it) with a window still set to 4 bytes. This will potentially cause kernel memory to be consumed as it takes the response and splits it into tiny 4 byte chunks. This is unlike a connection flood in that memory is now consumed for every request made. This has reliably put Linux/Apache and Linux/sendmail systems into defunct states. It is also effective against other systems. It is expected that this has similar effects to what is described in the CPNI document in the second to last paragraph of page 17.

Look at the payload.c file in the sockstress source. Look for the hport switch statement. In that section you can specify payloads to be sent to specific ports. It is most effective to send a payload that will generate as large of a response as possible (i.e. 'GET /largefile.zip').

Good against:

  • Services that contain initial connection banners
  • Services that accept an initial request and send a large response (for example a GET request against a large web page, or file download)

Example commands:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -Mw -p22,80 -r300 -s192.168.1.128/25 -vv

Segment hole stress

Create a connection to a listening socket and upon 3 way handshake (inside last ACK) send 4 bytes to the beginning of a window, as advertised by the remote system. Then send 4 bytes to end of window. Then 0-window the connection. Depending on the stack, this could cause the remote system to allocate multiple pages of kernel memory per connection. This is unlike a connection flood in that memory is now consumed for every connection made. This attack was created to target Linux. It is also quite effective against Windows. This is the attack that was used in the sec-t and T2 demos. It is expected that this has similar effects to what is described in the CPNI document in section 5.2.2 5th paragraph and section 5.3.

Good against:

  • Stacks that allocate multiple pages of kernel memory in response to this stimulus

Example commands:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -Ms -p22,80 -r300 -s192.168.1.128/25 -vv

REQ FIN pause stress

Create a connection to a listening socket. PSH is an application payload (i.e. 'GET / HTTP/1.0'). FIN the connection and 0-window it. This attack will have very different results depending on the stack/application you are targeting. Using this against a Cisco 1700 (IOS) web server, it was observed that sockets were left in FIN_WAIT_1 indefinitely. After enough of such sockets, the router could no longer communicate TCP correctly.

Look at the payload.c file in the sockstress source. Look for the hport switch statement. In that section, you can specify payloads to be sent to specific ports. You must send a payload that will look like a normal client to the application you are interacting with. Against a Cisco 1700, while using this attack it was important to attack at a very slow rate.

Example commands:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -MS -p80 -r10 -s192.168.1.128/25 -vv

تفعيل ضغط رينو

أنشئ اتصالاً بمأخذ استماع. PSH عبارة عن حمولة تطبيق (مثل 'GET / HTTP/1.0'). كرر ثلاث مرات تأكيد الاستلام (ACK).

انظر إلى ملف payload.c في مصدر sockstress. ابحث عن عبارة hport switch. في هذا القسم، يمكنك تحديد الحمولات المراد إرسالها إلى منافذ معينة. يجب عليك إرسال حمولة تبدو كعميل عادي للتطبيق الذي تتفاعل معه.

فعال ضد:

  • المجموعات التي تدعم هذه الطريقة لتفعيل رينو أو وظائف جدولة مماثلة

أمثلة على الأوامر:

  1. fantaip -i eth0 192.168.1.128/25 -vvv
  2. sockstress -A -c-1 -d 192.168.1.100 -m-1 -MR -p22,80 -r300 -s192.168.1.128/25 -vv

أفكار أخرى

  • FIN_WAIT_2 stress

أنشئ اتصالاً بمأخذ استماع. أرسل حمولة تطبيق عبر بروتوكول PSH من شأنها أن تتسبب على الأرجح في إغلاق التطبيق على الطرف الآخر للمأخذ (يرسل الهدف إشارة FIN). ثم قم بتأكيد استلام إشارة FIN.

فعال ضد:

  • الحزم التي لا تحتوي على مهلة FIN_WAIT_2.
  • ضغط نافذة الازدحام الكبيرة
  • إجهاد وحدة النقل القصوى لمسار الانكماش
  • إجهاد MD5

آثار الهجمات

إذا نجحت الهجمات في إحداث اتصالات متوقفة بشكل دائم، فسيتم ملء جدول اتصالات الخادم بسرعة، مما يؤدي فعليًا إلى تعطيل خدمة معينة. في كثير من الحالات، لاحظنا أيضًا أن هذه الهجمات تستهلك كميات كبيرة من قوائم انتظار الأحداث وذاكرة النظام، مما يزيد من آثارها. وقد نتج عن ذلك أنظمة فقدت مؤقتات الأحداث الخاصة باتصالات TCP، وأنظمة متجمدة، وإعادة تشغيل النظام. لا تتطلب هذه الهجمات نطاقًا تردديًا كبيرًا.

بينما يُعدّ تعطيل خدمة واحدة أمرًا بسيطًا في غضون ثوانٍ، فإنّ تعطيل نظام كامل قد يستغرق دقائق عديدة، وفي بعض الحالات ساعات. وكقاعدة عامة، كلما زاد عدد الخدمات في النظام، زادت سرعة تأثره بالآثار المدمرة للهجمات (مثل تعطل بروتوكول TCP، وقفل النظام، وإعادة التشغيل، إلخ). ويمكن تضخيم الهجوم من خلال شنّه من عدد أكبر من عناوين IP. في مختبراتنا، نشنّ هجماتنا عادةً من نطاق عناوين IP من /29 إلى /25. أما الهجوم من نطاق /32 فهو أقل فعالية في إحداث أعطال شاملة في النظام.

تحذيرات الاستغلال

يتطلب هذا الهجوم إتمام عملية المصافحة الثلاثية لبروتوكول TCP بنجاح لملء جداول اتصالات الضحية بشكل فعال. وهذا يحد من فعالية الهجوم، إذ لا يستطيع المهاجم تزييف عنوان IP الخاص بالعميل لتجنب التتبع.

يتطلب استغلال ثغرة "سوكستريس" الوصول إلى منافذ الوصول الخام على جهاز المهاجم، لأن معالجة الحزم تتم في مساحة المستخدم بدلاً من استخدام واجهة برمجة تطبيقات الاتصال (connect()) الخاصة بنظام التشغيل . منافذ الوصول الخام معطلة في نظام التشغيل Windows XP SP2 والإصدارات الأحدث، ولكن تتوفر برامج تشغيل الأجهزة بسهولة [ 11 ] لإعادة تفعيل هذه الميزة في Windows. يمكن تنفيذ الثغرة كما هي على منصات أخرى تدعم منافذ الوصول الخام، مثل أنظمة *nix، وتتطلب صلاحيات المستخدم الجذر ( المستخدم الخارق ).

التخفيف

بما أن المهاجم يحتاج إلى إنشاء اتصالات TCP للتأثير على الهدف، فإن السماح بالوصول إلى خدمات TCP على الأنظمة وأجهزة التوجيه الحساسة يُعد حاليًا الوسيلة الأكثر فعالية للتخفيف من المخاطر. كما يُعد استخدام بروتوكول IPsec وسيلة فعالة للتخفيف من هذه المخاطر.

بحسب ردّ سيسكو [ 12 فإنّ النصيحة الحالية للتخفيف من المخاطر هي السماح فقط للمصادر الموثوقة بالوصول إلى الخدمات القائمة على بروتوكول TCP. يُعدّ هذا الإجراء بالغ الأهمية لأجهزة البنية التحتية الحيوية. وقد صرّحت ريد هات قائلةً: "نظراً لقرار المطورين بعدم إصدار تحديثات، فإنّ ريد هات لا تخطط لإصدار تحديثات لحلّ هذه المشكلات؛ ومع ذلك، يمكن الحدّ من آثار هذه الهجمات". على نظام لينكس، يُمكن استخدام iptables مع تتبّع الاتصالات وتحديد معدل نقل البيانات للحدّ من تأثير الاستغلال بشكل كبير. [ 13 ]

مراجع