Немного про Соль (SALT)

Discussion in 'Статьи' started by Гаврила, 27 Mar 2006.

Thread Status:
Not open for further replies.
  1. Гаврила

    Гаврила Elder - Старейшина

    Joined:
    24 Oct 2005
    Messages:
    273
    Likes Received:
    89
    Reputations:
    17
    Тут я вижу возникает много вопросов о том, что такое Соль и с чем собственно её едят =).
    Хотелось бы немного прояснить ситуацию.
    Что необходимо понять в первую очередь...
    В первую очередь необходимо хотя бы поверхностно понять алгоритм хеширования.
    Будем разбираться на примере форумов IPB => 2.0.*
    В этих форумах алгоритм следующий : md5(md5($salt).md5($pass)).
    Для справки,в форумах IPB <= 2.0.* алгоритм такой : md5.
    Теперь разберём всё на примере.
    Допустим у нас есть пароль: 123.
    При регистрации в форумах IPB <= 2.0.* наш пароль хешируется алгоритмом md5 и преобразуется в такую строку: 202cb962ac59075b964b07152d234b70. Таким образом,поимев этот хеш, стырив Cookies жертвы,мы можем эту строку расшифровать благодаря множеству существующих программ и т.д. Всё просто.(Лишь бы пароль был не сильно мудрёный).
    Теперь переходим к IPB => 2.0.* .
    Что мы видим: md5(md5($salt).md5($pass))
    PHP:
    [/COLOR][/B].
    Даю определение [B][COLOR=DarkOrange]Salt[/COLOR][/B] - она-же[B][COLOR=DarkOrangeСоль[/COLOR][/B].
    [
    B][COLOR=DarkOrange]Salt [/COLOR][/B] - это сгенерированные скриптом данныекоторые усложняют подбор пароля после хеширования.А как она усложняет мы сейчас разберёмся.
    В IPB соль состоит из пяти случайно сгенерированных символов.
    Пример: [COLOR=DarkOrange]kHa$+[/COLORили [COLOR=DarkOrange]@pBuc[/COLOR]
    Теперь по порядку:
    Допустим мы регистрируемся в форуме [BIPB => 2.0.* [/Bвсё с тем-же паролем:[B] [COLOR=Red]123[/COLOR][/B]. Что происходит...
    1)Скрипт генерирует нам случайным образом соль(у всех пользователей она будет разнаяи заносит её в базу данных.
    Допустим нам сгенерировал вот такую : [B][COLOR=DarkOrangeXzNaX[/COLOR][/B].
    2)Скрипт берёт нашу соль и хеширует её методом [B]md5[/B].
    Получилось вот так: [B][COLOR=DarkOrange]b9b91789bc2f1b3735e67f77d46053fa[/COLOR][/B].Это у нас и есть[B][COLOR=DarkOrangemd5($salt)[/COLOR][/B].
    3)Скрипт берёт наш пароль (у нас он[B][COLOR=Red123[/COLOR][/B]) и тоже  хеширует его методом [B]md5[/B].
    Получилось вот так: [B][COLOR=Red]202cb962ac59075b964b07152d234b70[/COLOR][/B].Это у нас и есть[B] [COLOR=Red]md5($pass)[/COLOR][/B].
    4)Скрипт берёт нашу хешированную соль и наш хешированный пароль,и снова хеширует их  методом [B]md5[/B].
    Если подставить в нашу формулу:[Bmd5([COLOR=DarkOrange]md5($salt)[/COLOR].[COLOR=Red]md5($pass[/COLOR]))[PHP][/Bполученные два хеша,увидим следующее
    [
    B]md5([COLOR=DarkOrange]b9b91789bc2f1b3735e67f77d46053fa[/COLOR].[COLOR=Red]202cb962ac59075b964b07152d234b70[/COLOR])[/BГде точка в PHP означает продолжение строки.А значит скрипт берёт эти два хеша без точки[B]([COLOR=DarkOrange]b9b91789bc2f1b3735e67f77d46053fa[/COLOR][COLOR=Red]202cb962ac59075b964b07152d234b70[/COLOR])[/Bи хеширует их методом[Bmd5[/B].
    Получаем хеш :[B] [COLOR=YellowGreen]e509e1f6df1450279ec37dd253bd5b1e[/COLOR][/B].
    Вот это и есть[B] [COLOR=YellowGreen]солёный хеш[/COLOR][/B].
    Авторизация пользователя происходит следующим образом.
    Наш пользователь вводит свой ID(ники пароль.
    Скрипт подставит соль соответствующую введенному ID,и пароль,который вы ввели.
    В нашем примере получится так :  md5(md5([COLOR=DarkOrange]XzNaX[/COLOR]).md5([COLOR=Red]123[/COLOR]))[PHP]
    Потом он обработает эти данные и сверит их с нашим[B] [COLOR=YellowGreen]солёным[/COLOR] [/Bхешем.
    Если данные совпадают,то вы авторизированы.Если нет,то вам напишут...
    Теперь о том чтогде хранится в [B]IPB => 2.0.*[/B]
    В разных форумах по разному.Но в дефолтовых версиях в базе данных можно найти:
    Директория forummembersтут хранится[B"legacy_password"[/B]. Это не солёный,простой md5 хеш.
    Директория forummembers_converge:тут хранится[B"converge_pass_hash"[/B] .Это [B][COLOR=YellowGreen]солёный[/COLOR][/B],итоговый md5 хеш,с которым скрипт сверяется при авторизации.И в этой-же дирректории хранится [B]"converge_pass_salt"[/B] .Это та самая соль,которую все желают поиметь =).
    Теперь делаем выводы.
    При XSS атаке мы получаем на сниффер [B][COLOR=YellowGreen]солёный хеш[/COLOR] [/B] .Что он нам даёт?Да вообщем-то ничего,кроме того,что мы можем подменив Cookies зайти на форум от имени жертвы.Получить пароль из этого хеша не представляется возможным,потому как мы не знаем Соль.
    Вы спросите,а как получить соль?
    Только не через Cookies жертвыВ Cookies она не хранится.
    Соль можно добыть сплойтами,SQL иньекциями и т.д.(Смотрим видео Coyl'a: [B]http://video.antichat.ru/file25.html [/B] ,читаем форум).Вообщем для того что-бы её получить нужно попасть в базу данных форума.Там же в базе данных можно подсмотреть [B]"legacy_password"[/B] ,тот самый не солёный хеш,который можно расшифровать без Соли.
    Ну вот,пока всё...
     
    #1 Гаврила, 27 Mar 2006
    Last edited: 27 Mar 2006
  2. tclover

    tclover nobody

    Joined:
    13 Dec 2005
    Messages:
    741
    Likes Received:
    682
    Reputations:
    287
    Мой Каин не верит в то что это мд5
     
    #2 tclover, 27 Mar 2006
    Last edited: 27 Mar 2006
    1 person likes this.
  3. Гаврила

    Гаврила Elder - Старейшина

    Joined:
    24 Oct 2005
    Messages:
    273
    Likes Received:
    89
    Reputations:
    17
    Всё тестировал через PasswordsPro :)
     
    1 person likes this.
  4. drmist

    drmist Member

    Joined:
    8 Oct 2005
    Messages:
    307
    Likes Received:
    94
    Reputations:
    80
    Trampled_clover
    вгешни похож (32 символа 0-9a-f), может там где "c" русскся или типа того.
    или каину нужно чтобы все было в верхнем регистре?
    Гаврила
    +1
    Добавлю на эту статью линк на WH, а то в "Критпографии" вечно один и тот же вопрос задают. Угадайте какой ))
     
    1 person likes this.
  5. tclover

    tclover nobody

    Joined:
    13 Dec 2005
    Messages:
    741
    Likes Received:
    682
    Reputations:
    287
    2 drmist
    Ему без разницы (Каину). Главное чтобы мд5 был. А это не мд5 (с) Каин и Авель :)
     
  6. blaga

    blaga Elder - Старейшина

    Joined:
    23 Mar 2006
    Messages:
    884
    Likes Received:
    273
    Reputations:
    106
    2Гаврила статья - супер я наконец то дотумкал что такое соль. тебе +
     
  7. Knight_of_Darkness

    Knight_of_Darkness Elder - Старейшина

    Joined:
    3 Feb 2007
    Messages:
    69
    Likes Received:
    68
    Reputations:
    24
    Автор не пожалел собственного времени на улучшение внешнего вида статьи. Хотя бы даже за это плюс. Не говоря, что всё обьяснено наилучшим образом и по-рабоче-крестьянски. А настоящий md5 это или нет имхо нет нужды выяснять, ИМХО;).
     
    1 person likes this.
  8. bulbazaur

    bulbazaur Banned

    Joined:
    10 Sep 2006
    Messages:
    125
    Likes Received:
    40
    Reputations:
    10
    спасиб, тож только что разобрался :) эхх, а я то думал почему ни один расшифровщик не может мой мд5 крякнуть :)
     
    1 person likes this.
  9. Basurman

    Basurman Elder - Старейшина

    Joined:
    10 Nov 2006
    Messages:
    363
    Likes Received:
    271
    Reputations:
    29
    IPB <= 2.0.* -md5
    IPB => 2.0.* -md5(md5($salt).md5($pass))

    Исходя из чисто математических соображений, получается, что
    md5 = md5(md5($salt).md5($pass))
     
    1 person likes this.
Thread Status:
Not open for further replies.