Технология NFC или Near Field Communication («коммуникация ближнего поля») – это набор стандартов для организации связи между двумя устройствами (например, смартфонами), которые находятся на очень близком расстоянии друг от друга (менее 4 сантиметров).
Авторы: Субхо Гальдер (Subho Halder) и Адитья Гупта (Aditya Gupta) (@sunnyrockzzs и @adil391)
Коммуникационные протоколы таких устройств основаны на RFID-стандартах, включая ISO I4443. Эти стандарты были разработаны и получили массовое распространение при содействии некоммерческой ассоциации NFC Forum, которая была основана в 2004 году такими известными компаниями как Sony, Nokia, Philips, Samsung и т. д.
Рабочая частота протокола составляет всего лишь 13,56 МГц (+/- 7 МГц), что является очень низкой величиной. Это дает определенные преимущества, позволяя обойтись небольшими энергоресурсами батареи при внедрении этого протокола в портативное устройство.
На схеме проиллюстрирован базовый формат стека протоколов NFC.
В этой статье мы коснемся уровня протокола (protocol layer), который отвечает за начало коммуникации, и прикладного уровня (application layer), который отвечает за передачу данных между устройствами.
Для этой цели используется простой бинарный формат сообщений NDEF (NFC Data Exchange Format), который был утвержден ассоциацией NFC Forum в качестве стандартного формата передачи данных. Существует несколько типов сообщение: текст, url и т. д.
Для примера рассмотрим кодирование текстового сообщения:
0000: 03 17 D1 01 13 54 02 65 6E 68 65 6C 6C 6F
0001: 20 63 6C 75 62 68 61 63 6B 20 21 FE
Теперь разберем, что означает каждый байт:
03 – начало NDEF-сообщения
17 – размер сообщения
D1 – состоит из отдельных битов: MB = 1, ME = 1, CF = 0, SR = 1, IL = 0,
TNF = 001 (NFC Forum well-known type)
01 – длина типа, в данном случае = 1
54 – тип сообщения, в данном случае = “Т” (текст)
65 6E – код языка сообщения, в данном случае = “en”
68 65 … 21 – текст “hello clubhack”
FE – конечный байт (NDEF Terminator)
В этом примере длина сообщения укладывается в единичный байт. Если длина сообщения больше 255 байтов, используется более длинная форма NDEF (короткая/длинная форма сообщения управляется битом SR).
На рисунке показаны библиотеки, из которых состоит стек NFC-протоколов для платформы Android
Стек подразделяется на три компонента: ядро, службы NFC и само устройство (или метка).
Ядро содержит NFC-драйвер libpn544_fw.so, который отвечает за взаимодействие с сигналами NFC. Служба NFC носит имя com.android.nfc и опирается на три основных драйвера: libnfc.so,libnfc_jni.so и libnfc_ndef.so. Каждый из этих компонентов включает функционал для работы с отдельными частями NFC-данных (JNI, NDEF и т. д.)
В реальной жизни, как только метка (или любое другое устройство) подносится к NFC-устройству на платформе Android, ядро libpn544_fw.so запускает службы NFC. После запуска служб идет прием, сохранение и разделение NFC-данных на соответствующие категории. Наибольший интерес представляет драйвер libnfc_ndef.so, который отвечает за обработку формата NDEF. Так, если допустить, что мы хотим вывести из строя NFC-драйвер, мы могли бы модифицировать NFC-сообщение, сделав некоторые изменения в шестнадцатеричных данных, или поменять значение длины сообщений, которые содержатся в NFC-компоненте.
В тех странах, где банковские карты поддерживают протоколы NFC, возможно проведение транзакций, используя возможности этих протоколов. Как только устройство в банкомате обнаружило карту, считывается служебная информация, которая затем используется для совершения платежей.
Злоумышленник может установить еще один картридер, которое также будет считывать информацию с карт посредством NFC-протокола, а затем передавать ее «родному» устройству банкомата. Такая атака является одним из примеров MITM-атаки (Man in the Middle Attack). В конце дня злоумышленник может вернуться к банкомату, снять устройство считывания карт и получить информацию обо всех картах, которые использовались в течение дня. В дальнейшем он может использовать эту информацию в преступных целях.
Еще один вид атаки - использование электронных афиш совместимых с NFC протоколом. Такие постеры могут использоваться, например, для рекламы. Принцип их действия следующий: NFC-устройство прикладывается к определенному месту плаката, а затем скачивается информация. К примеру, подобным образом известный артист может рекламировать свои новые треки. В моем случае, после подключения к афише, я заполнил регистрационную форму и скачал музыкальное видео. Однако довольно часто в телефоне могут храниться персональные данные и злоумышленник, используя электронный плакат, может установить на ваш телефон вредоносную программу.
Этот вид атаки ставит под угрозу безопасность компаний, которые используют NFC-карты для идентификации клиентов и сотрудников.
К примеру, такие карты могут использовать для прохода в здание. Злоумышленник может считать информацию с карты и сделать ее копию или же просто использовать свой телефон для проникновения в помещение.
От таких атак могут пострадать не только компании, но и рядовые граждане. Незнакомец может поднести NFC-устройство к вашей дебетовой (или кредитной) карте и считать информацию (само собой, если карта поддерживает протокол NFC), а затем использовать ее для кражи денег.
Эти вредоносные программы могут проксировать запросы прежде, чем они дойдут до целевого приложения. Например, при получении адреса ресурса (url), который хранится в метке, происходит разбор строки, а затем запускается вредонос вместо браузера.
Приложение можно найти по адресу: https://github.com/subho007/HTTProxy
Широко известна USSD-уязвимость в телефонах Samsung Galaxy, используя которую без ведома пользователя можно сбросить настройки телефона, набрать номер или открыть браузер.
Пожелания, замечания, найденные ошибки и исправления сообщайте на почту security@xysec.com
Пройдите по шифрованной тропе информационной безопасности – подпишитесь на наш ТГ-канал!