AMSIrako ofuskatze teknikak
Partekatu
Oso ona guztiontzat. Argitalpen honetan birusen aurkako (AV) script gaiztoak exekuzioan nola detektatzen dituzten eta Powershell-en script-ak nahasteko neurriei buruz hitz egingo dugu, haien exekuzioa AV-ek blokeatu ez dezan.
Dagoeneko aurreko artikuluetan ikusi denez, AMSI AV-a Powershell-ekin lotzen duen API bat da. Identifikatu script bat asmo txarra izan daitekeen exekuzioan eta, hala bada, blokeatu. Baina zeure buruari egin beharreko galdera hau da: nola detektatzen dute antibirusek scripta gaiztoa den? Galdera honen erantzuna AV sinadurak dira.
Birusen aurkako sinadurak Powershell-en
Birusen sinadura klasikoak malware lagin jakin batean ohikoak diren byte-sekuentzia jarraitua dira, hau da, byte-sekuentzia jarraitu hori fitxategi batean sartzen bada, fitxategi hori malwarea da.
Kontzeptu horri jarraituz, PowerShell-en birusen aurkako sinadurak hizkuntza honetan idatzitako scriptetan kate bereizgarriak adierazten dituzten eredu bereziak dira. Script bat Powershell kontsolan idazten denean, exekutatzen denean, AMSIk antibirusera bidaltzen du scripta eta detektatzen du scriptean sartutako kateren baten sinadura gaiztoa izan daitekeen edo kate osoa den eta hauek kasuak betetzen badira, scriptaren exekuzioa blokeatzen du birusen aurkakoak.
Horren adibide gisa, Powershell-en mimikatz erabiltzen saiatuko bagenu, mimikatz katea okerreko eskuetan gaiztoa izan daitekeen script bat dela ezaguna baita, deitzen saiatuz gero, fitxategia bidean ez dagoen arren, script-a aurkitu ez den errorea piztu baino lehen, scriptak elementu gaizto bat edo gehiago dituela eta birusak blokeatu duelako errorea eragingo du.
Gauza bera gertatzen da AMSI saihesbide batzuetan erabiltzen den amsiInitFailed katea idazten badugu, antibirusak detektatu eta blokeatu egingo du, kate zehatz honen antibirusean sinadura bat dagoelako:
Honek, beraz, eragozpen bat da script gaiztoak lehen aldiz exekutatzeko orduan, horregatik egin ohi dena script-kateak nahastea da, birusen kontrako sinadurarik ez edukitzeko eta, beraz, AV-rako detektaezin bihur dadin.
Ofuskatze-teknikak Powershell-en
AV detekzioa saihesteko, lausotze-teknikak erabiltzen dira script baten iturburu-kodea aldatzeko, detektatzeko eta aztertzeko zailagoa izan dadin. Teknika multzo hau hauek dira:
Base64 kodeketa eta deskodeketa:
Teknika hau Base64-n script-aren edukia kodetu eta exekuzio garaian deskodetzean datza, hau da, AV-aren abiarazle gisa jokatzen duen katea Base64-n kodetzen da eta script-en barruan deskodetzen da.
Lehen ikusi dugunez, amsiInitFailed katea detektatzen du AV-ek, baina base64ra pasatzen badugu katea YW1zaUluaXRGYWlsZWQ= bihurtzen da eta ASCII-ra itzultzen dugunean, jada ez da detektatzen, eta terminal bakoitzeko inprimatuko da.
Konkatenazioa eta pertsonaien ihesa
Powershell-en kateatu beharreko eragilea, beste hizkuntza askotan bezala, + karakterea da. Script baten kodea ezkutatzeko modu bat da barne hartzen duten eta sinadura AV-ean duten kateak zatitzea, horrela scripta idaztean eta exekuzioan kateatzean, antibirusak ez dezan antzematen egingo lukeen exekuzioa. kate hori gabe detektatu zatitutako katearen sinadura ez baitago bertan sartzen.
Ezkutatzeko beste modu bat kateetan ihes karakterea sartzea da, hau da, Powershell-en ` karakterea. Karaktere mota hau karaktere-kate baten barruan sartzen da normalean.
Kateak berrantolatzea formatuarekin
Powershell-ek kateen formatua ere barne hartzen du -f komandoa erabiliz. Honekin AV-k normalean sinadura bat duela hautemango lukeen kate bat idatz dezakegu eta exekuzioan berrantola dezakegu.
.NET metodoaren ispilua
Interneten AMSI saihesten duten script ugari daude. Ospetsuenetako bat hausnarketa metodoa erabiltzen duen Matt Graeberrena da.
.NET metodoen isla (reflection ingelesez) parametro publikoak zein pribatuak dituzten .NET motako datuak ikuskatzean, deitzea eta atzitzea da. Lehenespenez, PowerShell-ek publikoki eskuragarri dauden propietate eta metodoetarako sarbidea eskaintzen du, baina islapen APIak erabiliz, parametro pribatuetara sar zaitezke.
Metodoa honako hau da:
[Erref].Assembly.GetType('System.Management.Automation.AmsiUtils').GetField('amsiInitFailed','NonPublic,Static').SetValue($null,$true)
Hala ere, dagoeneko oso erabilia da, non goian deskribatutako teknika batzuk eta azalduko den teknika batzuk aplikatu behar dituzu antibirusak detektatzeko.
Scriptak lerro ezberdinetan zatitzea
Badira lerro bakarreko script asko hausnarketa bezalako metodoak erabiltzen dituztenak kateen katearekin batera, etab. Dena den, gidoi hauen erabilera hain zabalduta dagoenez, dagoeneko badaudela gidoi mota honetako sinadurak.
Hala ere, AMSI kexa ez dadin era sinple bat kodea lerro ezberdinetan zatitzea edo, Matt Graeber-en bezalako lerro bakarreko kodea bada, aldagai ezberdinetan zatitzea da. Modu honetan, lehen begiratuan zentzugabea dirudien arren, Powershell-en eta AMSI-n birusen aurkako sinadurek nola funtzionatzen duten azaldu dugunez, zentzuzkoa da scripta nahasteko modu hori posible izatea.
Ikus dezagun adibide batean.
Irudian ikus dezakegu lehenengoa jatorrizko gidoia dela eta bigarrenari karaktere kateen katea ezarri zaiola AV saihesten saiatzeko. Hala ere, hain da erabilia, ezen horrelako zerbaitek ez duela balio.
Baina gidoi hau lerro ezberdinetan banatzen badugu, gaia aldatzen da hurrengo irudian erakutsiko dizudan bezala:
Ikus dezakezunez, aldagai ezberdinetan banatuz gehi karaktere kateen katearen erabilera, AMSIk script hau detektatzea eragotzi daiteke eta saihesbidea behar bezala burutzen da.
Argitu behar da normalean teknika hauek aldi berean erabiltzen direla gidoi berean, argitalpen honetan azaltzen diren guztiak eraginkorragoak direlako elkarrekin egiten badira bereiz baino.
Hau dena da oraingoz. Hurrengo AMSIko artikuluetan saihesbide hauek egiteko teknika desberdinak ikusiko ditugu (haren gidoiak, jakina, hemen aipatutako teknika batzuekin lausotuta egongo dira).
Hurrengo mezura arte!
Justo Martín, < /span>Segurtasun-analista-en Zerolynx.