Статья Nexmon + NexmonSDR на raspberry pi 3 (model B+)/ pi 0 w

День добрый

Вот у вас есть малинка и вы не знаете что еще можно з ней сотворить? Выход есть благоларя кастомной прошивке можно получить неплохой SDR ну или очень мощный инстумен для сетей

Все бы хорошо но зачем все это делать? Что это такое SDR и зачем он нужен?

1604084649324.png


SDR - это программно управляемое радио, нужно оно затем что з ним можно много чего сделать вплоть до получение траффика от спутника. Как вы знаете все приборы у которых есть так называемая "сеть"
работают на определенных радио частотах которые наша малинка и сможет перехватывать , создавать и изменять.

Nexmon SDR. Это кастомная прошивка чипсета Wi-Fi, которая может дать обладателю raspberry pi model B+ много интересного функционала

Чип Broadcom BCM43455c0 можно заставить передавать любой сигнал на частотах от 2,4 до 5 ГГц. BCM43455c0 используеться в Raspberry Pi 3B+ чем мы и будем пользоваться в своих целях (только эта модель поддерживает Nexmon-SDR, на всех остальных можно просто запустить обычный Nexmon)

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

Cобственно что-то мы заговорились, начинаем установку основного Nexmon (на linux разумеется):
Что нам нужно?
Raspberry pi
micro-sd карта минимум на 16гб
Raspbian
Доступ к малинке (можно через PuTTY)
ровные руки

Обновляемся на самой малинке:
Код:
sudo apt-get update
sudo apt-get upgrade
Перезагружаем устройство:
Код:
sudo reboot
Мы можем проверить версию ядра, pвыполнив команду ниже:
Код:
uname -r
Этой командой вы должны получить что-то вроде «4.14.98-v7 +». Пока вы используете версию ядра, которая начинается с «4.9», «4.14» или «4.19», то все хорошо и вы сможете установить Nexmon

На малинке нам нужен полный доступ для выполнения дальшейших действий

рутимся:
Код:
sudo su
Теперь, когда мы взаимодействуем как суперпользователь, нам нужно будет установить все пакеты, необходимые для компиляции патчей ядра Nexmon.
Код:
apt install git libgmp3-dev gawk qpdf bison flex make raspberrypi-kernel-headers
Теперь клонируем репозиторий:
Код:
git clone https://github.com/seemoo-lab/nexmon.git
Теперь, когда у нас есть код Nexmon, клонированный на Raspberry Pi, нам нужно перейти к компиляции двух необходимых библиотек.

Перед тем, как скомпилировать и установить эти библиотеки, мы должны убедиться, что вы все еще работаете как пользователь «root». В командной строке вы должны увидеть текст «root@raspberrypi», а не «pi@raspberrypi»

Чтобы продолжить, нам нужно проверить, доступна ли нам необходимая библиотека. Для этого мы можем просто запустить команду «stat» ниже, чтобы увидеть, существует ли файл:
Код:
stat /usr/lib/arm-linux-gnueabihf/libisl.so.10
Если эта команда возвращает текст, показанный ниже, вам нужно выполнить некоторые команды а если текст без ошибок то вы можете идти дальше):

stat: cannot stat '/usr/lib/arm-linux-gnueabihf/libisl.so.10': No such file or directory

пишем:
Код:
cd /home/pi/nexmon/buildtools/isl-0.10
./configure
make
make install
ln -s /usr/local/lib/libisl.so /usr/lib/arm-linux-gnueabihf/libisl.so.10
Наш следующий шаг - проверить, работает ли библиотека libmpfr.so.4, выполнив следующую команду:
Код:
stat /usr/lib/arm-linux-gnueabihf/libmpfr.so.4
Если вы получили следующее сообщение, вам нужно будет выполнить следущие команды:
stat: cannot stat '/usr/lib/arm-linux-gnueabihf/libmpfr.so.4': No such file or directory
Код:
cd /home/pi/nexmon/buildtools/mpfr-3.1.4
autoreconf -f -i
./configure
make
make install
ln -s /usr/local/lib/libmpfr.so /usr/lib/arm-linux-gnueabihf/libmpfr.so.4
Теперь, когда две библиотеки, которые нам нужны, установлены и доступны на нашем Raspberry Pi, мы можем приступить к компиляции.

Для начала нам нужно использовать команду «source» и файл «source_env.sh».

Файл «source_env.sh» настроит текущий сеанс bash с переменными среды, которые ожидает make-файл Nexmon:
Код:
cd /home/pi/nexmon
source setup_env.sh
Теперь, когда сеанс bash настроен правильно, давайте запустим команду «make» в корневом каталоге исходного кода nexmon.

Эта команда сгенерирует все необходимые файлы, необходимые для исправления различных версий ядра:
Код:
make
Здесь все немного сложнее. Есть две разные папки, в которые вам нужно будет перейти в зависимости от того, какая у вас версия Raspberry Pi.

Эти папки содержат патчи для текущей версии чипа Broadcom на нашем Raspberry Pi.

Raspberry Pi 3 / Raspberry Pi Zero W
Код:
cd /home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/
Raspberry Pi 3+
Код:
cd /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/
Также для Raspberry Pi 3+ вам нужно будет запустить следующие две команды, находясь в этом каталоге из-за проблемы в make-файле. Это исправление было предоставлено WiredLife с GitHub, вы можете найти больше об этой проблеме ТУТ

Вот собственно команды:
Код:
sed -i -e 's/ifeq ($(findstring 4.9,$(shell uname -r)),4.9)/ifeq ($(findstring 4.9.,$(shell uname -r)),4.9.)/g' Makefile

sed -i -e 's/else ifeq ($(findstring 4.14,$(shell uname -r)),4.14)/else ifeq ($(findstring 4.14.,$(shell uname -r)),4.14.)/g' Makefile
Теперь, когда мы находимся в правильном каталоге, мы можем продолжить и запустить make-файл с помощью команды make.

Выполнение команды make сгенерирует исправленные версии прошивки
Код:
make
Теперь, когда созданы скомпилированные версии исправленной прошивки, давайте продолжим и сделаем резервную копию текущей прошивки, выполнив команду ниже:
Код:
make backup-firmware
Теперь давайте установим прошивку, выполнив следующую команду.

Эта команда заменит текущую прошивку. Однако нам нужно будет внести другие изменения, чтобы драйвер правильно загружался при загрузке:
Код:
make install-firmware
Последнее, что нам нужно сделать, это скомпилировать и установить служебную программу Nexmon.

Для этого мы должны сначала перейти в каталог nexutil:
Код:
cd /home/pi/nexmon/utilities/nexutil
Теперь, когда мы находимся в правильном каталоге, мы можем приступить к компиляции утилиты и установить ее в нашу операционную систему Raspbian:
Код:
make
make install
В этом разделе нам нужно будет отметить версию ядра, которое мы в настоящее время используем, поскольку существуют различные версии драйвера brcmfmac, которые мы можем использовать.

Выполните следующую команду, чтобы получить версию ядра и запомнить первые два числа:
Код:
uname -r
Теперь, когда мы знаем версию ядра, нам нужно найти путь к драйверу по умолчанию.

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

Ниже показано расположение, созданное для нашей системы. Обратите внимание, что мы также удалили файл «brcmfac.ko» из имени каталога.

Запишите это, так как каталог нам понадобится для следующих нескольких шагов:
Код:
filename: /lib/modules/4.14.98-v7+/kernel/drivers/net/wireless/broadcom/brcm80211/brcmfmac/

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

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

Давайте сделаем резервную копию драйвера, выполнив следующую команду. Убедитесь, что вы заменили <kerneldirectory> на каталог, который мы нашли
Код:
mv <kerneldirectory>/brcmfmac.ko <kerneldirectory>/brcmfmac.ko.orig
Теперь, когда мы сделали резервную копию драйвера по умолчанию, мы можем приступить к замене драйвера нашим новым.

Убедитесь, что вы используете правильную команду для используемой версии ядра. Существуют две разные команды в зависимости от того, используете ли вы версию ядра «4.9» или «4.14».

Кроме того, убедитесь, что вы выбрали правильный каталог для версии Pi, которую вы используете.

Как и в предыдущем шаге, убедитесь, что вы заменили <kerneldirectory> на каталог, который вы получили ранее:

Kernel Version 4.9

Raspberry Pi 3 / Raspberry Pi Zero W
Код:
cp /home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac_kernel49/brcmfmac.ko <kerneldirectory>/
Raspberry Pi 3+
Код:
cp /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/brcmfmac_4.9.y-nexmon/brcmfmac.ko <kerneldirectory>/
Kernel Version 4.14

Raspberry Pi 3 / Raspberry Pi Zero W
Код:
cp /home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac_4.14.y-nexmon/brcmfmac.ko <kerneldirectory>/
Raspberry Pi 3+
Код:
cp /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/brcmfmac_4.14.y-nexmon/brcmfmac.ko <kerneldirectory>/
Kernel Version 4.19

Raspberry Pi 3 / Raspberry Pi Zero W
Код:
cp /home/pi/nexmon/patches/bcm43430a1/7_45_41_46/nexmon/brcmfmac_4.19.y-nexmon/brcmfmac.ko <kerneldirectory>/
Raspberry Pi 3+
Код:
cp /home/pi/nexmon/patches/bcm43455c0/7_45_154/nexmon/brcmfmac_4.19.y-nexmon/brcmfmac.ko <kerneldirectory>/
После того, как вы скопировали заменяющий драйвер, исправленный с помощью Nexmon, нам нужно выполнить следующую команду.

Эта команда будет использовать утилиту depmod для воссоздания списка модулей. Это обеспечит загрузку нашего модифицированного драйвера:
Код:
depmod -a
После этого перезагрузите Raspberry Pi, используя следующую команду:
Код:
sudo reboot
Один из способов проверить, работает ли исправление должным образом, - это проверить, есть ли «монитор» в списке поддерживаемых интерфейсов.

Вы можете сделать это, сначала получив физический идентификатор интерфейса wlan, используя команду ниже:
Код:
iw dev
Запишите физический номер вашего интерфейса wlan0, в нашем случае это был «phy # 0»

Теперь доступен физический идентификатор. Выполните следующую команду, чтобы получить всю информацию об этом устройстве.

Убедитесь, что вы заменили phy0 на правильный для вашего интерфейса wlan0
Код:
iw phy0 info
Эта команда сбросит массу информации о вашем беспроводном интерфейсе. Однако есть только один раздел, который мы хотим исследовать.

Этот раздел является разделом «Supported interfaces modes:». Здесь вы хотите увидеть, есть ли «*monitor».

Если текст присутствует, это означает, что исправления прошивки Nexmon работают должным образом и позволили беспроводной сети Raspberry Pi перейти в режим монитора.

Теперь установим Nexmon-SDR (работает только на 3 малинке модели B+)
Копируем репозиторий:
Код:
git clone https://github.com/seemoo-lab/nexmon.git
Перейдите в ранее клонированный каталог nexmon и запустите:
Код:
source setup_env.sh
Компилируем:
Код:
make
Переходим клонированый репозиторий и ищем в нем папку "utilities", нашли? Отлично пишите:
Код:
make
Опять переходим в главную директорию nexmon и ищем теперь папку "patches" в ней "bcm43455c0" а уже в ней "7_45_154"
В последней папке запускаем терминал и пишем:
Код:
git clone https://github.com/seemoo-lab/mobisys2018_nexmon_software_defined_radio.git
Войдите в созданный подкаталог mobisys2018_nexmon_software_defined_radio и запустите:
Код:
make

Скопируйте компилированый файл brcmfmac43455-sdio.bin на свой пи

Это конечно не HackRF One но функионал и диапазон поражают , да и собсвенно вы выдели цены на HackRF One? Бюджетным я бы это устройство не назвал. А з нашим любимым микрокомпьютером все намного лучше стоит она дешево а делает очень много полезного)

Саму Raspberry Pi, то ее можно превратить в радиопередатчик и при помощи утилиты rpitx. Она подает сигнал от 5 кГц до 1500 МГц на пины GPIO, к которым можно подключить антенну что усиливает мощность сигнала.

Экспериментируя со всем этим, не забывай, что вещание без лицензии за пределами экранированного помещения чреваты злыми дядями
.

Вот собственно видео: ТЫК


В этой статье мы установили обычный Nexmon в нем уже можно делать много чего интересного например: перехват пакетов, инжект фреймов и еще многое. Но также мы установили Nexmon-SDR и теперь сможем иследовать радиоволны и непосредсвенно влиять на них. Данный материал ексклюзив вы не найдете нигде такой. Соответсвенно я на него поторатил много сил и времени, надеюсь ваши симпатии это компенсируют.

Спасибо за внимание!
 
Последнее редактирование:

alast0r

Green Team
27.05.2020
31
14
BIT
0
Начало статьи взято , что огорчило.
Извиняюсь просто сам я работал в основном над теорией и практикой и для того что-бы облегчить работу был копипаст
UPD: Все исправил
 
Последнее редактирование:
17.02.2024
1
0
BIT
59
Hello, I read your article about installing Nexon, can anyone tell me how to install Nexon on Android using which Linux Ubutnu utility, which version so that there are no errors, thanks in advance for your answer
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!