Донецкий техникум промышленной автоматики

(Без) розумна розетка. Аналізуємо уразливості розумної розетки TP-Link HS110 Wi-Fi

  1. Зміст статті Бажання керувати всім навколо з телефону цілком зрозуміло для будь-якого, хто хоч якось...
  2. Налаштування пристрою
  3. Досліджуємо прошивку TP-Link HS110
  4. BusyBox
  5. сканування портів
  6. Що відбувається на 9999 / TCP і 1040 / UDP
  7. Досліджуємо TP-Link Smart Home Protocol
  8. Продовження доступно тільки учасникам
  9. Варіант 2. Відкрий один матеріал

Зміст статті

Бажання керувати всім навколо з телефону цілком зрозуміло для будь-якого, хто хоч якось пов'язаний з IT. Саме тому пару років назад в наших будинках стали з'являтися розумні чайники, лампочки та інші «кавоварки на Linux». А це, в свою чергу, означало, що рано чи пізно подібні пристрої потраплять під приціли дослідників ІБ - це лише питання часу. Сьогодні ми розглянемо уразливості в одному з таких пристроїв - розумної Wi-Fi-розетки TP-Link HS110 Wi-Fi.

Про що мова

HS110 Wi-Fi - це Wi-Fi-розетка з моніторингом енергоспоживання від TP-Link. Пристрій підключається до звичайної розетки і після настройки надає:

  • віддалений доступ для управління підключеними пристроями зі смартфона за допомогою мобільного додатку Kasa;
  • подачу і відключення електрики за розкладом для управління підключеними приладами;
  • моніторинг енергоспоживання для перегляду статистики енергоспоживання в реальному часі.

Розумна розетка TP-Link HS110 Wi-Fi

Зрозуміло, HS110 Wi-Fi - це далеко не перший пристрій подібного класу, так що довго зупинятися на його функціональності немає сенсу. Дослідники Любомир Штрётман (Lubomir Stroetmann) і Тобіас Ессер (Tobias Esser) провели аналіз разреверсенной прошивки розетки і її Android-додатки Kasa, мережевого трафіку між додатком і пристроєм, а також фаззінга його пропрієтарного протоколу. На момент написання статті про виправлення помилок нічого відомо не було, а оскільки пристрій досить типове, цей підхід може успішно застосовуватися для дослідження та інших девайсів подібного класу.

Налаштування пристрою

Розумна розетка має тільки дві фізичні кнопки - перемикач «Вкл. / Викл.» І кнопку перезавантаження, яка скидає налаштування пристрою, якщо її тримати натиснутою більше п'яти секунд. Після включення ненастроєного пристрій із заводськими настройками запускає незахищену точку доступу з ім'ям виду TP-LINK_Smart Plug_XXXX, де XXXX - чотири шістнадцятирічних числа. Після швидкого пошуку в WiGLE було знайдено кілька розумних розеток TP-Link з настройками за замовчуванням:

Після швидкого пошуку в   WiGLE   було знайдено кілька розумних розеток TP-Link з настройками за замовчуванням:

Список розумних розеток TP-Link з настройками за замовчуванням з WiGLE

Додаток від TP-Link для управління такими пристроями - Kasa підключає смартфон до створеної точки доступу, відправляючи широкомовні UDP-пакети 255.255.255.255 для пошуку IP-адреси пристрою і подальшої установки імені SSID і пароля, які користувач ввів в додатку. Потім розумна розетка вимикає точку доступу і з'єднується з вказаною Wi-Fi-мережею як клієнт.

Автори провели KARMA-атаку, використовуючи MANA Toolkit від SensePost, примусово деаутентіфіціровав розумну розетку і спробувавши з'єднатися небезпечною підробленої точкою доступу з тим же ім'ям. На жаль, атака не увінчалася успіхом, хоча таким чином можна викликати тимчасову відмову від обслуговування пристрою.

Досліджуємо прошивку TP-Link HS110

Наступним кроком автори скачали офіційну прошивку для пристрою HS110 (US) _V1_151016.zip і нацькували на нього binwalk для аналізу вмісту.

zip і нацькували на нього   binwalk   для аналізу вмісту

Вміст прошивки HS110 (US) _V1_151016.zip

Як бачиш, прошивка містить звичайну Linux-систему, що складається з трьох частин:

  • U-Boot Bootloader 1.1.4 (Oct 16 2015 - 11:22:22);
  • Linux Kernel 2.6.31 - LSDK-9.2.0_U11.14 ([email protected]);
  • Squashfs filesystem.

У файлової системи автори знайшли такі цікаві файли:

  1. / Bin / busybox v1.01 (2015.10.16 - 03: 17 + 0000).
  2. /etc/newroot2048.crt - цей сертифікат використовується для перевірки хмарного сервера. Файл містить кореневий сертифікат VeriSign Class 3 Public Primary Certification Authority - G5 . Це означає, що при встановленні TLS-з'єднання в хмару перевіряється, чи підписаний сервер надав сертифікат за допомогою Symantec VeriSign CA for Extended Validation (EV) certificates (CA pinning). Атакуючий може купити собі власний EV-сертифікат і використовувати його для свого сервера, щоб він «виглядав» як хмара.
  3. / Etc / shadow - після дешифрування виявилося, що пароль media

    root: 7KBNXuMnKTx6g: 15502: 0: 99999: 7 :::

  4. / Usr / bin / shd - основне серверний додаток.
  5. / Usr / bin / shdTester - клієнт для калібрування екрану енергії.
  6. / Usr / bin / calDump - дамп даних калібрування з / dev / caldata.

Вся пропріетарна серверна логіка знаходиться в виконуваному файлі shd (Smart Home Daemon), який є MIPS32 R2 Big Endian:

shd: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, corrupted section header size

Також в ньому міститься OpenSSL 1.0.1j 15 Oct 2014 для установки TLS-з'єднання з хмарним сервером.

BusyBox

Надана версія BusyBox з прошивки схильна до уразливості CVE-2011-2716 , Ін'єкції команд в компоненті udhcpc (DHCP-клієнта). Вона дозволяє впроваджувати команди в одну з наступних DHCP-опцій:

  • (12) Hostname;
  • (15) Domainname;
  • (40) NIS Domain;
  • (66) TFTP Server Name.

Проаналізувавши виконуваний файл, автори знайшли, що shd створює shell-скрипт /tmp/udhcpc.script:

#! / Bin / sh if [$ 1 = renew -o $ 1 = bound] then ifconfig $ interface $ ip netmask $ subnet route del default route add default gw $ router echo "nameserver $ dns"> /tmp/resolv.conf fi

а потім виконується udhcpc:

/ Sbin / udhcpc -b -H "HS100 (US)" -i br0 -s /tmp/udhcpc.script

На жаль, тут hostname захардкожена, а інші опції не використовуються. Так що вразливість не експлуатованих.

сканування портів

Запустивши Nmap після сканування всіх TCP і UDP, отримали наступне:

  • 80 / tcp - HTTP;
  • 9999 / tcp - TP-Link Smart Home Protocol;
  • 1 040 / udp - TP-Link Device Debug Protocol (TDDP).

Веб-сервер на 80-му порту відповідає безглуздими три крапки, незалежно від запиту:

HTTP / 1.1 200 OK Server: TP-LINK Smart Plug Connection: close Content-Length: 5 Content-Type: text / html ...

Усередині shd ця відповідь HTTP-сервера зветься fake_httpd і завжди повертає захардкоженний відповідь.

Що відбувається на 9999 / TCP і 1040 / UDP

TCP-порт 9999 використовується для управління розумної розеткою в локальній мережі за допомогою програми Kasa і описаний в TP-Link Smart Home Protocol , А UDP-порт 1040 - в TP-Link Device Debug Protocol .

Досліджуємо TP-Link Smart Home Protocol

Прослухавши локальний Wi-Fi-трафік, автори побачили, що мобільний додаток спілкується з HS110 через порт 999, використовуючи дані, схожі на зашифровані. Після декомпіляцію Android-додатки вони знайшли функцію шифрування:

Продовження доступно тільки учасникам

Варіант 1. Приєднайся до товариства «Xakep.ru», щоб читати всі матеріали на сайті

Членство в співтоваристві протягом зазначеного терміну відкриє тобі доступ до ВСІХ матеріалами «Хакера», збільшить особисту накопичувальну знижку і дозволить накопичувати професійний рейтинг Xakep Score! Детальніше

Варіант 2. Відкрий один матеріал

Зацікавила стаття, але немає можливості стати членом клубу «Xakep.ru»? Тоді цей варіант для тебе! Зверни увагу: цей спосіб підходить тільки для статей, опублікованих більше двох місяців тому.


Ru»?