Просмотр полной версии : Взлом протокола Радмина. Помогаем автору
В начале немного о радмине (для исследования применялся метод тыка :))...
- Сервер хранит хэш пароля в реестре:
HKEY_LOCAL_MACHINE\SYSTEM\RAdmin\v2.0\Server\Param eters
"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
Если ты знаешь больше или я где-то ошибся, напиши плииииииииииииз!!!!
Так, интересно...
Заметь, 01 00 00 00 подозрительно повторяеться. Возможно сам ключ лежит в байтах ПОСЛЕ повтора, или ещё дальше.
- Может трафик шифруется не 128 битным Twofish
Вполне возможно.
Регился на 8 форумах, там народ ваще вялый, похоже antichat рулит :)
Так что давайте мозговать!!!
Попробуйте тоже поснифать трафик, разобратся в кодировках.... Кста пробовал запускать клиента радмина из отладчика (Olly debuger), ставил брики на вызовы функций, но ОЛЯ что-то глючила :(.
Предпологаю, что авторизация в радмине проходит так: Клиент считывает символьный пароль, получает из него хэш (например MD5 длиной 16 байт), затем получает от сервера случайный ключ, шифрует хэш пароля (например TwoFish-ем), и отсылает серверу...
Сервер получает шифр, зная ключ, восстанавливает хэш пароля и сравнивает его с хэшем из реестра. Получатеся, что настоящий пароль в чистом виде никогда нигде не храниться, разумно так-то :)
Если разберёмся с шифрование сетевого трафика, я смогу написать прогу, чтобы мона было авторизоватся по хэшу пароля....
ЖДу ваших наработок и предложений!! ;)
хай, а может не хеш отправляетса, а сам пароль ???
если на CPAN есть модуль для Twofish то вечерком проверю
Именно хэш!!! потому что длина пакета постоянна.
ОТкрой в радмине "обмен файлами"...поснифать трафик именно этот трафик....при расшифровке пакетов стремись получить имена папок, в которые заходил радмином!
Глюкс Не знаеш где спецыфикацыя ТуФиш лежыт а то почитать охота ????
Незнай....найдёшь кинь линку.... я скачал компоненты для делфи 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 задумался..........
Прошла ещё одна бессонная ночь....
До меня дошло зачем эти числа :), немного математики...
Рассмотрим два ответа клиента:
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.... перебераем варианты алгоритмов шифрования %)
GluckX, я понимаю, что разобрав протокол по косточкам, можно сделать что угодно.
Однако, возможно это не удасться реализовать. Потому, может быть будет достаточно самого снифинга начала авторизации, чтобы затем просто аналогично авторизоваться, используя отнифанный траф.
Таким образом, задача сводиться к написанию программы, которая снифает траф(желательно АРП-пойзонингом), запоминает и дублирует его. Возможно, потребуеться спарить её со стандартным клиентом радмина(лучше 3-й версии) для более удобного юзания.
Мы лишаемся возможности рашифровки трафа, но сохраняем способность заюзать отснифанный аккаунт, пуст он и в хеше. Там ведь привязка ключа по пасу, а не по айпи?
Как думаешь? Это проще и вполне достижимо(но я не потяну, слабо)
Однако, возможно это не удасться реализовать.
Может быть, но надежда умирает последней !)
Потому, может быть будет достаточно самого снифинга начала авторизации, чтобы затем просто аналогично авторизоваться, используя отнифанный траф..
Если бы :(... не всё так просто: При установлении соединения сервер посылает СЛУЧАЙНЫЙ ключ для шифрования всех данных передаваемых по сети, получается для каждого нового соединения трафик буит УНИКАЛЬНЫЙ :(.... не факт, что ключ остаётся постоянным с течение времени...
Что касается спуфинга, я написал реализацию MITM-атаки на WinPcap, чужой трафик снифать не проблема... Подменять трафик планирую на уровне сокетов, ставя хуки на вызовы функций (да поможет мне Рихтер :) )...
Трафик... Трафик... Трафик... как же он зашифрован?!?! Не теряем надежду, нас много, а алгоритм ОДИН!!!!!!!!!!!
Автор я бы тебе помог если бы ты не использовал делфи...
Что касается спуфинга, я написал реализацию MITM-атаки на WinPcap, чужой трафик снифать не проблема...
Может я что непонял, ты про какой спуфинг? Уж не айпи ли ты решил подставлять спуфеные?
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 байта
Включаем мозги, интуицую и вперёд.. жду результатов :)
Ты знаешь, я в курсе что такое Mitm, я непойму - ты пытаешься сделать радмин клиент, или проснифать передачу данных? Если второе - зачем?
Ох уж эти праздники... голова гудит...кста поздравляю всех девушек с прошедшим праздником %)
Ты знаешь, я в курсе что такое Mitm, я непойму - ты пытаешься сделать радмин клиент, или проснифать передачу данных? Если второе - зачем?
Я не собираюсь писать радмин-клиент, я хочу разработать механизм взлома радмина в локальной сети, меня не устраивают такие варианты:
- Сломав удалённую тачку, отмыть пароль кейлогером... и другие развраты с кейлогером :)
- Сломав удалённую тачку, менять хэш пароля в реестре, чтобы логинется клиентом радмина по своему паролю...
Ситуация такая: Есть две зафайрволенные тачки, на одной из них стоит сервер радмина, а с другой переодически запускается клиент радмина (допустим админ решил положить денжку на инет ;)) .... мы не обращаем на другие уязвимые программы типа фтп и т.д... Нас интересует только радмин!!!!!!!!!!!!
Метод взлома:
- Mitm атака -> cнифаем чужой трафик в момент соединения клинта с сервером радмина....
- Расшифровываем трафик, узнаём хэш пароля
- Кто хочет может дальше брутить, но мы пишем программу, которая будет поменять данные отсылаемые клинтом радмина
- Запускаем клиент радмина вводим левый пароль типа 123.... при передачи данных наша прогрммка подменит хэш пароля 123 на истинный хэш :)
- Лазаем по удалённой тачке.... глумимся одним словом.
P.S. Было упушено много тонкостей :)
Ну и ещё одна причина - самоудовлетворение, радмин же ещё не сломали :)
Приступаем к делу... помни "Возможно всё, что возможно вообразить!"
Все понял, ты просто хочешь сниффер. Я бы, скорее всего попробовал подизассемблировать сам клиент... Незнаю зачем тебе это нужно, если бы я работал сисадмином я бы не допустил возможности снифния, поставив бы роутеры и новые свичи и отгорадив от возможности рассылки пакетов куда ненужно (за счет денег главы конечно)
и ещё утилиту с antinat.com ))
Я бы, скорее всего попробовал подизассемблировать сам клиент...
Да-да...правильно мыслишь..следующий шаг - это дизассемблеры и отладчики (всё времени нет поставить SoftIce, а в олике у мня не получается работать), но сейчас наша задача научится вычислять контрольную сумму!!!!!!!!!!!!!
Запылилась темка, почему не работаем?! :)
Опять к шифрованию.... мы имели 32 байтный "ключ", и 16 байт зашифрованного хэша пароля...В справке говорится, что используется 128 битный TwoFish, т.е. размер ключа 16 байт, а у нас есть 32, какие байты брать под ключ!!!!????? Причём эти 32 байта случайные :(, вот бы сервер послал бы что нить похожее на 00 00 00 00.... поможем ему в этом ;)
Не вдаваясь в технические подробности, при передачи данных подменяем ключ сервера на нули и подсовываем клиенту. Вот что получилось:
S: 01|0000|0021|0000001B|1B|0000000000000000000000000 000000000000000000000000000000000000000
K: 01|0000|0021|95DA02C7|09|DBD7A441D5825F870CF80E884 587826E00000000000000000000000000000000
И так количество итераций в переборе резко понижается, так как мы имеем всего 2 варианта ключа: буффер из нулей размером 16 байт иили 32 байта... Мы не знаем в каком виде искать расшифрованный хэш пароля (врят ли это MD5 хэш :(), поэтому привожу ещё пару пакетов с "единичным" ключом:
S: 01|0000|0021|08080823|1B|0101010101010101010101010 101010101010101010101010101010101010101
K: 01|0000|0021|0717DE9F|09|E618767F641ED2BDBC583415D 7878A4500000000000000000000000000000000
Ну что ж, можно начинать писать брутеры, меняя алгоритмы шифрования, результат считается успешным, если совпадут расшифрованные данные в 1-м и 2-м случаях (алгоритм шифрования же один!!!!)
Жду хоть какой-то активности :)
P.S. DBD7A441D5825F870CF80E884587826E и E618767F641ED2BDBC58 3415D7878A45 - это зашифрованные хэши пароля 12345678 ;)
13 09 5a 01 57 5c 69 5b d1 18 a7 ed 23 1d b0 4e
Вот в реестре parameters пароль в таком виде, как-то можно его расшифровать и получить нормальный пароль?
13 09 5a 01 57 5c 69 5b d1 18 a7 ed 23 1d b0 4e
Вот в реестре parameters пароль в таком виде, как-то можно его расшифровать и получить нормальный пароль?
Всё, сам расшифровал.
blood150
31.03.2009, 14:44
Надеюсь ктонибуть отзовётся: проблема такая, зделал
REGEDIT4
[HKEY_LOCAL_MACHINE\System\RAdmin]
[HKEY_LOCAL_MACHINE\System\RAdmin\v2.0]
[HKEY_LOCAL_MACHINE\System\RAdmin\v2.0\Server]
[HKEY_LOCAL_MACHINE\System\RAdmin\v2.0\Server\Param eters]
"NTAuthEnabled"=hex:00,00,00,00
"Parameter"=hex:02,ba,5e,18,7e,25,89,be,6f,80,da,00,46,aa,7e, 3c
"Port"=hex:23,13,00,00
"Timeout"=hex:0a,00,00,00
"EnableLogFile"=hex:00,00,00,00
"LogFilePath"=""
"FilterIp"=hex:00,00,00,00
"DisableTrayIcon"=hex:01,00,00,00
"AutoAllow"=hex:00,00,00,00
"AskUser"=hex:00,00,00,00
"EnableEventLog"=hex:00,00,00,00
[HKEY_LOCAL_MACHINE\System\RAdmin\v2.0\Server\iplis t]
всё получилось пороль поменялся на 12345678
а на следующий день просит ИМЯ ПОЛЬЗОВАТЕЛЯ
и что тут вводить?
kasper666
31.03.2009, 15:29
Значит там стоит 3.2 версия)
А можно ли запустить второй сервер радмина скопировав все файлы из Program Files\RAdmin например в Program Files\RAdmin\RAdmin ??? Если такое возможно, то можно же поставить свой второй пароль и будет просто два Сервера... Первый с паролем Админа втоой с нашим паролем...
А можно ли запустить второй сервер радмина скопировав все файлы из Program Files\RAdmin например в Program Files\RAdmin\RAdmin ??? Если такое возможно, то можно же поставить свой второй пароль и будет просто два Сервера... Первый с паролем Админа втоой с нашим паролем...
нельзя. вообще-то сам сервак стартует из system32, а то что лежит в program files можно вообще удалить. пароль хранится в реестре и поэтому запустить 2 копии с разными паролями не получится
нельзя. вообще-то сам сервак стартует из system32, а то что лежит в program files можно вообще удалить. пароль хранится в реестре и поэтому запустить 2 копии с разными паролями не получится
Сервак, насколько мне известно стартует от туда, от куда его запустили. А по поводу 2-х радминов, может попробовать другую версию установить, отличную от уже устаовленной ведь ключ в реестре записывается
\radmin\vX.X\ ... надо потестить..
Сервак, насколько мне известно стартует от туда, от куда его запустили. А по поводу 2-х радминов, может попробовать другую версию установить, отличную от уже устаовленной ведь ключ в реестре записывается
\radmin\vX.X\ ... надо потестить..
ну да, просто по умолчанию все ярлыки на тот что в system32. с разными версиями по идее должно сработать, я не пробовал
Всем привет. У меня похожая задача. Есть возможность проснифить траф.
Поправьте если ошибаюсь.
Как я понял есть возможность в отснифаном трафике нафти тот самый пароль который передает сервер клиенту для шифрования хэша пароля.
К стати, как я понял хэш вычисляется алгоритмом MD5, дополнив пароль до 100 символов нулевыми.
Задача снифнуть, получить пароль, расшифровать передаваемый клиентом хэш, брутнуть его и получить пароль. Пароль с небольшим алфавитом, цифры и все. Длинной до 10 символов. Брутнуть реально.
Вопрос в каком виде перадется пароль к BlowFish к клиенту и в каком виде шифрованный хэш отправляется серверу.
Кто-нибудь делал подобное?
Что вообще никто и ничего не слышал?
Половина вопросов уже отпала. Остался вопрос о структуре пакета отправляемом сервером клиенту. Того где ключ для для шифрования хэша блоуфишем, и к стати, еще вопрос блоуфиш ли это.
У меня вопрос главный - как узнать пароль из хэша - который находится в реестре. =)
Версия Radmin 2.2
вот мой
7e8a54138cc0003f75bc33fbadcf2656
В интернете прочитал один из методов узнать пароль:
Кто разбирается проверте пожалуйста!
В ветке [HKEY_LOCAL_MACHINE\SYSTEM\RAdmin\v2.0\Server\Param eters]
"Parameter"=hex:c4,59,37,0c,f1,4b,82,80,72,2c,08,68,24,ef,9b, f9 содержит хэш пароля. Единственный шанс-узнать этот хэш, и при вводе пароля менять хэш расчитанный на хэн узнанного пароля.Для версии 2.1 break point на getdlgitemtext, потом бряк по адресу 0ACA655(в хр), после ввода пароля сработает этот самый бряк, edx будет содержать адрес хэша 10h байт, если их поменять на известное истинное значение хэша, то дальнейшая авторизация проходит на ура. Желающие могут написать прогу, модифицирующую radmin на лету, выше, в радмине есть процедура, расчитывающая хэш, процедура большая примерно 50-60 байт, для записи старого хэша мне хватило 36, но можно и меньше.
Стырь ты этот параметр, а потом подсовывай его в момент расчета хэша, вместо того что они там насчитали.
Подскажите реально ли сделать?
Бьюсь очень давно, хочу узнать какой пароль, менять или сбрасывать мне его не нужно! Нужно узнать пароль.
Спасибо!
UPDATE:
Нашел решение у китайских братьев - описание было на китайском + я совсем не знаком с OLLYDBG - поэтому пришлось повозиться, но для моего Radmina 2.2 все сработало на УРА! Действительно по время работы программы подсунул ей hash она его проглатила и приконектилась, правда пароль так и не узнал.
Кстати у китайцев же, есть готовая программа для версии 3.0 как я понял уже написанная для hash готовый exe - я толком не разобирался, да мне и не нужно было.
2.2 - OLLYDBG победила.
Вопрос закрыт!
проверь как трафик шифруется.
Подскажите какой функцией хэшируется пас в радмине 3.4?
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot