تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
anti-debug using job objects
#1
طريقة جميلة كمحاولة منع التنقيح عن طريق خيار Attach.
الطريقة المعتمدة هي انشاء job object للعملية الحالية و اعطائها ذاكرة محدودة...

رابط المقالة:
https://secret.club/2021/01/20/diet-process.html

اوامر المثال كاملة:
#include <ntdll.h>
#include <stdio.h>

int main() {
    HANDLE job = nullptr;
    NtCreateJobObject(&job,
                      MAXIMUM_ALLOWED,
                      nullptr);

    NtAssignProcessToJobObject(job,
                               NtCurrentProcess());

    JOBOBJECT_EXTENDED_LIMIT_INFORMATION limits;
    limits.ProcessMemoryLimit  = 0x1000;
    limits.BasicLimitInformation.LimitFlags = JOB_OBJECT_LIMIT_PROCESS_MEMORY;

    NtSetInformationJobObject(job,
                              JobObjectExtendedLimitInformation,
                              &limits,
                              sizeof(limits));
    printf("Try to Attach me !\n");
    getchar();
    return 0;
}

المرفقات تحتوي على الملفات التنفيذية للنواتين 32 بت و 64 بت للتجربة...


الملفات المرفقة
.rar   poc.rar (الحجم : 1.4 KB / التحميلات : 5)
أعضاء أعجبوا بهذه المشاركة : siddigss , rce3033 , TeRcO , Cyperior , vosiyons
#2
حقا طريقة جميلة.
وبالطبع يمكننا تفاديها بالوقوف عند دالة NtSetInformationJobObject والتعديل على المدخل أو بالأحرى ما يؤشر إليه المؤشر (pointer).
في المثال المرفق (32 بت) بتعديل البايت رقم 0x26A من 01 إلى 00 (وهي جزء من قيمة limits.BasicLimitInformation.LimitFlags) يمكننا تفادي هذه الطريقة.
أعضاء أعجبوا بهذه المشاركة : rce3033 , TeRcO , Cyperior , vosiyons


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم