
مجموعة أدوات الصندوق الرملي للأجهزة

مجموعة أدوات الصندوق الرملي العتادي
غالباً ما تستخدم البرمجيات الخبيثة تقنيات مضادة للآلات الافتراضية، والتي يمكن أن تتفاوت في صعوبة اكتشافها ومعادلتها. بينما يُعتبر دمج إجراءات مضادة للكشف في مختبراتنا خياراً شائعاً، يجب علينا أيضاً التفكير في استخدام صندوق رملي عتادي حقيقي، حتى لو بدا ذلك غريباً. من خلال الاستفادة من مشروع PCILeech الرائع والوصول العتادي عبر DMA، توفر XenoboxX مجموعة من الأدوات لمهام التحليل، مثل تفريغ الذاكرة المخصصة ديناميكياً والبحث عن مؤشرات الاختراق (IoC). تسمح لنا هذه الأدوات بحقن الكود على مستوى النواة عبر DMA، مما يجعل الاكتشاف أكثر صعوبة بشكل كبير ويعطي منظوراً جديداً للتحليل.
XenoboxX يركز حالياً على ويندوز 64 بت، ولكن في المستقبل يمكن تمديده لمنصات أخرى أيضاً.
تم تقديم الأداة في DEFCON 32 Demo Labs: هنا
بالطبع نحن نتحدث عن بيئات مادية، لذا:
قم بتركيب لوحة DMA على الحاسوب الهدف. قم بتوصيل اللوحة بحاسوبك المضيف
قم بتثبيت PCILeech على حاسوبك المضيف: إذا كنت لن تقوم بالتطوير أو إجراء تعديلات، يمكنك فقط تثبيت الملفات الثنائية (أعتقد أن هذا هو الخيار الأكثر شيوعاً) المتاحة في صفحة الإصدارات
قم بتثبيت XenoboxX على حاسوبك المضيف: كما في النقطة السابقة، قد ترغب فقط في الملفات الثنائية المجمعة مسبقاً (في مجلد pcileech)
حقن وحدة PCILeech:
./pcileech kmdload -kmd WIN10_X64_3
سيعيد هذا عنوان ذاكرة ستستخدمه لتشغيل shellcodes (مثال 0x7ffff000)
تشغيل shellcodes الخاصة بـ XenoboxX:
./pcileech wx64_dumpalloc -0 0xbac -s "\\??\C:\temp\test" -kmd 0x7ffff000
حالياً يحتوي XenoboxX على 3 shellcodes من نوع wx64:
wx64_dumpalloc: يلتصق بـ PID معين ويقوم بتفريغ جميع تخصيصات الذاكرة التي قامت بها العملية. إذا تم تغيير أعلام الحماية لمنطقة ذاكرة موجودة، يتم تفريغ المنطقة مرة أخرى (أحياناً تقوم البرمجيات الخبيثة بتبديل الحمايات لتجنب التفتيش)wx64_memgrep: يبحث عن سلاسل محددة من قبل المستخدم في الذاكرة المخصصة من قبل PID. يمكن أن يلتصق للعملية لفترة زمنية محددة.wx64_strings: يبحث عن جميع السلاسل في الذاكرة المخصصة من قبل PID. يمكن أن يلتصق للعملية لفترة زمنية محددة.ملاحظة: كنهج تجريبي، يتجنب Xenobox حالياً أي hooks على الإطلاق، ويتم كل الكشف من خلال الاستقصاء (polling). من الواضح أن لهذا بعض العيوب، لكنه خيار تصميمي في الوقت الحالي، من أجل أن يكون خفياً قدر الإمكان.
مثال:
./pcileech wx64_dumpalloc -0 0xbac -s "\\??\C:\temp\test" -kmd 0x7ffff000
-0 PID للالتصاق به بصيغة ست عشرية (مطلوب)-1 وقت مراقبة العملية. الافتراضي مضبوط على 0x20-s مجلد الإخراج، حيث سيتم حفظ تفريغات الذاكرة والسجلمثال:
./pcileech wx64_memgrep -0 0x564 -1 0x80 -s "Hello, 123" -2 1 -kmd 0x7ffff000
-0 PID للالتصاق به بصيغة ست عشرية (مطلوب)-1 وقت مراقبة العملية. الافتراضي مضبوط على 0x20-2 البحث عن سلسلة ASCII (0x0) أو WIDE (0x1). الافتراضي مضبوط على 0x0-3 بحث حساس لحالة الأحرف (0x1) أو غير حساس (0x0). البحث الحساس أسرع. الافتراضي مضبوط على 0x0-4 البحث فقط في صفحات الذاكرة القابلة للكتابة (0x0) أو الكل (0x01). الافتراضي مضبوط على 0x0-s سلسلة البحث (بين علامتي اقتباس مزدوجتين)مثال:
./pcileech wx64_strings -0 0x19e0 -1 0x100 -3 0x15 -kmd 0x7ffff000
-0 PID للالتصاق به بصيغة ست عشرية (مطلوب)-1 وقت مراقبة العملية. الافتراضي مضبوط على 0x20-2 البحث عن سلسلة ASCII (0x0) أو WIDE (0x1). الافتراضي مضبوط على 0x0-3 الحد الأدنى لطول السلسلة. الافتراضي مضبوط على 0xA-4 البحث فقط في صفحات الذاكرة القابلة للكتابة (0x0) أو الكل (0x01). الافتراضي مضبوط على 0x0إذا كنت ترغب في تعديل أو إعادة بناء سكريبتات XenoboxX، تذكر أنك تحتاج إلى بعض الملفات من مستودع PCILeech، وبالتحديد:
wx64_common.hwx64_common.cshellcode64.exeفي تعليقات كل ملف .c، ستجد تعليمات التجميع. كمثال:
cl.exe /O1 /Os /Oy /FD /MT /GS- /J /GR- /FAcs /W4 /Zl /c /TC /kernel wx64_common.c
cl.exe /O1 /Os /Oy /FD /MT /GS- /J /GR- /FAcs /W4 /Zl /c /TC /kernel wx64_dumpalloc.c
ml64.exe wx64_common_a.asm /Fewx64_dumpalloc.exe /link /NODEFAULTLIB /RELEASE /MACHINE:X64 /entry:main wx64_dumpalloc.obj wx64_common.obj
shellcode64.exe -o wx64_dumpalloc.exe "DUMP ALLOCATED MEMORY \n===============================================================\nREQUIRED OPTIONS: \n -0 : Process PID to open. Example '-0 0x0fe0'. \nOPTIONAL OPTIONS: \n -1 : Process monitoring timeout Default: 0x20. Example: '-1 0x100'. \n -s : Specify output folder/file for dumps. Example: \"\\??\C:\temp\test\"\n===== RESULT OF DUMPALLOC OPERATION ======================%s\nNTSTATUS : 0x%08X \n===============================================================\n"
XenoboxX ليس أداة التحليل النهائية: هذا نهج محدد للغاية أجده مفيداً لتحليل محدد جداً: لا أعتقد أن هذه الأداة ستحل محل سير عملك الحالي، ولكن ربما ستجدها مفيدة لتلك البرمجية الخبيثة السيئة تحديداً.
المساهمات والاقتراحات مرحب بها أكثر من أي وقت مضى. يرجى فتح issue إذا كانت لديك أسئلة أو pull إذا كنت ترغب في المساهمة. شكراً!