
इनडायरेक्ट क्लीन सिस्कॉल्स निष्पादित करना
HellsHall, HellsGate और अप्रत्यक्ष syscalls का एक संयोजन है।
सबसे पहले, HellsHall जाँचता है कि क्या syscall पता hooked है और निम्नलिखित bytes की उपस्थिति की जाँच करके syscall नंबर प्राप्त करने का प्रयास करता है:
0x4C, 0x8B, 0xD1, 0xB8 जो mov r10,rcx && mov eax,SSn को दर्शाते हैं। हर syscall इसी प्रकार शुरू होना चाहिए।
इस बिंदु पर, HellsGate केवल Syscall SSn (Syscall Number) को पकड़ता है और इसे सीधे उपयोग करता है, जिसके परिणामस्वरूप syscall ntdll.dll के address space के बाहर से कॉल किया जाता है। यह अपने आप में एक IoC है और इसका उपयोग ऐसे syscalls का पता लगाने के लिए किया जा सकता है। पता लगाने के उदाहरण:
हालाँकि, HellsHall syscall फ़ंक्शन के पते के पास एक syscall instruction खोजेगा और फिर इस को एक global variable में सहेज लेगा, जिस पर बाद में jump किया जाएगा, बजाय इस instruction को सीधे फ़ाइल से निष्पादित करने के। इससे syscall फ़ंक्शन address space के अंदर से निष्पादित होगा, केवल इतने अंतर के साथ कि यह unhooked होता है।
asmntdll.dllइस तकनीक को और बेहतर बनाने के लिए TartarusGate का उपयोग किया जा सकता है।


निम्नलिखित EDR को यह HellsHall Implementation का उपयोग करके बायपास करना, जो NtAllocateVirtualMemory, NtProtectVirtualMemory, और NtCreateThreadEx syscalls को RWX section के साथ उपयोग करता है।

Github repo यहाँ पाया जा सकता है।