
أداة للمختبرين الاختراق للمساعدة في العثور على حلوى لذيذة، بواسطة @l0ss و @Sh3r4 (تويتر: @/mikeloss و @/sh3r4_hax)

Snaffler هي أداة لـ مختبري الاختراق و فِرق الأحمر للمساعدة في العثور على إبر الحلوى اللذيذة (معظمها بيانات اعتماد، لكنها مرنة) في كومة من أكوام القش المملة (بيئة Windows/AD ضخمة).
قد تكون مفيدة أيضًا لأشخاص آخرين يقومون بأشياء أخرى، لكنها ليست معدة صراحةً لتكون أداة "تدقيق".
آه، حسنًا. لكننا لسنا مسؤولين عن النتائج. لقد كتبنا كل هذه الأشياء الأخرى من أجلك، لكن لا بأس. نحن لسنا غاضبين، فقط خائبون.
snaffler.exe -s -o snaffler.log
بشكل عام - تحصل على قائمة بأجهزة الكمبيوتر التي تعمل بنظام Windows من Active Directory، ثم تنشر أطرافها اللاصقة إليها جميعًا لمعرفة أي منها يحتوي على مشاركات ملفات، وما إذا كان يمكنك قراءتها.
ثم تقوم المزيد من الأطراف اللاصقة بتعداد جميع الملفات في تلك المشاركات وتستخدم الذكاء الاصطناعي المُتَعَلَّم من القطع الأثرية لِلآلات لمعرفة أي منها قد يرغب فيه مخترق قذر مثلك.
في الواقع، لا تقوم بأي شيء من تعلم الآلة، لأن القيام بذلك بشكل صحيح سيتطلب بيانات تدريب، وهذا سيتطلب وقتًا هائلاً ليس لدينا. بدلاً من ذلك، مثل جميع مشاريع "تعلم الآلة" الجيدة، تستخدم فقط مجموعة ضخمة من عبارات if والتعبيرات النمطية.
هكذا!
إذا قمت "حرفيًا بتشغيل ملف EXE على جهاز منضم إلى المجال في سياق مستخدم المجال" (كما طُلب من الأشخاص القيام به مع Grouper2، فور تشغيلهم مع تشغيل جميع مفاتيح التصحيح/التفصيل بحيث يصدر عدة مئات من الميغابايت من تتبّع المكدس) فإنها لن تفعل شيئًا أساسيًا. هذه هي فكرتنا عن مزحةTM للأشخاص الذين لا يقرأون ملفات README، لأننا وحوش.
ومع ذلك... إذا أضفت التعويذات الصحيحة، فستفعل L.A.I.M. المذكورة أعلاه وستظهر مسارات الملفات حيث قد توجد الحلوى.
التعويذات الرئيسية هي:
-o يتيح إخراج النتائج إلى ملف. ربما تريد هذا إذا كنت لا تستخدم -s. على سبيل المثال: -o C:\users\thing\snaffler.log
-s يتيح إخراج النتائج إلى stdout فور العثور عليها. ربما تريد هذا إذا كنت لا تستخدم -o.
-v يتحكم في مستوى التفصيل، الخيارات هي Trace (الأكثر تفصيلاً)، Degub (أقل تفصيلاً، أخطاء أقل)، Info (أقل تفصيلاً، افتراضي)، و Data (النتائج فقط). على سبيل المثال: -v debug
-m يتيح ويُعيّن دليل إخراج لـ Snaffler لأخذ نسخة تلقائيًا (أو Snaffle... إذا شئت) من أي ملفات موجودة تعجبها.
-l الحد الأقصى لحجم الملفات (بالبايت) لسحبها. الافتراضي هو 10000000، أي حوالي 10 ميجابايت.
-i يعطل اكتشاف الكمبيوتر والمشاركة، ويتطلب مسارًا إلى دليل لإجراء اكتشاف الملفات فيه.
-n يعطل اكتشاف الكمبيوتر، ويأخذ قائمة مفصولة بفواصل من المضيفين أو ملف إدخال للقيام باكتشاف المشاركة والملفات عليها. لاحظ أنه في حالة توفير ملف، يجب أن يكون الإدخال مسارًا مثل C:\targets.txt أو .\targets.txt كمثال.
-y ينسق الإخراج بتنسيق TSV.
-z مسار إلى ملف تكوين يحدد كل ما سبق، وأكثر من ذلك بكثير! انظر أدناه لمزيد من التفاصيل. أعطه -z generate لإنشاء ملف تكوين نموذجي يسمى .\default.toml.
-t نوع السجل الذي ترغب في إخراجه. الخيارات المدعومة حاليًا هي plain و JSON. الافتراضي هو plain.
-x الحد الأقصى لعدد الخيوط المستخدمة. لا تضبطه أقل من 4 وإلا ستنكسر الأمور.
-p مسار إلى دليل مليء بملفات قواعد بتنسيق toml. سيقوم Snaffler بتحميل كل هذه بدلاً من مجموعة القواعد الافتراضية.
نأمل أن يساعد هذا المثال المشروح:
يجب قراءة هذا الإدخال في السجل تقريبًا من اليسار إلى اليمين كما يلي:
... وبقية السطر (باللون الرمادي) هي مقتطف صغير من السياق من الملف حيث تمت المطابقة.
في هذه الحالة وجدنا قيم validationKey و decryptionKey الخاصة بـ ASP.NET، والتي قد تسمح لنا بتنفيذ تعليمات برمجية عن بُعد RCE لتطبيق الويب عبر بعض اختراق إلغاء التسلسل. مرحى!
ملاحظة: بعد التقاط هذه الشاشة، أضاف Sh3r4 شيئًا لإضافة المستخدم الحالي واسم المضيف إلى كل سطر. لكنني لا أريد إعادة التقاط الشاشة.
تقوم كل طريقة سحرية من طرق العثور على الملفات L.A.I.M. بأشياء مثل:
البحث عن طريق تطابق امتداد الملف الدقيق، مما يعني أن أي ملف بامتداد يطابق قائمة الكلمات ذات الصلة سيتم إرجاعه. هذا مخصص لامتدادات الملفات التي تحتوي دائمًا تقريبًا على حلوى، مثل .kdbx، .vmdk، .ppk، إلخ.
البحث عن طريق تطابق اسم الملف الدقيق (غير حساس لحالة الأحرف). هذا مخصص لأسماء الملفات التي تحتوي دائمًا تقريبًا على حلوى، مثل id_rsa، shadow، NTDS.DIT، إلخ.
البحث عن طريق تطابق امتداد الملف الدقيق (قائمة كلمات أخرى) ثم 'grep' لمحتويات أي ملفات مطابقة لكلمات رئيسية معينة (قائمة كلمات أخرى). هذا مخصص لامتدادات الملفات التي تحتوي أحيانًا على حلوى ولكنك تعلم أنه من المحتمل وجود الكثير من القش لفرزه. على سبيل المثال، web.config يحتوي أحيانًا على بيانات اعتماد قاعدة البيانات، لكنه غالبًا ما يحتوي أيضًا على هراء تكوين IIS عادي بدون كلمات مرور. سيبحث هذا (على سبيل المثال) عن أي شيء ينتهي بـ .config، ثم يبحث فيه عن سلاسل تتضمن على سبيل المثال لا الحصر: connectionString، password، PRIVATE KEY، إلخ.
البحث عن طريق تطابق اسم الملف الجزئي (المزيد من قوائم الكلمات). هذا مخصص بشكل أساسي للعثور على Jeff's Password File 2019 (Copy).docx أو Privileged Access Management System Design - As-Built.docx أو ما شابه، عن طريق مطابقة أي ملف يحتوي اسمه على السلاسل الفرعية passw، handover، secret، secure، as-built، إلخ.
هناك أيضًا قوائم التخطي لتخطي جميع الملفات ذات امتدادات معينة، أو أي ملف يحتوي مساره على سلسلة معينة.
يستخدم Snaffler نظامًا من "المصنفات"، يقوم كل منها بفحص المشاركات أو المجلدات أو الملفات أو محتويات الملفات، ويمرر بعض العناصر إلى المصنف التالي، ويتجاهل البعض الآخر. يستخدم كل مصنف مجموعة من القواعد لتحديد ما يفعله بالعناصر التي يصنفها.
يمكن أن تكون هذه القواعد بسيطة جدًا، مثل "إذا كان امتداد الملف هو .kdbx، فأخبرني عنه"، أو "إذا كان المسار يحتوي على windows\sxs فتوقف عن النظر في الدلائل الفرعية والملفات داخل هذا المسار".
يمكن للقواعد أيضًا استخدام التعبيرات النمطية، والتي تسمح بمطابقة الأنماط المتطورة نسبيًا. هذا مفيد بشكل خاص عند فحص محتويات الملفات، على الرغم من أنه يجب توخي الحذر لتجنب التعبيرات النمطية ذات التأثير الكبير على الأداء. في البيئات الكبيرة، قد يتم التحقق من هذه القواعد ملايين المرات حرفيًا، لذلك يمكن تضخيم مشكلات الأداء البسيطة بشكل كبير.
القوة الحقيقية تكمن في قدرة Snaffler على ربط قواعد متعددة معًا، وحتى إنشاء سلاسل متفرعة. يتيح لنا هذا استخدام قواعد "رخيصة" مثل التحقق من أسماء الملفات وامتداداتها لاتخاذ قرار بشأن استخدام قواعد "باهظة الثمن" مثل تشغيل التعبيرات النمطية على محتويات الملفات، وتحليل الشهادات لمعرفة ما إذا كانت تحتوي على مفاتيح خاصة، إلخ. هذا هو ما يسمح لـ Snaffler بتحقيق فحص عميق للملفات عند الحاجة، بينما يكون سريعًا بشكل مدهش لأداة مكتوبة بلغة عالية المستوى مثل C#.