CodeKitHub
כלי קידוד

NTLM Hash Generator

עודכן לאחרונה:

גיבוב NTLM מחושב על ידי קידוד הקלט שלכם כ-UTF-16LE (2 בתים לכל תו, little-endian) ולאחר מכן הרצתו דרך אלגוריתם התקציר MD4 — הפעולה החד-פעמית והלא-מומלחת הזו היא כל סכימת הגיבוב של NTLM ש-Microsoft Windows משתמשת בה מאז NT 4.0 לאחסון מאמתי סיסמאות. כלי זה מבצע את אותו חישוב בדיוק באופן מקומי בדפדפן שלכם, כולו ב-JavaScript, כך שדבר ממה שאתם מקלידים לעולם לא נשלח לשרת. הוא קיים לצורך עבודת אבטחה לגיטימית — אימות ייצוא גיבובים מ-Active Directory, בדיקת פורמטי פלט של hashcat או Mimikatz, או עבודה על אתגרי CTF ומעבדות פנטסטינג — לא לתקיפת חשבונות שאינם שייכים לכם או שאין לכם הרשאה לבדוק.

NTLM Hash

מהו הכלי הזה?

NTLM (NT LAN Manager) הוא פרוטוקול האימות הישן מסוג challenge-response של Microsoft, שעדיין בשימוש כיום לכניסות מקומיות לחשבונות Windows וכגיבוי במגוון סביבות Active Directory. מאמת הסיסמה שלו — המכונה בדרך כלל "גיבוב ה-NTLM" — מוגדר במפרט הפרוטוקול MS-NLMP של מיקרוסופט עצמה כ-`MD4(UTF-16-LE(password))`: הסיסמה מקודדת תחילה כ-UTF-16 little-endian (כך שכל תו הופך ל-2 בתים, בניגוד ל-UTF-8), ורצף הבתים הזה מגובב לאחר מכן פעם אחת עם אלגוריתם ה-MD4 מ-RFC 1320.

שלב ה-UTF-16LE הוא הפרט שרוב האנשים טועים בו כאשר הם מיישמים מחדש את NTLM: גיבוב הבתים בקידוד UTF-8 של מחרוזת במקום בתי ה-UTF-16LE שלה מייצר תקציר שונה לחלוטין ושגוי, גם אם הטקסט הנראה לעין נראה זהה. כלי זה מקודד נכון, כך שהפלט שלו תואם למה ש-Windows עצמה מאחסנת ולמה שכלים כמו hashcat (מצב 1000) ו-Mimikatz מצפים לו.

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

למה להשתמש בו?

  • אמתו שגיבוב שחולץ ממסד נתונים SAM של Windows, מהעתק NTDS.dit או מייצוא Active Directory תואם לערך צפוי במהלך בדיקת אבטחה מורשית.
  • אשרו את הבנתכם את אלגוריתם MS-NLMP, או בדקו גיבוב שהקוד שלכם עצמו הפיק, מול יישום ידוע כתקין.
  • צרו גיבובי NTLM עבור hashcat (`-m 1000`) או בדיקת רשימות מילים ב-John the Ripper במעבדה או בסביבת CTF שיש לכם הרשאה לתקוף.
  • בצעו בדיקה צולבת של פלט Mimikatz או כלי פנטסטינג אחרים במהלך משימות red-team או ביקורת אישורים לגיטימיות.
  • מקומי לחלוטין: הקלט שלכם לעולם לא עוזב את הדפדפן, כך שבטוח להשתמש בו אפילו עבור חומר אישורים רגיש בהערכה מורשית.

איך להשתמש

  1. הקלידו את הסיסמה או המחרוזת שברצונכם לגבב בתיבת הקלט.
  2. לחצו על "Generate NTLM Hash".
  3. קראו את גיבוב ה-NTLM ההקסדצימלי בן 32 התווים (פלט באותיות רישיות מופעל כברירת מחדל, בהתאם לאופן שבו Windows ורוב כלי הפיצוח מציגים אותו — בטלו את הסימון עבור אותיות קטנות).
  4. לחצו על "Copy" כדי להעתיק את הגיבוב ללוח הגזירים שלכם.

דוגמה

קלט

password

פלט

8846F7EAEE8FB117AD06BDD830B7586C

זהו וקטור בדיקה ידוע ובר-אימות עצמאי: גיבוב ה-NTLM של המחרוזת המילולית "password" הוא תמיד 8846F7EAEE8FB117AD06BDD830B7586C. תוכלו לבדוק את פלט כלי זה מול כל יישום NTLM תקין אחר.

NTLM לעומת גיבוב סיסמאות מודרני

הטבלה שלהלן מדגישה מדוע NTLM נחשב מיושן להגנה על מערכות חדשות, למרות שהוא עדיין מוטמע בתשתיות Windows ו-Active Directory ישנות.

מאפייןNTLMbcrypt / scrypt / Argon2
פרימיטיב הבסיסמעבר MD4 יחידגיבוב איטי שנבנה למטרה עם עלות ניתנת לכוונון
מליחהללא — סיסמאות זהות תמיד מתגבבות זההמלח אקראי ייחודי לכל סיסמה
איטרציה / מתיחהללאגורם עבודה הניתן להגדרה, ניתן להגדלה עם הזמן
עמידות בפני כוח גסחלשה מאוד — מיליארדי ניחושים בשנייה על GPU מודרנייםיקר במכוון לכל ניחוש
היכן שהוא עדיין נמצאאימות Windows ישן, גיבוי Active Directoryאפליקציות חדשות, שיטת העבודה המומלצת הנוכחית

כלים קשורים

אם אתם זקוקים לגיבוב קריפטוגרפי כללי במקום המבנה הספציפי של NTLM, MD4(UTF-16LE), כלים אלה עשויים להתאים יותר.

שאלות נפוצות

מהו בדיוק גיבוב NTLM?

זהו מאמת הסיסמה ש-Windows מחשבת ומאחסנת עבור אימות NT LAN Manager, המוגדר במפרט MS-NLMP של מיקרוסופט כ-MD4(UTF-16LE(password)) — מעבר MD4 יחיד על קידוד הבתים בפורמט UTF-16 little-endian של הסיסמה. הוא תמיד באורך 128 ביט, מוצג כ-32 תווים הקסדצימליים.

מדוע דווקא UTF-16LE, ולא UTF-8 או ASCII?

Windows מאחסנת טקסט באופן פנימי כ-UTF-16LE מאז ש-NT תוכננה, כך שגם סיסמאות מקודדות בדרך זו לפני הגיבוב. כל תו הופך ל-2 בתים (סדר בתים little-endian), כולל תווי ASCII פשוטים כמו 'a', שהופכים ל-0x61 0x00 במקום פשוט 0x61. גיבוב הבתים בקידוד UTF-8 של אותה מחרוזת מייצר תוצאה שגויה ושונה לחלוטין — זוהי הבאג הנפוץ ביותר ביישומי NTLM שנכתבו מאפס.

האם בטוח להשתמש ב-NTLM כיום?

לא, ומיקרוסופט עצמה ממליצה לעבור ממנו לטובת Kerberos היכן שאפשר. ל-NTLM אין מלח, כך שסיסמאות זהות תמיד מייצרות גיבובים זהים בכל המשתמשים ובכל המערכות, מה שמאפשר חיפושי rainbow-table שחושבו מראש. כמו כן, אין לו איטרציה או גורם עבודה — מעבר MD4 לא-מומלח יחיד — כך שמעבדי GPU מודרניים יכולים לנסות מיליארדי ניחושים בשנייה כנגד גיבוב שנתפס. הוא שורד בעיקר לצורך תאימות עם מערכות ואפליקציות Windows ישנות יותר.

כיצד NTLM שונה מגיבוב סיסמאות מודרני כמו bcrypt, scrypt או Argon2?

מגבבי סיסמאות מודרניים איטיים ומומלחים במכוון: bcrypt, scrypt ו-Argon2 מוסיפים כל אחד מלח אקראי ייחודי לכל סיסמה וגורם עלות הניתן לכוונון שניתן להגדיל עם הזמן ככל שהחומרה מתמהרת, במיוחד כדי להפוך פיצוח בכוח גס ליקר גם בקנה מידה גדול. NTLM לא עושה אף אחד מהדברים האלה — הוא תוכנן בעידן שקדם לכך שפיצוח בכוח גס במצב אופליין היה מודל איום מעשי, וזה ניכר. זו בדיוק הסיבה ש-NTLM אף פעם לא צריך לשמש להגנה על משהו שמתוכנן היום; מקרי השימוש האמיתיים בכלי זה הם תאימות עם תשתית Windows קיימת ובדיקת אבטחה מורשית, לא בניית מערכות חדשות.

מהם שימושים לגיטימיים במחולל גיבוב NTLM?

אימות גיבובים שחולצו ממסד נתונים SAM או מ-NTDS.dit במהלך מבחן חדירה מורשה או ביקורת אישורים; בדיקה שהכלים או הסקריפטים שלכם עצמכם מיישמים את MS-NLMP נכון; יצירת גיבובי בדיקה עבור hashcat (מצב 1000) או בדיקות תאימות לפורמט Mimikatz במעבדה שבשליטתכם; ועבודה על תרגילי CTF או הכשרה העוסקים במפורש ב-NTLM. שימוש בכלי זה לתקיפת חשבונות או מערכות שאינם שייכים לכם או שאין לכם הרשאה בכתב לבדוק אינו שימוש לגיטימי.

האם הסיסמה או הקלט שלי נשלחים לשרת?

לא. חישוב ה-MD4 מתבצע כולו ב-JavaScript בדפדפן שלכם — אין ממשק API מובנה בדפדפן עבור MD4, לכן הוא מיושם ישירות בקוד צד הלקוח של דף זה, ודבר ממה שאתם מקלידים לא מועבר לשום מקום.