В каталоге PyPI, официальном хранилище пакетов для языка Python, обнаружили пакет saeka. Внешне он не отличается от рядовой библиотеки, однако внутри собраны функции для кардинга. Так называют проверку украденных номеров банковских карт и оплату ими товаров в интернет-магазинах. Установка не заражает компьютер: пакет ставят добровольно, чтобы вести преступную деятельность. Значит, открытый каталог выступил не источником заражений, а каналом сбыта криминального программного обеспечения.
Описание
Кардинг опирается на сведения, которые попадают в подпольные магазины после утечек и считывания данных на банкоматах и платёжных терминалах. Номера карт продают наборами, и покупатель заранее не знает, какие из них рабочие. Полный цикл умещается в одну команду, отмечает центр реагирования на инциденты компании ESTsecurity: проверка номера, отсев пустых карт и оплата товара. Страница пакета почти пуста, описание состоит из одной короткой строки, поэтому по внешнему виду судить о назначении нельзя. После установки в системе появляется отдельная команда запуска. Программа просит пароль, причём несколько паролей заранее вписаны в код в закодированном виде. Такая проверка отсекает случайных людей, а доступ получают участники закрытого сообщества, которые передают пароль друг другу. Номер версии дошёл до 15.0, значит, инструмент развивают давно. Обновления он забирает из связанного проекта на GitHub: свежий выпуск подтягивается автоматически, после чего работа продолжается.
Три шага проверки карты
Первый шаг - запрос к стороннему сервису, который подтверждает существование номера. Второй - получение платёжного идентификатора у провайдера. Обе операции возвращают только статус и денег не списывают. Ущерб наносит третий шаг, покупка в реальном магазине. В коде заранее прописаны адреса более двухсот магазинов на платформе Shopify: одежда, косметика, электроника, товары для дома. Программа собирает доступные товары, открывает страницу оплаты средствами автоматизации браузера и подставляет данные карты. Затем она читает ответ магазина и раскладывает результат по четырём категориям: оплата прошла, отказ, запрос дополнительного подтверждения, остановка защитой от роботов. Для отказов сохраняется причина, например нехватка средств или истёкший срок карты. Дополнительное подтверждение 3-D Secure, при котором банк требует пароль или одноразовый код, автоматике пройти трудно, поэтому такие карты откладывают отдельно.
Чтобы платёж не остановили системы контроля, пакет скрывает признаки автоматического управления браузером. Он перебирает промежуточные серверы (прокси) разных типов и меняет адреса, с которых уходят запросы. Сведения о доставке программа придумывает сама: берёт настоящие почтовые индексы крупных городов США и составляет правдоподобные имена, адреса, телефоны и ящики на популярных почтовых доменах. Успешные номера, рабочие карты и ссылки на страницы оплаты сохраняются в отдельные файлы. Такие наборы потом перепродают или пускают в дело повторно.
Своей инфраструктуры у авторов почти нет. Пакет лежит на публичном каталоге, версии ведутся на GitHub, проверка номеров идёт через чужие сервисы, сведения о банке-эмитенте берутся из открытых справочников. Из-за этого блокировка одного адреса схему не останавливает: запросы уходят на крупные легальные площадки, где затеряться проще. Одновременно такая сборка снижает расходы на поддержку инструмента.
Кому вредит инструмент
Ущерб распределяется неравномерно. Владелец карты теряет деньги в момент списания. Магазин лишается товара и платит комиссию за возврат платежа по требованию покупателя (чарджбэк). Кроме того, при росте доли мошеннических заказов он рискует потерять право принимать карты. Платёжный провайдер тратится на обработку спорных операций и разбирательства. Сам пользователь инструмента тоже не защищён: сторонний сервис проверки видит все номера, которые через него пропускают.
Открытые каталоги пакетов давно привлекают злоумышленников, но раньше речь шла о заражении разработчиков. Здесь схема иная: вред возникает за пределами компьютера, куда поставили программу. Сдерживать такую активность приходится сразу нескольким сторонам. Каталогам нужны более строгие правила проверки загружаемых пакетов, особенно тех, что не имеют описания. Платёжным провайдерам полезно отслеживать массовые попытки списаний с одного адреса. Магазинам - сверять адрес доставки с данными карты. Держателям карт остаётся следить за выписками и подключать подтверждение операций.