Skip to main content

Hvad er en shellcode?

ShellCode er sekvens af maskinkode eller eksekverbare instruktioner, der injiceres i en computerehukommelse med det formål at tage kontrol over et kørende program.I et sådant angreb er et af trinnene at få kontrol over programtælleren, der identificerer den næste instruktion, der skal udføres.Programstrømmen kan derefter omdirigeres til den indsatte kode.Den påtrængende maskinkode kaldes nyttelasten for angrebet og er det element, der ofte henvises til af udtrykket shellcode.Denne metode er ofte blevet brugt til at give en angriberen adgang ved at åbne en driftssystemkommando -shell, så kodeinjektionsangreb generelt er blevet kendt som shellcode.

Den sårbarhed, der udnyttes typisk, involverer, hvordan et program tildeler hukommelse, kontrollerer gyldighedenaf inputdata og håndterer hukommelsesfejl.Softwareudviklere kan normalt undgå denne trussel ved strengt at definere inputdata og afvise forkerte værdier.Hvis det ikke er markeret, kan værdier, der har brug for mere lagerplads end den tildelte hukommelse til den værdi, accepteres.Dette medfører en sikkerhedsskib kaldet en bufferoverløb, hvor en del af dataene skrives til hukommelsessteder, der støder op til de værdier, der er tildelt.Når den omhyggeligt manipuleres, kan denne afvigelse gøre det muligt at introduceres påtrængende kode.

Shellcode er normalt skrevet på et programmeringssprog med adgang til lavt niveau, såsom montering, C eller C ++.Afhængig af den målrettede sårbarhed kan det samme resultat imidlertid realiseres ved at indsætte kode for et fortolket scriptingsprog, som Perl eller Bytecode for en virtuel maskine, såsom Java.Koden kan implanteres før, under eller efter kapring af programtælleren.Således kan den påtrængende kode være indeholdt i en fil på den målrettede maskine eller transmitteret over en netværksforbindelse i realtid.

Lokal ShellCode -udnyttelse er designet til at give en angriberkontrol over en maskine, som han eller hun har fysisk adgang til.Et mål i dette tilfælde kan være at oprette en konto med administratorrettigheder, for eksempel.Tilsvarende, hvis en løbsproces har et højt privilegiumniveau, ville en vellykket udnyttelse midlertidigt give det samme niveau af adgang til den indtrængende.

Processer, der kører på en fjernmaskine, kan udnyttes ved hjælp af standard netværksprotokoller til at kommunikere med målcomputeren.Connect-Back ShellCode instruerer målmaskinen til at starte en forbindelse til den indtrængende computer.Hvis den indtrængende initierer forbindelsen, kaldes koden et bindskal, da den forsøger at tage kontrol over en netværksforbindelse kaldet en port på fjernmaskinen.Tilslutningsmetoden er mere udbredt, da firewalls sjældent forbyder udgående forbindelser.