
استدعاء نظام ديناميكي غير مباشر، SSN + ترتيب عنوان استدعاء النظام عبر نهج TartarusGate المعدل + حقن العملية عن بُعد عبر APC Early Bird + إنشاء عملية قربانية كعملية هدف + سياسة تخفيف (ACG+BlockDll) على العملية المستحدثة + تزوير PPID + حل واجهات برمجة التطبيقات من TIB + تجزئة 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:
بلاك هات - ما لا يريد مؤلفو البرامج الضارة أن تعرفه - حقن العمليات المجوفة المراوغة بواسطة @monnappa22
صورة لذاكرة العملية من الرابط أعلاه:

من labs.cognisys.group، مدونة بواسطة @D1rkMtr
:

TIB -> TEB -> PEB -> حل Nt API وتجزئة API
https://stackoverflow.com/questions/41277888/iterating-over-peb-dllname-shows-only-exe-name
https://doxygen.reactos.org/d7/d55/ldrapi_8c_source.html#l01124
labs.cognisys.group، مدونة بواسطة @D1rkMtr
صورة للمقتطف من الرابط أعلاه، الذي استخدمته لحل 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("[!] Wrong!\n");
printf("[->] Syntax: .\\%s <NTFuncName>\n\n", argv[0]);
return 1;
}
const char* string = argv[1];
DWORD64 hashvalue = djb2(string);
printf("Hash Value: 0x%llX\n", hashvalue);
return 0;
}
سياسة تخفيف ACG (حماية الكود التعسفي) / BlockDll:

كشف انتحال PPID:
كشف Moneta و PESieve:\
Moneta:

PESieve:

فحص Capa:

كيف يبدو مكدس الخيط لعملية الأداة:
| عملية الأداة | عملية Cmd الشرعية |
|---|---|
![]() | ![]() |