Zamegljevanje je umetnost preoblikovanja kode za premagovanje zaznave na osnovi podpisov ob ohranjanju njene prvotne funkcionalnosti. Kot preizkusevalec vdorov se mocno zanasam na razumevanje metod zamegljevanja, ne da bi pomagal napadalcem pri skrivanju, temvec da pomagam svojim strankam razumeti, zakaj njihova orodja za staticno analizo odpovejo in kako lahko zgradijo bolj odporne strategije zaznave. Ta objava pokriva koncepte znotraj MITRE ATT&CK tehnike T1027 (zameglene datoteke ali informacije) in njenih podtehnik ter branilcem zagotavlja znanje, potrebno za ucinkovito zaznavanje zameglenih grozhenj.
Zakaj zamegljevanje deluje proti staticni analizi
Staticna analiza preucuje kodo brez njenega izvajanja in se zanasa na ujemanje vzorcev z znanimi zlonamernimi podpisi. Temeljna slabost staticne analize je, da isce specificne vzorce bajtov, nize ali strukture. Ko napadalci te znacilnosti spremenijo z zamegljevanjem, se koda vec ne ujema z znanimi podpisi, ceprav ostaja njeno vedenje identicno. Razumevanje te omejitve branilcem pomaga ceniti, zakaj staticna analiza sama po sebi ni zadostna in zakaj mora vedenjska zaznava dopolnjevati pristope na osnovi podpisov. Dobro zameglena koristna vsebina ima morda povsem edinstven hash in ne vsebuje prepoznavnih nizov, pa vendar izvaja natancno ista zlonamerna dejanja ob izvajanju.
Tehnike zamegljevanja nizov
Nizi v zlonamerni kodi so med najciljajnejsimi elementi za podpise zaznave. Napadalci uporabljajo razlicne metode za skrivanje prepoznavnih nizov pred staticnimi skenerji.
- Zamenjava znakov in veriženje - Razbitje nizov na manjse fragmente in njihovo ponovno sestavljanje med izvajanjem premaga preprosto ujemanje nizov. Branilci bi se morali zavedati, da bodo njihova staticna pravila, ki iscejo celotne nize, kot so specificna imena funkcij ali URL-ji, zgrešila fragmentirane variante. Gradnja zaznave za vzorce rekonstrukcije nizov je bolj robustna kot iskanje specificnih nizov.
- Kodiranje (Base64, XOR, AES) - Kodiranje preoblikuje berljive nize v neprepoznavne binarne podatke. Base64 je najpogostejsa metoda kodiranja in branilci bi morali iskati funkcije za dekodiranje Base64 v kombinaciji s sumljivimi dolzinami nizov. XOR kodiranje z enobajnin kljucem je trivialno obrnjeno, vendar se vedno premaga osnovno skeniranje podpisov. Bolj sofisticirani napadalci uporabljajo vecbajne kljuce XOR ali sifriranje AES, ki zahteva pridobitev kljuca med izvajanjem za dekodiranje. Branilci bi morali oznaciti prisotnost rutin za dekodiranje v kombinaciji z kodiranimi podatkovnimi bloki kot sumljivo.
- Zloraba spremenljivk okolja - V sistemu Windows lahko napadalci sestavijo nize iz vrednosti spremenljivk okolja, vlekoč znake iz poti, kot sta %COMSPEC% ali %WINDIR%, da crtkujejo ukaze. Ta tehnika je posebej pogosta v napadih z ukazno vrstico in jo je mogoce zaznati s spremljanjem neobicajnih vzorcev sirsitve spremenljivk okolja v ukaznih vrsticah procesov.
- Skladanje nizov - Namesto uporabe nizovnih literalov napadalci potiskajo posamezne znake na sklad in gradijo nize znak po znaku. To v celoti odpravi nize iz datoteke, kar naredi staticno zaznavo skoraj nemogoce. Vedenjska zaznava med izvajanjem je primarna obramba proti tej tehniki.
Metode zamegljevanja kode
Poleg skrivanja nizov napadalci spreminjajo strukturo in tok svoje kode za premagovanje analiticnih orodij in zmedenje obratnih inzenirjev.
- Preimenovanje spremenljivk - Zamenjava pomenskih imen spremenljivk in funkcij z nakljucnimi nizi otezuje rocno analizo. Ceprav to neposredno ne vpliva na avtomatizirano zaznavo, upocasnjuje odziv na incidente in forenzicno analizo. Branilci bi morali vloziti v avtomatizirana orodja za razmeglevanje, ki lahko poenostavijo zamegleno kodo za hitrejso analizo.
- Sploscitev nadzornega toka - Ta tehnika preoblikuje naravni nadzorni tok programa v avtomat stanj, ki ga poganja razporednik, kar izjemno otezuje staticno sledenje logiki. Vsi kodnih bloki so postavljeni na isto raven in nadzorovani s stikalno spremenljivko. Branilci bi morali prepoznati, da je mocno sploscen nadzorni tok sam po sebi indikator zamegljevanja in zato sumljiv.
- Vstavljanje mrtve kode - Dodajanje nefunkcionalne kode, ki se nikoli ne izvede, spremeni podpis datoteke brez vpliva na funkcionalnost. Branilci bi se morali osredotociti na vedenjsko analizo namesto ujemanja podpisov, ko se sumi vstavljanje mrtve kode, saj dejansko zlonamerno vedenje ostaja dosledno.
- Neprozorni predikati - To so pogojni stavki, ki se vedno ovrednotijo na isti rezultat, vendar se zdijo dvoumni orodjem za staticno analizo. Dodajajo lazne veje, ki zmedejo avtomatizirano analizo. Napredni razkompilatorji lahko vckasih identificirajo in odstranijo neprozorne predikate, vendar ostajajo ucinkoviti proti enostavnejsim orodjem za analizo.
Okolje zamegljevanja PowerShell
PowerShell je mocno ciljan za zamegljevanje, ker je mocen napadni vektor, ki je tudi mocno nadzorovan. Razumevanje okolja zamegljevanja branilcem pomaga zgraditi boljse zaznave, specificne za PowerShell.
- Manipulacija zetonov - PowerShell omogoca obsezno manipulacijo svojih sintakticnih zetonov. Ukazi so lahko zapisani z nakljucno uporabo velikih crk, vstavljanjem povratnih kljukic, zamenjavo spremenljivk in oblikovanjem nizov. Na primer, preprost cmdlet je mogoce prepisati na ducate nacinov, ki se vsi izvajajo identicno. Branilci bi morali normalizirati ukaze PowerShell pred uporabo pravil zaznave, odstraniti povratne kljukice, normalizirati velikost crk in razresiti vzdevke.
- Plasti kodiranja - Napadalci uporabljajo vec plasti kodiranja, zavijajo Base64 kodirane ukaze v druge plasti kodiranja. Parameter -EncodedCommand je dobro znan, vendar napadalci uporabljajo tudi kodiranje po meri znotraj skript. Branilci bi morali oznaciti globoko gnezdene vzorce kodiranja in spremljati skripte, ki vsebujejo vec operacij kodiranja ali dekodiranja, kot je pricakovano za njihov navedeni namen.
- Dekompozicija skriptnih blokov - Razbitje zlonamerne skripte na vec manjsih skriptnih blokov, od katerih vsak posamezno izgleda benigno, premaga analizo posameznih blokov. Branilci potrebujejo sisteme zaznave, ki lahko korelirajo vec skriptnih blokov iz iste seje za identifikacijo zlonamernega namena, ki sega cez vec izvrsnih enot.
Zaznava in obramba pred zamegljevanjem
Zaznavanje zameglenih koristnih vsebin zahteva premik onkraj zaznave na osnovi podpisov k sprejetju vedenjskih in hevisticnih pristopov. Tu so strategije, ki jih priporocam svojim strankam.
- Meritev entropije zamegljevanja - Zameglena koda ima obicajno visjo entropijo (nakljucnost) kot legitimna koda. Orodja, ki merijo entropijo skript, ukaznih vrstic in vsebine datotek, lahko oznacijo potencialno zamegleno vsebino za nadaljnjo analizo. Skripte PowerShell z visoko entropijo zahtevajo dodaten nadzor.
- Razmestitev vedenjske zaznave - Ker zamegljevanje spremeni, kako koda izgleda, ne pa kaj pocne, je vedenjska zaznava, ki spremlja dejanja med izvajanjem, po naravi odporna na zamegljevanje. Osredotocite svoje inzenirstvo zaznave na vedenja, ki so pomembna, kot so dostop do poverilnic, stransko premikanje in ekstrakcija podatkov, namesto na specificne vzorce kode, ki jih implementirajo.
- Izkoriščajte AMSI za razmeglevanje - Kot je opisano v moji prejsnji objavi o AMSI, ta vmesnik vidi razmegleno obliko skript pred izvajanjem. Zagotovite, da je AMSI aktiven in da ima vas ponudnik protivirusne zascite trenutne podpise za znane zlonamerne vzorce v njihovi razmegleni obliki.
- Omogocite celovito belezenje PowerShell - Belezenje skriptnih blokov (dogodek ID 4104) zajame razmegleno vsebino skript PowerShell in zagotavlja cist vpogled v to, kar se je dejansko izvrsilo, ne glede na to, koliko plasti zamegljevanja je bilo uporabljenih. To je eno najmocnejsih orodij, ki jih imajo branilci proti zamegljevanju PowerShell.
- Uporabite peskovnisko detonacijo - Predlozite sumljive datoteke in skripte v peskovnisko okolje za dinamicno analizo. Peskovniki izvrsijo kodo in opazujejo njeno vedenje, pri cemer zaobidejo vse plasti zamegljevanja. Integrirajte peskovnisko analizo v vase delovne tokove varnosti e-poste in zascite koncnih tock.
Testiranje vase zaznave zamegljevanja
- Testiranje proti ciljnemu AV in EDR - Med preizkusi vdorov dokumentiram, katere tehnike zamegljevanja zaobidejo klientov sklad zaznave in na kateri ravni. To razkrije specificne vrzeli v zaznavi, ki jih je treba odpraviti.
- Uporaba vec skenirnih mehanizmov - Noben posamezen mehanizem ne ulovi vsega. Testirajte zameglene vzorce proti vec mehanizmom zaznave, da razumete svojo celotno pokritost in identificirate, kateri mehanizmi zagotavljajo najboljso zaznavo zamegljevanja.
- Loceno testiranje zaznave med izvajanjem - Preverite, da tudi ce staticna zaznava zgresi zamegleno koristno vsebino, vase zmoznosti vedenjske in zaznave med izvajanjem ujamejo zlonamerna dejanja, ko se koristna vsebina izvede.
- Uravnotezite svojo strategijo zaznave - Cilj ni premagati vsega zamegljevanja prek staticne analize, kar je oborozitvena tekma, ki je ne morete zmagati. Namesto tega zgradite uravnotezeno strategijo, kjer staticna zaznava lovi genericne groznje, vedenjska zaznava pa lovi sofisticirane, mocno zameglene koristne vsebine.
Zanima vas vec o tej temi? Preberite mojo strokovno stran o Evasion & EDR →
Komentarji
Ni se komentarjev. Bodite prvi!
Dodaj komentar