Взлом протокола Радмина. Помогаем автору

Discussion in 'Безопасность и Анонимность' started by GluckX, 2 Mar 2006.

  1. GluckX

    GluckX Member

    Joined:
    2 Mar 2006
    Messages:
    13
    Likes Received:
    8
    Reputations:
    4
    В начале немного о радмине (для исследования применялся метод тыка :))...

    - Сервер хранит хэш пароля в реестре:
    HKEY_LOCAL_MACHINE\SYSTEM\RAdmin\v2.0\Server\Parameters
    "Parameter"=hex:02,ba,5e,18,7e,25,89,be,6f,80,da,00,46,aa,7e,3c // Пароль 12345678 ;)
    Пароль шифруется алгоритмом MD5, причём сначала пароль дополняется нулевыми символами до 100 символов, тока потом шифруется
    Проверил... работает!! :)

    - В справке по радмину говорится:
    "Radmin работает в режиме шифрования...все данные передаваемые между компьютерами...шифруются случайно генерируемым ключем. Используется 128 битный Twofish алгоритм..."
    Думаю мона поверить разработчикам... Или нет!?

    Запускаем сниффер, допустим Ириску...
    Содержимое пакетов (данные в hex) при авторизации по паролю:

    1) Клиент: 01 00 00 00 01 00 00 00 1B 1B - 10 байт
    2) Сервер: 01 00 00 00 21 A8 99 B4 A7 1B 2A 5F 62 5E 69 EA 5E 82 8C 1D 41 63 1E F7 B7 10 B7 9D 7D D2 0F 92 97 E8 C1 59 82 2E ED B1 56 51 - 42 байта
    3) Клиент: 01 00 00 00 21 89 2D 73 BC 09 5D 00 4E F9 3A CF 71 13 EA B4 D0 B0 F0 A8 F8 F7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 42 байта
    4) Сервер: 01 00 00 00 01 00 00 00 0A 0A - 10 байт

    Предположение:
    1) Похоже на обычную команду с кодом $1B1B, предложение на авторизацию
    2) скорее всего ключ для шифрования пакетов
    3) Введённый пароль!!! А точнее его хэш (по логике MD5 хэш, как и в реестре у сервера), т.к. размер ответа ВСЕГДА 26 байт (не считая 16 нулей).
    4) Результат авторизации, $0A0A - всё в порядке, $0B0B - неудача :(

    Написал на делфи переборщик для "ключа" (2) и "зашифрованового пароля" (3)... использовал компонент TDCP_twofish.
    При расшифровки (3) ключом (2) ожидалось найти MD5 хэш пароля 12345678: 02 ba 5e 18 7e 25 89 be 6f 80 da 00 46 aa 7e 3c
    Ничё не получилось :(... Почему?

    - Может передаётся по сети не MD5 хэш пароля, а какой-нить другой, но точно хэш :)
    - Может трафик шифруется не 128 битным Twofish

    Если ты знаешь больше или я где-то ошибся, напиши плииииииииииииз!!!!
     
  2. Elekt

    Elekt Banned

    Joined:
    5 Dec 2005
    Messages:
    944
    Likes Received:
    427
    Reputations:
    508
    Так, интересно...
    Заметь, 01 00 00 00 подозрительно повторяеться. Возможно сам ключ лежит в байтах ПОСЛЕ повтора, или ещё дальше.
     
  3. =Be$=

    =Be$= Elder - Старейшина

    Joined:
    21 Jan 2006
    Messages:
    200
    Likes Received:
    123
    Reputations:
    0
    Вполне возможно.
     
  4. GluckX

    GluckX Member

    Joined:
    2 Mar 2006
    Messages:
    13
    Likes Received:
    8
    Reputations:
    4
    Регился на 8 форумах, там народ ваще вялый, похоже antichat рулит :)
    Так что давайте мозговать!!!
    Попробуйте тоже поснифать трафик, разобратся в кодировках.... Кста пробовал запускать клиента радмина из отладчика (Olly debuger), ставил брики на вызовы функций, но ОЛЯ что-то глючила :(.

    Предпологаю, что авторизация в радмине проходит так: Клиент считывает символьный пароль, получает из него хэш (например MD5 длиной 16 байт), затем получает от сервера случайный ключ, шифрует хэш пароля (например TwoFish-ем), и отсылает серверу...
    Сервер получает шифр, зная ключ, восстанавливает хэш пароля и сравнивает его с хэшем из реестра. Получатеся, что настоящий пароль в чистом виде никогда нигде не храниться, разумно так-то :)

    Если разберёмся с шифрование сетевого трафика, я смогу написать прогу, чтобы мона было авторизоватся по хэшу пароля....
    ЖДу ваших наработок и предложений!! ;)
     
  5. молла

    молла New Member

    Joined:
    2 Mar 2006
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    хай, а может не хеш отправляетса, а сам пароль ???
    если на CPAN есть модуль для Twofish то вечерком проверю
     
  6. GluckX

    GluckX Member

    Joined:
    2 Mar 2006
    Messages:
    13
    Likes Received:
    8
    Reputations:
    4
    Именно хэш!!! потому что длина пакета постоянна.
    ОТкрой в радмине "обмен файлами"...поснифать трафик именно этот трафик....при расшифровке пакетов стремись получить имена папок, в которые заходил радмином!
     
    tclover likes this.
  7. молла

    молла New Member

    Joined:
    2 Mar 2006
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Глюкс Не знаеш где спецыфикацыя ТуФиш лежыт а то почитать охота ????
     
  8. GluckX

    GluckX Member

    Joined:
    2 Mar 2006
    Messages:
    13
    Likes Received:
    8
    Reputations:
    4
    Незнай....найдёшь кинь линку.... я скачал компоненты для делфи DCPCrypt2, там есть реализация TwoFish-а!

    В пакетах есть маленькая закономерность, не угледел сразу :(
    вот две пары пакетов с ключом и хэшем пароля...я разбил их на логические блоки:

    Сервер: 01 00 00 00 | 21 | 2F 19 31 2F | 1B | 09 86 BE C7 5C 68 00 E9 16 9B 0B DD 18 87 BB 81 85 94 E4 EA C5 A8 D0 DF DD 04 1F C0 71 C6 D4 7D
    Клиент: 01 00 00 00 | 21 | FA E2 1E 80 | 09 | C3 B8 19 A2 BA D5 B1 FE CF 45 A2 A1 D0 0D 8D 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    Сервер: 01 00 00 00 | 21 | EE E1 B0 2D | 1B | 07 F3 66 3D E1 53 24 45 BD 9E 78 61 FC 2B 88 A2 EC EE A3 00 30 76 A2 3D BD D6 65 57 33 94 B6 F9
    Клиент: 01 00 00 00 | 21 | 09 14 45 1F | 09 | 0E 68 FE 09 FF 6B B0 BB 9E 3F DB 4C 99 00 7F 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

    И всё таки шифрование смахивает на связку TwoFish + MD5... в пакете от сервера есть 32 случайных байта (если захешировать ключ, то получим новый ключ размером 16 байт = 128 бит), а у клиента 16 байт (нули не считаем :)) - размер хэша MD5, MD4 и т.д.
    Не могу понять зачем в каждом пакете есть 4-байтовое случайное число (2F 19 31 2F, FA E2 1E 80.... )????????????????????????????
    GluckX задумался..........
     
    #8 GluckX, 7 Mar 2006
    Last edited: 7 Mar 2006
  9. GluckX

    GluckX Member

    Joined:
    2 Mar 2006
    Messages:
    13
    Likes Received:
    8
    Reputations:
    4
    Прошла ещё одна бессонная ночь....

    До меня дошло зачем эти числа :), немного математики...
    Рассмотрим два ответа клиента:
    01 00 00 00 21 | Fa E2 1e 80 | 09 | C3 B8 19 A2 Ba D5 B1 Fe Cf 45 A2 A1 D0 0d 8d 36 <нули>
    01 00 00 00 21 | 09 14 45 1f | 09 | 0e 68 Fe 09 Ff 6b B0 Bb 9e 3f Db 4c 99 00 7f 06 <нули>

    Предположим, что первые 10 байт - это заголовок, а остальные байты - это данные... и так, если просуммировать все 4-хбайтовые слова данных, учесть переполнение, поменять местами 1 и 3 байты слева местами, получим:
    1) C3b819a2 + Bad5b1fe + Cf45a2a1 + D00d8d36 = 31de0fb77 -> 3 | 1d E0 Fb 77 -> 1d E0 Fb 7A -> Fb E0 1d 7A = Fa E2 1e 80
    2) 0e68fe09 + Ff6bb0bb + 9e3fdb4c + 99007f06 = 245150916 -> 2 | 45 15 09 16 -> 45 15 09 18 -> 09 15 45 18 = 09 14 45 1f

    Числа Fbe01d7A и Fae21e80, 09154518 и 0914451f похожи ;)... Получается, что эти числа контрольные суммы, точный алгоритм вычисления я не искал за ненадобностью, но он нам нужен будет, когда начнём менять данные в пакете ;)

    Есть ключ 09 86 Be C7 5c 68 00 E9 16 9b 0b Dd 18 87 Bb 81 85 94 E4 Ea C5 A8 D0 Df Dd 04 1f C0 71 C6 D4 7d и зашифрованные данные C3 B8 19 A2 Ba D5 B1 Fe Cf 45 A2 A1 D0 0d 8d 36.... перебераем варианты алгоритмов шифрования %)
     
    #9 GluckX, 7 Mar 2006
    Last edited: 9 Mar 2006
  10. Elekt

    Elekt Banned

    Joined:
    5 Dec 2005
    Messages:
    944
    Likes Received:
    427
    Reputations:
    508
    GluckX, я понимаю, что разобрав протокол по косточкам, можно сделать что угодно.

    Однако, возможно это не удасться реализовать. Потому, может быть будет достаточно самого снифинга начала авторизации, чтобы затем просто аналогично авторизоваться, используя отнифанный траф.

    Таким образом, задача сводиться к написанию программы, которая снифает траф(желательно АРП-пойзонингом), запоминает и дублирует его. Возможно, потребуеться спарить её со стандартным клиентом радмина(лучше 3-й версии) для более удобного юзания.

    Мы лишаемся возможности рашифровки трафа, но сохраняем способность заюзать отснифанный аккаунт, пуст он и в хеше. Там ведь привязка ключа по пасу, а не по айпи?

    Как думаешь? Это проще и вполне достижимо(но я не потяну, слабо)
     
  11. GluckX

    GluckX Member

    Joined:
    2 Mar 2006
    Messages:
    13
    Likes Received:
    8
    Reputations:
    4
    Может быть, но надежда умирает последней !)

    Если бы :(... не всё так просто: При установлении соединения сервер посылает СЛУЧАЙНЫЙ ключ для шифрования всех данных передаваемых по сети, получается для каждого нового соединения трафик буит УНИКАЛЬНЫЙ :(.... не факт, что ключ остаётся постоянным с течение времени...

    Что касается спуфинга, я написал реализацию MITM-атаки на WinPcap, чужой трафик снифать не проблема... Подменять трафик планирую на уровне сокетов, ставя хуки на вызовы функций (да поможет мне Рихтер :) )...

    Трафик... Трафик... Трафик... как же он зашифрован?!?! Не теряем надежду, нас много, а алгоритм ОДИН!!!!!!!!!!!
     
  12. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Автор я бы тебе помог если бы ты не использовал делфи...

    Может я что непонял, ты про какой спуфинг? Уж не айпи ли ты решил подставлять спуфеные?
     
  13. GluckX

    GluckX Member

    Joined:
    2 Mar 2006
    Messages:
    13
    Likes Received:
    8
    Reputations:
    4
    KEZ можешь писать и на Си.... разберусь :)

    Принцип MITM (Man In The Middle - человек по середине) : Посылаем жертвам с айпи и маками (IP1, MAC1) и (IP2,MAC2) ложные арп-ответы, первой - (IP2,MAC), а второй - (IP1,MAC), где MAC - твой мак... Пакеты от жерт буду приходить на твой комп, меняешь маки в эвернет заголовке... и всё (минус разные тонкости :))

    Но речь не об этом!!!! Пока модераторы бы не переименовали тему, до меня бы не дошло, что у радмина свой ПРОТОКОЛ, похожий на стандартые IP,UDP,TCP и т.д.

    Вот как на данный момент я разбиваю данные пакета:
    01 | 00 00 | 00 21 | FA E2 1E 80 | 09 | C3 B8 19 A2 BA D5 B1 FE CF 45 A2 A1 D0 0D 8D 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
    01 - хз...всегда 01
    00 00 - аналогично
    00 21 - $0021 = 33 размер данных в RAdmin-заголовке
    FA E2 1E 80 - контрольная сумма
    09 - код команды или ответа (получается, что входит в блок данных и учитывается при подсчёте контрольной суммы)
    C3 B8 19 A2 BA D5 B1 FE CF 45 A2 A1 D0 0D 8D 36 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - зашифрованная информация

    Забудим навремя о шифровании...займёмся математикой!!!!! Это полегче и интереснее.... Нужно найти алгоритм вычисления контрольной суммы, вот пару пакетов для тех кому лень снифать трафик :)

    1) 01 | 00 00 | 00 01 | 00 00 00 1B | 1B | - 10 байт
    2) 01 | 00 00 | 00 05 | 00 00 00 1E | 1A | 00 00 00 04 - 14 байт
    3) 01 | 00 00 | 00 25 | 08 00 01 10 | 08 | 01 00 08 08 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 46 байт
    4) 01 | 00 00 | 00 21 | 89 2D 73 BC | 09 | 5D 00 4E F9 3A CF 71 13 EA B4 D0 B0 F0 A8 F8 F7 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 42 байта
    5) 01 | 00 00 | 00 21 | B8 92 71 7E | 09 | D8 DF 7B D1 C6 B7 42 0F 00 F5 F3 16 D2 05 06 7F 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 - 42 байта

    Включаем мозги, интуицую и вперёд.. жду результатов :)
     
  14. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Ты знаешь, я в курсе что такое Mitm, я непойму - ты пытаешься сделать радмин клиент, или проснифать передачу данных? Если второе - зачем?
     
  15. GluckX

    GluckX Member

    Joined:
    2 Mar 2006
    Messages:
    13
    Likes Received:
    8
    Reputations:
    4
    Ох уж эти праздники... голова гудит...кста поздравляю всех девушек с прошедшим праздником %)

    Я не собираюсь писать радмин-клиент, я хочу разработать механизм взлома радмина в локальной сети, меня не устраивают такие варианты:
    - Сломав удалённую тачку, отмыть пароль кейлогером... и другие развраты с кейлогером :)
    - Сломав удалённую тачку, менять хэш пароля в реестре, чтобы логинется клиентом радмина по своему паролю...

    Ситуация такая: Есть две зафайрволенные тачки, на одной из них стоит сервер радмина, а с другой переодически запускается клиент радмина (допустим админ решил положить денжку на инет ;)) .... мы не обращаем на другие уязвимые программы типа фтп и т.д... Нас интересует только радмин!!!!!!!!!!!!

    Метод взлома:
    - Mitm атака -> cнифаем чужой трафик в момент соединения клинта с сервером радмина....
    - Расшифровываем трафик, узнаём хэш пароля
    - Кто хочет может дальше брутить, но мы пишем программу, которая будет поменять данные отсылаемые клинтом радмина
    - Запускаем клиент радмина вводим левый пароль типа 123.... при передачи данных наша прогрммка подменит хэш пароля 123 на истинный хэш :)
    - Лазаем по удалённой тачке.... глумимся одним словом.
    P.S. Было упушено много тонкостей :)

    Ну и ещё одна причина - самоудовлетворение, радмин же ещё не сломали :)

    Приступаем к делу... помни "Возможно всё, что возможно вообразить!"
     
  16. KEZ

    KEZ Ненасытный школьник

    Joined:
    18 May 2005
    Messages:
    1,604
    Likes Received:
    754
    Reputations:
    397
    Все понял, ты просто хочешь сниффер. Я бы, скорее всего попробовал подизассемблировать сам клиент... Незнаю зачем тебе это нужно, если бы я работал сисадмином я бы не допустил возможности снифния, поставив бы роутеры и новые свичи и отгорадив от возможности рассылки пакетов куда ненужно (за счет денег главы конечно)
    и ещё утилиту с antinat.com ))
     
    #16 KEZ, 10 Mar 2006
    Last edited: 10 Mar 2006
    Hitman_2 likes this.
  17. GluckX

    GluckX Member

    Joined:
    2 Mar 2006
    Messages:
    13
    Likes Received:
    8
    Reputations:
    4
    Да-да...правильно мыслишь..следующий шаг - это дизассемблеры и отладчики (всё времени нет поставить SoftIce, а в олике у мня не получается работать), но сейчас наша задача научится вычислять контрольную сумму!!!!!!!!!!!!!
     
  18. GluckX

    GluckX Member

    Joined:
    2 Mar 2006
    Messages:
    13
    Likes Received:
    8
    Reputations:
    4
    Запылилась темка, почему не работаем?! :)

    Опять к шифрованию.... мы имели 32 байтный "ключ", и 16 байт зашифрованного хэша пароля...В справке говорится, что используется 128 битный TwoFish, т.е. размер ключа 16 байт, а у нас есть 32, какие байты брать под ключ!!!!????? Причём эти 32 байта случайные :(, вот бы сервер послал бы что нить похожее на 00 00 00 00.... поможем ему в этом ;)
    Не вдаваясь в технические подробности, при передачи данных подменяем ключ сервера на нули и подсовываем клиенту. Вот что получилось:
    S: 01|0000|0021|0000001B|1B|0000000000000000000000000000000000000000000000000000000000000000
    K: 01|0000|0021|95DA02C7|09|DBD7A441D5825F870CF80E884587826E00000000000000000000000000000000
    И так количество итераций в переборе резко понижается, так как мы имеем всего 2 варианта ключа: буффер из нулей размером 16 байт иили 32 байта... Мы не знаем в каком виде искать расшифрованный хэш пароля (врят ли это MD5 хэш :(), поэтому привожу ещё пару пакетов с "единичным" ключом:
    S: 01|0000|0021|08080823|1B|0101010101010101010101010101010101010101010101010101010101010101
    K: 01|0000|0021|0717DE9F|09|E618767F641ED2BDBC583415D7878A4500000000000000000000000000000000
    Ну что ж, можно начинать писать брутеры, меняя алгоритмы шифрования, результат считается успешным, если совпадут расшифрованные данные в 1-м и 2-м случаях (алгоритм шифрования же один!!!!)
    Жду хоть какой-то активности :)

    P.S. DBD7A441D5825F870CF80E884587826E и E618767F641ED2BDBC58 3415D7878A45 - это зашифрованные хэши пароля 12345678 ;)
     
    RedBull@12 and c411k like this.
  19. Exodus

    Exodus New Member

    Joined:
    5 Jan 2006
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    13 09 5a 01 57 5c 69 5b d1 18 a7 ed 23 1d b0 4e

    Вот в реестре parameters пароль в таком виде, как-то можно его расшифровать и получить нормальный пароль?
     
  20. Exodus

    Exodus New Member

    Joined:
    5 Jan 2006
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Всё, сам расшифровал.