في 29 مايو ،
تم عقد مؤتمر آخر 2018 - مؤتمر Yandex السنوي والأكبر. كان هناك ثلاثة أقسام في YaC لهذا العام: تقنيات التسويق ، والمدينة الذكية ، وأمن المعلومات. في المطاردة الساخنة ، ننشر أحد التقارير الرئيسية للقسم الثالث - من Yuri Leonovich
tracer0tong من شركة Rakuten اليابانية.
كيف نقوم بالمصادقة؟ في حالتنا ، لا يوجد شيء غير عادي ، ولكن أريد أن أذكر طريقة واحدة. بالإضافة إلى الأنواع التقليدية - captcha وكلمات المرور لمرة واحدة - نستخدم Proof of Work ، PoW. لا ، نحن لا نقوم بتعدين البيتكوين على أجهزة الكمبيوتر الخاصة بالمستخدمين. نستخدم PoW لإبطاء المهاجم وأحيانًا منعه تمامًا ، مما يجبره على حل مهمة صعبة للغاية ، والتي سيقضي الكثير من الوقت عليها.
- أعمل لدى شركة Rakuten International Corporation. أريد أن أتحدث عن عدة أشياء: القليل عن نفسي ، وعن شركتنا ، حول كيفية تقييم تكلفة الهجمات وفهم ما إذا كنت بحاجة إلى منع الاحتيال على الإطلاق. أريد أن أخبرك كيف قمنا بجمع منع الاحتيال الخاص بنا ، والنماذج التي استخدمناها أعطت نتائج جيدة في الممارسة ، وكيف عملوا وماذا يمكن فعله لمنع هجمات الاحتيال.

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

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

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

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

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

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

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

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

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

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

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

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

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

لدينا خلفية تعمل أيضًا على نسخ حالة سمعة المستخدم مع Cassandra.
حافلة البيانات ، لا شيء سري ، أباتشي كافكا.

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

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

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

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

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

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

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

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

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

يمكننا جمع بعض البصمات من المتصفحات. الآن المتصفحات هي أنظمة معقدة للغاية ، ولديها العديد من الميزات المدعومة ، وهي تشغل JS ، ولديها إمكانات منخفضة المستوى مختلفة ، ويمكن جمع كل هذا ، كل هذه البيانات. يوجد على الشريحة مثال لإخراج إحدى مكتبات المصادر المفتوحة.
بالإضافة إلى ذلك ، يمكنك جمع بيانات حول كيفية تفاعل المستخدم مع خدمتك ، وكيفية تحريك الماوس ، وكيفية لمسه على جهاز محمول ، وكيف يقوم بتمرير الشاشة. يتم جمع هذه الأشياء ، على سبيل المثال ، بواسطة Yandex.Metrica.
في حالتنا ، توصلنا إلى استنتاج مفاده أنه يمكننا ربط سلوك المستخدم الحالي بالسلوك الذي تذكرناه مسبقًا.
, . ? , , , , . , . machine learning, decision tree, . Decision tree if-else, , . , . - , - — , , .

, , , - , , , Softbank, . , , . - , , , .
, , iTunes — , - , .
, , , .

. , ? , . , , , . , .
. , . . : . , .