تحليل جنائي لإكتشاف الفرق بين إضافة مستخدم من قبل CLI أو GUI

الفكرة لهذه التدوينة جائت بعد أن قام أحد المتابعين (azeemnow) لـ #DFIR على تويتر بطرح السؤال حول كيف يمكننا أن نعرف هل قام المُخترق بإضافة مستخدم على نظام ويندوز من CLI أم من GUI؟

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

الخطوات التي قمت بها ولكن ليست بالترتيب المذكور وذلك لكي أخلق لك عزيزي القاريء جو من التشويق والتجربة بنفسك، هي:
1- قمت بتشغيل cmd.exe بصلاحيات Administrator وقمت بتنفيذ الأمر الذي بالأسفل لإضافة مستخدم جديد سميته cmduser وكلمة السر له هي cmduser كذلك:
net user cmduser cmduser /add

2- بعد ذلك ذهبت الى لوحة التحكم (Control Panel) في نظام الويندوز ومن ثم الى User Account ومن هناك قمت بإضافة مستخدم أسميته guiuser.

الآن الفكرة التي كانت في مخيلتي هي إنه يمكنني من خلال تتبع السجلات الخاصة بالنظام (system logs) أن أحصل على أدلة كافية تقودني للتفريق بين المستخدم الذي تم عمله من سطر الأوامر وبين المستخدم الذي تم عمله من داخل لوحة تحكم النظام، لكن للأسف تبيين إنه لا يمكن معرفة ذلك بهذه الطريقة! فبعد أن أطلعت على السجلات، تبيين إنه لا فرق بتاتاً بين كلا العمليتين سوى التاريخ، وبدون شك إسم المستخدم 🙂 حيث في برنامج عرض الأحداث (Event Viewer)، قام النظام بتسجيل الحدث رقم 4720 والذي يعني “إنشاء حساب مستخدم جديد” (A user account was created) لكلا الحالتين. وكما أسلفت، لكي لا تعرف عزيزي القاريء أيهما تم إنشاءه أولاً، فإنه المستخدم الأول (بغض النظر عن إسمه حالياً) تم إنشاءه بتاريخ 1/7/2014 4:40:02 pm بينما المستخدم الثاني تم إنشاءه بتاريخ 1/7/2015 4:40:30 pm.

صديقنا azeemnow كان قد عمل ما يسمى بـ super timeline وذلك لتوضيح تواريخ الأحداث وترتيبها “تسلسلها”، ولكن هذا لم يجدي الكثير من النفع!

قمت بالتواصل والدردشة مع هارلان (keydet89)، أحد أفضل الكتاب بمجال التحليل الجنائي الالكتروني في نظام الويندوز وسألته عن الأمر، فأخبرني أن أبحث وأتأكد من ملفات الـ prefetch (المزيد عنه لاحقاً في تديونة آخرى) الخاصة بكل من net.exe و net1.exe وتاريخ آخر تنفيذ لهما. حيث إنهما سوف يظهران قبل بداية إضافة المستخدم من سطر الأوامر (cmd.exe) بقليل من الوقت (إلا لو قام المخترق بالعمد بتأخير الأمر). هنا قمت بعمل إستخراج لكلا الملفين (prefetch) بواسطة FTK Imager ومن ثم أستخدمت أداة بسيطة كتبت بلغة بايثون لـ جين مايكل (jmichel_p) وذلك لتحليل الـ prefetch الخاص بـ net.exe و net1.exe.

من خلال النتائج الخاصة بملف NET.EXE prefetch، تبيين التالي:
net-prefetchمن خلال النتائج الخاصة بملف NET1.EXE prefetch، تبيين التالي:
net1-prefetch

الآن بعد القيام بربط الأحداث مع بعضها البعض:
1- نتائج الأحداث (السجلات)
2- نتائج ملفات Prefetch

يمكننا أن نفترض بإنه المستخدم الذي تم إنشاءه بتاريخ 2015-01-07 14:40:02، هو المستخدم الذي تم إضافته من سطر الأوامر (cmd.exe).

الآن وماذا عن المستخدم الذي تم إنشاءه من لوحة التحكم؟ هنا أقترح علي هارلان أن أتحقق من مداخل الـ ShellBags (المزيد عنه لاحقاً في تديونة آخرى) الخاصة بالمستخدم الذي قام بعملية الإنشاء للحسابات. هنا قلت مع نفسي إن هذه أفضل فرصة لتجربة أداة أريك (EricRZimmerman) والتي قام بالإنتهاء منها قبل فترة ليسطة بعيدة أسماها ShellBagsExplorer. يمكن تحميلها من هنا.

قمت كذلك بعملية سحب الملف UsrClass.dat الخاص بالمستخدم الذي قام بعملية الإنشاء (لا تنسى عزيزي القاريء يمكن معرفة من قام بذلك من السجلات نفسهم) ومن ثم قمت بتحليله من خلال الأداة التي ذكرتها ShellBagsExplorer. الأداة سهلة الإستخدام ورائعة للغاية وأنصح كل من يهتم بمجال التحقيقات الجنائية الالكترونية أن يقوم بتجربتها. الأداة قامت بتسهيل كل شيء من خلال عرض النتائج على شكل شجيري، ومن هناك وجدت إن المستخدم قام بتشغيل لوحة التحكم ومن ثم لوحة إدارة المستخدمين (User Accounts) في تاريخ 1/7/2015 2:40:20 pm، كما هو مبيين في الصورة أدناه:
sbe1-useraccountsمن خلال ذهابه الى هذه اللوحة قام بالذهاب من هناك الى صفحة إدارة الحسابات (Manage Accounts) بتاريخ 1/7/2015 2:40:22 pm، كما هو مبيين بالصورة أدناه:
sbe2-manageaccounts
بعد ذلك قام المستخدم بتشغيل صفحة إضافة مستخدم جديد (Create New Account)، حيث قام هو/هي بإضافة الحساب بتاريخ 1/7/2015 2:40:30 pm، كما هو مبيين في الصورة أدناه:
sbe3-createuser

الآن بعد القيام بربط الأحداث مع بعضها البعض، كما فعلنا سابقاً:
1- الاحداث التي وجدناها في برنامج Events Viewer
2- الاحداث التي وجدناها في ShellBags Explorer
تثبت بإنه المستخدم الثاني الذي تم إنشاءه بتاريخ 1/7/2015 4:40:30 pm، هو المستخدم الذي تم عمله من خلال لوحة التحكم GUI وليس من سطر الأوامر CLI.

كذلك لو قمنا بعمل تحليل زمني (timeline) لجميع ما تم ذكره، فإنه يمكننا تأكيد ما تم ذكره بالأعلى، وذلك لأننا سوف نجد تسلسلهم الزمني وراء بعض.

هذا كل ما لدي في هذا الموضوع، وإن شاء الله نلتقي مع مواضيع آخرى في هذا المجال في القريب العاجل.

نبذة عن الكاتب

علي (B!n@ry). دكتوراة في أنظمة الحاسوب. يعمل كأستاذ جامعي في قسم علم الحاسوب. مختص في التحقيقات الجنائية الالكترونية والإستجابة للحوادث الالكترونية (DFIR)، أمن الشبكات وتحليلها، وكذلك أمن أنظمة التشغيل المختلفة. حاصل على العديد من الشهادات التقنية، وسابقاً كان يعمل كمختص في جدر النّار، أنظمة كشف الاختراق، ادارة الثغرات والترقيعات، حماية الأنظمة، فحصوصات الاختراق، وتطبيق السياسات. مسؤول سابق عن متابعة وتطبيق (PCI DSS).

التعليقات:

اترك تعليقاً | عدد التعليقات: (7)

  1. يقول محمد عباس:

    Good one

    keep the hard work up

    all the best

  2. يقول عبدالله:

    جزاك الله خير يادكتور .. مقال شيق.
    لكن سؤال: مالفائدة من معرفة طريقة إنشاء المخترق للمستخدم سواء من GUI أو CLI؟
    هل سيساعد هذا في شيء؟

    • يقول dr_pc:

      اخى الكريم عبد الله
      الفائدة ان اكتر المستخدمين يقومون با اضافة مستخدم على طريق (GUI ( Graphical User Interfac
      واجهة المستخدم الرسومية

      اما لو اضفت يوزر عن طريق (CLI (command-line interface
      سطر الاوامر فى نظام ويندوز
      شائعأ تم اختراق نظامك .

      مقال اكتر من رائع

  3. يقول محمد زكريا:

    شكراً دكتور علي على هذه التدوينة القيّمة.

  4. يقول عبدالكريم:

    يعطيك العافية دكتور علي، شرح جميل ومفصل، ما قصرت

  5. الموضوع أكثر من رائع ما شاء الله لا قوة الا بالله, إستمر أخي في الكتابة.

  6. يقول MR_LINUX0:

    مقال اكثر من رائع ما شاء الله لا قوة الا بالله,

أكتب تعليق