[ טיפים ל-Blue Team ]

Tarpits הגנתיים:ללכוד בוטים של brute-force, באופן חוקי

אל תפילו את התוקף — הטביעו אותו. כיצד להסיט תעבורת credential-stuffing אל מלכודת-דבש ששורפת את זמן הבוט ומתעדת הכול, ללא payload לא חוקי של «hacking back».

26 ביוני 20268 דקות קריאהעודכן 26 ביוני 2026

בוט מציף את עמוד ההתחברות שלכם בזוגות שם-משתמש-וסיסמה גנובים. התשובה המפתה — זו שמסתובבת בפורומי אבטחה — היא לירות בחזרה «פצצת טאבים»: עמוד שמריץ בלולאה את window.open() עד שהדפדפן או המכונה של התוקף קורסים. אל תעשו זאת. זה לא חוקי אפילו כשהוא מכוון נגד תוקף, זה עלול להקפיא לקוח אמיתי שפשוט שגה בהקלדת הסיסמה, וחוסם חלונות קופצים מנטרל את התרגיל תוך אלפיות שנייה. המהלך שבאמת מתיש תוקף שקט יותר ולגאלי לחלוטין: לזהות את ההתעללות, להסיט אותה למלכודת-דבש (honeypot), ולתרפת (tarpit) את החיבור כך שכל בקשה תיתקע לנצח בזמן שאתם מתעדים הכול. זהו tarpit הגנתי.

הגדרהמהו tarpit הגנתי באמת

tarpit עונה ללקוחות פוגעניים לאט ככל שהוא יכול, ומחזיק את החיבור שלהם פתוח וחסר תועלת במקום לסגור אותו. חומת אש אומרת «לא» תוך אלפית שנייה ומשחררת את התוקף ליעד הבא; tarpit אומר «כמעט…» ללא הגבלה, ומרתק את ה-sockets, ה-threads והסבלנות של הבוט אליכם. «הסטה בעת כשל אימות» היא פשוט tarpit המחובר לתהליך ההתחברות שלכם: ברגע ש-IP חוצה סף, בקשותיו מנותבות בשקט מנקודת הקצה האמיתית אל המלכודת, והוא לעולם לא מקבל שוב תשובה נקייה.

איטי, לעולם לא הרסני

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

המיתוסמדוע «להפיל את התוקף» מתפוצץ לכם בפנים

שליחת payload שנועד להפיל את הלקוח היא «hacking back», והיא נכשלת בשלוש חזיתות בבת אחת:

  • זה פשע. פגיעה בתפקוד מחשב של מישהו אחר — כן, אפילו של תוקף — היא גישה לא מורשית לפי חוקים כמו ה-Computer Fraud and Abuse Act האמריקאי, ה-Computer Misuse Act הבריטי ומקביליהם בעולם. אתם מעניקים לצד השני קורבן: אתם.
  • אתם יורים בעיוורון. כתובת ה-IP המקורית היא בדרך כלל צומת בוטנט, פרוקסי משותף, יציאת VPN או מכשיר שנפרץ ושייך למישהו חף מפשע לחלוטין. payload הרסני פוגע במי שבמקרה נמצא מאחוריה.
  • זה פשוט לא עובד. דפדפנים מגבילים וחוסמים window.open() משתולל, וכל תוקף מיומן מפעיל לקוח headless מתוך קונטיינר חד-פעמי שאף פצצת טאבים אינה יכולה להגיע אליו.
הגנה אקטיבית ≠ נקמה

הגנה אקטיבית אמיתית מעלה את העלות לתוקף על מערכות שבשליטתכם — tarpits, מלכודות-דבש, הטעיה, אינסטרומנטציה. היא לעולם אינה מושיטה יד לפגוע במערכת שאינה שלכם. שִמרו כל תוצאה בתוך הפרימטר שלכם ותישארו על קרקע משפטית יציבה.

מנגנוןכיצד פועלת הסטה בעת כשל אימות

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

תגובהמה התוקף מקבלערך הגנתי
401 מיידי / חסימה קשיחהכשל מיידי וחד-משמעי — ממשיך הלאה מידנמוך — משחרר אותו מהר וחושף בדיוק היכן הסף שלכם
tarpit של חיבורכל בקשה נתקעת לעשרות שניות; קצב התעבורה קורסגבוה — שורף את זמנו ואת ה-sockets שלו על המכונה שלכם
התחברות מלכודתטופס מזויף ש«כמעט» עובד לנצחגבוה — מתעד כל זוג אישורים ואת מלוא חתימת המתקפה
200 מטעיםתגובות מתקבלות על הדעת שהן חסרות ערך בשקטבינוני — מרעיל את הנתונים שאסף ומאט את הטריאז' שלו

tarpit של חיבור הוא הבחירה הבטוחה ובדוקת-הזמן: קבלו את הבקשה, ואז טפטפו את התגובה בייט אחר בייט, תוך החזקת ה-socket פתוח כל עוד הלקוח מוכן לחכות. כלים ייעודיים עושים בדיוק זאת שנים — endlessh עבור SSH, ו-SMTP tarpits קלאסיים נגד ספאם. אותו רעיון נכנס בכמה שורות כמסלול מלכודת, ושימו לב שכל ההשהיה מושקעת בהחזקת התגובה שלכם עצמכם פתוחה:

// Express honeypot: divert flagged IPs here, then trickle a response
// out slowly. All latency is on OUR server — nothing touches the client
// machine. Pair with a hard cap on concurrent tarpit sockets.
const tarpit = new Set();

app.use((req, res, next) => {
  if (flaggedIps.has(req.ip)) return res.redirect(307, "/trap");
  next();
});

app.all("/trap", (req, res) => {
  // Log the full attack signature for blacklisting + threat intel.
  logger.warn("tarpit", { ip: req.ip, ua: req.get("user-agent"), body: req.body });
  res.setHeader("Content-Type", "text/html");
  tarpit.add(res);
  // Drip one harmless byte every 10s; the bot's socket stays stuck on us.
  const drip = setInterval(() => res.write(" "), 10_000);
  req.on("close", () => { clearInterval(drip); tarpit.delete(res); });
});
הגבילו גם את הצד שלכם

tarpit מרתק חיבור אל התוקף — וגם אליכם. הגבילו את מספר ה-sockets המקבילים של ה-tarpit, הריצו את המלכודת על מארח מבודד, וודאו שמבול של בוטים לכודים לעולם לא ירעיב את היישום האמיתי ממשאבים.

ארכיטקטורהמחסנית ה-blue team סביב המלכודת

ה-tarpit הוא רק ה-payload; דווקא הזיהוי והבידוד העוטפים אותו הם שהופכים אותו לבטוח ושימושי כאחד. פריסה מלאה כוללת ארבע שכבות:

  1. זיהוי — WAF או IDS המשגיח על הנתיבים החשובים (/admin, /login) עם סף נוקשה, נאמר 5 כשלי התחברות תוך 10 שניות, המופעל רק לאחר ש-rate-limiting ו-CAPTCHA כבר סיננו את הרעש הרגיל.
  2. הסטה — כלל reverse proxy ששולח, ברגע ש-IP מסומן, את כל התעבורה העתידית שלו אל מארח המלכודת במקום ל-backend האמיתי.
  3. המלכודת — מלכודת-דבש מבודדת (לעולם לא שרת הייצור שלכם) המריצה tarpit של חיבור, התחברות מזויפת המתעדת כל אישור שנוסה, או שניהם.
  4. תיעוד ותגובה — שמרו את ה-IP, ה-User-Agent וחתימת המתקפה, הזרימו אותם למשהו כמו fail2ban כדי להרחיב ולהאריך חסימות, ודחפו אינדיקטורים מאומתים אל רשימות החסימה שלכם.

אמצעי זהירותכיצד לפרוס זאת מבלי לפגוע במשתמשים אמיתיים

  • בידוד אינו ניתן למשא ומתן. הריצו את המלכודת על שרת סטטי ומבודד. ללוגיקת הגנה אקטיבית אין מקום ביישום הייצור הראשי שלכם.
  • תחילה rate-limiting ו-CAPTCHA. סננו ספאם רגיל וטעויות כנות לפני שמשהו בכלל מסומן, כך שהמלכודת תפגוש רק אוטומציה מאומתת.
  • העדיפו דיוק על פני כיסוי. תוצאה חיובית-שגויה מקפיאה לקוח אמיתי ששכח את סיסמתו — הטו את הספים לכיוון הוודאות ותנו למשתמשים לגיטימיים מסלול שחזור ברור ומהיר.
  • שִמרו כל אפקט בצד שלכם של הכבל. תגובות איטיות, עמודים מזויפים ותיעוד ניתנים להגנה; כל דבר שנבנה כדי לרוץ על מכונת הלקוח או לפגוע בה — לא. אל תשחררו אותו.
[ FAQ ]

שאלות נפוצות

מהו tarpit הגנתי?

tarpit הגנתי הוא שירות שעונה במכוון ללקוחות פוגעניים לאט ככל האפשר — מחזיק את החיבור פתוח ומטפטף תגובה — במקום לחסום אותם על הסף. הוא מתיש את הזמן, ה-threads וה-sockets של בוט brute-force על תשתית שבבעלותכם בעוד אתם מתעדים את מלוא חתימת המתקפה. מכיוון שכל העלות מוטלת על השרת שלכם עצמכם, שום דבר אינו חוצה קו אדום משפטי.

האם זה חוקי להפיל את הדפדפן או המחשב של תוקף?

לא. פגיעה מכוונת בתפקוד מכונה של מישהו אחר — אפילו של תוקף — היא גישה לא מורשית לפי חוקים כמו ה-Computer Fraud and Abuse Act האמריקאי וה-Computer Misuse Act הבריטי. «Hacking back» הופך גם אתכם לעבריינים, וכתובת ה-IP שאליה הייתם מכוונים היא לעיתים קרובות צומת בוטנט, פרוקסי משותף או מכשיר חטוף השייך לצד שלישי חף מפשע. הגנה אקטיבית לגיטימית מעלה עלות רק על מערכות שבבעלותכם.

מהי הסטה בעת כשל אימות?

זהו tarpit המחובר לתהליך ההתחברות שלכם. כאשר IP חוצה סף התנהגותי — לדוגמה, 5 כשלי התחברות תוך 10 שניות — ה-reverse proxy שלכם מנתב בשקט את בקשותיו העתידיות של אותו IP הרחק מה-backend האמיתי ואל מלכודת-דבש שהיא איטית, מאובזרת היטב ומבודדת מהייצור.

כיצד לפרוס זאת מבלי להקפיא משתמשים אמיתיים?

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

[ דברו איתנו ]

הביאו AI פרטי אל עומס העבודה המפוקח שלכם

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