Всем известна старая атака по словарю. А также ее дополнение (имеется в виду атака с нескольких машин). В общем случае это выглядит так: - Клиент (Crk-client) обращается к серверу (Crk-server) заочередной порцией паролей. - Crk-server помечает эту порцию как находящуюся в работе. - Crk-client пробует все пароли из этой порции. Если один из них подошел, отправляется сообщение на Crk-server ина этом заканчиваем перебор. Если нет, то Crk-client отсылает на Crk-server сообщение об окончании перебора и берет новую порцию. Если соединение разрывается по ошибке или Crk-client завис, то он, естественно, ничего не отправляет. - Crk-server получает сообщение об окончании перебора, тогда эта порция удаляется как уже обработанная. Или по time-out Crk-server помечает эту порцию как необработанную. Рассмотрим, например, chat.ru (сервер). Он предоставляет следующие виды сервиса: - Размещение страниц. - Почту (как POP3, так и SMTP). Рассмотрим, как можно организовать перебор пароля на любой сервис данного сервера. Crk-client можно написать в виде апплета на яве и положить апплет на сервер. Это делается для того, чтобы перебором паролей занимались посетители Web-страницы (даже не подозревая об этом). В логах сервера перебор будет разнесен во времени и пространстве, т.е. попытки будут происходить через неравные промежутки времени и из разных мест. И к тому же невозможно будет определить, кто же в действительности подбирает пароль. Этот апплет может коннектиться только с тем сервером, откуда он был загружен (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. Скорость перебора зависит от качества связи с сервером и от количества посетителей Web-странички. Теперь немного о применении вышеописанного. На первый взгляд, может показаться, что это работает только для халявных серверов, но это не так. Это работает и для серверов провайдеров, если только HTTP, POP3 и SMTP обслуживаются одной машиной. С некоторыми изменениями этот алгоритм можно использовать для серверов, которые предоставляют только HTTP. Правда, для этого сервер должен поддерживать методы DELETE и PUT, ну, и GET, естественно.
|