Если ты думаешь, что контроллеры, которые ставят в зданиях и на заводах, защищены намного лучше, чем домашние гаджеты, то эта статья тебя разубедит. Я возьму девайс под названием Linx-150 и на его примере покажу, как работать с ПЛК на Linux. По этой схеме ты сможешь повторить исследование с любым другим устройством.

Пару лет назад я написал две статьи — одну о системах управления зданиями (BMS), вторую — о том, как их можно поломать со стороны конечных устройств. Но время идет, интеграция проникает все глубже, и тот же KNX уже отвечает не только за field level, его спокойно можно встретить и на automation level.

В интернете попадаются интересные статьи о том, как реверсить IoT-устройство или IP-камеру. На мой взгляд, у индустриального железа (правильный термин АСУ ТП, на английском ICS) отличий от них нет. За исключением разве что цены и возможного импакта атаки. Одно дело — устроить внезапную светомузыку у кого-то дома, другое — в терминале аэропорта.

WARNING

Вся информация предоставлена исключительно в ознакомительных целях. Ни редакция, ни автор не несут ответственности за любой возможный вред, причиненный информацией из этой статьи.

Итак, перед нами Loytec Linx-150. Спасибо Дмитрию Викторову из «Сенсорматики», который предоставил нам экземпляр для изучения.


С чего начинать работу с таким устройством? Как бы банально это ни звучало, но первым делом идем на официальный сайт и читаем подробности. Здесь меня ждал небольшой сюрприз: просто так эту железку не найти, поскольку она как бы старая и уже снята с производства. Почему «как бы»? Сейчас расскажу.

Углубившись в сайт, я нашел вот такую страничку. Здесь есть разные руководства и даташиты, но главное не это.


Файлик со словом firmware в названии сразу же привлек мое внимание. Внутри нашелся целый набор прошивок для разных устройств.


Надо отдать должное вендору: хоть Linx-150 устаревший и снят с производства, но новые прошивки все равно есть. Когда устройство попало ко мне в руки, актуальной прошивкой была 6.4.6, а на момент написания статьи — уже 6.4.10, датированная 24 мая 2019 года. То есть девайс, может быть, и не продается, но активно поддерживается. А это, скорее всего, означает, что он распространенный.

Чтобы проверить эту теорию, заглянем в Shodan, Zoomeye и Censys и посмотрим, как много Linx-150 и других железок Loytec доступно из интернета. А то, может, ты скажешь: «Ну крут, ломанул железку, а она нигде не используется, кроме как у кого-то дома!»

Чтобы не быть голословным, вот несколько скриншотов, по которым понятно, что устройств Loytec в мире предостаточно.




Пока я делал скриншоты, «случайно» нашел очередную железку, к которой подходят дефолтные креды.


Тем временем скачался архив с прошивками. Находим нужную — linx_at91_6_4_10_20190524_0940.dl.

Первая мысль: это что еще за .dl и что с ним делать? Но старый добрый binwalk подскажет, что внутри. Заодно, чтобы распаковать содержимое, используем ключ -e.

$ binwalk -e linx_at91_6_4_6_20190213_1030.dl

После распаковки выясняется, что загадочный .dl это архив с пакетами .deb.


Поскольку изначально я разбирал 6.4.6, а когда начал писать эту статью, уже вышла 6.4.10, поступлю просто и буду разбирать фичи баги, которые встречаются и там и там. Тем более что мои сомнения, не станет ли вдруг в 6.4.10 все хорошо, оправдались.

В целом различий между 6.4.6 и 6.4.10 не наблюдается, кроме ключевого файла linx-at91-primary_6.4.10_arm.opk.

Содержимое прошивок 6.4.6 и 6.4.10
Содержимое прошивок 6.4.6 и 6.4.10

Надеюсь, у тебя в закладках браузера давно поселились Vulners и CVE Detail (если нет, срочно исправляй!). Они позволят нам понять, насколько все печально в исследуемых прошивках. Как видишь, очень много старых версий пакетов.


И это лишь некоторая часть из них. С одной стороны, на этом исследование можно было бы и закончить, но если уж копать, то надо идти глубже.

Как понять, какие бинарники заслуживают внимания в первую очередь? Я, конечно, мог бы напустить тумана и сказать, что для этого нужны годы опыта, особое чутье и ежедневные духовные практики. Но подсказка лежит на виду: у нас есть две версии прошивок (6.4.6 и 6.4.10) и отличается в них один файл linx-at91-primary_xxx. Про еще одну подсказку поговорим, когда будем смотреть веб-интерфейс и заходить по SSH.

Применяем binwalk к этим файлам и смотрим, что получилось.

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

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score! Подробнее

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

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


Check Also

В королевстве PWN. ROP-цепочки и атака Return-to-PLT в CTF Bitterman

В этой статье мы рассмотрим особенности переполнения стека в 64-битном Linux. Сделаем мы э…

4 комментария

  1. Аватар

    Imphotep

    23.07.2019 at 15:33

    В ссылке на сервис Shodan нужно удалить ] в конце, иначе ссылка неактивна.

  2. Аватар

    robotobor

    24.07.2019 at 09:48

    Спасибо. Жесть. Не буду брать 🙂

  3. Аватар

    soko1

    26.07.2019 at 00:27

    >И напоследок пара слов про реверс linx_at91_primary. Когда мы при помощи grep искали строки и смотрели, где может встретиться loytec4u, нам попался этот ELF. И неспроста! По каким-то невиданным причинам вендор решил захардкодить дефолтные креды прямо в бинарном файле.

    А дефолтные креды чего именно? Поясни плз чем знание этого admin/loytec4u может помочь.

    Вообще конечно дичь — и брутфорсить можно и пароль выставлять в один символ и приватные ключи зачем-то вшиты и не закриптованы, черти что)

    Кстати, вот интересно, если выложить на гитхаб этот приватный ключик — насколько быстро они его оттуда уберут? (с прошивки и гитхаба:))

  4. Аватар

    soko1

    26.07.2019 at 00:29

    ][, сделайте плз норм комментарии, чтобы можно было хотя бы цитировать сообщения. А то херится все форматирование и все в кучу сливает, неудобно общаться)

Оставить мнение