Некоторые
аспекты атаки по словарю
Всем известна старая атака по словарю. А так
же ее дополнение ( имеется в виду атака с нескольких машин ).
В общем случае это выглядит так :
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 , естественно.
Наверх