Nazaj na blog

Tehnike obvoda AMSI: PowerShell in naprej

October 24, 2024 5 min branja
Tehnike obvoda AMSI: PowerShell in naprej
Nazadnje posodobljeno:

Vmesnik za skeniranje proti zlonamerni programski opremi je ena najpomembnejših Microsoftovih obrambnih tehnologij proti napadom na osnovi skript. Kot penetracijski tester se z AMSI redno srečujem med angažmaji, razumevanje delovanja in načinov, kako ga napadalci poskušajo zaobiti, pa je bistveno znanje za vsakega branilca. Ta objava pokriva MITRE ATT&CK tehniko T1562.001 (Poseganje v obrambo: Onemogočanje ali spreminjanje orodij) in pomaga obrambnim ekipam okrepiti njihove zmožnosti zaznave, povezane z AMSI.

Arhitekturo in integracije vmesnika AMSI opisuje uradna dokumentacija Microsoft: Antimalware Scan Interface.

Kako AMSI deluje v ozadju

AMSI deluje kot most med skriptnimi mehanizmi in protivirusnimi produkti. Ko se skripta PowerShell izvede, skriptni mehanizem pošlje dekodirano vsebino v AMSI pred izvajanjem. AMSI nato posreduje to vsebino registriranemu ponudniku protivirusne zaščite, običajno Windows Defenderju, za skeniranje. Ta arhitektura je močna, ker vidi končno, dekodirano obliko skript, s čimer premaga več plasti kodiranja in zamegljevanja.

Kaj AMSI skenira

AMSI je integriran v več komponent sistema Windows in zagotavlja široko pokritost proti grožnjam na osnovi skript. Branilci bi se morali zavedati vseh integracijskih točk, da razumejo svojo pokritost.

  • Skripte PowerShell - Vsak skriptni blok je pred izvajanjem predložen AMSI, vključno z dinamično generirano kodo in ukazi, vpisanimi interaktivno. To je najbolj znana integracijska točka, ki ujame večino napadov na osnovi PowerShell.
  • VBScript in JScript - Gostitelj skript Windows se integrira z AMSI, kar zagotavlja, da so stari skriptni jeziki, ki se uporabljajo v mnogih napadnih verigah, prav tako skenirani pred izvajanjem.
  • Makroji Office VBA - Od Office 365 naprej je makro koda predložena AMSI za skeniranje. To bistveno izboljša zaznavo zlonamernih makrov, ki so že leta primarni vektor začetnega dostopa.
  • Nalaganja sestavov .NET - Izvajalno okolje .NET Common Language Runtime predloži sestave AMSI, ko se naložijo, kar pomaga zaznati napade, ki reflektivno naložijo zlonamerne sestave .NET v pomnilnik, tehniko, ki jo pogosto uporabljajo orodja kot Cobalt Strike.

Kategorije obvoda, ki jih uporabljajo napadalci

Razumevanje, kako napadalci poskušajo zaobiti AMSI, branilcem omogoča gradnjo zaznav, ki specifično ciljajo te tehnike. Vsaka kategorija ima razločne indikatorje, ki bi jih morale varnostne ekipe spremljati.

  • Krpanje pomnilnika - Napadalci spremenijo funkcijo AmsiScanBuffer v amsi.dll znotraj pomnilnika procesa, da vedno vrne rezultat brez zaznane grožnje. To je najpogostejši pristop obvoda. Dejanje krpanja te funkcije vključuje specifične klice API, ki jih je mogoče zaznati, vključno s klici VirtualProtect za spreminjanje pomnilniških dovoljenj na DLL AMSI.
  • Zamegljevanje - Namesto onemogočanja AMSI nekateri napadalci močno zameglijo svoje zlonamerne kode, da se izognejo sprožitvi podpisov AMSI. Čeprav AMSI v večini primerov vidi dekodirano vsebino, lahko kreativno kodiranje včasih zaobide zaznavo. Branilci bi morali zagotoviti, da ima njihov ponudnik AMSI robustna vedenjska pravila poleg preprostih podpisov.
  • Onemogočanje z uporabo refleksije - Z uporabo refleksije .NET lahko napadalci dostopajo do notranjih polj AMSI in nastavijo zastavico amsiInitFailed na true, kar povzroči, da se nadaljnja skeniranja preskočijo. Ta tehnika manipulira notranje stanje izvajalnega okolja .NET in jo je mogoče zaznati s spremljanjem specifičnih vzorcev refleksije.
  • Ugrabitev COM - AMSI uporablja objekte COM za komunikacijo med komponentami. S preusmeritvijo registracije strežnika COM AMSI v registru lahko napadalci usmerijo klice AMSI na benignega upravljavca. Spremembe registra na vnosih COM, povezanih z AMSI, bi morale biti pozorno nadzorovane.

Testiranje vaše pokritosti AMSI

  1. Razumevanje, kaj sproži AMSI - Uporabite testni niz EICAR ali znane testne vzorce AMSI za preverjanje, da je AMSI funkcionalen v vašem okolju. Zagotovite, da so vse integracijske točke aktivne in pravilno poročajo.
  2. Testiranje učinkovitosti zamegljevanja - Med penetracijskimi testi dokumentirajte, katere tehnike zamegljevanja zaobidejo vašega ponudnika AMSI. To pomaga identificirati vrzeli v podpisih, ki bi jih moral vas proizvajalec odpraviti.
  3. Preverjanje zaznave obvoda - Poskusite znane tehnike obvoda AMSI v nadzorovanem okolju in preverite, da vas EDR zazna sam poskus obvoda, ne le zlonamerno kodo, ki jo je poskusal zagnati.
  4. Dokumentiranje vrzeli v zaznavi - Ustvarite celovito poročilo, ki preslika vsako tehniko obvoda na vaše zmožnosti zaznave, z označbo, kje je potrebno dodatno spremljanje ali pravila po meri.

Zaznava in obramba

Zaznavanje poskusov obvoda AMSI je ključnega pomena, saj lahko uspešen obvod naredi celotno plast vaše obrambe nevidno. Tu so ključne strategije zaznave, ki jih priporočam svojim strankam.

  • Spremljanje klicev API, povezanih z AMSI - Bodite pozorni na klice VirtualProtect, ki ciljajo pomnilniške regije amsi.dll. Sysmon dogodek ID 10 (ProcessAccess) in telemetrija EDR lahko razkrijeta, ko proces spreminja pomnilniške zaščite na naloženih modulih AMSI.
  • Omogočite beleženje skriptnih blokov PowerShell - Dogodek ID 4104 zajame celotno vsebino izvršenih skriptnih blokov. Tudi če je AMSI zaobiden, beleženje skriptnih blokov zagotavlja locen tok telemetrije, ki zajame zlonamerne ukaze. To bi moralo biti omogočeno v celotni organizaciji prek skupinske politike.
  • Spremljajte Windows dogodek ID 4103 - Beleženje modulov zajame podrobnosti izvajanja cevovoda PowerShell in zagotavlja še eno plast vidnosti, neodvisno od AMSI.
  • Bodite pozorni na vzorce refleksije .NET - Zaznajte ukaze PowerShell, ki uporabljajo System.Reflection za dostop do tipov in polj, povezanih z AMSI. Specifični vzorci, kot je dostopanje do polj amsiContext ali amsiSession, so močni indikatorji poskusov obvoda.
  • Spremljanje registra - Opozorite na spremembe registracijskih ključev COM AMSI pod HKLM\SOFTWARE\Classes\CLSID. Vse spremembe teh ključev zunaj legitimnih posodobitev programske opreme bi morale biti takoj preiskane.
  • Uvedite preverjanja delovanja AMSI - Uvedite periodična avtomatizirana preverjanja, ki potrjujejo, da AMSI pravilno deluje na vseh končnih točkah. Nenadna odpoved AMSI na gostitelju lahko kaže na izveden obvod.

Krepitev vaše zaščite AMSI

Poleg zaznave lahko organizacije sprejmejo proaktivne korake, ki napadalcem otežijo obvod AMSI. Posodabljajte Windows in definicije Defenderja, saj Microsoft neprestano zakrpa znane tehnike obvoda. Razmislite o razmestitvi ponudnikov AMSI tretjih oseb, ki ponujajo dodatne zmožnosti zaznave poleg Defenderja. Uvedite omejeni jezikovni način za PowerShell, kjer je mogoče, ki omejuje razpoložljive tipe .NET in naredi mnoge tehnike obvoda nemogoče. Končno, zapomnite si, da je AMSI ena plast v strategiji obrambe v globino. Tudi ob popolni pokritosti AMSI organizacije potrebujejo zaznavo na končnih točkah, omrežno spremljanje in robustno beleženje za ohranjanje celovite vidnosti v svoje okolje.

Sorodno branje: Zamegljevanje vsebin: Izogibanje zaznavi podpisov in Tehnike vbrizgavanja kode v procese: Življenje v pomnilniku.

Vid Grosek

Vid Grosek

Etični heker & Penetracijski tester

Pomagam slovenskim podjetjem odkriti varnostne ranljivosti, preden jih odkrijejo napadalci. Z več kot 18 leti izkušenj v kibernetski varnosti.

Vse objave

Komentarji

Ni še komentarjev. Bodite prvi!

Dodaj komentar

Vam je bil članek všeč?

Prijavite se na newsletter za mesečne varnostne vpoglede.

Prijavite se