דילוג לתוכן
New

DeepSeek V4.1 Flash free for 7 days: 10M tokens a day after a top-up of $10 or more. Until Nov 30.

How it works

איך לבנות מעבדה ביתית חוקית

בונים מעבדה ביתית שמותר לתקוף: קובץ סקופ, פורטים של Docker שקשורים ל-loopback, רשת מבודדת, יומן עבודה ופירוק נקי.

מתחילים3 דקות קריאהמאת NotHoly

מה הופך מעבדה לחוקית

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

כדאי לכתוב את הכלל לפני שמתקינים משהו. קל לטשטש את הגבול בין מה שמותר לבדוק למה שאסור ברגע שכלי כבר רץ ויעד נראה מעניין.

מה צריך

  • מחשב בבעלותך או בניהולך.
  • Docker Engine או Docker Desktop, לפי התיעוד של Docker.
  • עורך טקסט וטרמינל.

הפקודות בהמשך הורצו ב-Windows עם Docker 29.8.2. בגרסאות אחרות הטקסט המודפס עשוי להיות מעט שונה.

שלב 1: יצירת התיקייה וקובץ הסקופ

כדאי לשמור את המעבדה בתיקייה אחת, כדי שיהיה קל למצוא אותה ולמחוק אותה אחר כך:

bash
mkdir -p lab/notes
cd lab

בתיקייה הזאת יוצרים את scope.md עם היעדים שמותר לך לבדוק:

markdown
# Scope

Allowed targets:
- 127.0.0.1 (containers I started, ports bound to loopback)

Not allowed:
- Anything else, until I have written permission from its owner.

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

שלב 2: בדיקה ש-Docker עובד

bash
docker --version
text
Docker version 29.8.2, build 7fc2dff

אם הפקודה נכשלת, קודם מתקינים את Docker. אם docker info מדווח שאין לו גישה ל-daemon, מפעילים את Docker Desktop או את שירות Docker ומנסים שוב.

שלב 3: פרסום פורטים על loopback בלבד

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

צריך לציין את כתובת ה-loopback במיפוי. בדוגמה הזאת תמונת שרת web פשוטה מחליפה את יעד המעבדה:

bash
docker run -d --rm --name lab-check -p 127.0.0.1:18080:80 caddy:2
docker port lab-check
text
80/tcp -> 127.0.0.1:18080

127.0.0.1:18080 פירושו שרק המחשב שלך יכול להגיע לפורט. אפשר להשוות למיפוי בלי כתובת:

bash
docker stop lab-check
docker run -d --rm --name lab-check -p 18081:80 caddy:2
docker port lab-check
text
lab-check
80/tcp -> 0.0.0.0:18081
80/tcp -> [::]:18081

כאן Docker מאזין על 0.0.0.0 ועל [::], כלומר על כל הממשקים. אם מכשירים אחרים באמת יכולים להגיע אליו תלוי בחומת האש וברשת, ולכן אי אפשר לסמוך על זה. צריך לכתוב 127.0.0.1 בכל פקודת מעבדה ולבדוק עם docker port בכל פעם.

שלב 4: ניתוק הרשת כשאפשר

חלק מהתרגילים לא צריכים רשת בכלל, למשל קריאת סקריפט חשוד או הרצת parser על קובץ. דרייבר הרשת none של Docker לא נותן לקונטיינר רשת מלבד loopback:

bash
docker run --rm --network none alpine:3.22 ip -o link | cut -d' ' -f2
text
lo:

קיים רק ממשק ה-loopback ‏(lo). כדאי להשתמש באפשרות --network none בכל מה שלא אמור לדבר עם העולם החיצון, ולהתייחס לדוגמה שהורדה כעוינת עד שקוראים אותה.

שלב 5: יומן מעבדה

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

markdown
## 2026-01-15 14:20, first run
- Target: juice-shop-lab, http://127.0.0.1:3000
- Goal: see what a failed login returns
- Command: curl -i http://127.0.0.1:3000/rest/user/login
- Result: (paste what you saw, not what you expected)
- Next: ...

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

שלב 6: פירוק

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

bash
docker stop lab-check
docker ps -a --filter name=lab-check --format '{{.Names}}'
text
lab-check

docker stop מדפיס את שם הקונטיינר. הקונטיינר הופעל עם --rm, ולכן Docker מסיר אותו אחרי שהוא נעצר, והפקודה השנייה לא מדפיסה כלום. אם רוצים להיפטר גם מהתמונה, מסירים אותה עם docker image rm. את תיקיית lab מוחקים רק כשההערות כבר לא נחוצות.

מעבדה שאפשר לבנות מחדש בכמה דקות עדיפה על מעבדה שמפחדים לגעת בה.

השלב הבא

עכשיו יש לך תיקייה עם סקופ, הרגל של loopback ודרך לעצור. המאמר הבא, הרצת OWASP Juice Shop עם Docker, משתמש בהגדרה הזאת כדי להפעיל אפליקציית web פגיעה בכוונה. כדאי לקרוא קודם את דף הפרויקט OWASP Juice Shop כדי לדעת מה מריצים.

מקורות

מקורות

  1. Docker: Get started
  2. Docker: Port publishing and mapping
  3. Docker: None network driver
  4. Docker CLI reference: docker container run
  5. OWASP Juice Shop project

עוד בנושא מעבדות האקינג

מעבדות האקינג

למה להשתמש ב-NotHoly ל-CTF ולמעבדות

מודל שכותב את ה-exploit לאתגר שלכם ומסביר למה הוא עובד, triage סטטי לבינארי, ו-solve שרץ במעבדה שלכם, לא אצלנו.

ביניים2 דקות קריאה

מעבדות האקינג

איך ליצור רשת Docker מבודדת למעבדה שלך

בניית רשת Docker בלי גישה לאינטרנט, הרצת OWASP Juice Shop עליה ופרסום עותק לדפדפן רק על 127.0.0.1, עם אימות של כל שלב.

מתחילים10 דקות קריאה

מעבדות האקינג

איך כותבים דוח פנטסט טוב

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

ביניים7 דקות קריאה