חשיפת פרטי הזדהות מתוך Vault

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

כל תקיפה באשר היא צריכה להתחיל ממקום מסוים ואין כמו להתחיל מתוך התחנה המקומית ואם יש לנו רכיב Credential Manager שאינו מוצפן אז החיים קלים.

כידוע בגרסאות Windows השונות ניתן לשמור פרטי הזדהות (web & windows) ולאחסן את כל אותן פרטי הזדהות רכיב Credential Manager, אותו רכיב Credential Manager שומר את פרטי ההזדהות במספר מקומות שונים: תיקיית Credentials, תיקיית User Data, תיקיית Vault, ערכי Registry שונים.

פרטי הזדהות שניתן לשמור מקומית ברכיב Credential Manager נחלקים למספר קטגוריות שאת חלקן ניתן לזהות באופן פשוט יחסי וחלקן אף לא ניתן (למשל בתצורת Seamless SSO לא ניתן לזהות את פרטי ההזדהות כלל מתוך רכיבים מקומיים)

רכיב Credential Manager מחלק את הקטגוריות למספר הגדרות עיקירות:

  • Windows Credentials
  • Certificate-Based Credentials
  • Generic Credentials

אם נריץ את הפקודה vaultcmd /list נוכל לדעת היכן חלק מפרטי ההזדהות נשמרים

image

בשורה התחתונה כל אותם פרטי הזדהות נשמריםבמנגנון Local Security Authority ובמנגנון SAM database המקומי בכל גרסאות Windows השונות.

איפה הסיכון?

גניבת פרטי הזדהות היא פשוטה יחסית והדרך הקלה יותר לפריצה אל הארגון, ובדומה למתקפות מסוג Pass-The-Hash שבו ניתן לגנוב הרשאות מתוך התחנה המקומית (כדוגמת Credentials Manager) ומכאן לשוטט בארגון ולהמשיך במסלול Kill Chain הקלאסי.

איך מגלים סיסמאות

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

בכדי לחשוף פרטי הזדהות ניתן להריץ את הפקודות הבאות מתוך PowerShell:

[void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]
$vault = New-Object Windows.Security.Credentials.PasswordVault
$vault.RetrieveAll() | % { $_.RetrievePassword();$_ }

לאחר מכן נקבל את פרטי ההזדהות

2019-02-19_08h36_17

ניתן להריץ את הפקודות על תחנת החל מגרסת Windows 7 ומעלה וכמו שניתן לראות ישנה סיסמה אשר מוגדרת במצב מוסתר והנוספת במצב רגיל.

אז מה עושים?

ישנם מספר דרכים למניעת גילוי סיסמאות מתוך רכיב Credential Manager מקומי:

  • הגדרת פרטי הזהדהות במצב Hidden ברכיב Credential Manager
  • הצפנת רכיב Credential Manager באמצעות כלי צד שלישי
  • יישום Credetinal Guard שנותן פתרון רחב יותר אך נותן גם מענה לרכיב Credential Manager, מידע נוסף על Credentials Guard בקישור Protect derived domain credentials with Credential Guard

image

לסיכום

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

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

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

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



:קטגוריותSecurity

תגים: ,

מה דעתך?

This site uses Akismet to reduce spam. Learn how your comment data is processed.