Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Pineapple Nano - это хакерское устройство от команды Hak5 для атак на беспроводные сети. Купить его не так просто, поэтому я решил собрать его сам. И эта статья будет как раз о том, как я прошел сквозь огонь и воду, чтобы воссоздать точную копию (ну почти) этого устройства. Поехали!
Описание устройства
WiFi Pineapple - это программно-аппаратный комплекс разработанный компанией Hak5 для тестирования беспроводных сетей на наличие уязвимостей. Вся суть устройства - снижение порога входа в тестирование сетей. Данное устройство имеет интуитивно понятный web-интерфейс и широкий набор инструментов для разведки, отслеживания, трекинга и составления отчетов.
Первым делом для создания прототипа подобного устройства необходимо было изучить какое программно-аппаратное решение взяли на вооружение Pineapple, его характеристики, возможности и аппаратную платформу.Немного погуглив, я нашел документы FCC (федеральная комиссия по коммуникациям США) по сертификации данного устройства, в том числе и фото, с подробными характеристиками.
Фото
Судя по фото и документации, Pineapple Nano построен на довольно популярном процессоре Atheros9331, который применяется во многих сетевых устройствах (роутеры Tp-Link, мини компьютер Black Swift (ссылка и т.д.). На борту платы так же имеем:
беспроводной адаптер Atheros9271;
адаптер Usb-Ethernet Asix AX88179;
RAM 64 mb;
Flash 16 mb;
разъем для карт micro-SD.
Непродолжительный поиск внутренней структуры устройства дал свои плоды в виде отчета dmesg, с помощью которого была получена необходимая информация:
[ 6.410000] hub 1-1:1.0: USB hub found
[ 6.430000] hub 1-1:1.0: 4 ports detected
[ 12.230000] usb 1-1.2: new high-speed USB device number 4 using ehci-platform
[ 14.150000] usb 1-1.1: ath9k_htc: Firmware ath9k_htc/htc_9271-1.4.0.fw requested
что говорит нам о том, что разработчики устройства пошли простым путем и сделали подключение беспроводного адаптера и SD-карты посредством USB-хаба. Что же, мы сделаем так же.
Кроме этого мы убедились в том, что используется беспроводной адаптер на чипе Atheros9271:
[ 14.150000] usb 1-1.1: ath9k_htc: Firmware ath9k_htc/htc_9271-1.4.0.fw requested
Выбор платформы
Наиболее подходящим и доступным роутером, построенном на чипсете Atheros9331 на момент поиска платформы был широко известный Tp-Link TL-MR3020. Он имеет на борту разъем USB, который позволяет подключить к нему USB-хаб, на плате есть разведенный разъем Uart-ttl для подключения к терминалу устройства, ну и немаловажный момент - он обладает маленьким размером.
Для подключения к терминалу роутера был приобретен USB-Uart адаптер построенный на чипе CH340. К терминалу предстоит подключаться еще не раз... Распиновка разъема роутера представлена на фото ниже, может кому окажется полезным.
Основными недостатками, которые не позволяли полноценно использовать данный роутер в своем проекте были мизерные Flash и RAM память (4 Mb и 32 Mb соответственно), хотя только для прошивки Pineapple требуется 16 Mb.
Увеличение RAM до максимально возможных 64 Mb памяти оказалось довольно простым: на сайте openwrt.org в разделе описания данного роутера есть список чипов RAM-памяти, которые могут быть установлены взамен заводского. При этом загрузчик сам определяет размер памяти во время запуска, и программно изменения вносить не нужно. Нужный чип был найден на разборке в линейке оперативной памяти от старого ПК, и при помощи паяльного фена был просто заменен заместо заводского.
С Flash памятью все гораздо сложнее - замена чипа на другой также подразумевает под собой изменение загрузчика, способного работать с увеличенной памятью. На том же сайте представлены чипы, которые могут быть установлены (объемом до 16 Mb включительно). Мной был выбран чип китайского производителя WinBond W25Q128 - на 16 Mb. Прошивал дешевым программатором из Китая на чипе CH341.
Микросхему памяти я без проблем сдул паяльным феном, а чип памяти решил не припаивать на плату, а вывел его на dip-панель, чтобы легко подключать и отключать память для ее перепрошивки.
Потом купил беспроводной WiFi-адаптер на чипсете Atheros9271 - Tp-Link TL-WN722N. Usb-хаб взял самый простой и наиболее дешевый, так же для тестов использовалась usb-флеш карта на 1 Gb.
В качестве альтернативного загрузчика был использован загрузчик от pepe2k. Если говорить коротко, то это модернизированный загрузчик версии U-Boot 1.1.4. В отличии от заводского загрузчика он обладает поддержкой чипов памяти объемом 16 Mb и позволяет обновлять прошивку , образы U-Boot и ART (Atheros Radio Test) прямо из веб-браузера без необходимости доступа к последовательной консоли и запуска TFTP-сервера.
Сборка устройства
Первым недостатком устройства Pineapple Nano, на мой взгляд, является отсутствие собственного источника питания. Поэтому в своем устройстве я решил поместить в корпус помимо роутера и вспомогательных устройств еще и аккумуляторную сборку.
Были приобретены 4 аккумулятора типоразмера 18650 емкостью 2300 mAh каждый. Для корректной работы аккумуляторной сборки установил плату защиты, балансир и светодиодный индикатор уровня заряда аккумуляторной сборки. Для питания роутера и всех вспомогательных устройств установил преобразователь напряжения до 5 вольт, купленный, как и большинство всех составляющих, в Китае.
Корпус был также приобретен на просторах Ali, по словам продавца влагозащищенный. Распотрошив роутер, беспроводной адаптер, и собрав все в кучу получили следующую картину:
На фото можно увидеть АКБ, преобразователь напряжения, USB-хаб, сам роутер, беспроводной адаптер, плату BMS, переходник USB-Uart, индикатор уровня заряда и флеш-карту.
Дальше осталось дело за малым - коммутировать это все. Но был еще один момент, который меня не устраивал - это “родная” антенна на роутере. Мы же хотим оставить возможность подключать узконаправленные антенны, поэтому я просто припаял вместо штатной антенны разъем типа U.fl - чтобы легко было подключить внешнюю антенну (естественно, родная антенна была отключена посредством демонтажа ёмкости) .
Приварил ко всем аккумуляторам точечной сваркой по пластинке, собрал их воедино. Припаял плату BMS, подключил на выход преобразователь напряжения на 5 вольт - они нам понадобятся для питания роутера и всей остальной периферии. Расположение компонентов части питания стало выглядеть вот так:
А самая основная часть с роутером вот так:
На фото можно увидеть выведенный разъем Usb-B для подключения к терминалу устройства (на компьютере определяется как виртуальный Com-порт).
Вторым же недостатком оригинального Pineapple является отсутствие разъема для подключения к проводным сетям (устройство эмулирует сетевую карту при подключении кабелем Usb). Ну а вдруг, мы захотим изучать безопасность не только беспроводных технологий, а старым-добрым тоже уделим внимание? Для этого справа внизу корпуса позже разместится панельный разъем RJ45 - теперь устройство можно незаметно подключить в сеть, и оставить его там.
Решил сделать оригинальную кнопку включения - оно осуществляется поворотом ключа.
Шифр данному изделию был дан “Тропа-М”. Почему? Не спрашивайте, сам не знаю. Но я решил озаботиться нанесением маркировки на корпус, для чего на пленке лазером выжег нужные мне надписи, которые вскоре были наклеены на корпус.
Ну и в самом конце расскажу о комплектации своего “изделия”:
зарядное устройство на 16,8 В (4 банки по 4,2 В);
- Кабель Usb-B (для подключения к терминалу устройства);
Антенны 2 шт;
Адаптер Usb-Ethernet с драйвером к нему на диске;
Ethernet-кабель;
Ключ для запуска;
Ремень.
Какой ремень, для чего? Для скрытого нательного ношения, конечно!
На этом моменте этап сборки платформы считаю законченным. Все аппаратно максимально соответствует оригиналу, все недостатки учтены и изменены на свой лад. Осталось дело за малым - воткнуть прошивку в устройство, но об этом будет отдельная статья.