Элек­трон­ные кошель­ки Google Pay, Samsung Pay и Apple Pay счи­тают­ся наибо­лее сов­ремен­ными пла­теж­ными инс­тру­мен­тами. Одна­ко они тоже под­верже­ны уяз­вимос­тям, пос­коль­ку все еще зависят от тех­нологий, соз­данных трид­цать лет назад. В сегод­няшней статье я рас­ска­жу о методах взло­ма популяр­ных элек­трон­ных кошель­ков, а так­же рас­крою детали новой ата­ки на кошель­ки и кар­ты EMV/NFC — Cryptogram Confusion.
 

Предыстория

Ес­ли прос­ледить эво­люцию стан­дарта EMV, то вна­чале были чиповые смарт‑кар­ты. Затем эти кар­ты оснасти­ли антенной и прев­ратили в бес­контак­тные кар­ты, унас­ледовав­шие поч­ти все фун­кции от EMV. Но кар­точным брен­дам это­го было мало, и в 2011 году уже сущес­тво­вав­ший тог­да Google Wallet оснасти­ли фун­кци­ей бес­контак­тной опла­ты с помощью NFC.

Google исполь­зовала под­ход Host-Card Emulator (HCE), ког­да конеч­ное устрой­ство не содер­жит в себе все при­ват­ные и сим­метрич­ные клю­чи шиф­рования по ана­логии со смарт‑кар­той, а вре­мя от вре­мени заг­ружа­ет одно­разо­вые клю­чи (Single-Use Key, SUK) для каж­дой сле­дующей опе­рации. При­дер­жива­ясь это­го под­хода до сих пор, телефо­ны с Google Pay не поз­воля­ют совер­шать боль­ше двад­цати опе­раций без под­клю­чения к интерне­ту. В 2012 году Samsung и Apple пред­ста­вили свои кошель­ки с исполь­зовани­ем тех­нологии Secure Element. Работа­ют они по ана­логии со смарт‑кар­тами, где физичес­ки и логичес­ки защищен­ный чип гаран­тиру­ет защиту от перех­вата, чте­ния, переза­писи сек­ретных клю­чей, на осно­ве которых соз­дают­ся 3DES-крип­тограм­мы EMV и под­писыва­ются дан­ные с помощью асим­метрич­ного RSA.

В прош­лом Сла­вомир Ясек по­казы­вал при­мер успешно­го перено­са Google Pay с одно­го устрой­ства на дру­гое. При этом сох­ранялась воз­можность получать клю­чи SUK с сер­веров Google не на ори­гиналь­ное устрой­ство. Питер Фил­лмор (Peter Fillmor) так­же деталь­но рас­смат­ривал устрой­ство Apple Pay. Я в 2017 году демонс­три­ровал на кон­ферен­ции Black Hat USA реп­лей ата­ки на онлайн‑крип­тограм­мы Apple Pay.

Два года назад я начал иссле­довать безопас­ность мобиль­ных кошель­ков при опла­те с помощью NFC. На тот момент Google Pay был единс­твен­ным кошель­ком, поз­воля­ющим пла­тить устрой­ством с заб­локиро­ван­ным экра­ном. Я очень быс­тро смог при­менить ата­ку, которую исполь­зовал для бес­контак­тных карт Visa, что­бы обой­ти лимиты NoCVM или Tap & Go (в Рос­сии они сос­тавля­ют 3000 руб­лей). Для это­го было необ­ходимо лишь акти­виро­вать экран на заб­локиро­ван­ном телефо­не. Если телефон все еще у вла­дель­ца в кар­мане, это мож­но сде­лать, отпра­вив коман­ду по Bluetooth или Android Beam. Нес­мотря на заяв­ления экспер­тов, что «фор­маты и про­токо­лы работы бес­контак­тных карт раз­ных меж­дународ­ных сис­тем прин­ципи­аль­но не раз­лича­ются», я катего­ричес­ки с этим не сог­ласен, ведь при­менить такую же ата­ку про­тив MasterCard мне не уда­лось.

В кон­це 2019 года Samsung и Apple пред­ста­вили под­дер­жку «тран­спортных схем» в круп­ных мегапо­лисах: Нью‑Йор­ке, Токио, Лон­доне. Во мно­гих тран­спортных сис­темах опла­та зависит от даль­нос­ти поез­дки, при этом финаль­ная сум­ма пла­тежа выс­читыва­ется исхо­дя из точ­ки вхо­да в мет­ро и точ­ки выхода. Поэто­му сни­мать стан­дар­тную сум­му при пер­вом «тапе» кар­ты или кошель­ка некор­рек­тно. Далее, нес­мотря на ста­биль­ное под­клю­чение тур­никетов к интерне­ту, они не зап­рашива­ют авто­риза­цию тран­закций онлайн, потому что соеди­нение занима­ет дол­гое вре­мя. Вмес­то это­го исполь­зует­ся асин­хрон­ная авто­риза­ция. А что­бы про­тиво­дей­ство­вать мошен­ничес­тву, при­меня­ется офлайн‑аутен­тифика­ция по сов­ремен­ному стан­дарту CDA, опи­сан­ному еще в спе­цифи­каци­ях EMV. Я уже рас­ска­зывал о прин­ципе работы CDA в статье «Близ­кие кон­такты. Раз­бира­емся, как работа­ют сис­темы безопас­ности кре­дит­ных карт».

На­конец, пос­ледняя проб­лема элек­трон­ных кошель­ков — это необ­ходимость раз­бло­киро­вать телефон Apple или Samsung каж­дый раз, ког­да ты под­ходишь к тур­никету мет­ро. Край­не неудоб­но, не прав­да ли? Имен­но поэто­му и Samsung, и Apple сде­лали воз­можность пла­тить на тран­спор­те без раз­бло­киров­ки телефо­на.

 

Токенизация

Мо­биль­ные кошель­ки сущес­тву­ют бла­года­ря тех­нологии токени­зации: кар­та добав­ляет­ся в мобиль­ный кошелек, дан­ные отсы­лают­ся меж­дународ­ной пла­теж­ной сис­теме, которая пос­ле под­твержде­ния всех рек­визитов соз­дает «вир­туаль­ную кар­ту». Она может работать толь­ко по NFC, при­чем толь­ко на том устрой­стве, на котором кар­та была добав­лена. Но это в теории.

Технология токенизации
Тех­нология токени­зации

Пре­иму­щес­тво мобиль­ного кошель­ка сос­тоит в том, что исполь­зование токенов огра­ниче­но. В слу­чае ком­про­мета­ции токена зло­умыш­ленни­ки не могут исполь­зовать укра­ден­ные дан­ные вир­туаль­ной кар­ты, что­бы соз­дать клон маг­нитной полосы или пла­тить такой кар­той в интерне­те. Имен­но поэто­му бан­ки, кар­точные брен­ды и круп­ные про­изво­дите­ли мобиль­ных кошель­ков (Apple, Google, Samsung, Huawei и про­чие) в один голос утвер­жда­ют, что безопас­ность мобиль­ных кошель­ков находит­ся на высоте.

На­чиная с момен­та замеще­ния кар­ты токеном бан­ки‑эми­тен­ты перес­тают играть сущес­твен­ную роль в авто­риза­ции тран­закций и риск‑менед­жмен­те. Да, они получа­ют информа­цию о мес­тополо­жении и типе мер­чанта, сум­ме, дате тран­закции. Одна­ко все крип­тогра­фичес­кие фун­кции и ана­лиз полей EMV перено­сят­ся на токени­затор (Visa VTS или MasterCard MDES). Код, который исполня­ется в мобиль­ном кошель­ке, так­же написан, ауди­рован и сер­тифици­рован одной из МПС. Apple или Samsung вро­де и ни при чем — они выс­тупа­ют фасадом, но всю работу за них дела­ют МПС. А бан­ку‑эми­тен­ту ста­новит­ся труд­нее судить о мошен­ничес­ких опе­раци­ях из‑за недос­татка дан­ных.

По­это­му опе­рации с исполь­зовани­ем мобиль­ных кошель­ков, в отли­чие от бан­ков­ских карт, поч­ти никог­да слу­чай­но не бло­киру­ются сис­темами антифро­да. Имен­но в этом и кро­ется одна из основных проб­лем: ответс­твен­ные за про­цесс пла­тежа скры­ты внут­ри самого это­го про­цес­са, а сущ­ности сна­ружи (банк‑эми­тент, мер­чант, мобиль­ный кошелек) име­ют огра­ничен­ные воз­можнос­ти для при­нятия решений.

Схема платежа при помощи электронного кошелька
Схе­ма пла­тежа при помощи элек­трон­ного кошель­ка
 

Атакуем Samsung Pay

Samsung пошел по прос­тому пути: при акти­вации тран­спортной кар­ты NFC всег­да работа­ет на телефо­не, и все про­вер­ки, пред­назна­чен­ные для того, что­бы отли­чить пла­теж­ный тер­минал в супер­марке­те от тер­минала в мет­ро, совер­шают­ся на эта­пе фазы пла­тежей EMV/NFC.

Быс­тро добавив кар­ту Visa и уста­новив ее как тран­спортную в телефо­не, я воору­жил­ся Proxmark3 и отпра­вил­ся в мет­ро, что­бы записать дан­ные о тран­закции и срав­нить зап­росы от тер­минала в мет­рополи­тене с зап­росами от обыч­ного пла­теж­ного тер­минала.

Глав­ная коман­да в дан­ном слу­чае — зап­рос тер­минала на генера­цию крип­тограм­мы (Generate AC) и ответ кошель­ка:

->
80a80000438341 заголовок Generate AC
23004000 поле Terminal Transaction Qualifier (обязательна офлайн-аутентификация CDA)
54664c20426f6e6420537472656574 (TfL Bond Street) Merchant Name and Location
9f4bxxxxxxx — данные для офлайн-аутентификации
000000000000000000000000 0826 0000000000 0826 200331 00 4bee1439000 сумма 0,00, валюта, дата транзакции и другие поля
<-
9f2701 80 тип криптограммы (онлайн-криптограмма, ARQC)
9f3602 000e счетчик операций, ATC
9f1020 1f4363 00200000000000000000002172000 поле CVR Card Verification Results (среди прочего указывает совершенный способ верификации, тип представленной криптограммы, ARQC)
9f2608 a83f66d03cc20d45 — онлайн-криптограмма

Для пла­теж­ных тер­миналов, авто­ризу­ющих пла­тежи онлайн, бес­контак­тные кар­ты Visa не тре­буют офлайн‑аутен­тифика­ции. Но в дан­ном слу­чае она обя­затель­на. Так­же телефон про­веря­ет сум­му: если она не рав­на 0.00, то тран­закция не прой­дет. Но телефон не смот­рит на имя мер­чанта или катего­рию про­дав­ца (MCC — Merchant Category Code).

Ес­ли пла­теж про­исхо­дит в обыч­ном тер­минале, офлайн‑аутен­тифика­ция не будет зат­ребова­на и сум­ма будет отличной от 0.00. В этом слу­чае телефон вер­нет сле­дующий ответ:

<- 6985 (Conditions of use not satisfied)

Я решил не отча­ивать­ся и добавил кар­ту MasterCard, сно­ва вер­нулся в мет­ро и про­вел те же опе­рации:

->
80ae900041 заголовок Generate AC (обязательна офлайн-аутентификация CDA)
000000000000000000000000 сумма равна 0.00
4111 код MCC из категории «Транспорт»
082600200000000826210307006359313725000000000000000000003f0002 — остальные поля
<-
9f2701 80 тип криптограммы (онлайн-криптограмма, ARQC)
9f3602 000f счетчик операций, ATC
9f4bxxxxxxx — данные для офлайн-аутентификации, содержащие
9f101a 02158000002200000000000000000000000A поле CVR (тип криптограммы ARQC)
9f2608 02d8b8f76b5c29fc — онлайн-криптограмма

Для карт MasterCard офлайн‑аутен­тифика­ция по бес­контак­тным кар­там обя­затель­на прак­тичес­ки в каж­дой стра­не и под­держи­вает­ся каж­дой бес­контак­тной кар­той. Если она не будет успешна, тер­минал обя­зан прер­вать такую тран­закцию. Поэто­му телефон про­веря­ет два поля: сум­му и код MCC.

Ес­ли пла­теж дела­ется в обыч­ном тер­минале, сум­ма будет отли­чать­ся от 0.00 и код тер­минала ока­жет­ся не из катего­рии «Тран­спорт». В этом слу­чае телефон вер­нет такой ответ:

<-
9f2701 00 — тип криптограммы (AAC, криптограмма отказа)
9f3602 000e счетчик ATC, следующее значение от предыдущего
9f101a 02158000002200000000000000000000000A CVR (тип криптограммы AAC)
9f2608 02d8b8f76b5c29fc AAC Cryptogram

Тут уже что‑то инте­рес­ное. Напом­ню, что крип­тограм­ма — это 3DES HMAC от некото­рых полей, пред­став­ленных тер­миналом в зап­росе Generate AC, и зна­чений в самой кар­те, нап­ример ATC. Моя пер­вая догад­ка: а что, если клю­чи и алго­ритм каль­куляции крип­тограм­мы AAC точ­но такие же, как и для ARQC? Ведь счет­чик тран­закций уве­личи­вает­ся каж­дый раз на 1, даже при воз­вра­те AAC-крип­тограм­мы. Если мы поменя­ем поле 9f27 на 0x80, крип­тограм­ма будет при­нята тер­миналом и отправ­лена на токени­заци­онный хост MasterCard для авто­риза­ции. И если этот хост не про­веря­ет зна­чения фла­гов в поле CVR, где все еще вид­но, что тип крип­тограм­мы дру­гой, тран­закция будет одоб­рена.

Зву­чит как план, но у меня была проб­лема: модифи­кация любых полей во вре­мя обще­ния тер­минала и кошель­ка будет замече­на при офлайн‑аутен­тифика­ции CDA. Тут мне на помощь приш­ла тех­ника, сов­сем недав­но най­ден­ная «швей­цар­ски­ми уче­ными» (с). Они обна­ружи­ли, что обя­затель­ную офлайн‑аутен­тифика­цию мож­но обой­ти, прит­ворив­шись кар­той Visa, и исполь­зовали эту тех­нику для обхо­да ПИН‑кода.

Пер­вый план ата­ки соз­рел:

  1. Бе­рем устрой­ство man in the middle для модифи­кации дан­ных меж­ду телефо­ном и тер­миналом.
  2. Про­водим ата­ку Card Brand Mixup — кар­та MasterCard прит­воря­ется кар­той Visa (как это делать — читай в иссле­дова­нии Card Brand Mixup Attack, PDF).
  3. На пос­леднем шаге при­меня­ем ата­ку Cryptogram Confusion: ког­да кошелек воз­вра­щает крип­тограм­му типа 0x00 (AAC), мы меня­ем зна­чение поля 9f27 на 0x80 (ARQC). Я был при­ятно удив­лен тем, что в кон­це кон­цов ата­ка Cryptogram Confusion прош­ла и тран­закция была одоб­рена. Вот виде­оза­пись этой ата­ки.

Мож­но ли как‑то совер­шать пла­тежи по кар­там Visa и дру­гим, нап­ример American Express, если телефон заб­локиро­ван? Не обна­ружив никако­го дру­гого спо­соба получе­ния крип­тограм­мы, кро­ме зап­роса авто­риза­ции на сум­му 0.00, я решил вос­поль­зовать­ся ата­кой Transaction Stream Manipulation. В ходе этой ата­ки дан­ные под­меня­ются не меж­ду тер­миналом и кар­той или кошель­ком, а меж­ду тер­миналом и бан­ком‑эквай­ером, в зап­росе ISO8583 Authorisation Request. В этом слу­чае у зло­умыш­ленни­ка боль­ше воз­можнос­тей для манипу­ляции полями. Нап­ример, поле «сум­ма» фигури­рует в этом зап­росе дваж­ды: в пер­вый раз в поле [55] — там, где соб­раны все поля EMV, а во вто­рой раз — в поле [04], где ука­зыва­ется реаль­но спи­сыва­емая сум­ма.

В таком слу­чае ата­ка на дру­гие кар­ты, в том чис­ле Visa, выг­лядит сле­дующим обра­зом:

  1. Зап­рашива­ем крип­тограм­му на 0.00 так же, как ее зап­рашива­ет тер­минал в мет­ро.
  2. Соз­даем зап­рос ISO8583, где ука­зыва­ем кор­рек­тные поля (сум­ма — 0.00, крип­тограм­ма и так далее), но в поле [04] ука­зыва­ем ту сум­му, которую хотим спи­сать с кар­ты.

Хо­тя кошелек с кар­той Visa передал информа­цию о том, что телефон не был раз­бло­киро­ван, эта тран­закция была одоб­рена Visa Tokenisation Service.

 

Атакуем Apple Pay

Ког­да‑то кор­порация Apple объ­явля­ла, что про­изво­димые ею телефо­ны научи­лись под­держи­вать пла­тежи с заб­локиро­ван­ным экра­ном, на нес­коль­ко месяцев рань­ше сво­их кон­курен­тов. Одна­ко мне дол­гое вре­мя не уда­валось про­верить их безопас­ность. Основная заг­воз­дка была в том, что телефон не акти­виро­вал поле NFC с помощью обыч­ных тер­миналов и бес­контак­тных ридеров. Я упор­но гуг­лил, как работа­ет Apple VAS (Value Additional Services) и пытал­ся поль­зовать­ся помощью кол­лег для ревер­са бинарей Apple Pay (их наз­вания я поза­имс­тво­вал из пре­зен­тации Питера Фил­лмо­ра). Ког­да я про­водил опе­рации в мет­ро, Proxmark3 не записал никаких допол­нитель­ных дан­ных, что при­вело меня в рас­терян­ность.

Ког­да я закон­чил тес­ты с Samsung Pay, я все еще не знал, что делать с Apple Pay, и был в отча­янии. Единс­твен­ным тер­миналом, которым я мог поль­зовать­ся на тот момент, был тер­минал у тур­никета мет­ро. Я решил: если я смо­гу записать крип­тограм­му тран­закции в мет­рополи­тене, но сама тран­закция не прой­дет, то я при­ду домой и поп­робую вста­вить крип­тограм­му в Transaction Stream, как это делалось с вари­антом Samsung + Visa. Пос­ле нес­коль­ких попыток мне уда­лось пов­торить ата­ку вто­рого типа по отно­шению к связ­ке Apple + Visa.

Тог­да же один умный инже­нер дал мне совет не исполь­зовать Proxmark3, а взять что‑то более надеж­ное, нап­ример HydraNFC. Пос­ледовав это­му совету, я быс­тро уви­дел в тра­фике «неч­то» — 15 байт, которые отсы­лались до пер­вых команд. Тог­да мне было труд­но поверить, что все­го 15 байт раз­бло­киру­ют NFC в iPhone, так как я мно­го читал в патен­тах про PKI, исполь­зуемые Apple в VAS. Но это дей­стви­тель­но ока­залось имен­но так: все­го 15 байт, и телефон поз­волял читать дан­ные по NFC даже с раз­ряжен­ных устрой­ств.

Пос­мотрим, как выг­лядит генера­ция крип­тограм­мы кар­той MasterCard, задан­ной как тран­спортная кар­та в Apple Pay:

->
80ae900041 заголовок Generate AC (обязательна офлайн-аутентификация CDA)
000000000000000000000000 сумма равна 0.00
4111 код MCC из категории «Транспорт»
082600200000000826210307006359313725000000000000000000003f0002 — остальные поля

В отли­чие от Samsung, Apple вер­нет онлайн‑крип­тограм­му, даже если сум­ма не будет рав­на 0.00 (сот­рудни­ки Apple заяви­ли, что исполь­зуют или собира­ются исполь­зовать эту фун­кцию, так что «это не баг»).

Од­нако при под­мене кода MCC тран­закция будет откло­нена из‑за CDA. Пос­ле июня 2021 года MasterCard зак­рыла воз­можность Card Brand Mixup Attack, поэто­му опла­тить в про­изволь­ном тер­минале этой кар­той не удас­тся. Но я все еще мог про­водить ата­ки с исполь­зовани­ем Transaction Stream Manipulation.

А что же с кар­тами Visa? Ими мож­но рас­пла­чивать­ся в любом супер­марке­те мира по заб­локиро­ван­ному iPhone, для это­го нуж­но лишь под­менить нес­коль­ко бай­тов при обме­не меж­ду тер­миналом и телефо­ном. Да ты и сам об этом уже, ско­рее все­го, читал: иссле­дова­тели из уни­вер­ситетов Бир­минге­ма и Сур­рея обна­ружи­ли эту уяз­вимость незави­симо от меня при­мер­но в это же вре­мя. Эта уяз­вимость до сих пор сущес­тву­ет, нес­мотря на то что для ее устра­нения Visa нуж­но добавить все­го лишь одно малень­кое усло­вие в сво­ем токени­заци­онном сер­висе.

 

Атакуем Google Pay

Мы уже показы­вали в 2019 году, как мож­но совер­шать пла­тежи на заб­локиро­ван­ном кошель­ке Google Pay по кар­там Visa выше лимитов NoCVM: для это­го нуж­но лишь поменять бит в поле TTQ, ука­зыва­ющий, что тре­бует­ся верифи­кация пла­тель­щика. Обой­ти огра­ниче­ния по кар­там MasterCard в прош­лый раз не уда­лось, поэто­му я решил поп­робовать еще. Вмес­то модифи­кации Transaction Stream я вос­поль­зовал­ся ста­рой ата­кой, опи­сан­ной Май­клом Ролан­дом (Michael Roland) в 2013 году, — Pre-play and Downgrade (в пре­дыду­щей статье я по ошиб­ке написал, что ата­ку раз­работал Питер Фил­лмор в 2014 году, но это не так).

Для меня оста­валось загад­кой, почему режим M-STRIPE до сих пор работа­ет в кошель­ках Google Pay для всех карт MasterCard. Я решил иссле­довать его чуть пог­лубже — пос­мотреть на мак­сималь­ную энтро­пию, защиту от скач­ков ATC и дру­гие механиз­мы защиты.

Вы­ясни­лось сле­дующее.

  1. Мак­сималь­ная энтро­пия по кар­там — 1000 или 10 000. Дру­гих нас­тро­ек я не встре­тил. Напом­ню, что кар­та или кошелек с энтро­пией 1000 кло­ниру­ется пол­ностью за 1000 зап­росов, на это ухо­дит око­ло минуты. Далее зло­умыш­ленни­ку не нужен ори­гиналь­ный телефон — он может совер­шать покуп­ки с исполь­зовани­ем той информа­ции, которая была кло­ниро­вана. Количес­тво тран­закций зависит от дру­гих внед­ренных мер безопас­ности.
  2. Ог­раниче­ния NoCVM на заб­локиро­ван­ном телефо­не обхо­дят­ся так­же под­меной 1 бита в зап­росе от тер­минала, что поз­воля­ет совер­шать пла­тежи выше 3000 руб­лей. У некото­рых тер­миналов, одна­ко, есть отдель­ная кон­фигура­ция, ука­зыва­ющая мак­сималь­ную сум­му пла­тежа в легаси‑режиме M-STRIPE.
  3. Ес­ли в обыч­ной кар­те счет­чик ATC идет пос­ледова­тель­но: 0001, 0002 и так далее, то для мобиль­ного кошель­ка сис­тема MasterCard внед­рила так называ­емый CryptoATC. При перех­вате команд они выг­лядят как слу­чай­ные зна­чения из 2 байт A56D, F1A1 и так далее. В про­цес­се детоке­низа­ции МПС прев­раща­ет эти зна­чения в пос­ледова­тель­ные. Одна­ко даже при скач­ках в 30–50–100 зна­чений счет­чика мои тран­закции не были заб­локиро­ваны.

Из‑за новых тре­бова­ний PSD2 в Евро­пе Android огра­ничи­вал количес­тво тран­закций на заб­локиро­ван­ном телефо­не до пяти (сей­час это зна­чение — три или ноль, зависит от стра­ны). Это зас­тавило меня задумать­ся: если MasterCard и Google не про­веря­ют скач­ки ATC, записав толь­ко пять тран­закций, какова веро­ятность вос­про­извести одну из них успешно?

Вос­поль­зуем­ся фор­мулой Бер­нулли, отлично нарисо­ван­ной Арка­дием Лит­винен­ко спе­циаль­но для таких слу­чаев.

Формула Бернулли в исполнении Аркадия Литвиненко
Фор­мула Бер­нулли в исполне­нии Арка­дия Лит­винен­ко

При энтро­пии 1000, если совер­шить 50 попыток опла­ты в супер­марке­те, веро­ятность получить слу­чай­ное чис­ло из пяти записан­ных сос­тавит 14%. Для 100 попыток — 26%. А при наличии дос­тупа к Transaction Stream каж­дая из этих записан­ных тран­закций может быть монети­зиро­вана, ведь зло­умыш­ленник в сос­тоянии соз­дать зап­рос на авто­риза­цию, где сам выс­тавит и слу­чай­ное чис­ло, и зна­чения CVC3/ATC.

Бо­лее того, в слу­чае дос­тупа к Transaction Stream и при отсутс­твии защиты от перебо­ра пар ATC/CVC3, если у зло­умыш­ленни­ка есть толь­ко токен (16 цифр вир­туаль­ной кар­ты и expiry date), ему пот­ребу­ется мак­симум 65 535 попыток, что­бы соз­дать и успешно авто­ризо­вать мошен­ничес­кую тран­закцию.

Ес­ли все, что нуж­но сде­лать мошен­никам в дан­ном слу­чае, — быть нас­той­чивыми, «тапая» в супер­марке­те 50–100 раз, каж­дый раз ожи­дая успе­ха, или посылать зап­росы на авто­риза­цию на сер­веры токени­зации MasterCard MDES, то успех, увы, им гаран­тирован.

 

Итоги

Я обна­ружил нес­коль­ко спо­собов ата­ковать укра­ден­ные мобиль­ные кошель­ки, если на устрой­стве воз­можна опла­та без раз­бло­киров­ки телефо­на. Так­же я нашел новую инте­рес­ную ата­ку на про­токол EMV — Cryptogram Confusion. С помощью нее мож­но ата­ковать не толь­ко мобиль­ные кошель­ки, но и чи­повые/бес­контак­тные кар­ты.

Мне уда­лось совер­шить пла­теж по кло­ниро­ван­ным тран­закци­ям кошель­ка Google Pay c при­вязан­ной MasterCard даже при огра­ниче­нии в пять попыток.

Ког­да же дело дош­ло до обще­ния с мобиль­ными вен­дорами и МПС, ито­ги ока­зались неуте­шитель­ными:

  1. Обо всех недос­татках Google была опо­веще­на в фев­рале. Они сооб­щили, что в кур­се проб­лем и пла­ниру­ют зак­рыть воз­можность пла­тежей на заб­локиро­ван­ном экра­не. Это реали­зова­но соз­дани­ем отдель­ной опции в нас­трой­ках NFC пос­ле фев­раля 2021 года. Так­же во всех реги­онах раз­работ­чики умень­шили чис­ло тран­закций на заб­локиро­ван­ном телефо­не. Осталь­ные уяз­вимос­ти были про­игно­риро­ваны.
  2. Apple, Samsung, MasterCard были опо­веще­ны вес­ной 2021 года, и завер­телось… Apple заяви­ла, что 15 байт для акти­вации NFC — дос­таточ­ная защита для поль­зовате­лей. Все мобиль­ные вен­доры под­няли лап­ки квер­ху и, ска­зав, что не име­ют пра­ва менять код кошель­ков, поп­росили раз­решения поделить­ся наход­ками с МПС. Пос­ле того как раз­решения были даны, мою стра­ницу в LinkedIn мно­го раз посеща­ли ува­жаемые люди из всех МПС, но ник­то никог­да со мной так и не свя­зал­ся.

Ле­том это­го года MasterCard не толь­ко зак­рыла лазей­ку для Card Brand Mixup Attack от швей­цар­ских иссле­дова­телей, но и устра­нила лазей­ку для Cryptogram Confusion. Я обна­ружил это слу­чай­но толь­ко в октябре, при под­готов­ке к выс­тупле­нию. Помимо это­го, во мно­гих реги­онах поле MCC было добав­лено в крип­тограм­му, что дела­ет под­мену MCC невоз­можной даже во вре­мя Transaction Stream Manipulation. Поменял­ся метод пред­став­ления ATC/AAC на заб­локиро­ван­ных телефо­нах Samsung, что и навело меня на мыс­ли о пат­че. Вер­сию пат­ча я смог выпытать у Samsung (апдейт MPBP 1.2.2, May 27, 2021).

Visa не силь­но пережи­вает из‑за все еще сущес­тву­ющей воз­можнос­ти совер­шать пла­тежи на укра­ден­ных и раз­ряжен­ных телефо­нах Apple и еще мень­ше — из‑за манипу­ляций тран­закци­онным потоком. Они верят в машин­ное обу­чение, риск‑ори­енти­рован­ную модель и, ско­рее все­го, заняты раз­вити­ем биз­неса или дру­гими инте­рес­ными воз­можнос­тями, а не безопас­ностью сво­их кли­ентов.

Ата­ки, которые воз­можны до сих пор:

  1. Тран­спортная кар­та Visa + Apple Pay — без­лимит­ные пла­тежи на заб­локиро­ван­ном, раз­ряжен­ном или укра­ден­ном устрой­стве. Так­же до сих пор воз­можны пла­тежи по кошель­кам Visa + Google Pay, тут с 2019 года ничего не изме­нилось.
  2. MasterCard + Google Pay — воз­можно кло­ниро­вание тран­закций, ког­да укра­ден­ной информа­ции будет дос­таточ­но для совер­шения опре­делен­ного чис­ла пла­тежей.
  3. Ос­таль­ные вари­ации кар­та + кошелек — ата­ки воз­можны толь­ко при манипу­ляции Transaction Stream.

Для того что­бы по‑нас­тояще­му защитить­ся от зло­упот­ребле­ния пла­тежа­ми на заб­локиро­ван­ном телефо­не, самое опти­маль­ное решение — све­рять катего­рию мер­чанта и сум­му со зна­чени­ями CVR:

  • поль­зователь совер­шил пла­теж на 100 дол­ларов, телефон был раз­бло­киро­ван, мер­чант — супер­маркет, нет проб­лем;
  • ав­ториза­ция на 0.00 или спи­сание на боль­шую сум­му, телефон не раз­бло­киро­ван, мер­чант — тран­спорт, тоже нет проб­лем;
  • ав­ториза­ция на 0.00, спи­сание на боль­шую сум­му, телефон не раз­бло­киро­ван, мер­чант — супер­маркет, это уже подоз­ритель­но, и такие тран­закции нуж­но откло­нять.

Что делать бан­кам‑эми­тен­там? Я нес­коль­ко раз слы­шал о том, что во вре­мя токени­зиро­ван­ных тран­закций банк может зап­росить допол­нитель­ную информа­цию от МПС для при­нятия решений, в час­тнос­ти поля EMV, которые в обыч­ном слу­чае не покида­ют токени­затор. Нас­коль­ко слож­но это делать и сколь­ко это сто­ит (все сер­висы МПС пре­дос­тавля­ют по под­писке), я не берусь ком­менти­ровать.

Что делать кли­ентам? Давай пред­ста­вим такую кар­тину: ты вла­делец мобиль­ного кошель­ка, потерял свой телефон и не заб­локиро­вал кар­ту по умол­чанию или тран­спортную кар­ту (я знаю, что в Рос­сии тран­спортные кар­ты не исполь­зуют­ся, но мы же фан­тазиру­ем). Спус­тя какое‑то вре­мя зло­умыш­ленни­ки вос­поль­зовались одной из ука­зан­ных выше тех­ник и сня­ли с тво­его сче­та 1000 дол­ларов. Что про­исхо­дит даль­ше?

  1. Ты зво­нишь в банк, про­сишь заб­локиро­вать кар­ту и начать раз­биратель­ства.
  2. Спус­тя какое‑то вре­мя банк‑эми­тент сооб­щает, что у него нет никаких све­дений о мошен­ничес­ком харак­тере совер­шенных тран­закций. С их сто­роны все выг­лядит безобид­но. Воз­можно, ты раз­гла­сил свой ПИН‑код?
  3. Попыт­ки общать­ся с мобиль­ными вен­дорами (Apple, Samsung, Google) ни к чему не при­водят — они будут утвер­ждать, что пла­тежи воз­можны толь­ко у огра­ничен­ных катего­рий мер­чантов и в лимити­рован­ных сум­мах. Воз­можно, ты раз­гла­сил свой ПИН‑код?

Что в таком слу­чае оста­ется делать кли­ентам? Отка­зать­ся от исполь­зования самых ненадеж­ных про­дук­тов.

За пос­ледний год я смог под­твер­дить свои догад­ки — раз­работ­чики мобиль­ных кошель­ков уют­но устро­ились, соз­дав «самые безопас­ные фор­мы пла­тежей», отоб­рав у бан­ков‑эми­тен­тов воз­можнос­ти для при­нятия решений во вре­мя эмис­сии кошель­ка и авто­риза­ции тран­закций. При этом они же раз­водят руками в слу­чае мошен­ничес­тва или даже воз­можнос­ти мошен­ничес­тва, перено­ся ответс­твен­ность на МПС.

www

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

  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    0 комментариев
    Межтекстовые Отзывы
    Посмотреть все комментарии