Tabnabbing: экстравагантный фишинг
Последние три дня примечательны тем, что в сеть попали три больших базы аккаунтов пользователей почты Яндекса, Mail.ru и Gmail.Многие пользователи хабра, равно как и других тематических ресурсов по вопросам безопасности, сходятся во мнении, что аккаунты, вероятнее всего, попали в базы либо в результате заражения компьютеров пользователей «троянами», либо же в результате фишинговых атак.
На волне этих горячих обсуждений хотел бы рассказать об одном из красивых способов похищения данных пользователя, достаточно старом, но до сих пор актуальном, о котором на хабре как-то не писали.
В 2010 году Аза Раскин, сын Джефа Раскина, поделился в своем блоге очень интересным, как мне кажется, методом фишинга, который он назвал Tabnabbing.
Его суть в следующем:1. Атакующий привлекает пользователя на страницу своего сайта, которая выглядит абсолютно нормальной и такой, какой пользователь ожидает её увидеть.2. Атакующий определяет, что пользователь длительное время не взаимодействовал со страницей, или вообще переключился на другую вкладку.3. Пока страница неактивна — подменяется ее favicon на иконку сайта, под который она будет маскироваться.4. Контент страницы меняется на контент фейковой формы логина сайта, под который она маскируется.5. С определенной достаточно большой долей вероятности пользователь, вернувшись ко вкладке — не задумываясь, автоматически введет свои логин и пароль.6. После перехвата данных авторизации — пользователя можно просто переадресовать на атакуемый сайт, ведь вероятнее всего он на нем уже авторизован и именно этого поведения он и будет ожидать.Реализация Прототип кода, который отслеживает поведение пользователя может выглядеть как-то так: window.onblur = function (){ TIMER = setTimeout (time_to_change, 5000); }
window.onfocus = function (){ if (TIMER) clearTimeout (TIMER); }
function time_to_change () { if (HAS_SWITCHED == false){ change_content (); change_title («Gmail: Email from Google»); set_favicon («https://mail.google.com/favicon.ico»); HAS_SWITCHED = true; } } То есть, сам перехват поведения пользователя — достаточно тривиален, и не замысловат. Далее, функция change_content () отвечает за создание новых элементов DOM-дерева, которые будут отображены поверх оригинального контента страницы.
А если вы любите понастальгировать: Аза Раскин в своем посте, посвященному этой теме, реализовал пример этого поведения, и если вы переключите вкладку с постом — вернувшись в нее вы получите скриншот страницы авторизации Gmail образца 2010 года.В любом случае, хотелось бы напомнить — будьте предельно внимательны, это основа вашей безопасности в сети.