
הטקסט המלא של הדקות הראשונות בהרצאה «העלאת הרשאות - הסבר נוסף (חלק 1)» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום, אני ערן, והיום אנחנו נדבר על Privileged Escalation. Privileged Escalation זה בעצם כינוי למגוון של טכניקות שאנחנו יכולים להשתמש בהן על מנת להעלות את ההרשאות שלנו כלפי מעלה.
למשל, לעבור מיוזר סטנדרטי להיות יוזר בעל הרשאה אדמיניסטרטיבית על המחשב המקומי, ולעבור מיוזר בעל הרשאה אדמיניסטרטיבית על המחשב המקומי, לאולי יוזר שיש לו הרשאה אדמיניסטרטיבית על מגוון מחשבים, מה שנקרא גם Domain User.
פריבליג' אסקלשן אנחנו נחלק לשני וידאוים הוידאו הראשון יהיה פריבליג' אסקלשן בווינדאוז והוידאו השני יהיה פריבליג' אסקלשן בלינוקס החלק הראשון של כל וידאו יעסוק במעט תיאוריה אתם צריכים בעצם להבין קצת יותר לעומק את מבנה ההרשאות ואיך מערכת ההפעלה אוכפת את ההרשאות כל אחת בנפרד ואז נדבר על כל מיני
שיטות וטכניקות ומנגנונים שאנחנו יכולים לנצל לטובתנו כדי להעלות את ההרשאות שלנו כלפי מעלה. נתחיל עם מבנה ההרשאות ואכיפת ההרשאות בווינדאוז.
נתחיל בתיאור של הדרך שבה ווינדאוז אוכפת מנגנוני הרשאות. אז מה שבעצם קורה זה שבתוך כל מערכת הפעלה יש קרנל וווינדאוז הוא לא אקספצ'ן למשפט הזה ובתוך הקרנל של ווינדאוז יש רכיב מאוד מסוים שנקרא SRM, Security Reference Monitor.
בואו נראה תמונה של פחות או יותר בערך איפה הוא יורד. הנה הוא יושב כאן, אפשר לראות שהוא נמצא בתוך הקרן ללמוד שזה בעצם האזור שבו מערכת ההפעלה מנהלת את כל האלמנטים הפנימיים שלה וכל התוכנות המשתמשים בעצם רצות ביוזר מוד באזור של המשתמש.
ברגע שאני מריץ איזושהי תוכנה של תוכנת משתמש כלשהי כמו למשל נוטפאד או כל דבר כזה או אחר, התוכנה הזאת בעצם דרך שפה מסוימת מבקשת כל מיני פעולות שרוצה שהקרנל יבצע והקרנל אחראי להעביר את זה הלאה אל החומרה.
מי שאחראי להגיד האם ליוזר הספציפי שביקש את אותה פעולה יש הרשאה לבצע את הפעולה שהוא ביצע זה בדיוק הרכיב הזה שנקרא srm. איך הוא עושה את זה? יש לו פונקציה מאוד מאוד פשוטה שנקראת se access check שמקבלת שלושה פרמטרים.
הפרמטר הראשון זה בעצם הטוקן של היוזר שזה אלמנט שמחזיק את הזהות שלו. אנחנו נראה איך הטוקן של windows נראה, מי מייצר אותו ואיך הוא נוצר ומה יש בפנים. עוד כמה דקות.
היא מקבלת את האובייקט שאליו היוזר רוצה לגשת. האובייקט יכול להיות כל דבר, זה יכול להיות File System Object, כמו Directory או File, זה יכול להיות Registry Key, זה יכול להיות כל דבר כזה או אחר שמנוהל בתוך המערכת.
והיא מקבלת את סוג הפעולה שהיוזר רוצה לבצע. הפעולה יכולה להיות למשל Read, Write או נגיד Print אם מדובר במדפסת. ואחראית לתת לקרנל תשובה האם ליוזר הספציפי זה מותר לבצע את הפעולה הספציפית הזאת על האובייקט הספציפי הזה.
למשל, אם היוזר רואה מדפסת והוא רוצה להדפיס מתוך המדפסת, אז תוכנה בתוך ה-user mode שולחת בקשה להדפסה, ה-SRM מסתכל על הטוקן של היוזר מצד אחד, על ההרשאות של המדפסת מצד שני ועל הפעולה שהיוזר רוצה לבצע על אותה מדפסת.
ואז הוא אחראי להגיד למערכת האם מותר ליוזר הזה לבצע את הפעולה הזאת או אם אסור לו. במקרה שהיוזר מקבל את ההרשאה או לא מקבל את ההרשאה, אפשר גם לבקש מהSRM לרשום את התוצאה של הבדיקה שלו בתוך איזשהו לוג שנקרא audit log.
כשאנחנו מנצלים הרשאות רגישות בתוך המערכת, מומלץ כמובן לנקות אחר כך לוגים. בואו נראה בעצם מה זה ה-access token של Windows, כמו שאמרתי לפני כמה דקות, שאני אסביר לכם עכשיו.
אז מה שבעצם קורה זה שבווינדאוז יש שני סוגים של חשבונות משתמשים יש מה שנקרא לוקל יוזר אקאונטס ודומיין יוזר אקאונטס אני מניח שאתם יודעים את ההבדל שלוקל יוזר אקאונטס בעצם נמצאים מקומית במחשב ודומיין יוזר אקאונטס נמצאים בתוך הדומיין קונטרולר ההבדל ביניהם הוא לא
קריטי למעט כרגע שהעניין הוא שאם אנחנו נצליח לקבל הרשאות של לוקל אדמיניסטרטור אנחנו כמובן נקבל הרשאות מלאות על המכונה ואם נקבל הרשאות של דומיין אדמיניסטרטור אנחנו נקבל הרשאות של אדמיניסטרטור גם במכונות אחרות אבל מה שאני בעצם רוצה לתאר כרגע זה עוד איזשהו
אלמנט בווינדוס גם יש מה שנקרא שני סוגי לוגונים לוגון ראשון, מה שנקרא אינטראקטיב לוגון, לוגון אינטראקטיבי זה לוגון שבעצם מסתיים בשולחן עבודה, זה בעצם הלוגון הקלאסי שבו אנחנו מקבלים את התפריט התחלה ואת השולחן עבודה שלנו עם הרקע וכל הדברים
ויש מה שנקרא נטוורק לוגון. נטוורק לוגון זה בעצם הלוגון שבו אנחנו משתמשים כדי להגיע למשאב רשת, אם זה תיקייה או קובץ, בדרך כלל אנחנו עושים את זה באמצעות איזשהו נתיב רשת שנראה כך, backslash, backslash, שם מחשב, backslash, שם של תיקייה או שם של מדפסת,
ואז אנחנו מקבלים איזשהו, אנחנו בעצם עושים לוגון אל הרשת. עכשיו, בגלל שיש לי local users ו-domain users, ויש לי אינטראקטיב לוגון, ונטוורק לוגון, זה בעצם אומר שאנחנו צריכים לדבר על ארבע מקרים.
מצב שבו יש לי לוקל יוזר שעושה לוגון אינטראקטיבי, מצב שבו יש לי דומיין יוזר שעושה לוגון אינטראקטיבי, מצב שבו לוקל יוזר עושה נטוורק לוגון, ומצב שבו דומיין יוזר עושה נטוורק לוגון.
בכל אחד המצבים המערכת מטפלת במבנה של ההרשאות שהיוזר מקבל בצורה קצת שונה, בצורה קצת שונה ואנחנו נצטרך פשוט קצת להבין את זה טיפה יותר לעומק.
אז מה שבעצם קורה זה שכל אחד מהלוגונים האלה מסתיים באובייקט במערכת שאליה עשיתי לוגון שנקרא access token. מה זה access token? access token זה בעצם איזשהו אובייקט שנמצא בזיכרון של המחשב שאליו התחברתי.
שוב פעם, אם אני עושה למשל לוגון עם דומיין יוזר והוא אינטראקטיבי למחשב המקומי שלי אז האקסס טוקן שאני מקבל נמצא אצלי אם אני עושה למשל איזשהו לוגון עם דומיין יוזר אבל למחשב מרוחק אז האקסס טוקן שאני מקבל נמצא בפועל אצל המחשב המרוחק הוא לא נמצא אצלי, הוא נמצא במחשב שאליו התחברתי
יוזרים מקבלים אקסס טוקנים בכל מיני מקומות לאורך היום זאת אומרת הם מקבלים קודם כל access token מקומי אצלם וכשהם ניגשים למשאבי רשת בתוך הארגון הם מקבלים access token במחשבים שאליהם הם ניגשו.
access token בעצם בנוי משלושה חלקים, החלק הראשון נקרא user seed. seed זה בעצם מזהה האבטחה של המשתמש, זה פשוט איזושהי תעודת זהות.
במקום לרשום את השם של היוזר בתוך הטוקן אנחנו רושמים איזשהו מספר שמייצג אותו בצורה חד חד ערכית או מקומית בתוך המחשב, אם מדובר בלוקל יוזר או בצורה חד חד ערכית בתוך הדומיין אם מדובר בדומיין יוזר החלק השני שיש בתוך האקסס טוקן נקרא Group Seeds ברבים כן זה בעצם הרשימה של המזהים של כל הקבוצות שהיוזר חבר בהם או באמצעות חברות ישירה או באמצעות חברות בקבוצות אחרות הרבה פעמים נהוג לצרף יוזר לקבוצה אחת
ולצרף את הקבוצה הזאת לקבוצה שנייה ואת זאת לקבוצה שלישית בתוך האקסס טוקן שאני מקבל צריכה להיות רשימה של כל הסידים, של כל התעודות זהות, של כל הקבוצות שבהן אני חבר או בצורה ישירה או דרך חברות בקבוצות אחרות והחלק האחרון זה החלק שהוא אולי גם בין החשובים ביותר לשיעור הזה
זה מה שנקרא Privilege Array פריבליג' הרי זה בעצם מערך של זכויות נוספות שהיוזר מקבל במחשב שאותם ה-SRM לא יכול לאכוף. למה הוא לא יכול לאכוף אותם?
מהסיבה שהם לא ניתנות עבור אובייקטים. בווינדוס יש רשימה של, אני חושב, משהו כמו 23 פריבליג'ים שמתוכם משהו כמו 6 או 7 הם פריבליג'ים שהם נחשבים סופר יוזר פריבליג'ס. פריבליג'ים שמקנים לנו איזושהי פעולה, איזושהי יכולת ככה מעבר ליוזר רגיל דוגמאות לפריבליג'ים שהSRM לא יכול לעקוף זה למשל SE Change System Time שמאפשרת ליוזר פשוט להחליף את השעה במערכת
או SE Backup ש-SE Backup זה בעצם פריבליג' שמאפשר ליוזר לבצע גיבוי וכן הלאה עכשיו למה אני מתכוון שאני אומר הSRM לא יכול לאכוף את הפריבליג'ז האלה?
למה ה-SRM לא יכול לאכוף את ה... למשל, אם אני משנה את התאריך והשעה? זה פשוט קורה מהסיבה שה-SRM צריך שלושה אלמנטים. הפונקציה של ה-SRM, שנקראת SE-Access-Check, מקבלת שלושה אינפוטים.
האינפוט הראשון זה ה-Access-Token, האינפוט השני זה האובייקט שאליו היוזר רוצה לגשת, והאינפוט השלישי זה בעצם מה היוזר רוצה לבצע.
אין אובייקט במערכת ההפעלה שמייצג את השעון. רעיון הוא חלק ממערכת ההפעלה, אין קובץ שהוא בעצם מחזיק את התאריך והשעה, אלא זה חלק מאיזושהי מערכת פנימית של Windows.
למה ה-SRM לא יכול לאכוף את ה-Backup Privilege? בגלל ש-Backup Privilege זה בעצם פריבילג' שאמור לעקוף את מה שה-SRM עושה. הרי כדי שאני אוכל לגבות את המחשב, אני צריך שתהיה לי יכולת לעקוף את כל מנגנון ההרשאות שקיים, ולכן ה-SE בקה פריביליג' זה בעצם פריביליג' שכאילו עוקף את ה-SRM.
אני לא... המטרה של ה-SE בקה פריביליג' היא בעצם לתת ליוזר הרשאות קריאה לכל הקבצים בתוך המערכת, וכמובן שהדבר הזה בעצם הוא עוקף את ה-SRM, ולכן ה-SRM לא יכול כאילו לאכוף אותו.
בואו נראה איך אנחנו יכולים לראות את ה-Access Token שקיבלנו מהמערכת. כדי לראות את זה יש כמה דרכים, הדרך הפשוטה ביותר זה פשוט לפתוח Command Prompt, פשוט מאוד, ולכתוב who-mi אנחנו יכולים לכתוב who-mi/user ולראות את החלק הראשון שזה בעצם ה-seed של המשתמש
אנחנו יכולים לראות who-mi/group ולראות באיזה קבוצות אני חבר זוהי בעצם רשימת הקבוצות ואפשר לראות שליד כל קבוצה יש seed שמייצג את הקבוצה הזאת ה-seed זה בעצם האלמנטים פה שמתחילים באות s ככה נראה seed ב-windows ו- whoami/privs מראה לי את הפריבליג' הרי שלי, את כל הפריבליג'ים שבעצם קיבלתי.
אפשר לראות שמה שקיבלתי מתוך המערכת זה בעצם change shutdown privilege, סליחה, se shutdown privilege, שמאפשר לי לכבות את המערכת, se change notify privilege, שמאפשר לי לבצע משהו שנקרא bypass traverse checking.
זה מונח, זה בעצם פריבילג' עם שם מאוד מאוד מפוצץ, אבל כל מה שהיא עושה היא בסך הכל מאפשרת לי להגיע לקובץ מסוים שיש לי הרשאות אליו גם אם אין לי הרשאות לספרייה. עכשיו זה קצת מצחיק, כי אני חייב לדעת במפורש את הנתיב של הקובץ, זאת אומרת אני כאילו יכול לכתוב notepad c.2/ לרשום פה איזושהי ספרייה שאין לי הרשאות אליה, ואז קובץ שאני כן יודע שיש לי הרשאות אליו,
אבל זה טיפה מצחיק, כי איך אני יודע בכלל שהקובץ הזה קיים אם אין לי הרשאות לספרייה? אבל זה בעצם פריבליג' שהוא קיים אצל כל היוזרים כדפולט. מייקרוסופט בעצם טוענת שאין שום בעיה לתת אותו ליוזרים, כי אם ליוזר יש כבר הרשאות
קריאה לקובץ והוא מכיר את הקובץ הזה, אז אין שום בעיה לתת לו את ההרשאות האלה. אסי אנדוק פריבליג' בעצם מאפשר לי לנתק את המחשב מתחנת הגינה, אם מדובר בלפטופ. יש בעצם בלפטופים ישנים, היו צריכים כזה לעשות אנדוק כמו שהיו עושים שאט דאון.
אסי אנקריס וורקינג סט פריבילג' בעצם מאפשר לי לקחת כל פרוסס במחשב ולתת לו עדיפות קצת יותר גבוהה מפרוסס אחר. ואסי טיימזון פריבילג' מאפשר לי לבצע בדיוק את מה שזה נשמע, לשנות את הטיימזון.
שימו לב שמה שאין לי פה זה Change System Time Privilege. אני לא יכול לשנות את הזמן כרגע כמו שהprivilege הרי שלי נראה.
שימו לב שלכל privilege יש state שהstate יכול להיות אחד משני דברים disabled או enabled אבל הstate הזה בעצם לא משנה כל עוד הprivilege קיים בתוך הטוקן אין שום בעיה לעשות לו enable מה זה אומר enable פשוט מייקרוסופט רצתה שתוכנות לא ישתמשו בפריבילג'ים שהן מקבלות מהמערכת בטעות
למשל, אם תוכנה קיים אצלה SC time zone privilege והיא מריצה בטעות פונקציה שמשנה את הtime zone בלי שבכלל היא התכוונה, זה יכול לקרות לפעמים המפתח של התוכנה עושה איזשהו באג בקוד או טעות בקוד שהוא כותב ואז הוא יכול לגרום לאיזושהי פעולה לא רצויה במערכת.
אז איך הם בעצם מונעים את זה? מה שהם בעצם אומרים זה שprivileg'ים מתחילים מאיזשהו state default TV שיכול להיות או Disabled או Unabled, אפשר לראות למשל שה-se-change-notify-privilege הוא כדיפולט, מתחיל כ-enabled, כל השאר מתחילים כ-disabled.
ואם תוכנה רוצה לנצל את הפריבילג' הזה, שני דברים צריכים להתרחש. מה צריך להתרחש? בואו נראה אתכם. נכון. קודם כל הפריבילג' חייב להיות קיים בתוך הטוקן, ואחרי זה הוא חייב להיות enabled.
תוכנה צריכה פשוט לבקש ממערכת ההפעלה להפוך לרגע את הפריבילג' להיות מ-disabled ל-enabled, לבצע את מה שהיא רצתה לבצע ואז לחזור חזרה אחורה ל-disabled.
בואו נראה כלי שנקרא Process Explorer. הכלי הזה יודע להראות לי בדיוק את מה ש-WhoMI יודע להראות לי. אגב, לא הראתי לכם את זה, אבל אם אני כותב WhoMI/all אני בעצם מקבל את שלושת החלקים של הטוקן שדיברנו עליהם, שזה גם היוזר,
גם ה- Group Information וגם ה-Privilege. הרי אני רוצה להראות לכם כלי אחר שנקרא Process Explorer, שיודע להראות לי בדיוק אותו דבר.
אז למה אני צריך אותו? העניין הוא שהוא.mi/all מראה לי בעצם את הטוקן כמו שחלונית ה-CMD הזאת רואה את הטוקן הזה. אבל מה שקורה זה שיש פרוססים שונים במחשב, שלכל פרוסס יכול להיות שיש טוקן קצת שונה, עם פריבליג'ים טיפה אחרים.
פרוסס אקספלורר זה בעצם כלי שיודע לקרוא את הטוקנים של הפרוססים ולהראות לי אותם בתצוגה מאוד דומה, אבל היתרון שלו זה שהוא יודע להתחבר גם לפרוססים אחרים ולא רק לפרוסס הנוכחי כמו הוא-אם-איי.
אז אני אעשה קליק אם אני run as administrator, אני רוצה שהוא ירוץ בתור אדמיניסטרטור, תכף אנחנו נראה גם מה המשמעות של running as administrator, ואני רוצה להסתכל על הטוקן של אותו CMD שזה הרגע פתחתי.
אז אני ניגש אליו, אפשר גם לראות אגב שהכלי הזה הוא מאוד מאוד מזכיר פשוט task manager, מי שמכיר מי זה. אני עושה קליק ימני על CMD, אני עושה פרופרטיז ואני נכנס פה לחוצץ סקיוריטי, בחוצץ סקיוריטי אני יכול לראות את השם של היוזר, את ה-seed של היוזר, אני יכול לראות את רשימת הקבוצות,
אוקיי? ואני יכול לראות את רשימת הפריבליג'ז, אם הם enabled או disabled כמו שראינו מי מקודם. מה שאני רוצה להראות לכם עכשיו זה מה זה המשמעות הזאת של פריבליג' שהופך להיות מ-disabled ל-enabled, אוקיי?
פריבליג' ש... עוד פעם, אמרנו שפריבלג'ים מתחילים באיזשהו סטייט דיפולטיבי כלשהו. הסטייט הזה יכול להיות Disabled, יכול להיות Enabled, והמטרה שלהם זה לשרת כמו נצרה ברימון, שתוכנה לא תשתמש באמת בפריבלג' בטעות, אלא צריכה לשחרר את הנצרה, לבצע את מה שהיא רוצה לבצע,
ואז להחזיר את הנצרה חזרה להיות בתוך הרימון, ולהגן מפני מקרים נוספים. אז מה שאני אעשה עכשיו, אני אריץ תוכנה שאמורה להשתמש ב-Change Time Zone Privilege, פשוט התוכנה הזאת, קליק כמני, פרופרטיז.
אנחנו נראה שנוצר פה פרוסס חדש שנקרא, סליחה, לא פרופרטיז, אלא Change Date and Time, יותר נכון? ואנחנו נראה שנוצר פה פרוסס חדש, הפרוסס הזה נקרא Run DLL 32, שבעצם מציג לי את הגוי היפה הזה שמאפשר לי לבצע Change Time Zone או Change Date and Time.
מה שקורה עכשיו זה שאם אני אסתכל על מערך הפריבליג'ים שלו, אנחנו נראה שיש לו את ה-Time Zone Privilege, אבל הוא נמצא בסטייט של Disabled.
זה אומר שהתוכנה הזאת כרגע לא יכולה להחליף Time Zone. וזה אומר שאם אני אלחץ על Change Time Zone, אם ה-Privilege הזה קיים בטוקן שלי, מה שהיא צריכה לעשות זה להוציא את הנצרה ולהפוך אותו להיות Enabled.
ובואו נראה אם אכן כך קרה. נו, מה אתם יודעים? זה מאפשר לי להחליף טיימזון, ללחוץ על אוקיי, ללחוץ על אוקיי, ואז כמובן שהנצרה חוזרת חזרה להיות במקום.
בווינדוס ויסטה ומעלה, מייקרוסופט הוסיפה פיצ'ר מאוד מאוד נחמד, אמנם קצת מעצבן, אבל הוא מאוד מאוד משפר את סביבת העבודה של המשתמשים מבחינת אבטחה, שנקרא User Account Control, זה אגב השם, מה שנקרא, השם ה-marketing term שלו, זאת אומרת, ככה קוראת לו מחלקת השיווק, ואנחנו נקרא לו כרגע בשפה המקצועית יותר
Windows Mandatory Integrity Mechanism. מה שבעצם הדבר הזה עושה, הוא עושה דבר מאוד מאוד הגיוני שלא היה קורה לפני Windows Vista. לפני Windows Vista, כשהייתי משתמש באיזשהו, נגיד בווינדוס אקספי או בווינדוס אלפיים לצורך העניין, כשהייתי עושה לוגון למערכת עם משתמש אדמיניסטרטיבי,
אוטומטית הייתי מקבל טוקן שמכיל את כל היכולות האדמיניסטרטיביות שלי בתוך הטוקן. היום זה לא המצב. מווינדוס ויסטה ומעלה מייקרוסופט שינתה את ההתנהגות של יצירת הטוקנים.
מה שקורה זה שבמהלך הלוגון מי שאחראי ליצור את הטוקן, שנקרא גם ה-LSA, Local Security Authority. אם הוא מזהה שאני חבר באחת מכמה קבוצות אדמיניסטרטיביות, כמו למשל אדמיניסטרייטורס, או דומיין אדמינס, או בקאפ אופרייטורס, או כל מיני קבוצות אדמיניסטרטיביות כאלה
שמסתובבות לנו בתוך המחשב, מייקרוסופט האמת מפרסמת באתר שלה בדיוק מה הן הקבוצות שהן התנאי כקריטריון למה שאני הולך להגיד עכשיו. אז אם יוזר אקאונט קונטרול מזהה שאני חבר באחת מהקבוצות האדמיניסטרטיביות של המחשב או לחילופין קיבלתי איזשהו טוקן קיבלתי סליחה איזשהו פריבליג' בתוך הטוקן שהוא מה שנקרא פריבליג'
שהוא סקיוריטי קונצרן כמו למשל SC Backup Privilege שמאפשר לי לקרוא את כל הקבצים במחשב או SC Take Ownership Privilege שמאפשר לי לקחת בעלות על כל הקבצים במחשב גם כאלה שאין לי הרשאות לגעת בהם.
אז אם ה-LSA שבמהלך יצירת הטוקן מזהה שאני או שאני חבר באחת מהקבוצות האדמיניסטרטיביות, או שקיבלתי איזשהו פריבליד שמבחינתם הוא פריבליד שמוגדר בעייתי, מה שאנחנו מקבלים מה-LSA כתוצאה זה לא טוקן אחד, אנחנו מקבלים שני טוקנים.
אנחנו מקבלים מה שנקרא פול טוקן, זה הטוקן המלא שמכיל את כל ההרשאות האדמיניסטרטיביות שלנו, אנחנו מקבלים גם רסטריקטד או פילטרד טוקן.
האמת שאפשר לראות את ההתנהגות הזאת בצורה מאוד מאוד יפה אם אני חוזר חזרה ל-who am I. אם אני כותב עוד פעם who am I slash all אז אני רואה שאני בעצם היוזר יוני, נכון? ואני רואה שאני חבר בקבוצה שנקראת built-in backslash administrators שזאת כמובן קבוצת האדמיניסטרטורים אבל כשאני מסתכל על מערך הפריבליג'ים שקיבלתי אני רואה שהוא מצומצם מאוד זאת אומרת שאני לא יכול
להשתמש בטוקן הזה כרגע כדי לבצע פעולות אדמיניסטרטיביות במחשב האמת, אני אפילו לא יכול להשתמש בו כדי ליצור קבצים על כונן C שימו לב, אני כותב כרגע echo test חץ c.2/1.txt וקיבלתי פה access denied, אני לא יכול לכתוב קבצים וליצור קבצים על כונן
C אם הייתי מנסה ליצור משתמש חדש, נט יוזר, דודו, סיסמה, אד, גם פה קיבלתי אקסדנאי, זאת אומרת, אני חבר בקבוצת האדמיניסטרטורים, אבל הטוקן שאני משתמש בו כדיפולט הוא מה שנקרא הטוקן המפולטר שלי, הטוקן המצומצם שלי.
מה מאפיין טוקן מפולטר? בטוקן מפולטר, מה שאנחנו בעצם מקבלים, אנחנו בעצם מקבלים מה שנקרא Restricted Privilege Array, זאת אומרת הם הוציאו את כל הפריבליג'ים שמגיעים לנו בתור אדמיניסטרטורים הם לקחו אותם והוציאו לנו אותם מתוך הטוקן למעט הפריבליג'ים הפשוטים שאט דאון כדי שנוכל לכבות את המחשב
בלי לעשות ראנז אדמיניסטרייטור בייפס טרוורס צ'אקינג כשאומרים שזה מבחינתם בסדר ו-SE טיימזון פריבליג' שימו לב שכשאני מנסה להחליף טיימזון אני לא מקבל איזשהו פרומפט שאומר לי שאני הולך עכשיו משהו אדמיניסטרטיבי במחשב, אלא רק הוא sendable
למרכיב. מצד שני, Change Date and Time, לידו יש ציור של מגן קטן. כשאתם רואים את הציור של המגן הקטן הזה, זה למעשה אומר שאתם תצטרכו להחליף טוקן כדי לבצע את הפעולה הזאת.
אתם תצטרכו לעבור מה-Restricted Token שלכם ל-Full Token, אם קיבלתם כזה. אז אנחנו מקבלים Restricted Privilege הרי, שמכיל רק את הפריבליג'ים שמייקרוסופט צימנה כפריבליג'ים שהם לא בעייתיים, כל הקבוצות האדמיניסטרטיביות שלנו, למשל אדמיניסטרטורס, דומיין אדמינס, סקימה אדמינס,
אנטרפרייז אדמינס, בקאפ אופרטורס, אם אני חבר בקבוצה שנחשבת קבוצה אדמיניסטרטיבית, היא הופכת מיד להיות DENI ONLY. מה זה DENI ONLY גרופ? DENI ONLY גרופ זה בעצם סוג של קבוצה שמיקרוסופט הוסיפה, המציאה בווינדוס ויסטה, והתפקיד שלה זה לקבל רק הרשאות דניי, זאת
אומרת לסבול מכל מה שדנייד במחשב, אבל לא ליהנות משום דבר שהוא allowed. אם אני אסתכל למשל על קבוצת האדמיניסטרטורים שבה אני חבר, אז מבחינת הטוקן הנוכחי שלי רשום פה שחור, סליחה, לבן על גבי שחור, Group used for deny only.
זאת אומרת שאני חבר בקבוצת האדמיניסטרטורים, אבל אני לא חבר בה באופן מלא. אני לא אקבל את הרשאות ה-allow שהאדמיניסטרטורים אמורים לקבל, אני רק מקבל את הרשאות ה-deny שקבוצת האדמיניסטרטורים מקבלת.
למה אני מתכוון בהרשאות ה-low ובהרשאות ה-deny? בואו נראה רגע דוגמה מאוד מאוד פשוטה. אם אני אסתכל על ההרשאות של Conan C מבחינת security, אז אני רואה שלקבוצת האדמיניסטרטורים יש אלאו פול קונטרול.
זאת אומרת שבתור יוזר שחבר בקבוצת האדמיניסטרטורים, which I am, אני יכול, אני אמור להצליח לייצר קובץ חדש שמכיל את המילה טקסט, טסט, סליחה, בתוך קונן c, c.time/1.txt, אבל אני מקבל access is denied.
איך זה הגיוני? אני חבר בקבוצת האדמיניסטרטורים, ובקבוצת אדמיניסטרטורים על כונן סי יש אלאו פול קונטרול אבל אני לא מקבל את ההרשאה הזאת מה בפועל קרה כאן?
הטוקן של הקומנד פרומפט הזה הוא טוקן מפולטר, טוקן מצומצם Group used for deny only אני חבר בקבוצת האדמיניסטרטורים אבל אני רק אסבול מדנאי שהיא תקבל שימו לב שהדנאי פה ריק, שורת הדנאי ריקה אבל אם תהיה איזושהי תיקייה של אדמיניסטרטורים יהיה דנאי
אנחנו לא נוכל להיכנס לשם אם יש תיקייה של אדמיניסטרטורים יש אלאו אנחנו גם לא נוכל להיכנס לשם מהסיבה שאני לא באמת חבר בקבוצת האדמיניסטרטורים אני רק סובל מהרשעות דנאי אבל לא נהנה מהרשעות אלאו אוקיי, אז איך אדמיניסטרטור אמור להיות אדמיניסטרטור ולבצע את הפעולות האדמיניסטרטיביות שאותן
הוא רוצה לבצע? מה שאותו אדמיניסטרטור אמור לעשות זה בעצם מה שנקרא לדרוש מהמערכת את הטוקן המלא שלו. לדרוש מהמערכת את הטוקן שבו הוא אדמיניסטרטור מלא.
לבקש מהמערכת להעלות את ההרשאות שלו כלפי מעלה. איך הוא עושה את זה? כל תוכנה שהוא רוצה להריץ, הוא עושה קליק ימני ולוחץ על Run as Administator.
הפעולה הזאת פותחת איזשהו קובץ .exe שנקרא consent.exe, נמצא בתוך סיסטם 32 שאמור לבקש אישור מהאדמיניסטרטור. זה בעצם התוכנה היחידה אגב שיכולה לבקש את האישור הזה וראו מקרים שאפשר להחליף אותה בתוכנות אחרות אבל זה טיפה מורכב כי היא צריכה להיות חתומה בידי מייקרוסופט.
אם התוכנה הזאת לא מקבלת התערבות מהמשתמש למשך 120 שניות היא פשוט נסגרת ולא נותנת את ההרשאה אבל אם אנחנו לוחצים פה על יס מערכת ההפעלה פותחת את התוכנה החדשה ומעניקה לה גישה לפול טוקן של היוזר.
פה גם רשום אדמיניסטרטור נקודותיים. ה-CMD מוסיף את זה ככותרת כדי שנדע. אם אני אריץ פה whoami/all חשוב לי מאוד שתשימו לב שזה לא שעברתי להיות יוזר אחר.
אני עדיין אותו יוני, אני עדיין אותו יוזר. לא שיניתי את הזהות שלי להיות משתמש אחר, אלא... מה שבעצם קרה זה שפשוט פה אני חבר מלא בקבוצת האדמיניסטרטורס אפשר לראות שברמת האטריביוץ רשום פה מנדטורי גרופ מנדטורי גרופ זה פשוט אומר קבוצה שגם מקבלת אלאו וגם מקבלת דנאי
ולא כמו דנאי אונלי גרופ שרק סובלת מהדנאי אבל לא נהנית מהאלאו זאת אומרת זאת קבוצה שגם נהנית מהאלאו וגם סובלת מהדנאי אז כל הקבוצות האדמיניסטרטיביות פה הן יהיו קבוצות אמיתיות, מלאות, שאפשר באמת להשתמש בהן.
וגם אם נסתכל על הפריבליג' הרי, אנחנו נראה שפה קיבלתי את מגוון הפריבליג'ים שהיינו אמורים לקבל בתור אדמיניסטרטור של מערכת. אני רוצה רגע להסביר לכם מה הם ה-super user privileges שבהם אני יכול להשתמש פה, אז בואו רק נסתכל עליהם.
אז שימו לב שהפריבליג'ים שיש לי כאן הם אותם פריבליג'ים שיש לי פה, רק שפה יש לי יותר פריבליג'ים. מה חשוב פה מבחינת שהייתי בא לתקוף מערכת, איזה פריבליג' היה יכול לעזור לי.
אז הפריבליג' הראשון שסופר יוזר אמור לקבל במערכת הוא פריבליג' שנקרא SE Take Ownership Privilege. הפריבליג' הזה בעצם מאפשר לי לקחת בעלות על כל אובייקט במערכת שאין לי הרשאות