SlowLoris
דלג על קישורי ניווט
מאמרים
מידע לאנשי מקצוע
מחקרי סוסים טרויאניים
סקירת וירוסים עדכנית
התראות
 

סקירת כלי: SlowLoris 

מיכאל כרמון 30/8/11

 

תקציר
רושעת ה Slow Loris היא תוכנה מסוג DoS Slow  המסוגלת להפיל שרת אינטרנט בודד באמצעות מחשב יחיד. התֹכנה נכתבה על ידי Robert "RSnake" Hansen בסביבות 2009.
כללי
התקפת DoS רגילה מבוססת על משלוח של כמויות עתק של חבילות מידע כדי שיסתמו את עורקי התעבורה בשרת הקורבן או שיגרמו לו להיתקע מחוסר משאבים לטיפול בבקשות הזורמות אליו עד לקריסה של השרת. הקושי העיקרי של ההתקפה הזו, עבור התוקפים, הוא הצורך לארגן לאורך זמן משאבים גדולים משמעותית מבחינת כוח מחשוב ורוחב פס מאלה של המותקף.
גישת ה DoS Slow אינה מבקשת להפיל את כל השרת שעליו יושב או יושבים  אתרי האינטרנט על ידי רוויה של כל המשאבים שלו אלא רק web server מסויים או מסויימים המותקנים על המכונה. מבחינת התוקף יש כאן יתרון גדול משום שאין צורך לארגן משאבים רבים אלא די במחשב בודד.
חשופים להתקפה
שרתים המשתמשים ב threaded process
• Apache 1.x
• Apache 2.x
• dhttpd
• GoAhead WebServer
• WebSense "block pages" (ללא אישור סופי)
• Trapeze Wireless Web Portal (ללא אישור סופי)
• Verizon's MI424-WR FIOS Cable modem (ללא אישור סופי)
• Verizon's Motorola Set-Top Box (port 8082 and requires auth - ללא אישור סופי)


אופן ההתקפה
המחשב התוקף שולח אל המותקף HTTP Headers תקינים  אך לא שלמים  בפרקי זמן קצובים. פעילות זו מונעת מה connection להיסגר והיא תימשך עד שכל ה connections יסיימו את הפעילות הקודמת שלהם וייתפסו על ידי התוקף. בסוף התהליך לאתר האינטרנט לא יהיו connections פנויים עבור משתמשים אחרים ולא תתאפשר גישה אליו. תהליך זה נעשה ללא פגיעה בשירותים אחרים של השרת, אולם לאחר שהתוקף משחרר את הconnections , האתר או האתרים חוזרים לתפקד כרגיל.
הסוואות
כלי תקיפה זה בעל יכולת לשלוח Host Headers מעוצבים. למשל כאשר מדובר ב Virtual hosts, הלוגים עבור כל אתר נרשמים בנפרד וכך יותר קשה לזהות את ההתקפה, אך ההסוואה היעילה ביותר של הכלי היא שהלוגים של השרתים לא נכתבים עד תום ההתקפה, כך שאפשר להוריד web server למשך דקות ארוכות מבלי שהלוג יירשם ויפעיל את שירותי הבקרה. עם זאת, מרגע שה session נופל או ההתקפה נפסקת צצות כמויות גדולות של הודעות 400, אולם גם את המכשול הנ"ל ניתן לעקוף ע"י שינוי הודעות אלו להודעות 200 (Ok) על ידי השלמת הheader   ובכך לעורר פחות חשד.
הערה: לא מדובר, אם כן,  בהתקפת TCP DoS משום שנוצר כאן קישורTCP  מלא, עם זאת זו בקשת HTTP  חלקית. למעשה זו התקפת SYN flood over HTTP
דרכי התמודדות עם ה Slow Loris
ככל הידוע כיום, אין דרך לחסום חסימה מלאה את הכלי אולם ניתן לנקוט דרכי פעולה למיתון הנזק (mitigation):
• הקטנת מספר הconnections  שכתובת IP  אחת יכולה לפתוח
• הגדלת מספר החיבורים המקסימלי לשרת
• קביעת מהירות מינימום עבור connection פתוחים בשרת
• הגבלת משך הזמן שבו משתמש יכול להיות מחובר
• שימוש בפיירוול, Reverse proxy, Load balancing
• לשרתיApache  יש מספר מודולים העשויים לסייע בהקטנת האפקט של הרושעה: mod_limitipconn, mod gos, mod_evasive, mod_security, mod_noloris, mod_antiloris

 

התקפות ידועות של Slow Loris
• בזמן הבחירות לנשיאות באיראן בשנת 2009 הותקפו אתרי ממשל איראני רבים. הדעה הרווחת היא שהתקפה זו הייתה מועדפת על התוקפים על פני התקפת DDoS רגילה בגלל רוחב הפס הנדרש לביצועה שעלול היה לפגוע באתרי האופוזיציה.
• בדצמבר 2010 ניסתה קבוצה של Hactivists (האקרים בעלי מטרה פוליטית או חברתית) להוריד את שרת Wikileaks. חלק גדול מההתקפה בוצע באמצעות גרסאות שונות של Slow Loris.

קוד של Slow Loris ב Perl

הסבר לשימוש  בכלי והפרמטרים הניתנים לשינוי

Usage: pyloris.py [options] www.host.com

Options

:
  -h, --help            show this help message and exit
  -c COUNT, --count=COUNT
                        Number of requests to perform (default = 50)
  -f, --finish          Complete each session rather than leave them
                        unfinished (lessens the effectiveness)
  -g GET, --get=GET     Page to request from the server (default = /)
  -l, --loop            Loop indefinitely (overrides -c)
  -p PORT, --port=PORT  Port to initiate attack on (default = 80)
  -s SIZE, --size=SIZE  Size of data segment to attach in cookie (default = 0)
  -t THROTTLE, --throttle=THROTTLE
                        Throttle each request, bytes per second (default = 1)
  -u USERAGENT, --useragent=USERAGENT
                        The User-Agent string for connections (defaut =
                        pyloris)
  -w WAIT, --wait=WAIT  Seconds between starting sessions (default = 1)

מקורות
http://ha.ckers.org/slowloris/
http://motomastyle.com/pyloris-a-python-implementation-of-slowloris/