Shellcode (Örtük kodu və ya Qabıq kodu) — hakerlik zamanı proqram təminatı zəifliyinin istismarında faydalı yük kimi istifadə edilən kiçik kod parçasıdır. O, "örtük kodu" adlanır, çünki o, adətən təcavüzkarın pozulmuş maşını idarə edə biləcəyi bir əmr qabığını işə salır, həmçinin oxşar tapşırığı yerinə yetirən istənilən kod parçası shellcode adlandırıla bilər.[1] Faydalı yük funksiyası sadə qabıq yaradılması ilə məhdudlaşmadığından, bəziləri hesab edirlər ki, adın qabıq kodu kifayət deyil. Bununla belə, terminin dəyişdirilməsi cəhdləri geniş rəğbət qazanmayıb. Shellcode adətən maşın kodunda yazılır.[2]
Shellcode, hücumçuya işlədiyi maşın üzərində (lokal) və ya şəbəkə (uzaqdan) vasitəsilə başqa bir maşın üzərində nəzarət verməsindən asılı olaraq lokal və ya uzaq ola bilər.
Lokal örtük kodu maşına məhdud girişi olan, lakin həmin maşında daha yüksək imtiyazlı prosesdə zəiflikdən, məsələn, bufer daşması kimi istifadə edə bilən təcavüzkar tərəfindən istifadə edilir. Uğurla icra olunarsa, qabıq kodu hücumçunun maşına hədəflənmiş proseslə eyni yüksək imtiyazlarla girişini təmin edəcək.
Remote shellcode, təcavüzkar lokal şəbəkədə, intranetdə və ya uzaq şəbəkədə başqa bir maşında işləyən həssas prosesi hədəfləmək istədikdə istifadə olunur. Uğurla icra olunarsa, shellcode təcavüzkarın şəbəkə üzərindən hədəf maşına girişini təmin edə bilər.[3]
Qabıq kodunun çoxu maşın kodunda yazılır, çünki zəiflikdən istifadə edilən aşağı səviyyədədir ki, təcavüzkar prosesə giriş imkanı verir. Buna görə də Shellcode tez-tez platforma adlanan prosessor, əməliyyat sistemi və xidmət paketinin konkret kombinasiyasını hədəfləmək üçün yaradılır. Bəzi istismarlar üçün hədəf proses tərəfindən qabıq koduna qoyulan məhdudiyyətlərə görə çox xüsusi qabıq kodu yaradılmalıdır.[4]Bu cür çox yönlülük adətən müxtəlif platformaları hədəfləyən qabıq kodunun çoxsaylı versiyasını yaratmaq və kodun işlədiyi platforma üçün düzgün versiyaya şaxələnən başlıq yaratmaqla əldə edilir. İcra edildikdə, kod müxtəlif platformalar üçün fərqli davranır və işlədiyi platforma üçün qabıq kodunun sağ hissəsini icra edir.