
استدعاء نظام ديناميكي غير مباشر، 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
#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 الشرعية |
|---|---|
![]() | ![]() |
"يترتب على ذلك أنه من خلال تنفيذ تعليمة الإرجاع في ذاكرة ntdll.dll في POC الاستدعاء غير المباشر، يمكن تزوير عنوان الإرجاع بنجاح، ويمكن وضع ntdll.dll في أعلى مكدس الاستدعاءات وسيُفسر EDR شرعية أعلى." - @VirtualAllocEx من DirectSyscall مقابل Indirect Syscall
أيضًا شكرًا لـ @peterwintrsmith!


تعيين صلاحية SeDebugPrivilege:
من هنا:
إلى هنا:

قتل خيوط سجل الأحداث:



لا يتم إنشاء أي تنبيهات حرجة باستثناء سجل واحد منخفض الخطورة!

سجل واحد منخفض الخطورة => حقن APC (كما في السابق)

سجل آخر متوسط الخطورة حدث بسبب تعيين
SeDebugPrivilege.

تزوير مكدس الخيط بالإطار الاصطناعي إليه.هذا هو شكل المكدس بعد تطبيق تزوير مكدس الخيط بالإطار الاصطناعي.

هذا هو مكدس خيط Nt API

هذا هو مكدس خيط الشيل كود (بالمناسبة، هذا ليس مخصصًا، إنه شيل كود Havoc :))
لتطوير الشيل كود، استخدمت havoc وهذه الإعدادات أدناه:

لم يكن تزوير عنوان بداية الخيط المنشأ حديثًا ضروريًا حقًا في هذا المشروع لأنه ضمن تقنية حقن APC، يختطف APC تنفيذ خيط قيد التشغيل بالفعل وشرعي. شكرًا لـ @C5pider!

الآن حالة سجلات الأحداث؟

لم يتم إنشاء أي سجلات. لقد أزلت أيضًا جزء قتل مسجل الأحداث من DarkWidow V2، مما يقلل أيضًا من توليد الأحداث!
أتمنى ألا أكون قد نسيت أحدًا!
صورة للمقتطف من الرابط أعلاه، الذي استخدمته لحل API ديناميكيًا دون ترميز الإزاحات بشكل ثابت:

كود تجزئة API الذي طبقته: