Дешевые авиабилеты… Сеть мошеннических сайтов, ворующих деньги с карт. Второе расследование. При чём тут Промсвязьбанк?

- КиТ :: Будь в СЕТИ!

Около месяца назад я опубликовал на Geektimes статью Публикация получила большой отклик и неожиданное продолжение… Напомню для тех, кто первую часть не читал

В публикации на основе реальных случаев были описаны схемы, с помощью которых мошенники воруют деньги с карт покупателей авиабилетов, которые имели неосторожность попасть на поддельный сайт по продаже билетов. Количество таких мошеннических сайтов по продаже авиабилетов в рунете исчисляется десятками и сотнями (с учетом закрытых). На таких сайтах пользователю сначала показывается реальная информация об авиарейсах, предлагается оформить заказ и оплатить его банковской картой. Всё выглядит красиво, пока покупатели авиабилетов не обнаруживают, что остались и без денег, и без билетов.

Во всех обнаруженных случаях для кражи денег такие сайты используют сервисы банков для перевода денег с карты на карту (P2P). В первой части был подробно разобран механизм того, как страница Банка Тинькова для оплаты с карты на карту маскируется и встраивается на мошеннические сайты, так, чтобы «покупатель» ничего не заметил. Также упоминался Промсвязьбанк, — именно через него были украдены деньги с карты потерпевшего в истории, которая была описана. И если с банком ТКС вопросов не осталось, то в случае с Промсвязьбанком было непонятно, как именно выводятся деньги. Основной скрипт, служащий для воровства денег, выполнялся на стороне сервера и без исходных кодов можно было только стоить предположения, что именно он делает.

И вот один из пользователей Geektimes связался со мной и прислал тот самый скрипт payp2p.php, который использовался в последнее время на большой части мошеннических сайтов по продаже авиабилетов. Скрипт этот использует сервис Промсвязьбанка для перевода с карты на карту. И на мой взгляд, Промсвязьбанк, предоставляя свой сервис, который было легко обмануть, способствовал росту количества интернет-мошенников.

Вероятно, есть и другие похожие банки, но в этой публикации в основном речь пойдет про Промсвязьбанк.

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

Так выглядела страница оплаты на мошеннических сайтах

При анализе HTML кода этой страницы оплаты я не обнаружил, никаких частей страниц каких-либо банков, не используются встраиваемые окна iframe, вообще не используются скрипты, а сама страница очень простая и не похожа на страницу Промсвязьбанка. Данные введенные в форму проверяются не скриптами, а встроенными в браузеры механизмами, — с помощью атрибутов «pattern» и «required» для полей ввода input и для раскрывающихся списков select. Т.е. даже страница, сохраненная в браузере на локальный диск, потом остается «работоспособной» и может использоваться для тестирования того, как перехватываются данные карты. Подобная сохраненная ранее страница и была использована в рамках этой публикации для того, чтобы понять как работает скрипт.

По сути это страница представляет собой только форму для ввода номера карты. При подтверждении формы обработка передается программе payp2p.php. Программа payp2p.php может делать что угодно. Код ее нам ранее был недоступен, поскольку он выполняется на стороне сервера. Но как я уже писал, теперь у нас появился код, и мы узнаем всё.

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

Как видно, страница Промсвязьбанка совсем не похожа на страницу оплаты, представленную ранее. Даже количество полей ввода номера карты не совпадает.

Посмотрим HTML код страницы Промсвязьбанка, чтобы разобраться, как она устроена. Все что нам нужно знать находится в этих нескольких строчках: Этот кусок означает, что реальная страница оплаты расположена на другом домене, а то, что мы видим на сайте Промсвязьбанка отображается в «окне» с помощью технологии iframe.

Домен 3ds.payment.ru тоже принадлежит Промсвязьбанку. Этот домен мы запомним, он нам еще встретится в описании и не раз.

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

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

В HTML коде этой страницы нам интересна вот эта часть: Это скрытые поля ввода, для хранения служебной информации. Мы эту страницу тоже запомним. А где она используется, будет рассказано позже.

Вводная часть закончена, давайте перейдем к самому интересному и разберемся, как работает или как работал скрипт payp2p.php.

Скрипт простой и для его понимания не требуется каких-то глубинных знаний языка программирования PHP. Для удобства разбора я разбил его на части. Слева указываются номера строк, на которые можно ссылаться. Скрипт приводится полностью без изменений в том виде, в котором был получен. После каждого куска кода будет представлена расшифровка и пример значений переменных во время исполнения программы (т.е. что-то похожее на отладку). В некоторых местах возможно избыточное комментирование, — это сделано для того, чтобы читатели, не связанные с программированием, тоже могли понять смысл программного кода.

Для тестирования нам понадобится форма, в которую нужно будет ввести данные карты, с которой предполагается оплата. Воспользуемся сохраненной ранее формой. Как выглядела форма на мошенническом сайте показано в картинке в начале статьи. Про форму будет еще дополнительно написано ниже. Для тестирования введем номер карты 1111.2222.3333.4444.

Начнем. Строка 3 — никакие команды не выполняет.

Строка 4 — Подгружается отдельный файл dbconfig.php в котором хранятся параметры для подключения к базе данных MySQL. Скриншот кода dbconfig.php и его разбор есть ниже.

Строка 6 — подключаемся к серверу MySQL, в базе которого потом будем хранить данные об украденных картах и о проведенных денежных переводах. В этой строке одновременно происходит подключение к серверу MySQL и выход из программы, если подключение по какой-то причине не удалось.

Строка 11 — выбираем кодировку для работы с базой MуSQL.

Строка 13 — К серверу MySQL мы подключились ранее, теперь выбираем базу данных, с которой будем работать.

Скрипт payp2p.php начинает свою работу после того, как обманутый пользователь на странице похожей на обычную страницу онлайн-оплаты заполняет форму. По нажатию на форме кнопки «Оплатить», скрипт payp2p.php получает данные введенные в форме. Данные из формы в скрипт передаются методом POST.

Строка 16 — в переменную $num сохраняется номер кредитной карты, введенный в форме на предыдущей странице.

Строка 17 — в переменную $date сохраняется Месяц / Год срока действия карты.

Строка 18 — в переменную $cvv сохраняется CVV код карты.

Строка 19 — в переменную $code сохраняется некий сформированный ранее при оформлении «заказа на авиабилеты» код. Этот код используется для того, чтобы пользователь мог просмотреть свой заказ по специальной ссылке. Этот же код используется для идентификации заказа (на странице оплаты, чтобы автоматически выводить сумму для оплаты; при сохранении в «книгу продаж» которую ведут мошенники; также этот код передается в платежную форму, вероятно, как идентификатор перевода (об этом ниже).

Строки 21-22 Формируется строка — SQL запрос, который затем выполняется. SQL запрос добавляет в таблицу 'card' значения идентификатора заказа, суммы, срока действия карты, CVV кода карты, и точное текущее время. Пример записи в БД есть ниже. Строка 40 — переменной $p112 присваивается значение с номером карты, который был введен ранее в форме.

Строки 41-51 — Номер карты разбивается на части по четыре цифры.

Строки 53-57 — Проверяется длина номера карты. Если в номере карты число знаков отличается от 16 или 18, то происходит выход. Пять секунд отображается сообщение, затем происходит переадресация на другую страницу. В данном примере возврат будет на страницу с заказом на мошенническом сайте.

В строке 56 «Iaaa?iua aaiiua ea?ou» при конвертации кодировки ISO8859-1 =>Windows-1251 соответствует тексту: «Неверные данные карты».

Строки 58-61 — переменным $p4, $p5, $p6, $p11 присваиваются значения, введенные ранее в форме (срок действия карты, код CVV, сумма оплаты).

Строка 63 — В переменной $info сохраняются все данные карты и сумма перевода. При формировании используются переносы строк "\n" и разделители "###...". Эта переменная нигде не в дальнейшем не используется. При доработке скрипта, её можно использовать для сохранения записей в обычный текстовый файл или для вывода на экран при отладке. Строки 66-75 — Это фактически дублирование блока строк 27-36. Еще раз выбирается случайным образом карта получателя из конфигурационного файла aviacfg.php, и все это сохраняется в таблицу базы да

ПодпискаБудь в СЕТИ! Новости социальных сетей - всегда актуальное
 
Группы: ВК | OK | Tg