
Indirect Dynamic Syscall, SSN + Syscall address sorting via Modified TartarusGate approach + Remote Process Injection via APC Early Bird + एक बलिदान प्रक्रिया को लक्ष्य प्रक्रिया के रूप में उत्पन्न करता है + (ACG+BlockDll) उत्पन्न प्रक्रिया पर शमन नीति + PPID spoofing + TIB से Api resolving + API हैशिंग
विंडोज़ को लक्ष्य करने वाला एक अनुकूलन योग्य ड्रॉपर टूल।
नुकसान: यदि थ्रेड्स फिर से शुरू हो जाते हैं, तो इवेंट लॉगर के निलंबन के दौरान हुई सभी घटनाएँ फिर से लॉग हो जाती हैं!
इसलिए, उन्हें मारने के बारे में सोचा!
"यह निलंबन से अधिक आक्रामक है, लेकिन निर्णय हमेशा ऑपरेटर पर निर्भर करता है। इसके अलावा, थ्रेड्स को मारना कर्नेल स्तर पर लॉग हो जाता है" - @SEKTOR7net
सीधे VS कंपाइलर के माध्यम से:


./compile.bat
PS C:> .\x64\Release\indirect.exe
[!] गलत!
[->] सिंटैक्स: .\x64\Release\indirect.exe <PPID को स्पूफ करने के लिए>
https://github.com/reveng007/DarkWidow/assets/61424547/62a90c5b-84af-4389-8ddc-9f7926debdcf

TIB:
GS और FS रजिस्टर:
PEB LDR संरचना:
BlackHat - What Malware Authors Don't Want You to Know - Evasive Hollow Process Injection द्वारा @monnappa22
उपरोक्त लिंक से प्रक्रिया मेमोरी का एक चित्र:

labs.cognisys.group से, @D1rkMtr
द्वारा एक ब्लॉग:

TIB -> TEB -> PEB -> Nt API हल करें और API हैशिंग
#include <stdint.h>
#include <stdio.h>
#include <Windows.h>
DWORD64 djb2(const char* str)
{
DWORD64 dwHash = 0x7734773477347734;
int c;
while (c = *str++)
dwHash = ((dwHash << 0x5) + dwHash) + c;
return dwHash;
}
int main(int argc, char** argv)
{
if (argc < 2)
{
printf("[!] गलत!\n");
printf("[->] सिंटैक्स: .\\%s <NTFuncName>\n\n", argv[0]);
return 1;
}
const char* string = argv[1];
DWORD64 hashvalue = djb2(string);
printf("हैश मान: 0x%llX\n", hashvalue);
return 0;
}
ACG(मनमाना कोड गार्ड)/BlockDll शमन नीति:

PPID स्पूफिंग डिटेक्शन:
Moneta डिटेक्शन और PESieve डिटेक्शन:\
Moneta:

PESieve:

Capa स्कैन:

इम्प्लांट प्रक्रिया का थ्रेड स्टैक कैसा दिखता है:
| इम्प्लांट प्रक्रिया | वैध Cmd प्रक्रिया |
|---|---|
![]() | ![]() |
इससे यह निष्कर्ष निकलता है कि अप्रत्यक्ष syscall POC में ntdll.dll की मेमोरी में रिटर्न निर्देश को निष्पादित करके, रिटर्न पते को सफलतापूर्वक स्पूफ किया जा सकता है, ntdll.dll को कॉल स्टैक के शीर्ष पर रखा जा सकता है और EDR उच्च वैधता की व्याख्या करेगा। - @VirtualAllocEx DirectSyscall Vs Indirect Syscall से
साथ ही, @peterwintrsmith का धन्यवाद!


SeDebugPrivilege सेट करना:
यहाँ से:
यहाँ तक:

इवेंट लॉग थ्रेड्स को मारना:



एक कम गंभीरता वाले लॉग को छोड़कर कोई महत्वपूर्ण अलर्ट नहीं बनाया गया!

एक कम गंभीरता वाला लॉग => APC इंजेक्शन (पहले की तरह)

एक और जो
SeDebugPrivilegeसेट करने के लिए एक मध्यम गंभीरता वाला लॉग हुआ।

सिंथेटिक फ्रेम थ्रेड स्टैक स्पूफिंग की अवधारणा जोड़ी।सिंथेटिक फ्रेम थ्रेड स्टैक स्पूफिंग लागू करने के बाद स्टैक इस तरह दिखता है।

यह NT api थ्रेड स्टैक है

यह शेलकोड (वैसे, यह कस्टम नहीं है, यह Havoc शेलकोड है :)) थ्रेड स्टैक है।
शेलकोड विकास के लिए, मैंने हावोक और इस नीचे दिए गए कॉन्फ़िगरेशन का उपयोग किया है:

नव निर्मित थ्रेड स्टार्ट एड्रेस स्पूफिंग वास्तव में इस प्रोजेक्ट में आवश्यक नहीं थी क्योंकि APC इंजेक्शन तकनीक के भीतर, APC पहले से चल रहे एक वैध थ्रेड के निष्पादन को हाईजैक कर लेता है। @C5pider का धन्यवाद!

अब इवेंट लॉग पर स्थिति?

कोई लॉग उत्पन्न नहीं हुआ। मैंने DarkWidow V2 से इवेंट लॉगर किलिंग भाग को भी हटा दिया है, जो इवेंट जनरेशन को भी कम करता है!
मुझे उम्मीद है कि मैं किसी को नहीं भूला!
उपरोक्त लिंक से स्निपेट का एक चित्र, जिसका उपयोग मैंने ऑफसेट को हार्डकोड किए बिना API को गतिशील रूप से हल करने के लिए किया:

मेरे द्वारा लागू किया गया API हैशिंग कोड: