367
0

שיטות התקיפה שיגרמו לכם לרוץ ולהחליף סיסמא

367
זמן קריאה: 5 דקות

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

היום נתעסק בשיטות מרכזיות שמשמשות להשגת credentials למערכת – Brute Force, Dictionary Attack, Rainbow Attack.

תוכן עניינים

השיטה הראשונה – Brute Force

“כוח גס או תְּקִיפָה כּוֹחָנִית (לפי האקדמיה ללשון) מאנגלית: Brute force, או חיפוש ממצה מאנגלית: Exhaustive search, מתייחס לתהליך או אלגוריתם שפועל באופן של ניסוי וטעייה של כל האפשרויות לפתרון בעיה נתונה עד למציאת הפתרון הנכון”

מה זה אומר בפועל?

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

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

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

החסרונות העיקריים בשיטה זו:

  1. זמן הריצה (ככל שמספר האפשרויות גדול יותר כך גם זמן הריצה).

  2. חוסר שימוש במידע עזר – השיטה הזו היא די “טיפשית” במובן שהיא איננה מעבדת שום פרט מידע או מנסה לצמצם את מספר האפשרויות. אין בה תחכום או אלגוריתם מסוים.

השיטה השנייה Dictionary Attack

“תקיפה מבוססת Brute Force אך עם שיפור. במקום לנסות את כל האופציות האפשריות, משתמשים בקלטים (נקרא גם keyspace) מתוך רשימה סגורה שנקראת dictionary list אשר מכילה ביטויים ומילים נפוצות.” (תרגום חופשי)

מה זה אומר בפועל?

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

התוקף מנסה את כל האפשרויות בתקווה שהסיסמא נמצאת במילון.

לפני שנעבור לשיטה הבאה, נעבור בזריזות על פונקציית גיבוב (hash)

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

לhash יש כמה תכונות:

  1. בהינתן ערך hash, לא ניתן לשחזר (בזמן סביר) את הkey שהוא נוצר ממנו.
  2. בהינתן ערך key, hash, לא ניתן למצוא (בזמן סביר) key נוסף שיתן את אותו ערך hash.
  3. לא ניתן למצוא (בזמן סביר) שני keys אשר יתנו את אותו hash.

כמו כן, פונקציית הhash איננה “סוד”. כלומר, הפונקציה שמשתמשים בה ידועה לציבור.

יש כמה פונקציות hash, המפורסמות שבהן: SHA1/224/256/384/512, MD2/5

דוגמא לקלט ופלט של hash מבוסס sha256: בהינתן הקלט ‘hello’ הפלט יהיה ‘2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824’

נחזור לתוקף שמנסה להשיג את הסיסמא שלנו.

השיטה השלישית – Rainbow Attack

“Rainbow או Rainbow table היא טבלה שחושבה מראש ונועדה לפענוח של סיסמאות שהוצפנו ע”י hash” (תרגום חופשי)

מה זה אומר בפועל?

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

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

מה הוא כן יכול לעשות?

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

מסקנה חשובה

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

דמו:

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

לסיכום

השיטות שהוצגו, Brute force ו Dictionary attack וRainbow attack הן שיטות “אגרסיביות” במובן הזה שהן מנסות המון צירופים אפשריים כדי להשיג גישה.
בbrute force מנסים את כל הפרמוטציות שקיימות או מתבססים על סיסמאות ידועות מראש ומנסים אותן אחת אחרי השנייה בצורתן הגלויה.
בdictionary attack מרחב הקלטים שממנו מוציאים קלטים הוא יותר מצומצם ומבוסס על מילים וסיסמאות נפוצות.
בrainbow attack, ניתן להכין מאוסף המילים גם מילון דיגיטלי שממפה את המילים לערך הhash שלהן עבור פונקציה/יות ולאחר מכן לבדוק ע”י פעולה בסיסית אם הinput hash שהצלחנו לשים את הידיים עליו נמצא במילון שלנו, אם כן אז גם המקור שלו ידוע.

טיפים חשובים לקביעת הסיסמא

  1. החליפו סיסמא כל חודשיים. מערכות נפרצות, סיסמאות מודלפות. הכי קל, הכי פשוט, להחליף כל כמה זמן.
  2. לא להשתמש במידע אישי!!! לא מספר טלפון, לא תאריך לידה, לא השם של הכלב שלכם ולא שום דבר שניתן לדעת אותו מחיפוש באורך של 5 דקות ברשתות החברתיות השונות.
  3. הקפידו לשלב תווים מיוחדים (גם רווח הוא תו מיוחד), אותיות גדולות ומספרים.
  4. אורך הסיסמא צריך להיות לפחות 12. ראינו למעלה כיצד מתבצעת תקיפת Brute Force. תעשו לי טובה ואל תעשו לתוקף חיים קלים.
עומרי נעים
WRITEN BY

עומרי נעים

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

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *