Всем привет!
У нас тут на форуме есть популярная тема:ОБНОВЛЕНИЕ БРУТФОРСЕРА "IPCAMBRUTER v3.4.2.1697" FULL VERSION!
Но было интересно, что в итоге можно сделать с камерой, зачем брутфорсить ?
В этой приватно статье с Хакера, можно почитать:
Я сделаю перепост, надеюсь автор не будет против.)
Картинка с камеры, безусловно, смотрится круто, но какой от этого импакт? Жизнь — это вам не игра Watchdogs 2, где взламывать устройства можно по картинке с камеры. Злоумышленник, наверное, может выследить что‑то важное, наблюдая, как сотрудники ходят по коридорам туда‑сюда, а потом использовать это для социальной инженерии, но все подобные сценарии похожи скорее на буйный полет фантазии.
С точки зрения пентеста куда интереснее получить шелл на захваченной камере. Раз внутри у нее небольшой компьютер, доступ к нему может оказаться небесполезным для атакующего.
Понятно, что первая мысль — пойти в Google и поискать логины и пароли по умолчанию.
Иногда бывает, что знать логин и пароль от камеры не обязательно, чтобы получить с нее изображение. Для этого может быть достаточно подобрать правильную RTSP-ссылку, которая похожа на классическую HTTP-ссылку. Найти ее зачастую можно в документации к камере. Также для этого создан скрипт nmap rtsp-url-brute, но пока что в нем собраны далеко не все варианты ссылок.
Допустим, нам повезло и мы получили доступ в веб‑интерфейс с правами администратора. Самое простое и быстрое, что мы можем сделать, — поискать возможность запустить SSH или Telnet. В примере ниже такая возможность нашлась.
Пробуем активировать SSH. Ставим соответствующую галочку и жмем «Сохранить».
Нам стал доступен порт 22 (TCP). Логично попробовать подключиться к SSH с теми же логином и паролем, что подошли к веб‑интерфейсу. И у нас получается! Хотя, конечно, такое прокатывает не всегда.
Давай посмотрим, что нам удалось получить. Достаточно быстро понимаем, что попали в шелл BusyBox, который сильно ограничивает наши действия. Здесь есть два пути. Первый — каким‑то образом попытаться выйти из BusyBox в нормальный шелл (Bash, Ash или еще какой‑то). Этот способ потенциально может дать больший эффект, но он слишком долгий, чтобы проворачивать его в рамках ограниченного по времени пентеста.
Поэтому есть второй вариант: можем вспомнить про штатную возможность SSH проксировать трафик. В данном случае мы имеем дело с SSH-сервером Dropbear. Он легковесный, и его часто устанавливают на камеры. Казалось бы, для максимальной оптимизации из него должны были убрать возможности проксирования трафика, но производитель их оставил, чем мы сейчас и воспользуемся.
Для проксирования трафика через камеру пробуем подключиться к ней по SSH с помощью следующей команды:
ssh root@IP -D 4444
При выполнении такой команды на нашей системе поднимается порт с поддержкой SOCKS5, который средствами SSH проксирует наше соединение через целевое устройство, в данном случае камеру. Пробуем проверить, что коннект работает штатно.
Несмотря на то что мы не смогли обойти BusyBox, главной цели удалось достичь: проксировать трафик через камеру. На пентестах мне встречались инфраструктуры, в которых при обращении из сети камер не было никаких ограничений на доступ, что очень удобно для хакерских дел.
Тут, правда, начальные условия немного сложнее. Допустим, мы снова встретили знакомый веб‑интерфейс, попробовали пароли по умолчанию и еще несколько популярных паролей. Ничего не подошло, и попасть в админку мы не смогли. В таком случае можно было бы опустить руки и идти дальше. Но нет, мы пойдем в Google и поищем зарегистрированные уязвимости, желательно с готовым эксплоитом.
Мне удалось найти баг CVE-2021-36260. Это лишь пример, с другим оборудованием тебе может попасться любой другой баг. Но мне повезло сразу выйти на
Импакт от эксплуатации — возможность удаленного выполнения кода (RCE). Эксплуатация с готовым эксплоитом обычно происходит в одну команду.
Скрипт успешно отрабатывает, и мы получаем шелл на камере. В данном случае это полноценный Ash. Дальнейшие действия могут развиваться как угодно. Можем, например, залить C2 для закрепа или пивотинга. Ну а самый простой способ я уже описал выше: можно просто проксировать трафик с помощью SSH.
Логинимся в веб‑интерфейс камеры средствами basic-аутентификации: снова подошли дефолтные креды. И сразу ищем, какие есть возможности для запуска SSH или Telnet. Таких возможностей не находим.
Сканируем порты и видим, что нам доступен Telnet.
Недолго думая, пробуем подключиться к нему с логином и паролем от веб‑интерфейса. У нас ничего не выходит. Не сдаемся и идем в Google. Производитель пишет, что Telnet нужен только разработчикам, а обычным пользователям там делать нечего, и никаких паролей в открытом доступе нет. Можно было бы отступить, но пентестер — это не обычный пользователь. Я скачал прошивку с сайта производителя и решил в ней покопаться.
Пробуем открыть прошивку обычным архиватором вроде 7-Zip. И у нас получается! Удивительно, но прошивка никак не защищена, не зашифрована и не использует внутри свою замороченную файловую систему. Все просто и доступно.
Мы получили доступ к файловой системе rootfs. В ней есть директория /etc, а там — файлик passwd. Открываем его и видим хеш от учетки root.
Комментарии излишни!
Естественно, пробуем брутить этот хеш. Прошивка старенькая — 2019 года, вероятность сбрутить такой хеш достаточно большая. Забегая вперед, скажу, что все получится.
Брутим при помощи hashcat:
Мне стало интересно, что за камеру я встретил, и, поискав по паролю, я нашел занятную
Попробуем подключиться к Telnet с помощью пароля, который только что сбрутили.
Мы смогли подключиться к камере и получить полноценный шелл. Но Telnet, может быть, и хорош, но он «из коробки» не дает возможности проксировать трафик, как это делает SSH. Поэтому нам понадобится какое‑то дополнительное средство, например SOCKS-прокси или C2.
Попробуем самый простой и распространенный вариант C2 — Metasploit с нагрузкой Meterpreter. Антивирусов на камерах я пока ни разу не встречал, поэтому можно не стесняться.
Генерируем нагрузку:
Теперь у нас есть бинарь, и встает вопрос о том, как его залить на камеру. Netcat отсутствует, curl нет, да и вообще почти ничего нет. Остается пересылать побайтово, например с помощью printf. Сгенерировать нагрузку можно примерно так:
Здесь стоит сказать большое спасибо моему коллеге
После того как скрипт отработал, копируем его вывод и вставляем на камере. В результате у нас получится готовый к использованию исполняемый файл.
Залитому файлу не забываем дать права на исполнение и пробуем запустить. Действительно — все сработало. Своей цели мы достигли: снова получили RCE на камере. А как сделать прокси, ты уже знаешь.
Итак, мы получили сетевой доступ к веб‑интерфейсу камеры. По традиции не забываем сходить в Google и поискать креды по умолчанию.
Креды нашли и заходим в админку. Но возможности включить Telnet или SSH там нет. Зато мы обращаем внимание на вкладку, в которой нам предлагают обновить прошивку из файла.
Создавать прошивку с нуля — это долгое и сложное занятие. Поэтому мы можем попробовать взять прошивку от производителя и немного замоддить. Идем на сайт производителя и находим там подходящий файлик. Качаем и снова без труда открываем обычным архиватором.
Обнаруживаем интересный скрипт run.sh. Само название нам намекает на то, что он выполнится при загрузке камеры. В скрипте есть строчка telnetd &, но она закомментирована. Предполагаем, что если ее раскомментировать, то при старте камеры включится Telnet. Давай попробуем!
Также в прошивке есть файловая система rootfs. В ней — директория /etc, а там, как водится, файл passwd, в котором снова лежит хеш от учетки root. Но на этот раз смысла что‑то брутить нет. Мы просто сгенерим такой же хеш, но от пароля, который мы знаем. Затем заменим хеш и сохраним файл.
Генерируем хеш:
openssl passwd -1 password
После этих манипуляций мы почти готовы перезаливать прошивку. Неужели все так просто? Да, почти. Стоит лишь учесть тип файловой системы, используемый в прошивке. В нашем случае это cramfs. Распаковать ее действительно можно обычным архиватором, но вот запаковать уже так просто не получится. Для этого нам надо установить
mkcramfs romfs romfs-x.cramfs
Если ты зальешь неправильную прошивку, камера, скорее всего, превратится в «кирпич» и в реальном пентесте ты больше не сможешь получить к ней доступ.
Вот теперь мы уже точно готовы к прошивке камеры.
Жмем кнопку «Прошивка», и камера перестает отвечать на пинги и вообще не подает никаких признаков жизни.
Но спустя минуту она снова появляется, и мы можем наконец выдохнуть. Смотрим, поднялся ли наш Telnet. Да, он работает, и мы можем подключиться к нему с паролем, который внесли в /etc/passwd.
На этот раз нам доступен Netcat.
С помощью Netcat мы легко перенесем любую нагрузку и сможем запустить ее. Например, Meterpreter, который мы сгенерировали ранее.
После того как у нас снова залит и запущен C2-агент на камере, можно запускать прокси. На этот раз всего в несколько команд:
После этого мы получим полноценное проксирование через камеру, а также удобный контроль над ней в виде C2-агента.
Итак, мы захватили уже четыре камеры и можем подвести промежуточный итог. Мы увидели, как быстро и просто можно использовать камеру в пентестерском ремесле, получать на ней RCE и выполнять пивотинг. Такие кейсы вполне можно реализовать на реальном проекте за небольшое время. Потенциально они могут послужить точкой закрепления либо точкой проксирования трафика.
Кстати, искать камеры достаточно просто — по сочетанию открытых TCP-портов 80 и 554.
В продолжение этой темы могу порекомендовать ознакомиться с
У нас тут на форуме есть популярная тема:ОБНОВЛЕНИЕ БРУТФОРСЕРА "IPCAMBRUTER v3.4.2.1697" FULL VERSION!
Но было интересно, что в итоге можно сделать с камерой, зачем брутфорсить ?
В этой приватно статье с Хакера, можно почитать:
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
Я сделаю перепост, надеюсь автор не будет против.)
Картинка с камеры, безусловно, смотрится круто, но какой от этого импакт? Жизнь — это вам не игра Watchdogs 2, где взламывать устройства можно по картинке с камеры. Злоумышленник, наверное, может выследить что‑то важное, наблюдая, как сотрудники ходят по коридорам туда‑сюда, а потом использовать это для социальной инженерии, но все подобные сценарии похожи скорее на буйный полет фантазии.
С точки зрения пентеста куда интереснее получить шелл на захваченной камере. Раз внутри у нее небольшой компьютер, доступ к нему может оказаться небесполезным для атакующего.
КЕЙС 1: ПАРОЛЬ ПО УМОЛЧАНИЮ
Думаю, ты не раз видел подобное окно логина в веб‑интерфейс камеры.Понятно, что первая мысль — пойти в Google и поискать логины и пароли по умолчанию.
Иногда бывает, что знать логин и пароль от камеры не обязательно, чтобы получить с нее изображение. Для этого может быть достаточно подобрать правильную RTSP-ссылку, которая похожа на классическую HTTP-ссылку. Найти ее зачастую можно в документации к камере. Также для этого создан скрипт nmap rtsp-url-brute, но пока что в нем собраны далеко не все варианты ссылок.
Допустим, нам повезло и мы получили доступ в веб‑интерфейс с правами администратора. Самое простое и быстрое, что мы можем сделать, — поискать возможность запустить SSH или Telnet. В примере ниже такая возможность нашлась.
Пробуем активировать SSH. Ставим соответствующую галочку и жмем «Сохранить».
Нам стал доступен порт 22 (TCP). Логично попробовать подключиться к SSH с теми же логином и паролем, что подошли к веб‑интерфейсу. И у нас получается! Хотя, конечно, такое прокатывает не всегда.
Давай посмотрим, что нам удалось получить. Достаточно быстро понимаем, что попали в шелл BusyBox, который сильно ограничивает наши действия. Здесь есть два пути. Первый — каким‑то образом попытаться выйти из BusyBox в нормальный шелл (Bash, Ash или еще какой‑то). Этот способ потенциально может дать больший эффект, но он слишком долгий, чтобы проворачивать его в рамках ограниченного по времени пентеста.
Поэтому есть второй вариант: можем вспомнить про штатную возможность SSH проксировать трафик. В данном случае мы имеем дело с SSH-сервером Dropbear. Он легковесный, и его часто устанавливают на камеры. Казалось бы, для максимальной оптимизации из него должны были убрать возможности проксирования трафика, но производитель их оставил, чем мы сейчас и воспользуемся.
Для проксирования трафика через камеру пробуем подключиться к ней по SSH с помощью следующей команды:
ssh root@IP -D 4444
При выполнении такой команды на нашей системе поднимается порт с поддержкой SOCKS5, который средствами SSH проксирует наше соединение через целевое устройство, в данном случае камеру. Пробуем проверить, что коннект работает штатно.
Несмотря на то что мы не смогли обойти BusyBox, главной цели удалось достичь: проксировать трафик через камеру. На пентестах мне встречались инфраструктуры, в которых при обращении из сети камер не было никаких ограничений на доступ, что очень удобно для хакерских дел.
КЕЙС 2: УЯЗВИМОСТЬ В ПРОШИВКЕ
В этом кейсе обсудим, как получить RCE и запивотиться на камере, когда изначально никакого доступа не удалось получить вообще.Тут, правда, начальные условия немного сложнее. Допустим, мы снова встретили знакомый веб‑интерфейс, попробовали пароли по умолчанию и еще несколько популярных паролей. Ничего не подошло, и попасть в админку мы не смогли. В таком случае можно было бы опустить руки и идти дальше. Но нет, мы пойдем в Google и поищем зарегистрированные уязвимости, желательно с готовым эксплоитом.
Мне удалось найти баг CVE-2021-36260. Это лишь пример, с другим оборудованием тебе может попасться любой другой баг. Но мне повезло сразу выйти на
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
.Импакт от эксплуатации — возможность удаленного выполнения кода (RCE). Эксплуатация с готовым эксплоитом обычно происходит в одну команду.
Скрипт успешно отрабатывает, и мы получаем шелл на камере. В данном случае это полноценный Ash. Дальнейшие действия могут развиваться как угодно. Можем, например, залить C2 для закрепа или пивотинга. Ну а самый простой способ я уже описал выше: можно просто проксировать трафик с помощью SSH.
КЕЙС 3: ХАРДКОД В ПРОШИВКЕ
В этот раз ситуация будет поинтереснее. Проксировать трафик нам поможет функция самой прошивки.Логинимся в веб‑интерфейс камеры средствами basic-аутентификации: снова подошли дефолтные креды. И сразу ищем, какие есть возможности для запуска SSH или Telnet. Таких возможностей не находим.
Сканируем порты и видим, что нам доступен Telnet.
Недолго думая, пробуем подключиться к нему с логином и паролем от веб‑интерфейса. У нас ничего не выходит. Не сдаемся и идем в Google. Производитель пишет, что Telnet нужен только разработчикам, а обычным пользователям там делать нечего, и никаких паролей в открытом доступе нет. Можно было бы отступить, но пентестер — это не обычный пользователь. Я скачал прошивку с сайта производителя и решил в ней покопаться.
Пробуем открыть прошивку обычным архиватором вроде 7-Zip. И у нас получается! Удивительно, но прошивка никак не защищена, не зашифрована и не использует внутри свою замороченную файловую систему. Все просто и доступно.
Мы получили доступ к файловой системе rootfs. В ней есть директория /etc, а там — файлик passwd. Открываем его и видим хеш от учетки root.
Комментарии излишни!
Естественно, пробуем брутить этот хеш. Прошивка старенькая — 2019 года, вероятность сбрутить такой хеш достаточно большая. Забегая вперед, скажу, что все получится.
Брутим при помощи hashcat:
Код:
hashcat -a 0 -m 500 '$1$ct81jPGd$V4mhTmjAOkTwNhnFsIrmt1' /usr/share/wordlists/rockyou.txt
Мне стало интересно, что за камеру я встретил, и, поискав по паролю, я нашел занятную
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
. Как оказалось, это камеры китайского завода Brovotech, где закупаются многие производители. Если при пентесте встретишь noname-камеру, возможно, тебе подойдет тот же пароль.Попробуем подключиться к Telnet с помощью пароля, который только что сбрутили.
Мы смогли подключиться к камере и получить полноценный шелл. Но Telnet, может быть, и хорош, но он «из коробки» не дает возможности проксировать трафик, как это делает SSH. Поэтому нам понадобится какое‑то дополнительное средство, например SOCKS-прокси или C2.
Попробуем самый простой и распространенный вариант C2 — Metasploit с нагрузкой Meterpreter. Антивирусов на камерах я пока ни разу не встречал, поэтому можно не стесняться.
Генерируем нагрузку:
Код:
msfvenom -p linux/armle/meterpreter/bind_tcp -f elf -o bind
Теперь у нас есть бинарь, и встает вопрос о том, как его залить на камеру. Netcat отсутствует, curl нет, да и вообще почти ничего нет. Остается пересылать побайтово, например с помощью printf. Сгенерировать нагрузку можно примерно так:
Код:
cat bind | od -An -t o1 -v | tr ' ' '/' | while read line
do echo "printf '$line' >> out.bin" | tr '/' '\'
done
Здесь стоит сказать большое спасибо моему коллеге
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
за то, что помог все это автоматизировать.После того как скрипт отработал, копируем его вывод и вставляем на камере. В результате у нас получится готовый к использованию исполняемый файл.
Залитому файлу не забываем дать права на исполнение и пробуем запустить. Действительно — все сработало. Своей цели мы достигли: снова получили RCE на камере. А как сделать прокси, ты уже знаешь.
КЕЙС 4: МОДИФИКАЦИЯ ПРОШИВКИ
И один из самых интересных кейсов — модификация прошивки. У нас есть доступ к веб‑интерфейсу камеры, но нет возможности включить SSH или Telnet. Но мы можем обновить на камере прошивку, это и попробуем сделать.Итак, мы получили сетевой доступ к веб‑интерфейсу камеры. По традиции не забываем сходить в Google и поискать креды по умолчанию.
Креды нашли и заходим в админку. Но возможности включить Telnet или SSH там нет. Зато мы обращаем внимание на вкладку, в которой нам предлагают обновить прошивку из файла.
Создавать прошивку с нуля — это долгое и сложное занятие. Поэтому мы можем попробовать взять прошивку от производителя и немного замоддить. Идем на сайт производителя и находим там подходящий файлик. Качаем и снова без труда открываем обычным архиватором.
Обнаруживаем интересный скрипт run.sh. Само название нам намекает на то, что он выполнится при загрузке камеры. В скрипте есть строчка telnetd &, но она закомментирована. Предполагаем, что если ее раскомментировать, то при старте камеры включится Telnet. Давай попробуем!
Также в прошивке есть файловая система rootfs. В ней — директория /etc, а там, как водится, файл passwd, в котором снова лежит хеш от учетки root. Но на этот раз смысла что‑то брутить нет. Мы просто сгенерим такой же хеш, но от пароля, который мы знаем. Затем заменим хеш и сохраним файл.
Генерируем хеш:
openssl passwd -1 password
После этих манипуляций мы почти готовы перезаливать прошивку. Неужели все так просто? Да, почти. Стоит лишь учесть тип файловой системы, используемый в прошивке. В нашем случае это cramfs. Распаковать ее действительно можно обычным архиватором, но вот запаковать уже так просто не получится. Для этого нам надо установить
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
и выполнить такую команду:mkcramfs romfs romfs-x.cramfs
Если ты зальешь неправильную прошивку, камера, скорее всего, превратится в «кирпич» и в реальном пентесте ты больше не сможешь получить к ней доступ.
Вот теперь мы уже точно готовы к прошивке камеры.
Жмем кнопку «Прошивка», и камера перестает отвечать на пинги и вообще не подает никаких признаков жизни.
Но спустя минуту она снова появляется, и мы можем наконец выдохнуть. Смотрим, поднялся ли наш Telnet. Да, он работает, и мы можем подключиться к нему с паролем, который внесли в /etc/passwd.
На этот раз нам доступен Netcat.
С помощью Netcat мы легко перенесем любую нагрузку и сможем запустить ее. Например, Meterpreter, который мы сгенерировали ранее.
После того как у нас снова залит и запущен C2-агент на камере, можно запускать прокси. На этот раз всего в несколько команд:
Код:
run autoroute -s 10.0.0.0/8
background
use auxiliary/server/socks_proxy
run
После этого мы получим полноценное проксирование через камеру, а также удобный контроль над ней в виде C2-агента.
Итак, мы захватили уже четыре камеры и можем подвести промежуточный итог. Мы увидели, как быстро и просто можно использовать камеру в пентестерском ремесле, получать на ней RCE и выполнять пивотинг. Такие кейсы вполне можно реализовать на реальном проекте за небольшое время. Потенциально они могут послужить точкой закрепления либо точкой проксирования трафика.
Кстати, искать камеры достаточно просто — по сочетанию открытых TCP-портов 80 и 554.
В продолжение этой темы могу порекомендовать ознакомиться с
Вы должны зарегистрироваться, чтобы увидеть внешние ссылки
про камеры. Доклад настолько жесткий, что начинается со слов «выпаяем память, чтобы получить прошивку».ДЛЯ ЗАЩИТНИКОВ
Наверное, ты уже заметил, что все кейсы начинались с того, что на камере установлен пароль по умолчанию. А кейсы с прошивками были связаны с захардкоженными паролями. Исходя из этого, для защиты камер рекомендую:- меняй дефолтные пароли, это прикроет почти все возможные векторы эксплуатации;
- обновляй софт, производители зачастую выпускают обновления безопасности;
- обновляй железо, иногда так бывает, что устройство перестает поддерживаться, в таком случае стоит заменять его более актуальным;
- рекомендуй начальству проводить пентесты, чтобы обнаруживать подобные недостатки в своих инфраструктурах и вовремя принимать меры;
- изолируй сегмент камер от основной инфраструктуры.