Предупреждение
В статье описаны приключения одного моего знакомого.
Предыстория
События проходят во времена
Жил со мной в студенческом общежитии в одной комнате сосед-первокурсник, который, также как и я, учился на ВМК и интересовался информационными технологиями. Для определённости в дальнейшем буду называть его N.
Любил этот товарищ заниматься мелкими сетевыми хулиганствами, типа найти у кого-то простой пароль к ВКонтакте и сменить аватар, или написать в статусе что-нибудь пошлое. Я этого не одобрял, но ничего не предпринимал. Помимо того теоретических знаний у него было меньше, чем нужно для таких действий, поэтому он пользовался по большей мере готовыми программами, со слабым пониманием того, как они работают – это я ещё сильнее не одобрял.
Сам-то я тоже не был гуру, но, по крайней мере, пытался изучить теорию, прежде чем пользоваться «магическими» скриптами и программами. Ну и направлял свою деятельность больше в конструктивное, а не деструктивное русло.
И себя я считал в достаточной мере защищённым от сетевых атак, так как основами компьютерной грамотности владею, в качестве паролей не ставлю дату рождения или номер телефона, ОС и ПО своевременно обновляю, что-попало из интернета не запускаю.
И вот, однажды, присылает он мне на электронную почту письмо и хитро лыбится. А в письме том файл, а в файле табличка с большинством моих паролей. Наиболее ценных паролей (к почте и доменам) там не оказалось, но у меня всё равно баттхёрт, ибо как же так — вроде всё делал правильно, а тут такой провал, и я даже не знаю, где у меня проблема, и что нужно исправить! Спрашиваю у него, он отказывается объяснять, где и как он их добыл.
Анализ показал, что множество присланных мне паролей совпадает с множеством паролей, сохранённых в Opera Wand, ставлю мастер-пароль на Wand в опере. Меняю все пароли, качаю Cure It Live CD, перезагружаю компьютер, запускаю полную проверку. Проходит ночь — вирусов не обнаружено. Качаю аналогичный продукт от лаборатории Касперского — результат тот же самый. Приходит идея, что он мог воспользоваться Live CD, чтобы стащить wand.dat – диск-то у меня не зашифрован. N говорит, что я не угадал, но я на всякий случай ставлю пароль в BIOS на загрузку и на смену загрузочного носителя. В голове рождается план страшной мести (тем более что руки давно чесались что-то подобное поделать, но сдерживали моральные нормы – а тут вроде и оправдание есть: «он первый начал»). Записываю Live CD с каким-то мини-линуксом, тестирую на своём компьютере, все работает. Гуглю расположение ключевых файлов Windows.
На следующий день, пока N сдаёт экзамен, я закрываюсь в комнате, загружаю его ПК с заготовленного накануне Live CD. Копирую директорию %AppData% на свою флешку, также копирую файлы реестра SAM и SYSTEM, выключаю ПК.
На своём компьютере расшифровываю пароли из его Opera Wand, пароль от почты там тоже есть. Один из них совпадает с его паролем на вход в Windows.
Также в почтовом ящике с помощью поиска по словам «пароль», «password» нахожу пароли от сервисов, которые отправляют пароль в открытом виде на почту после каждого его изменения.
Пишу ему ответное письмо с его паролями. Спустя небольшое время получаю дисконнект аськи и джаббера. Поняв, что у него есть также база данных моей миранды, восстанавливаю пароли на все используемые протоколы IM, ставлю к миранде плагин шифрования базы.
После нескольких часов переговоров, договариваемся об обмене информацией о способах «взлома». Оказалось, что он ещё несколько недель назад, пока я отошёл от компьютера, скопировал на флешку мою %APPDATA%. И в тот день решил пройтись по этой директории программами-дешифраторами. Получилось, что пока я обдумывал какие-то сложные варианты, он просто взял и скопировал директорию – куда проще? С тех пор компьютер у меня блокируется через две минуты бездействия, а также и вручную, когда не забываю.
На добрососедские отношения этот инцидент никак не повлиял, так как никто не использовал чужие пароли в дурных целях, и оба только получили лишний опыт. Помимо этого договорились не пользоваться в дальнейшем физическим доступом к компьютеру соседа, ибо опыта это уже не принесёт, а защита ПК от физического доступа уже выходит за рамки того, что нам интересно.
История
Прошёл месяц. И снова я вижу, как N узнал пароль от электронной почты своей одногруппницы, и, с достойным лучшего применения упорством сбрасывает ей пароль на контакт и пишет всякое от её имени на стене, в сообщениях друзьям и т.п. Она восстанавливает пароль ВКонтакте через почту, а он обратно меняет. На почту пароль поменять она не догадывается (в этом уж и ей нет оправдания).
А у меня снова руки зачесались заняться чем-то плохим, а тут опять есть моральное оправдание – N сам тут неграмотных обижает, значит если я получу доступ к его паролям – в этом ничего плохого не будет.
Так как мы договаривались не пользоваться физическим доступом к компьютеру, а также потому что повторять фокус с Live CD было бы уже не интересно, нужен менее тривиальный способ.
Взгляд падает на пару свитчей и кучу проводов, через которые работает интернет в нашей комнате.
Модификация сетевой инфраструктуры
Изначально конфигурация сети была такова:
IP-адреса статические, N выходит в интернет через шлюз 10.25.6.1. Я сижу за отдельным роутером для экспериментов. Таким образом у меня есть сеть 192.168.0.0/24 для размещения необходимых машин.
В первую очередь нужен роутер, который будет использоваться жертвой вместо провайдерского. Отдельной машины разумеется под это выделить нет возможности, поэтому делаю всё в VirtualBox.
Внутренним IP адресом для виртуального роутера будет 10.25.6.1 (так как именно к этому адресу будет подключаться жертва), что же делать с внешним? Получать интернет от провайдерского роутера он не может, так тогда диапазоны адресов внешней и внутренней сетей будут совпадать. Пусть внешним интерфейсом он будет подключён к моей приватной сети: 192.168.0.0/24.
В итоге: в VirtualBox установлен Debian, адрес внутреннего интерфейса: 10.25.6.1, внешнего: 192.168.0.u. Настраиваем на нём NAT.
Так как на ноутбуке, внутри которого запущен VirtualBox, фактически только один сетевой адаптер, то придётся схитрить. В настройках виртуальной машины соединим мостом оба интерфейса виртуальной машины с единственным интерфейсом реальной машины. Таким образом, в одном аппаратном сегменте теперь сосуществуют две логические сети: 192.168.0.0/24 и поддельная 10.25.6.0/24. На постоянной основе так делать не стоит, но в данном случае ничего страшного не случилось.
Также создаём ещё одну виртуальную машину, которая будет исполнять роль жертвы до тех пор, пока всё не будет отлажено, её тоже в режиме моста подключаем к той же внутренней сети.
Теперь сеть выглядит так (красными стрелочками показан маршрут пакетов от виртуальной жертвы до интернета):
Для реальной жертвы вместо первых двух стрелочек будет одна стрелка напрямую к свитчу – это произойдёт, если переключить провод N из комнатного свитча в свой, при этом жертва заметит только кратковременный разрыв связи.
Видно сразу много вещей, за которые сетевики меня, наверное, повесят:
- Один свитч используется в двух логических сетях, и, как следствие, пакет проходит через этот свитч дважды. То есть получается путь с самопересечением
- Пакет, за время своего пути, проходит через две разные сети 10.25.6.0/24, сначала через фэйковую, потом через настоящую
- traceroute от жертвы к какому-нибудь серверу в интернете покажет адрес 10.25.6.1 дважды, крайне нетипичная ситуация
Для проверки запускаем на жертве vkontakte.ru, на роутере tcpdump, и видим следующее:
Выключив виртуальную машину-жертву, переключаем кабель N из основного свитча в свой, через несколько секунд получаем cookies ВКонтакте. Введя печеньки в свой браузер, завершаем сессию (тут можно было вести себя осторожнее, но черт с ним!). Ещё через несколько минут пароль от ВКонтакте получен.
Схема сети в «боевом» состоянии:
Но простое прослушивание трафика ничего не даст, большинство сайтов передаёт пароли по протоколу https, таким образом максимум, что я получу – это пароль от ВКонтакте, который он потом восстановит через электронную почту, нужно что-нибудь поинтереснее.
Выводы
- используйте пароль на BIOS, или шифрование данных на винчестере (TrueCrypt)
- малое время включения блокировки компьютера по бездействию
- Вебмастера: не передавайте важные данные по http, используйте шифрование. Дуров, ты слышишь?
- Пользователи: не пользуйтесь сайтами, передающими ваши пароли по http
- Не будьте «плохими парнями», может быть ваш сосед как раз ждёт повода
Продолжение
Обход HTTPS