Некотрые аспекты атаки по
словарю |
Автор: Maveric
Всем
известна старая атака по словарю. А так же ее дополнение ( имеется в
виду атака с нескольких машин ). В общем случае это выглядит так :
1. Клиент(далее Crk-client) обращается к серверу(далее
Crk-server) за очередной порцией паролей
2. Crk-server
помечает эту порцию как находящуюся в работе
3. Crk-client
пробует все пароли из этой порции . а) Если один из них
подошел , отправляется сообщение на Crk-server, и на этом
заканчиваем перебор. б) Если нет то Crk-client отсылает на
Crk-server сообщение об окончании перебора и берет новую порцию.
в) Если соединение разрывается по ошибке или Crk-client завис,
то он ,естественно ,ничего не отправляет.
4. Crk-server
получает сообщение об окончании перебора ( см.3б ), тогда эта порция
удаляется как уже обработанная . Или , по time-out'у , Crk-server
помечает эту порцию как необработанную ( см.3в )
Теперь
непосредственно сама идея. Рассмотрим например chat.ru(далее
сервер). Он предоставляет следующие виды сервиса :
1.
Размещение страниц 2. Почту ( как POP3 , так и SMTP ) и т.д. (
остальное нас не интересует) Рассмотрим как можно организовать
перебор пароля на ЛЮБОЙ сервис данного сервера. Crk-client можно
написать в виде апплета на яве и положить апплет на сервер. Это
делается для того , что бы перебором паролей занимались посетители
этой страницы ( даже не подозревая об этом ). В логах сервера
перебор будет разнесен во времени и пространстве, т.е. попытки будут
происходить через неравные промежутки времени и из разных мест. И к
тому же невозможно будет определить кто же в действительности
подбирает пароль. Этот апплет может коннектиться только с тем
сервером откуда он был загружен (chat.ru). Нам это и нужно.
Проблема в следующем: как разместить на сервере Crk-server ?
Очевидно , что это не получится . Покажем как можно обойтись без
Crk-server'а ...
Регистрируем два аккаунта(далее WordList и
TMP) на сервере, размещаем HTML-страничку с апплетом Crk-client, а
словарь ложим в почтовый ящик (WordList) на сервере. Словарь
необходимо разбить на порции , например по 20 паролей. При этом
каждая порция лежит отдельным письмом. Crk-client при запуске,
обращается на WordList по протоколу POP3 и берет первое-же письмо (
удаляя его с WordList , но отсылая его по SMTP на TMP). Далее
Crk-client начинает перебор. Если пароль успешно найден, отправляем
его по SMTP себе :)) Если перебор завершился впустую , удаляем из
TMP эту порцию . Здесь может возникнуть проблемма , когда
одновременно работают несколько клиентов. Но "свою" порцию можно
найти используя команду POP3 TOP msg n.
Если Crk-client не
доработал из-за ошибки , то эта порция не потеряется и ее можно
переместить из TMP в WordList . Делать это придется или вручную (
что нежелательно ) или возложить эту функцию на Crk-client. Тут
возникает еще одна проблема, как отличить в TMP порции которые
обрабатываются сейчас от тех которые надо переместить в WordList .
Для этого нужно анализировать дату отправки порции и текущее время.
Если разница порядка часа , то эту порцию перемещаем в
WordList.
Скорость перебора зависит от качества связи с
сервером и от количества посетителей этой странички. Как сделать
страничку посещаемой - тема для отдельной статьи :))) Сейчас я
работаю над реализацией этого алгоритма. Пока что это только теория.
В процессе работы возникло сомнение , а может ли апплет работать с
почтовыми протоколами ? Оказалось, может, пример
прилагается .
Теперь немного о применение вышеописанного. На
первый взгляд может показаться , что это работает только для
халявных серверов , но это не так. Это работает и для серверов
провайдеров , если только HTTP , POP3 и SMTP ослуживаются одной
машиной.
P.S. С некоторыми изменениями, этот алгоритм можно
использовать для серверов которые предоставляют только HTTP. Правда
для этого сервер должен поддерживать методы DELETE и PUT , ну и GET
, естественно.
|