Немного о технологии RFID
RFID (Radio Frequency IDentification) — технология автоматической идентификации, в котором посредством радиосигналов считываются и записываются данные. Данные хранятся в так называемой RFID — метке. RFID-система состоит из ридера и метки.
RFID-метки классифицируются по рабочей частоте, типу памяти и источнику питания. Ридеры бывают стационарные и мобильные.
Типы атак, применяемые в технологии RFID
Читая интересные статьи про RFID становится не по себе от примеров возможных атак. Ниже представлен небольшой список применяемых атак:
- Dos-атака
- RFID-Zapper
- Клонирование
- Подмена содержимого памяти RFID-меток
- Атаки через RFID-метки
Dos-атака
Ученые из австралийского университета утверждают, что RFID первого поколения подвержены Dos-атаке. Суть в том, что чипы этого поколения используют диапазон 902-938 МГц, разделенный на каналы. Сканер может переключаться с одного канала на другой, а чип в силу своей пассивности не может сменить диапазон. Утверждается, что данный диапазон можно заглушить с расстояния в 1 м. с помощью несложного радиопередатчика. В связи с этим приводится достаточно абстрактное сравнение с Dos-атакой.
RFID-Zapper
Следующая атака — это простое уничтожение метки. Двое парней из рядов «Хаоса» пришли к выводу, что нахождение чипа в микроволновке на протяжении короткого времени является самым действенным способом уничтожения метки. В связи с этим был разработан девайс RFID-Zapper. В качестве основы использовали фотоаппарат-мыльницу. После некоторых апдейтов девайс научился создавать сильное электромагнитное поле, которое убивает пассивные метки.
Клонирование
Джонатан Вестхьюз (Jonathan Westhues) — студент, который создал устройство, позволяющее клонировать метки. Девайс назван proxmark. Он легко помещался в карман и при достаточно близком расстоянии можно незаметно клонировать метку.
Подмена содержимого памяти RFID-меток
На завершившейся хакерской конференции Defcon немецкий эксперт инфосека Лукас Грюнвальд (Lukas Grunwald) продемонстрировал, как содержимое электронного паспорта может быть легко перенесено на любую другую радиометку. При этом Лукас использовал разработанную вместе с его коллегой Борисом Вольфом (Boris Wolf) еще пару лет назад прогу RFDump, которая умеет считывать, редактировать, записывать (если это возможно) данные RFID-меток. Первой версией данной проги был простенький perl-скрипт, теперь же RFDump представляет собой удобную тулзу, распространяющуюся под лицензией GPL. Существуют пока только версии для Linux. Для работы программы необходим RFID-ридер ACG Multi-Tag Reader или ему подобный. Грюнвальд вносит в софт время от времени кое-какие поправки. Например, сейчас она позволяет задействовать в метке счетчик считываний (функция cookie), планируется введение возможности снятия шифрования данных меток с помощью брутфорса или атаки по словарю, а также проверка на ключи, выставляемые «по умолчанию».
После создания своей программы Лукас и Борис занялись активным изучением возможности взлома различных RFID-систем. Первым делом они изучили RFID-систему местного университетского кафе, где данные о сумме на счете клиента хранились прямо на карточке. Питание там стало для них бесплатным :). Дальше — больше: они останавливались в гостиницах и отелях, в которых для входа в номер использовались proximity-карты. Интересный факт: ни одна из десяти изученных ими RFID-система из не имела шифрования, и Грюнвальд после изучения 2-3 карт мог создать мастер-карту, открывающую любую дверь. Но и системы с шифрованием очень просто обойти: либо ключ подбирался простым перебором, либо стоял выставленный производителем по умолчанию. Уязвимыми оказались и системы супермаркетов, где начали применять RFID как альтернативу штрихкодам. Хакеры получили возможность с помощью карманных компьютеров поменять метки дорогостоящих товарах на менее дорогие, «спасая» таким образом свою наличность. По словам Грюнвальда, 3/4 всех изученных им RFID-систем оказались так или иначе уязвимы.
Атаки через RFID-метки
На самом деле через редактирование метки можно получить доступ к компьютеру и тем самым совершать различного рода атаки. Уязвимые местра RFID-метки: SQL-Injection, web-интерфейсы, где не исключена возможность внедрения вредоносного кода, а также buffer overflow.
Допустим, в RFID-системе используются только метки с объемом памяти 128 байт. Программист, писавший приложение, обрабатывающее содержимое тэгов, поленился сделать проверку на длину этого самого содержимого. В итоге имеется возможность для переполнения буфера, ведь хитрый хакер может подсунуть системе метку с большим количеством памяти, чем 128 байт, внедрив туда и шелл-код.
Примеры реальных атак
Чтобы было ясно какие виды проблем могут возникать от RFID-хакинга рассмотрим сценарий реальной атаки.
— «Шутник» идет в супермаркет, в котором сканирует продукты в корзинах. Продукция магазина оснащена RFID-метками, а не штрих-кодами. Многие супермаркеты планируют ввести систему RFID, поскольку сканирование происходит гораздо быстрее. «Шутник» выбирает продукт, например, шоколадную пасту, сканирует и идет на кассу его оплачивать. Придя домой, он удаляет и уничтожает RFID-метку (уничтожить метку можно способами, описанными в пункте RFID-Zapper). Затем он берет пустые RFID-метки и пишет эксплойт на компьютере, который в последствии прикрепит к метке. Далее инфицированная метка прикрепляется к шоколадной пасте и относится в магазин. «Шутник» снова ее покупает, кассирша сканирует и в этот печальный момент заражается вся база данных супермаркета.
— Игры нашего «шутника» продолжаются. У нашего героя есть кошка, у которой имеется подкожная ID-метка, которую «шутник» может перезаписать на какой-нибудь эксплойт с использованием коммерчески доступного оборудования. Далее, он идет к ветеринару с жалобой, что кошка постоянно просит еды. Ветеринар сканирует и происходит тоже самое, что и в предыдущем рассказе — заражается база данных и данное действие приводит к хаосу.
— И самая страшная часть. Аэропорты тоже планируют ввести RFID-метки, которые будут крепиться к багажу. Это обусловлено тем, что RFID-метки возможно считывать на большом расстоянии, нежели штрих-коды багажа. Принцип действия тот же самый — приходит злой путешественник с инфицированной меткой, его сканируют. Только последствия гораздо опаснее — могут быть заражены сотни аэропортов по всему миру.
Многие компании на данный момент утверждают, что их ПО отображают данные виды атак.
Защита
Общие советы
— Многие компании при создании нового ПО публикуют код, чтобы сторонние программисты за вознаграждение помогли отыскать баги, допущенные разработчиками. Рекомендуется тоже самое делать и с ПО RFID.
— Удалять ненужные функции.
Остановка атак на базу данных.
Для того, чтобы избежать атаки типа SQL — Injection следует выполнять тщательную проверку данных, передаваемых SQL — запросом. Так же существует понятие ORM — библиотек, которые являются посредником между базой и программой. Некоторые базы данных предоставляют возможности, которые ограничивают вероятность нападения. Например, как Oracle и MySQL позволяет только один запрос к исполнению в течение вызовов API, хотя новых версий MySQL позволяют программисту включить несколько запросов.
Клиентские сценарии можно предотвратить с помощью правильной обработки скриптов. Языки, используемые в web-разработке, обычно предоставляют функции, которые могут сделать это за вас. PHP может делать это автоматически для каждой строки, используя свои «магические кавычки». Если скриптовый язык не требуется, его отключение позволит избежать любой возможности его злоупотребления. SSI инъекцию можно также избежать использованием надлежащей обработки. Или отключить SSI.
Переполнение буфера (stack overflow) можно также избежать надлежащей проверкой границ буфера. Такие инструменты как Valgrind и Electric Fence
помогут осуществить проверку. Конечно использование языка программирования, который выполняет данные проверки, было бы гораздо лучше. Один из таких языков является Java.
Автор: Sabin4ik