
إضافة تصحيح الأخطاء للاستجابة للحوادث والتحقيق الرقمي الجنائي
SwishDbgExt هي إضافة تصحيح أخطاء من Microsoft WinDbg تعمل على توسيع مجموعة الأوامر المتاحة من Microsoft WinDbg، كما تقوم بإصلاح وتحسين الأوامر الموجودة. تم تطوير هذه الإضافة بواسطة Matt Suiche (@msuiche) – لا تتردد في التواصل عبر [email protected] لطلب المزيد من الميزات، أو عرض المساهمة، و/أو الإبلاغ عن الأخطاء.
تهدف SwishDbgExt إلى تسهيل الحياة لمطوري النواة، ومحللي الأعطال، وخبراء الأمن من خلال سلسلة من أوامر التصحيح، والاستجابة للحوادث، وتحليل الذاكرة. نظرًا لأن SwishDbgExt هي إضافة تصحيح WinDbg، فهذا يعني أنه يمكن استخدامها في جلسات تصحيح النواة المحلية أو البعيدة، والجلسات الحية التي تم إنشاؤها بواسطة Microsoft LiveKd، وكذلك على تفريغات الأعطال من Microsoft الناتجة عن شاشة الموت الزرقاء أو الأدوات الهجينة مثل Comae DumpIt.
مزيد من المعلومات على https://blog.comae.io/comae-2016-contest-swishdbgext-features-3c9a63c62209#.tnt1b9usx
يمكنك إما نسخ إضافة WinDbg في المجلد المقابل (x86 أو x64) الخاص بـ WinDbg أو تحميلها يدويًا باستخدام الأمر !load كما هو موضح أدناه. يرجى ملاحظة أنه لا يمكنك وجود مسافات أو علامات اقتباس في المسار الكامل لملف dll المستهدف ليتم تحميله.
!load X:\FullPath\SwishDbgExt.dll
kd> !load E:\projects\labs\SwishDbgExt\bin\x64\SwishDbgExt.dll;
SwishDbgExt v0.7.0 (Nov 2 2016) - Incident Response & Digital Forensics Debugging Extension
SwishDbgExt Copyright (C) 2016 Comae Technologies FZE - http://www.comae.io
SwishDbgExt Copyright (C) 2014-2016 Matthieu Suiche (@msuiche)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
إذا كنت ترغب في تحديث قالب WinDbg الخاص بك إلى قالب أكثر توافقًا مع DML، يمكنك استيراد ملف windbg_template.reg المرفق مع الحزمة مباشرة.
يعرض معلومات حول أوامر الإضافة المتاحة.
هذا الأمر سيعطيك قائمة بجميع الأوامر إذا لم تحدد أي وسيطة، وسيعطيك قائمة بمعلمات أمر موجود إذا تم تحديده كوسيطة.
عرض دوال الاستدعاء
البحث عن فتحات الكود المستخدمة
عرض سجل الأوامر في وحدة التحكم
عرض بيانات اعتماد المستخدم (مستند إلى mimikatz الخاص بـ gentilwiki)
عرض قائمة ببرامج التشغيل.
!ms_drivers سيعرض قائمة ببرامج التشغيل المحملة حاليًا.
في هذا المثال، إليك بعض برامج التشغيل المحملة وقت الانهيار في هذا التفريغ النواة:
باستخدام هذا الأمر، يمكننا أيضًا عرض معلومات IRP التفصيلية حول برنامج تشغيل معين:
في الصورة أعلاه يمكننا رؤية موقع مكدس الإدخال/الإخراج الخاص ببرنامج التشغيل داخل IRP الخاص بـ e1cexpress.sys. هنا يمكننا رؤية رموز الوظائف مثل IRP_MJ_CREATE الذي يفتح كائن الجهاز الهدف، مما يشير إلى أنه موجود ومتاح لعمليات الإدخال/الإخراج.
تفريغ مساحة الذاكرة على القرص
عرض العمال في قائمة الانتظار (Ex queued workers).
الأمر !exqueue لا يعمل بشكل صحيح على Windows 8، لذلك تم تطبيق نسخة عاملة. تمامًا مثل الأمر الأصلي، يعرض هذا الأمر قائمة انتظار العمال الجاري تشغيلها.
إعادة تعيين التقسيم في WinDbg (إصلاح "16.kd>")
عرض GDT.
!ms_gdt يعرض جدول الواصف العام (Global Descriptor Table). لاحظ على x64 أن كل محدد يكون مسطحًا (0x0000000000000000 إلى 0xFFFFFFFFFFFFFFFF). يمكن أن يكون هذا الأمر مفيدًا جدًا للتحقق من أي ربط مشبوه في GDT، حيث أن محاولة القيام بذلك على x64 ستستدعي فحص خطأ. وذلك لأن x64 يحظر ربط GDT.
عرض قائمة بخلايا التسجيل (registry hives).
ms_hivelist يعرض قائمة بخلايا التسجيل.
يمكننا النظر مباشرة إلى خلية (على سبيل المثال \Registry\Machine\Software) لرؤية مفاتيحها الفرعية وقيمها وما إلى ذلك:

عرض IDT.
!ms_idt يعرض جدول واصف المقاطعة (Interrupt Descriptor Table). مشابه جدًا لـ GDT، إذا تم ربط IDT على نظام x64، فسيستدعي فحص خطأ. وذلك لأن Microsoft قامت (برمجيًا) بتنفيذ منع ربط IDT باستخدام برنامج تشغيل وضع النواة الذي يعترض عادةً استدعاءات IDT ثم يضيف معالجة خاصة به. لهذا السبب في الصورة أعلاه، نرى 'لا' على مدى البصر.
تحليل مساحة الذاكرة وإرجاع مؤشر تقييم البرامج الضارة (MSI) - (مبني على عمل Frank Boldewin)
مسح سجل الإقلاع الرئيسي (MBR)
عرض معلومات الشبكة (المقابس، الاتصالات، ...)
عرض قائمة الكائنات
عرض قائمة العمليات.
!ms_process هو نسخة محسنة من !process و !dml_proc.
من الأمور الجميلة التي يمكنك ملاحظتها أدناه هو استخدام لغة ترميز التصحيح (DML) مع الأوامر. جميع الأوامر المسطرة هي في الواقع روابط لأوامر.
على سبيل المثال أدناه، يمكنك رؤية ناتج /vads /scan لمسح واصفات العنوان الافتراضي (VAD). يمكنك ملاحظة أن عمودًا واحدًا يعطي "مؤشر تقييم البرامج الضارة" والذي يمكن أن يكون مفيدًا للكشف عن الشيل كود أو heap-spray.
في لقطة الشاشة أدناه، يمكنك رؤية درجة عالية بشكل غير طبيعي في عدة VADs – بسبب استخدام heap spray. بمجرد النقر على النتيجة، سيتم تشغيل خوارزمية المسح.
خوارزمية المسح مبنية على أداة Frank Boldewin's OfficeMalScanner.
وتعيد لك معلومات حول مكان الشيل كود:
يمكن استخدام خيار /scan أيضًا على الدوال المصدرة لمعرفة ما إذا تم تعديل جدول عناوين التصدير (EAT) أو إذا تم تعديل البرولوج الخاص بالدالة.
اختبارات مماثلة متاحة لـ SSDT (!ms_ssdt).
قراءة كتلة التحكم الرئيسية (key control block)
قراءة عقدة المفتاح (key node).
كان الأمر !reg في WinDbg مصدر إحباط لفترة طويلة، بسبب بعض الأخطاء. لهذا السبب، تمتلك SwishDbgExt وظائف مستكشف التسجيل الخاصة بها لمحاولة جعل الوصول إلى بيانات التسجيل بسيطًا قدر الإمكان.
قراءة قيمة المفتاح
مسح وعرض خطافات NDIS المشبوهة
عرض قائمة الخدمات
عرض دوال جدول واصف الخدمة (SDT).
!ms_ssdt يعرض جدول توزيع خدمات النظام (System Service Dispatch Table). هذا الأمر مفيد جدًا في التحقيق في خطافات الروت كيت المشبوهة من خلال ما يعرف باسم التلاعب المباشر بكائنات النواة (DKOM). إذا رأيت روتينًا منخفض المستوى هنا يتم خطافه (مثل nt!NtEnumerateKey)، فهذا يمكن أن يساعدك في تحليلك بشأن احتمالية إصابة الروت كيت.
عرض المعلومات المتعلقة بمدير التخزين (ReadyBoost).
يسمح الأمر الحالي بإدراج ذاكرة التخزين المؤقت الحالية لـ ReadyBoost (يتطلب USB 3.0) المستخدمة من قبل نظام التشغيل، وكذلك عرض سجلات صفحات الذاكرة التي يديرها مدير التخزين. المعلمة: /cache
عرض قائمة بـ KTIMER.
!ms_timers يعرض هيكل KTIMER، وهو هيكل غير شفاف يمثل ويحتوي على كائنات مؤقتة متنوعة. يمكن أن يكون هذا الأمر مفيدًا لمعرفة أي برامج تشغيل أنشأت أي كائنات مؤقتة، وأي برامج تشغيل استدعت أي روتينات، إلخ.
عرض قائمة بـ VACBs المخزنة مؤقتًا
تشغيل/إيقاف وضع التفصيل (verbose mode)
ما يلي مبني على البحث الذي نشره Alex Ionescu والمتوفر هنا: https://github.com/ionescu007/lxss/
هذه الميزة متاحة على أنظمة Windows 10+ كميزة اختيارية يمكن تثبيتها عبر أمر PowerShell التالي:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
يمكنك قراءة المزيد حول النظام الفرعي لنظام Windows للينكس (WSL) على الروابط التالية:
نظرة عامة على النظام الفرعي لنظام Windows للينكس.
Instance 0xFFFFE704EEB8F010
GUID: {E29032FD-35D3-4C53-AB68-6BCEBDA7176F}
State: (1) [STARTED]
Creation Flags: 00000001
GlobalData: 0xFFFFF802ED4138A0
Root Handle: 80000834
Temp Handle: 80000838
Job Handle: 8000083c
Token: 80000818
Event Handle: 800008bc
Map Paths (0): 0xFFFFE704EF437920
VFS Context: 0xFFFFE704EEFC4710
Memory Flags: 0x2