LOGO


В данной статье я расскажу о том как осуществить MiTM любого устройства компании Apple в WiFi сети. Прежде чем читать эту статью настоятельно рекомендую ознакомиться с первой и второй частью.


Ограничения все те же:


  1. Мы должны быть подключены к атакуемой точке доступа.
  2. У нас должна быть возможность прослушивать широковещательный трафик в сети.

Как оказалось, macOS и iOS переплюнули всех в плане получения сетевых настроек по протоколу DHCP. Когда эти операционные системы отправляют DHCPREQUEST, DHCP-сервер отвечает им DHCPACK, и они выставляют сетевые настройки из ответа сервера. Вроде пока все как у всех:


MacOS legal DHCPACK

Но проблема в том, что DHCPREQUEST широковещательный и злоумышленник, как правило, без особых проблем может его перехватить извлечь из него поля xid и chaddr, что бы сформировать правильный DHCPACK. Но злоумышленник отправит DHCPACK, конечно, позднее легитимного DHCP-сервера, то есть его ответ придет вторым. Все остальные DHCP-клиенты на других ОС просто проигнорируют второй DHCPACK, но не macOS и iOS.


Как вы думаете, какие сетевые настройки выставляют данные операционные системы? Ответ: те настройки, которые будут содержаться во втором DHCPACK (в DHCPACK злоумышленника).


MacOS attacker DHCPACK

Видео демонстрации бага в DHCP-клиенте на macOS:



Как Вы думаете баг это или фича? Я подумал баг и на всякий случай завел заявку на Apple Bug Reporter этой заявке уже больше месяца, но ни одного комментария от специалистов Apple я так и не получил.


Apple bug reporter

На заявке в Apple Bug Reporter я не остановился и написал письмо в product-security@apple.com


Apple email

Специалисты Apple совсем не быстро, но все же ответили и сказали, что их DHCP-клиент работает в соответствии с RFC 2131. То есть это вовсе не баг, это фича. У меня все.


Thats all folks

Послесловие


Для самых ленивых я подготовил скрипт apple_wifi_mitmer.py, который в автоматическом режиме находит все устройства компании Apple в Wi-Fi-сети, деаутентифицирует их и производит MiTM.


В аргументах скрипта всего-то нужно указать имя беспроводного интерфейса, который уже подключен к исследуемой Wi-Fi-сети, и еще один беспроводной интерфейс для отправки deauth-пакетов.


Видео демонстрации работы скрипта apple_wifi_mitmer.py:



Работает ли это на новой iOS 11? Ответ: Да, работает.

Комментарии (6)


  1. dnk-hack
    29.09.2017 21:48

    Аплодисменты стоя — если работает! Ушел проверять твои слова…


    1. vladimir-ivanov Автор
      29.09.2017 21:49
      +1

      Отпишись, если не сработает :)


  1. Stochkas
    29.09.2017 21:48

    хм… а ответ от эйпл будет? или «а слона то я и не заметил»


    1. vladimir-ivanov Автор
      29.09.2017 21:48

      Думаю ответ будет не скоро.


  1. boloto
    29.09.2017 21:48

    Интересно, а если клиенту выслать сразу после «второго» DHCPACK еще один — третий? Он послушается и применит «последний-третий»?


    1. vladimir-ivanov Автор
      29.09.2017 21:51

      Пробуйте, ссылку на свой гит я оставил. Тайм-аут ответа около 2 секунд.