פיצוח קבצי Zip ו-Rar בעזרת JtR

זמינות הכלים (John the Ripper jumbo) תלויה במערכת הפעלה שלכם (בתקווה שמדובר בלינוקס) וההפצה, בדוגמאות שלי לרוב יהיה שימוש ב-Backbox, והכלים הדרושים לפיצוח אינם זמינים לי דרך ההפצה, אז אני אכלול את השלבים של ההתקנה (עבור הפצות מבוססות Debian). יתכן שבהפצות אחרות, כגון Kali או Parrot הכלים זמינים מראש ואם אינכם מעוניינים בתהליך הבניה, השתמשו בהם ודלגו על השלבים הללו (קפצו ישר לדוגמאות).

הערות מקדימות

אפשר להאיץ את הפיצוח בעזרת שימוש במפצחים מבוססי כרטיס מסך (לבנות את JtR עם תמיכה עם Cuda) או להשתמש ב-Hashcat שנבנה עם תמיכה בריצה על גבי הכרטיס מסך. המדריך הנוכחי לא ינצל את שיטות אלו בעקבות מגבלות שונות (סביבה וירטואלית). אם הינכם רציניים לגבי ביצוע BF בסקיילים גדולים, עיינו בבקשה בעמודי הוויקי של Hashcat. בנוסף, ל-JtR יכולות לפצח המון פורמטים נוספים, אני אתמקד בשניים בלבד, Zip ו-Rar.

התקנת תלויות

בכדי לבנות את John the Ripper בהצלחה, נדרשות מספר חבילות, חבילת ה-metadata בשם build-essential תספק את רוב הכלים, והאקסטרה נתקין בעזרת פקודות נוספות.

sudo apt install build-essential
sudo apt install libbz2-dev libgmp-dev libpcap-dev
sudo apt install git

הורדת הקוד מקור

הקוד מקור של JtR זמין להורדה מ-Github, אתם יכולים להוריד את הגרסת Zip או לבצע שיבוט בעזרת git. אני לרוב עובד בספריה יעודית, תרגישו חופשי לאמץ או לשנות (אני משתמש בנתיבים יחסיים, אז שימו לב לנתיב הנוכחי שלכם).

mkdir ./Builds && cd $_
git clone https://github.com/openwall/john.git

בהנחה שהשיבוט עבר בהצלחה, כנסו לנתיב john/src

cd john/src/

בניה

נשתמש בפקודה ./configure בכדי לאכלס משתנים ופרמטרים עבור הבניה, הפקודה תנסה לזהות רכיבי חומרה ותוכנה שונים הזמינים לה על מנת לבנות את הקבצים בצורה המיטבית עבור הסביבה שלנו (במקרה שלי, סביבה וירטואלית).

./configure

הפלט צריך להראות פחות או יותר כך (אם עקבתם אחרי המדריך שלי ואתם משתמשים בסביבה וירטואלית)

לאחר שקינפגנו, נותר לנו לבנות

make -s clean && make -sj4

התוצרים (הקבצי הרצה) ימצאו בספריה ../run.

דוגמאות

אין לי גישה ל-WinZip עם רשיון, אז הקובץ המוצפן בדוגמה שלי משתמש בהצפנה מיושנת, לשם הדוגמה זה לא משנה, רק קחו בחשבון שפריצה של קובץ Zip עם הצפנה עדכנית יותר יקח יותר זמן.

קבצי פיצוח לדוגמה:
bf-test.rar (286 בתים)
bf-test.zip (247 בתים)

קובץ מילים לדוגמה:
10_million_password_list_top_500.txt (3.6 ק״ב)

הורידו את הקבצים ושמרו אותם בנתיב כלשהו, במקרה שלי, 3 הקבצים נמצאים בספריה ./to-crack והקבצי הרצה של JtR בנתיב ./Builds/john/run. תבצעו את ההתאמות בהתאם לסביבה שלכם.

השלב הראשון הוא זיהוי סוג הקובץ וסוג ההצפנה שבשימוש, נשתמש בפקודה file לקבל מידע מקדים. נמצא כי הקובץ Rar מוצפן עם גרסה 5, ו-Zip מוצפן עם גרסה 1.

20200927-jtr.2

היצרניות של הפורמטים Rar ו-Zip פרסמו White Paper שמתאר את הפרוטוקול, על בסיס המידע שמופיע שם (ובמקרה של חוסר מידע - הנדסה לאחור), ניתן להבין היכן ב-header אפשר למצוא את הגיבוב של הססמה, לכן השלב הבא יהיה לייצא את הפרטים הללו אל מחוץ לקובץ.

./Builds/john/run/zip2john ./to-crack/bf-test.zip > ./to-crack/bf-test.zip.hash
./Builds/john/run/rar2john ./to-crack/bf-test.rar > ./to-crack/bf-test.rar.hash

אנחנו למעשה נייצר שני קבצים שיכילו את הגיבובים בפורמט ש-JtR יודע לקרוא.

וכעת ננסה לפצח את הגיבובים בעזרת המילון שיש לנו.

./Builds/john/run/john --wordlist=./to-crack/10_million_password_list_top_500.txt ./to-crack/bf-test.rar.hash
./Builds/john/run/john --wordlist=./to-crack/10_million_password_list_top_500.txt ./to-crack/bf-test.zip.hash

ונמצא כי הססמאות הינן: 1q2w3e4r5t, qwerty123 בהתאמה.

6 לייקים