Последние три дня примечательны тем, что в сеть попали три больших базы аккаунтов пользователей почты Яндекса, 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 года.
В любом случае, хотелось бы напомнить – будьте предельно внимательны, это основа вашей безопасности в сети.
Автор: m0s