Сегодня беспроводные точки доступа окружают нас повсюду: в кафе, ресторанах, в торговых центрах и в транспорте. Это перестало быть чем-то необычным, и мы спокойно подключаемся к незащищенной сети или постоянно держим включенным режим поиска знакомых точек вокруг. Именно поэтому в последнее время количество атак, нацеленных на этот сегмент, неуклонно растет. Неудивительно, ведь получение доступа к трафику пользователя открывает огромное поле действий атакующему. Сегодня мне хотелось бы рассмотреть одну из таких атак под прозаичным названием Karma, придуманную еще в 2005 году, но в настоящий момент все еще актуальную.


Одно время разговоры о Karma (далее — Карма) были очень популярны в кругах безопасников, и многие слышали о ней хотя бы краем уха. Те же, кого эта тема на тот момент обошла стороной, могут быть знакомы с ней заочно благодаря небезызвестному устройству под названием Pineapple. Оно было создано специально для того, чтобы проводить Karma и другие схожие атаки на беспроводные сети быстро и без особых усилий.


При беглом рассмотрении самой Кармы можно понять, что на самом деле она представляет собой атаку evil twin “на стероидах”, ведь, по сути, основная её часть заключается в поднятии копии определенной точки доступа. Однако дьявол кроется в деталях, и именно детали позволяют атаке, созданной 13 лет назад, не терять своей актуальности и использоваться для проведения пентестов и по сей день.


Поперечный разрез, или откуда ноги растут


Чем же этот динозавр отличается от всех остальных и благодаря чему выжил? Карма выделяется тем, что основана не на уязвимостях ПО точек доступа или клиентов, а на особенностях повсеместно используемого стандарта 802.11, а точнее — на особенностях работы его протокола аутентификации. Для полного понимания устройства Кармы далее будет подробно рассмотрен сам процесс аутентификации. Читатели, знакомые с этим процессом, могут спокойно пропустить эту часть.


737c9bd48cbd7f70080750429eb0610d.png


Чтобы объявить о своем присутствии, Access Point (точка доступа, далее — AP) транслирует так называемые Beacon-фреймы — пакеты, содержащие SSID точки доступа (т.е её идентификатор, название сети), поддерживаемые скорости передачи данных и тип шифрования, который использует эта беспроводная сеть.


Пользователь находит беспроводные сети посредством прослушивания пакетов в поисках Beacon-фреймов от окружающих его AP или самостоятельно рассылая к точкам доступа из своего списка предпочитаемых сетей Probe request-фреймы — пакеты, состоящие из SSID, который ищет пользователь, а также скорости передачи данных, которые поддерживает устройство пользователя. SSID может быть пустой строкой, указывающей на то, что это Null probe request (запрос, адресованный всем точкам доступа независимо от SSID).


AP отвечают на Probe request, содержащие их SSID, а также на Null probe request с помощью Probe Response пакетов. Probe Response содержит данные, идентичные данным в Beacon-фреймах: SSID, поддерживаемые скорости передачи данных и наличие шифрования.


Если беспроводная сеть использует шифрование, устройство пользователя должно пройти аутентификацию перед подключением. Этот процесс происходит через Authentication-фреймы. Если устройство пользователя уже прошло аутентификацию или же сеть ее не требует, устройство отправит точке доступа Association Request, на который AP отвечает Association Response-фреймом. После этого пользователь может работать в этой беспроводной сети.


Важно отметить: хотя стандарт определяет, как пользователь присоединяется к точке доступа, способ выбора этой точки не определен, нет упоминания о том, должна ли базовая станция проходить проверку подлинности или она по умолчанию доверенная. Решение этой проблемы было оставлено на усмотрение поставщикам оборудования и программного обеспечения операционной системы.


Теперь стало понятно, как работает Карма. Злоумышленник в пределах диапазона сигнала (которому потенциально могут помочь антенны с высоким коэффициентом усиления и усилители сигнала) может пассивно контролировать один беспроводной канал и наблюдать запросы на подключение от пользователей ко всем точкам доступа. Он может использовать эту информацию для воссоздания списка предпочитаемых сетей жертвы. В запросах пользователя на подключение раскрываются только имена сетей, а их тип шифрования — нет. Однако, обладая только SSID точки доступа, атакующий может создать ее копию с тем же названием, повышая вероятность подключения жертвы к ней: например, с помощью усиления сигнала от точки доступа (клиент обычно автоматически подключается к самой мощной точке), или выполнения атаки типа «отказ в обслуживании» в отношении выбранной AP. Если клиент ожидает, что сеть будет зашифрована, соединение не будет установлено, и злоумышленник может попробовать следующую сеть в своей воссозданной копии списка предпочтительных сетей жертвы. Когда же он наткнется на сеть, которая не поддерживает шифрования, то будет создана беспроводная сеть, к которой сразу присоединится жертва.


Немного о атаке от создателей Wi-Fi Pineapple:


IMAGE ALT TEXT HERE


"Old, but not obsolete"


На сегодняшний день ключевая проблема в стандарте так и не была решена, и Карма продолжает быть реальной угрозой для пользователей. Например, для тестирования беспроводных сетей сейчас часто используют вышеупомянутый WiFi Pineapple, который можно приобрести свободно. Создатели данного проекта ведут его активную поддержку и, с какой-то периодичностью, выпускают обновления. Сравнительно недавно была выпущена новая версии Pineapple: Tetra — полноценный роутер со всем необходимым, 4 SMA-антеннами и встроенной флэш-памятью на 2 ГБ и Nano — упрощенная версия, имеющая формат USB-адаптера с 2 SMA-антеннами, 16 MB ROM и разъем под Micro SD.



Для тех, кто хотел бы опробовать Карму на этом замечательном устройстве, сразу хотелось бы сказать, что нет смысла покупать с рук ранние версии типа Mark V, т.к. производитель прекратил их поддержку, и вероятность того, что вы сможете просто скачать необходимое ПО через встроенный в устройство магазин или обновить устройство(последняя прошивка для Mark V выпущена в августе 2015 года), стремится к нулю, а о том, чтобы запустить его и провернуть атаку, даже речи не идет.


48bff8c04155e312cfbbe38d90a06987.jpg


Немного порывшись на github, можно найти несколько реализаций Кармы с открытым исходным кодом разных уровней исполнения:



Хотя две последние из перечисленных реализаций уже дано не поддерживаются, но WiFi-Pumpkin и Wifiphisher на данный момент живы и продолжают развиваться. Мое исследование Karma началось не с них, а с Mana и FruityWiFi, на разбор которых было потрачено огромное количество времени. Заставить работать их так и не удалось, и попытки были заброшены. Однако в ближайшее время я планирую снова вернутся к этой теме и опробовать WiFi-Pumpkin и Wifiphisher, эти проекты имеют свое небольшое сообщество и вероятность удачи в этом случае значительно выше.


Также, вишенкой на торте и интересной реализацией Кармы можно назвать этот небольшой проект, который реализует атаку c помощью дешевого и популярного сейчас микроконтроллер ESP8266. Проект не является полностью самостоятельной Кармой, пользователь должен сам создать Rogue AP(фальшивую точку доступа), не предусмотрены функции создания предпочтительного списка сетей. Однако обе эти проблемы не так сложно решить — ESP довольно щедрый с точки зрения ресурсов для этого, и, при должном желании, может получиться неплохая утилита.


Борьба с плохой "Кармой"



И что же теперь делать с этой информацией, как защититься? Здесь нет абсолютно никакой магии, правила защиты от Кармы просты:


  1. Отключать режим поиска Wi-Fi на всех своих устройствах, пока вам это не нужно.
  2. Не доверять знакомым точкам доступа, всегда проверять, может ли эта точка вообще быть здесь (да, MT_FREE, это я о тебе говорю).
  3. Использовать VPN везде, где можно и нельзя.
    (Здесь все работает так же, как и со злоумышленником, который может прослушивать трафик в подконтрольной сети — при использовании VPN он просто не сможет ничего расшифровать).
  4. Создавать точки доступа с шифрованием и отдавать предпочтение им.
  5. Не авторизоваться повторно в знакомых сетях (скорее всего, это поддельная точка доступа злоумышленника).

Несмотря на то, что целевые ОС с момента появления Karma уже сотни раз обновились и системы стали защищеннее, эта атака жива и представляет угрозу пользователям. Ожидать того, что в ближайшее время стандарт будет исправлен или дописан не приходится, так что нам остается только придерживаться этих незамысловатых правил и держать ухо востро.

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


  1. motpac
    14.01.2019 12:30

    А разве приложения основных и популярных сервисов не шифруют трафик изначально? Это я к пункту про абсолютное использование VPN. Мне казалось прошли те времена, когда трафик шёл в открытую по сети.


    1. veselovi4
      14.01.2019 13:00

      Ну а если у Вас один сегмент вашей локалки повешен на ВайФай? И доступ к сетевым дискам по воздуху?


      1. motpac
        14.01.2019 17:22

        Тогда ваш совет звучит как Кара Небесная! Заруливать весь внутренний трафик через VPN… я даже боюсь себе представить как этим можно пользоваться.
        К примеру, у меня на компе шара с киношками в 4к, и я с телека по wifi тяну эти киношки. Это ж какая скорость у меня будет?


        1. yetanotherman
          14.01.2019 18:47

          Я подозреваю, что не самый древний x86 с AES-NI в качестве эндпоинта даст несколько сотен мегабит с любым современным ноутбуком. А большего я бы и от голого воздуха не ожидал, если не покупать дорогое железо. Но тогда можно и на роутер раскошелиться, который проглотит больше.


  1. anonymous
    14.01.2019 17:27

    Я запускал mana на андроид телефоне one plus с kali nethunter и внешней сетевухой, кривая поделка, но работала.

    Вопрос к залу, есть что-то для телефонов сейчас актуальное? nethunter как-то заброшен, на днях искал аналоги, но как-то не нашел ничего.


    1. yetanotherman
      14.01.2019 18:49

      Похоже, все любят raspberry pi с повербанком, и в неё ssh с телефона. Хотя может это моё впечатление — мне всегда мобильные утилиты, работающие с сетью, казались какими-то совсем ущербными.


    1. atmega644
      15.01.2019 06:45

      Посмотрите в сторону ANDRAX. Исходники есть на GitHub.


      1. l0rda
        15.01.2019 14:42

        Спасибо, посмотрю


  1. Psychosynthesis
    16.01.2019 00:49

    Насколько я понимаю, тут основной прикол в возможности реализации атаки MITM, то есть, помимо, собственно AP потребуется ещё, как минимум подделать сертификат SSL для перехвата и каким-то образом организовать ей доступ в сеть для реализации моста, чтобы гнать трафик через неё, иначе даже рукопожатия для SSL не произойдёт. Либо каким-то образом реализовывать атаку на подключенные устройства, используя их уязвимости, что само по себе уже не так тривиально.

    А иначе, если сеть не имеет шифрования — трафик в ней и так открыт и все участники сети видят пакеты друг друга, поэтому трафик идущий не через SSL и без всякой Karm'ы перехватывается на ура.

    Из всего этого следует, что сама по себе эта «атака» это лишь базовый элемент для более сложных атак, успешность проведение которых зависит от множества других факторов.