Статья Делаем USB-Backdoor из Raspberry Pi Zero W и P4wnP1

Доброго времени суток дорогие друзья. В этом посте я хочу показать, как собрать небольшой гаджет, используя Raspberry Pi Zero W. Суть которого будет заключаться в создание USB-Backdoor-а.

Прошу обратить внимание, что этот проект предназначен только для образовательных целей!

Что вам нужно:
  • Raspberry Pi Zero W
  • Micro-SD карта
  • USB-шнурок(USB-MicroUSB)
  • Последняя версия Raspbian (достаточно версии Lite)
  • Программное обеспечение P4wnP1
Особенности P4wnP1:
  • Скрытый канал HID Frontdoor / Backdoor: Удаленный доступ к ОС Microsoft Windows через устройства HID
  • Windows 10 Lockpicker: Разблокировка ОС Microsoft Windows со слабыми паролями (полностью автоматизировано).
  • Кража учетных данных браузера: Крадет учетные данные из браузера и копирует их на встроенную SD-карту.
  • Доступ к SSH по Wi-Fi, поддерживает скрытый ESSID.
  • Эмуляция USB-устройства. Работает с поддержкой Windows Plug and Play. Поддерживает следующие типы устройств:
    • HID Клавиатура / Мышь.
    • Запоминающее устройство USB: в настоящее время только в демонстрационной конфигурации с 128-мегабайтным диском.
    • RNDIS: сеть Microsoft Windows.
    • CDC ECM: сеть MacOS / Linux.
  • Скрипты полезной нагрузки на основе Bash.
  • John the Ripper Jumbo. Готовая версия скомпилирована!
  • Интеграция с AutoSSH: для простых обратных туннелей ssh.
  • Обратная связь через состояния светодиодов с помощью простой команды bash ( led_blink).
  • Расширенные функции HID:
    • Полезные нагрузки клавиатуры, которые могут быть вызваны индикаторами основной клавиатуры (NUMLOCK, CAPSLOCK и SCROLLLOCK).
    • Динамическое разветвление полезной нагрузки на основе светодиодных триггеров
    • Поддерживает DuckyScripts!
    • Поддержка многоязычной раскладки клавиатуры (не нужно беспокоиться о целевом языке при использовании команд HID).
    • Загрузка начинается, когда загружается целевой драйвер клавиатуры (нет необходимости в ручных задержках, onKeyboardUpобратный вызов может использоваться в полезных нагрузках).
    • Поддерживает MouseScript.
Расширенные возможности сети:
  • Фальшивый сетевой интерфейс RNDIS со скоростью до 20 ГБ/с обеспечивает минимальную метрику и выигрывает каждый бой за доминирующую запись «шлюза по умолчанию» в таблицах маршрутизации при проведении сетевых атак.
  • Автоматическое обнаружение канала и переключение интерфейса, если полезная нагрузка включает как RNDIS, так и сеть ECM.
  • Сервер SSH работает по умолчанию, поэтому P4wnP1 может быть подключен к 172.16.0.1 (при условии, что полезная нагрузка включает RNDIS, CDC ECM или оба) или к 172.24.0.1 через WiFi.
Расширенные функции полезной нагрузки:
  • Полезные нагрузки bash на основе обратных вызовов ( template.txt подробности см. в полезной нагрузке).
  • onNetworkUp (когда целевой хост активирует сетевое соединение).
  • onTargetGotIP (если цель получила IP, доступ к IP можно получить из скрипта полезной нагрузки.
  • onKeyboardUp (когда установка драйвера клавиатуры на цели завершена и клавиатура используется).
  • onLogin (когда пользователь входит в P4wnP1 через SSH).
Конфигурация может быть выполнена глобально ( setup.cfg) или перезаписана для каждой полезной нагрузки (если тот же параметр определен в скрипте полезной нагрузки).

Настройки включают в себя:
  • Конфигурация USB (идентификатор поставщика, идентификатор продукта, типы устройств для включения…).
  • Конфиг WiFi (SSID, пароль…).
  • HID клавиатура (целевой язык клавиатуры и т. д.).
  • Конфигурация сети и DHCP.
  • Выбор полезной нагрузки.
В чем преимущества P4wnP1 от Rubber Ducky:
  • У вас есть возможность обрабатывать Ducky Script , встроенный в полезную нагрузку(bash).
  • У вас также есть возможность запускать собственные полезные нагрузки клавиатуры, когда происходит событие, такое как нажатие клавиши.
  • При установке на Raspberry Pi Zero W клавиатурные атаки также могут осуществляться с помощью WiFi, порождая точку доступа.
  • Многоязычная поддержка через глобальную переменную полезной нагрузки!
Установка
Шаг 1: Загрузка и установка Raspbian:

Первым шагом является загрузка и установка последней версии Raspbian (lite) и прошивка на SD-карту.
  • Сначала скачаем Raspbian Stretch Lite.
Raspbian Stretch Lite - это «облегченная» версия операционной системы для Raspberry Pis. «Lite» означает, что в ОС просто нет рабочего стола с графическим интерфейсом, поэтому мы будем делать все через командную строку.

Скачать прошивку можно отсюда:
  • Следующим шагом установка Etcher.
Etcher - потрясающий инструмент, созданный Resin.io, который позволяет записывать изображения на SD-карты и USB-накопители. В этом случае мы будем использовать его для прошивки ОС Stretch Light на карту MicroSD.
  • Откройте Etcher. Выберите ваш образ Stretch Light и и прошейте свою SD-карту.
    25180
  • Извлеките и заново вставьте свою SD-карту. Этот шаг необходим только потому, что Etcher автоматически отключает SD-карту.
Перед тем, как вставить карту microSD в Pi, нам нужно отредактировать несколько файлов.

Шаг 2. Настройка образа.
  • Сначала мы добавим файл wpa_supplicant.conf, чтобы система могла подключиться к нашей точке доступа Wi-Fi. Создайте файл в текстовом редакторе, я использую Notepad++ ( ).
Добавьте следующий текст, заменив ssid и psk правильными значениями для вашей точки Wi-Fi:
Код:
country=US
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
ssid="Ваше имя точки"
scan_ssid=1
psk="Ваш пароль от Wi-Fi точки"
key_mgmt=WPA-PSK
}
  • Наконец, добавьте пустой файл с именем «ssh» (без расширения файла) в загрузочный раздел, чтобы включить SSH при старте системы.
25182


Извлеките SD-карту и вставьте ее в Pi Zero W. Вставьте штекер адаптера питания в разъем питания Pi Zero W и дождитесь загрузки(это займет около минуты).

Теперь нам нужно найти IP-адрес Pi Zero W в нашей сети. Вы можете использовать любой сетевой сканер. И поступаю также, как и при поиске IP уязвимых машин, а именно перехожу в настройки роутера и ищу пункт аренда DHCP.

25184


После получение IP нашей малины мы можем подключиться к ней по SSH. P.S. Логин: pi Пароль: raspberry

25185


25187


Шаг 3. Установка P4wnP1:
Команды для установки P4wnP1:
Код:
sudo apt-get -y install git
cd /home/pi/
git clone --recursive https://github.com/mame82/P4wnP1
cd P4wnP1/
./install.sh
25188


25189


Шаг 4. Подключение к P4wnP1 после установки:
Мы можем подключиться к P4wnP1 без проводов, используя SSID «P4wnP1» и учетные данные «MaMe82-P4wnP1», или, поскольку гаджет включен в наш USB порт, мы можем просто подключиться через Putty, используя 172.16.0.1 в качестве IP-адреса.

25190


Хорошо! Мы подключились опять к своей малинке Pi после запуска установки P4wnP1, и теперь нам нужно настроить нашу первую полезную нагрузку! Вводим команды:
Код:
cd P4wnP1/
sudo nano setup.cfg

Мы должны увидеть много разных опций, но сейчас давайте сосредоточимся на нижней части файла setup.cfg.
В нижней части файла вы должны увидеть что-то похожее на это:
Код:
PAYLOAD=network_only.txt
...
#PAYLOAD=hid_backdoor

25192


Продолжайте, закомментируйте полезную нагрузку network_only.txt и раскомментируйте hid_backdoor.
Код:
#PAYLOAD=network_only.txt
...
PAYLOAD=hid_backdoor

25193


25194


На этом пожалуй все). Если у вас есть какие-либо вопросы, пожалуйста, оставьте комментарий ниже.

Видео с настройкой и демонстрацией.

 
Последнее редактирование:

Debug

Red Team
07.07.2017
217
445
BIT
5
В Шаге 2 не понял куда вставить созданный wpa_supplicant.conf?
Если не ошибаюсь в корень SD-Карты

Может кто сталкивался с такой проблемой? RPi0w не видит роутер, соседские видит, а мой нет. У меня Keenetic Giga III работает на частоте 802.11bgn. Так же раздаю вайфай с телефона и его тоже не видит.
Напишите в личку, попробуем решить проблему
 
  • Нравится
Реакции: Melinio

Melinio

One Level
03.12.2019
6
1
BIT
0
В общем после танцев с бубном пару проблем решил, может кому пригодится.
1. Если не видит роутер то надо поменять канал, у меня стоял 13 статичный, поставил 7 и малинка увидела.
2. Не подключалось к Wifi после перезапуска.
Вот нашел решение этой проблемы:
В первую очередь следует посмотреть, что указано в файле interfaces, который находится в каталоге /etc/network. Там есть секция wlan0, и в ней должно быть указано следующее:
Код:
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
Практически всегда в файле присутствуют именно такие записи, однако, если они другие, то нужно заменить на указанные. Важно: необходимо быть внимательным, чтобы не удалить/заменить ничего лишнего.

А всё остальное по мануалу.

Осталась одна не решенная проблема, не видит точку доступа мобилы( Там к сожалению канал нельзя поменять в настройках.
Есть конечно вариант прицепить 2 вифи адаптера (первый подключаться к мобиле, второй монитор), но лучше конечно до настроить встроенный вифи адаптер.
 

Debug

Red Team
07.07.2017
217
445
BIT
5
В общем после танцев с бубном пару проблем решил, может кому пригодится.
1. Если не видит роутер то надо поменять канал, у меня стоял 13 статичный, поставил 7 и малинка увидела.
2. Не подключалось к Wifi после перезапуска.
Вот нашел решение этой проблемы:
В первую очередь следует посмотреть, что указано в файле interfaces, который находится в каталоге /etc/network. Там есть секция wlan0, и в ней должно быть указано следующее:
Код:
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
А всё остальное по мануалу.

Осталась одна не решенная проблема, не видит точку доступа мобилы( Там к сожалению канал нельзя поменять в настройках.
Есть конечно вариант прицепить 2 вифи адаптера (первый подключаться к мобиле, второй монитор), но лучше конечно до настроить встроенный адаптер.
5 минут назад хотел предложить сменить канал) Удачи в экспериментах
 
  • Нравится
Реакции: Melinio

Melinio

One Level
03.12.2019
6
1
BIT
0
В общем я не знаю что делать. Пробовал на Мейзу M5 Note делать точку доступа и на Redmi Note 8 pro и на Redmi Note 5.
Не одну мобильную точку доступа не видит.
Можно как-то решить эту проблему?
 

Debug

Red Team
07.07.2017
217
445
BIT
5
В общем я не знаю что делать. Пробовал на Мейзу M5 Note делать точку доступа и на Redmi Note 8 pro и на Redmi Note 5.
Не одну мобильную точку доступа не видит.
Можно как-то решить эту проблему?
Другие устройства подключаются к созданной ТД?
 

Debug

Red Team
07.07.2017
217
445
BIT
5
Как то так, аппарат Redmi Note 8 pro.
Думаю вам стоит обратится на тематические форумы(посвящённые малинке) и попытаться там решить свою проблему.
 

SkyN0c1ip

New member
10.05.2019
3
0
BIT
8
Все получилось кроме последних действий. Командой SetKeyboardLanguage устанавливал и RU и EN. Но после команды FireStage1 выходит вот это:

Код:
P4wnP1 shell (client not connected) > FireStage1

Starting to type out stage1 to the target...
Traceback (most recent call last):
  File "P4wnP1.py", line 1346, in <module>
    p4wnp1.cmdloop()
  File "/usr/lib/python2.7/cmd.py", line 142, in cmdloop
    stop = self.onecmd(line)
  File "/usr/lib/python2.7/cmd.py", line 221, in onecmd
    return func(arg)
  File "P4wnP1.py", line 746, in do_FireStage1
    self.stage1_trigger(trigger_type=trigger_type, trigger_delay_ms=trigger_delay_ms, hideTargetWindow = hideTargetWindow, bypassUAC=bypassUAC)
  File "P4wnP1.py", line 466, in stage1_trigger
    self.duckencoder.outhidDuckyScript(ps_stub) # print DuckyScript stub
  File "/home/pi/P4wnP1/hidtools/backdoor/DuckEncoder.py", line 428, in outhidDuckyScript
    self.out2hid(payload)
  File "/home/pi/P4wnP1/hidtools/backdoor/DuckEncoder.py", line 398, in out2hid
    f.flush()
IOError: [Errno 4] Interrupted system call
Cleaning Up...
LinkLayer: Aborting sync

Windows 10 версия 1909 (сборка ОС 18363.720).

Кто может подсказать как это исправить? Или в какую сторону копать?
 

wurdalak

Green Team
21.12.2019
18
2
BIT
0
кто ставил
как на время отключить раздачу вафли и подключиться к своему вафелу для неких обновлений ?
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf добавил отредактировал не помогло.
 

wurdalak

Green Team
21.12.2019
18
2
BIT
0
кто ставил
как на время отключить раздачу вафли и подключиться к своему вафелу для неких обновлений ?
sudo nano /etc/wpa_supplicant/wpa_supplicant.conf добавил отредактировал не помогло.
Вопрос отпадает сделал как тут всё заработало
 

Tafi

Member
30.07.2020
24
0
BIT
0
Добрый день.
Объясните мне чайнику как это работает.
Получается, что атакуемый и атакующий компьютер должны быть подключены к сети Raspberry Pi Zero W ?
Или же атакуемый компьютер может быть подключен к любой сети?
Заранее спасибо за ответ
 

Debug

Red Team
07.07.2017
217
445
BIT
5
Добрый день.
Объясните мне чайнику как это работает.
Получается, что атакуемый и атакующий компьютер должны быть подключены к сети Raspberry Pi Zero W ?
Или же атакуемый компьютер может быть подключен к любой сети?
Заранее спасибо за ответ
Атакуемый компьютер может быть подключён к любой сети.
 
  • Нравится
Реакции: Tafi
07.09.2019
84
10
BIT
0
  1. Столкнулся с тем, что rpi0w просто не подключалась к WiFi. Решил использованием этого шаблона

    Код:
    ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdevupdate_config=1
    country=RU
    
    network={
    ssid="ИМЯ_ТОЧКИ_ДОСТУПА"
    psk=656c4700f528aced39b853b3c51b3fdcfc55409faa83a6402e936842237ac6f3
    }
    network={
    ssid="ИМЯ_ТОЧКИ_ДОСТУПА2"
    psk="ПАРОЛЬ"
    }
    Проблема решилась

  2. Ошибка ... [Error] Pi is not running Raspbian Jessie or Stretch! Exiting ... решилась, очевидно, установкой
  3. Здесь уже у меня затуп. После установки P4wnP1 и перезагрузки... С малинкой связи нет. Ни AP не создает, ни подключается к ранее подключаемой WiFi точке
P.S. У меня китайская USB Addon Board
 
Мы в соцсетях:

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