8.4 KiB
8.4 KiB
ДЕТАЛЬНЫЙ АНАЛИЗ СИСТЕМЫ VIDEOREADER
Дата анализа: 9 октября 2025 г.
Статус: ✅ ПОЛНЫЙ АНАЛИЗ ЗАВЕРШЕН
🎯 КРАТКОЕ РЕЗЮМЕ
Обнаружена система удаленного видеонаблюдения состоящая из:
- PC-клиент (VideoReader.exe) - приемник видео
- Android-приложение (com.nvav.srv.recorder) - источник видео
- Центральный сигналинг-сервер (vidser.top) - координация подключений
⚠️ КРИТИЧНО: Система использует жестко зашитые серверы третьих лиц!
🌐 ОБНАРУЖЕННЫЕ СЕРВЕРНЫЕ ПОДКЛЮЧЕНИЯ
1. Основной сигналинг сервер
🔗 Домен: vidser.top
📍 IP получение: https://vidser.top/ip/get-ip-kr.php?port={canal}
🔌 Порт данных: 3033 TCP
📊 Фолбек IP: 158.247.241.191
2. Детали подключения
- PC приложение: Получает IP через HTTP запрос к vidser.top
- Android приложение: Аналогично получает IP и подключается
- Канал связи: Номер канала (45-55) для идентификации пары устройств
- Протокол: Зашифрованный TCP с AES шифрованием
🔐 КРИПТОГРАФИЧЕСКАЯ СИСТЕМА
Ключи шифрования (одинаковые в обеих платформах):
// PC (C#)
keyByte = MD5("73!2#qweaSdzxc4r")
ivByte = MD5("0_=op[l:',./vf73")
// Android (Java) - ИДЕНТИЧНО
keyByte = MD5("73!2#qweaSdzxc4r");
ivByte = MD5("0_=op[l:',./vf73");
Алгоритм шифрования:
- Алгоритм: AES-128-CBC
- Padding: PKCS5/PKCS7
- Все данные (кроме служебных) шифруются
📡 ПРОТОКОЛ ВЗАИМОДЕЙСТВИЯ
Структура подключения:
-
Получение IP адреса:
- HTTP GET:
https://vidser.top/ip/get-ip-kr.php?port={channel} - Ответ: 4 байта - IP адрес в бинарном виде
- HTTP GET:
-
TCP подключение к серверу:
- PC: port 3033, первый байт = 0, второй байт = номер канала
- Android: port 3033, первый байт = 1, второй байт = номер канала
Формат пакетов:
[1 байт: длина заголовка] [N байт: размер данных] [Зашифрованные данные] [1 байт: тип]
Типы сообщений:
- Тип 0: Heartbeat/ping сообщения
- Тип 2+: Видеоданные и команды
🏗️ АРХИТЕКТУРА СИСТЕМЫ
┌─────────────────┐ HTTPS ┌─────────────────┐
│ PC Client │◄────────────┤ vidser.top │
│ VideoReader │ Get IP │ Signaling │
└─────────────────┘ │ Server │
│ └─────────────────┘
│ ▲
│ TCP:3033 │ HTTPS
│ Channel:XX │ Get IP
│ Type:0 (receiver) │
▼ │
┌─────────────────┐ ┌─────────────────┐
│ Media Relay │ │ Android Client │
│ Server │◄────────────┤ NVAV Recorder │
│ (Unknown IP) │ TCP:3033 │ │
└─────────────────┘ Channel:XX └─────────────────┘
Type:1 (sender)
📱 ANDROID ПРИЛОЖЕНИЕ - ДЕТАЛИ
Пакет: com.nvav.srv.recorder
Основные классы:
InOut.java- Сетевое взаимодействие (аналог InOutSocket.cs)MActivity.java- Главная активностьChenalC.java- Хранение номера каналаICameraRecord.java- Интерфейс записи камерыCamera*.java- Реализации для разных производителей
Каналы связи:
static int[] chenals = {0, 55, 54, 53, 51, 49, 48, 52, 50, 47, 46, 45};
static final String[] key_ch = {"0000", "1111", "533D", "9A32", "DC8F",
"1095", "4167", "2E43", "701B", "2BA9",
"2BB4", "1F0E"};
Функциональность:
- Запись видео с камеры
- Сжатие и шифрование
- Передача через TCP сокет
- Поддержка различных производителей Android устройств
💻 PC ПРИЛОЖЕНИЕ - ДЕТАЛИ
Основные компоненты:
Form1.cs(3941 строка) - Главная форма с UIInOutSocket.cs- Сетевой клиентDecoder.cs- Декодирование видеоSaveVideo.cs- Сохранение на диск
Возможности:
- Прием зашифрованного видеопотока
- Декодирование через FFmpeg
- Отображение в реальном времени
- Сохранение записей
- Работа с QR-кодами (для настройки?)
⚠️ УЯЗВИМОСТИ И РИСКИ
🔴 Критические риски:
- Зависимость от внешнего сервера (vidser.top)
- Жестко зашитые ключи шифрования
- Отсутствие аутентификации пользователей
- Нет проверки сертификатов SSL
🟡 Потенциальные проблемы:
- Сервер может логировать все соединения
- Отсутствие end-to-end шифрования между устройствами
- Простой канальный алгоритм (подбор каналов)
- Нет защиты от подключения посторонних
🔧 ТЕХНИЧЕСКОЕ ЗАКЛЮЧЕНИЕ
Принцип работы:
- Android устройство запускает приложение-рекордер
- PC приложение запускается для просмотра
- Оба получают IP медиа-сервера через vidser.top
- Устанавливается прямое соединение через промежуточный сервер
- Видеопоток передается в зашифрованном виде
Используемые технологии:
- C# .NET Framework 4.7.2 (PC)
- Java Android SDK (мобильное)
- FFmpeg (кодирование/декодирование)
- AES шифрование
- TCP сокеты
🚀 РЕКОМЕНДАЦИИ ПО УЛУЧШЕНИЮ
Немедленные действия:
- Заменить внешний сигналинг сервер на собственный
- Реализовать динамические ключи шифрования
- Добавить аутентификацию пользователей
- Использовать TLS для всех соединений
Архитектурные улучшения:
- WebRTC вместо прямых TCP соединений
- P2P соединения для снижения нагрузки на сервер
- Микросервисная архитектура
- Kubernetes deployment
📋 ИТОГ: Система функциональна, но требует серьезной доработки для продакшн использования из-за критических зависимостей от внешних сервисов и слабой системы безопасности.