• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Статья 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: Все исправил
 
Последнее редактирование:
Мы в соцсетях:

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