Skip to main content

Wat is een shellcode?

ShellCode is de volgorde van machinecode of uitvoerbare instructies, die wordt geïnjecteerd in een computersgeheugen met de bedoeling om controle over een hardloopprogramma te nemen.In een dergelijke aanval is een van de stappen om controle te krijgen over de programmateller, die de volgende instructie identificeert die moet worden uitgevoerd.Programmastroom kan vervolgens worden doorgestuurd naar de ingevoegde code.De opdringerige machinecode wordt de payload van de aanval genoemd en is het element dat gewoonlijk wordt verwezen door de term shellcode.Deze methode is vaak gebruikt om een aanvallerstoegang te verlenen door een opdrachtopdrachten van het Operation System -opdracht te openen, dus code -injectieaanvallen in het algemeen zijn bekend als ShellCode.

De kwetsbaarheid die wordt gebruikt, omvat meestal hoe een programma geheugen toewijst, controleert de geldigheidvan invoergegevens en verwerkt geheugenfouten.Softwareontwikkelaars kunnen deze dreiging meestal vermijden door invoergegevens strikt te definiëren en onjuiste waarden af te wijzen.Indien ongecontroleerd, kunnen waarden die meer opslagruimte nodig hebben dan het geheugen dat voor die waarde is toegewezen, kunnen worden geaccepteerd.Dit veroorzaakt een beveiligingsstuit dat een bufferoverloop wordt genoemd, waarbij een deel van de gegevens wordt geschreven in geheugenlocaties naast de toegewezen waarden.Wanneer het zorgvuldig wordt gemanipuleerd, kan deze anomalie mogelijk maken om opdringerige code te worden geïntroduceerd.

Shellcode wordt normaal geschreven in een programmeertaal met systeemtoegang op laag niveau, zoals montage, C of C ++.Afhankelijk van de beoogde kwetsbaarheid, kan hetzelfde resultaat echter worden gerealiseerd door code in te voegen voor een geïnterpreteerde scripttaal, zoals Perl, of bytecode voor een virtuele machine, zoals Java.De code kan worden geïmplanteerd vóór, tijdens of na de kaping van de programmateller.De opdringerige code kan dus worden opgenomen in een bestand op de beoogde machine of in realtime via een netwerkverbinding worden verzonden.

Lokale shellcode -exploits zijn ontworpen om een aanvallersbeheersing te geven over een machine waartoe hij of zij fysieke toegang heeft.Een doelstelling in dit geval kan zijn om bijvoorbeeld een account aan te maken met beheerdersrechten.Evenzo, als een loopproces een hoog privilege -niveau heeft, zou een succesvolle exploit tijdelijk hetzelfde toegangsniveau tot de indringer geven.

Processen die op een externe machine worden uitgevoerd, kunnen worden benut met behulp van standaard netwerkprotocollen om te communiceren met de doelcomputer.Connect-back ShellCode instrueert de doelmachine om een verbinding met de indringerscomputer te initiëren.Als de indringer de verbinding initieert, wordt de code een bindshell genoemd, omdat deze probeert de controle te nemen over een netwerkverbinding die een poort op de externe machine wordt genoemd.De verbindings-back-methode wordt breder gebruikt, omdat firewalls zelden uitgaande verbindingen verbieden.