إلهاء ، أو تدقيق مع القرصنة

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


في الواقع ، بدأ كل شيء بمراجعة أمنية - ... ، مقابلة ، تبحث تحت العدسة المكبرة لكل شيء وكل شيء ، والبحث والعمل على الثغرات والاختناقات المحتملة للتسلق من خلال (هناك ومن هناك) ، ... ، وفي الواقع استخلاص المعلومات. حيث حصل العميل في النهاية على نتيجة مخيبة للآمال بالنسبة له - "درجة C مع امتداد".


دعونا نحذف الكلمات التي كان عمال أمن تكنولوجيا المعلومات يحمرونها أمام أعينهم ، لكن الرسالة الغنائية العامة هي أنني أرمي اتهامات لا أساس لها ، وأن كل شيء مغلق ، ومفتاح CSO في جيبي تحت قلبي.


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


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


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


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


هل أنت مخترق أم لا ؟! (في الواقع ، لا ، أنا مطور ، وإلا فهي مجرد هواية).


لن أطيل في مزيد من المناقشة لفترة طويلة - كما هو الحال دائمًا ، أقنعت عامل المال والوقت (أي في الواقع نفس المال).


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


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


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


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


على سبيل المثال تم الاستلام مبدئيًا ، وتم التعبير عن المهام - دعنا نذهب ...


الخطوة الأولى هي جمع المعلومات حول "العملاء" - من وماذا وأين ومتى.


لن أكون مشتتًا جدًا هنا ، فالمقالة لا تدور حول ذلك تمامًا ، لذلك سأقول فقط - لقد استقرت على شخص اجتماعي جميل ، مع Facebook وزملائه ، بما في ذلك قناته الخاصة على youtube (YouTube ، Vasya!) ، والعديد من المشاريع مفتوحة المصدر (في المجموعة و وامتلاك) ومجرد نشاط مساهمة عملاقة (يسأل ، لكنه يعمل بشكل عام في المكان الرئيسي) .


لا يمثل اكتشاف hoo-hoo اليوم بشكل عام مشكلة على الإطلاق (في مكان ما استخدم اسمي الحقيقي في مكان يحمل لقبًا ، وفي مكان ما حصلت على عنوان IP وكيل من الشركة وتم تكوين الصورة) ، ولكن لا أحد يخفيها حقًا.


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


حسنًا ، كالمعتاد ، ذات مساء ، سقط البيت نائماً ، تفل واحد في الصندوق ، يفقد منزلنا مرة أخرى :) في تلك الدردشة ، وجدت لقبًا مألوفًا كمستخدم نشط لديه اتصال أطول من 12 ساعة (إذا حكمنا من خلال السجل بقطع الاتصال / إعادة الاتصال الوسيط ، لأن وكيل الشركة هو شيء من هذا القبيل ، ولكن أكثر من نصف يوم منذ الاتصال الأول) ، من عنوان IP الذي أحتاج إليه أي مع تسجيل الدخول للنموذج max.mustermann@proxyext.our-company.example.com .


أي أن عميلنا لديه يوم - 24 ساعة ، أو على الأرجح (لأن ساعتين مرت منذ رسالته الأخيرة) ، ببساطة لم يقم بإيقاف تشغيل الكمبيوتر العامل وترك عميل IRC نشطًا.


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


على أي حال ، كان لدي بعض الوقت لأربح الكمبيوتر ، أو بالأحرى عميل IRC لـ "ضحيتنا".


عدم العثور على ثقب واحد معروف في هذا الإصدار المحدد (ذي الصلة بالمناسبة في ذلك الوقت) من عميل IRC ، مسلحًا بـ ida ، ollydbg ، إلخ. ونظر إلى المصدر (الرعب الهادئ ، Vasya!) ، بدأ في البحث عن نوع من الضعف الذي سيسمح له على الأقل بتنفيذ شيء هناك ، مع التركيز على الأقل على التحكم عن بعد في عميل IRC (ونتذكر حول المكونات الإضافية).


وقد وجد ، حتى بسرعة نسبيا!


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


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


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


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


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


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


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


تكرار العملية برمتها ، وانتظار المطلوب >>> مرة أخرى نظرت إلى نافذة أخرى ووجدت أنه لا يوجد شيء غير ضروري في الدردشة (ما زلت عبقريًا) ، قررت مواصلة الاختبار.
الرسالة from glob import glob as ls; ls('*') from glob import glob as ls; ls('*') ورأيت بسرور الإجابة كقائمة بالمجلدات والملفات الموجودة في مجلد التطبيق.


صحيح ، لقد رأيت نفس الرسالة في نافذة العميل المهاجم المرسلة إلى كنيتي. اضطررت أيضًا إلى وضع 0 بايت (NTS) في بداية السطر بعد إرسالها إلي.


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


دعنا نذهب ...


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


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


الخطوة الأولى هي التحقق فقط في حالة وجودنا على الإطلاق.


 >>> import os; os.environ['userdomain'] 

والجواب:


 'OUR-COMPANY' >>> 

حسنًا ، كل شيء ، الأيدي غير مرتبطة ... دعنا نذهب.


بعد التحقق من وجود نص صغير يتم قفل تسجيل الدخول ، بعد أن هدأت قليلاً ، قررت أن أرى ما هو متاح على الكمبيوتر بشكل عام:


 >>> from glob import glob as ls; ls(r'C:\Program Files\*') 

وفي الإجابة ، عدم تصديق حظه ، من بين العديد من الأشياء المثيرة للاهتمام رأيت ما يلي:


 [...,'C:\\Program Files\\TeamViewer',...] >>> 

على سبيل المثال ليست هناك حاجة لإجراء إيماءات إضافية - لا تحتاج إلى تنزيل أي شيء وتجميع والبحث عن مجلد حيث يمكنك كتابته بالكامل دون انتهاك أي سياسات.


ثم طار في الوقت نفسه:


 >>> import subprocess; subprocess.call([r'C:\Program Files\TeamViewer\TeamViewer.exe']) 

حسنًا ، بعد الجواب العائد:


 0 >>> 

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


...


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


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


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


حسنًا ، كما يقولون في ألمانيا ، "Man sieht sich immer zweimal im Leben" ، وهو ما يعني "تأكد من الالتقاء مرة أخرى".

Source: https://habr.com/ru/post/ar416767/


All Articles