من المهم أن نلاحظ أن "لعبة" الهجوم والدفاع ، التي يلعبها المتسللون وأصحاب أنظمة الكمبيوتر ، هي لعبة غير شريفة. يكفي أن يخترق المهاجم النظام ويفوز مرة واحدة فقط. وأولئك الذين يدافعون لا يمكنهم الفوز إلا بالفوز دائمًا. الصعوبة الرئيسية هنا هي معرفة ما الذي تبحث عنه. ولكن بعد أن يعرف المدافع "الأبواب" الافتراضية التي يمكن للمتسلل إدخالها إلى نظامه ، يمكن حماية هذه "الأبواب" باستخدام آليات بسيطة إلى حد ما. أعتقد أن بساطة هذه الآليات في بعض الأحيان تقلل من أهميتها وهذا هو السبب في أن العديد من المدافعين عن أنظمة الكمبيوتر يغفلون هذه الآليات.
فيما يلي القواعد الأساسية لحماية الأنظمة التي سأفصح عنها في هذه المقالة. إنها بسيطة ، لكن هذا لا يعني أنه يمكنك نسيانها دون عقاب:
- (multi-factor authentication, MFA) , . Google GitHub, , VPN-. MFA — .
- , .
- , . .
- . , .
في ما يتعلق بمنع تسريب المعلومات السرية ومنع ظهور "ثغرات" في أنظمة الأمن ، يعمل مبدأ باريتو ، حيث ينتج عن 20٪ من الجهود 80٪ من النتيجة.
كيف يعمل المخترقون عندما يعثرون على كلمات مرور ومفاتيح سرية؟ ماهي الأدوات التي يستعملونها؟
يجد المتسللون بيانات سرية في ملفات جافا سكريبت
تنتشر مفاتيح API في جميع أنحاء الإنترنت. يمكن لأي شخص استخدامها. إنها حقيقة. غالبًا لا يوجد سبب محدد لإتاحة المفاتيح للجمهور. المطورين فقط نسيانهم في كل مكان. على سبيل المثال ، تدخل المفاتيح في الرمز للأسباب التالية:
- لأغراض التصحيح.
- لأغراض التنمية المحلية.
- في شكل تعليقات مخصصة لأولئك الذين سيدعمون المشروع لاحقًا.
يمكن العثور على كتل التعليمات البرمجية التي تشبه ما يلي في كثير من الأحيان على الإنترنت:
// DEBUG ONLY
// TODO: remove -->
API_KEY=t0psecr3tkey00237948
على الرغم من أن العديد من المتسللين يقرؤون ملفات JavaScript بأنفسهم ، إلا أنهم يبحثون في الغالب عن هذه الملفات باستخدام أدوات مثل meg ، ثم يتحققون مما يجدونها بحثًا عن أنماط المطابقة.
كيف يفعلون ذلك؟ بعد استخدام الماسح ، يبدو
megأنهم يبحثون عن سلاسل في الملفات التي تتطابق مع أنماط مختلفة. الشخص الذي أبدع meg، كتب برنامجًا ممتازًا آخر ، وهذا بالضبط هو المقصود. يطلق عليه gf وهو نسخة محسنة grep. في هذه الحالة ، يتيح استخدام gfالخيار عند بدء التشغيل truffleHogأو ، في متغير آخر من كتابته trufflehog، للأداة العثور على سلاسل عالية الانتروبيا التي تعتبر مفاتيح لواجهة برمجة التطبيقات. الشيء نفسه ينطبق على البحث عن سلسلةAPI_KEY... غالبًا ما تكون نتائج البحث عن مثل هذه السلسلة ناجحة (غالبًا).
غالبًا ما تكون هناك أسباب طبيعية تمامًا لظهور المفاتيح في الكود ، لكن هذه المفاتيح ليست محمية من الغرباء. اسمحوا لي أن أقدم لكم مثالا. استخدم عميل واحد عملت معه خدمة معلومات خرائط خارجية. يتم ذلك في العديد من المشاريع. من أجل تحميل معلومات الخريطة والعمل معها ، كان من الضروري إجراء مكالمات إلى واجهة برمجة التطبيقات المقابلة باستخدام مفتاح. لكن عميلي نسي تكوين الخدمة التي كان يستخدمها لتقييد المصادر التي يمكن للخدمة من خلالها تلقي الطلبات باستخدام هذا المفتاح المحدد. ليس من الصعب تخيل هجوم بسيط ، والذي يتمثل في استنفاد حصة استخدام الموارد لخدمة الخرائط عن طريق إرسال العديد من الطلبات إليها. هذا يمكن أن يكلف مستخدم مثل هذه الخدمة الكثير من المال. أو،حتى "أفضل" (من وجهة نظر المهاجم) ، يمكن أن يؤدي مثل هذا الهجوم إلى حقيقة أن تلك الأجزاء من مشروع العميل المرتبطة بالبطاقات ، ببساطة "تقع".
يستخدم المتسللون ملفات JS لأكثر من مجرد العثور على بيانات سرية. بعد كل شيء ، هذه الملفات هي رمز التطبيق الخاص بك ، والتي يمكن رؤيتها من قبل أي شخص مهتم بهذا الرمز. يمكن للمتسلل الجيد ، بعد قراءة الكود بعناية ، فهم طريقة تسمية الكيانات المستخدمة فيه ، ومعرفة المسارات إلى واجهة برمجة التطبيقات ، ويمكنه العثور على تعليقات قيمة. نتائج مثل هذه منسقة كقائمة من الكلمات التي يتم تمريرها إلى الماسحات الضوئية التلقائية. هذا ما يسمى "الفحص الآلي الذكي" ، حيث يجمع المتسلل بين الأدوات الآلية والمعلومات التي جمعوها حول مشروع معين.
فيما يلي تعليق حقيقي من الصفحة الرئيسية لمشروع واحد ، والذي يتحدث بنص عادي عن واجهات برمجة التطبيقات غير الآمنة التي يمكن لأي شخص الحصول منها على البيانات:
/* Debug ->
domain.com/api/v3 not yet in production
and therefore not using auth guards yet
use only for debugging purposes until approved */
▍ ماذا تفعل؟
- . . , , .
- API. , . , .
- , , . , , , , , , . , .
- , . . , .
grepgf. . , , . - -. , - . 100% . - — .
, -
يقوم أرشيف الإنترنت (المعروف أيضًا باسم "Wayback Machine") بتخزين لقطات دورية لمواقع الويب. يتيح لك هذا المشروع معرفة ما كان عليه الإنترنت منذ سنوات عديدة. تعتبر بيانات الأرشيف ذات أهمية كبيرة للقراصنة الذين يحتاجون إلى جمع معلومات حول مشروع معين. يمكنك فحص الملفات بحثًا عن المتغيرات القديمة من مواقع الويب باستخدام أدوات مثل waybackurls (استنادًا إلى waybackurls.py ). هذا يعني أنه حتى لو عثرت على مفتاح في كود الموقع وقمت بإزالته من هناك ، لكنك لم تقم بتدوير المفاتيح ، يمكن للقراصنة العثور على هذا المفتاح في الإصدار القديم من الموقع واستخدام هذا المفتاح لاختراق النظام.
إليك ما يجب فعله إذا وجدت مفتاحًا لا ينبغي أن يكون:
- أنشئ مفتاحًا مصممًا ليحل محل المفتاح المخترق.
- قم بتحرير نسخة جديدة من الكود الذي يستخدم المفتاح الجديد. يجب إعادة كتابة هذا الرمز بحيث لا توجد أسطر فيه تجعل من السهل التعرف على المفتاح.
- قم بإزالة أو إلغاء تنشيط المفتاح القديم.
▍ ليس أرشيف الإنترنت هو المكان الوحيد للعثور على المفاتيح
يمنح القانون القديم المهاجمين مجموعة متنوعة من المعلومات المهمة.
- مسارات سرية API. نحن نتحدث عن نقاط نهاية API غير المؤمنة والتي اعتقد المطور أنه لن يتم مشاركتها أبدًا. في حين أن المسارات التي يكتشفها المتسلل قد لا تكون مفيدة لهم ، يمكن أن تساعد هذه المسارات في فهم تصميم واجهة برمجة التطبيقات الخاصة بالمشروع واتفاقيات واجهة برمجة التطبيقات الخاصة به. بعد دخول كود الموقع حيز الإنتاج ، لن يكون لدى المطور طريقة لإخفاء هذا الكود من أعين المتطفلين. من المهم جدًا تذكر هذا.
- -. , API, . , . , , . , -. , , . , , . ,
shttps.
GitHub
جيثب هو منجم ذهب للقراصنة. إذا كنت تعرف مكان البحث ، يمكنك العثور على الكثير من الأشياء الشيقة باستخدام أدوات البحث البسيطة. إذا كان حساب GitHub لمؤسستك غير محمي بمصادقة متعددة العوامل ، فإن جميع موظفي المؤسسة ، دون استثناء ، يسيرون في ثغرات أمنية. من المحتمل جدًا أن يستخدم بعض الموظفين نفس كلمة المرور في كل مكان ، وأن كلمة المرور هذه قد تمت سرقتها بالفعل من خلال نظام آخر. يمكن للقراصنة المهتمين بمؤسسة معينة أتمتة البحث عن كلمات المرور المخترقة بسهولة ، ولكن ماذا يمكنني أن أقول ، يمكنه العثور على كلمات المرور هذه يدويًا.
يمكن إنشاء قائمة موظفي المؤسسة باستخدام تقنيات استخبارات مفتوحة المصدر (OSINT). يمكن لـ LinkedIn أو قائمة عامة لموظفي الشركة من GitHub مساعدة المهاجم في ذلك.
إذا قرر شخص ما ، على سبيل المثال ، اختراق شركة Tesla ، فقد يبدأ في دراسة الشركة من هذه الصفحة:
https://api.github.com/orgs/teslamotors/members
وحتى إذا كانت الشركة لا تستخدم GitHub كمنصة git ، فلا يزال هناك شيء مفيد يمكن العثور عليه على GitHub. يكفي أن يستخدم واحد على الأقل من موظفي الشركة هذه المنصة ، على سبيل المثال ، لمشروع منزلي. إذا ظهر شيء سري عن شركة ما في كود هذا المشروع (أو في تاريخ git) ، فسيكون هذا كافيًا لاختراق أنظمة هذه الشركة.
تتبع السجل الكامل للتغييرات التي تم إجراؤها على كل مشروع هو طبيعة git. في ضوء القضايا الأمنية ، تلعب هذه الحقيقة دورًا كبيرًا. بعبارة أخرى ، كل تغيير يتم إجراؤه على الكود بواسطة أي شخص لديه حق الوصول إلى أي من أنظمة المؤسسة يعرض تلك المؤسسة للخطر.
▍ لماذا يحدث هذا؟
- لا تقوم الشركات بفحص أنظمتها بحثًا عن نقاط الضعف.
- , , .
- , , ( , , 1%), ( — git, , , ).
- , . .
▍ GitHub
هناك شيء مثل "dorks" - استعلامات بحث خاصة تستخدم قدرات مختلفة لمحركات البحث للعثور على ما يتعلق ببيانات معينة. فيما يلي قائمة شيقة لعمليات البحث المشابهة لـ Google عن طريق استغلال db.com.
إذا كنت تريد التعمق في هذا الموضوع ، وأوصيك بذلك ، فقبل إعطائك قائمة مختصرة بالسلاسل المستخدمة للعثور على المفاتيح وكلمات المرور على GitHub ، أقترح عليك قراءة هذه المادة القيمة ، التي كتبها باحث أمن نظام موهوب. يتحدث عن كيف وماذا وأين يتم البحث على GitHub ، وكيفية استخدام dorks ، ويوضح بالتفصيل العملية اليدوية للعثور على البيانات السرية.
الطرق المستخدمة على GitHub ليست معقدة مثل تلك المستخدمة على Google. النقطة هنا هي أن GitHub ببساطة لا تقدم للمستخدم نفس إمكانات البحث المتقدم التي يوفرها Google. بغض النظر ، فإن البحث في مستودعات GitHub بشكل صحيح يمكن أن يصنع العجائب. حاول البحث في المستودع الذي تهتم به عن الأسطر التالية:
password
dbpassword
dbuser
access_key
secret_access_key
bucket_password
redis_password
root_password
وإذا حاولت البحث عن ملفات محددة باستخدام استعلامات مثل
filename:.npmrc _authأو filename:.htpasswd، فيمكنك تصفية نتائج البحث حسب أنواع تسرب البيانات. وهنا قطعة سلعة أخرى حول هذا الموضوع.
▍ تدابير التخفيف من المخاطر المرتبطة بـ GitHub
- اجعل فحص الكود الخاص بك بحثًا عن نقاط الضعف جزءًا من عملية CI. يمكن لأداة GitRob الممتازة مساعدتك في ذلك .
- . GitRob . ,
no-expand-orgs. - . GitRob, , 500 , ,
-commit-depth <#number>. - GitHub !
- , , , , . G Suite Active Directory. , .
بعد نشر هذه المادة ، أدلى بعض قرائها بتعليقات قيمة بشأن تعقيد كلمات المرور وتناوبها ، بالإضافة إلى استخدام حماية الأجهزة للمعلومات.
إليك تعليقات @ codemouse92 :
استخدم كلمات مرور معقدة وفريدة من نوعها حيثما يتم استخدام تسجيل الدخول بكلمة المرور. لكن ضع في اعتبارك أن كلمة المرور المعقدة ليست بالضرورة عبارة عن مزيج غامض من الأحرف والأرقام والأحرف الخاصة. أفضل استراتيجية الآن هي استخدام عبارات طويلة ككلمات مرور. أود أن أقدم ملاحظة واحدة حول مديري كلمات المرور. في حين أنه من الجدير بالتأكيد استخدام مثل هذه البرامج ، إلا أنه لا يزال من الأفضل استخدام كلمات المرور ، وهي عبارات يتذكرها المستخدمون ويمكن إدخالها بأنفسهم.
هذا ما يقوله المستخدم corymcdonald :
أينما أعمل ، يحصل الجميع على أجهزة مصادقة متعددة العوامل. يحتوي كل جهاز على جهازي YubiKey. بالإضافة إلى ذلك ، يستخدم كل فريق مدير كلمات المرور 1Password ، ولكل فريق متجر كلمات مرور خاص به. عندما يغادر الموظف الشركة ، يقوم فريق الدعم بتدوير كلمات المرور في كل قبو يمكن للموظف الوصول إليه. أنا شخصياً ، على سبيل المثال ، ارتكبت خطأً لا يغتفر عن طريق تحميل المفاتيح للوصول إلى AWS على GitHub. يوصى بفحص المواد باستخدام git-secrets قبل الالتزام . سيؤدي هذا إلى منع مشاركة ما يشبه المعلومات السرية.
قراصنة يستخدمون جوجل
الآن بعد أن أصبح لدينا فهم أساسي للأحمق ، يمكننا التحدث عن استخدام استعلامات بحث محددة على Google. هنا يمكنك أن تجد أشياء لا تصدق بمساعدتهم. يُعد Google محرك بحث قويًا يسمح لك ببناء استعلامات تصف السلاسل التي يجب ويجب ألا تكون موجودة في البيانات التي تبحث عنها. يسمح لك Google ، من بين أشياء أخرى ، بالبحث عن ملفات ذات امتدادات معينة ، ويمكن البحث عن مجالات وعناوين URL محددة. ألق نظرة على سلسلة البحث التالية:
"MySQL_ROOT_PASSWORD:" "docker-compose" ext:yml
تم تصميم هذه السلسلة للبحث عن الملفات ذات الامتداد
yml، علاوة على ذلك ، يجب أن تكون هذه الملفات docker-composeالتي غالبًا ما يقوم المطورون بتخزين كلمات المرور فيها. ليست كلمات مرور فريدة بشكل خاص. حاول تشغيل بحث Google عن هذه السلسلة. سوف تتفاجأ بما تجده.
قد تبحث سلاسل البحث الأخرى المثيرة للاهتمام عن مفاتيح RSA أو بيانات اعتماد AWS. إليك مثال آخر:
"-----BEGIN RSA PRIVATE KEY-----" ext:key
هنا ، أمامنا إمكانيات لا حصر لها. تعتمد جودة البحث فقط على مستوى إبداع الباحث ومدى إلمامه بالأنظمة المختلفة. إليك قائمة كبيرة من Google Dorks إذا كنت تريد التجربة.
يفحص المتسللون الأنظمة التي يهتمون بها
عندما يكون باحث أمني (أو متسلل متحمس) مهتمًا جدًا بنظام معين ، يبدأ في دراسة النظام بعمق. يتعرف عليها عن كثب. إنه مهتم بنقاط نهاية API ، واصطلاحات التسمية للكيانات ، وخصائص تفاعل الأجزاء الداخلية للأنظمة ، وتوافر الوصول إلى إصدارات مختلفة من النظام إذا تم استخدام إصدارات مختلفة منه في وقت واحد.
تتمثل الطريقة غير الجيدة لتأمين واجهات برمجة التطبيقات في تعقيد مسارات الوصول وإخفائها باستخدام شيء مثل منشئ الأحرف العشوائية. هذا ليس بديلا عن آليات الأمن الحقيقي. يحاول الباحثون الأمنيون العثور على مسارات وصول غير آمنة للأنظمة ، ونقاط نهاية API ، على سبيل المثال ، باستخدام أدوات للبحث "الغامض" عن الثغرات الأمنية. تستخدم هذه الأدوات قوائم الكلمات ، وتبني مسارات منها ، وتتحقق من صحة هذه المسارات من خلال تحليل الردود التي تتلقاها عند محاولة الوصول إليها. مثل هذا الماسح لن يجد نقطة نهاية ، يتم تمثيل المسار إلى مجموعة عشوائية من الأحرف. لكن هذه الأدوات رائعة في تحديد الأنماط وإيجاد نقاط النهاية التي نسيها مالكو النظام أو لم يعرفوها أبدًا.
تذكر أن "الأمان من خلال التعتيم" ليس هو أفضل طريقة لحماية الأنظمة (على الرغم من أنه لا يجب تجاهلها تمامًا).
هذا هو المكان الذي يأتي فيه GitHub dorks ، الذي تحدثنا عنه أعلاه ، لمساعدة مجرمي الإنترنت. معرفة القواعد المستخدمة عند إنشاء مسارات إلى نقاط نهاية النظام (على سبيل المثال ، شيء مثل
api.mydomain.com/v1/payments/...) يمكن أن يكون مفيدًا للغاية للمتسلل. البحث في مستودع GitHub للشركة (ومستودعات موظفيها) عن سلاسل مرتبطة بواجهة برمجة التطبيقات (API) سيجد غالبًا مسارات تتضمن أحرفًا عشوائية.
لكن "السلاسل العشوائية" ، مع ذلك ، لها مكانها في الأنظمة. دائمًا ما يكون استخدامها أفضل من استخدام التسلسلات من معرّفات الموارد ، مثل السلاسل
usersوفي المسارات المؤدية إلى واجهة برمجة التطبيقات orders.
هنا مستودع SecLists الرائع ، والذي يحتوي على العديد من السلاسل المستخدمة عند تسمية الكيانات. يتم استخدامه من قبل الجميع تقريبًا في صناعة حماية البيانات. غالبًا ما يتم تعديل هذه المواد لنظام معين. أداة أخرى يمكن استخدامها للعثور على المسارات "المشفرة" هي FFuf ، وهو برنامج منطق غامض سريع للغاية مكتوب بلغة Go.
النتيجة
غالبًا ما يتم تجاهل المشكلات الأمنية في الشركات الناشئة. عادةً ما يعطي المبرمجون والمديرون الأولوية لسرعة التطوير وتكرار إصدارات المنتجات ، مما يضحي بالجودة والسلامة. يمكنك هنا مشاهدة إدراج معلومات سرية في الكود الذي يدخل في المستودعات ، واستخدام نفس المفاتيح في أماكن مختلفة من النظام ، واستخدام مفاتيح الوصول حيث يمكنك استخدام شيء آخر. قد يبدو أحيانًا أن شيئًا كهذا يسمح لك بتسريع العمل في المشروع ، ولكن بمرور الوقت يمكن أن يؤدي إلى عواقب وخيمة للغاية.
في هذا المنشور ، حاولت أن أوضح لك كيف يمكن بسهولة أن تصبح السلاسل التي تبدو محمية من خلال تخزينها في مستودع خاص عامة. الشيء نفسه ينطبق على نسخة من المستودع ، صنعها موظف حسن النية ولم تكن مخصصة لعيون المتطفلين ، ولكن تبين أنها عامة. ومع ذلك ، يمكنك بناء أساس لعملية آمنة باستخدام أداة مشاركة كلمة المرور الآمنة ، واستخدام مستودع مركزي للأسرار ، وتكوين سياسات أمان كلمة المرور ، والمصادقة متعددة العوامل. سيسمح هذا ، دون تجاهل الأمان ، بعدم إبطاء سرعة العمل في المشروع.
عندما يتعلق الأمر بحماية المعلومات ، فإن فكرة أن السرعة هي أهم شيء لا تعمل بشكل جيد هنا.
عادةً ما يكون اكتساب المعرفة بكيفية عمل المتسللين خطوة أولى جيدة جدًا نحو فهم ماهية أمن المعلومات. هذه هي الخطوة الأولى نحو تأمين الأنظمة. عند تأمين الأنظمة ، ضع في اعتبارك الأساليب المذكورة أعلاه لاختراقها ، وحقيقة أن المتسللين يستخدمون مجموعة محدودة إلى حد ما من هذه الأساليب. من المستحسن النظر من وجهة نظر الأمن على الإطلاق في كل شيء يرتبط بطريقة أو بأخرى بنظام معين ، بغض النظر عما إذا كان يتعلق بآليات خارجية أو داخلية.
قد يُنظر إلى أمان النظام في بعض الأحيان على أنه ليس مهمًا للغاية ، ولكنه يستغرق وقتًا طويلاً ومحمومة. لكن كن مطمئنًا ، فإن الخطوات البسيطة التي تتخذها لتأمين أنظمتك يمكن أن توفر لك الكثير من المتاعب.
كيف تحمي أنظمتك؟
