כיצד להשתמש בתוכנת hashcat כדי לפצח hash שונים.

אפס, ידע רקע

1. פונקציית hash

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

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

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

    2.hashcat

    תוקף קיבל את ערך האש של הסיסמה האם באמת אין דרך לדעת את הסיסמה עצמה? כמובן שלא. למרות שזה לא ריאלי לחשב את הסיסמה ישירות על פי ערך ה-hash של הסיסמה מבחינה מתמטית, אנחנו יודעים שפונקציית ה-hash מחושבת מקלט פשוטה ומהירה. במקרה הגרוע ביותר, אתה יכול לנסות את הסיסמאות שבני אדם עשויים להגדיר הם רק אותם, נבדק בזה אחר זה. אם אתה מזל, עדיין יכול לנסות אותם. הפעולה של ניסיון מתמיד לקבל את הקלט המתאים לערך האש נקרא פיצוץ.

    בהתבסס על הרעיון הזה, הופיע hashcat. אומרים כי hashcat נולד כדי להוכיח כי פיצוץ hash הוא עניין פשוט מאוד. hashcat טוען שהוא כלי הפיצוץ hash המהיר ביותר בעולם, והוא אפילו תומך ב-GPU ו-FGPA, אם יש לך.


    hashcat לא רק מהיר, אלא גם תומך באופן מקצועי יותר מ-200 פונקציות hashcat פקודת השימוש:

    hashcat - help

    אתה יכול לראות את רשימה של כל פונקציות hashcat הנתמכות על ידי hashcat אם יש יותר מדי, אני לא אפרסם אותם כאן. hashcat מותקן ברירת מחדל ב-

    Kali וניתן להשתמש בו ישירות. אבל Kali שלי מותקן ב- VirtualBox, תמיד מרגיש כי הזדמנויות וירטואליות איטיות יותר, אז אני רוצה להשתמש ב- hashcat במארח פיזי. הולך תחילה לאתר הרשמי של hashchat כדי להוריד את hashchat עד כה, הגרסה האחרונה היא v3.5.0, שפורסמה ב-2017.04.05. ממועד העדכון, ניתן לראות כי hashchat מלא חיוניות. כדי להימנע מהצרות של הידור, הורדה ישירות את החבילה הבינארית, רק 2.7M, וזה קטן מאוד בהשוואה למשחקים שעלולים לעתים קרובות עשרות ג'.

    לאחר השלמת ההורדה, דחיק את hashcat ותראה:

    • hashcat32.bin

    • hashcat32.exe

    • hashcat64.bin

    • hashcat64.exe

      hashcat64.exe> <55x56>hashcat64.exe> בחרתי hashcat64.bin למען היופי, הוסיף שורה לקובץ ~/.bashrc:

      alias hashcat='hashcat64.bin ' 

      לאחר ששמור, פתח מחדש את הטרמינל הווירטואלי כדי להפוך את קובץ ~/.bashrc לתוקף, לא משנה איפה, הזן את הפקודה hashcat ישירות.

      בסדר, עכשיו אתה יכול להתחיל להשתמש ב-hashcat כדי לפצץ hash שונים.

      1. פיצוץ md5

      md5 צריך להיות אחת הפונקציות hash המפורסמות ביותר והנפוצות ביותר. תחילה השתמש ב-Python כדי ליצור כמה ערכים md5 לפיצוץ, הקוד הוא כדלקמן:

         יבוא   hashlib 
        passwords  =  ['>123123',  ' bond007', ' xxxxx ',  ' *H @&(NT*@BR#^'] 
        for password  in  passwords: 
          md5 = hashlib.md5() 
          md5.update (password) 
          הדפס md5.hexdigest ()

      בהתאמה, התוצאות התפוקה הן:

         4297f44b13955235245b2497399d793 
        CBDB7E2B1ED56CEB796AF2DF07205A3 
        DAD3A37A9D50688B5157698ACFD7AEE 
        d77db958c179bbffae04b2b908b75c26

      שמור את תוצאות הפלט בקובץ md5.hash, עם ערך hahs אחת בשורה. לאחר מכן השתמש ב- hashcat כדי לפצץ את ערכי hash האלה, הפקודה היא כדלקמן:

         hashcat -w 3 -A 0 -m 0 --remove -o md5.out md5.hash wordlist.dic

      } פרמטרים-w משמשים למצב עבודה מצוין, ישנם ארבעה סוגים, כפי שמוצג בטבלה להלן:

      ; Borit = -} ( } {} {} {100017}; Borx Borx: Borx Borx ; Borx Borx: Borx; Borx Borx Borit; Borx Borit; Borit ; Borit ; Borit ; Borit; Borit ; Borit ; Borit; Borit Borit Borit; Borit - Borit Borit: Borit Borit: - Borit: Borit: Borit Borit - Borit Borit: Borit: - Borit: -">High
      NPerformanceRuntime Power Consumption Desktop Impact
      1 Low 2 ms Low מינים
      } 2 Default כלכלה {} Noticeable
      96 msHighUnresponsive
      4Nightmare 480 msInsane Headless

      הפרמטר-A משמש לציין מצב ההתקפה המשמעות של 0 היא ישירה ורציפה, כלומר, פיצוץ עם מילון סיסמה. ישנם חמישה ערכים של -A, כפי שמוצג בטבלה להלן:

      {1000P}
      N מצב
      0 Street
      Combination
      3 Brute-force
      6 Hybrid Wordlist + Mask
      7 Hybrid Mask + Wordlist
      {} } {100017} {100017} {100017} }

      {100017} } } {

      } {100018} {100018} {100018} {100018} } } {100018} {100018} } } } } פונקציית hash של הערך, 0 מצביע על כך שפונקציית hash היא md5, הערכים האחרים מוצגים בטבלה הבאה:

      <- - Fontage (0.Fontage: :0); קופס;0);">300{}
      N שם Cattage; Fontage; Fontage
      0 MD5 <1.5> Raw Hash = "קופס 2x18> " "קופס 2x18> "קופס; "קופס; "קופס 2x18"; 2x18"; "; ; "; 2x18"; 2x19"; ; ; ";
      MySQL4.1/MySQL5 שרת Database
      1000 NTLM
      1800 sha512crypt border-right: 0px; בודר-בוטום: 0px; border-left: 0px; צבע העליון: rgb (235, 235); פונה-משפחה: אנריט; פונט-סגנון: אנריט; מרגין: 0px; outline: 0px; padding: 0.75 RAM; vertical-align: top; קו גבוה: 1.5;">2611vBulletin<v3.8.5Forums, CMS, E-Commerce, מסגרות

      טבלה זו ארוכה מדי אני מראה רק כמה פונקציות hash הכרובות במאמר זה, אתה יכול לראות את כל בפרמטר -help כדי להצביע על כולם.

      המשמעות של פרמטר 5. שני הפרמטרים האחרונים של

      md5.hash ו-wordlist.dic הם ערך ה-hash ומילון הסיסמה שיהיה להתפוצץ בהתאמה. שניהם ערך ה-hash ומילון הסיסמה הם שורה אחת. התוכן ב-md5.hash מחושב על ידי Python אם אין לך מילון סיסמה מתאים ביד, תוכל להשתמש בפקודה:

        wget -O wordlist.dic https://samsclass.info/123/proj10/500_passwords.txt

      下载一个。现在完事具备,按下回车,结果华丽地报错:(

        clGetPlatformIDs(): CL_PLATFORM_NOT_FOUND_KHR

      2. סיסמת הכניסה של Windows Management hash>

      בדרך כלל, הוא ממוקם ב

        C:\Windows\system32\config\SAM

      קובץ SAM מוגנים על ידי Windows ולא ניתן לקרוא אותם ישירות ודורשים להשתמש בכלים כגון SAMInside. מצא מכונת וירטואלית של Windows 1<

      <99x91> לאחר שסמנית ה-SAMInside ב-1ce7 ולהפעל אותו עם הרשאות מנהל, ולאחר מכן לחץ על הקובץ

      5>

      5>

      0> לאחר שניתן לשבור את הסיסמה, אבל זה לא משנה, לבחור בסבלנות להשקיע את הקוד

      5>

      5>

      0>

        hashcat -w 3 -A 0 -m 1000 --remove -o win7.out: win7.out>win7.out: win7.hash wordlist.dic

      לאחר ביצוע, בדוק את הקובץ win7.out ומצא כי הפיצוץ בהצלחה 16x7.16   356CEE0C89FB65ED6D6aa7A445C4CE5:rush2112

      כיצד לקבל קובץ SAM אנא עיין ב"כיצד לייצא Windows Hash Series 1". להלן מתעד את תהליך הקריאה שלי של קבצי סאם במכונה וירטואלית Windows 7.

      אם מדובר במכונה פיזית, פשוט השתמש ב-Win PE כדי להפעיל את המכונה וקרא את קובץ SAM בדיסק. אני מכונה וירטואלית, אתה יכול לקרוא את הקבצים בדיסק הווירטואלי על ידי התקנת קובצי דיסק וירטואלי למערכת הקבצים. המכונה הווירטואלית שאני משתמש היא VirtualBox, אשר יכול לעשות זאת באמצעות הפקודה vdfuse. אם אין vdfuse, עליך להתקין תחילה את virtualbox-fuse:

        sudo apt-get install virtualbox-fuse

      תוכל גם להוריד את חבילת ההתקנה של virtualbox-fuse ולהתקין את עצמך.

      לאחר ההתקנה, יש את הפקודה vdfuse, שיכולה להתחיל מיפוי דיסק וירטואלי ולהתקנה:

        mkdir -p ~/vmdisk 
        sudo vdfuse -t vmdk -f Win7Pro32.vmdk ~/vmdisk/

      לאחר ביצוע הצעד הזה, בדוק את ספריית ~/vmdisk, ישנם שלושה קבצים: EntireDisk, Partition1/Partition1 ו-Partition2, ספרייה חדר 59: 58~disk   mkdir -p ~/vmdisk_1   mkdir -p ~/vmdisk_2

      השתמש בפקודה mount כדי לתקן את שלושת הקבצים של EntireDisk, Partition1 ו-Partition2 בהתאמה:

        sudo mount ~/vmdisk/EntireDisk/m777x77> 
        sudo  mount  ~/vmdisk / Partition1    ~/vmdisk_1 
        sudo mount ~/vmdisk/Partition2   ~/vmdisk_2

      מצא כי EntireDisk נכשל. התוכן של Partition1 הוא לא מה שרציתי, Partition2 הוא קובץ במכונת וירטואלית של Windows 7, שזה בדיוק מה שרציתי. העתיק את קובץ SAM היעד שלנו מ-vmdisk_fs:

        cp  ~/vmdisk_2/Windows/System32/config/SAM  ./

      אגב, העתיק גם את קובץ המערכת:

        /Systems / x x x101x x x106x10x

      x103x106x1010>/ בדוק את התוכן של קובץ ה-SAM, כפי שמוצג בתמונה למטה, זה לא קובץ טקסט פשוט זה אכן בסגנון של Windows,

      בסדר, למרות שקובץ ה-SAM נפתח בהצלחה, אבל עדיין לא קיבלנו hash מה עלינו לעשות הבא? אתה יכול רק להשתמש בכלים כדי לנתח את התוכן של קובץ SAM. קבל את קובצי SAM והן את קובצי מערכת ל-Kali, הפעל את הפקודה:

        samdump2 -o sam.hash SYSTEM SAM

      ואז צפו ב-sam.hash, ותוכלו גם לראות את ערך ה-hash של סיסמת ההתכנס של כל משתמש. כל שורה בקובץ sam.hash היא משתמש, והפורמט של כל שורה הוא:

        שם משתמש: RID:LM-hash ערך: NTLM-hash ערך

      שים לב שהפורמט זה הוא פורמט פלט הפקודה samdump2, לא "פורמט סיסמת hash תחת Windows".

      3. פיצוץ סיסמת כניסה לינוקס hash

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

        sudo adduser -justforfun

      linux ערך הכניסה של משתמש מאוחסן בקובץ/פקודה/ צפה: 15x

      xxxxxx9xx143 justforfund: $ 6 $ 0fokwg59 $ 6hpMS5dM9wDT/42DDoSD0i0g/whab50xs9ievlc3v20yf1krmxzhgxcm0efv6xu69hdgmz4fwamzso4hqagq0:17373:0:999:7:7:::

      משמש לקרוא קובץ. המשתמש החדש שאנחנו רק יצרנו נמצא באופן טבעי בשורה האחרונה, אז השתמשו ב-TAIL-N 1 כדי לקרוא אותו. התוצאה שנקראה היא הנתונים מחולקים ב":", החלק הראשון הוא שם המשתמש "justforfun", החלק השני הוא ערך hash של הסיסמא.החלקים האחרים אינם צריכים לדאוג במאמר זה. אנו מתמקדים בחלק השני.

      "$ 6$" בתחילת

      מתייחס לסוג הפונקציה hash המשמשת הוא SHA-512, למעט "$ 6$", ב-linux, "$ 1$" מתייחס ל-MD5, "$ 2a$" מתייחס ל-Blowfish, "$ 2y$" מתייחס ל-Blowfish (correct handling of 8-bit chars), "$ 5$" מתייחס SHA-256, ראה ויקיפדיה: passwd לפרטים. בנוסף, הקובץ / etc/login.defs מתואר גם את האלגוריתם hash. החלק "0fokwg59" לפני

      "$6$" עד "$" הבא הוא מלח. מה זה מלח? Baidu יודע שהתשובה של CNB2009 לשאלה "מה זה ערך מלח md5" היא פשוטה וקלה להבנה:

      היא אמצעי להפוך לאותה סיסמה להיות ערכי hash שונים, זה מלוח. MD5 עצמו אינו הפיך, אבל כיום יש מסדי נתונים רבים באינטרנט התומכים בשאילתה אנטי. אם מסד הנתונים של סיסמת המשתמש דלפף בטעות, האקרים יכולים לקבל את סיסמת המשתמש באמצעות שאילתה אנטי, או לפצח באלימות על קוד hash (כלומר, המשמש על ידי אנשים רבים) המופיעים בתדירות גבוהה יותר במסד הנתונים (כי הוא בדרך כלל סיסמה חלשה). ערך המלח הוא ערך אקראי נוסף שנוסף במהלך תהליך hash של הסיסמה. לדוגמה, הזהות שלי הוא אפילפסיה ω ④ והסיסמה היא 123456. כאשר היא מאוחרת במסד הנתונים, ניתן להש את המחרוזת "123456/אפילפסיה ω ④", ובעת אימות הסיסמה, משמש גם את המחרוזת "(הסיסמה שיש לאמת)/אפילפסיה ω ④". כאשר סיסמה טיפשת נוספת היא 123456, אתה עדיין יכול לבנות ערכים שונים של hash וניתן לאמת אותה בהצלחה. בשלב זה, הזהות שלי משמש כערך מלח כדי לסיסמה מורכב. אז.. תפקידו של ערך מלח הוא להפחית את הפסדים הנגרמים על ידי דליפת מסד נתונים. אם RP שלך טוב מאוד, ניחש שהסיסמה שלי היא 123456, אני לא יכול לעצור אותך

      התשובה היא עבור md5, ופונקציות hash אחרות זהות. החלק לאחר המלח הוא ערך האש. כעת העתיק את כל החלק השני לקובץ linux.hash, התוכן של linux.hash צריך להיות:

        $ 6 $ 0xxxg59x <23hms5dm9wdt / 42DDoSD0i0g/whab50xs9ievlc3v20yf1krmxzhgx0efv6xu6xu69hdgmz4fz4wamzso4hqagq0  ואז השתמש בפקודה הבא לאחר זמן קצת, הפיצוץ הושלם, צפו את התוצאות: 

      werner@Yasser:~/hashcat$ cat linux.out 
      $ 6 $ 0fokwg59$ 6hpMS5dM9wDT/42DDoSD0i0g/whab50xs9ievvlc3V20YF1krmxzhgcm0efv6xu69HDGMZ4fwamzso4hqagq0:4321

      .

      4. פיצוץ סיסמת הכניסה Mysql hash

      ראשית, חייב להיות Mysql. זה רק במכונה הווירטואלית שלי. Baidu יודע שערך hash של סיסמת הכניסה של Mysql נשמר בקובץ user.MYD. איפה הקובץ user.MYD? גם אני לא יודע, פשוט מחפש אותו:

        test@test-VirtualBox:~$ sudo find / -שם user.MYD 
      <52ql 52> /var/lib/mysql/mysql/user.MYD

      . אם הקובץ זה לא ייכנס על /var/lib/mysql/mysql/user.MYD<6x58> sudo<60x70>cat /var/lib/mysql/6x

      x66x

      x
      x
      x
      x
      x65> לאחר זמן מה, הפיצוץ הושלם, צפו את התוצאות:

        werner@Yasser: ~/hashcat$ cat mysql.out 
        6B8255FB466413D6B1B72464E23428C94BCB: viper

      ניתן לראות כי הפיצוץ מוצלח.

      5. פיצוץ Discuz! סיסמת פורום

      Discuz! זוהי תוכנית פורום php ידועה בסין והוא נמצא בשימוש נרחב. עכשיו בואו נפוצץ את דיסקוז! ערך hash של סיסמת המשתמש. קודם כל, אתה צריך למצוא את ערך האש, איפה אתה יכול למצוא את זה? כמובן מדיסקוז! במסד הנתונים.

      יכול להיות Discuz! איפה מסד הנתונים? פתרתי את זה, הורד את הגרסה האחרונה של Discuz מהאתר הרשמי שלו! קוד מקור, הפעל והתקין, תקבל Discuz! מסד הנתונים :smile:

      Discuz! שם מסד הנתונים המוחדל נקרא ultrax, שבו טבלה pre_ucenter_members שומר את ערך hash של סיסמת הכניסה "pre_" הוא קידומה ברירת המחדל שניתן לשנות במהלך התקנה, אבל "ucenter_members" לא ישתנה. השתמש בהצהרת sql הבאה כדי לבדוק את ערך hash של סיסמת הכניסה:

         בחר  password, salt   מ  pre_ucenter_members; 

      שמור ערך hash וערך מלח לקובץ:

        echo 69BCBA126B93C6F397983629A0F7053:c13fd9 >  discuz.hash

      ערך המלח וערך המלח נמצאים באותה שורה, מחולקים ב":". לבסוף, פוצץ את סיסמת הכניסה Discuz hash עם הפקודה הבאה:

          hashcat  -w   3 -a   0 -m  2611 - revive -o  discuz.out  discuz.hash wordlist.dic 

      לאחר רגע, הפיצוץ הושלם. התוצאות:

        werner@Yasser: ~/hashcat$ cat discuz.out 
        69BCBA126B93C6F397983629A0F7053:c13fd9:winter

      ניתן לראות כי הפיצוץ מוצלח.

      6. מבחן מילון גדול

      עד כה, השתמשנו במילון קטן עם רק 500 מילים בכל פעם, וזה לוקח רק רגע לכל פעם כדי להתפוצץ בהצלחה כל מיני hash. זה לא מוזר? הסיבה לכך היא כי הגדרתי בכוונה את הסיסמה החלשה במילון כדי להתאמן את השימוש ב- hashcat, אחרת זה לא יגרום לאנשים להרגיש רע מאוד. בפועל, זה בלתי אפשרי להיות כל כך מזל טוב. בואו נחשב באופן אקראי את ערך md5 של סיסמה פחות חלשה, לפצץ אותו עם מילון גדול, מצד אחד, לנסות מזל, ומצד שני, לראות כמה מהיר hashcat יכול להיות.

      חישוב תחילה את ערך md5:

         import  hashlib 
         md5 =  hashlib.md5 () 
         md5.update (" werner123456!!") 
          הדפסת  md5.hexdigest ()

      הפלט הוא:

         יכול לשמור   b17133f9abff287ed0546c1af2b171f7

      ולאחר מכן בחר מילון בגודל 10.5G המכיל 940 מיליון סיסמאות, להתחיל להתפוצץ: {    100077 100071 {100071 {100077   100077 100077   התחלתי להתפוצץ לפני השינה, וקמתי למחרת כדי להסתכל על התוצאות ומצאתי:

         סטארted:  Wed Jul 26 22:55:27 2017 
         Stopped: Wed Jul 26 23:02:28 2017

      במקור לקח רק 7 דקות! חשבתי שזה ייקח 7 שעות, 60 פעמים מהר יותר ממה שציפיתי! למרבה הצער, ערך hash לא התפוצץ בהצלחה, נראה כי "werner123456 !!!" אינו במילון הסיסמה. נראה שאני צריך להכין מילון סיסמה של 100G, אבל זה מאוד לא נוח לשמור ולהעביר מילון כל כך גדול. האם אין דרך אחרת? כמובן, אתה זוכר את מצב ההתקפה? השתמשנו במצב "Streight", והבא, בואו נבחן כמה דפוסים אחרים.

      7. סיכום

      משתמש ב-hashcat Flasting hash, הראשון הוא למצוא את ה-hash במערכות שונות, תוכנה שונות יש מיקומות אחסון ה-hash שונים, ולכן יש צורך למצוא במדויק את הערך ה-hash; השני הוא לקבוע נכון את סוג hash, לקבוע אם hashcat תומך בזה hash, ולבחור את הפרמטר -m הנכון, אחרת זה כמעט בלתי אפשרי להצליח; השלישית היא שמילון הסיסמה צריך להיות טוב יותר אם זה יכול להתפוצץ בהצלחה בסופו של דבר תלוי במילון. למרות שמילון הסיסמה הוא גדול ככל שזה טוב יותר, הוא עדיין גדול יותר, hashcat ידוע גם במהירות שלה, מילון גדול אינו בעיה עבור hashcat. כאן מילון טוב יותר: דלת דליפה קודמת + אוסף מילון סיסמה חלשה נפוץ 7Z , סיסמה דחיסה היא: anywlan. בנוסף, אם אתה אוסף הרבה מילונים קטנים, אתה יכול למזג, למיין ולכפול את המילונים הקטנים כדי לקבל מילון גדול כדי להקל על פיצוץ hashcat. אם המילון הקטן נמצא באותו ספרייה, אתה יכול להשתמש בפקודה:

           cat  *   |   sort  >   Merge.dic

      אם המילון הקטן מסודר לפי קטגוריה ומופץ בספריות מרובות שכבות? ברור שלא ניתן להשתמש בפקודת cat בלבד, אבל למעשה זה צריך רק פקודה אחת בהנחה שהמילונים הקטנים מאוחסנים בספריית MyDictionary, ניתן לכתוב את הפקודה כדלקמן:

       { }  find ./MyDictionary -type f -exec cat {}{} ;   |   sort  |   uniq >   Merge.dic

קודם:אילו סוגים של קבצים מוצפנים יכול לתעד שחזור סיסמה לפענח? להלן תבניות הקובץ שהוא תומך לפיצוח:
הבא:כמה מצבי התקפה hashcat
  • התמקד Word, Excel, PPT, PDF, RARR, ZIP, 7Z, חבילות דחוסות, פתיחה ופענוח קבצים הצפנת Office
  • אנו מספקים למשתמשים שחזור סיסמאות חבילות דחוסות קבצים איכותיים, פתיחת PDF, שחזור סיסמאות Word
  • Copyright © מאסטר לשחזור סיסמאות מסמך פלטפורמת פענוח מקוונת