Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #58, ОКТЯБРЬ 2003 г.

Брутфорс: полезная практика

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

Xakep, номер #058, стр. 058-058-4


MIME-кодирование: подбор паролей к web-авторизации

Если уж мы заговорили о Web-брутфорсах, то следует упомянуть и о стандартных методах авторизации. Ты наверняка сталкивался с небольшим окошечком в браузере, в котором запрашивалось имя пользователя и пароль. Это могла быть как страница статистики, так и обычная авторизация на squid-прокси сервер. Когда известно имя пользователя, пароль можно попробовать перебрать. Для этого надо написать небольшой брутфорсер. Естественно, алгоритм его работы будет слегка отличаться от вышеописанного.

Если просмотреть трафик между клиентом и сервером, то в случае запроса директории, защищенной паролем, в ответе от сервера будет видна ошибка 401 (Unauthorized). А среди строк заголовка обнаружится следующая запись:

WWW-Authenticate: Basic realm="Secret zone"

После того, как это случится, браузер автоматически запросит логин и пароль, которые будут закодированы в MIME-хеш. Затем в стандартный заголовок запроса добавится строка, подобная этой:

Authorization: Basic MjIyOjExMQ==

Сервер проверит правильность пароля, и, если все в порядке, пропустит клиента к секретной зоне. В противном случае, если результат не изменится, то апач вернет ошибку 401.

Реализовать брутфорсер, работающий по такому алгоритму, совсем несложно. Достаточно подключить перловый модуль Base64.pm (идет в поставке с перлом по умолчанию). В этом модуле существует функция encode_base64(). Она возвращает тот самый хеш, про который я говорил выше. Остается разобраться, по какому принципу генерируется MIME-запись. На самом деле, все просто: достаточно передать функции аргумент вида "login:password", и в результате кодирования мы получим нужный хеш. Если все это реализовать, то получим следующий код:

Таблица4: MIME-кодирование

open(words, $wordlist);

while($pass=<words>) { # Перебираем каждую строку

chomp($pass);

$hash=encode_base64("$login:$pass"); # Кодируем login/password

$status=crack($hash); # Переходим на crack()

После небольшой модификации crack() (добавления одной строки в заголовок запроса и анализа ответа) брутфорс заработал как надо. Теперь, думаю, ты без проблем сможешь сам переделать брутфорсер под работу в многопотоковом режиме.

Мораль сей басни

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

Сливаем софт

Набор рабочих брутфорсеров ты можешь найти на нашем CD, сайте (в X-релизах), а также на моей странице в архиве http://kamensk.net.ru/forb/1/x/bruteforcers.tar.gz.

В нем находятся 4 файла:

ljbrut1.pl - последовательный брутфорс ЖЖ-аккаунтов.

ljbrut2.pl - параллельный брутфорс ЖЖ-аккаунтов (без поддержки proxy).

ljbrut3.pl - параллельный брутфорс ЖЖ-аккаунтов (с поддержкой proxy).

Назад на стр. 058-058-3  Содержание  Вперед на стр. 058-058-5