المقدمة
يصف هذا المستند سيناريو محددا يستخدم فيه المشترك تطبيقات ذات سعر حر مثل Whatsapp، و SnapChat وما إلى ذلك مع تدفق طبقة مآخذ التوصيل الآمنة (SSL) أثناء حظر حركة مرور المستخدم الأخرى. يعمل هذا التطبيق الخاص على سلسلة موجهات الخدمات المجمعة (ASR) 5x00 من Cisco. SSL هو بروتوكول شبكات كمبيوتر يدير مصادقة الخادم ومصادقة العميل والاتصال المشفر بين الخوادم والعملاء.
المشكلة
لاكتشاف أي تطبيق، تحتاج إلى بعض الحزم الأولية للتحليل. وقد تم الوفاء بهذين الشرطين المتناقضين إلى أقصى حد ممكن.
أ) يجب أن يحدث الكشف في الحزمة الأولى نفسها
ب) يجب أن تكون دقة الكشف 100٪
إذا حاولت الوفاء بالمتطلبات (أ) ووضع علامة على جميع التطبيقات في الحزمة الأولى (وهو أمر غير ممكن عمليا)، فإن متطلب (ب) حول دقة الكشف قد يعاني.لجعل دقة الكشف جيدة، تحتاج إلى مزيد من الحزم لتحليل الكثير من التطبيقات ( هناك تطبيقات وتدفقات حيث يتم اكتشاف التطبيق في الحزمة الأولى نفسها). في حالة إستخدام نفس التطبيق، قد يحدث أنه يمكنك تمييز بعض التدفقات في الحزمة الأولى نفسها بينما تحتاج التدفقات الأخرى لنفس التطبيق إلى مزيد من الحزم للتحليل.
لذلك إذا تم تصنيف أي تطبيق مجانا أثناء حظر أي حركة مرور أخرى، فقد يحدث أن لا يتم اكتشاف الحزمة الأولية للتطبيق لأنها لا تحمل معلومات كافية. في حالة معينة من التطبيقات المستندة إلى تدفقات SSL، يتم وضع علامة على البروتوكول باستخدام حقل إشارة اسم الخادم الموجود في الحزمة client-hello أو الاسم الشائع الموجود في شهادة SSL. ونظرا لأن حقل اسم الخادم إختياري، فإنه لا يكون موجودا دائما. كما هو موضح في هذه الصورة، في تدفق Whatsapp SSL، بعد المصافحة ثلاثية الإتجاه (TWH)، يتم إرسال حزمة HELLO الخاصة بالعميل بواسطة التطبيق. تتبع PCAP لا يظهر حقل مؤشر اسم الخادم (SNI). كما تتم ملاحظة عمليات إعادة إرسال متعددة لحزم مرحبا بالعميل التي يتم إسقاطها في نهاية المطاف.
أيضا، كما هو موضح في هذه الصورة، فإنها تمثل وحدات البايت السداسية العشرية للحزمة client-hello التي لا يوجد فيها حقل SNI، المستخدم لتعليم Whatsapp. وبالتالي، لا يمكن تمييز الحزمة client-hello على أنها Whatsapp ولا يتم اكتشافها. بما أن هذه الحزمة تقع في مجموعة تصنيف مختلفة، يتم إسقاطها، وبالتالي تظهر عمليات إعادة إرسال متعددة لحزمة ترحيب العميل (راجع الإطار رقم 5449، 5453، 5469). وأخيرا، يتم إنهاء الاتصال. وتشاهد عدة تدفقات من هذا القبيل في خطة العمل الشاملة. هذا هو السبب في أنه لا يمكن القيام بأي نشاط مفيد، على سبيل المثال، تحميل الصورة ل Whatsapp.
استكشاف الأخطاء وإصلاحها
1. capture monitor subscriber imsi XXXX with following options
19 - User L3
X - PDU Hexdump
Verbosity level 5
تعطي هذه الأوامر أحوال محلل للتطبيقات.
# show act analyzer statistics name p2p application snapchat
# show act analyzer statistics name p2p application whatsapp
للتحقق من إصدار المكون الإضافي:
#show plugin p2p
Wednesday July 29 22:12:07 SAST 2015
plugin p2p
patch-directory /var/opt/lib
base-directory /lib
base-version 1.50.52055
module priority 1 version 1.139.505
الحل
لتجنب ذلك، يلزمك التأكد من وضع علامة على الحزم قبل تطبيق (لنقل واتساب) ويجب المرور عبرها.
أستخدم هذه القاعدة :
ruledef ssl_clienthello
tcp either-port = 443
tcp payload-length >= 44
tcp payload starts-with hex-signature 16-03
#exit
يجب عدم إسقاط أي حزمة، تطابق الموجه أعلاه. يجب أن تكون أولوية هذا الموجه أعلى من قيمة الموجه الافتراضية (ip-any rouledef) التي كانت تطابق هذه الحزمة وتتسبب في إسقاطها.
باستخدام هذا التكوين، يتم تصنيف الحزم المطابقة لبنود القواعد الثلاثة أعلاه فقط مجانا. وتتضمن هذه الحزم فقط حزم تأكيد الاتصال الأولية في تدفق SSL (مثل client-hello، server-hello) المسموح بها باستخدام هذا الموجه، بينما لا تتطابق جميع الحزم الأخرى في تدفق SSL مع هذا الموجه. وبالتالي، إذا كان هناك تدفق SSL ينتمي إلى بعض التطبيقات الأخرى (بخلاف واتساب التي تريد إجراء سعر حر لها)، فلا يمكن أن تكون هناك أي معاملة مفيدة، نظرا لأنه يسمح فقط للحزم الأولية من إثنين إلى ثلاثة من تدفق SSL باستخدام هذا الموجه.
عينة من التكوين
يجب أن تكون الأولوية أعلى للموجه المقترح من all-ip_004_012_00016 roledef (ip any-match = true) و
إجراء الشحن الذي يسمح بحركة المرور المماثلة ل whatsapp rouledef.(sid_040_rg_400_rate_9999/sid_040_rg_400_rate_0032/ sid_040_rg_400_rate_0064 مع مجموعة التصنيف 400 وأي معدل).
باستخدام هذا التكوين، تضرب حزمة الترحيب الخاصة بالعميل الموجه المقترحة ويتم السماح بها بدلا من إعادة توجيهها. هذان هما قاعدتا القواعد حيث يمكن رؤية قواعد واتساب:
rulebase mbc-internet-rs
action priority 1087 dynamic-only ruledef WhatsApp_P2P_040_400_99999_All_internet charging-action sid_040_rg_400_rate_99999
action priority 1088 dynamic-only ruledef WhatsApp_P2P_040_400_00064_All_internet charging-action sid_040_rg_400_rate_00064
action priority 1089 dynamic-only ruledef WhatsApp_P2P_040_400_00032_All_internet charging-action sid_040_rg_400_rate_00032
action priority [1090-9909] dynamic-only ruledef ssl_clienthello charging-action sid_040_rg_400_rate99999/00064/00032 --> Higher priority than all-ip ruledef and charging action with rating group 400
action priority 9910 dynamic-only ruledef all-ip_004_012_00016_MI_internet charging-action sid_004_rg_012_rate_00016
action priority 9920 dynamic-only ruledef all-ip_004_012_00032_MI_internet charging-action sid_004_rg_012_rate_00032
action priority 9930 dynamic-only ruledef all-ip_004_012_00064_MI_internet charging-action sid_004_rg_012_rate_00064
rulebase mbc-iphone-rs
action priority 1206 dynamic-only ruledef WhatsApp_P2P_040_400_99999_All_iphone charging-action sid_040_rg_400_rate_99999
action priority 1207 dynamic-only ruledef WhatsApp_P2P_040_400_00064_All_iphone charging-action sid_040_rg_400_rate_00064
action priority 1208 dynamic-only ruledef WhatsApp_P2P_040_400_00032_All_iphone charging-action sid_040_rg_400_rate_00032
action priority [1209-8999] dynamic-only ruledef ssl_clienthello charging-action sid_040_rg_400_rate99999/00064/00032 --> Higher priority than all-ip ruledef and charging action with rating group 400
action priority 9000 dynamic-only ruledef all-ip_015_150_00016_ALL_iphone charging-action sid_015_rg_150_rate_00016
action priority 9010 dynamic-only ruledef all-ip_015_150_00032_ALL_iphone charging-action sid_015_rg_150_rate_00032
action priority 9020 dynamic-only ruledef all-ip_015_150_00064_ALL_iphone charging-action sid_015_rg_150_rate_00064
action priority 9030 dynamic-only ruledef all-ip_015_150_99999_ALL_iphone charging-action sid_015_rg_150_rate_99999
charging-action sid_040_rg_400_rate_99999
content-id 400
service-identifier 40
billing-action egcdr
cca charging credit
exit
ruledef ssl_clienthello
tcp either-port = 443
tcp payload-length >= 44
tcp payload starts-with hex-signature 16-03
exit