Hvad er en Shellcode?
Shellcode er sekvens af maskinkode eller eksekverbare instruktioner, der indsprøjtes i en computers hukommelse 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 indgribende maskinkode kaldes nyttelasten for angrebet og er det element, der almindeligvis omtales af udtrykket shellcode. Denne metode er ofte blevet brugt til at give en angriber adgang ved at åbne et operativsystemkommandoskal, så kodeinjektionsangreb generelt er blevet kendt som shellcode.
Sårbarheden, der udnyttes, involverer typisk, hvordan et program tildeler hukommelse, kontrollerer gyldigheden af inputdata og håndterer hukommelsesfejl. Softwareudviklere kan normalt undgå denne trussel ved nøje at definere inputdata og afvise forkerte værdier. Hvis det ikke er markeret, kan værdier, der har behov for mere lagerplads end den hukommelse, der er tildelt til denne værdi, muligvis accepteres. Dette medfører en sikkerhedsklods, der kaldes en bufferoverløb, hvor en del af dataene skrives til hukommelsesplaceringer ved siden af værdien, der er tildelt plads. Når den er omhyggeligt manipuleret, kan denne afvigelse tillade indførelse af indgribende kode.
Shellcode skrives normalt på et programmeringssprog med systemadgang på lavt niveau, såsom montering, C eller C ++. Afhængigt af den målrettede sårbarhed kan det samme resultat dog realiseres ved at indsætte kode for et tolket scriptingsprog, som PERL eller bytecode for en virtuel maskine, såsom JAVA. Koden kan implanteres før, under eller efter kapring af programtælleren. Den indgribende kode kan således være indeholdt i en fil på den målrettede maskine eller transmitteret via en netværksforbindelse i realtid.
Lokale shellcode-udnyttelser er designet til at give en angriber kontrol 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, f.eks. Tilsvarende, hvis en kørende proces har et højt privilegieniveau, 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 standardnetværksprotokoller til at kommunikere med målcomputeren. Tilslut-back-shellcode instruerer målmaskinen om at starte en forbindelse til den ubudenheds computer. Hvis den indtrængende initierer forbindelsen, kaldes koden en bindeskal, da den forsøger at tage kontrol over en netværksforbindelse, der kaldes en port på fjernmaskinen. Tilslutningsmetoden er mere udbredt, da firewalls sjældent forbyder udgående forbindelser.