Izogibanje in EDR/AV zaščiti

Zakaj me EDR ni ustavil — in zakaj vas včasih ustavi. EDR rešitve so močne, ko delujejo pravilno. Problem je, da se napadalci prilagodimo. Vi kupite orodje in mislite, da ste zaščiteni. Mi spremenimo eno številko v ukazu in orodje nas ne vidi več. Razumevanje, kako detekcija deluje — in kje odpove — je ključno za resnično varnost.

Kako EDR dejansko deluje

Endpoint Detection and Response (EDR) sistemi so kompleksne rešitve, ki kombinirajo več pristopov za zaznavanje groženj. Razumevanje njihove arhitekture je prvi korak k razumevanju njihovih omejitev.

Komponente EDR sistema

  • Kernel-level driver — Jedro EDR deluje na nivoju kernela, kjer ima vpogled v vse aktivnosti sistema. Registrira callback-e za procese, niti, nalaganje modulov, registrske ključe in datotečni sistem.
  • User-mode agent — Komponenta v uporabniškem prostoru zbira telemetrijo, komunicira z oblakom in izvaja odločitve o blokiranju.
  • ETW (Event Tracing for Windows) — Windows zagotavlja bogat vir telemetrije skozi ETW provider-je. EDR rešitve se naročijo na .NET, PowerShell, Security in druge provider-je.
  • AMSI (Antimalware Scan Interface) — Microsoft-ov vmesnik omogoča skeniranje skript pred izvajanjem — PowerShell, VBScript, JavaScript in .NET assembly-jev.
  • User-mode hooks — Mnogi EDR-ji hookajo ntdll.dll funkcije v uporabniškem prostoru za prestrezanje sistemskih klicev.

Detekcijske metode

  • Podpisi (Signatures) — Statična detekcija znanih vzorcev v datotekah in pomnilniku. Hitro, a zlahka zaobideno s spreminjanjem.
  • Hevristika — Pravila, ki identificirajo sumljivo vedenje na podlagi kombinacije faktorjev (npr. Word sproži PowerShell, ki kontaktira internet).
  • Vedenjska analiza — Učenje normalnega vedenja in odkrivanje anomalij. Učinkovito za unknown threats, a nagnjeno k false positive-om.
  • Machine Learning modeli — AI/ML klasifikatorji, ki ocenjujejo datoteke in vedenje. Omejeni z učnimi podatki in interpretabilnostjo.
  • IOC preverjanje — Primerjava z znanimi indikatorji kompromitacije (IP naslovi, domene, hashi).

Zakaj detekcija odpove

Nobena varnostna rešitev ni popolna. EDR sistemi imajo inherentne omejitve, ki jih napadalci sistematično izkoriščamo.

Problem podpisov

Podpisi so najhitrejši način detekcije, a tudi najlažje zaobiden. Majhna sprememba v binarki — dodajanje NOP instrukcij, spreminjanje konstant, preureditev funkcij — povzroči popolnoma drugačen hash. Polimorfni in metamorfni malware to avtomatizirata.

Living off the Land (LOTL)

Zakaj bi prinašali lastna orodja, če jih ima sistem že vgrajene? LOLBAS (Living Off the Land Binaries, Scripts and Libraries) tehnika uporablja legitimne sistemske komponente za zlonamerne namene:

  • PowerShell — Zmogljiv skriptni jezik z dostopom do .NET framework-a. Omogoča download cradle-e, reflection, in-memory execution.
  • WMI (Windows Management Instrumentation) — Upravljanje sistema, ki omogoča oddaljeno izvajanje kode, persistence in lateral movement.
  • certutil.exe — Namenjen upravljanju certifikatov, a lahko dekodira base64 in prenese datoteke.
  • mshta.exe — Izvaja HTA (HTML Application) datoteke, ki lahko vsebujejo VBScript ali JavaScript.
  • rundll32.exe — Naloži DLL in izvede funkcijo. Pogosto zlorabljen za execution.
  • regsvr32.exe — Registrira COM objekte, a lahko naloži skripte iz URL-ja (Squiblydoo napad).
  • msbuild.exe — Kompilira in izvede C# kodo brez ustvarjanja izvršljivih datotek.

Obfuskacija ukazne vrstice

Detekcija pogosto temelji na ujemanju ukazne vrstice. Windows cmd.exe in PowerShell sta presenetljivo tolerantna do obfuskacije:

  • Konkatenacija nizov"power" + "shell" namesto "powershell"
  • Environment variable-i%COMSPEC% namesto cmd.exe
  • Caret escapingp^o^w^e^r^s^h^e^l^l je veljaven ukaz
  • Unicode substitucija — Vizualno podobni znaki iz drugih kod
  • Invoke-Expression aliasiIEX, &, . operator

AMSI bypass

AMSI je kritična komponenta za detekcijo skriptnih groženj. Bypass-i izkoriščajo:

  • Patching amsi.dll v pomnilniku — Prepisovanje AmsiScanBuffer funkcije, da vedno vrne AMSI_RESULT_CLEAN.
  • Forcing error — Povzročanje napake v AMSI inicializaciji, ki onemogoči skeniranje.
  • Context hijacking — Manipulacija amsiContext strukture.
  • Reflection — Dostop do internih .NET metod za onemogočanje AMSI.

ETW blinding

Če EDR ne prejme telemetrije, ne more detektirati. ETW provider-ji so lahko onemogočeni:

  • Patching ntdll!EtwEventWrite — Prepisovanje funkcije, da takoj vrne uspeh brez logiranja.
  • Provider unregistration — Odstranitev consumer-jev iz ETW seje.
  • Trace manipulation — Spreminjanje trace session parametrov.

Unhooking

EDR-ji pogosto hookajo ntdll.dll funkcije za prestrezanje sistemskih klicev. Napadalci to zaobidemo:

  • Fresh ntdll copy — Nalaganje čiste kopije ntdll.dll iz diska ali KnownDlls sekcije.
  • Direct syscalls — Klic syscall instrukcije neposredno, mimo ntdll funkcij.
  • Manual unhooking — Prepisovanje hookanih funkcij z originalnimi bajti.

Process injection in memory-only execution

Datoteke na disku so lahke tarče za skeniranje. Napadi v pomnilniku so težje detektabilni:

  • Process hollowing — Ustvarjanje procesa v suspended stanju, zamenjava slike in nadaljevanje izvajanja.
  • DLL injection — Vstavljanje DLL v tuji proces (CreateRemoteThread, QueueUserAPC, SetWindowsHookEx).
  • Reflective DLL loading — Nalaganje DLL v pomnilnik brez registracije v PEB.
  • Process doppelgänging — Zloraba NTFS transakcij za nalaganje kode brez detekcije.
  • Module stomping — Prepisovanje legitimnega DLL v pomnilniku z zlonamerno kodo.

Slepe točke

Vsak EDR ima področja, ki jih ne pokriva popolnoma:

  • Pre-boot — Aktivnosti pred nalaganjem agenta.
  • Excluded paths — Mape, izvzete iz skeniranja (pogosto AV instalacijske mape).
  • Trusted processes — Nekateri procesi so izvzeti iz monitoringa.
  • Timing attacks — Aktivnosti med reboot-om ali med posodobitvami agenta.
  • Volume gaps — Visok volumen dogodkov lahko povzroči izgubo telemetrije.

Red Team pristop k testiranju EDR

Kakovosten EDR test ne pomeni le zagon Mimikatz-a in preverjanje, ali ga blokira. Sistematičen pristop vključuje:

Faze testiranja

  1. Reconnaissance — Identifikacija EDR rešitve (procesi, gonilniki, registry ključi). Vsak EDR ima specifične značilnosti.
  2. Baseline testing — Testiranje z znanimi orodji za potrditev, da detekcija deluje.
  3. Signature bypass — Modifikacija orodij za izogibanje statičnim podpisom.
  4. Behavioral testing — Testiranje specifičnih TTP-jev in identifikacija, kateri sprožijo detekcijo.
  5. Advanced evasion — AMSI bypass, ETW manipulation, unhooking, custom loaders.
  6. Full kill chain — Izvedba celotnega napada za validacijo detekcije v realističnem scenariju.

Pomembna opozorila

EDR evasion testing mora biti:

  • Izveden samo z eksplicitnim pisnim dovoljenjem naročnika
  • Dokumentiran z vsako uporabljeno tehniko
  • Usmerjen k izboljšanju detekcije, ne le k dokazovanju bypass-a
  • Vključuje priporočila za izboljšanje konfiguracije EDR

Kaj to pomeni za vas

EDR ni srebrna krogla. Je en sloj v defense-in-depth strategiji. Učinkovita zaščita vključuje:

  • Pravilna konfiguracija — Out-of-the-box nastavitve pogosto niso optimalne. Tuning glede na vaše okolje.
  • Zmanjšanje attack surface — Onemogočanje nepotrebnih LOLBAS orodij, PowerShell Constrained Language Mode, AppLocker/WDAC.
  • Network segmentation — Tudi če napadalec zaobide EDR, segmentacija omejuje lateral movement.
  • Logging beyond EDR — Centralizirano logiranje, ki ni odvisno samo od EDR telemetrije.
  • Regular testing — Periodično testiranje z simulacijo realnih napadov.
  • Incident response readiness — Načrt za primer, ko detekcija odpove.

Moji testi ne končajo z "EDR bypassed" — končajo s konkretnimi priporočili, kako izboljšati vašo detekcijsko sposobnost.