Home אבטחת מידעPenetration Testing פיצוח Hash ע”י HashCat והסבר על Rainbow Tables ו Salting

פיצוח Hash ע”י HashCat והסבר על Rainbow Tables ו Salting

by Tal Ben Shushan 29/09/2018 0 comment
פיצוח Hash ע”י HashCat והסבר על Rainbow Tables ו Salting

פיצוח Hash ע”י HashCat והסבר על Rainbow Tables ו Salting

כאשר משתמש רוצה להגדיר סיסמא חזקה הוא צריך שסיסמא תיהיה ארוכה, המורכבת מאותיות, אותיות גדולות מספרים וסימנים ככל שהסיסמא ארוכה יותר כך הסיסמא חזקה יותר.

אם נבדוק את Hashcat לדוגמה

נבחין שהוא מנסה לסרוק

1421327633024

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

נתחיל בדרישות המדריך

  • HashCat מותקן
  • כרטיס מסך בינוני \ חזק

נוריד את Hashcat

נוכל לאתר ב Pastebin סיסמאות Hash למשל

https://pastebin.com/MBFgjsLS

נעתיק אותם ל CyberChef

https://gchq.github.io/CyberChef

ונשתמש ב Regular Expression

^([^,]+)

על מנת להוציא רק את ה Hashs

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

תחילה אסביר על Brute Force Password Attack –

Brute Force Password Attack

נוריד את Hashcat ל Windows
בצורה זו, נוכל להגדיר נאמר שאורך הסיסמא הוא 7 תווים ואז המערכת תנסה בהתחלה רק A גדול נאמר AAAAAAA ואז AAAAAAB וכך לפי כל האותיות והמספרים.
אז נוכל להגדיר לHashcat

hashcat64.exe -a 3 GoovHash.hash

3 אומר לו Brute Force ו -a קיצור של Attack

אלו הם סוגי ההתקפות לפי מספר:

0 | Straight

1 | Combination

3 | Brute-force

6 | Hybrid Wordlist + Mask

7 | Hybrid Mask + Wordlist

כעת חלק מהסיסמאות 30 אחוז ליתר דיוק מהרשימה שלי נמצא את הסיסמא – מדוע? כי הן פשוטות מידי.

כיצד ניתן לשפר את ההתקפה?

Dictionary Attack

בתצורה זו נשתמש בקובץ למשל Rockyou שנוכל להוריד אותו מכאן

כעת נשתמש בקובץ + בחוק – החוק אומר שניקח את הסיסמאות ששמורות שם ונוסיף לחלקם אות גדולה \ מספרים וכו’

hashcat64.exe -a 0 -r ./rules/dive.rule GoovHash.hash ./rockyou.txt

Rainbow Tables

היא טבלה המכילה קובץ סיסמאות + ה Hash של כל סיסמא, לדוגמה Hashcat כמו שהסברתי למעלה  HashCat שהוא כלי הלוקח את קובץ הסיסמאות Rockyou ויוצר טבלה שבה ליד כל סיסמא יש את ה Hash Value של כל SHA שכולל NTLM או SHA1 או SHA256 וכך כאשר אתם רוצים לדעת מה הסיסמא המקורית ולא ה Hash אז אתם יכלים לבצע Rainbow Cracking.

חשוב להבין, החישוב מבוצע על ידי כוח עיבוד גרפי GPU, על ידי כרטיס מסך חזק מאוד \ כמה כרטיסים במערך SLI או Crossfire נוכל ליצור בתוך עשרות שניות מליוני \ טרליוני סיסמאות שנמצאות כ- Plain Text ולהפוך אותם ל Hash וככל שה Hash פשוט יותר (כמו MD5) נוכל ליצור יותר.
כך למעשה, ניתן ליצור טבלת Rainbow גדולה ולנסות לאתר את הסיסמא של המשתמש

Salting

הוא הצורה בה אנו רוצים למנוע מתוקפים לזהות את סיסמת המשתמש על ידי זיהוי של Hash ולבצע לו התאמה.

אבל כדי להבין מה המטרה, צריך להבין איפה הבעיה, הבעיה היא כזאת:

רוב אתרי האינטרנט משתמשים במסדי הנתונים שלהם ב Salting זאת אומרת שהסיסמא נשמרת כHash ומתווספת אל הסיסמא של המשתמש Salt, נאמר יש את הסיסמא 123456 אז ה Hash של 123456 הוא * אני משתמש כאן ב MD5

e10adc3949ba59abbe56e057f20f883e

מנגנון Salt יוסיף לסיסמא 123456 Salt (לרוב רצף מספרים \ אותיות אל הסיסמא הקיימת, נניח שהSalt של אתר מסוים הוא 545485, כעת זה יהיה

545485 + 123456

ומכאן ה Hash שיהיה באתר הוא:

a42d329dbba1c89e95bc4dcf92e41c2e

כך שאם ה Hash יגנב, יהיה לתוקף הרבה יותר קשה לבצע התאמה של Hashים שכן ה Hash הזה הוא Salt + Hash

ביצוע התאמה של הHash

משתמש יצר אצלכם באתר “שם משתמש” וסיסמא ב SHA256 , התוקף \ אתם נכנסים למסד הנתונים ומוצאים שה Hash הוא

8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92

אתם בטח אומרים שHash הוא “פונקציה חד כיוונית” ולא ניתן לגלות את הסיסמא, אתם לגמרי צודקים!
התוקף לא מעוניין “לשבור” את ה Hash או לגלות כיצד לבצע Reverse ל Hash, התוקף נסה לבצע “התאמה” הוא יקח קובץ (RainBow Table) או יבצע זאת סיסמא סיסמא, הוא יקח סיסמא יהפוך אותה ל SHA256 וינסה להתאים אותה לHash שקיים
דוגמה: הוא יקח את הסיסמא 123456, יהפוך אותה ל SHA256 ויבדוק או זה זהה לHash הקיים במסד הנתונים ואז הוא יכול לדעת מה הסיסמא

8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92 = 123456

 Salting כפתרון Bcrypt

ברגע שנוסיף לסיסמא הקיימת אות \ אותיות אנחנו בעצם נשנה את כל ה Hash וכך נמנע מביצוע של Rainbow Cracking כדוגמת – Hashcat

על מנת לבצע את זה:

Hash ( Password + Salt)

זאת אומרת שהHash נוצר משילוב של הסיסמא וה Salt.

אם מסד הנתונים שלנו נפרץ גם ה Salt שהוא “רצף מספרים ואותיות” שהתווסף לסיסמא וממנו נוצר ה Hash גם אותו יש לתוקף

אבל כאן נכנס האלגוריתם Bcrypt שהוא בדומה ל SHA אבל המיוחדות שלו היא האיטיות, כאשר כתבתי הסברים על Secure Hash Algorithm הסברתי שהHash מצד אחד צריך להיווצר מהר שכן יהיה יעיל, כאן Bcrypt הוא בדיוק ההפך, הוא איטי יותר ולא רק איטי יותר כאשר התוקף ינסה ליצור Dictionary Attack יקח לו הרבה יותר זמן, שכן הוא יצטרך להמיר את כל הסיסמאות בקובץ הסיסמאות שלו ל Salt + Password

כך הוא יצור Rainbow Table ואז יוכל להשוות את ה Hash שנוצר לסיסמאות שנמצאות במסד הנתונים שהוא רוצה.

Hashcat With Salt

אם הצלחתם להשיג מסד נתונים שקיים בו גם הHash וגם ה Salt

הוא אמור להיראות כך

01dfae6e5d4d90d9892622325959afbe:7050461

או הפוך, נקיש את הפקודה

hashcat64.exe -a 0 -m 10 Pass.txt

-m 10 אומר איזה מצב של Hash הכנסו את ה Hash לקובץ (הרשימה של ה Hash שלנו)

רשימה מלאה ניתן למצוא כאן:

https://hashcat.net/wiki/doku.php?id=example_hashes

למשל 20 זה salt:password ולא ההפך (כמו למעלה שזה 10)

על מנת לבצע זאת ביעילות נקיש את הפקודה כך:

hashcat64.exe -a 0 -m 10 -r ./rules/dive.rule Pass.txt ./rockyou.txt

בתוך הקובץ  Pass.txt נמצא ה Hash שאנחנו רוצים למצוא

WordPress Attack

ניסוי, הקימו שרת WordPress צרו משתמש חדש עם הסיסמא 123456

כעת קחו את ה Hash אשר מתחיל ב $P$

נקיש את הפקודה כך:

hashcat64.exe -a 3 -m 400 tal.txt ?d?d?d?d?d?d?

-400 אומר שזה Hash ששייך לפורמים וכו’

?d?d?d?d?d?d? – אומר שיש 6 תווים, d ספציפית אומר 6 תווים מסוג מספר שכן הסיסמא היא 123456

יקח למחשב כמה שניות לאתר את ה Hash

?l = abcdefghijklmnopqrstuvwxyz

?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ

?d = 0123456789

?h = 0123456789abcdef

?H = 0123456789ABCDEF

?s = «space»!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

?a = ?l?u?d?s

?b = 0x00 - 0xff

מאמרים קשורים

Leave a Comment