NTLM

NTLM (ראשי תיבות של New Technology LAN Manager) הוא פרוטוקול אימות. בעבר היה הפרוטוקול ברירת מחדל לשימוש במערכות ההפעלה Windows הישנות. פרוטוקול זה מספק אימות, שלמות המידע וסודיותו. NTLM עדיין נמצא בשימוש כיום, במקרים שהשימוש בפרוטוקול Kerberos כשל (אך ניתן לבטל את האפשרות הזאת).

 אופן הפעולה 
ברשתות מחשבים מבוססות Microsoft Windows, NTLM (NT LAN Manager) הוא פרוטוקול אימות מסוג "אתגר-מענה". כאשר משתמש בדומיין מסוים מבצע תהליך אימות למכונת דומיין מרוחקת בשימוש בפרוטוקול NTLM, השרת שולח למשתמש "אתגר" באמצעות בקשת NTLM_CHALLENGE. המשתמש צריך להצפין את האתגר באמצעות hash קריפטוגרפי של סיסמתו (שנקרא NT hash), ולשלוח אותו אל השרת באמצעות הודעת NTLM_AUTHENTICATE. מכיוון שהשרת לא מאחסן בתוכו את סיסמאות המשתמשים, הוא צריך לאמת את שם המשתמש והסיסמה באמצעות Domain Controller. פעולה זאת נעשית באמצעות שליחת בקשת NETLOGON אל ה-Domain Controller באמצעות ערוץ מאובטח. הודעה זאת כוללת חלקים של בקשת ה-NTLM_AUTHENTICATE שנשלחה את השרת. ה-Domain Controller מאמת את האתגר והמענה של ה-NTLM, ושולח הודעה שמראה האם ניסיון האימות הצליח או נכשל.

בנוסף, ה-Domain Controller מצרף מפתח Session שבו התקשורת תוצפן/תיחתם, אם יש צורך בהצפנת/חתימת ה-Session. מכיוון שמפתח ה-Session מחושב על בסיס הסיסמה של החשבון המאומת, הלקוח מחשב אותה באופן עצמאי. על מנת למנוע מחשבונות לקבל מפתחות Session שאינם מיועדים אליהם, יש לבצע תהליכי אימות על ה-Domain Controllers.

ב-NTLM הסיסמה לא עוברת ברשת, היא נשמרת מקומית כ-HASH. הפרוטוקול מחליף את LM (LANMANAGER). פונקציית הגיבוב שמשתמשים בה בדרך כלל נקראת NTHASH. ב-NTLMV2 יש "המלחה" (Salting - הוספת מספר תווים רנדומלי לפני/אחרי/באמצע הקלט שקיבלת) של ה-Hash של הסיסמה על מנת שיהיה יותר קשה לפענח את ההצפנה. אך גם NTLM בגרסה השנייה יחסית פריצה.

 תהליך 
פרוטוקול זה פועל בשיטת Challenge-Response (אתגר-מענה), להלן התהליך:

 משתמש רוצה להתחבר ומכניס מספר פרטים: שם דומיין, שם משתמש וסיסמה.
 השם נשלח את שרת ה-DC (Domain Controller).
 השרת שולח "אתגר" - מספר רנדומלי של 16 בתים (bytes).
 הלקוח מצפין את ה"אתגר" - באמצעות מחרוזת שהיא הסיסמה של הלקוח. הלקוח מצפין על ידי פונקציית גיבוב (MD5/MD4). תוצר שלב זה נקרא "תגובה".
 ה"תגובה" נשלחת לשרת ב-NTLMV2 (הגרסה השנייה והטובה יותר של NTLM), לפני הגיבוב מתווסף גם "אתגר" של הלקוח (הנקרא גם Nonce).
 השרת לוקח שלושה פרטים: שם המשתמש, אתגר שנשלח ללקוח ותגובה שהתקבלה מהלקוח.
 השרת בונה לעצמו את התגובה - השרת מבצע בדיוק את אותו הדבר ולבנות לעצמו את התגובה. לאחר מכן מתבצעת השוואה בין התגובה של הלקוח לבין התגובה של השרת.
אם זהה - ההתחברות הסתיימה בהצלחה.

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

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

להתגברות על הנושא פותחה שיטת EPA.

הערות שוליים

קטגוריה:פרוטוקולי תקשורת