אזהרה חמורה: המאמר הזה נועד למפתחי ווב אשר מעוניינים ללמוד או להכיר שיטות התקפה בסיסיות על מנת להבין אותן לעומק ולהתמגן בפניהן. המאמר מכיל מידע טכני המיועד למתכנתים ואינו מיועד לקהל הרחב או מלמד חסרי ידע טכני.
המאמר אינו מיועד ללימוד כיצד לפרוץ למחשבים אחרים., כיצד להיות 'האקר' או כיצד להיות 'סייבר-מן'. אני מזכיר לכל הקוראים את חוק המחשבים שגוזר עד שלוש שנות מאסר לכל מי שמבצע חדירה לא מורשית למחשב. כלומר, אפילו 'סתם' בדיקה יכולה לסבך אתכם בכתב אישום פלילי. במידה ואתם בכל זאת מעוניינים לעבור על החוק ולהיות האקרים, אל תטרחו לקרוא את המאמר, הסרט הזה ילמד אתכם את מה שאתם צריכים לדעת על האקרים.
יופי, הם הלכו? מעולה. אפשר להתחיל.
בגדול, מה שחשוב באבטחת מידע הוא ההבנה של מה שאנחנו עושים והחולשות הרלוונטיות. למשל, אין טעם לנסות להבין מה זה MySQL Injection, שזו אחת הפרצות הותיקות והאהובות ביותר, בלי להבין מה זה MySQL ומה החשיבות שלו באתר. אם לא מימשתם בפועל קוד שמשתמש ב-MySQL, לא תוכלו להבין איך חוסר ידע של מתכנת (שאינו מבצע ולידציה וסניטציה) מתחבר עם שאילתה שנשלחת למסד הנתונים. מי שבונה תוכנה למחייתו יוכל להבין יותר לעומק את מהות הפרצה ויוכל לנצל אותה גם ללא כלי כלשהו. כך למשל, מתכנת מנוסה לא צריך כלי אם הוא מכניס גרש אחרי whatever.php?id=1 ורואה שגיאת sql. מי שיש לו ולו ידע מועט ב-SQL (וזה באמת לא משנה אם זה MySQL או MSSQL) ידע מה לעשות עם זה. או למשל, מתכנת שיודע מה הוא עושה יכול בקלות לממש באמצעות כל שפה כמעט כלי להפעלת brute force על כל מערכת. הוא ידע מספיק קומבינטוריקה כדי לממש אלגוריתם של brute force ולירות אותו על המערכת. מספיק שהוא מפעיל את כלי המפתחים ורואה שיש בקשה שנשלחת ללא בדיקה של session ואין חסימה אחרי שגיאות שגויות, אז הוא כבר ידע מה הבעיה ואיך לנצל אותה. זה חלק מהמקצוע. מתכנת שמבין מה הוא עושה ידע לעשות את הדברים האלו. אבל את הידע הזה הוא בדרך כלל לא ינצל על מנת לפרוץ לאתרים אחרים אלא להגן על האפליקציות והאתרים שהוא בונה. אני מאמין שכל מתכנת צריך לדעת על אבטחת מידע וגם להתנסות בהתקפה על אתרי דמה כדי להבין איך לבצע הגנה טובה יותר.
העניין הוא שהדברים האלו לוקחים זמן. זה לוקח זמן לפתח אלגוריתם של brute force ולכתוב סקריפט ב-Node.js שמנצל אותו (למשל). זה לוקח זמן לבדוק את כל האתר על מנת לראות שפרצת ה-sql Injection שופכת מידע על כל האתר (למשל). בדיוק בשביל זה יש לנו כלים אוטומטיים. הכלים האוטומטיים יכולים להיות משולבים בכתיבת הקוד (למשל בכלי ניתוח סטטי) או בשלב יותר מאוחר, כאשר אנחנו מבצעים בדיקות למוצר המוגמר.
לצערי, כמו בכל מקום יש תופעה של אנשים חסרי ידע שמחפשים את הכלי ש"יפרוץ לאתר" בלי להבין במה מדובר ויש רתיעה בכלל בתחום מכלים אוטומטיים וחבל כי הם יכולים לחסוך המון זמן ויותר חשוב, לעזור בהבנה איך פריצה מתקיימת וכך לכתוב קוד טוב יותר. רוב הפריצות היום נעשות באמצעות כלים אוטומטיים וידע והבנה שלהם יכול לסייע בבניית אפליקציות בטוחות יותר.
ה-פלטפורמה בה"א הידיעה לכלים אוטומטיים לאבטחת מידע היא מה שידוע כ"לינוקס קאלי". מדובר בגרסה של לינוקס, מבוססת דביאן המכילה כבר מראש כלים רבים לאבטחת מידע וכן אפשרות להעמסת עוד כלים. אם אתם חושבים שלינוקס זה בלגן, התקנות, שרתים וכאב ראש, אתם לא בכיוון. כמו כל הפצה טובה של לינוקס, אפשר לפרוס את קאלי על דוקר או ליצור קובץ דוקר עם הכלים שאנחנו רוצים. בלי קשר למערכת ההפעלה. בכל המאמרים הבאים אני יוצא מנקודת הנחה של שימוש בדוקר. אם אתם לא יודעים דוקר, זו הזדמנות מעולה ללמוד דוקר מהמאמרים שיש לי פה באתר.
אז איך מתקינים את הבסיס של קאלי? זה קל מאוד וגם מוסבר בדוקומנטציה של קאלי עצמה:
docker pull kalilinux/kali-linux-docker
זה מביא לנו image של קאלי בסיסית, ללא כל הכלים. כדי להכנס אליו אנחנו צריכים להקליד:
docker run -t -i kalilinux/kali-linux-docker /bin/bash
כאמור זה מייצר קונטיינר מיידי שאנחנו יכולים להכנס אליו. ה-bash הוא דביאן שאמור להיות אינטואיטיבי למדי. אבל הגרסה הזו היא ערומה למדי, אין בה את כל הכלים של קאלי. די בצדק, כי כל הכלים שוקלים 10 ג'יגה בערך. סביר להניח שאנחנו צריכים רק כמה כלים. רשימת הכלים המלאה שזמינה בקאלי נמצאת גם בדוקומנטציה. אנחנו יכולים להתקין כלי ספציפי כמו למשל joomscan, המסייע לנו בסריקת אתר ג'ומלה ומציג את הבעיות שיש שם. או את sqlmap שמסייע לנו לנתח בעיות של sql Injection. יש אוסף עצום של כלים וכן אוספים של כלים המאפשרים לנו להתקין את כולם. אבל פרה-פרה. בואו ונתקין ראשית את קאלי באמצעות השורות שהצגתי לעיל.
docker pull kalilinux/kali-linux-docker
אחרי ההתקנה של ה-image, נוכל לייצר קונטיינר מתי שבא לנו:
docker run -t -i kalilinux/kali-linux-docker /bin/bash
,
מייד אחרי הקלדת הפקודה הזו, אנחנו ניכנס לקונטיינר. אם ננסה להקליד את אחד הכלים שלנו, sqlmap למשל, אנחנו נראה שהוא חסר. אפשר להתקין אותו בקלות כמובן באמצעות:
apt-get update && apt-get install sqlmap
מהרגע הזה אנחנו יכולים להפעיל את sqlmap ולהריץ אותו. אם אני רוצה לצאת מה-shell של הקונטיינר ולחזור ל-cmd הרגיל אני יכול ללחוץ על קונטרול+P וקונטרול+Q. כדי לחזור אני צריך להקליד:
docker exec -it CONTAINER_HASH /bin/bash
כאשר ה-CONTAINER_HASH הוא ה-id של הקונטיינר.
פשוט, נכון? הנה גם סרטון קצר שמראה איך אני עושה את זה:
כמובן שזו לא דרך ברת קיימא. ברגע שרצחתי את הקונטיינר, בקונטיינר הבא שאני ארים לא יהיה את sqlmap. מה עושים? או יצירת image (או לקיחה שלו ממישהו שכבר עשה את זה). אבל זה בהחלט בהתאם לצרכים ולרצונות. במאמרים הבאים אני אסקור כלים כאשר בכל מאמר אני אסביר גם איך להכניס את זה לדוקר ואם צריך גם להכניס ל-bash.
ועוד מילה אחת אחרונה על מקור השם 'קאלי'. למרות שהיוצרים מכחישים זאת בתוקף, השם קאלי הוא שם אלה בדת ההינדית שזכורה לטוב מהסרט 'אינדיאנה ג'ונס' והמקדש הארור ששם עובדי אלת המוות קאלי מגישים לד"ר ג'ונס מרק עיניים ועוסקים בטקס פגאני שבו הם צורחים 'קאלי מההההה'. אתם מוזמנים לצפות אם אתם לא מכירים.
5 תגובות
רעיון מגניב להריץ קאלי על דוקר. וזה רק ממחיש עד לאן הפוטנציאל של דוקר..
אשמח עם תמשיך את המדריכי דוקר שלך לרמה גבוהה יותר!!
יפה מאוד
קאלי נמצאת גם בחנות האפליקציות של ווינדוז ואפשר להתקין אותה תוך מספר שניות על WSL 2:
https://www.kali.org/news/kali-linux-in-the-windows-app-store/
אני ילד בן 12 ואני האקר
תודה רבה נשמח לשמוע ממך עוד