Shellcode, çalışan bir programın kontrolünü ele geçirmek amacıyla bir bilgisayarın belleğine enjekte edilen makine kodu dizisi veya çalıştırılabilir talimatlardır. Böyle bir saldırıda, adımlardan biri, yürütülecek bir sonraki talimatı tanımlayan program sayacının kontrolünü kazanmaktır. Program akışı daha sonra eklenen koda yönlendirilebilir. Saldırgan makine kodu, saldırının yükü olarak adlandırılır ve genel olarak kabuk kodu terimi tarafından ifade edilen öğedir. Bu yöntem genellikle bir işletim sistemi komut kabuğu açarak bir saldırgana erişim vermek için kullanılır, bu nedenle genel olarak kod enjeksiyon saldırıları kabuk kod olarak bilinir hale gelmiştir.
Kullanılan güvenlik açığı, genellikle bir programın bellek atama, girdi verilerinin geçerliliğini denetleme ve bellek hatalarını işleme biçiminde oluşur. Yazılım geliştiriciler, genellikle girdi verilerini kesin olarak tanımlayarak ve uygunsuz değerleri reddederek bu tehditten kaçınabilirler. Seçilmezse, bu değer için ayrılan bellekten daha fazla depolama alanı gerektiren değerler kabul edilebilir. Bu, verilerin bir kısmının değerin atanan alanına bitişik bellek konumlarına yazıldığı bir arabellek taşması olarak adlandırılan bir güvenlik hırsızlığına neden olur. Dikkatlice manipüle edildiğinde, bu anormallik izinsiz giriş kodunun girmesine izin verebilir.
Shellcode normalde assembly, C veya C ++ gibi düşük seviyeli sistem erişimi olan bir programlama dilinde yazılır. Ancak hedeflenen güvenlik açığına bağlı olarak, aynı sonuç yorumlanmış bir betik dili için PERL gibi bir kod veya JAVA gibi bir sanal makine için bytecode eklenerek gerçekleştirilebilir. Kod, program sayacının ele geçirilmesinden önce, sırasında veya sonrasında yerleştirilebilir. Bu nedenle, müdahaleci kod, hedeflenen makinedeki bir dosyada bulunabilir veya gerçek zamanlı olarak bir ağ bağlantısı üzerinden iletilebilir.
Yerel kabuk kodu açıkları, saldırganın fiziksel erişime sahip olduğu bir makine üzerinde denetim sağlaması için tasarlanmıştır. Bu durumda, örneğin yönetici ayrıcalıklarına sahip bir hesap oluşturmak olabilir. Benzer şekilde, çalışan bir sürecin yüksek bir ayrıcalık seviyesine sahip olması halinde, başarılı bir istismar geçici olarak davetsiz misafire aynı düzeyde erişim sağlayacaktır.
Uzaktaki bir makinede çalışan işlemler, hedef bilgisayarla iletişim kurmak için standart ağ protokolleri kullanılarak kullanılabilir. Geri bağlanan kabuk kodu, hedef makineye izinsiz giriş yapan kişinin bilgisayarına bir bağlantı başlatmasını söyler. İzinsiz giriş yapan kişinin bağlantıyı başlatması durumunda, uzak makinedeki bağlantı noktası olarak adlandırılan bir ağ bağlantısının kontrolünü ele almaya çalıştığından, kodun bağlama adı verilir. Güvenlik duvarları nadiren giden bağlantıları yasakladığından bağlantı yöntemi daha yaygın olarak kullanılır.


