Skip to main content

Hva er en skallkode?

ShellCode er sekvens av maskinkode, eller kjørbare instruksjoner, som blir injisert i et datamaskinminne med den hensikt å ta kontroll over et løpende program.I et slikt angrep er et av trinnene å få kontroll over programtelleren, som identifiserer neste instruksjon som skal utføres.Programflyt kan deretter omdirigeres til den innsatte koden.Den påtrengende maskinkoden kalles nyttelasten til angrepet og er elementet som ofte refereres til av begrepet skallkode.Denne metoden har ofte blitt brukt til å gi en angriper tilgang ved å åpne et operasjonssystemkommando -skall, så kodeinjeksjonsangrep generelt har blitt kjent som ShellCode.

Sårbarheten som blir utnyttet typisk innebærer hvordan et program tildeler minne, sjekker gyldighetenav inndata og håndterer minnefeil.Programvareutviklere kan vanligvis unngå denne trusselen ved å definere inputdata strengt og avvise feil verdier.Hvis de ikke er merket av, kan verdier som trenger mer lagringsplass enn minnet som er tildelt for den verdien, aksepteres.Dette forårsaker et sikkerhetsbukk kalt en bufferoverløp, der en del av dataene skrives inn i minneplasser ved siden av verdiene som er tildelt rom.Når denne anomalien nøye manipuleres, kan denne anomalien tillate påtrengende kode å bli introdusert.

ShellCode er normalt skrevet på et programmeringsspråk med systemtilgang på lavt nivå som montering, C eller C ++.Avhengig av den målrettede sårbarheten, kan det samme resultatet imidlertid realiseres ved å sette inn kode for et tolket skriptspråk, som Perl, eller bytecode for en virtuell maskin, for eksempel Java.Koden kan implanteres før, under eller etter kapring av programtelleren.Dermed kan den påtrengende koden være inneholdt i en fil på den målrettede maskinen eller overført over en nettverkstilkobling i sanntid.

Lokale skallkodeutnyttelser er designet for å gi en angriperkontroll over en maskin som han eller hun har fysisk tilgang til.Et mål i dette tilfellet kan være å opprette en konto med administratorrettigheter, for eksempel.Tilsvarende, hvis en løpsprosess har et høyt privilegiumnivå, vil en vellykket utnyttelse midlertidig gi samme nivå av tilgang til inntrengeren.

Prosesser som kjører på en ekstern maskin kan utnyttes ved hjelp av standard nettverksprotokoller for å kommunisere med måldatamaskinen.Connect-Back ShellCode instruerer målmaskinen om å sette i gang en tilkobling til inntrengerne-datamaskinen.Hvis inntrengeren initierer tilkoblingen, kalles koden en bindshell, da den prøver å ta kontroll over en nettverkstilkobling kalt en port på den eksterne maskinen.Tilkoblingsmetoden er mer brukt, siden brannmurer sjelden forbyr utgående tilkoblinger.