Burn-in рутовый шелл в IP-камерах Vesta и не только

    Так получилось, что передо мной встала задача записывать и хранить видео с IP-камер. Были закуплены и смонтированы камеры Vesta VC-6206 IR без представления архитектуры информационной системы на их основе. Совсем короткий период эксплуатации показал, что камеры имеют свойство зависать и неплохо бы их перезагружать периодически. nmap показывал, что у камеры доступен только telnet, http и rtsp. Ребутать камеру телнетом по крону показалось мне неплохим решением, но рутовый пароль техподдержка дать отказалась.

    Коротко о применении камер


    В планах заказчика было подружить эти камеры с zoneminder на линуксовом сервере, но zoneminder поддерживает RTSP плоховато, через внешние фильтры слишком обильно расходует shared memory (при разрешении-то в 1920*1080). Саппорт сообщал, что никак не поддерживает работу с линуксом. В итоге было решено писать видео с помощью cvlc порциями по 10 минут с небольшим нахлёстом. Всё отлично, видео пишется, CPU не загружен совсем — поток итак прилетает в H264 и перекодировать не нужно, но вот только зависает часто.

    Власти скрывают


    Даже андроид и айфон не дают пользователю под рутовые привилегии, но в моем случае полный доступ был обоснованно необходим. Тот факт, что доступ через телнет всегда открыт и поддержка не говорит пароль, заставляет задуматься. Я скачал прошивку, распаковал zip, которым она являлась, увидел cramfs-образа внутри:
    # file VC-6206_V4.00.R10.20130129-WiFi.bin
    VC-6206_V4.00.R10.20130129-WiFi.bin: Zip archive data, at least v2.0 to extract
    # unzip VC-6206_V4.00.R10.20130129-WiFi.bin
    Archive: VC-6206_V4.00.R10.20130129-WiFi.bin
    inflating: Install
    inflating: web-x.cramfs.img
    inflating: custom-x.cramfs.img
    inflating: user-x.cramfs.img
    inflating: logo-x.cramfs.img
    inflating: romfs-x.cramfs.img
    inflating: InstallDesc

    На вкус действительно как cramfs:
    # file web-x.cramfs.img
    web-x.cramfs.img: u-boot legacy uImage, linux, Linux/ARM, Standalone Program (gzip), 1310656 bytes, Tue Jan 29 12:50:53 2013, Load Address: 0x023E0000, Entry Point: 0x02520000, Header CRC: 0xD2BAE056, Data CRC: 0x29F4363A

    Я попытался примонтировать эти образы, но потерпел неудачу:
    # mount -o loop -t cramfs romfs-x.cramfs.img /mnt
    mount: wrong fs type, bad option, bad superblock on /dev/loop5,
    missing codepage or helper program, or other error
    In some cases useful info is found in syslog — try
    dmesg | tail or so
    root@server:~/VC-6206_V4.00.R10.20130129-WiFi# dmesg | tail -3
    [ 168.201350] fuse init (API version 7.13)
    [ 171.240014] eth0: no IPv6 routers present
    [48915.272594] cramfs: wrong magic

    Благодаря хабраюзеру philpirj и его посту, жить стало лучше, жить стало веселей:
    for i in *.img ; do mkdir -p /mnt/fw/`basename $i .img` ; dd if=$i of=$i.cut bs=8 skip=8 ; mount -o loop -t cramfs $i.cut /mnt/fw/`basename $i .img` ; done
    

    В образе самой системы (romfs-x.cramfs.img) я первым делом обратил внимание на упакованный UPX-ом telnetd. Распаковал его, сделал на него strings, но не нашёл там захардкоженных паролей и потерял к нему интерес.
    Нашёлся вот такой /etc/passwd:
    root:absxcfbgXtb3o:0:0:root:/:/bin/sh
    

    Удобно. John The Ripper из пакета в дебиане перебирал DES128 со скоростью всего лишь 1800K c/s, после пересборки его с OpenMP и sse2 стало 6300K c/s. К концу дня john закончил и у меня появился рутовый пароль, который подходит ко всем камерам с такой прошивкой и зашит жёстко в неё.

    Успех


    Пароль подошёл, конечно же:
    root@server:/mnt/cramfs/user-x.cramfs# telnet 192.168.1.11
    Trying 192.168.1.11…
    Connected to 192.168.1.11.
    Escape character is '^]'.

    LocalHost login: root
    Password:
    # cat /proc/cpuinfo
    Processor: ARM926EJ-S rev 5 (v5l)
    BogoMIPS: 148.27
    Features: swp half thumb fastmult edsp java
    CPU implementer: 0x41
    CPU architecture: 5TEJ
    CPU variant: 0x0
    CPU part: 0x926
    CPU revision: 5
    Cache type: write-back
    Cache clean: cp15 c7 ops
    Cache lockdown: format C
    Cache format: Harvard
    I size: 16384
    I assoc: 4
    I line length: 32
    I sets: 128
    D size: 8192
    D assoc: 4
    D line length: 32
    D sets: 64

    Hardware:
    Revision: 3650000
    Serial: 0000000000000000
    # ps w
    PID Uid VSZ Stat Command
    1 root 3728 S init
    2 root SW [posix_cpu_timer]
    3 root SW [softirq-high/0]
    4 root SW [softirq-timer/0]
    5 root SW [softirq-net-tx/]
    6 root SW [softirq-net-rx/]
    7 root SW [softirq-block/0]
    8 root SW [softirq-tasklet]
    9 root SW [softirq-hrtimer]
    10 root SW [softirq-rcu/0]
    11 root SW< [desched/0]
    12 root SW< [events/0]
    13 root SW< [khelper]
    14 root SW< [kthread]
    26 root SW< [kblockd/0]
    27 root SW< [kseriod]
    36 root SW< [khubd]
    93 root SW [pdflush]
    94 root SW [pdflush]
    95 root SW< [kswapd0]
    96 root SW< [aio/0]
    97 root SW< [cifsoplockd]
    98 root SW< [cifsdnotifyd]
    715 root SW [mtdblockd]
    750 root SW< [kmmcd]
    797 root SWN [jffs2_gcd_mtd7]
    822 root 1576 S /sbin/syshelper 25
    826 root 3732 S /sbin/telnetd
    828 root 2744 S /utils/upgraded
    829 root 3516 S /sbin/searchIp
    922 root 103628 S /usr/sbin/fvideoencoder -i 2 -s 6 -d 0 -o 1 -h 2 -g 2 -l 81 -t 8 -j 1 -a 3 -b 40
    923 root 11596 S /usr/sbin/a1ewtest
    938 root 12772 S wlandaemon
    943 root 3728 S /bin/sh /usr/etc/dup_app.sh
    945 root 1396 S dupc /usr/bin/Sofia
    946 root 372884 S /usr/bin/Sofia
    1137 root 3732 S -sh
    1139 root 3732 R ps w
    # cat /mnt/mtd/Config/Account1
    {
    «Groups»: [
    {
    «AuthorityList»: [
    «ShutDown»,
    «ChannelTitle»,
    «RecordConfig»,
    «Backup»,
    «StorageManager»,
    «Account»,
    «SysInfo»,
    «QueryLog»,
    «DelLog»,
    «SysUpgrade»,
    «AutoMaintain»,
    «GeneralConfig»,
    «EncodeConfig»,
    «CommConfig»,
    «NetConfig»,
    «AlarmConfig»,
    «VideoConfig»,
    «PtzConfig»,
    «PTZControl»,
    «DefaultConfig»,
    «Talk_01»,
    «Monitor_01»,
    «Replay_01»
    ],
    «Memo»: «administrator group»,
    «Name»: «admin»
    },
    {
    «AuthorityList»: [ «Monitor_01», «Replay_01» ],
    «Memo»: «user group»,
    «Name»: «user»
    }
    ],
    «Users»: [
    {
    «AuthorityList»: [
    «ShutDown»,
    «ChannelTitle»,
    «RecordConfig»,
    «Backup»,
    «StorageManager»,
    «Account»,
    «SysInfo»,
    «QueryLog»,
    «DelLog»,
    «SysUpgrade»,
    «AutoMaintain»,
    «GeneralConfig»,
    «EncodeConfig»,
    «CommConfig»,
    «NetConfig»,
    «AlarmConfig»,
    «VideoConfig»,
    «PtzConfig»,
    «PTZControl»,
    «DefaultConfig»,
    «Talk_01»,
    «Monitor_01»,
    «Replay_01»
    ],
    «Group»: «admin»,
    «Memo»: «admin 's account»,
    «Name»: «admin»,
    «Password»: «QyZfVmgd»,
    «Reserved»: true,
    «Sharable»: true
    },
    {
    «AuthorityList»: [ «Monitor_01», «Replay_01» ],
    «Group»: «user»,
    «Memo»: «guest 's account»,
    «Name»: «guest»,
    «Password»: «tlJwpbo6»,
    «Reserved»: true,
    «Sharable»: true
    },
    {
    «AuthorityList»: [ «Monitor_01» ],
    «Group»: «user»,
    «Memo»: «default account»,
    «Name»: «default»,
    «Password»: «OxhlwSG8»,
    «Reserved»: false,
    «Sharable»: false
    }
    ]
    }
    #


    Распространение


    Сначала рассчитывал по-быстрому нагуглить что-нибудь по версии прошивки и узнал, что такая же прошивка используется в IP-камерах Feng по меньшей мере. Судя по тому, что в прошивке есть куча модулей под разные камеры и поддержка wifi, эта прошивка общая на несколько моделей. Добравшись уже изнутри камеры до конфига, я загуглил хэши дефолтных паролей паролей и нашёл пост на форуме третьего производителя, где какой-то парень шатает такие же или похожие камеры через отверстие в вебинтерфейсе. У меня с относительными путями ничего не получилось, но похоже это просто пофиксили. Ещё бы, ведь пост оставлен на форуме производителя.

    P.S. Этот пост не претендует на статус серьёзного исследования, в нём я просто рассказываю как я решаю практическую для меня задачу. Я посчитал, что пост будет интересен хабрачитателям как посты вроде этого. Расшифрованный пароль доступен по этой ссылке. (Каждый раз смешно как в первый раз. На самом деле перебор действительно не займёт много времени, пароль простой)
    Поделиться публикацией
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама
    Комментарии 29
    • +2
      John The Ripper из пакета в дебиане перебирал DES128 со скоростью всего лишь 1800K c/s, после пересборки его с OpenMP и sse2 стало 6300K c/s. К концу дня john закончил и у меня появился рутовый пароль, который подходит ко всем камерам с такой прошивкой и зашит жёстко в неё.


      Я правильно понимаю, что «John The Ripper» просто перебирает все возможные комбинации символов, постепенно уеличивая длину пароля, и длина используемого пароля оказалась недостаточной? BTW, сколько символов?
      • +2
        Сначала он по словарю подбирал, доходя до достаточно длинных паролей, потом алфавитно-цифровые, начиная с простых и переходя к длинным, затем со спецсимволами начиная с коротких и переходя к длинным. Программа в этом смысле перебирает достаточно разумно. 6 символов.
      • +2
        Хороший ресёч. Хотя раз там телнет — то как альтернативный вариант — могли бы попробовать уломать саппорт подрубиться к камере с их паролем и отсниферить его
        • +3
          парень шатает такие же или похожие камеры через отверстие в вебинтерфейсе.


          Это какой то новый ИТшный сленг, и я что-то пропустил?
          • 0
            Я так понимаю, это означает, что в веб-интерфейсе есть (или была) уязвимость связанная, с возможностью чтения (а, может, и записи) файлов. Есть веб-скрипт, который в параметре получает файл, который он может читать или записывать. Вот если ему передать в параметр относительный путь к интересуемому файлу как-то так:
            ../../../etc/passwd

            то можно на него воздествовать (читать или записывать)
            • 0
              Нет, я то понял. Но вдруг автор имел ввиду что-то другое. Зачем это в технической статье?
              • 0
                Я не стал переписывать пост на форуме, на который дал ссылку в оригинале. Да, там парень использовал относительные пути.
            • +5
              Я твой камера пароль шаталь.
            • +9
              Information Must be Free <— Thomas Jefferson
              Ребячество:
              — Я слетал на Марс.
              — И какого он цвета?
              — А ты слетай и посмотри!

              Меня интересует в данном случае повторяющийся феномен, который произошел и с автором.
              Автор, от кого ты прячешь пароль и зачем — результат своего исследования?
              • +2
                Кому нужно — найдёт, хэш-то в посте правильный — 5 часов и готово, а на видеокарте наверное и того быстрей в разы. А посторонним, нагуглившим это с целью посмотреть в чужие камеры, знать необязательно. Хабраюзерам могу в личку открыто назвать, конечно же.
                • +6
                  5 часов и готово

                  Думаю оставшимся ресурсам планеты найдётся более полезное применение.

                  absxcfbgXtb3o = Unix DES(xc3511)
              • +1
                С технической точки зрения статья хорошая. Но с точки зрения исходной задачи — нет. Не совсем понятно, почему руководство, вместо того, чтобы купить надежные, хорошие, проверенные камеры, инвестирует средства в доработку и допиливание китайских поделок, которые на первый взгляд дешевле, а на самом деле создадут в будущем еще столько проблем, что по факту выйдут существенно дороже.
                • 0
                  Для небольшой организации далеко от Москвы вполне себе решение. Идеальной техники же не бывает. Да и не факт, что дорогие системы видеонаблюдения удобно интегрируются в имеющуюся инфраструктуру.
                  • –1
                    Посмотрел цену на камеру. За эти деньги можно купить боле надежное решение. Кроме того, не очень понял утверждение про «удобно интегрируются». Почти все камеры поддерживают RTSP.

                    А что касается того, что организация небольшая, нужно помнить один важный тезис: «Мы не настолько богаты, чтобы покупать дешевые вещи». В итоге эти самые дешевые вещи становятся дорогими. Вы тратите время, вы тратите деньги. Вы отвлекаетесь от основного бизнеса.
                    • +1
                      Ну тогда не знаю, почему именно эти выбрали.
                      «Мы не настолько богаты, чтобы покупать дешевые вещи»

                      Да понятно, конечно, что во всём баланс должен быть и дешёвка может в эксплуатации обойтись дороже. Но и с другой стороны брэндовое оборудование по любому случаю закупать тоже смысла нет. Хецнер вот покупает домашнее железо под серверы и им нравится. Клиентам тоже до поры.
                      • +2
                        А можно озвучить более надёжное решение за эти деньги, с аналогичными хар-ками. Интересуюсь как у профессионала, ответ можно в личку
                        • +1
                          Не могу назвать себя профессиналом. Я отвечаю в большей степени за софт, чем за железо. Тем не менее по нашему опыту и не только, хорошим решением по соотношению цена — качество является бренд «Microdigital». У нас в магазине представлен не он один, но реально исходя из опыта продаж/эксплуатации мы пока можем выделить его. Да, например, то же Axis качественнее. Но стоимость в 2 — 3 раза выше, чем у Microdigital.

                          Почему MD качественнее? Во-первых, это исключительно Корея, а не Китай. Во-вторых, это хорошая электроника. Они основаны на процессорах от Texas Instruments. И если картинка указывается 1280x720 это честные 1280x720, а не увеличение цифровым способом 640x480 (китайцы так часто делают).

                          Основные функции прошивки очень хорошо тестируются. В том числе и нами, так как мы разрабатываем часть модулей для них. Да, ошибки встречаются, но такая, как описана в посте была бы исправлена разработчиками менее чем за неделю, а владельцу выслали обновление вместе с извинениями и с компенсацией, например, в виде какой-то суммы на счет в нашем сервисе.
                          • 0
                            >такая, как описана в посте была бы исправлена разработчиками менее чем за неделю
                            Это вы про какую ошибку? Захардкоженный пароль? Это не ошибка, это архитектурное решение. И за неделю его не изменишь, от него зависит поддержка.
                            • 0
                              А вы прочитали только заголовок и не дошли даже до 2-го предложения?

                              «Совсем короткий период эксплуатации показал, что камеры имеют свойство зависать и неплохо бы их перезагружать периодически.»
                              • 0
                                Это за неделю исправили?.. Респектно.
                                • 0
                                  Производитель, о котором идет речь в статье, вряд-ли исправил или исправит. Я привел в пример другого производителя, с которым работает наша компания и официальным дилером которого мы являемся. Это Microdigital.

                                  Я описал наш опыт. Ошибки встречаются у всех. И в случае с камерами Microdigital такая критическая ошибка, которая описывается в статье, была бы исправлена менее чем за неделю.
                            • 0
                              Странно что у MD нет купольников с ИК подсветкой. Может Вам в качестве фидбэка интересно будет, мы ставим довольно много камер Hunt (они у вас под маркой Sarmatt) нареканий почти нет из 100 штук одна уличная камера на 30 градусах мороза замерзала и то по тому что не дали её доп питания на подогрев.
                      • +1
                        От камеры по большему счету требуется только отдавать картинку. Остальное — дело софта на сервере.

                        Себе домой брал китайские камеры, т.к. переплачивать в два-три раза больше за то же самое железо, которое продается в Москве серьезными фирмами, считаю нецелесообразным.
                        • +1
                          Я ниже в комментарии написал, что стоимость камеры не такая уж и низкая. Почти 6000 рублей вообще-то. За эти деньги можно купить более проверенный/надежный бренд. Тут вопрос исключительно в анализе рынка и наличии отзывов на производителя перед покупкой. Это как «Жигули» и «BMW». Вроде, и то и другое — автомобиль. И то и другое — ездит. Но разница все-таки есть).
                        • 0
                          Вероятно, им впарили и свалили по-быстрому. А когда не взлетело, позвали автора: «Придумай что-нибудь, не выкидывать же!».
                        • 0
                          ооооо Vesta, искренне вам сочувствую. Мы для одного заказчика делали телефонию и СКС, предлагали сделать видеонаблюдение, но нашу цену перебили и довольно сильно. Я был очень удивлен, считал что это не возможно. На практике мы успели смонтировать СКС (8 км кабеля) телефонию запустить, СКУД и всё сопутствующее, у клиента обьект запустился уже, а видеонаблюдение всё ещё не работало. Сами монтажники ВН матерились и клялись что никогда в жизни больше с Vesta связываться не будут.
                          • 0
                            Извиняюсь за столь поздний ответ. Но вообщем может кому-то пригодится. При -28 камеры начисто замерзают (в спецификации четко указано до -40). Саппорт разводит руками. RTSP поток раз в минуту обрывается, что приводит к появлению надписи нет сигнала. Есть 5 камер iTech, тоже китай, но работают отлично. Качество картинки у весты конечно лучше, но и гемора вагон. По ONVIF Vesta камеры работают еще хуже. Айтеч даже при -50 работали отлично. Веста же похоже все замерзнут. Мерзнет матрица, т.к. по вэбу они отвечают, но не показывают картинку. А перед замерзанием начинаются артефакты изображения либо картинка краснеет.
                            • 0
                              Дополню. RTSP поток прерывается когда стоит максимальное качество, поток с одной камеры выше 2 Мбит и таких штук было 32 камеры. Снизили поток до 1.9 на некоторых камерах и проблема ушла. Зацепили все по ONVIF с новой прошивкой. Думаю проблема не камер, а оборудования видеосети. На мерзлые камеры производитель вроде отреагировали, будем менять. В новых (которые на замену) заметно лучше матрица (старых уже нет, не выпускают). Качество картинки изменилось. Производитель заверил, что все оттестировали в морозильной камере. Вообщем будут результаты по новым отпишусь…
                          • +1
                            26 минут на HP DL580g5 =)

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