суббота, декабря 29, 2012

Расшифровываем пароли, зашифрованные с помощью service password-encryption

Если вы помните, то в статье Обеспечение  безопасности устройств Cisco Systems мы с вами говорили о команде service password-encryption и том, что шифрование, с помощью которого она по умолчанию шифрует пароли, является не надежным и легко поддается взлому. Сегодня мы поговорим об этом подробнее и на пальцах разберемся с тем как расшифровывать данные пароли. НАПОМИНАЮ! ВСЯ ИНФОРМАЦИЯ СТАТЬИ, ПРИВОДИТСЯ ТОЛЬКО В КАЧЕСТВЕ ОЗНАКОМЛЕНИЯ И В БЛАГИХ ЦЕЛЯХ.

И так существует несколько способов расшифровки паролей, зашифрованных с помощью шифрования типа 7 (с помощью команды service password-encryption), рассмотрим некоторые из них, расположив их в порядке возрастания  сложности.

Способ – 1. Самый простой.

Для расшифровки паролей, зашифрованных шифрованием типа 7, можно воспользоваться уже готовыми программами или online-сервисами, предназначенными для этих целей. Не буду напрягать вас гугленьем и приведу ссылки на парочку из них:


Оба сервиса прекрасно расшифровывают пароли, зашифрованные с помощью service password-encryption, длинной не более 18 символов.

Способ – 2. Расшифровываем пароли типа 7 с помощью самой циски.

Как разумно было бы предположить, устройства Cisco умеют выполнять не только шифрование паролей по типу 7, но и также выполнять их расшифровку. Правда сделать это с помощью команды no service password-encryption это не получится. Все будет немного интереснее. Для расшифровки пароля необходимо выполнить на устройстве (или же в GNS3)следующие команды:

R1(config)#key chain OLOLO
R1(config-keychain)#key 1
R1(config-keychain-key)#key-string 7 <ваш зашифрованный пароль>
R1(config-keychain-key)#do show key chain OLOLO

В результате чего вы увидите следующий результат:

Key-chain OLOLO:
    key 1 -- text "egor"
        accept lifetime (always valid) - (always valid) [valid now]
        send lifetime (always valid) - (always valid) [valid now]

В данном случае вы создаете набор ключей состоящий из одного ключа. (Наборы ключей могу понадобиться для включения аутентификации сообщений протоколов маршрутизации, но в данной статье это не суть важно). С помощью первой команды вы создаете набор ключей с именем OLOLO. Следующими двумя командами вы создаете ключ номер 1 и присваиваете ему значение вашего зашифрованного пароля. Ну а далее отдаете маршрутизатору команду  отобразить только что созданную ключевую последовательность и наслаждаетесь расшифрованным паролем (выделен красным цветом).








Способ – 3. Расшифровываем пароли типа 7 вручную.

Расшифровать пароли, зашифрованные с помощью команды servicepassword-encryption можно и вручную. Для этого нам понадобиться ручка, бумажка и возможно калькулятор.

И так для расшифровки воспользуемся одномерной матрицей(далее будем называть ее Mxor), которая имеет следующий вид (да это одномерная матрица, просто она не умещается в одну строку):

Mxor = {0x64, 0x73, 0x66, 0x64, 0x3b, 0x6b, 0x66, 0x6f,
           0x41, 0x2c, 0x2e, 0x69, 0x79, 0x65, 0x77, 0x72,
           0x6b, 0x6c, 0x64, 0x4a, 0x4b, 0x44, 0x48, 0x53,
           0x55, 0x42, 0x73, 0x67, 0x76, 0x63, 0x61, 0x36,
           0x39, 0x38, 0x33, 0x34, 0x6e, 0x63, 0x78, 0x76, 
           0x39, 0x38, 0x37, 0x33, 0x32, 0x35, 0x34, 0x6b,
           0x3b, 0x66, 0x67, 0x38, 0x37, 0x64, 0x73, 0x66, 
           0x64, 0x3b, 0x6b, 0x66, 0x6f, 0x41, 0x2c, 0x2e,
           0x69, 0x79, 0x65, 0x77, 0x72, 0x6b, 0x6c, 0x64,  
           0x4a, 0x4b, 0x44, 0x48, 0x53, 0x55, 0x42, 0x73,
           0x67, 0x76, 0x63, 0x61, 0x36, 0x39, 0x38, 0x33,  
           0x34, 0x6e, 0x63, 0x78, 0x76, 0x39, 0x38, 0x37,
           0x33, 0x32, 0x35, 0x34, 0x6b, 0x3b, 0x66, 0x67,
           0x38, 0x37};

Данная матрица будет одинаковой в каждом случае расшифровки паролей типа 7. Так что если нужно, то можно скопировать ее куда-нибудь на «долгую память».

Далее перейдем непосредственно к процессу расшифровки. Рассмотрим его на конкретном примере расшифровки зашифрованного пароля 08244B411B, который в оригинале был egor.

Для начала можно вычислить длину не зашифрованного пароля (правда она далее не понадобится) используя формулу: 

Lнезашифрованного=(Lзашифрованного/2)-1, 

где
Lнезашифрованного – длина незашифрованного пароля;
Lзашифрованного – длина зашифрованного пароля;

В нашем случае Lнезашифрованного=(10/2)-1=4. Как видим полученный результат совпадает с длинной исходного пароля egor.И это уже радует.

Первые два символа зашифрованной строки (в нашем случае это 08) являются текущим индексом (номером) элемента матрицы XOR, запомним это. Далее это нам пригодится.

Далее рассмотрим следующие две шестнадцатеричные цифры зашифрованного пароля (в нашем случае это 2 и 4). Необходимо умножить первую цифру на 16 и приплюсовать к полученному произведению вторую цифру (в нашем случае 2*16+4=36). Далее выполняем операцию  XOR между полученным на предыдущем шаге результатом (считаем что он в десятичной системе счисления) и элементом матрицы XOR с текущим индексом (нумерация элементов матрицы начинается с 0), тоже переведенным в десятичную систему (в нашем случае 36 XOR  вдесят(Mxor[08]) = 36 XOR вдесят(0x41) = 36 XOR 65 = 101, команду XOR между шестнадцатеричными числами легко выполнять на калькуляторе Windowsв режиме программиста). Полученный результат переводим в шестнадцатеричную систему исчисления и получаем  0x65. Далее в таблице ASCII ищем символ, соответствующий данному шестнадцатеричному коду. Коду 0x65 соответствует символ ‘e’. А это значит что мы на правильном пути, и можно продолжать расшифровывать дальше.
ASCII таблица
Увеличим индекс на 1 и продолжим расшифровку пароля аналогичным образом. Возьмем следующие две цифры зашифрованного пароля, в данном случае 4 и B. Умножим первую из них на 16 и прибавим вторую 4*16+B=4*16+11=75. Выполняем операцию  XOR между данным результатом и элементом матрицы XOR с текущим индексом (09), тоже переведенным в десятичную систему (в нашем случае 75 XOR вдесят(Mxor[09]) = 75 XOR вдесят(0x2с) = 75 XOR 44 = 103. Полученный результат так же переводим в шестнадцатеричную систему исчисления и получаем  0x67. В таблице ASCII ищем символ, соответствующий данному шестнадцатеричному коду и соответственно получаем символ ‘g’.

Во второй раз увеличим индекс на 1. Следующие две цифры зашифрованного, с помощью service password-encryption, пароля 4 и 1. Все так же умножим первую из них на 16 и прибавим вторую 4*16+1=65. Выполняем операцию  XOR между данным результатом и элементом матрицы XOR с текущим индексом (10), тоже переведенным в десятичную систему(в нашем случае 65 XOR вдесят(Mxor[10]) = 65 XOR вдесят(0x2e) = 65 XOR 46=111.Полученный результат переводим в шестнадцатеричную систему исчисления и получаем  0x6F. В таблице ASCII ищем символ, соответствующий данному шестнадцатеричному коду и соответственно получаем символ ‘o’.

В последний раз увеличим индекс на 1.  Берем последние две цифры пароля, зашифрованного шифрованием 7 - 1 и B. Все так же умножим первую из них на 16 и прибавим вторую 1*16+B=16+11=27. Выполняем операцию  XOR между данным результатом и элементом матрицы XOR с текущим индексом (11), тоже переведенным в десятичную систему(в нашем случае 27 XOR вдесят(Mxor[11]) = 27 XOR вдесят(0x69) = 27 XOR 105 =114.Полученный результат переводим в шестнадцатеричную систему исчисления и получаем  0x72. В таблице ASCII ищем символ, соответствующий данному шестнадцатеричному коду и соответственно получаем символ ‘r’.

Ну вот и все – пароль расшифрован! Причем на его расшифровку мы потратили не более 5 минут времени. Так что помните, что шифрование выполняемое  с помощью команды servicepassword-encryption не надежно и может быть легко взломано.

16 коммент.:

интересно было прочитать.Надо попробовать.А откуда можно скачать эту программу.

Попробуйте поискать в googgle=)
А лучше не парьтесь и воспользуйтесь ссылками на online сервисы, которые были приведены в начале статьи.

Вот у меня такая проблема, никак не могу решить, в Вконтакте, пароль при в ходе шифрует, а у меня такая ситуация, что пароль не помню, так как не менял около полу года, и к этому, 3 дня назад потерял телефон с сим-картой, на которую регистрировалась страница, страница важная! если какая-то программа, что бы посмотреть пароль, например скопировать его каким то образом. жду ответа.

К сожалению, вряд ли смогу тут вам чем то помочь. Попробуйте обратиться в службу поддержки Вконтакте для восстановления пароля.

Егор вы молодец)
Ручная расшифровка удивила - не знал что так можно)

Спасибо! Сам не знал, просто читал книгу и наткнулся в ней на фразу "расшифровать можно на кусочке салфетки" , это меня заинтересовало и я немного решил покопаться в данной теме.

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

Что вы имеете ввиду под словом "контакта"?

помогите расшифровать , никак не могу D41D8CD98F00B204E9800998ECF8427E

Не уверен что данная последовательность зашифрована с помощью cisco type 7

Полезная информация. Тока онлайн сервисы не помогли, расшифровали на 90%. А вот с помощью самой циски все получилось. Спасибо большое.

Скорее всего в онлайн сервисах идет ограничение на длину зашифрованного пароля.

530670756D4B11DCB641AFEC32D0DDD9 расшифруйте пожалуйста

625AD4FF398833F34A98F861CCAD9A5559CF88BD3EF55CCAE1281E99FC95C603 А мне помогите

Если ничего не напутал, то - ^E3sJ^XyaL-^ZUY=>u\Ja]

Отправить комментарий