كيفية بناء جهاز تشويش الكاشف

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

التشويش

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

هناك عدد كبير من الأجهزة اللاسلكية الضارة التي تهدف إلى التسبب في تداخل مقصود في شبكة لاسلكية. من الواضح أنها غير قانونية ولكن في الوقت الحاضر ، يمكن شراؤها عبر الإنترنت بسعر معتدل.

هذه التشويش تعمل بالطريقة التالية. إنها تولد إشارة لاسلكية قوية تؤثر على الطبقة المادية لبروتوكول الاتصال اللاسلكي الجاري استخدامها. هذا يعني أنهم قادرون على التأثير على أي بروتوكول في أي نطاق تردد معين. أنها تؤثر على الطبقة الأولى من مكدس OSI ، الوسيط. نتيجة لذلك ، سوف تتأثر أي طبقة عليا تستخدم للاتصال. واي فاي ، بلوتوث ، 3G ، 4G ، GSM ، GPS ، سمها ما شئت. هو مثل الرجل المجنون الذي يبدأ الصراخ في منتصف المحادثة. لا يهم إذا كان المتحدثون يتحدثون باللغة الإنجليزية أو الروسية ، فلن يتمكنوا من التحدث مع بعضهم البعض بعد الآن.

هناك أنواع مختلفة من إشارات التشويش ولكن الأكثر شيوعًا هي هذه الأربعة:

موجة مستمرة: إشارة ضيقة النطاق الجيبية بسعة ثابتة وتردد ثابت

التردد المعدل: إشارة الجيبية ذات السعة الثابتة والتردد المتغير الذي يجتاح ترددات نطاق الخدمة

النطاق العريض: يرسل نطاقًا من الترددات كبيرًا فيما يتعلق بعرض نطاق مرسل واحد

الإشارات النبضية: إشارة متقطعة لها عدة مكونات متناسقة مقسمة في نطاق الخدمة بأكمله

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

لذا ماذا نفعل حيال ذلك؟ كيف يمكننا اكتشاف وجود جهاز ضار يحاول التأثير على الشبكات اللاسلكية العادية؟ حسنًا ، سيكون أحد الحلول بناء جهاز تشويش تشويش. بسيط ، أليس كذلك؟ :)

DoS Sensing - جهاز تشويش الكاشف

اليوم (اليوم الذي بدأت فيه كتابة منشور المدونة) مر عامان منذ انضمامي إلى Worldsensing. إنها شركة إنترنت الأشياء التي تنمو كثيرًا مؤخرًا وشخصيًا ، لقد كانت تجربة رائعة بالنسبة لي حتى الآن للعمل هنا. أنا جزء من فريق يعمل بشكل رئيسي على مشاريع الابتكار ، التي أسسها الاتحاد الأوروبي بشكل عام. في سياق أحد تلك المشروعات التي يطلق عليها CIPSEC ، طُلب منا تطوير أداة تتيح لنا اكتشاف هجمات حجب الخدمة اللاسلكية (DoS). بعد تحليل المشكلة والقيام بالكثير من الأبحاث ، قررنا إنشاء DoS Sensing ، جهاز تشويش للكشف عن إنترنت الأشياء. بعد كل شيء ، نحن شركة إنترنت الأشياء!

كانت الفكرة أن يكون لديك جهاز يمكنه حماية أي شبكة لاسلكية ، بغض النظر عن نطاق التردد. هذا يعني أنه يجب أن يكون قادرًا على اكتشاف الحالات الشاذة على الطبقة المادية والإبلاغ عن حدوث هجوم. سيسمح لنا ذلك باستخدام جهاز واحد لتحسين أمان الأجهزة غير المتجانسة ، مثل أجهزة توجيه WiFi ، أو الهواتف المحمولة أو حتى dataloggers Worldsensing's Loadsensing ، التي تتصل عبر LoRa.

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

بنية الحل

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

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

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

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

حسنا إذا! الهندسة المعمارية لدينا شيء من هذا القبيل:

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

المستشعر (الأجهزة)

الآن نحن بحاجة لبناء الاستشعار. لنبدأ مع الهوائي. نحن نعلم أن هناك بعض الهوائيات التي تغطي نطاقات متعددة ، على سبيل المثال ، هذا واحد ، والذي اختبرناه بالفعل بنتائج جيدة. يمكننا استخدام شيء مثل هذا لتغطية عدة نطاقات تردد وحماية بروتوكولات متعددة. ومع ذلك ، في البداية ، ركزنا بشكل أساسي على وجود نموذج أولي لحماية نطاق Wifi ، لذلك كان هوائي 2.4 جيجا هرتز - 2.5 جيجا هرتز كافيًا. سوف نرى لماذا في وقت لاحق.

نحن بحاجة أيضا وحدة حقوق السحب الخاصة. أي واحدة؟ هناك العديد من المنتجات في السوق. بعد إجراء بعض الأبحاث والمناقشات مع الخبراء ، قررنا أنه بالنسبة لهذا النموذج الأولي ، سنختار HackRF One. يقدم هذا الجهاز علاقة جيدة بجودة السعر ويغطي الترددات من 1 ميجا هرتز إلى 6 جيجا هرتز! برامج التشغيل مفتوحة المصدر ويمكنك تثبيتها بسهولة عبر مدير الحزم لمعظم توزيعات Linux.

جيد ، هذا بدأ في التبلور. نحتاج الآن إلى جهاز قادر على معالجة العينات الرقمية التي تم إنشاؤها بواسطة وحدة SDR ، لوحة المعالجة الخاصة بنا. هنا تصبح الأمور صعبة بعض الشيء. إذا كنا نريد تحليل دفق البيانات في الوقت الحقيقي ، فسنحتاج إلى قوة معالجة كبيرة. إن الحصول على معدل أخذ عينات لائق (مثل 5 مللي ثانية) يمنحنا إجمالي بيانات معدل أكثر من 300 ميغابت في الثانية! هذا كثير من البيانات إذا أردنا تحليل كل ذلك. لحسن الحظ ، لا نحتاج حقًا إلى معالجة الأمر كله ، ولكن على الأقل بضع مجموعات من البيانات في الثانية ، من أجل الحصول على حل في الوقت الفعلي. في هذه الحالة ، سيكون الكمبيوتر المحمول رائعًا ولكن لا يمكنك إنشاء جهاز إنترنت الأشياء مع جهاز كمبيوتر محمول. أنت بالتأكيد بحاجة إلى شيء أصغر. بعد ذلك ، فكرنا في Raspberry Pi ، ولكن حتى الإصدار 3 قد لا يكون كافياً لأغراضنا في بعض الحالات (على الرغم من أنه قد يعمل إذا كنت لا تمانع في الحصول على بعض الكمون على النتائج). هذا هو السبب في أننا قررنا الذهاب إلى Odroid C2. هذه اللوحة قوية جدًا لسعرها ويمكن تشغيلها على الحد الأدنى من أوبونتو ، مما يساعد كثيرًا. من السهل حقًا تثبيت التبعيات إذا كنت تريد توصيل HackRF One به ، وهي لوحة قوية جدًا.

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

المستشعر (البرامج الثابتة)

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

GNU Radio عبارة عن مجموعة أدوات مجانية لتطوير البرمجيات تتيح لنا استخدام كتل معالجة الإشارات بأنواعها المختلفة من أجل تنفيذ أنظمة معالجة الإشارات وأجهزة الراديو المعرفة بالبرنامج. يمكنك استخدام الكتل التي تقوم بمعالجة الإشارة في البرنامج وتوصيلها فيما بينها من أجل تحويل الإشارة وتوليد ناتج. هناك الكثير من الوظائف المحددة مسبقًا ، مثل المرشحات ، والمعادلات ، وأجهزة فك التشفير ، إلخ. وأفضل جزء هو أنه يمكنك أيضًا تطوير الكتل الخاصة بك واستخدامها للاتصال بالباقي. يمكن كتابة التطبيقات في C ++ أو بيثون. يتيح لك راديو جنو استخدام وحدة SDR لتصور أشياء رائعة مثل هذا:

هذا هو FFT إشارة. مما يعني أن لديك محلل الطيف الخاص بك يعمل على جهاز الكمبيوتر الخاص بك!

من ناحية أخرى ، يمكنك القيام بأشياء أخرى مثل توصيل مصدر إشارة إلى كتل مختلفة تحول العينات إلى شيء آخر. توجد واجهة مستخدم رسومية لهذا المسمى GNU Radio Companion ويبدو أنها:

تنتهي هذه الأداة في إنشاء برنامج نصي Python يصل الكتل معًا ويقوم بتشغيل التطبيق ، مما ينتج عنه بعض المخرجات. في هذه الحالة ، ما نريد بناءه هو تدفق العينات التي تمر ببعض الكتل المخصصة التي يمكنها تحليلها بحيث يتم العثور على نمط أو توقيع معين على الإشارة. إذا حدث هذا ، فسنرسل رسالة تفيد بأننا وجدناها ، حددنا جهاز تشويش. هندسة تطبيق SDR Jammer Detection (SDRJD) على لوحة المعالجة هي كما يلي:

العينات الرقمية تأتي من مصدر ، وهو وحدة حقوق السحب الخاصة. ومع ذلك ، بفضل GNU Radio وبنيتها الموجهة نحو الكتلة ، يمكن استبدال وحدة SDR Module كمصدر بمصادر أخرى ممكنة ، طالما أن هناك كتلة لها. على سبيل المثال ، يمكن أن يكون المصدر ملفًا. يعد هذا مفيدًا للغاية ، حيث يتيح لنا تسجيل إشارة (مشوي على سبيل المثال) وإفراغها إلى ملف (باستخدام كتلة مصدر تكتب إلى ملف) ثم إعادة استخدامها عدة مرات كما نريد للاختبار.

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

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

خوارزمية Tong هي إجراء مثير للاهتمام تم تطويره لتحسين النتائج الإيجابية الخاطئة وتحسين القرارات التي تتخذها كل خوارزمية اكتشاف التشويش. إنها تتكون من اتخاذ العديد من القرارات للتوصل إلى خاتمة. نبدأ مع عداد K = B. إذا كان القرار إيجابياً ، فإننا نزيد K. إذا كانت K تساوي A ، فإن النتيجة تكون إيجابية. إذا كان القرار سالبًا ، فإننا نخفض K. إذا كانت K تساوي 0 ، فإن النتيجة ستكون سالبة. نظرًا لأننا قد نكرر التكرار إلى ما لا نهاية ، فإننا نحسب أيضًا الحد الأقصى لعدد التكرارات ، حتى نعلن عن نتيجة سلبية.

جميع البرامج الثابتة الموصوفة هنا مفتوحة المصدر ويمكن العثور عليها هنا.

كما قلنا ، يتم وضع رسائل الكشف في قائمة انتظار Linux. هناك عملية أخرى مسؤولة عن قراءة الرسائل من قائمة الانتظار ونقلها إلى برنامج المراقبة ، الذي يعمل على السحابة.

رصد البرمجيات

فيما يتعلق بالبرنامج ، كنا نبحث عن أدوات مختلفة يمكن استخدامها لتقديم البيانات في الوقت الفعلي وسيكون من السهل استخدامها لإعداد لوحات المعلومات. اكتشفنا أن مزيج InfluxDB و Kapacitor و Grafana كان رائعًا لتلبية احتياجاتنا. انتهى هيكل برنامج المراقبة إلى الشكل التالي:

يتصل المستشعر ببرنامج نصي بيثون يدرج البيانات في قاعدة بيانات InfluxDB. هنا هو المكان الذي يقوم به Kapacitor ببعض السحر من أجل تحسين رسائل الكشف الواردة من المستشعر وإعادة إدخال إدخالات الهجوم إلى قاعدة بيانات تستخدمها Grafana لتقديم الهجمات في الوقت الفعلي وإظهار بعض الإحصاءات. عندما يكون هناك هجوم إيجابي ، ستقوم Kapacitor أيضًا بإبلاغ ذلك بعملية منفصلة تكتب إدخال تسجيل الدخول إلى ATOS XL-SIEM. تم تطوير هذا SIEM واختباره في سياق مشروع CIPSEC.

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

  • إذا كانت _positiveRatio_٪ من آخر _windowDuration_ من قرارات الكشف عن التشويش الصادرة من المستشعر (في جدول القرارات الأولية) إيجابية وكانت JNR (نسبة التشويش إلى نسبة الضوضاء) أكبر من _jnrThreshold_ ، فقم بالإعلان عن حدث هجوم إيجابي. إذا لم يكن كذلك ، قم بالإعلان عن حدث هجوم سلبي.
  • حرك _jammerUpdateWindowDuration_ ثانية أكثر _windowDuration_ الإطار المنزلق

حاليا قمنا بتعيين المعلمات إلى ما يلي وشهدنا نتائج جيدة:

  • _jnrThreshold_: 1 ديسيبل
  • _positiveRatio_: 90
  • _windowDuration_: 5 ثواني
  • _jammerUpdateWindowDuration_: ثانية واحدة

نهاية المقدمة

يتكون الجزء الأخير من الحل من أداة التصور. تم تصميم هذه الأداة باستخدام Grafana وتوفر لوحة معلومات لتصور الهجمات والإحصائيات الأخرى. أنه يوفر رسم بياني في الوقت الحقيقي من الوقت JNR مقابل كل نوع من الهجوم للكشف. علاوة على ذلك ، يُظهر عدد الهجمات لكل نوع خلال اليوم الأخير (يمكن تغيير هذا الإطار الزمني). كما أنه يحتوي على عنصر واجهة مستخدم يوضح الحالة الحالية لجهاز الكشف عن التشويش ، حيث يكون الأزرق يعني أن المستشعر نشط ، والوسائل الحمراء تحت الهجوم والرمادي يعني أن المستشعر غير نشط. هذه عن كيفية الشبه:

يتم إحتوائه

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

إذا كنت ترغب في تجربة المستشعر بنفسك ، فابدأ ، واحصل على وحدة SDR ، وقم بتنزيل مستودع البرامج الثابتة ، واتبع تعليمات README وقم بتشغيل جهاز الكشف عن التشويش بنفسك!

تنصل

تلقى هذا المشروع (Cipsec) تمويلًا من برنامج Horizon 2020 للبحوث والابتكار التابع للاتحاد الأوروبي بموجب اتفاقية المنحة رقم 700378. أي نشر للنتائج المقدمة هنا يعكس فقط وجهة نظر الكونسورتيوم. الوكالة التنفيذية للأبحاث ليست مسؤولة عن أي استخدام قد يكون للمعلومات التي تحتوي عليها.