Shellcode

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 növləri

[redaktə | mənbəni redaktə et]

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 (uzaqdan)

[redaktə | mənbəni redaktə et]

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.

  1. Foster, James C.; Price, Mike. Sockets, Shellcode, Porting, & Coding: Təhlükəsizlik Mütəxəssisləri üçün Tərs Mühəndislik İstismarları və Alət Kodlaşdırması. Elsevier Science & Technology Books. 2005-04-12. ISBN 1-59749-005-9.
  2. Anley, Chris; Koziol, Jack. Shellcoder-in kitabçası: təhlükəsizlik boşluqlarının aşkar edilməsi və istismarı (2). İndianapolis, İndiana, UA: Wiley. 2007. ISBN 978-0-470-19882-7. OCLC 173682537.
  3. BHA. "Shellcode/Socket-reuse". 2013-06-06. 2022-12-23 tarixində arxivləşdirilib. İstifadə tarixi: 2013-06-07.
  4. eugene. "Shellcode əhatə edən memarlıq". Phrack. Phrack Inc. 2001-08-11. #0x0e of 0x12. 2021-11-09 tarixində arxivləşdirilib. İstifadə tarixi: 2008-02-29.

Xarici keçidlər

[redaktə | mənbəni redaktə et]
  • Shell-Storm Çox Platformalı örtük kodlarının verilənlər bazası.
  • Scdbg - Libemu emulyasiya kitabxanası (*nix/Windows) ətrafında qurulmuş shellcode debugger
  • Libemu - emulyasiyaya əsaslanan shellcode analiz kitabxanası (*nix/Cygwin)