Wat is een shellcode?
ShellCode is de volgorde van machinecode of uitvoerbare instructies, die in het geheugen van een computer wordt geïnjecteerd 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 geworden als ShellCode.
De kwetsbaarheid die wordt gebruikt, omvat meestal hoe een programma geheugen toewijst, de geldigheid van invoergegevens controleert en geheugenfouten behandelt. Softwareontwikkelaars kunnen deze dreiging meestal vermijden door invoergegevens strikt te definiëren en onjuiste waarden af te wijzen. Indien ongecontroleerd, waarden die meer opslagruimte nodig hebben dan het geheugen AllottED voor die waarde kan worden geaccepteerd. Dit veroorzaakt een beveiligingsstuit dat een bufferoverloop wordt genoemd, waarbij een deel van de gegevens wordt geschreven in geheugenlocaties naast de toegewezen ruimte van de waarde. 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 aanvallercontrole over een machine te geven aan Which hij of zij heeft fysieke toegang. 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 computer van de indringer te starten. 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.