יום שלישי, 8 ביולי 2014

פריצת סיסמאות בסביבת דומיין בעזרת PowerShell




,שלום לכולם

Power Shell הוא כלי עוצמתי בעל ערך מוסף אדיר עבורנו.
בפוסט הבא אציג את היכולת של משתמש ב Domain ללא שום הרשאות מיוחדות, לקבל נתונים על המשתמשים ולנסות ולפצח את הסיסמה שלהם וכל זה ללא שום רישום לוג כלשהו של ניסיונות כניסה שגויים וזאת מכיוון שננסה לאתר את הסיסמאות ע"י פקודת LDAP פשוטה בשם המשתמשים.
שימו לב, לפני הפעלת הסקריפט אתם חייבים לגלות מה ה Policy שמוגדר בארגון לגבי נעילת חשבון לאחר מס' ניסיונות כושלים.  אתם בטח לא תרצו לנעול את כל המשתמשים בארגון.
חלקכם ברגע זה יגידו " נו אז למה הסקריפט הזה טוב לנו??"
אז בואו נקח מצב מוכר בארגונים שבהם אחרי 3 ניסיונות המשתמש ננעל, זה אומר שאנחנו יכולים במילון הסיסמאות(שעוד מעט נייצר) להגדיר רק 2 סיסמאות. כשהסקריפט יעבור על 500 משתמשים בארגון ככל הנראה שנצליח לתפוס ברשת כמה משתמשים, ומה אם נכניס השהייה של זמן בין הניסיונות?

בקיצור, יש כאן בעיית אבטחה שכדי לדעת עליה :)




ניגש למלאכה - 

בסביבת ה Domain לכל המשתמשים (authenticate users) יש את היכולת לקבל מידע על שאר משתמשי ה Domain.
כן, ככה המערכת בנוייה, היא בנוייה בצורה הזאת לצרכי שיתוף משאבים. שיתפתם עכשיו תיקייה ואתם מעוניינים לאתר את המשתמש הרצוי - הנה קיבלתם גישה ל authenticate users ב Domain. האם זה בעיה ?
בואו נברר באמצעות Power Shell...

פקודה להצגת כל המשתמשים ב Domain (אני מזכיר, לכל משתמש ב Domain יש את היכולת)
  dsquery user -limit 0 > usersfile
בפקודה הבאה הוספתי לולאה שאומרת:  
לתוך המשתנה FDN$ תכניס את כל המידע של המשתמש, וזה לאחר שעברת על כל משתמש בקובץ usersfile:


dsquery user -limit 0 > usersfile
foreach ($FDN in Get-Content .\usersfile)

בואו נרחיב את הסקריפט שלנו,
המטרה עכשיו היא להוציא מכל משתמש את ה SAMID.
שימו לב, הרחבתי את הסקריפט במטרה להוציא את ה SAMID של כל משתמש.

dsquery user -limit 0 > usersfile
foreach ($FDN in Get-Content .\usersfile)
{
   $results = dsget userfile $FDN -samid
   $samid = $results[1].replace(" ", "")
   write-host $samid
}

עכשיו נסיים את הסקריפט ונסכם אותו לפי המספרים שציינתי בתמונה.


1. בשורות קוד האלו בסה"כ אנחנו מוציאים מכל משתמש את ה SAMID , בנוסף הרחבתי קצת ע"מ שהפלט יהיה קריא ונקי.
2. הוכן מראש קובץ שנקרא password.txt שהוא בעצם המילון סיסמאות שלנו (הוסיפו בו סיסמאות כרצונכם)
3. כן בעצם ה Brut Force מתחיל, 
בעזרת הפקודה dsget אנחנו יוצרים שאילתת LDAP  עם ה Credentials של כל משתמש, ה User נלקח מהמשתנה 
samid$ והסיסמא מהמשתנה password$ שמחזיק גם את מילון הסיסמאות שלנו.
כל פעולה נרשמת ל null$ שזה מקום לזרוק נתונים שאנחנו לא רוצים שיוצגו על המסך.
ולאחר מכן אנחנו משתמשים ב ?$ שבגדול מחזיר true or false  על הפקודה שבוצעה ולבסוף בעזרת Write-Host
הצגנו על המסך את שם המשתמש והסיסמא שפיצחנו.
בעיקרון זה ניסיון לאתר סיסמא ע"י שימוש בהצגת Credentials בעת ביצוע שאילתת LDAP שכל משתמש ב Domain יכול לבצע.

הסקריפט להורדה: 



תגובה 1:

  1. Casino Hotel in Las Vegas, NV - Mapyro
    Casino Hotel in Las Vegas, NV. View map. Distance to 동두천 출장마사지 airport. 3 mi 익산 출장샵 (5 km). 김포 출장샵 3.7 mi (6.4 km). Casino. Mapyro: The Strip. 나주 출장안마 Casino Hotel in 전라북도 출장샵 Las Vegas.

    השבמחק

תודה על תגובתך (: