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

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

لا يتم ارتكاب الجرائم الإلكترونية من قبل الهواة ، ولكن من قبل مجموعات منظمة من عشرات الأشخاص. يفعلون ذلك بدافع الاهتمام. هذا عمل تجاري. إنهم ليسوا رجالًا يرتدون أغطية سوداء يكتبون "BLACK K0d" ليلاً أمام الشاشة. هؤلاء هم الأشخاص الناشطون اجتماعيًا الذين يعملون في مكاتب في بلدان مختلفة من العالم.
كانت مسيرتي المهنية لدرجة أنني كنت لعدة سنوات مسؤولة عن أمن محيط الشبكة وحماية تطبيقات الويب. حول ما أسفرت عنه تجربتي في تلك الفترة ، سأخبر في هذه المقالة.
إذا كنت تعمل / عملت في شركة اتصالات أو بنك أو مزود أو كنت مطورًا في شركة كبيرة ، وخاصة إذا كنت شخصًا أمنًا ، فأنت تعلم أن الأمان في شركة لديها أكثر من 10-15 موقعًا هو قمامة ، جحيم ، موت.
دعونا نحاول تحسين الوضع. يقولون أن الأمن عملية.
وهناك الكثير من العمليات.
اذكرها بإيجاز:
- إدارة التهديد
- إدارة الضعف
- إدارة المخاطر
- إدارة التصحيح
- إدارة الهوية والوصول
- توعية أمنية
- إدارة موفر الأمان
وآخرون.
لن نعتبر الأنواع المدرجة في المقالة ، هتاف.
هناك العديد منها ، وتختلف الفوائد اعتمادًا على حجم المنظمة وأنواع الأصول وخطورتها.
سنتحدث عن عملية ستفيد حتى الشركات الصغيرة.
من متجر عبر الإنترنت مع مئات الآلاف من روبل من الإيرادات ، إلى شركة ضخمة بها عشرات مراكز البيانات.
كشف الضعف
من أجل فهم ما هي الطرق للقضاء علينا ، دعونا ننظر إلى أنفسنا من خلال عيون المهاجم.
يتكون التحليل الأمني من عدة مراحل. لكل مرحلة سأقدم مجموعة أساسية من المرافق التي يمكنك استخدامها.
- جمع المعلومات حول عناوين IP والنطاقات والشبكات الفرعية هو هدفنا. بدلاً من الطرق على الباب الأمامي ، من الأفضل العثور على نقاط دخول أقل أمانًا.
dnsrecon, Fierce, Censys, reverse-PTR-lookup.
- تحليل خدمات الثغرات المعروفة (CVE). مآثر عامة شائعة بالنسبة لهم.
Vulners, exploit-DB, NIST, CVEdetails
- تحليل خدمات كلمات المرور الضعيفة.
potator, hydra
- تحليل نقاط الضعف لتطبيقات الويب
Zap, Burp, w3af, Arachni
رائع
حسنًا ، رائع. لدينا طريقة وأدوات للتحقق من موقع واحد.
سيستغرق الأمر عدة أيام للتحقق + تحليل خدمة واحدة ، لمعرفة ذلك بدقة - أسبوع أو أكثر.
ليس رائعًا
المشكلة هي أنه قد يكون لدينا أكثر من خدمة. وعلى سبيل المثال / 20 شبكة فرعية.
4096 عنوان. يمكن أن يكون لكل منها 65535 خدمة. ليس رائعًا.
نعم ، هناك حلول آلية. Qualys ، Acunetix ، Nessus ، هناك بائعون محليون. تحليل ما هي جيدة وسيئة ، أقترح أن أترك لمقال آخر.
لم يحلوا مشاكلي. قررت أنني بحاجة إلى إصلاحه. ترك وظيفته ولمدة عام تقريباً غادر هو ورفاقي من أجل التنمية.
كيفية كتابة ماسح ضوئي
لنبدأ بمتطلبات النظام الذي أردنا الحصول عليه:
- يقوم بالاستطلاع ويحدد المجالات المستهدفة والملكية الفكرية
- يراقب محيط الشبكة. يرى عندما يظهر عنوان جديد في النطاق أو يظهر نطاق فرعي في الموقع المحمي
- يتحقق باستمرار من العناوين ، ويرى عند فتح وإغلاق منافذ الشبكة
- يكتشف نقاط الضعف ومآثر بانر / CPE المعروفة
- يلتقط كلمات مرور ضعيفة
- يبحث عن أخطاء تكوين التطبيق ونظام التشغيل
- يجد الثغرات في CMS والمكونات الإضافية الخاصة بهم
- العثور بشكل تفاعلي على XSS و SQLi و XXE و RCE و LFI و RFI وتلك الموجودة في OWASP إلى 10 والتي يمكن البحث عنها تلقائيًا
- يفعل ذلك أكثر من مرة ، لكنه يتحقق باستمرار من مواردي ويتفاعل إذا ظهرت ثغرات جديدة
المستخدمون هم أصحاب نطاقات شبكة كبيرة ، أي أولئك الذين لديهم 10 تطبيقات ويب أو أكثر.
من الضروري توفير فحص متوازي يوميًا لنقاط الضعف على الويب ، وكلمات المرور الضعيفة ، وأخطاء التكوين ، وإظهار الثغرات الصادرة لمئات من الملكية الفكرية ومواقع الويب.
للقيام بذلك ، استخدم نظامًا متدرجًا أفقيًا. يمكنك إضافة عقد جديدة وأنواع جديدة من الماسحات الضوئية إليها على الطاير. يستخدم الماسح الضوئي الآن 7 عقد وينقسم إلى موقعين متفاعلين في ألمانيا والولايات المتحدة الأمريكية. إذا كنت مهتمًا ، فسوف نكتب عن هذا في مقال آخر.
فكرنا في كيفية كتابة مثل هذا الماسح الضوئي. لقد أدركنا أن الكتابة من الصفر مثل هذا النظام لا معنى له. لقد تطلب ذلك خبرة وفهمًا واسعين لمنصات مختلفة ، وقاعدة بيانات خاصة به لبصمات الشبكة ، وقاعدة بيانات خاصة به من CVE واستغلالها ، ونظامًا ضخمًا مخصصًا لتحليل أمان تطبيقات الويب.
قررنا حيثما يسمح ترخيص المنتج باستخدام تطورات مفتوحة المصدر. هناك مكونات مغلقة المصدر ، ولكنها مجانية للاستخدام التجاري. هناك عدد غير قليل من المشاريع المفتوحة المصدر المكتوبة ذاتيا والشوكة.
لذا ، لدينا حوالي 20 تطبيقًا مختلفًا ، وهي المكونات اللازمة لتغطية مستويات L3-L7 من أجل البنت التلقائي.
واجهة للماسح الضوئي
يقبل كل برنامج نصي أو تقسيم PoC أو ثنائي معلمات مختلفة لبدء المسح. غير مناسب للغاية. أردت الحصول على تنسيق موحد لتشغيل أي ماسح ضوئي محتمل.
فكرنا في ما يحتاج أي ماسح ضوئي محتمل إلى معرفته لتحديد الهدف. جمعت جدول.
نوع الاختيار | بيانات الإدخال |
---|
التكامل مع قواعد بيانات إكسبلويت واستغلال CVE | البائع: المنتج: الإصدار (CPE) |
استغلال PoC للخدمة | IP ، المنفذ ، CVE |
Brutilka | IP ، المنفذ ، بروتوكول طبقة التطبيق |
ماسح CMS | منفذ المجال |
ماسح ثغرات الويب | المجال أو منفذ IP |
نقاط الضعف على شبكة الإنترنت PoC | URI |
ماسح المنفذ | IP |
بعد فحص nmap الأولي والمكون الإضافي الذي يصل إلى تفاصيل CVE لكل مضيف ، نحصل على مجموعة من هذه الكائنات. نسميها البيانات الوصفية.
تمثيل JSON:
{ "cves": [], "service": "mysql", "protocol": "tcp", "target": "example.com", "time": "1513941789", "product": "mysql", "vendor": "mysql", "version": "5.1.63-community", "port": 3306, "uri": "" }
لكل منفذ على الهدف ، نحصل على مجموعة من هذه البيانات الوصفية. الآن أنت بحاجة إلى فهم أي من الماسحات الضوئية لدينا تريد العمل لهذا الغرض.
جميع الماسحات الضوئية لها أصل - ScanManager ، مما يجعلها أنيقة:
product(scanners, metadata_as_list)
إنه يأخذ جميع الخدمات ولكل منها يتحقق من جميع الماسحات الضوئية الممكنة.
يوفر كل ماسح ضوئي وظيفة تحدد ما إذا كان يريد العمل مع مثل هذا الهدف.
لنتحدث عن ماهية الماسح الضوئي.
تم النظر في ثلاثة خيارات:
- تنفيذ كل ماسح ضوئي كخدمة صغيرة تدعم RPC لدينا
- قم بتنفيذ كل ماسح ضوئي كخدمة واستخدم ناقل رسائل شائع
- الخيار الثالث
لكننا كسالى للغاية وأدركنا أنه في حالة الخيارين الأولين ، بالإضافة إلى الماسحات الضوئية نفسها ، ستحتاج أيضًا إلى نوع من البنية التحتية للنشر ، وكتابة RPC ، والتقاط أخطاء هذا RPC. بالإضافة إلى أننا أردنا كتابة كل شيء في Python.
لقد جربنا عدة حلول. نظرنا في مشاريع مماثلة لإدارة الماسحات الضوئية ، مثل Yandex Molly و Minion من Mozilla. نظرنا في كيفية عمل w3af، Zap. يحتوي Burp على بنية مكون إضافي مثيرة للاهتمام.
قررنا أنه يجب تنفيذ كل ماسح ضوئي كدالة قابلة للتسلسل في الثعبان. سيسمح لك هذا بتخزينها مباشرة في rabbit-mq ، وتسليمها بسرعة إلى العقد المختلفة ، وتنفيذها تلقائيًا. يمكننا إضافة ماسحات ضوئية جديدة دون الحاجة إلى إنشاء التطبيقات ومشاركتها. في الواقع ، حصلنا على خدمة لتنفيذ الوظائف الموزعة وغير المتزامنة على python.
يجب أن يكون الماسح الضوئي الذي تم تشغيله على منصتنا كائنًا موروثًا من الفئة الأساسية للماسح الضوئي.
يجب على أي ماسح ضوئي قبول كائن من نوع البيانات الوصفية كإدخال وإرجاع كائنات من نوع الضعف.
class Scanner(object): name = "scanner_base" vuln_type = "default_vuln_type" user_options = {} Vulnerability_body_fields_to_web_interface = [] def __init__(self, opts, target, metadata): self.metadata = metadata self.opts = opts self.target = target @staticmetod def circuit(Metadata): ''' . Metadata. CVE. ''' return [Vulnerability(), Vulnerability()] def check_start_condition(self): ''' , Target True, . False. ''' return True class ScannerError(Exception): def __init__(self, value): self.value = value def __str__(self): return repr(self.value)
كانت المهمة التالية التي واجهتنا هي إنشاء تنسيق موحد يمكننا من خلاله تخزين مخرجات أي ماسح ضوئي. سواء كان حصاد الويب ، أو دليل brutilka أو استغلال PoC memcached.
قررنا عدم تسييج التنسيقات الخاصة بنا ، ولكن استخدام معيار الصناعة - تنسيق CVE. نحن نثري CVE مع البيانات الوصفية لضعفنا لسهولة التخزين والاسترجاع. لتخزين البيانات الخاصة بالماسح الضوئي ، أضف حقل النص. يتم تحديد المفاتيح من الجسم التي يجب عرضها في واجهة الويب بواسطة الماسح الضوئي.
class Vulnerability(object): ''' body . ''' def __init__(self, target, port, scanner, text, VulnerabilityTypes, Score, protocol, UpdateDate=None, scan_date=None, Complexity=None, Access=None, CWEID=None, Authentication=None, Integ=None, PublishDate=None, Conf=None, ofExploits=0, Avail=None, CVEID=None, references=None, GainedAccessLevel=None, false_positive=False, fixed=None, body=None): scan_date = scan_date if scan_date is not None else calendar.timegm(gmtime()) references = references or [] body = body or {} self.name = self.construct_cve_name(VulnerabilityTypes, protocol, target, port, credentials, uri, params) self.data = { "target" : target, "port" : int(port), "Scanner": scanner, "Scan_date": scan_date, "Name": name, "UpdateDate": UpdateDate, "VulnerabilityTypes": VulnerabilityTypes, "Complexity": Complexity, "text": text, "Access": Access, "CWEID": CWEID, "Hash": sha1(self.name.encode('utf-8')).hexdigest(), "Authentication": Authentication, "Integ": Integ, "PublishDate": PublishDate, "Conf": Conf, "ofExploits": ofExploits, "Score": Score, "Avail": Avail, "CVEID": CVEID, "References": references, "GainedAccessLevel": GainedAccessLevel, "FalsePositive": false_positive, "Fixed": fixed, "Body": body } @staticmethod def construct_cve_name(VulnerabilityTypes, protocol, target, port, credentials, uri, params):
حاولنا منح مؤلفي الماسحات الضوئية أقصى قدر من الحرية في التنفيذ.
وندعوك للمشاركة في التطوير.
كيفية كسب المال على مآثر.
نريد أن يحصل الأشخاص المهتمون بالأمن ، ومؤلفو الأدوات والنصوص ، والباحثون ، على فرصة تحقيق الدخل القانوني لنتائج عملهم.
يسمى الماسح METASCAN. إذا كان لديك نصوص برمجية خاصة بك أو ثغرات PoC لمدة يوم واحد ، أو ربما أنت مؤلف الماسح الضوئي. أرسل لنا الوحدات في شكل الماسح الضوئي إلى david.ordyan@metascan.ru!
سندفع مكافآت لمؤلفي الوحدات على أساس شهري ونعلن قبول الوحدات حتى 30 نوفمبر.
سنقوم باختبارها من خلال تشغيل قاعدة عملائنا في أكثر من 2000 موقع وحساب عدد عمليات الكشف.
سيتلقى مؤلفو الماسحات الضوئية الثلاثة الأولى حسب عدد الثغرات الموجودة:
- 31337 روبل للمركز الأول.
- 13،370 روبل للمركز الثاني والثالث.
وسنقدم أيضًا عرضًا لإبرام العقود والحصول على مكافأة لاستخدام الماسحات الضوئية الخاصة بهم شهريًا ، حتى يجدوا نقاط ضعف.
بعد نوفمبر ، سنقوم بتوسيع البرنامج لاستقبال الماسحات الضوئية.
اكتب إلى david.ordyan@metascan.ru أو TG https://t.me/METASCAN
BB8E 3D9B 04FF 70C9 A260 CD45 E0BF 4EB4 9838 A7EC
ستظهر الأمثلة والرمز هنا