Saturday, December 08, 2007

הקוד , לבקשתכם - XSS Translator

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

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

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

הנה הקוד הסופי ... .NET כמו שאתם אוהבים .

 

For my english reading audience - this is my code for converting text into decimal codes for applying XSS attacks , in .NET for your convinence. enjoy ...

 

Public Class XSS_Translator

    Public Function hex2dec(ByVal hextext As String) As String
        hex2dec = Chr(Convert.ToInt32(Mid(hextext, 2, 2), 16))
    End Function

    Public Function myConvert(ByVal INPUT As String, ByVal Act As Integer) As String
        Dim myresult As String
        Dim i As Integer

        For i = 1 To Len(INPUT)
            If Act = 1 Then
                myresult = myresult & "%" & Hex(Asc(Mid(INPUT, i, 1)))
            Else
                If (Mid(INPUT, i, 1) = "%") And (i <= (Len(INPUT) - 2)) Then
                    myresult = myresult & hex2dec(Mid(INPUT, i, 3))
                    i = i + 2
                Else
                    myresult = myresult & Mid(INPUT, i, 1)
                End If
            End If
        Next
        myConvert = myresult
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If RadioButton1.Checked = True Then
            outputBox.Text = myConvert(inputBox.Text, 1)
        Else
            outputBox.Text = myConvert(inputBox.Text, 2)
        End If
    End Sub

End Class

Labels: , , , , , ,

Tuesday, July 17, 2007

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

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

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

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

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

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

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

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

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