Vbrizgavanje procesov je ena najpogostejsih tehnik, na katere naletim med preizkusi vdorov, in ostaja temelj naprednega obnasanja grozecih akterjev. V jedru vbrizgavanje procesov omogoca izvajanje zlonamerne kode znotraj naslovnega prostora legitimnega procesa, s cimer se ucinkovito skriva za ugledom in zaupanjem tega procesa. Za branilce je razumevanje teh tehnik bistveno, ker je zaznavanje vbrizgavanja procesov eden najbolj vplivnih nacinov za zgodnje lovljenje sofisticiranih nasprotnikov v njihovi napadni verigi. Ta objava se navezuje na MITRE ATT&CK tehniko T1055 (vbrizgavanje procesov) in njene stevilne podtehnike.
Zakaj napadalci uporabljajo vbrizgavanje procesov
Preden se poglobimo v specificne tehnike, je pomembno razumeti obrambne prednosti, ki jih vbrizgavanje procesov daje napadalcem, ker to razumevanje neposredno usmerja, kam bi morali branilci osredotociti svoje spremljanje. Ko koda tece znotraj zaupanja vrednega procesa, kot sta svchost.exe ali explorer.exe, so seznami dovoljenih procesov in politike nadzora aplikacij ucinkovito zaobideni. Omrezne povezave iz vbrizganih procesov se zdijo, kot da izvirajo iz legitimnega gostiteljskega procesa, kar otezuje omrezno zaznavo. Poleg tega, ce je gostiteljski proces ukinjen, se zlonamerna koda ustavi z njim, kar zmanjsa forenzicne artefakte. Branilci, ki razumejo te motivacije, lahko zgradijo strategije zaznave, ki gledajo onkraj povrsinskih informacij o procesih.
Klasicne tehnike
Te uveljavljene metode vbrizgavanja so dokumentirane ze leta, robustne resitve EDR pa bi jih morale zanesljivo zaznati. Njihova nadaljnja prisotnost pogosto kaze na genericno zlonamerno programsko opremo ali manj sofisticirane akterje.
- Vbrizgavanje CreateRemoteThread - Napadalec dodeli pomnilnik v ciljnem procesu z uporabo VirtualAllocEx, zapise shellcode z uporabo WriteProcessMemory in ustvari novo nit za izvajanje prek CreateRemoteThread. To je najosnovnejsa 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 razhroscevanje ali upravljanje.
- Vbrizgavanje DLL - Napadalec prisili ciljni proces, da nalozi zlonamerno DLL, tako da zapise pot DLL v pomnilnik ciljnega procesa in ustvari oddaljeno nit, ki poklice LoadLibrary. Ta tehnika pusca jasne artefakte v seznamu nalozenih modulov. Branilci jo lahko zaznajo s spremljanjem nepricakovanih nalaganj DLL in z opazovanjem ustvarjanja oddaljenih niti, ki ciljajo funkcije LoadLibrary v kernel32.dll.
- Vbrizgavanje APC - Asinhroni klici procedur omogocajo, da se koda postavi v vrsto za izvajanje v kontekstu specificne 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 mogoce opazovati prek ponudnikov ETW in telemetrije EDR.
Moderne tehnike
Naprednejse tehnike vbrizgavanja so bile razvite za izogibanje vedenjskim zaznavam, zgrajenim okoli klasicnih metod. Za zanesljivo zaznavo zahtevajo bolj sofisticirano spremljanje.
- Process Hollowing (T1055.012) - Napadalec ustvari legitimen proces v zaustavljenem stanju, odmapira njegovo prvotno izvrsljivo sliko iz pomnilnika in jo zamenja z zlonamerno kodo pred nadaljevanjem izvajanja. Rezultat je proces, ki navzven izgleda legitimno, vendar izvaja povsem drugacno kodo. Branilci to lahko zaznajo s primerjanjem slike procesa v pomnilniku z njegovo izvrsljivo datoteko na disku, tehnika, ki se vckasih 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 neobicajne 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 tocke procesa in nato nadaljuje proces. Zlonamerna koda se izvede, preden so postavljene kakrsnekoli kavlje EDR v procesu. Branilci bi morali spremljati specifican vzorec ustvarjanja procesa v zaustavljenem stanju, ki mu takoj sledi postavljanje APC v vrsto.
- Mockingjay - Ta tehnika identificira legitimne DLL-je, ki vsebujejo pomnilniske sekcije RWX (branje-pisanje-izvajanje), in uporabi te sekcije za gostovanje zlonamerne kode brez potrebe po dodelitvi novega izvrsljivega 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 nepricakovano izvajanje kode iz teh regij.
Indikatorji zaznave in spremljanje
Zaznavanje vbrizgavanja procesov zahteva vecplastni pristop k spremljanju. Noben posamezen indikator ni dokoncen, vendar kombinacije naslednjih signalov zagotavljajo opozorila z visoko stopnjo zaupanja.
- Medprocesne pomnilniske operacije - Spremljajte klice VirtualAllocEx in WriteProcessMemory, kjer se izvorni in ciljni proces razlikujeta. Sysmon dogodek ID 8 (CreateRemoteThread) in dogodek ID 10 (ProcessAccess) s specificnimi 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.
- Neobicajno ustvarjanje niti - Nove niti v procesu, ki ne izvirajo iz znanih nalozenih modulov, so mocen indikator vbrizgavanja. Zacetni naslovi niti, ki kazejo na pomnilniske regije brez podpore, so posebej sumljivi.
- Vzorci dodeljevanja pomnilnika - Bodite pozorni na pomnilniske regije, dodeljene z izvrsljivimi dovoljenji, zlasti regije RWX, v procesih, ki jih obicajno ne potrebujejo. Produkti EDR in orodja kot Volatility lahko nastedejo pomnilniske mape procesov za identifikacijo anomalnih regij.
- Sumljiva zaporedja API - Kombinacija OpenProcess, VirtualAllocEx, WriteProcessMemory in CreateRemoteThread v zaporedju je ucbeniski vzorec vbrizgavanja. Naprednejse zaznave bi morale iskati variacije z uporabo NtCreateThreadEx, NtMapViewOfSection in drugih ekvivalentov izvornih API-jev, ki jih napadalci uporabljajo za izogibanje kaveljam v uporabniskem nacinu.
Najboljse prakse zaznave in obrambe
Na podlagi mojih izkusenj s testiranjem zmoznosti zaznave v mnogih organizacijah so tu najucinkovitejsi obrambni ukrepi proti vbrizgavanju procesov.
- Razmestite Sysmon s celovito konfiguracijo - Zagotovite, da je Sysmon konfiguriran za belezenje ustvarjanja procesov (dogodek ID 1), dostopa do procesov (dogodek ID 10) in dogodkov ustvarjanja oddaljenih niti (dogodek ID 8). Konfiguracija Sysmon od SwiftOnSecurity je mocno izhodisce, ki pokriva telemetrijo, povezano z vbrizgavanjem.
- Omogocite Windows Defender Credential Guard - To preprecuje dolocene tehnike vbrizgavanja, ki ciljajo LSASS, saj ga poganja v enklavi varnosti na osnovi virtualizacije, s cimer bistveno otezi krajo poverilnic prek vbrizgavanja.
- Implementirajte skeniranje integritete pomnilnika - Uporabite svoj EDR ali dodatna orodja za periodicno skeniranje pomnilnika procesov za nepodprto izvrsljivo kodo. Vsaka izvrsljiva pomnilniska 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 pomnilniskimi operacijami pred nadaljevanjem.
- Gradite zaznavo okoli znanih vzorcev napadnih orodij - Mnogi okviri za vbrizgavanje sledijo predvidljivim vzorcem. Ustvarite pravila zaznave, ki identificirajo specificna zaporedja, ki jih uporabljajo priljubljena orodja, hkrati pa gradite sirsje vedenjske zaznave, ki ujamejo nove pristope.
Testiranje in potrjevanje
Testiranje zaznave vbrizgavanja je kljucno za potrjevanje vase obrambne pokritosti. Med vajami vijolicne ekipe sodelujem z modrimi ekipami za sistematicno testiranje vsake tehnike vbrizgavanja proti njihovemu skladu zaznave. Cilj ni najti nacine okoli zaznave, temvec zagotoviti, da lahko organizacija zanesljivo identificira poskuse vbrizgavanja, ko se pojavijo. Organizacije, ki redno testirajo svoje zmoznosti zaznave vbrizgavanja, so bistveno bolje pripravljene na zaznavo resnicnih grozhenj, ki se zanasajo na te temeljne tehnike. Vsaka vrzel v zaznavi, identificirana med testiranjem, je priloznost za izboljsanje varnosti, preden jo dejanski nasprotnik izkoristi.
Zanima vas vec o tej temi? Preberite mojo strokovno stran o Evasion & EDR →
Komentarji
Ni se komentarjev. Bodite prvi!
Dodaj komentar