
Performing Indirect Clean Syscalls
HellsHall هو مزيج من HellsGate واستدعاءات النظام غير المباشرة.
أولاً، يتحقق HellsHall مما إذا كان عنوان استدعاء النظام مربوطاً (hooked) ويحاول استرجاع رقم استدعاء النظام عن طريق التحقق من وجود البايتات التالية:
0x4C, 0x8B, 0xD1, 0xB8 والتي تمثل mov r10,rcx && mov eax,SSn. هكذا يجب أن يبدأ كل استدعاء نظام.
عند هذه النقطة، يقوم HellsGate ببساطة بالتقاط SSn الخاص باستدعاء النظام (رقم استدعاء النظام) ويستخدمه مباشرة، مما يؤدي إلى استدعاء نظام من خارج نطاق عنوان ntdll.dll. هذا يُعتبر مؤشر اختراق (IoC) بحد ذاته ويمكن استخدامه لكشف مثل هذه الاستدعاءات. أمثلة على الكشف:
ومع ذلك، سيبحث HellsHall عن تعليمة syscall بالقرب من عنوان دالة استدعاء النظام ثم يحفظ عنوان تعليمة استدعاء النظام هذه في متغير عام يتم القفز إليه لاحقًا بدلاً من تنفيذ هذه التعليمات مباشرة من ملف asm. سيؤدي هذا إلى تنفيذ دالة استدعاء النظام من داخل مساحة عنوان ntdll.dll مع الاختلاف الوحيد أنها غير مربوطه (unhooked).
يمكن استخدام TartarusGate لزيادة تحسين هذه التقنية.


تجاوز EDR أدناه باستخدام هذا التنفيذ من HellHall الذي يستخدم استدعاءات النظام NtAllocateVirtualMemory وNtProtectVirtualMemory وNtCreateThreadEx مع قسم RWX.

يمكن العثور على مستودع Github هنا