Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #68, АВГУСТ 2004 г.

Расшифруем зашифрованное

Докучаев Дмитрий aka Forb

Xakep, номер #068, стр. 068-064-2


MD5 используется также и для шифрования пользовательских паролей в mySQL. Правда, хэши здесь имеют немного другой вид (16-ричный), и John их взламывать не умеет. Что касается тулз, которые расшифровывают такие хэши, их очень мало. Единственная программа, которую я видел - это MD5 Inside (www.nsd.ru/soft/1/md5inside_1_0.rar). Но в первой версии этой софтины существует много недоработок. Красивый интерфейс с эффектными кнопочками, конечно, рулит, однако под Unix эту прогу не запустишь. Я предлагаю тебе написать собственный переборщик, что не займет много времени - мы, не мудрствуя лукаво, заюзаем чужой готовый модуль Digest::MD5.

Для этого воспользуйся перловым модулем Digest::MD5. Алгоритм программы очень прост - берется обычный словарь, из которого происходит построчное чтение. Предполагаемый пароль при помощи функций, описанных в модуле, превращается в MD5-хэш, который сравнивается с эталонным. Вот небольшой код этого переборщика:

Консольный переборщик MD5-паролей

#!/usr/bin/perl

use Digest::MD5 qw(md5_hex); ## Юзаем модуль 16-ричного ASCII-кодирования MD5

$password=shift; ## MD5-хэш - в качестве параметра

open(W,"w"); ## Открываем вордлист

while(>W<) { ## По каждому предполагаемому паролю...

chomp; ## Удаляем символ конца строки

$hash = md5_hex($_); ## Формируем по элементу 16-ричный hash

if ($password eq $hash) { print "Password is $_\n"; last } ## Если пароли совпали - сообщим об этом и выйдем из цикла

}

close(W); ## Закроем вордлист

Такой вот несложный Perl-скрипт является вполне дееспособным переборщиком и за пару-тройку лет способен взломать почти любой пароль ;). Естественно, что в рамках статьи я не стал приводить окончательный код переборщика, ты и сам сможешь отшлифовать напильником этот сырой вариант, добавив различные проверки на некорректные исходные данные и т.п.

Несмотря на то, что MD5 является наиболее стойким алгоритмом, в Unix применяются и другие способы шифрования учетных записей. Например, в .htpasswd-файлах. Такие базы создаются для Web-аутентификации вебсервером Apache, и чаще всего пароли кодируются старым методом DES. Ты наверняка слышал о нем. Не буду вдаваться в подробности алгоритма, скажу лишь, что это необратимое шифрование производится путем некоторых операций над первыми двумя символами в криптованном пароле. Иными словами: берутся два случайных символа, затем согласно паролю создается уникальный хэш, начало которого и будет представлено заранее сгенерированными случайными символами. Соответственно, расшифровка такого хэша сводится к запоминанию первых двух позиций и предполагаемого пароля (чаще всего словарного слова, либо алфавитной комбинации). С помощью этих компонент создается DES-хэш, который сравнивается с заданным. Если они не совпали, то берется следующий пароль. Если совпали - хакеру повезло :). Шанс на везение большой, потому что DES'овые пароли не могут быть длиннее 8 символов.

Назад на стр. 068-064-1  Содержание  Вперед на стр. 068-064-3