HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ИНФО > Статьи
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 11.07.2011, 04:20
M_script
Новичок
Регистрация: 04.11.2004
Сообщений: 5
С нами: 11322426

Репутация: 0
По умолчанию

Цитата:
Сообщение от None  
Ботнет (англ. botnet от robot и network) — это компьютерная сеть, состоящая из некоторого количества хостов, с запущенными ботами — автономным программным обеспечением. Чаще всего бот в составе ботнета является программой, скрытно устанавливаемой на компьютере жертвы и позволяющей злоумышленнику выполнять некие действия с использованием ресурсов заражённого компьютера.
Такое определение ботнета дает википедия.

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

Конечно, это далеко не полноценный ботнет, но свою задачу выполняет - скрыто рассылает письма с компьютеров пользователей.

В качестве примера будет рассматриваться почтовый сервис mail.ru.

Начнем с того, что должен уметь наш "ботнет":

1. Проверять, авторизован ли пользователь на сайте почтового сервиса.

2. Если пользователь не авторизован, брать из базы аккаунт и заходить на сайт.

2.1. Проверять успешность авторизации.

3. Отправлять письмо, не оставляя следов (исходящих писем в ящике)

1. Проверка авторизации на сайте.

Чем отличается авторизованный пользователь сайта от неавторизованного?

а) куки

б) различное отображение страниц либо запрет на доступ к некоторым страницам

Куки можно проверить при наличии XSS на сайте. Но найти на крупном почтовом сервисе XSS достаточно сложно, так что этот вариант пропускаем.

Получить страницу сайта и узнать о ней хоть какую-нибудь информацию без XSS тоже не получится.

Единственный способ - события onload и onerror тэга img. Если файл, указанный в src является картинкой, вызывается обработчик onload, иначе onerror.

Остается найти на сайте картинку, доступ к которой разрешен только авторизованным пользователям.

Такие картинки существуют, например на gmail'е авторизацию можно было проверить с помощью http://mail.google.com/mail/pimages/2/labs/labs_bar_icon.png (пофиксили около месяца назад)

Поиски подобных багов на мэйлру ни к чему не привели. Изображения там хранятся на отдельных поддоменах и доступны всем, независимо от авторизации.

Проверив различные запросы в соц.сети МойМир я обнаружил, что в некоторых из них передается параметр "back=http://my.mail.ru/*******", который указывает адрес возврата при успешном выполнении запроса (только домены мэйлру).

В большинстве таких запросов есть защита от CSRF в виде рандомных параметров "mna" и "mnb", но при редактировании анкеты эти параметры не передаются.

Пример POST-запроса на сохранение вкладки "интересы":

http://my.mail.ru/[Домен]/[Логин]/editinfo

page=&Figure=0&Height=0&Weight=0&Eyes=0&Hair=0&Chi lds=0&Residence=0&Routine=0&Smoke=0&Alcohol=0&Lang uages=-1&ReligionCustom=&Politics=&Interests=&Music=&Cine ma=&TV=&Books=&Persons=&back=http://my.mail.ru/my/editinfo&Save=1

Запрос успешно работает через GET (как и большинство запросов mail.ru). Кроме того, единственными неодходимыми параметрами для успешного выполнения запроса являются "Save" и "back".

Но еще более интересно то, что [Домен] и [Логин] в адресе скрипта не имеют никакого значения.

Теперь находим любую картинку, например http://img.mail.ru/r/dumb.gif (1x1 px), и подставляем в параметр "back".

Получилась рабочая ссылка для проверки авторизации в соц.сети МойМир - http://my.mail.ru/bk/x/editinfo?Save=1&back=http://img.mail.ru/r/dumb.gif

Код проверки:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR
К сожалению, эта проверка не срабатывала, если на мыле не был создан моймир. Еще немного поискав, нашел ссылку, подходящую для любых ящиков мэйлру:

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR
[offtop]аналогичная ссылка для проверки авторизации ВК - http://vkontakte.ru/login.php?to=ZmF2aWNvbi5pY28 (favicon.ico в base64)[/offtop]

2. Авторизация

http://e.mail.ru/cgi-bin/auth

Login - логин

Domain - mail.ru|inbox.ru|list.ru|bk.ru

Password - пароль

page - страница, на которую редиректит в случае успешной авторизации

login_from - поддомен, с которого авторизуется пользователь

post - если неавторизованный пользователь пытается отправить POST-запрос, его перекидывает на страницу авторизации, а параметры запроса сохраняются в базе под уникальным идентификатором. В этом параметре передается идентификатор и если он есть в базе, то после авторизации выполняется соответствующий POST-запрос.

level=1 - чужой компьютер

Параметры "login_from" и "post" необязательные. "Domain" тоже можно убрать, если в "Login" передавать логин@домен

"level" и "page" тоже являются необязательными, но они нам пригодятся.

level=1 - чтобы юзер не заметил, что с его компа рассылались письма

page=http://img.mail.ru/r/dumb.gif - чтобы проверить успешность авторизации с помощью тэга img. Даже если все аккаунты будут валидными, эта проверка необходима, так как мэйлру может заблокировать IP-адрес и авторизоваться с него будет невозможно.

Изучая авторизацию через различные поддомены мэйлру, на m.mail.ru находим еще один интересный параметр - "FailPage". Это адрес возврата, в случае неудачной авторизации.

Обычная страница ошибки авторизации весит достаточно много, поэтому надо заменить ее на что-нибудь поменьше, например на http://img.mail.ru/ (403 Forbidden).

2.1. Варианты кода авторизации с проверкой

На поддомене m.mail.ru в параметрах "page" и "FailPage" можно использовать относительные пути, что сокращает длину ссылки. Но в случае успешной авторизации происходит дополнительный запрос:

http://m.mail.ru/cgi-bin/checkcookie?id=[Хэш длиной более 100 симоволов]&user=[Логин]&domain=[Домен]&page=[Страница возврата]

поэтому объем трафа больше, чем на e.mail.ru

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR
2-2.5кб при успешной авторизации. 1.5-2кб при ошибке

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR
4кб (+2кб картинка) при успешной авторизации. 2кб при ошибке

3. Отправка письма

Пример запроса отправки через e.mail.ru показывал XAMEHA в соседней теме - /showpost.php?p=2705452&postcount=4

Минимально необходимые параметры для отправки:

http://e.mail.ru/cgi-bin/sentmsg

ajax_call=1 - обязательный параметр

func_name=send - обязательный параметр

send= - обязательный параметр

HTMLMessage=1 - для использования HTML-разметки в теле письма

To - кому

Subject - тема письма

Body - содержание письма

Отправка письма через m.mail.ru отличается отсутствием обязательных параметров "ajax_call" и "func_name".

При использовании e.mail.ru результат возвращается в JSON-формате. На m.mail.ru происходит редирект на страницу вида http://m.mail.ru/cgi-bin/sendmsgok?ab01=ab01&mode=newmsg&id_sent=0123456789 0123456789&To=01234567890abcdef01234567890abcdef&S ubject=0123456&From=01234567890abcdef01234567890ab cdef01234567890abcdef01234567890ab&user=0123456789 0abcdef01234567890abcdef

Объем трафа при отправке через m.mail.ru примерно в 2 раза больше, чем e.mail.ru (около 12кб и 6кб соответственно).

[offtop]На данный момент отправка писем методом GET через m.mail.ru и e.mail.ru невозможна.[/offtop]

Для реализации "ботнета" всего вышеописанного уже было достаточно, но недавно A-Graff рассказал мне еще о двух различных веб-интерфесах мэйлру - pro.mail.ru и wap.mts.mail.ru

Отправка письма на pro.mail.ru так же уязвима к CSRF и работает через GET-запрос. Кроме того, при удалении из запроса некоторых параметров, отправленные письма перестают сохраняться в папке "исходящие".

Использование метода GET для отправки позволит контролировать запрос событием onerror и после его завершения брать новые аккаунты, мыла и тексты из базы для продолжения рассылки.

http://pro.mail.ru/cgi-bin/ajax_sendmsg?ajax_call=1&func_name=ajax_send_msg

data=
[{"To":"[Кому]","Subject":"[Тема]","Body":"[Содержание]","HTMLMessage":1,"send":1}]

PHP код:
[COLOR="#000000"][COLOR="#0000BB"][/COLOR][COLOR="#007700"][/COLOR][/COLOR
[offtop]

На поддомене pro.mail.ru в запросе отправки можно увидеть параметр "From", в котором указывается имя отправителя.

Это имя можно заменить на любое другое и оно будет отображаться у получателя в списке писем. Но при открытии письма виден адрес, с которого оно отправлено.

Отправка в параметре "From" измененного адреса отправителя (например "Команда Mail.Ru ") не дает результата, получатель все равно видит реальный адрес ("Команда Mail.Ru ").

Но если "From" добавлять в заголовок при отправке писем с wap.mts.mail.ru (а также еще с нескольких других поддоменов), адрес отправителя можно заменить на любой, даже "Команда Mail.Ru "

[/offtop]
 
Ответить с цитированием
 



Предыдущая тема Следующая тема

Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.