תקציר
רושעת ה 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/