Inside the Dark Art of Linux Exploit Development: Unmasking the Secrets Hackers Don’t Want You to Know

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

מבוא לפיתוח כברות על לינוקס

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

אספקט מרכזי בפיתוח כברות בלינוקס הוא הכרות עם הארכיטקטורה הבסיסית, כולל ניהול זיכרון, בידוד תהליכים וראיונות קריאות מערכת. תוקפים לעיתים קרובות פונים לפרצות כמו הצפות זיכרון, באגים של שימוש לאחר שחרור, מצבי תחרות, ואימות קלט לא נכון. תהליך ההתקפה עשוי לדרוש לעקוף מנגנוני אבטחה מודרניים כמו רנדומיזציה של בניית שטח הזיכרון (ASLR), קנאריות סטאק, והגנות זיכרון לא ניתנות לביצוע (DEP/NX). כלים כמו GNU Project Debugger (GDB), IDA Pro, ו-Pwndbg נפוצים לשימוש בדיבוג וניתוח בינארים במהלך פיתוח כברות.

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

הבנת פרצות בלינוקס: סוגים ודוגמאות מעולם האמיתי

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

הצפות זיכרון מתרחשות כאשר תוכנה כותבת יותר נתונים לבופר ממה שהיא יכולה להחזיק, זה יכול לגרום לשכתוב בזיכרון סמוך ולאפשר ביצוע קוד שרירותי. דוגמה בולטת היא פגיעות CVE-2003-0352 בפונקציה do_brk() של קרנל הלינוקס, שהאפשרה העלאת הרשאות מקומית. פגיעויות שימוש לאחר שחרור, שבהן מתבצע גישה לזיכרון לאחר ששוחרר, עלולות להוביל להוצאה לפועל של קוד או חשיפת מידע, כפי שראינו ב-CVE-2016-0728 שהשפיעה על מתקן המפתח בקרנל הלינוקס.

בעיות תחרות, כמו באגים של זמן בדיקה וזמן שימוש (TOCTOU), מנצלים את הפער בין בדיקות אבטחה לשימוש במשאבים. הפגיעות CVE-2016-5195 "Dirty COW" היא דוגמה בולטת, מאפשרת לתוקפים לקבל גישה כתיבה על מיפויים של זיכרון בקראית. פגמים בהעלאת הרשאות, שלרוב נובעים מהגדרות הרשאות לא נכונות או באגים בקרנל, מאפשרים לתוקפים להשיג הרשאות גבוהות יותר, כמו שהודגם ב-CVE-2021-3156 ביישום sudo.

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

כלים וסביבות חיוניות לפיתוח כברות

פיתוח כברות בלינוקס באופן יעיל תלוי במידה רבה על סט חזק של כלים וסביבות מוגדרות בקפידה. בדרך כלל מעדיפים הפצות אמינות של לינוקס כמו Kali Linux או Parrot Security OS בגלל הכלים לאבטחה ודיבוג המותקנים מראש. לניתוח קוד מקור ובחינת בינארים, כלים כמו GNU Debugger (GDB) הם חיוניים, ובדרך כלל מוגברים בתוספים כמו Pwndbg או PEDA כדי לייעל את זרימת העבודה בפיתוח כברות.

פלטפורמות וירטואליזציה, הכוללות את Oracle VM VirtualBox ואת VMware Workstation, מאפשרות לחוקרים ליצור סביבות מבודדות, שקל לשחזר אותם לבדיקה בטוחה של כברות. גם שימוש בקונטיינרים עם Docker הופך לפופולרי יותר ויותר עבור הגדרות בדיקה שניתן לשחזר ולהשמיד. לניתוח דינמי, strace ו-ltrace מספקים תובנות על קריאות מערכת וספריות, בעוד IDA Pro ו-Ghidra מציעים יכולות דיוספרציה והפיכה מתקדמות.

התקפות מבוססות רשת נהנות מכלי יצירת חבילות והאזנה כמו Wireshark ו-Nmap. עבור פאזינג, American Fuzzy Lop (AFL) ו-Honggfuzz נמצאים בשימוש נרחב כדי לגלות פרצות. לבסוף, ניהול גרסאות עם Git וכלי תיעוד כמו Markdown עוזרים לשמור על מחקר מאורגן וניתן לשחזור.

הנדסה הפוכה של בינארים בלינוקס

הנדסה הפוכה של בינארים בלינוקס היא מיומנות בסיסית בפיתוח כברות בלינוקס, המאפשרת לחוקרי אבטחה ולתוקפים כאחד להבין כיצד תוכניות מקומפלות פועלות בברמה נמוכה. תהליך זה כולל בדרך כלל פירוק או הפיכה של קבצי Executable כדי לנתח את שליטת הזרימה, מבני הנתונים, והמנגנוני אבטחה המיושמים. כלים כמו GNU Debugger (GDB), IDA Pro, ו-Radare2 נפוצים לשימוש לבדוק בינארים, להציב נקודות עצירה ולעקוב אחרי ביצוע התוכנית.

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

בנוסף, הנדסה הפוכה חיונית לעקיפה של מיתונים אבטחה מודרניים כמו רנדומיזציה של שטח זיכרון (ASLR), Executables בלתי תלויות מיקום (PIE), והגנות סטאק. הבנת האופן שבו מיתונים אלו מיושמים בבינארי מאפשרת למפתחים להתמודד עם טכניקות כדי לעקוף אותם, כמו דליפת מידע או תכנות מבוסס חזרה (ROP). שליטה בהנדסה הפוכה לא רק מסייעת ביצירת כברות אלא גם בפיתוח תיקונים ומיתונים אפקטיביים, מה שהופך אותה לתחום קריטי גם במחקר אבטחה התקפי וגם בהגנתי. למידע נוסף, ראה קרן הלינוקס ו-פרויקט Openwall.

התקפות על פגיעות בזיכרון: הצפת אוויר, שימושים לאחר שחרור ועוד

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

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

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

טכניקות הסללה בהרשאות בלינוקס

הסללה בהרשאות היא שלב קריטי בפיתוח כברות בלינוקס, המאפשר לתוקפים להשיג הרשאות גבוהות יותר לאחר הגישה הראשונית. טכניקות עבור הסללה בהרשאות בדרך כלל מנצלות הגדרות לא נכונות, בינארים פגיעים או פגמים בקרנל. שיטה נפוצה אחת כוללת שימוש בבינארים setuid—קבצים Executable שמופעלים עם הרשאות בעל הקובץ, לעיתים קרובות root. תוקפים מחפשים בינארים setuid עם permissions לא מאובטחים או פרצות שניתן לנצל, כך שהם יכולים לבצע קוד שרירותי כ-root. כלים כמו GNU Findutils ו-GNU Coreutils יכולים לעזור במספור בינארים כאלה.

טכניקה נוספת הנמצאת בשימוש נפוץ פונה להגנות תפריטי הקובץ הרגישות כמו /etc/passwd או /etc/shadow. אם קבצים אלה ניתנים לכתיבה, תוקפים יכולים להזרקה של משתמשים חדשים או לשנות את האשכולות של הסיסמאות כדי להעלות הרשאות. ניצול פגיעויות בקרנל גם חשוב; פגמים במודולים של קרנל או קריאות מערכת יכולים להנצל כדי להוציא קוד עם הרשאות ברמת קרנל. מאגרי מידע ציבוריים כמו CVE Details ו-המאגר הלאומי לפגיעויות הם משאבים חיוניים זיהוי פרצות כאלה.

בנוסף, תוקפים עשויים לנצל הגדרות לא נכונות של כללי sudo, המאפשרות להם להריץ פקודות כ-root מבלי לעבור אימות נכון. טכניקות כמו מניפולציה של משתני סביבה, ניצול הגדרות PATH לא נכונות, או ניצול סקריפטים הניתנים לכתיבה שמבוצעים על ידי שירותים בעלי הרשאות גבוהות גם נפוצות. כלים אוטומטיים כמו LinPEAS ו-LinEnum מסייעים בזיהוי שיטות הסללה בהרשאות בצורה שיטתית. הבנה ומיתון של טכניקות אלו ממרה היא חיונית כדי להגן על מערכות הלינוקס מפני איומים לאחר ניצול.

עקיפת מנגנוני האבטחה המודרניים של לינוקס (ASLR, DEP, קנאריות סטאק)

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

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

DEP/NX מגדיר אזורי זיכרון מסוימים כלא ניתנים לביצוע, מונע את ביצוע הקוד המוזן על הסטאק או הערימה. כדי לעקוף את DEP, תוקפים לעיתים קרובות משתמשים בתכנות מבוסס חזרה (ROP), מחברים יחד קטעי קוד קטנים (gadgets) שכבר נמצאים בזיכרון Executable כדי לבצע פעולות שרירותיות מבלי להזרים קוד חדש רד האט.

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

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

כתיבת ובדיקת כברות: הליך צעד אחר צעד

כתיבת ובדיקת כברות בסביבות לינוקס דורשת גישה שיטתית המשלבת ניתוח פגיעויות, יצירת מטלות ובדיקות מחודשות. התהליך מתחיל בדרך כלל עם זיהוי בינארי או שירות פגיע, לעיתים קרובות באמצעות טכניקות כמו פאזינג או ניתוח קוד סטטי. ברגע שנמצאת פגיעות כמו הצפת זיכרון או שימוש לאחר שחרור, השלב הבא הוא לנתח את הבינארי באמצעות כלים כמו GNU Project Debugger (GDB) או Pwndbg כדי להבין את פריסת הזיכרון, זרימת השליטה והשפעת הפגם.

לאחר מיפוי הפגיעות, כותבי כברות יוצרים מטלה להוכחת הרעיון. לדוגמה, בהצפת בופר מבוססת סטאק, זה עשוי לכלול שחזור את הכתובת החזרה כדי לכוון את הביצוע לקוד של סדק. כלים כמו Pwntools מקלים על יצירת מטלות ואינטראקציה עם התהליך המיועד. במהלך שלב זה, חיוני לקחת בחשבון מיתונים מודרניים כמו רנדומיזציה של שטח זיכרון (ASLR), קנאריות סטאק, והגנות על ערימות שאינן ניתנות לביצוע (NX). עקיפת הגנות אלו עשויה לדרוש טכניקות כמו תכנות מבוסס חזרה (ROP) או דליפת מידע.

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

חשיפה אחראית וסקירות אתיות

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

שיקולים אתיים חורגים מעבר לחשיפה. חוקרים צריכים להימנע מבדיקות לא מורשות על מערכות הפקה, לכבד את פרטיות המשתמשים ולעמוד בחוקיים כמו חוק הונאה ופשע במחשבים (CFAA) בארצות הברית. ארגונים רבים, כולל רד הא>, ו-דביאן, מספקים הנחיות ברורות לדיווח על פרצות, ומדגישים שיתוף פעולה ושקיפות.

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

אסטרטגיות הגנה: חיזוק לינוקס נגד כברות

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

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

חיזוק המערכת כולל גם פריסת מודולי אבטחה כמו מודולי אבטחה של לינוקס (LSM) והפעלת תכונות של קרנל כמו הגנת סטאק, FORTIFY_SOURCE, ו-Exec Shield. תכונות אלה מסייעות למנוע טכניקות ניצול נפוצות כמו הצפות של בופר והזרקת קוד.

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

משאבים והצעדים הבאים למפתחים שואפי כברות

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

ספרים כמו "The Art of Exploitation" ו-"Linux Kernel Development" מציעים ידע תאורטי ומעשי מעמיק. בנוסף, קורסים וסדנאות מקוונות מארגונים כמו Offensive Security וצוות Corelan מאוד מוערכים עבור גישת הלימוד המובנת והמעשית לפיתוח כברות.

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

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

מקורות והפניות

Hacking Knowledge

ByQuinn Parker

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

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *