Брутфорс: полезная практика Докучаев Дмитрий 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). |