Wi-Fi Pineapple. Створення апаратної закладки для спостереження та атак

19.03.2024 3 хвилин Автор: Cyber Witcher

Ми розглянемо складання апаратної закладки, яка не вимагатиме прямого доступу до систем, що атакуються – Wi-Fi Pineapple. Крім того, ми вивчимо, як цей пристрій може бути задіяний не тільки при атаках на Wi-Fi мережі, але і як IP-камера для спостереження за об’єктами.

Список обладнання

  • Камера, що завалялася на полицях, що працює на стеку протоколів UPnP(Universal Plug and Play);

  • Raspberry Pi Zero 2 (W – опціонально);

  • пасивний USB хаб;

  • USB-модем;

  • Джерело живлення.

Встановлення ОС

У цьому, як і в будь-якому іншому проекті, вибір ОС для одноплатників – справа суто індивідуальна . Я б радив дивитися у бік DietPi у тому випадку, якщо вам потрібен максимально легкий та ненавантажений образ, та у бік Kali-ARM у випадку, якщо ви плануєте використовувати інструментарій Kali , який постачається з коробки. Подальший гайд будуватиметься на Raspberry Pi Zero 2 W з Kali на борту .

  1. Завантажуємо готовий образ з https://www.kali.org/get-kali/#kali-arm та за допомогою Rufus або іншого подібного програмного забезпечення завантажуємо його на MicroSD картку.

  2. Вставляємо MicroSD у відповідний соккет на платі та підрубуємо монітор, клавіатуру та живлення. Якщо ви використовуєте Raspberry Pi Zero, доведеться придбати кілька OTG – {ваш_сокет} – mini-HDMI(X1), {ваш_сокет} – micro-USB(X2), а також кілька пропорційних радіаторів, щоб температура процесора не вивалювалася за допустимі рамки.

  3. Зараз Kali повинна завестися, якщо раптом ви отримуєте помилкуKernel panic - not syncing: VFS: Unable to mount root fs on unknown- block(179,6) , швидше за все справа в поганій microSD картці , не знаю чому так, але я сам деякий час боровся з цією помилкою, купивши картку Kingston з Озона за 400 дерев’яних вічно.

Мережа

Налаштування модему:

Для того, щоб ми не були пов’язані з малиною однією мережею і могли ходити на неї, де б ми не знаходилися, необхідно дати малині доступ до Інтернету. З цим чудово справляється звичайнісінький 4G-модем .

Для того, щоб не танцювати з бубном під час спроби підключення до модемівської Wi-Fi мережі при буті, зробимо з модему зовнішню мережну карту . Для цього нам при кожному запуску необхідно активувати мережний інтерфейс модему , прописавши в / etc / network / interfaces наступні рядки:

sudo nano /etc/network/interfaces

Тунель VPN:

Налаштування OpenVPN починається з генерації ключів. Ключі, що генеруються, діляться на:

    • Головний CertificateAuthority (CA) сертифікат та ключ , що використовується для підписання кожного сертифіката сервера та клієнта.

    • Публічний та приватний ключі для сервера та кожного клієнта окремо.

VPS:

Встановлюємо пакет OpenVPN :

sudo apt install openvpn

За допомогою Easy-RSA створюємо серверні ключі та сертифікатиmake-cadir /etc/openvpn/easy-rsa– Копіюємо шаблонну директорію easy-rsa /etc/openvpn/.

Переходимо в скопійовану директорію та виконуємо наступні команди./easyrsa init-pki– Ініціалізуємо структуру каталогів та файлів для керування відкритими ключами.

Вивід ./easyrsa init-pki

./easyrsa build-ca– Створюємо самопідписаний центр сертифікації (CA), який буде використовуватись для підпису сертифікатів.

Вивід ./easyrsa build-ca

./easyrsa gen-dh– Генеруємо файл параметрів обміну ключами Diffie-Hellman (DH) для використання у процесі встановлення безпечного з’єднання.

Вивід ./easyrsa gen-dh

./easyrsa gen-req ovpn-server nopass– Генеруємо запит створення сертифіката для сервера OpenVPN, використовуючи ім’я “ovpn-server”, без запиту пароля.

./easyrsa gen-req ovpn-сервер без пропуску

./easyrsa sign-req server ovpn-server– Підписуємо запит на сертифікат для сервера OpenVPN за допомогою CA за допомогою попередньо визначених налаштувань.

./easyrsa sign-req server ovpn-server output

./easyrsa gen-req pi_zero nopass– Генеруємо запит на створення сертифікату клієнта з ім’ям “pi_zero” без пароля.

./easyrsa gen-req pi_zero nopass вихід

./easyrsa sign-req client pi_zero– Підписуємо запит на сертифікат для клієнта з ім’ям pi_zero з використанням CA.

./easyrsa sign-req клієнт pi_zero вихід

Створюємо конфігураційний файл для сервера OpenVPN (/etc/openvpn/server.conf):

port 1194
proto udp
dev tun
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/ovpn-server.crt
key /etc/openvpn/keys/ovpn-server.key
dh /etc/openvpn/keys/dh.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3

Запускаємо OpenVPN сервер:

  • systemctl start openvpn@server– Запускаємо демона;

  • systemctl enable openvpn@server– Включаємо автозапуск демона при буті системи.

Перевіряємо чи піднявся інтерфейс через ip a:

ip a

Raspberry Pi:

Встановлюємо OpenVPN:

sudo apt install openvpn

За допомогою csp перекидаємо ключі та сертифікати на малинку:

scp user@your_vps_ip:/path/to/your/files/ca.crt /path/on/your/computer
scp user@your_vps_ip:/path/to/your/files/pi_zero.key /path/on/your/computer
scp user@your_vps_ip:/path/to/your/files/pi_zero.crt /path/on/your/computer

Створюємо файл конфігурації для клієнта OpenVPN (client.ovpn):

client
dev tun
proto udp
remote your_vps_ip 1194
resolv-retry infinite
nobind
user nobody
group nogroup
persist-key
persist-tun
ca ca.crt
cert client.crt
key client.key
cipher AES-256-CBC
comp-lzo
verb 3

Пробуємо підняти тунель ручками:

sudo openvpn --config client.ovpn

Якщо все піднялося, і ми можемо з впскі пінганути малинку , можемо рухатися далі. Тепер нам необхідно зробити так, щоб тунель піднімався під час запуску малини , для цього створимо systemd unit файл для клієнтського з’єднання ( /etc/systemd/system/openvpn-client.service ):

[Unit]

Description=OpenVPN to VPS After=network.target

[Service]

Type=simple ExecStart=/usr/sbin/openvpn --config /path/to/client.ovpn

[Install]

WantedBy=multi-user.target

Про всяк випадок, щоб уникнути появи критичних помилок, ми можемо додати ще дві опції в секцію [Service]:

Опція Restart=alwaysв systemd встановлює правило перезапуску служби завжди, навіть у разі аварійного завершення роботи. А опція RestartSec=3встановлює час затримки перед повторним запуском служби за секунди.

Перезапускаємо systemd:

systemctl daemon-reload

Запускаємо та активуємо написаний демон:

systemctl start openvpn-client systemctl enable openvpn-client

Переадресація портів SSH:

Для того, щоб зробити портфорвардинг з одного інтерфейсу в інший на інший, ми можемо скористатися SSH. Для цього нам буде достатньо однієї команди, виконаної на VPS:

ssh -f -N -L 0.0.0.0:90:raspberry_ip:90 user@raspberry_ip

Про те, чому прокидаємо саме 90 порт, буде написано трохи пізніше. Ми можемо або зробити аналогічний з попереднім демоном, або запускати цю команду, коли нам необхідно, прапор -f підніме тунель у фоновому режимі.

Якщо вам знадобиться реалізувати портфорвардинг через демон, необхідно буде налаштувати автентифікацію з використанням ключів. Для цього спочатку генеруємо на впске ключі, а потім закидаємо їх на малинку:

ssh-keygen
ssh-copy-id user@raspberry_ip

Рух

Установка:

Motion – це програма, яка відстежує відеосигнал з однієї або декількох камер, здатна виявити, чи змінилася значна частина зображення.

Завантажити вже зібраний .deb пакет можна за посиланням (нас цікавить версія під архітектору ARM64 – *_motion_4.6.0-1_arm64.deb): https://github.com/Motion-Project/motion/releases/tag/release-4.6.0

Альтернатива – скачати motion через пакетний менеджер apt:

sudo apt install motion

Як зазначалося, для роботи підійде будь-яка UpNP камера. Для того, щоб перевірити працездатність та сумісність камери, ми можемо скористатися інструментом v4l2-ctl, що встановлюється через пакетний менеджер APT – sudo apt _install_ v4l-utils.

Нижче показано два висновки, якщо ви отримуєте помилку “Cannot open device /dev/video0, exiting”, через lsusb перевіряйте чи бачить система вашу камеру.

Тестування камери

Файл конфігурації:

Основний файл конфігурації motion.conf знаходиться в директорії /etc/motion. Нижче розписані всі прапори, які знадобляться нам при початковому налаштуванні motion, для самостійного вивчення йдемо в документацію ( https://motion-project.github.io/motion_config.html ):

  • daemon on: Цей параметр включає режим демона, тобто motion буде працювати у фоновому режимі як служба.

  • stream_port 90: Встановлює порт, на якому буде доступний стрім з відео.

  • stream_quality 100: Визначає якість відеопотоку (від 1 до 100, де 100 – максимальна якість).

  • stream_maxrate 20: Обмежує максимальну швидкість потоку відео в кадрах за секунду.

  • stream_localhost off: Дозволяє віддаленим пристроям переглядати відеопотік.

  • stream_limit 0: Визначає обмеження кількості підключень до відеопотоку.

  • width 1280, height 720: Визначають ширину та висоту кадру відеопотоку (Виставляє по максималці, яку підтримує ваша камера).

  • framerate 20: Встановлює частоту кадрів за секунду.

  • locate_motion_mode on, locate_motion_style redbox: Показує область руху на відео за допомогою червоного прямокутника.

  • stream_auth_method 1: Вибирає метод аутентифікації (1 – базова аутентифікація).

  • stream_authentication user:pass: Встановлює ім’я користувача та пароль для доступу до потоку відео.

Тестування руху:

Пробуємо запускати motion:

sudo motion -b

Якщо все успішно запустилося, ми можемо спробувати зайти по айпішці vps’ки на stream_port, який ми вказали в конфіг файлі (у мене 90) і перевірити наскільки успішно все завелося:

Для запуску motion при ребуті додаємо в кронтаб наступний рядок:

@reboot motion -b

Тепер залишилося тільки замикати камеру так, щоб об’єкт спостереження нічого не помітив, уявляю варіант, який я використав, щоб затестіти наскільки безпально її можна сховати:

В ідеалі її можна засунути прямо над об’єктом спостереження , це без зайвого клопоту та іншого хардварного капелюха допоможе дізнатися, що і коли вводив на клавіатурі об’єкт спостереження.

Бонусна частина

Використавши маленький пасивний хаб для підключення камери з модемом, у нас залишилося ще як мінімум два USB порти , куди можна встромити зовнішній Wi-Fi адаптер з режимом монітора:

Альфа Мережа AWUS036AC
Складання з Raspberry Pi 4B.

А для щасливих власників Raspberry Pi Zero 2 W із вбудованим Wi-Fi адаптером, гарною новиною буде той факт, що його вбудований адаптер можна перепрошувати та користуватися ним у режимі монітора. Прошивку можна знайти тут: https://re4son-kernel.com/

До речі, як одне зі спостережень – збірка, що вийшла, чудово працює не тільки на Raspberry Pi Zero, але, навіть якщо просто переставити microSD картку в Raspberry Pi 4B, все буде працювати так само безвідмовно.

Висновок:

Звичайно можна зібрати пристрій за допомогою маленької камери, призначеної спеціально для роботи з малиною, а в якості акумулятора взяти дрібний літій-іонний акумулятор розміром з саму малинку, але у нас була стаття з виготовлення максимально кустарного і панківського пристрою, який виглядає не дуже презентабельно але чудово виконує всі поставлені завдання. За образом і подобою можете експериментувати із залізницею самостійно, пробуючи різні модулі та комплектуючі!

Підписатися
Сповістити про
0 Коментарі
Найстаріші
Найновіше Найбільше голосів
Знайшли помилку?
Якщо ви знайшли помилку, зробіть скріншот і надішліть його боту.