Сегодня в выпуске: простой и эффективный способ обмана Face ID, реверс-инжиниринг прошивок IoT-устройств, неожиданные результаты сравнения производительности Java и Kotlin, сравнение паттернов MVC, MVP, MVVM и MVI, советы по использованию Android Studio. А также: набор свежих инструментов пентестера и библиотек для программистов.
 

Почитать

 

Как обмануть Face ID

Biometric Authentication Under Threat: Liveness Detection Hacking — презентация с Black Hat, посвященная способам обмана биометрических сенсоров в смартфонах (датчик отпечатка пальца, сканер лица и сетчатки). Авторы приводят несколько способов обхода датчиков, в том числе с помощью прямого подключения к шине камеры и подачи на нее заранее снятого изображения (это позволяет обойти алгоритмы определения реального присутствия человека, но не лазерные сканеры в iPhone и некоторых других смартфонах). Но интереснее всего способ обмана сканера Face ID в iPhone X и более поздних моделях.

Во время сканирования iPhone строит подробную 3D-модель лица человека и требует, чтобы глаза были открыты. Такой подход сводит на нет почти все методы манипуляции, включая показ фотографии, видеозаписи, поднесение смартфона к лицу спящего человека и так далее.

Но у этого механизма есть фундаментальный изъян. При сканировании лица человека в очках он не может полагаться на 3D-сканирование глаз и переключается на куда более простой алгоритм: если в районе глаз есть белая точка на черном фоне — глаза считаются открытыми. Достаточно взять любые очки, наклеить на них два кусочка черной изоленты, нарисовать в их центре белые кружки, и вуаля: надеваем очки на спящего человека, подносим к его лицу смартфон — и экран разблокирован.

Очки для обмана Face ID
Очки для обмана Face ID
 

Реверс-инжиниринг прошивок IoT-устройств

How to Start IoT device Firmware Reverse Engineering? — введение в реверс-инжиниринг прошивок различных IoT-устройств, таких как роутеры, камеры, устройства для умного дома и так далее. Статья короткая, простая, но содержит несколько вводных рекомендаций, которые могут пригодиться новичкам.

  1. Любой реверс начинается с поиска самой прошивки. Обычно ее можно скачать с сайта производителя или на форумах.
  2. Зачастую прошивки распространяются в zip-архиве, внутри которого находится файл с расширением .bin.
  3. Обычно файл .bin — это сплав из загрузчика, ядра Linux и образов одного или нескольких разделов. Чтобы узнать адреса смещений, по которым находятся эти образы в файле, можно использовать утилиту binwalk:

    $ binwalk -e TL-WR841Nv14_EU_0.9.1_4.16_up_boot[180319-rel57291].bin
    


  4. Адрес смещения можно использовать, чтобы извлечь образ раздела с помощью утилиты dd (в данном случае образ корневой файловой системы squashfs):

    $ dd if= TL-WR841Nv14_EU_0.9.1_4.16_up_boot[180319-rel57291].bin skip=1049088 bs=1 of=TP.sfs
    
  5. Получить содержимое файловой системы squashfs позволяет утилита unsquashfs:

    $ unsquashfs TP.sfs
    
  6. На этом все, можно начинать анализ содержимого прошивки.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


Check Also

Google исправила более 40 проблем в Android, включая критическую DoS-уязвимость

На этой неделе инженеры Google выпустили декабрьские обновления для Android, среди которых…

2 комментария

  1. Аватар

    Diflyrest

    30.08.2019 at 15:29

    С очками прикольно

  2. Аватар

    ruslanys

    31.08.2019 at 12:55

    Кыс-кыс, ребят. А вы не задумывались, что бенчмарки Котлина хуже, потому что «не вручную написанный код, а сконвертированный из Java»?

    «Причина: использование полноценного объекта Integer для хранения простых чисел в противовес Java, которая использует для этого переменные.».
    Котлин использует полноценные объекты только если переменная может принимать значение NULL. Kotlin – это null-safe язык. Так, если вы для примитивов (int) задаете nullable тип, то будут использованы обертки (Integer).
    Язык как раз-таки не создает такие проблемы, а наоборот.

Оставить мнение