Vbrizgavanje kode v procese je ena najpogostejših tehnik, na katere naletim med penetracijskimi testi, in ostaja temelj delovanja naprednih napadalcev. V jedru vbrizgavanje kode v procese omogoča izvajanje zlonamerne kode znotraj naslovnega prostora legitimnega procesa, s čimer se učinkovito skriva za ugledom in zaupanjem tega procesa. Za branilce je razumevanje teh tehnik bistveno, ker je zaznavanje vbrizgavanja kode v procese eden najbolj vplivnih načinov za zgodnje lovljenje sofisticiranih nasprotnikov v njihovi napadni verigi. Ta objava se navezuje na MITRE ATT&CK tehniko T1055 (vbrizgavanje kode v procese) in njene številne podtehnike.
Vbrizgavanje kode v procese in pripadajoče podtehnike opisuje MITRE ATT&CK T1055.
Zakaj napadalci uporabljajo vbrizgavanje kode v procese
Preden se poglobimo v specifične tehnike, je pomembno razumeti prednosti pri izogibanju zaznavi, ki jih vbrizgavanje kode v procese daje napadalcem, ker to razumevanje neposredno usmerja, kam bi morali branilci osredotočiti svoje spremljanje. Ko koda teče znotraj zaupanja vrednega procesa, kot sta svchost.exe ali explorer.exe, so seznami dovoljenih procesov in politike nadzora aplikacij učinkovito zaobideni. Omrežne povezave iz vbrizganih procesov se zdijo, kot da izvirajo iz legitimnega gostiteljskega procesa, kar otežuje omrežno zaznavo. Poleg tega, če je gostiteljski proces ukinjen, se zlonamerna koda ustavi z njim, kar zmanjša forenzične artefakte. Branilci, ki razumejo te motivacije, lahko zgradijo strategije zaznave, ki gledajo onkraj površinskih informacij o procesih.
Klasične tehnike
Te uveljavljene metode vbrizgavanja so dokumentirane že leta, robustne rešitve EDR pa bi jih morale zanesljivo zaznati. Njihova nadaljnja prisotnost pogosto kaže na generično zlonamerno programsko opremo ali manj sofisticirane akterje.
- Vbrizgavanje CreateRemoteThread - Napadalec dodeli pomnilnik v ciljnem procesu z uporabo VirtualAllocEx, zapiše shellcode z uporabo WriteProcessMemory in ustvari novo nit za izvajanje prek CreateRemoteThread. To je najosnovnejša oblika vbrizgavanja in proizvede zelo prepoznaven vzorec klicev API. Branilci bi morali opozoriti na vsako medprocesno dodelitev pomnilnika, ki ji sledi ustvarjanje niti, zlasti ko izvorni proces ni znano sistemsko orodje za razhroščevanje ali upravljanje.
- Vbrizgavanje DLL - Napadalec prisili ciljni proces, da naloži zlonamerno DLL, tako da zapiše pot DLL v pomnilnik ciljnega procesa in ustvari oddaljeno nit, ki pokliče LoadLibrary. Ta tehnika pušča jasne artefakte v seznamu naloženih modulov. Branilci jo lahko zaznajo s spremljanjem nepričakovanih nalaganj DLL in z opazovanjem ustvarjanja oddaljenih niti, ki ciljajo funkcije LoadLibrary v kernel32.dll.
- Vbrizgavanje APC - Asinhroni klici procedur omogočajo, da se koda postavi v vrsto za izvajanje v kontekstu specifične niti. Napadalci uporabljajo QueueUserAPC za razporejanje svoje kode za izvajanje, ko ciljna nit vstopi v stanje pripravljenosti na opozorila. Branilci bi morali spremljati medprocesno postavljanje APC v vrsto, kar je mogoče opazovati prek ponudnikov ETW in telemetrije EDR.
Moderne tehnike
Naprednejše tehnike vbrizgavanja so bile razvite za izogibanje vedenjskim zaznavam, zgrajenim okoli klasičnih metod. Za zanesljivo zaznavo zahtevajo bolj sofisticirano spremljanje.
- Process Hollowing (T1055.012) - Napadalec ustvari legitimen proces v zaustavljenem stanju, odmapira njegovo prvotno izvršljivo sliko iz pomnilnika in jo zamenja z zlonamerno kodo pred nadaljevanjem izvajanja. Rezultat je proces, ki navzven izgleda legitimno, vendar izvaja povsem drugačno kodo. Branilci to lahko zaznajo s primerjanjem slike procesa v pomnilniku z njegovo izvršljivo datoteko na disku, tehnika, ki se včasih imenuje preverjanje slike procesa.
- Process Doppelganging - Ta tehnika zlorablja transakcije datotek NTFS za ustvarjanje procesa iz transakcijske datoteke, ki ni nikoli dejansko potrjena na disk. Proces se zdi podprt z legitimno datoteko, vendar je dejanska koda v pomnilniku zlonamerna. Zaznava zahteva spremljanje neobičajne uporabe API-jev transakcij NTFS, kot sta NtCreateTransaction in NtRollbackTransaction, v kontekstu ustvarjanja procesov.
- Vbrizgavanje Early Bird - Napadalec ustvari proces v zaustavljenem stanju, postavi APC v vrsto za glavno nit pred izvajanjem vstopne točke procesa in nato nadaljuje proces. Zlonamerna koda se izvede, preden so postavljene kakršnekoli prestrezniki klicev EDR v procesu. Branilci bi morali spremljati specifičen vzorec ustvarjanja procesa v zaustavljenem stanju, ki mu takoj sledi postavljanje APC v vrsto.
- Mockingjay - Ta tehnika identificira legitimne DLL-je, ki vsebujejo pomnilniške sekcije RWX (branje-pisanje-izvajanje), in uporabi te sekcije za gostovanje zlonamerne kode brez potrebe po dodelitvi novega izvršljivega pomnilnika. Ker ne pride do sumljive dodelitve pomnilnika, so mnoga vedenjska pravila EDR zaobidena. Branilci bi morali revidirati svoje sisteme za DLL-je s sekcijami RWX in spremljati nepričakovano izvajanje kode iz teh regij.
Indikatorji zaznave in spremljanje
Zaznavanje vbrizgavanja kode v procese zahteva večplastni pristop k spremljanju. Noben posamezen indikator ni dokončen, vendar kombinacije naslednjih signalov zagotavljajo opozorila z visoko stopnjo zaupanja.
- Medprocesne pomnilniške operacije - Spremljajte klice VirtualAllocEx in WriteProcessMemory, kjer se izvorni in ciljni proces razlikujeta. Sysmon dogodek ID 8 (CreateRemoteThread) in dogodek ID 10 (ProcessAccess) s specifičnimi maskami dostopa za pisanje v pomnilnik so bistveni viri podatkov. Vsak proces, ki odpre drug proces z dovoljenji PROCESS_VM_WRITE in PROCESS_VM_OPERATION brez legitimnega razloga, bi moral biti preiskan.
- Neobičajno ustvarjanje niti - Nove niti v procesu, ki ne izvirajo iz znanih naloženih modulov, so močen indikator vbrizgavanja. Začetni naslovi niti, ki kažejo na pomnilniške regije brez podpore, so posebej sumljivi.
- Vzorci dodeljevanja pomnilnika - Bodite pozorni na pomnilniške regije, dodeljene z izvršljivimi dovoljenji, zlasti regije RWX, v procesih, ki jih običajno ne potrebujejo. Produkti EDR in orodja kot Volatility lahko naštejejo pomnilniške mape procesov za identifikacijo anomalnih regij.
- Sumljiva zaporedja API - Kombinacija OpenProcess, VirtualAllocEx, WriteProcessMemory in CreateRemoteThread v zaporedju je učbeniški vzorec vbrizgavanja. Naprednejše zaznave bi morale iskati variacije z uporabo NtCreateThreadEx, NtMapViewOfSection in drugih ekvivalentov izvornih API-jev, ki jih napadalci uporabljajo za izogibanje prestreznikom klicev API v uporabniškem načinu.
Najboljše prakse zaznave in obrambe
Na podlagi mojih izkušenj s testiranjem zmožnosti zaznave v mnogih organizacijah so tu najučinkovitejši obrambni ukrepi proti vbrizgavanju kode v procese.
- Uvedite Sysmon s celovito konfiguracijo - Zagotovite, da je Sysmon konfiguriran za beleženje ustvarjanja procesov (dogodek ID 1), dostopa do procesov (dogodek ID 10) in dogodkov ustvarjanja oddaljenih niti (dogodek ID 8). Konfiguracija Sysmon od SwiftOnSecurity je močno izhodišče, ki pokriva telemetrijo, povezano z vbrizgavanjem.
- Omogočite Windows Defender Credential Guard - To preprečuje določene tehnike vbrizgavanja, ki ciljajo LSASS, saj ga poganja v enklavi varnosti na osnovi virtualizacije, s čimer bistveno oteži krajo poverilnic prek vbrizgavanja.
- Uvedite skeniranje integritete pomnilnika - Uporabite svoj EDR ali dodatna orodja za periodično skeniranje pomnilnika procesov za nepodprto izvršljivo kodo. Vsaka izvršljiva pomnilniška regija, ki ni podprta z datoteko na disku, je sumljiva in zahteva preiskavo.
- Spremljajte anomalije ustvarjanja procesov - Process hollowing in doppelganging ustvarjata procese v zaustavljenih stanjih. Sledite procesom, ustvarjenim z zastavico CREATE_SUSPENDED, in korelirajte z naslednjimi pomnilniškimi operacijami pred nadaljevanjem.
- Gradite zaznavo okoli znanih vzorcev napadnih orodij - Mnogi okviri za vbrizgavanje sledijo predvidljivim vzorcem. Ustvarite pravila zaznave, ki identificirajo specifična zaporedja, ki jih uporabljajo priljubljena orodja, hkrati pa gradite širše vedenjske zaznave, ki ujamejo nove pristope.
Testiranje in potrjevanje
Testiranje zaznave vbrizgavanja je ključno za potrjevanje vaše obrambne pokritosti. Med vajami skupnega preverjanja napadalne in obrambne ekipe (purple teaming) sodelujem z obrambnimi ekipami za sistematično testiranje vsake tehnike vbrizgavanja z njihovimi orodji za zaznavanje. Cilj ni najti načine okoli zaznave, temveč zagotoviti, da lahko organizacija zanesljivo identificira poskuse vbrizgavanja, ko se pojavijo. Organizacije, ki redno testirajo svoje zmožnosti zaznave vbrizgavanja, so bistveno bolje pripravljene na zaznavo resničnih groženj, ki se zanašajo na te temeljne tehnike. Vsaka vrzel v zaznavi, identificirana med testiranjem, je priložnost za izboljšanje varnosti, preden jo dejanski nasprotnik izkoristi.
Sorodno branje: Osnove izogibanja EDR: Razumevanje zaznave in Zamegljevanje vsebin: Izogibanje zaznavi podpisov.
Zanima vas več o tej temi? Preberite mojo strokovno stran o Evasion & EDR →
Komentarji
Ni še komentarjev. Bodite prvi!
Dodaj komentar