קוד ייעודי

קוד ייעודי (באנגלית: Shellcode) הוא חלק בקוד של אקספלויט המנצל פרצת אבטחה המהווה את ה"מטען המועיל" שיפעל על המחשב הנתקף. הקוד הייעודי בדרך כלל מתחיל בפקודת מעטפת שמאפשרת לשלוט במחשב המותקף. קוד ייעודי בדרך כלל כתוב בשפת מכונה.

הוא נקרא כך כי הוא נכתב לרוב ב"שפת מכונה", ולכן בדרך כלל, מתאים רק לצירוף אחד מסוים של מעבד, מערכת הפעלה ו"חבילת עדכון" (באנגלית: Service Pack), ולכן הוא ייעודי.
לצירוף כזה של מעבד, מערכת הפעלה וחבילת עדכון - נהוג לקרוא "פלטפורמה" בהקשר זה. לעיתים, ניתן לכתוב "קוד ייעודי" שמתאים ליותר מפלטפורמה אחת.

כתיבת קוד ייעודי, ניתוח מה הוא עושה, ההתאמה לפלטפורמות שונות, "חתימת קוד ייעודי מוכר", היכולת לפתח וריאציות שלו כדי להתחמק מתוכנות "אנטי וירוס" וכדומה - הם מרכיב משמעותי בלוחמת סייבר.

סוגים של קוד ייעודי 

ישנן שתי משפחות של "קוד ייעודי": קוד מקומי וקוד מרוחק.

קוד ייעודי מקומי 
מונח זה מכוון שלמצב בו התוקף תוקף את המחשב שבו הוא כבר נמצא. ה"קוד הייעודי" משמש אותו להעלאת ההרשאות כך שיוכל להפעיל פונקציות "חזקות יותר" ובאמצעותן לממש התקפות "גלישת חוצץ" וכיוצא באלו.

קוד ייעודי מרוחק 
מונח זה מתייחס למצב בו התוקף תוקף מחשב אחר מהמחשב בו הוא משתמש, באמצעות הרשת. קיימות כמה שיטות ליצירת הקשר בין מחשב התוקף למחשב הנתקף ובדרך כלל, התוקף יעדיף שלא לפתוח התקשרות חדשה משום שהתקשרות כזו יכולה להיחסם על ידי מנגנוני חומת אש.

הורד ובצע (Download and execute) 
בשיטה זו, "הקוד הייעודי" מנחה את מכונת היעד להוריד תוכנה מהרשת/ מאתר אינטרנט ולהפעיל אותה. אפשרות נוספת, היא להוריד ספריית תוכנה שלמה מהרשת. היתרון של שיטה זו היא ש"הקוד הייעודי" יכול להיות קטן יחסי.

קוד ייעודי רב שלבי 
כאשר הקוד הייעודי "גדול מידי" מכדי לרוץ באותו Process במחשב היעד, יש גישה ולפיה ניתן להריץ רק חלק ממנו, אחר כך להוריד קטע נוסף, להריץ אותו וחוזר חלילה. גישה זו נקראת, קוד ייעודי רב שלבי, או באנגלית Staged Shellcode

ביצה חבויה 
כאשר התוקף לא יכול לדעת באיזה כתובת זיכרון ב-Process במחשב היעד, הקוד הייעודי יסיים לרוץ. בשיטת "ביצת פסחא", התוקף מכניס קוד קצר נוסף, בכתובת ידועה וקוד זה צריך לדעת למצוא את "הקטע העיקרי".

חביתה 
בדומה ל"ביצה חבויה", אלא שהתוקף משלב לתוך ה-Process מספר "חבילות קוד" שונות והקוד "המחפש", יודע למצוא את אותן חבילות קוד, לחבר אותן לוגית ולהריץ אותן יחד, באותו Process במחשב היעד.

חקירת קוד ייעודי
קוד ייעודי אינו קובץ בר-הרצה ובהתאם, יש לבצע טכניקות ייעודיות כדי לפענח מה תכליתו של הקוד.

פרצות אבטחה