Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
Shinigami — أداة فك تغليف ديناميكية | Kitploit
أدوات/GitHubGitHub/buzzer-re/shinigami
التحليل الديناميكي (عزل)الهندسة العكسيةشيل كودتحليل البرمجيات الخبيثةتحليل الملفات الثنائية
GitHubbuzzer-re/shinigami

Shinigami

أداة فك تغليف ديناميكية

عرض المستودع
152127منذ 2 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

Shinigami

Build Release

وصف الصورة

Shinigami هي أداة تجريبية مصممة لكشف وفك تغليف الزرعات الخبيثة (malware implants) التي يتم حقنها عبر تفريغ العملية (process hollowing) أو إجراءات التغليف العامة (generic packer routines).

كيف يعمل هذا؟

تعمل الأداة عن طريق ربط (hooking) دوال NT المتعلقة بتفريغ العملية (Process Hollowing) ووضع علامة حارس الصفحة (page guard bit) على صفحات الذاكرة القابلة للتنفيذ الجديدة. تتيح هذه التقنية لـ Shinigami اكتشاف تغيّرات تدفق التنفيذ غير المباشرة، التي تسببها عادةً شيفرة القشرة (shellcode) أو الكود المفكوك التغليف، والتي غالبًا ما تدل على وجود برمجيات خبيثة. يُنشئ Shinigami الملف التنفيذي الهدف في حالة معلّقة (suspended) ويحقن مكتبة DLL تُسمى "Ichigo". تقوم هذه المكتبة تلقائيًا بربط جميع الدوال الضرورية لاكتشاف الزرعة واستخراجها. وبمجرد استخراج الأثر (artefact) بالكامل، تقوم الأداة بقتل العملية.

مهم: هذه أداة فك تغليف ديناميكي ويجب عدم تشغيلها على جهازك الشخصي أو في مختبر التحليل الساكن (static analysis)

طرق فك التغليف الحالية

تفريغ العملية (Process Hollowing)

تعتمد الطريقة الأساسية لـ Shinigami في استخراج الزرعات المحقونة باستخدام تفريغ العملية على ربط دالّتين من دوال NT: NtResumeThread و NtWriteVirtualMemory. وإليك كيف تعمل:

  • ربط NtResumeThread

    • يفحص Shinigami جميع الذاكرة المخصصة مسبقًا عبر NtAllocateVirtualMemory للتحقق مما إذا كانت تحتوي على توقيع ترويسة DOS. إذا وُجدت، فإنه يستخرج ملف PE البعيد، ويصححه بحيث تكون الأقسام (sections) بمحاذاة صحيحة، ويحفظه على القرص بالتنسيق filename_dumped.bin.
  • ربط NtWriteVirtualMemory

    • يكتشف Shinigami ما إذا كان الملف التنفيذي يحاول كتابة ملف PE في العملية البعيدة عن طريق ربط NtWriteVirtualMemory. إذا تم العثور على ملف PE، يتم استخراجه باستخدام مؤشر Buffer ويُحفظ على القرص باسم filename_before_written.bin، ويُستخدم هذا الخيار فقط إذا تم تمرير العلم --stop-at-write.

مفكك التغليف العام (Generic unpacker)

وحدة فك التغليف العامة في Shinigami تضع علامة بِت PAGE_GUARD على مناطق الذاكرة المخصصة حديثًا، وتطبّق هذا البِت أيضًا إذا تم استبدال حمايات أي منطقة ذاكرة موجودة بشيء قابل للتنفيذ. وباستخدام صفحات الحارس (guard pages)، يمكنها تتبّع منطقة الذاكرة التي سيُستخدم لتخصيص شيفرة قشرة أو صور PE.

لكل شيفرة قشرة يتم اكتشافها، يحفظ Shinigami شيفرة القشرة الخام نفسها على القرص. كما يقوم بفحص منطقة الذاكرة هذه للعثور على أي ملفات PE ويحفظها أيضًا. يتعامل Shinigami مع كل تنفيذ مختلف لشيفرة القشرة كمرحلة جديدة، ولهذا في النهاية، سيكون لديك في مجلد عملك ملفات باسم filename_shellcode_STAGENUM.bin or .exe.

الاستخدام

توفر الأداة عدّة خيارات:

root@kitploit:~
Usage: Shinigami [--help] [--version] [--output VAR] [--stop-at-write] [--verbose] [--only-executables] [--exported VAR] program_name

Positional arguments:
  program_name                  Name of the program to execute

Optional arguments:
  -h, --help                    shows help message and exits
  -v, --version                 prints version information and exits
  -o, --output                  Directory to dump artefacts
  --stop-at-write               Unhollow: Stop the execution when the PE file is being to be written
  --verbose                     Display a verbose output
  -p, --only-executables        Only extract PE artefacts
  -e, --exported                Exported Function: Choose a exported function to execute if the target is a DLL (rundll will be used)

بعض الخيارات المهمة هي:

-o, --output: يحدد الدليل الذي سيتم فيه حفظ المستخرجات. افتراضيًا، سيتم حفظ المستخرجات في مجلد باسم output في مجلد العمل الحالي. يمكنك تحديد مجلد مختلف عن طريق تمرير مساره كوسيط.

--stop-at-write: تُستخدم هذه الوسيطة أثناء فك تغليف عملية مُفرَّغة. عندما يكتشف Shinigami أن ملف PE يُكتب في العملية المُفرَّغة، سيوقف التنفيذ ويحفظ ملف PE المستخرج. يمكن أن يكون هذا الخيار مفيدًا إذا أردت تجنّب تنفيذ العملية المُفرَّغة بالكامل واكتفيت باستخراج الكود المفكوك التغليف.

--verbose: يعرض مخرجات مفصّلة (verbose). يمكن أن يكون هذا مفيدًا لتصحيح الأخطاء أو لفهم الآليات الداخلية لـ Shinigami.

مثال للاستخدام:

إلغاء التفريغ (Unhollow)

اختبار ضد Dridex

بعد اكتمال الاستخراج، يتم قتل العملية وسيكون لديك (آمل ذلك) ملف PE المستخرج:

الزرعة المُفرَّغة

سيتم تفريغ الزرعة المكتشفة وفق التنسيق الموضح في قسم طرق الكشف.

فك التغليف

فك تغليف مُحمِّل عشوائي موصوف هنا

في المثال أعلاه، اكتشف Shinigami تلقائيًا سلوك مُحمِّل عام واستخرج جميع شيفرات القشرة والصور المنفّذة داخله، دون الحاجة إلى أي مفاتيح خاصة لتفعيل أو تعطيل روتين فك التغليف. كان ذلك ممكنًا لأن Shinigami يشارك بعض الدوال مع وحدة إلغاء التفريغ، مستخدمًا خطافات (hooks) مشتركة مقدمة من مكتبة Gancho.

Emotet

فك تغليف DLL الخاص بـ Emotet

يدعم Shinigami أيضًا ملفات DLL ولديه القدرة على إعادة بناء الملفات الثنائية المحقونة باستخدام ترويسات DOS منفصلة (detached DOS headers). ومن الجدير بالذكر أن عينات البرمجيات الخبيثة مثل Emotet تستخدم هذه التقنية للتهرب من فاحصات PE في الذاكرة. يكتشف Shinigami هذه الأجزاء المفقودة (ترويسة DOS) ويستخدم استدلالات (heuristics) لإعادة بنائها.

التثبيت

احصل على نسختك المفضلة من صفحة الإصدارات.

البناء والتطوير

سيكون من الرائع أن تساعد في هذا المشروع، لذا إن أردت، إليك التبعيات والخطوات:

  • ثبّت Visual Studio >= 2019 مع حِمل عمل C++ (C++ workload).
  • ثبّت Zydis، وهو مفكك تعليمات برمجية (disassembler) سريع وخفيف لمعماريتي x86/x86-64، وأنصح باستخدام طريقة vcpkg.
    • يُستخدم Zydis للتأكد من أن ربط واجهات البرمجة (API hooking) أكثر دقة ولضمان عدم فقدان أي opcode عند النسخ.
  • افتح ملف الحل Shinigami.sln في Visual Studio ثم قم ببناء/تعديل المشروع.

يرجى فتح issue أو طلب سحب (pull request) لأي تغييرات ترغب في إجرائها.

الخلاصة

صورة التميمة الرائعة هذه مستوحاة من Bleach وتم توليدها بواسطة Dall-E.

تنزيل الأداة