
הטקסט המלא של הדקות הראשונות בהרצאה «התקפת NTLM Relay» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.
שלום לכולם, בהרצאה זו אנחנו נדבר איך עובדות התקפות NTLM כאשר אני מאזין על הכבל. שימו לב, אני לא מדבר איתכם על התקפות NTLM כשיש לי גישה פיזית למחשב, לוקאלית.
התקפות פאס דה האש, אחרי שאני שולף את הסיסמה מתוך ה-hard disk המקורי של היוזר או מתוך ה-RAM שלו, על זה אני לא הולך לדבר איתכם. אני מדבר על התקפות כשאין לי גישה לתוך המחשב, כשאני מאזין על הכבל ושומע NTLM.
אז איך עובדת ההתקפה בעצם? אני מקבל הודעה מהקליינט שהוא רוצה אימות NTLמי כי הוא חושב שאני שרת לגיטימי בארגון. אני לוקח את ההודעה כמו שהיא, מעביר לשרת. השרת חושב שאני הקליינט שרוצה לעבור אימות.
השרת מחזיר לי צ'לנג'. אני לוקח, מעביר את הצ'לנג' as is, את האתגר הזה חסר משמעות עם איזשהם מספרים, אתגר להצפנה, אני מעביר אותו לקליינט. זאת אומרת, מנקודת מבטו של הקליינט אני השרת הלגיטימי, מנקודת מבטו של השרת אני הקליינט אני פשוט מגלגל הודעות שמאלה וימינה בלי לעשות כלום אז הקליינט מקבל את האתגר הזה ומצפין אותו האמת שזה לא באמת הצפנה זה ערבול חד כיווני
של md5 ערבול חד כיווני כאשר מערבלים גם את ההאש וגם את הצ'לנג' המקורי שהגיע מהשרת לוקחים את זה לוקחים את הסיסמה של היוזר שניהם ביחד נכנסים ל-md5 ויוצא ערבול מוצפן זה למעשה ערבול שלתוכו נכנסו שני דברים ביחד וזה נקרא h-mac h-mac של md5 האקר לא יכול לעשות את זה לבד כי אין לו את הסיסמה של היוזר האקר מקבל את הערבול המוצפן
הזה נורא מפריע לי שאני אומר מוצפן זה פשוט נוח לי כי מאחורי מילת מוצפן עומדת משמעות שאפשר לפתוח את ההצפנה בערבול אי אפשר לפתוח את ההצפנה הערבול הוא חד-כיווני ואני אומר מוצפן אבל אני מתכוון לערבול כי לא נוח לי להגיד מעורבל אז תדעו שב-NTLM כל פעם שאתם שומעים אותי אומר מילת מוצפן אני מתכוון לערבול חד-כיווני של MD5 יחד עם ה-Challenge והסיסמה של היוזר
HMAC-MD5 זה התקן הרשמי אי אפשר לפתוח את ההצפנה הזאת כי זה לא באמת מוצפן כי זה מעורבל חד-כיוונית אז הקליינט ישלח לנו הודעה מעורבלת עם הסיסמה של היוזר וה-Challenge האקר יעביר את זה הלאה והשרת יגיד אוקיי בסדר בוא כנס הכל בסדר עברת
עימות עכשיו אתם תגידו, רגע, איך מונעים את הדבר הזה? איך אפשר לעשות פה משהו? והאמת, אי אפשר לעשות כלום, כי אי אפשר לשנות את ה-NTLM הזה.
NTLM זה תקן. הנה לדוגמה, בתקן הזה כתוב ש-NTLM V2 ריספונס, התגובה של השרת חייבת להיות HMAC MD5. אי אפשר לשדרג לדוגמה את ה-MD5 לפרוטוקול ערבול יותר טוב.
אי אפשר לשנות כלום ב-NTLM, כי זה תקן שעובדות בו מיליון חברות שונות, ומיליון מוצרים שונים כבר תומכים בתקן הזה. הרי לשרתים של מייקרוסופט מתחברים גם מדפסות וכל מיני דברים אחרים שדורשים עימות.
לדוגמה, קליינט יכול להיות Windows, Linux, Mac. השרת, זה לא חייב להיות שרת, זה יכולה להיות מדפסת.
אי אפשר לגעת כלום בתקן הזה, כי יש המון מוצרים שכבר קיימים בשוק שעובדים לפי התקן הזה. אז איך מונעים את ההתקפה הזאת? התשובה, אי אפשר באמת למנוע אותה.
הריליי הזה, אי אפשר למנוע אותו. אז מה עושים? מה עושים? מה זה כל הרשתות פרוצות בעולם? התשובה היא שאי אפשר למנוע את זה ב-NTLM Authentication אבל אפשר למנוע ברמת פרוטוקול הבא הרי מישהו משתמש ב-NTLM, אחרי זה יש לו את התקשורת שלו, את ה-HTTP שלו, את ה-SMB שלו, את ה-SQL שלו זאת אומרת הקליינטים אחרי זה מדברים בשפה
שלהם ואז אפשר בתוך הפרוטוקולים האלו לדרוש סיינינג, חתימה שההודעות שעוברות כבר אחרי זה יהיו חתומות נניח על ידי ההא של היוזר או מוצפנות כך שהטאקר הזה התוקף לא יוכל לזייף אותם כי אין לו את הסיסמה המקורית של היוזר בואו לא ניכנס יותר עמוק מזה אנחנו נסתפק בזה שהחתימה היא
זאתי שמונעת את ההתקפה אבל לא בשלב של ntlm אלא בשלב של פרוטוקול בגלל שאני לא רוצה להיכנס עכשיו לחתימות של SMB של שיתופים של פרוטוקול ספציפי כי יש גם HTTP שיש לו בכלל SSL ו-LDAP יש לו SSL אני לא רוצה עכשיו להיכנס לפרוטוקולים ספציפיים אני רק רוצה להגיד לכם שמה שמונע את כל ההתקפה הזאת של ריליי זה נקרא NTLM ריליי עתק ריליי
כשאני מעביר הודעה משמאל לימין מה שנקרא דרכי אז כל מה שמונע את הריליי הזה זה לא ברמת ntlm עצמו ntlm עצמו לא מסוגל למנוע את ההתקפה הזאת ולכן אנחנו תלויים בפרוטוקולים שמעלינו שמשתמשים ב ntlm כדי שהם יחתמו על ההודעות שלהם ויצפינו אותם ואם נרצה לדעת יותר לעומק איך להצפין ואיך לחתום צריך להיכנס לכל
פרוטוקול בנפרד לדוגמה על smb על השיתופים צריך לעשות את זה דרך group policy עכשיו עכשיו נשארה לנו רק שאלה אחרונה איך אני נהיה פה שרת איך הקליינט חושב שאני שרת אז יש לזה כמה שיטות איך לגרום לקליינט לשלוח אליי את הבקשת ההזדהות איך אני מקבל את הפאקטים האלו זה נקרא getting traffic או obtain traffic אז אני יכול לזייף
שאילתות של dns נניח קליינט